What's Changed
🚨 Breaking Changes
- Update solution object to include the LP solver by @nguidotti in #822
🐛 Bug Fixes
- Fix doc version update script to handle new url by @rgsl888prabhu in #810
- Add nvjitlink to cuda-toolkit pip extras for cusparse compatibility by @bdice in #850
- Fix issue with incorrect lower bound on air05 by @chris-maes in #890
- Fix batch pdlp and python api support by @Kh4ster in #893
- Fix timer checks by @akifcorduk in #849
- fix how tests create service subprocess (causes errors with new cuda) by @tmckayus in #897
- Fix thrust tuple includes + more timer checks by @aliceb-nv in #902
- Fix race condition in add_external_solutions_to_population by @akifcorduk in #909
- Update to PSLP version with bug fixes by @rg20 in #920
- Fix variable bound violation in CPUFJ moves by @aliceb-nv in #930
- Fix #903: Validate unique vehicle_ids in VRP fleet data by @anandhkb in #917
- Fix incorrect errors with x + x*x, +x, -x in Python API by @chris-maes in #936
- turn off cpu only tests to unblock CI during investigation by @tmckayus in #959
- Fix lexicographic search by @rgsl888prabhu in #969
- apply -UNDEBUG to coupt flags instead of global settings by @tmckayus in #964
- papilo probing workaround, probing cache sync, extra error logging by @aliceb-nv in #992
- Add exception handling for pdlp in concurrent mode by @Iroy30 in #966
- Implement UnboundedOrInfeasible termination status by @rg20 in #941
- Fix race in graph capture when set_simplex_solution() is called by @aliceb-nv in #1017
- Fix issue with infinite lower bounds and try to bound free variables in barrier by @chris-maes in #1001
📖 Documentation
- Add install selector UI by @rgsl888prabhu in #961
- update doc for usage of incumbent utility function by @Iroy30 in #947
- Disable running notebooks while building docs by @rgsl888prabhu in #980
- Fixing broken links by @cwilkinson76 in #1028
- Doc and release notes updates by @rgsl888prabhu in #1006
🚀 New Features
- Add memory model support for host-resident problem data by @tmckayus in #819
- Add support for FP32 and mixed precision in PDLP by @Kh4ster in #910
- Remote execution implementation by @tmckayus in #939
- Add cuopt_grpc_server as an option for the cuopt image by @tmckayus in #1003
🛠️ Improvements
- fix(build): build package on merge to
release/*branch by @gforsyth in #800 - Main merge release/26.02 by @rgsl888prabhu in #801
- Main merge release/26.02.update by @rgsl888prabhu in #812
- move ruff configuration into pyproject.toml by @jameslamb in #806
- refactor: drop support for Python 3.10 by @gforsyth in #809
- tighten wheel size limits, expand CI-skipping logic, other small build changes by @jameslamb in #804
- remove pip.conf migration code in CI scripts, fix pr-builder configuration by @jameslamb in #821
- Use verify-hardcoded-version pre-commit hook by @KyleFromNVIDIA in #823
- Refactoring agentic skill files based on roles and modules by @rgsl888prabhu in #818
- Main merge release/26.02 4 by @rgsl888prabhu in #830
- Rename and split up cpp/src directories by @chris-maes in #846
- Consider objective function integrality when pruning + bug fixes by @aliceb-nv in #851
- Simplex work estimates by @chris-maes in #856
- Update raft headers by @aamijar in #865
- Disable release/26.02 nightly and enable release/26.04 nightly by @rgsl888prabhu in #895
- Add .github/release.yml for auto-generated release notes by @AyodeAwe in #898
- Use
sccache-distbuild cluster for conda and wheel builds by @trxcllnt in #848 - Type and execution path cleanup for memory model changes by @tmckayus in #908
- Disable auto summary from code rabbit by @rgsl888prabhu in #913
- Fix routing module bugs from issue #857 by @anandhkb in #914
- Upgrade skills by @rgsl888prabhu in #918
- Clique Table Generation by @akifcorduk in #627
- update exceptions and guards by @Iroy30 in #912
- Add clique cuts by @akifcorduk in #937
- Fix MIR cut aggregation. Complement integer variables to find MIR cuts. Use Variable Lower/Upper Bounds in MIR cuts. by @chris-maes in #905
- Add MIP gap to heuristic log during dual-simplex root relaxation by @anandhkb in #942
- feat: add support for Python 3.14 by @gforsyth in #933
- update routing tests by @Iroy30 in #940
- Add a skill for evolving skills or adding new skills based on interaction by @rgsl888prabhu in #952
- Disable barrier and cuts tests by @rgsl888prabhu in #968
- Fix server test behavior to stop on first failure by @rgsl888prabhu in #925
- build wheels with CUDA 13.0.x, test wheels against mix of CTK versions by @jameslamb in #973
- add pulp, pyomo integration tests by @Iroy30 in #945
- Dump presolved problem to file by @hlinsen in #459
- Add GitHub issue template for numerical instability reports by @anandhkb in #982
- Run FJ heuristics before and during presolve by @aliceb-nv in #899
- Write quadratic terms to mps file by @rg20 in #949
- Add Implied bound cuts. Find more knapsack cuts. Lift knapsack cuts by @chris-maes in #970
- Disable incumbent test for neos test case by @rgsl888prabhu in #1023
- Improve crossover dual simplex by @rg20 in #948
- Improvements to reliability branching by @nguidotti in #979
- Race batch PDLP and dual simplex in strong branching / reliability branching by @Kh4ster in #994
- Expose GPU heuristics tuning parameters via config files by @aliceb-nv in #993
- MIP Row and Objective Scaling by @akifcorduk in #906
- Clean-up Logs by @akifcorduk in #1039
- Cleanup early heuristics logs + unify cutoff/upper_bound in B&B by @aliceb-nv in #1033
- Bump clang tools to 2.1.8 to fix local build issue by @rgsl888prabhu in #1052
New Contributors
- @aamijar made their first contribution in #865
- @trxcllnt made their first contribution in #848
- @anandhkb made their first contribution in #914
Full Changelog: v26.04.00a...v26.04.00