Platform changes
* Drop Debian-10 support
* Drop Ubuntu-16.04 support
* Drop .NET Framework 4.5.2
Dependencies Update
* Add Eigen `3.4.0`.
* Add Google re2 `2021-11-01`.
* Protobuf `3.19.1` -> `3.19.4`.
* SCIP `7.0.1` -> `v800`
Python
* Add pybind11.
Features
* Add PDLP as experimental
* Add MathOpt as experimental.
CP-SAT
* renamed few API for consistency
e.g. `LinearExpr.ScalProd` -> `LinearExpr.WeightedSum`.
* Add `AddAtLeastOne`/`AddAtMostOne`/`AddExactlyOne` methods.
* Add `AddMultiplicationConstraint(z, x, y)` in all languages.
* `AddMultipleCircuit()` in all languages
C++
* explicit ctor `IntVar(BoolVar)`
* remove `LinearExpr::Add*`and replaced them by operator e.g. `LinearExpr += `
* Add arithmetic operators on linear expression
* removed `LinearExpr::BooleanSum/BooleanScalProd`, use `Sum/WeightedSum`
* Add `CpModelBuilder::FixVariable()` which overwrite the domain of the variable to a single value
Java
* Rewrite `LinearExpr`, add a incremental builder class: `LinearExpr.newBuilder().add(x).addSum(<array of variables).build()`
* Follow C++ API: `Circuit`, `MultipleCircuit`, `Cumulative`, `Reservoir`, `AllowedAssignment` and `ForbiddenAssignment` now return a specialized class with incremental API to add new variables, terms, demands…
C
* Document all methods
* Follow C++ API: `Circuit`, `MultipleCircuit`, `Cumulative`, `Reservoir`, `AllowedAssignment` and `ForbiddenAssignment` now return a specialized class with incremental API to add new variables, terms, demands…
* Add `LinearExprBuilder` class to build expression incrementally.
Build System
CMake
* Require at least `CMake >= 3.18`
Make
* Now use the CMake based build internally.