Skip to content

Releases: chocoteam/choco-solver

6.0.1

21 May 12:40

Choose a tag to compare

6.0.1 - 21 May 2026

Major features:

Constraints

  • Fix PropModXY in case of negative mod

Contributors to this release:

Full Changelog: v6.0.0...v6.0.1

6.0.0

05 May 15:31

Choose a tag to compare

6.0.0 - 05 May 2026

Major features:

Constraints & LCG

  • Faster modulo constraints with bounded variables
  • Fix modulo constraint with negative values
  • Add lcgExtractFromVariablesOnSolution setting to control whether the solution-forbidding clause is built from variable assignments (true) or from the decision path (false, default)
  • Add optimized implementations for the element constraint
  • Improve filtering of signs of variables in PropDivXYZ
  • Fix SparseBitSet.prevClearBit(final int fromIndex)

Build, CI & Tooling

  • Migrate to Java 17 (<release>17</release>); Java 17 language features and APIs are now available
  • Simplify Maven compiler configuration: remove multi-release JAR dual-compilation strategy (Java 8 + module-info at Java 9)
  • Enforce minimum Java 17 and Maven 3.6.0 via maven-enforcer-plugin
  • Upgrade ANTLR from 4.9.3 to 4.13.2; migrate grammars to standard src/main/antlr4/ layout; generated parser sources are no longer committed to the repository
  • Upgrade TestNG from 7.5.1 to 7.12.0
  • Upgrade args4j from 2.33 to 2.37

Deprecated API (to be removed in next release):

Other closed issues and pull requests:

See milestone 5.0.2

Contributors to this release:

5.0.1

10 Apr 19:38

Choose a tag to compare

5.0.1 - 10 Apr 2026

Major features:

Constraints & LCG

  • Add table reformulation for pow constraint when LCG is on
  • Reduce runtime for building table reformulations by excluding the result variable from the tuple generation
  • Fix integer overflow in PropDivXYZLight
  • Fix bounded domains management with LCG in PropDivXYZ
  • Faster modulo constraint with large domains
  • Add arithm preprocessing
  • Fix decreasing constraint

Deprecated API (to be removed in next release):

Other closed issues and pull requests:

See milestone 5.0.1

Contributors to this release:

Full Changelog: v5.0.0...v5.0.1

5.0.0

03 Feb 12:45

Choose a tag to compare

5.0.0 - 02 Feb 2026

Major features:

This set of commits delivers a major consolidation of Lazy Clause Generation, significant performance and memory improvements,
more robust constraint handling, and a broad cleanup and modernization of the internal APIs and tooling.

Performance & Algorithms

  • Significant performance improvements on:
  • Core propagators (X+Y=Z, abs, div, sum, scalar, etc.)
  • CompactTable (CT) and STR2+
  • Memory management and estimation mechanisms
  • Dynamic selection of table algorithms based on memory footprint
  • Optimizations in MiniSat and SAT-related components (clause reduction, propagation, assertions)

Lazy Clause Generation (LCG)

  • Major consolidation effort on LCG:
  • Fixes for critical bugs (initialization, reification, lost propagations)
  • New assertions and invariants
  • Improved separation and handling of learnt clauses (failure vs prohibiting-solution)
  • Extended LCG support for constraints such as abs, div, table, element
  • Better interaction with:
    • Restart strategies
    • ParallelPortfolio
    • Explanation and Reason APIs

Constraints & Modeling

  • Refactoring or improvement of many constraints:
  • AllDifferent, AllDifferentExcept*
  • Cumulative, DiffN, BinPacking, Element, Table
  • Arithmetic constraints (abs, div, times, min/max)
  • Smarter choice between decomposition and extension
  • Improved expression recognition and handling (XCSP / Flatzinc)

Testing & Robustness

  • Numerous test fixes and stabilizations
  • Addition of new tests, especially for LCG and XCSP
  • Timeout adjustments
  • Cleanup of memory-intensive or unstable tests

XCSP / Flatzinc / Parsing

  • Update of XCSP3 tools (v2.5)
  • Improvements in parsing and expression handling
  • Better support for:
    • Negative values
    • Constants
    • Variable groups and restarts
  • Competition-oriented adjustments for XCSP and Flatzinc

Search & Strategies

  • Enhancements to:
    • RoundRobin strategies
    • Dom/Wdeg and ConflictHistorySearch
    • MetaStrategy framework
  • New parameters and more robust default behaviors
  • Simplification and clarification of search-related APIs

