Skip to content

v9.15

Latest

Choose a tag to compare

@Mizux Mizux released this 12 Jan 15:38

What's Changed

Platforms

  • Add Python 3.14 support.

Dependencies

C++

  • abseil-cpp=20250814.1
  • Protobuf=v33.1
  • HiGHS=v1.12.0
  • SCIP=v10.0.0
  • NEW XPressMP is supported in MathOpt. It will automatically load the XPressMP shared library on your computer

Routing

  • Improved routing performance and search event support (at optimal).
  • Improved Doxygen documentation.
  • Reworked routing samples (#4590).
  • Exported filters update and other improvements from main.

CP-SAT

  • Improvements to the no_overlap_2d constraint (presolve, propagation, and cuts).
  • Detect, store and use precedences in presolve, propagation, and cuts.
  • Extensive work on LRAT proof production and checking.
  • Improve linear1 and linear2 encodings and processing.
  • Support for set variables and constraints (experimental).
  • Extend support for enforcement literals to more constraints.
  • Optimize Python layer, speed up proto generation, and improve typing support (#4733).
  • Improve support for gil-less Python 3.14.
  • Add soft constraint examples.
  • Improve shared tree workers and clause sharing.
  • Print solution on SIGTERM.
  • Fix various bugs and improve heuristics (#4907, #4746, #4839, #4929, #4743, #4693, #4666, #4654).
  • Improved scheduling cuts and memory management.

MathOpt

  • Pass solution hint to HiGHS from MathOpt (#4737).
  • Propagate nullability and add nullability to SolveInterrupter (#4959, #4958).
  • Rework GSCIP and solver integration; fix Windows build issues.
  • Backport various improvements from main.

Linear Solver

  • Refactor MPSolver interface registration to include runtime readiness checks (#4973).
  • Add lazy constraints support in XPRESS interface.
  • MPSolver-XPRESS: Remove superfluous calls to XPRSloadlp and XPRScreateprob (#4667).
  • Support for constant terms in DoubleLinearExpr::AddExpression.
  • Added support for Gurobi 12.0.2, 12.0.3, and 13.0.0.
  • Fixed XPRESS compilation on Windows and updated Bazel build (#4945, #4956).
  • Support SCIP 10.0.0.

Build & Dependencies

  • Bumped dependencies: Abseil 20250512.0, Protobuf v31.1, gTest 1.17.0, Benchmark 1.9.2.
  • Dropped support for Python 3.8; minimum version is now 3.9.
  • Modernize Bazel build and improve Java, .NET, and Julia support (#4885, #4928, #4879).
  • Added automated ccache support in CMake.
  • Fix Python build with BUILD_TESTING=OFF.

Other

  • Added space_saving_most_frequent utility.
  • Column generation Bin Packing heuristic based on CFT (#4639).
  • Reworked SortedDisjointIntervalList to support copy, deepcopy, and iterators in Python.
  • Added ORToolsBinaries.jl for Julia.
  • PDLP: Fix test when using pytest 8.4.0.
  • Removed fuzztest support from OR-Tools (#4938).%

Changes (PR)

New Contributors

Known issues

Wrappers (.Net, Java, Python)

  • routing: SetAllowedVehiclesForIndex not working in wrappers (changed parameters) #4982

  • sat: solver.status_name() raises TypeError: 'ortools.sat.python.cp_model_helper.CpSolverStatus' object is not callable #4985

  • sat: CpSolver.Solve() callback breaking argument change #4988

MacOS

You must use swig <= 4.3.1 to avoid Director issue on python, unfortunately homebrew only provides the "broken" swig 4.4.1
to install swig manually:
first download swig 4.3.1: https://sourceforge.net/projects/swig/files/swig/swig-4.3.1/

# Optional uninstall brew version if any
brew uninstall swig

# Build swig from source and install it
cd /tmp
tar xzvf ~/Downloads/swig-4.3.1.tar.gz
cd swig-4.3.1/
./configure --prefix=${HOME}/swig-4.3.1
make
make install
export PATH="${HOME}/swig-4.3.1/bin:$PATH"
# To check
command -v swig
swig --version

ref: swig/swig#3279

Full Changelog: v9.14...v9.15