Skip to content

5.0.0

Choose a tag to compare

@cprudhom cprudhom released this 03 Feb 12:45
· 113 commits to master since this release

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: