Skip to content

Commit 39b49d0

Browse files
committed
Merge branch 'release-5.0.0'
2 parents f28bd85 + 736b1a0 commit 39b49d0

1,322 files changed

Lines changed: 15057 additions & 7027 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/maven-test.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on: [push, pull_request]
77

88
jobs:
99
test-ibex:
10-
runs-on: ubuntu-20.04
10+
runs-on: ubuntu-latest
1111
# The different steps
1212
steps:
1313
- uses: actions/checkout@v4
@@ -27,7 +27,9 @@ jobs:
2727
2828
# Regression tests
2929
- name: Test Ibex
30-
run: mvn --file pom.xml test -Pcoverage -DtestFailureIgnore=true -Dgroups=ibex
30+
run: |
31+
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib/ibex/3rd
32+
mvn --file pom.xml test -Pcoverage -DtestFailureIgnore=true -Dgroups=ibex
3133
3234
test-solver:
3335
runs-on: ubuntu-latest

CHANGES.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,98 @@ Choco Solver ChangeLog
44
This file is dedicated to sum up the new features added and bugs fixed in Choco-solver since the version, 4.0.0.
55
**Note**: double-space is replaced by "\t" character on release process. Make sure the format is ok.
66

7+
5.0.0 - 02 Feb 2026
8+
---------------------
9+
10+
### Major features:
11+
12+
This set of commits delivers a major consolidation of Lazy Clause Generation,
13+
significant performance and memory improvements,
14+
more robust constraint handling,
15+
and a broad cleanup and modernization of the internal APIs and tooling.
16+
17+
#### Performance & Algorithms
18+
- Significant performance improvements on:
19+
- Core propagators (X+Y=Z, abs, div, sum, scalar, etc.)
20+
- CompactTable (CT) and STR2+
21+
- Memory management and estimation mechanisms
22+
- Dynamic selection of table algorithms based on memory footprint
23+
- Optimizations in MiniSat and SAT-related components (clause reduction, propagation, assertions)
24+
25+
#### Lazy Clause Generation (LCG)
26+
- Major consolidation effort on LCG:
27+
- Fixes for critical bugs (initialization, reification, lost propagations)
28+
- New assertions and invariants
29+
- Improved separation and handling of learnt clauses (failure vs prohibiting-solution)
30+
- Extended LCG support for constraints such as abs, div, table, element
31+
- Better interaction with:
32+
- Restart strategies
33+
- ParallelPortfolio
34+
- Explanation and Reason APIs
35+
36+
#### Constraints & Modeling
37+
- Refactoring or improvement of many constraints:
38+
- AllDifferent, AllDifferentExcept*
39+
- Cumulative, DiffN, BinPacking, Element, Table
40+
- Arithmetic constraints (abs, div, times, min/max)
41+
- Smarter choice between decomposition and extension
42+
- Improved expression recognition and handling (XCSP / Flatzinc)
43+
#### Testing & Robustness
44+
- Numerous test fixes and stabilizations
45+
- Addition of new tests, especially for LCG and XCSP
46+
- Timeout adjustments
47+
- Cleanup of memory-intensive or unstable tests
48+
#### XCSP / Flatzinc / Parsing
49+
- Update of XCSP3 tools (v2.5)
50+
- Improvements in parsing and expression handling
51+
- Better support for:
52+
- Negative values
53+
- Constants
54+
- Variable groups and restarts
55+
- Competition-oriented adjustments for XCSP and Flatzinc
56+
#### Search & Strategies
57+
- Enhancements to:
58+
- RoundRobin strategies
59+
- Dom/Wdeg and ConflictHistorySearch
60+
- MetaStrategy framework
61+
- New parameters and more robust default behaviors
62+
- Simplification and clarification of search-related APIs
63+
#### Refactoring & API Evolution
64+
- Large-scale code cleanup:
65+
- Removal of obsolete classes
66+
- Simplification of core APIs (IntVar, Decision, Reason)
67+
- Improved and updated Javadoc
68+
- Clearer separation of responsibilities between Solver, MiniSat, and learning components
69+
#### Build, CI & Tooling
70+
- Updates to Maven configuration, Docker, and Makefiles
71+
- CI workflow adjustments (tests, snapshots, releases)
72+
- Preparation of intermediate and beta releases
73+
74+
75+
76+
### Deprecated API (to be removed in next release):
77+
78+
### Other closed issues and pull requests:
79+
See [milestone 5.0.0-beta.2](https://github.com/chocoteam/choco-solver/milestone/40)
80+
81+
- Performance improvement in PropXPlusYEqZ and PropAbsolute
82+
- Fix bug in ConflictOrderingSearch (monitor not plugged)
83+
- Performance improvement for LastConflict, ConflictOrderingSearch and StrategySequencer.
84+
- Fix bug : regular constraints parsed from XCSP now support negative values
85+
- Fix bug : Unexpected behavior when using Task with scalar (#1114)
86+
- Replace Cumulative implementation by state-of-the-art implementation of TimeTabling and OverloadChecking
87+
- Fix bug : IntVar no longer extends Iterable to avoid errors in nested loops
88+
- Fix bug : Fix iterator issue when using ISet, especially within graph variables (#1174 and #1175)
89+
90+
#### Contributors to this release:
91+
- [Charles Prud'homme](https://github.com/cprudhom) (@cprudhom)
92+
- [Jean-Guillaume Fages](https://github.com/jgFages) (@jgFages)
93+
- [Arthur Godet](https://github.com/ArthurGodet) (@ArthurGodet)
94+
- [Sulian Le Bozec Chiffoleau](https://github.com/SulianLBC) (@SulianLBC)
95+
96+
97+
**Full Changelog**: https://github.com/chocoteam/choco-solver/compare/v5.0.0-beta.1...v5.0.0-beta.2
98+
799
5.0.0-beta.1 - 17 Feb 2025
8100
--------------------------
9101

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
BSD 4-Clause License
22

3-
Copyright (c) 2025, IMT Atlantique
3+
Copyright (c) 2026, IMT Atlantique
44
All rights reserved.
55

66
Redistribution and use in source and binary forms, with or without

Makefile

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# like running test suites
33

44
ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
5-
PRETTY_DATE := $(shell date +'%m/%d/%Y %H:%M')
5+
PRETTY_DATE := $(shell date +'%Y-%m-%dT%H:%M')
66
DATE := $(shell date +'%y%m%d_%H%M')
77
CURRENT_VERSION := $(shell mvn help:evaluate -Dexpression=project.version | grep -v "\[INFO\]" | grep -v "\[WARNING\]")
88

@@ -49,12 +49,12 @@ compile:
4949

5050
tests : 1s 10s ibex checker mzn xcsp mps dimacs expl lcg
5151

52-
1s 10s ibex checker mzn xcsp mps dimacs lcg: compile
53-
mvn -q test -DtestFailureIgnore=true -Dgroups="$@"
52+
1s 10s ibex checker mzn xcsp mps dimacs lcg:
53+
mvn test -DtestFailureIgnore=true -Dgroups="$@"
5454

5555
update_date:
56-
@sed -i '' 's|\s*System.out.printf("c Choco.*|System.out.printf("c Choco%s ($(PRETTY_DATE))\\n", lcg? " with LCG" : "");|' parsers/src/main/java/org/chocosolver/parser/xcsp/XCSP.java
57-
@sed -i '' 's|\s*System.out.printf("%% Choco%s (.*|System.out.printf("%% Choco%s ($(PRETTY_DATE))\\n", lcg? " with LCG" : "");|' parsers/src/main/java/org/chocosolver/parser/flatzinc/Flatzinc.java
56+
@sed -i '' 's|\s*System.out.printf("c Choco.*|System.out.printf("c Choco-solver%s ($(CURRENT_VERSION), $(PRETTY_DATE))\\n", lcg? " with LCG" : "");|' parsers/src/main/java/org/chocosolver/parser/xcsp/XCSP.java
57+
@sed -i '' 's|\s*System.out.printf("%% Choco.*|System.out.printf("%% Choco-solver%s ($(CURRENT_VERSION), $(PRETTY_DATE))\\n", lcg? " with LCG" : "");|' parsers/src/main/java/org/chocosolver/parser/flatzinc/Flatzinc.java
5858

5959
compet: update_date clean package
6060

@@ -70,6 +70,11 @@ delmsc:
7070
@rm ~/.minizinc/solvers/choco-$(VERSION).msc
7171

7272
docker: compet
73+
# add an image with LCG support
74+
@sed -i '' 's|python3.*|python3 "$$(dirname "$$0")/fzn-choco.py" "$$@" "-lcg"|' parsers/src/main/minizinc/fzn-choco.sh
75+
@docker build -f $(ROOT_DIR)/parsers/src/main/minizinc/docker/Dockerfile.dms -t chocoteam/choco-solver-mzn:$(CURRENT_VERSION)-X $(ROOT_DIR)
76+
# add an image without LCG support
77+
@sed -i '' 's|python3.*|python3 "$$(dirname "$$0")/fzn-choco.py" "$$@"|' parsers/src/main/minizinc/fzn-choco.sh
7378
@docker build -f $(ROOT_DIR)/parsers/src/main/minizinc/docker/Dockerfile.dms -t chocoteam/choco-solver-mzn:$(CURRENT_VERSION) $(ROOT_DIR)
7479

7580
antlr:

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
Choco-solver is an open-source Java library for Constraint Programming.
1919

20-
Current stable version is 5.0.0-beta.1 (17 Feb 2025).
20+
Current stable version is 5.0.0 (02 Feb 2026).
2121

2222
Choco-solver comes with:
2323
- various type of variables (integer, boolean, set, graph and real),
@@ -27,7 +27,7 @@ Choco-solver comes with:
2727

2828
But also, facilities to interact with the search loop, factories to help modelling, many samples, etc.
2929

30-
Choco-solver is distributed under BSD 4-Clause License (Copyright (c) 1999-2025, IMT Atlantique).
30+
Choco-solver is distributed under BSD 4-Clause License (Copyright (c) 1999-2026, IMT Atlantique).
3131

3232
Contact:
3333
- [Choco-solver on Discord](https://discord.gg/aH6zxa7e64)
@@ -124,7 +124,7 @@ So you only have to edit your `pom.xml` to declare the following library depende
124124
<dependency>
125125
<groupId>org.choco-solver</groupId>
126126
<artifactId>choco-solver</artifactId>
127-
<version>5.0.0-beta.1</version>
127+
<version>5.0.0</version>
128128
</dependency>
129129
```
130130

examples/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
This file is part of examples, http://choco-solver.org/
44
5-
Copyright (c) 2025, IMT Atlantique. All rights reserved.
5+
Copyright (c) 2026, IMT Atlantique. All rights reserved.
66
77
Licensed under the BSD 4-clause license.
88
@@ -17,7 +17,7 @@
1717
<parent>
1818
<groupId>org.choco-solver</groupId>
1919
<artifactId>choco</artifactId>
20-
<version>5.0.0-beta.1</version>
20+
<version>5.0.0</version>
2121
</parent>
2222
<artifactId>examples</artifactId>
2323
<packaging>jar</packaging>

examples/src/main/java/module-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* This file is part of examples, http://choco-solver.org/
33
*
4-
* Copyright (c) 2025, IMT Atlantique. All rights reserved.
4+
* Copyright (c) 2026, IMT Atlantique. All rights reserved.
55
*
66
* Licensed under the BSD 4-clause license.
77
*

examples/src/main/java/org/chocosolver/examples/AbstractProblem.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* This file is part of examples, http://choco-solver.org/
33
*
4-
* Copyright (c) 2025, IMT Atlantique. All rights reserved.
4+
* Copyright (c) 2026, IMT Atlantique. All rights reserved.
55
*
66
* Licensed under the BSD 4-clause license.
77
*

examples/src/main/java/org/chocosolver/examples/integer/AirPlaneLanding.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* This file is part of examples, http://choco-solver.org/
33
*
4-
* Copyright (c) 2025, IMT Atlantique. All rights reserved.
4+
* Copyright (c) 2026, IMT Atlantique. All rights reserved.
55
*
66
* Licensed under the BSD 4-clause license.
77
*

examples/src/main/java/org/chocosolver/examples/integer/AllIntervalSeries.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* This file is part of examples, http://choco-solver.org/
33
*
4-
* Copyright (c) 2025, IMT Atlantique. All rights reserved.
4+
* Copyright (c) 2026, IMT Atlantique. All rights reserved.
55
*
66
* Licensed under the BSD 4-clause license.
77
*

0 commit comments

Comments
 (0)