Timefold

Latest version: v1.20.1b0

Safety actively analyzes 723177 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 4 of 5

1.6.0

New year, new release, new goodness!

**Featured Update - [Pinning on list variables](https://timefold.ai/docs/timefold-solver/latest/responding-to-change/responding-to-change#partiallyPinnedPlanningListVariable)**, enhancing our support for [real-time planning](https://timefold.ai/docs/timefold-solver/latest/responding-to-change/responding-to-change#realTimePlanning):

- With a new `PlanningPinToIndex` annotation, you can tell the solver that a certain portion of the list variable is pinned and shouldn't be moved.
- For example, for a list of customers that a vehicle will visit, this allows you to model situations where certain visits have either already happened, or where the vehicle is already too far into the trip that it would not be practical for it to turn back.
- Previously, pinning was only available for the [chained variable](https://timefold.ai/docs/timefold-solver/latest/using-timefold-solver/modeling-planning-problems#chainedPlanningVariable). With this, we are ramping up our efforts to bring list variable, which is easier to both understand and implement, on par with the chain variable in terms of features. Stay tuned for more on this front!

Other Enhancements:

- Solver termination can now be overridden without creating a new instance of `Solver` or `SolverManager`, look for the `SolverConfigOverride` class.
- The usual assortment of bugfixes and performance improvements.
- Improvements all over the [documentation](https://timefold.ai/docs/timefold-solver/latest/quickstart/overview/overview-quickstarts) and [quickstarts](https://github.com/TimefoldAI/timefold-quickstarts/).
- Dependency upgrades.

Changelog

🚀 Features
- 3cb5490 Pinning support for list variable (491), closes 491
- d9b99b1 Syntactic sugar for ScoreAnalysis (546), closes 546
- a481fe1 Overriding Solver termination configuration (542), closes 515 542
- d2e52cd PlannerBenchmarkFactory.createFromSolverConfig() (479), closes 479

🐛 Fixes
- 67d4448 Avoid exception when analysing uninitialized solution (536), closes 536
- a5c3960 Fail fast when DeepPlanningClone on a record
- 69e3e55 Make MatchAnalysis implement Comparable to fix score corruption analysis (527), closes 527
- 2b35c89 Updating the School Timetabling quickstarts documentation (494), closes 98 494
- 10ba396 Non-existent methods referenced for score explanation
- a8e7a8a Filter trivial 2-opt moves and make KOptListMove public (485), closes 480 485
- 0357f3e Do not set shadow variables to null when calculating from scratch in TRACED_FULL_ASSERT (484), closes 478 484

🔄️ Changes
- 92ff8fa Reduce allocations in CS

📝 Documentation
- d4a5e1c Add Quickstart code examples for Kotlin (541), closes 541
- 490490a Rename variable names for collection types (499), closes 499
- aaa0ebc Use tabs where possible to have better distinction between Maven and Gradle
- 85dd7d9 Maintenance scheduling class diagram rename tagSet to reality
- c8c28a0 Add chapter on CS performance

Contributors
We'd like to thank the following people for their contributions:
- Christopher Chianelli
- Frederico Gonçalves ([zepfred](https://github.com/zepfred))
- Geoffrey De Smet
- GitHub
- Lukáš Petrovický ([triceo](https://github.com/triceo))
- M.Thimm
- Peter Laggner
- Pieter De Schepper
- Radovan Synek
- dependabot[bot] ([dependabot[bot]](https://github.com/apps/dependabot))


_Timefold Solver Community Edition_ is an open source project, and you are more than welcome to contribute as well!
For more, see [Contributing](https://github.com/TimefoldAI/timefold-solver/blob/main/CONTRIBUTING.adoc).

Should your business need to scale to truly massive data sets or require enterprise-grade support,
check out [_Timefold Solver Enterprise Edition_](https://github.com/TimefoldAI/timefold-solver-enterprise/releases).

How to use Timefold Solver

To see Timefold Solver in action, check out [the quickstarts](https://github.com/TimefoldAI/timefold-quickstarts).

[//]: (Ideally we'd show the pom.xml snippet, but a JReleaser bug would remove all whitespace from it.)
[//]: (See https://github.com/jreleaser/jreleaser/issues/1142)
With Maven or Gradle, add the `ai.timefold.solver : timefold-solver-core : 1.6.0` dependency in your `pom.xml` to get started.

You can also import the Timefold Solver Bom (`ai.timefold.solver : timefold-solver-bom : 1.6.0`)
to avoid duplicating version numbers when adding other Timefold Solver dependencies later on.

Additional notes

The changelog and the list of contributors above are automatically generated.
It excludes contributions to certain areas of the repository, such as CI and build automation.
This is done for the sake of brevity and to make the user-facing changes stand out more.

1.5.0

For our final release of 2023, we’ve prepared some exciting things!

_Featured Update_ - [Recommended Fit API](https://timefold.ai/docs/timefold-solver/latest/responding-to-change/responding-to-change#recommendedFitAPI), a **game-changer for appointment scheduling**.
- **Use case**: Imagine you are an operator on a phone line, or an AI chatbot. A customer asks you for an appointment with a sales representative. Where do you put that appointment in their busy calendar?
- **Timefold Solver now provides superfast sub-second response times**, while still taking all your constraints into account!
- **Result**: Operators can receive a list of appointment choices, ranked from best fit to worst, for informed decision-making. Ensuring they can make an informed choice that has the least potential to disrupt the schedule as a whole.

**Other Enhancements**:
- Constraint Streams now simplify solving [constraints with sequences of indefinite length](https://timefold.ai/docs/timefold-solver/latest/constraints-and-score/score-calculation#collectorsConsecutive).
- Debugging score corruptions is now easier.
- Various other improvements and bug fixes to enhance overall user experience.

Changelog

🚀 Features
- ab44aa6 Introduce the Recommended Fit API, closes 432
- dccbda3 Promote consecutive sequence collector to public API, closes 426
- 4415f4d Add constraint weight to ScoreAnalysis, closes 416
- 86d58e6 Report missing before/after calls on undo corruption, closes 433
- 926bb11 Report shadow variables that differ after recalculating from scratch when undo corruption occurs, closes 430
- 176188b Identify Solver version and edition in Benchmarker, Spring and Quarkus, closes 411

🐛 Fixes
- d8cf97c Shadow entities should be annotated with PlanningEntityCollectionProperty, closes 445
- ae617f4 Example app logo transparency
- 6f0603f Support repeatable annotations like ShadowVariable in Quarkus

🧰 Tasks
- 139da4d Replace ready/due time by min/max start/end time, closes 436 438

📝 Documentation
- 6de79ff Move development section from user guide to Github CONTRIBUTING
- 663f22d Restructure chapters on using and configuring solver

Contributors
We'd like to thank the following people for their contributions:
- Christopher Chianelli
- Geoffrey De Smet
- Lukáš Petrovický ([triceo](https://github.com/triceo))
- Pieter De Schepper
- Radovan Synek
- dependabot[bot] ([dependabot[bot]](https://github.com/apps/dependabot))


_Timefold Solver Community Edition_ is an open source project, and you are more than welcome to contribute as well!
For more, see [Contributing](https://github.com/TimefoldAI/timefold-solver/blob/main/CONTRIBUTING.adoc).

Should your business need to scale to truly massive data sets or require enterprise-grade support, check out [_Timefold Solver Enterprise Edition_](https://github.com/TimefoldAI/timefold-solver-enterprise/releases).

How to use Timefold Solver

To see Timefold Solver in action, check out [the quickstarts](https://github.com/TimefoldAI/timefold-quickstarts).

[//]: (Ideally we'd show the pom.xml snippet, but a JReleaser bug would remove all whitespace from it.)
[//]: (See https://github.com/jreleaser/jreleaser/issues/1142)
With Maven or Gradle, just add the `ai.timefold.solver : timefold-solver-core : 1.5.0` dependency in your `pom.xml` to get started.

You can also import the Timefold Solver Bom (`ai.timefold.solver : timefold-solver-bom : 1.5.0`) to avoid duplicating version numbers when adding other Timefold Solver dependencies later on.

Additional notes

The changelog and the list of contributors above are automatically generated. They exclude contributions to certain areas of the repository, such as CI and build automation. This is done for the sake of brevity and to make the user-facing changes stand out more.

1.4.0

It's time for another monthly release of _Timefold Solver Community Edition_!

**Featured Update - JSON-friendly score explanations:**

- Even wondered what does a score of `-3hard/-5soft` actually mean? Wonder no more!
- Timefold Solver can now break down the score all the way to individual constraint matches.
- It can also compute differences between any two solutions.
- And finally, it can easily send them over the wire from the backend to the frontend.

Furthermore you can now generate a [Spring Boot](https://github.com/spring-projects/spring-boot) app and include the Timefold Solver dependency without it failing if there's no `PlanningSolution` or `PlanningEntity` classes.

On top of that, we have the usual assortment of performance improvements, bug fixes and dependency upgrades.

Changelog

🚀 Features
- c623933 JSON-friendly score analysis (336), closes 336

🐛 Fixes
- 479843b Do not fail-fast in spring boot extension if there no PlanningSolution or PlanningEntity classes (397), closes 388 397
- 4b04bb5 depend on spring-boot-starter in the starter module
- 07954c6 invalidate computed variables in Project Job Scheduling correctly (371), closes 371
- e54309d Enable constraint matching when metrics dictate

🔄️ Changes
- bedeb54 replace stream with a loop on the hot path
- 4e63393 Implement node sharing for groupBy (401), closes 401
- 7ecaebf Implement node sharing for expand, map and flattenLast (376), closes 376
- 823dde1 Implement node sharing for ifExists and ifNotExists (375), closes 375
- 45f0346 Use lambda constants in CS to allow for more node sharing (374), closes 374

🧰 Tasks
- 1dd4dcd Move implementations of Collectors outside of ConstraintCollectors (392), closes 392
- 29247f9 rationalize Spring dependencies
- 2855c34 don't use Javadoc tags in Spring Boot properties, closes 387
- 21ee1b3 remove trailing newlines from exception messages

📝 Documentation
- 2f5c7e6 move information about Enterprise Edition to a new section (404), closes 404


Contributors
We'd like to thank the following people for their contributions:
- Christopher Chianelli
- Jente De Meyer ([Jdmbs](https://github.com/Jdmbs))
- Lukáš Petrovický ([triceo](https://github.com/triceo))
- Radovan Synek
- dependabot[bot] ([dependabot[bot]](https://github.com/apps/dependabot))


_Timefold Solver Community Edition_ is an open source project, and you are more than welcome to contribute as well! For more, see [Contributing](https://github.com/TimefoldAI/timefold-solver/blob/main/CONTRIBUTING.adoc).

Should your business need to scale to truly massive data sets or require enterprise-grade support, check out [_Timefold Solver Enterprise Edition_](https://github.com/TimefoldAI/timefold-solver-enterprise/releases).

How to use Timefold Solver

To see Timefold Solver in action, check out [the quickstarts](https://github.com/TimefoldAI/timefold-quickstarts).

[//]: (Ideally we'd show the pom.xml snippet, but a JReleaser bug would remove all whitespace from it.)
[//]: (See https://github.com/jreleaser/jreleaser/issues/1142)
With Maven or Gradle, just add the `ai.timefold.solver : timefold-solver-core : 1.4.0` dependency in your `pom.xml` to get started.

You can also import the Timefold Solver Bom (`ai.timefold.solver : timefold-solver-bom : 1.4.0`) to avoid duplicating version numbers when adding other Timefold Solver dependencies later on.

Additional notes

The changelog and the list of contributors above are automatically generated. They exclude contributions to certain areas of the repository, such as CI and build automation. This is done for the sake of brevity and to make the user-facing changes stand out more.

1.3.0

Another release, another better version of _Timefold Solver Community Edition_!

**Featured Update - [Constraint Stream Concatenation](https://timefold.ai/docs/timefold-solver/latest/constraints-and-score/constraints-and-score#constraintStreamsConcat):**

- Merge away! Combine multiple streams seamlessly.
- Implement intricate constraints with ease.

Besides the usual bug fixes and dependency upgrades, we also have a smoother experience with improved support for Java’s `record` types.

Changelog

🚀 Features
- da28a81 Add concat operation to constraint streams
- 2c56079 improve support for Java records (308), closes 308

🐛 Fixes
- 471a959 Deep clone unknown classes in GIZMO solution cloner (341), closes 341
- e4d990c Always propagate map's update even if mapped value does not change
- 5d78bfd exhaustive search must not skip non-doable moves

🔄️ Changes
- 8c64199 GIZMO should not check for unknown classes in Quarkus (346), closes 346

🧰 Tasks
- 8d5864d Migrate to new Quarkus Dev UI
- eca54d2 fail fast on combination of basic variables & list variables on a single entity (338), closes 338

📝 Documentation
- e897b1c Document planning value type requirements (337), closes 337

Contributors
We'd like to thank the following people for their contributions:
- Christopher Chianelli
- Geoffrey De Smet
- Jente De Meyer ([Jdmbs](https://github.com/Jdmbs))
- Lukáš Petrovický ([triceo](https://github.com/triceo))
- Matej Čimbora
- Radovan Synek
- Wouter ([wouterds](https://github.com/wouterds))
- dependabot[bot] ([dependabot[bot]](https://github.com/apps/dependabot))


_Timefold Solver Community Edition_ is an open source project,
and you are more than welcome to contribute as well!
For more, see [Contributing](https://github.com/TimefoldAI/timefold-solver/blob/main/CONTRIBUTING.adoc).

Should your business need to scale to truly massive data sets or require enterprise-grade support,
check out [_Timefold Solver Enterprise Edition_](https://github.com/TimefoldAI/timefold-solver-enterprise/releases).

How to use Timefold Solver

To see Timefold Solver in action, check out [the quickstarts](https://github.com/TimefoldAI/timefold-quickstarts).

With Maven or Gradle,
just add the `ai.timefold.solver : timefold-solver-core : 1.3.0` dependency in your `pom.xml` to get started.

You can also import the Timefold Solver Bom (`ai.timefold.solver : timefold-solver-bom : 1.3.0`)
to avoid duplicating version numbers when adding other Timefold Solver dependencies later on.

Additional notes

The changelog and the list of contributors above are automatically generated.
They exclude contributions to certain areas of the repository, such as CI and build automation.
This is done for the sake of brevity and to make the user-facing changes stand out more.

1.2.13

1.2.0

_Timefold Solver Community Edition 1.2.0_, is here, with a focus on enhancing your experience. In this update, we’ve resolved long-standing bugs to ensure a smoother Timefold journey.
Upgrade now to enjoy a more seamless planning optimization experience!

Changelog

🐛 Fixes
- 3089d72 avoid metaspace leak by no longer using the LambdaMetaFactory (257), closes 257
- 727eb41 Make KOptListMove work in multithreaded environments
- f32715e Make KOptListMoveSelector work when moveThreadCount != NONE
- 839f9fd make SolutionManager.update() work on list variable as well
- bef5181 avoid fail-fast to make SolutionManager.update() work on chained variable
- 108ebea address some bugs suggested by Sonar

🔄️ Changes
- d832cd0 Changes code to use Java 17's `instanceof` pattern matching

🧰 Tasks
- fc4bec5 better exception when auto-discovery enabled under Quarkus

📝 Documentation
- 21942f8 refactor content for a cleaner ToC


Contributors
We'd like to thank the following people for their contributions:
- Christopher Chianelli
- Lukáš Petrovický ([triceo](https://github.com/triceo))
- Maciej Swiderski ([mswiderski](https://github.com/mswiderski))
- Matej Čimbora ([mcimbora](https://github.com/mcimbora))
- Moderne ([openrewrite](https://github.com/openrewrite))
- Radovan Synek
- Tim te Beek ([timtebeek](https://github.com/timtebeek))


_Timefold Solver Community Edition_ is an open source project, and you are more than welcome to contribute as well!
For more, see [Contributing](https://github.com/TimefoldAI/timefold-solver/blob/main/CONTRIBUTING.adoc).

Should your business need to scale to truly massive data sets or require enterprise-grade support,
check out [_Timefold Solver Enterprise Edition_](https://github.com/TimefoldAI/timefold-solver-enterprise/releases).

How to use Timefold Solver

To see Timefold Solver in action, check out [the quickstarts](https://github.com/TimefoldAI/timefold-quickstarts).

With Maven or Gradle, just add the `ai.timefold.solver : timefold-solver-core : 1.2.0` dependency to get started.

You can also import the Timefold Solver Bom (`ai.timefold.solver : timefold-solver-bom : 1.2.0`)
to avoid duplicating version numbers when adding other Timefold Solver dependencies later on.

Additional notes

The changelog and the list of contributors above are automatically generated and manually tweaked.
They exclude contributions to certain areas of the repository, such as CI and build automation.
This is done for the sake of brevity and to make the user-facing changes stand out more.

Page 4 of 5

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.