Refactoring & API Evolution

  • Large-scale code cleanup:
    • Removal of obsolete classes
    • Simplification of core APIs (IntVar, Decision, Reason)
  • Improved and updated Javadoc
  • Clearer separation of responsibilities between Solver, MiniSat, and learning components

Build, CI & Tooling

  • Updates to Maven configuration, Docker, and Makefiles
  • CI workflow adjustments (tests, snapshots, releases)
  • Preparation of intermediate and beta releases

Deprecated API (to be removed in next release):

Other closed issues and pull requests:

See milestone 5.0.0

  • Performance improvement in PropXPlusYEqZ and PropAbsolute
  • Fix bug in ConflictOrderingSearch (monitor not plugged)
  • Performance improvement for LastConflict, ConflictOrderingSearch and StrategySequencer.
  • Fix bug : regular constraints parsed from XCSP now support negative values
  • Fix bug : Unexpected behavior when using Task with scalar (#1114)
  • Replace Cumulative implementation by state-of-the-art implementation of TimeTabling and OverloadChecking
  • Fix bug : IntVar no longer extends Iterable to avoid errors in nested loops
  • Fix bug : Fix iterator issue when using ISet, especially within graph variables (#1174 and #1175)

Contributors to this release:

5.0.0-beta.1

17 Feb 17:25

Choose a tag to compare

5.0.0-beta.1 - 17 Feb 2025

Major features:

This version introduces CP-SAT in Choco-solver which
replaces the previous explanation framework.
The Lazy Clause Generation (LCG) is a technique that allows the solver to generate clauses during search.
The current implementation is inspired by Chuffed
and "Lazy Clause Generation Reengineered" - Feydy, T., Stuckey, P.J. (2009).
This new version has necessitated a rather intrusive revision of the way propagators filter.

By default, LCG is not enabled. The following code shows how to enable it:

Model model = new Model(Settings.init().setLCG(true));

At this stage, this is a beta version.
First, only integer and boolean variables are supported.
Second, some constraints are explained with dedicated functions and
others are decomposed into explained ones.
More importantly, others are neither explained nor decomposed (for the moment).
In the latter case, an exception is raised to inform the user of the situation.

Other closed issues and pull requests:

See milestone 5.0.0

Contributors to this release:

v4.10.18

27 Jan 15:38

Choose a tag to compare

4.10.18 - 27 Jan 2025

Major features:

  • Fix unexpected behaviour when using neg() intvar in arithm #1115
  • Fix bin packing initial propagation (#1113)
  • Fixed an error in increasing constraint documentation and updated decreasing constraint documentation (#1103)

Full Changelog: v4.10.17...v4.10.18

v4.10.17

23 Sep 07:52

Choose a tag to compare

4.10.17 - 23 Sep 2024

Hotfix

  • Fix bug in PropHybridTable (#1102)

Full Changelog: v4.10.16...v4.10.17

v4.10.16

16 Sep 09:43

Choose a tag to compare

4.10.16 - 12 Sep 2024

Hotfix

  • Fix bug in IntAffineView (#1101)

Full Changelog: v4.10.15...v4.10.16

v4.10.15

09 Sep 13:50

Choose a tag to compare

4.10.15 - 09 Sep 2024

Major features:

  • Add PickOnDom and variants (see Search.pickOnDom)
  • Enhance MiniZinc output
  • Revamp scripts to solver flatzinc files
  • Fix bugs (see closed issues)

Other closed issues and pull requests:

See milestone 4.10.15

Contributors to this release:

Full Changelog: v4.10.14...v4.10.15

v4.10.14

02 Nov 16:32

Choose a tag to compare

4.10.14 - 02 Nov 2023

Major features:

  • NEW: solver..showRestarts(); to display the number of restarts during the search.
  • NEW: hybrid table constraints (see model.table(...))
  • NEW: partial assignement generator for COP (see Search.generatePartialAssignment())
  • NEW: Add Blackbox configuration (#1058)
  • Revamp views (#564)
  • Improve pow(base, exponent, result)
  • Remove BitsetArrayIntVarImpl now managed in BitSetIntVarImpl

Deprecated API (to be removed in next release):

Other closed issues and pull requests:

See milestone 4.10.14

Contributors to this release:

Full Changelog: v4.10.13...v4.10.14