What's Changed
🚨 Breaking Changes
- Use static linkage for CUDA runtime by @bdice in #680
- Add C api callbacks for getting and setting solutions by @akifcorduk in #779
- Integrate PSLP presolver in cuOpt by @rg20 in #816
- Update solution object to include the LP solver by @nguidotti in #822
- ci(pr): gate builds on changed-files and broaden safe exclusions by @ramakrishnap-nv in #1118
- Migrate RMM usage to CCCL MR design by @bdice in #1035
- Fold libmps_parser into libcuopt by @mlubin in #1193
- Add short cu12/cu13 Docker tag aliases and update docs by @ramakrishnap-nv in #1370
- skills: consolidate three numerical-optimization API skills into one by @ramakrishnap-nv in #1489
- wheels: build CUDA 13 wheels with latest CTK (13.3.0) by @jameslamb in #1527
- Routing DataModel: store-then-build (defer device construction to solve) by @ramakrishnap-nv in #1556
- Remove deprecated
solve-by-pdlpattribute in Python API by @nguidotti in #1664 - build: don't install libcuopt into conda env by default by @ramakrishnap-nv in #1650
- Presolve work and iteration limits by @akifcorduk in #1656
🐛 Bug Fixes
- GF2 presolve infeasibility fix + CI occasional failure fix by @aliceb-nv in #437
- Short run fine tuning by @aliceb-nv in #444
- Fixed delayed termination after timeout by @nguidotti in #451
- Explicitely create new stream for Barrier concurrent by @hlinsen in #453
- Fix compile and log by @akifcorduk in #450
- Don't eliminate free variables in dual simplex by @chris-maes in #457
- More numerically robust CPUFJ feasibility checking by @aliceb-nv in #454
- Barrier post-solve, find_dense_columns fix, folding fix by @chris-maes in #462
- Further CPUFJ assert and numerical fixes by @aliceb-nv in #466
- Disable TBB because of a bug in CliqueMerging presolver by @rg20 in #463
- Fix an UMA on ns1952667 due to ignoring rank in factorize_basis when no singletons present by @chris-maes in #470
- Don't access free variables in the original problem on the folded problem by @chris-maes in #477
- [BUG] Fixed starting variable bounds for diving by @nguidotti in #474
- Gracefully handle OOM in Barrier by @hlinsen in #483
- Fix issue with barrier incorrectly returning numerical in concurrent by @chris-maes in #484
- Fix handling zero sized array in case of presolve by @ramakrishnap-nv in #491
- Fix TSP when order locations are set by @hlinsen in #503
- Fix nightly container testing suite by @ramakrishnap-nv in #495
- Disable flaky barrier tests by @ramakrishnap-nv in #520
- Fix cudf breaking change for build_column which is used to create cudf series from buffer by @ramakrishnap-nv in #535
- Handle concurrent mode oom and avoid unnecessary deep copy of problem_t by @hlinsen in #541
- Fix papilo assertion mip by @hlinsen in #542
- Disable netlib testing by @ramakrishnap-nv in #550
- Use one cusparse handle per thread to avoid race condition on cuspars… by @hlinsen in #544
- Fix bug in logger when log_to_console is set to false by @rg20 in #538
- Fix compilation for the
solve_MIPexecutable for benchmarking by @nguidotti in #557 - Fix nightly notebook testing by @ramakrishnap-nv in #549
- Fix issue with build_column in cudf which is being deprecated by @ramakrishnap-nv in #578
- Fix minor printf bugs. by @ahehn-nv in #574
- refactored update-version.sh to handle new branching strategy by @rockhowse in #583
- Fix cusparse leak by @Kh4ster in #590
- Fix memory leaks in barrier by @hlinsen in #584
- Fix explored nodes counter by @nguidotti in #570
- Restart helper function fix by @Kh4ster in #629
- Fix Crash in the Incumbent Test by @nguidotti in #632
- Disable tsp dataset download by @hlinsen in #633
- Turn off building with assertions by default by @tmckayus in #635
- FIx nightly to build only single architecture image instead of manifest list by @ramakrishnap-nv in #638
- try adding cuda_version to dependencies.yaml by @tmckayus in #661
- Fix pdlp_solver_settings method bug in pdlp by @Kh4ster in #657
- Fix OOM when running very large MIP instances by @nguidotti in #658
- Fix cvxpy failure in nightly testing by @nguidotti in #656
- cuopt service correct definition for status value in lp result spec by @tmckayus in #671
- Rounding and crash fixes by @aliceb-nv in #670
- Fix infinite average pseudocost + Handle numerical issues in strong branching by @nguidotti in #678
- Fix root LP solution copy in diversity_manager_t by @aliceb-nv in #685
- Fix warp divergence by @hlinsen in #681
- Fixes mismatch cuda-numba version between cuopt and cudf by @nguidotti in #717
- Fix non implemented case in LinearExpression class by @hlinsen in #724
- Populate dual solution when dual post solve is enabled by @hlinsen in #726
- Fix device code to provide trailing return type. by @ramakrishnap-nv in #738
- Fix synchronization issue originated from non-blocking stream by @ramakrishnap-nv in #740
- Add clang host build and ThreadSanitizer support, race condition fixes by @aliceb-nv in #603
- doc: Adding FQDN to versions1.json by @aschilling-nv in #756
- Disable consistent updates of max dynamic shared memory by @hlinsen in #750
- Update doc and cusparse check by @Iroy30 in #735
- Use augmented system when there are no constraints by @rg20 in #765
- Explicitely use cudaStream_t for cub::DeviceTransform and use non blocking stream by @hlinsen in #771
- Fix container build and test by @ramakrishnap-nv in #780
- Fix typo in QP problem instantiation by @mtanneau in #758
- Fix find dense columns out of bounds by @hlinsen in #793
- Several bug fixes by @nguidotti in #786
- Fix doc version update script to handle new url by @ramakrishnap-nv in #810
- Adjust basis repair for super basic variables. Repeat root solve if cuts make it infeasible by @chris-maes in #831
- FJ numerical fix + fix clang build by @aliceb-nv in #835
- Fix an issue with the sign of dual variables on maximization problems by @chris-maes in #841
- 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 @ramakrishnap-nv in #969
- apply -UNDEBUG to coupt flags instead of global settings by @tmckayus in #964
- Add missing thrust headers across C++ sources by @bdice in #997
- 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
- Update sonarcube host link to Nvidia by @ramakrishnap-nv in #1015
- 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
- Require openssl so that conda verson is found before system lib by @hlinsen in #1084
- fix(cuda_helpers): clear sticky error and avoid cache poisoning in set_shmem_of_kernel by @np96 in #1095
- Fix double va_start undefined behavior in error handling by @ramakrishnap-nv in #1086
- Fixed lower bound in single thread mode by @nguidotti in #1111
- test(c_api): skip flaky TimeLimitTestFixture MIP case (#1135) by @ramakrishnap-nv in #1136
- Replace flaky determinism test by @aliceb-nv in #1141
- Use fp64 for all node stack buffers and fix indexing in vehicle order match test by @hlinsen in #1137
- fix(benchmarks): drop removed rmm owning_wrapper; build in CI by @ramakrishnap-nv in #1143
- Fix loose tolerances in the objective function integrality detection by @aliceb-nv in #1148
- ci(docker): pin all first-party cuOpt wheels to CUOPT_VER by @ramakrishnap-nv in #1157
- Fix CI crash on RTX6000 by @nguidotti in #1184
- miplib_test: allow tiny error on objective equality by @mlubin in #1199
- Fix concurrent LP exception cleanup by @mlubin in #1206
- Allow nested parallel regions for determinism mode by @nguidotti in #1201
- Fix destruction order in solve.cu by @mlubin in #1216
- Fix by-reference capture of local variable in solve.cu by @mlubin in #1214
- Fix route priority sort indexing by @bdice in #1222
- Drop constness in raft handle for
data_model_view_t(routing) by @nguidotti in #1241 - Fix lost nodes in branch and bound by @hlinsen in #1138
- Fix vehicle fixed cost accounting in fragment-vs-route deltas by @mlubin in #1244
- Fix an out of bounds access error by @rg20 in #1245
- Fix a bug in dual variables and reduced costs when we add implied bounds on free variables by @chris-maes in #1237
- Cuda graph replays on capture error by @akifcorduk in #1253
- Fix accidentally quadratic add_slacks_to_basis in crossover by @nguidotti in #1268
- Replace constant FJ settings with per-instance device_scalar by @mlubin in #1284
- Stabilize logger config in LP BatchSolve and version logging by @mlubin in #1286
- Fix mixed-dtype cudf.concat in test_initial_solutions helper by @ramakrishnap-nv in #1295
- Add extra numerical guards for flow cover cuts by @aliceb-nv in #1316
- Fix broken sample.mps download link in server LP examples docs by @ramakrishnap-nv in #1358
- Fix for maximization problems with quadratic constraints by @chris-maes in #1377
- Use 26.6 (not 26.06) in README pip install commands by @ramakrishnap-nv in #1380
- check for valid size in cuOptGetErrorString by @mlubin in #1414
- Fix PDLP capture cublas error and hang on infeasible solutions by @akifcorduk in #1416
- Add a guard for huge bounds in bounds propagation by @hlinsen in #1390
- grpc fix a race condition with log streaming by @tmckayus in #1426
- bugfix (routing): fix min_vehicles bug by @np96 in #1405
- fix(routing): lower opt level for sliding_window.cu to avoid nvcc 13.0.3 ICE by @ramakrishnap-nv in #1452
- Assign gRPC workers to distinct GPUs via cudaSetDevice by @tmckayus in #1449
- ci: fix unbound CONDA_PREFIX in test_doc_examples.sh by @ramakrishnap-nv in #1462
- Fix the bug detecting nonconvex quadratic constraints in the general … by @yuwenchen95 in #1438
- fix(ci): fix typo in notebook skip list for transport_cuopt by @ramakrishnap-nv in #1496
- fix: validate row type byte before enum cast in MPS parser by @ramakrishnap-nv in #1491
- Fix root cut CPUFJ solutions being dropped by the GPU heuristics by @aliceb-nv in #1497
- fix(socp): canonicalize QC Q COO for rotated SOC detection by @yuwenchen95 in #1439
- fix: incorrect GF2 presolve constraint addressing by @aliceb-nv in #1517
- Remove wrong exception of unsupported QCQP by @rg20 in #1493
- fix(barrier): destroy cuDSS descriptors before freeing their backing buffers by @ramakrishnap-nv in #1555
- fix(clang-format): preserve SPDX comments by @bdice in #1560
- fix(ci): exclude cancelled jobs from pr-test-summary failed count by @ramakrishnap-nv in #1558
- Fix cuts not obeying timer by @akifcorduk in #1563
- [BUG] Fix variable fixing for initial solutions by @nguidotti in #1580
- Fix clique size and numerical issue bugs by @akifcorduk in #1589
- fix(build): join EXTRA_CMAKE_ARGS with semicolons for SKBUILD_CMAKE_ARGS by @ramakrishnap-nv in #1588
- Fix libomp ABI bug by @aliceb-nv in #1593
- make objective_scaling_factor optional for gRPC by @tmckayus in #1600
- Fix SOC index collision and simplify QC-to-SOC conversion by routing linear QCs through general LDLT path by @yuwenchen95 in #1564
- fix(grpc): cancel active jobs on delete by @tmckayus in #1604
- Fix Ruiz equilibration skip heuristic to also check column imbalance by @mlubin in #1601
- fix(routing): preserve row-major layout when resizing capacity routes by @mlubin in #1621
- fix(docker): pre-install test deps so dnf removal doesn't break test_image.sh by @ramakrishnap-nv in #1627
- Allow zero-valued LP Python model updates by @fallintoplace in #1421
- fix(grpc): terminate workers on server shutdown by @tmckayus in #1603
- test(barrier): cap qplib_8515_ruiz_forced_off at the iteration limit by @mlubin in #1628
- Fix routing YAML best results export by @fallintoplace in #1422
- Support maximization in quadratic programs by @chris-maes in #1641
- modify ldconfig in ubi image so nvidia libraries are on path by @tmckayus in #1644
- Temporarily exclude GB300 from testing by @KyleFromNVIDIA in #1648
- Revert "Temporarily exclude GB300 from testing (#1648)" by @KyleFromNVIDIA in #1651
- remove extra or unnecessary parameters in Python gRPC api by @tmckayus in #1654
- Pin PaPILO to flush empty-row fix from akifcorduk/papilo. by @akifcorduk in #1645
- Fixed 26.08 release notes by @nguidotti in #1665
- GF2 presolve rank-deficiency fix by @aliceb-nv in #1660
- Fix crash when symmetry generators are pruned by @nguidotti in #1689
- [BUG] Fixed uninitialized FJ constraint weights when the problem grows by @nguidotti in #1698
- Use configured feasibility tolerance in Papilo by @hlinsen in #1688
- Fix GF2 incorrectly treating some one-sided rows as equality by @aliceb-nv in #1707
- Fix dual residual computation in final solution output by @yuwenchen95 in #1718
- Remove split compile by default by @Kh4ster in #1722
- Report absent solution values instead of returning success by @ramakrishnap-nv in #1734
- fix: avoid uncapturable RMM copies inside routing CUDA graph captures by @ramakrishnap-nv in #1753
- fix: keep host sources alive for async route-view copies (#1756) by @ramakrishnap-nv in #1759
- Revert changes to PCG by @nguidotti in #1762
📖 Documentation
- Release notes for v25.10 by @cwilkinson76 in #432
- Add default accuracy for each method in LP by @ramakrishnap-nv in #514
- Add release notes to main repository for quick view by @ramakrishnap-nv in #512
- Use current system architecture in conda environment creation command by @bdice in #567
- Handle inherited module doc string issues by @ramakrishnap-nv in #637
- add a note on contents of ~/.local/lib for Python builds by @tmckayus in #651
- Add nim operator documentation on for using cuOpt by @ramakrishnap-nv in #642
- Update release notes for 25.12 by @ramakrishnap-nv in #665
- Update the QP documentation by @chris-maes in #688
- Adding best practices and details by @ramakrishnap-nv in #692
- Typo fix in pip install instructions by @mlubin in #743
- Make README consistent with other docs by @rg20 in #768
- Propose fix a typo by @jeis4wpi in #761
- Adding doc updates for release notes and other items by @ramakrishnap-nv in #808
- Add install selector UI by @ramakrishnap-nv in #961
- update doc for usage of incumbent utility function by @Iroy30 in #947
- Disable running notebooks while building docs by @ramakrishnap-nv in #980
- Tweak testing instructions in CONTRIBUTING.md by @mlubin in #1000
- Fixing broken links by @cwilkinson76 in #1028
- Exclude L1TESTs from contributing instructions by @mlubin in #1034
- Doc and release notes updates by @ramakrishnap-nv in #1006
- CONTRIBUTING.md: Recommend local conda environments by @mlubin in #1085
- docs(readme): use py3.13 docker tags (py3.14 not supported) by @ramakrishnap-nv in #1112
- Fix typo in Constraint docstring by @mlubin in #1113
- update mip scaling doc by @Iroy30 in #1121
- docs: migrate support link to GitHub Discussions; tidy doc links by @ramakrishnap-nv in #1144
- Add VRP dimension developer skill by @rg20 in #1233
- Fix for cuDSS 0.8; remove incorrect presolve docs in cuopt_cli by @chris-maes in #1353
- Update LP/QP/MILP docs to cover 26.06 API additions by @rg20 in #1339
- docs: add 26.06 release notes and updates to docs by @ramakrishnap-nv in #1294
- Mark MILP as beta; add QCQP and SOCP to README by @ramakrishnap-nv in #1384
- Update cuOpt MIP positioning by @Sylendran95 in #1387
- Fix FAQ command typos in health-check examples by @jackthepunished in #1389
- docs(grpc): title-case headings, replace ASCII diagrams with PNGs, archive older version URLs by @ramakrishnap-nv in #1420
- added kaminpar license to THIRD_PARTY_LICENSES by @Bubullzz in #1463
- docs: fix NGC container catalog URL by @ramakrishnap-nv in #1470
- Align cuOpt documentation branding and Doxygen configuration by @bdice in #1503
- normalize MILP to MIP in documentation by @tmckayus in #1655
- docs: add Python async gRPC client guide under gRPC remote execution by @tmckayus in #1653
- docs: release notes for 26.08 by @ramakrishnap-nv in #1638
- docs: enforce heading title case with Vale by @ramakrishnap-nv in #1668
🚀 New Features
- Add optional timestamps enabled by env CUOPT_EXTRA_TIMESTAMPS by @tmckayus in #392
- Barrier method for LPs with cuDSS sparse Cholesky / LDLT on the GPU by @chris-maes in #272
- Add Multi-GPU concurrent LP solve by @hlinsen in #601
- Add support for quadratic programming to the barrier method by @chris-maes in #500
- Add concurrent lp solve and crossover at root node by @hlinsen in #602
- add Quadratic expression class and Objective by @ramakrishnap-nv in #673
- Implement batch solve for routing models by @hlinsen in #728
- Batch PDLP by @Kh4ster in #805
- Add regression testing by @Iroy30 in #556
- Add cuts to the MIP solver by @chris-maes in #814
- 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
- Add semi continuous variables support by @hlinsen in #1096
- Extend batch pdlp support by @Kh4ster in #1152
- Implement python and C api for semi-continuous variables by @hlinsen in #1225
- Add LP format reader; accept .lp wherever .mps is accepted by @mlubin in #1120
- Detect MIP symmetry using dejavu; Perform orbital fixing and lexical reduction by @chris-maes in #1103
- Implement C APIs for adding quadratic objectives and constraints by @rg20 in #1247
- Add flow cover cuts at root by @hlinsen in #1178
- Extend the barrier solver for Second-Order Cone Programming (SOCP) by @chris-maes in #1290
- add QCQP support for grpc by @tmckayus in #1320
- add a Python interface to the C++ grpc asyc client by @tmckayus in #1430
- Implement multi-GPU PDLP by @Bubullzz in #1391
- Add support for sparsity exploitation for SOCs of large dimensionality by @yuwenchen95 in #1468
- Make the post solve info logging optional by @rg20 in #1639
- Upgrade cmake version to include the PDLP objective offset fix by @Kh4ster in #1695
- Expose solver statistics as scalar solution attributes by @ramakrishnap-nv in #1715
🛠️ Improvements
- Fix issue stemming because Rocky 8.10 is EOL and replaced by 8.11 by @ramakrishnap-nv in #427
- Integrate CliqueMerging presolver and tune presolver settings by @rg20 in #415
- Remove left over kernels by @akifcorduk in #430
- Parallel Branch-and-Bound by @nguidotti in #412
- Enable green context in Barrier by @hlinsen in #448
- Add setting to change the dual initial point used by barrier by @chris-maes in #468
- Remove raft-dask dependency by @ramakrishnap-nv in #475
- Add docs and example tests to barrier by @ramakrishnap-nv in #449
- Barrier log fixes by @chris-maes in #478
- Enable TBB and use fixed commit version by @akifcorduk in #481
- Print scaling information about the user model by @chris-maes in #488
- Fix return on size mismatch in Barrier by @hlinsen in #489
- Switch to using papilo develop branch by @rg20 in #493
- Branch 25.12 merge branch 25.10 by @ramakrishnap-nv in #490
- Branch 25.12 merge branch 25.10 by @ramakrishnap-nv in #505
- Reduce package sizes by @ramakrishnap-nv in #507
- Add code-rabbit config file to the repo by @ramakrishnap-nv in #516
- Refactor build scripts to use RAPIDS_BRANCH and remove RAPIDS_VERSION by @bdice in #517
- Use main shared-workflows branch by @bdice in #523
- Improve Diversity Loop by @akifcorduk in #518
- Update coderabbit config to enable autoreview by @ramakrishnap-nv in #522
- Remove papilo from getting added to packaging by @ramakrishnap-nv in #521
- Carry over implied integers from papilo presolve reductions by @aliceb-nv in #534
- Persistent basis_update_mpf_t in the Dual Simplex Phase 2 by @nguidotti in #383
- Skip version check for cuOpt in Julia code by @ramakrishnap-nv in #539
- Update CCCL to align with rapids-cmake by @bdice in #487
- Reduce concurrent overhead from right_looking_lu in dual simplex by @hlinsen in #555
- Do not rebuild from scratch when git hash changes by @rg20 in #563
- Use ruff-check, ruff-format instead of black, flake8, isort by @KyleFromNVIDIA in #571
- Use latest pre-commit-hooks, clean up copyright notices by @KyleFromNVIDIA in #573
- RINS heuristic by @aliceb-nv in #527
- Update RMM includes from
<rmm/mr/device/*>to<rmm/mr/*>by @bdice in #588 - Move doc examples to individual files and add CI test to test those by @ramakrishnap-nv in #565
- Make API tested library static since it is needed for only testing by @ramakrishnap-nv in #594
- Enable nightly build and testing for 25.12 by @ramakrishnap-nv in #604
- Test lean CI PR run option by @ramakrishnap-nv in #540
- Add review guide-lines for coderabbit and remove unnecessary details in review. by @ramakrishnap-nv in #572
- Main merge branch 25.12 by @ramakrishnap-nv in #607
- Disable TSP tests which are failing due to dataset download issue. by @ramakrishnap-nv in #611
- Fix nightly build to build for both main and release and one shouldn't cancel other by @ramakrishnap-nv in #608
- Improve Numerical Stability in Dual Simplex by @nguidotti in #591
- Remove cuvs dependency from cuOpt by @ramakrishnap-nv in #615
- Add missing parameters to documentation by @ramakrishnap-nv in #613
- Use strict priority in CI conda tests by @bdice in #617
- Propagate the bounds from the parent to the child nodes by @nguidotti in #473
- Reuse of the basis factorization from the parent node by @nguidotti in #492
- Main merge branch 25.12 by @ramakrishnap-nv in #624
- Main merge release/25.12 by @ramakrishnap-nv in #639
- Use strict priority in CI conda tests by @bdice in #636
- Set the linker to use RUNPATH instead of RPATH to allow for LD_LIBRARY_PATH overrides by @aliceb-nv in #631
- Add more preemption points to stop the solver after optimal is found by @aliceb-nv in #647
- Add details of new branching strategy and release cycle details to README and CONTRIBUTING.md by @ramakrishnap-nv in #641
- Improve iterative refinement by @rg20 in #677
- Main merge release/25.12 1 by @ramakrishnap-nv in #689
- Forward merging CI crash fixes (#691) by @ramakrishnap-nv in #716
- Fix missing headers for thrust::pair, add trailing return types where needed by @bdice in #732
- Use SPDX license identifiers in pyproject.toml, bump build dependency floors by @jameslamb in #742
- Use static GTest by @bdice in #729
- Remove alpha specs from non-RAPIDS dependencies by @bdice in #660
- Modernize dependency pinnings by @bdice in #723
- remove dask dependencies and configuration, reduce duplication in dependencies.yaml by @jameslamb in #744
- Create separate test run scripts by @bdice in #722
- build and test against CUDA 13.1.0 by @jameslamb in #747
- Update release branch to 26.02 for upcoming release nightly build by @ramakrishnap-nv in #751
- Add message when optimal solution is found during presolve by @adityasinghz in #623
- Adjusted column spacing in B&B logs by @nguidotti in #714
- Move datasets to s3 to reduce dependency on third-party download sites by @ramakrishnap-nv in #748
- add branch and commit time info to image by @Iroy30 in #737
- Use main shared-workflows branch by @jameslamb in #777
- remove deprecated params by @Iroy30 in #770
- Move augmented sytem computations in barrier to GPU by @rg20 in #746
- Add Probing Implications and Improve Variable Order by @akifcorduk in #580
- Diving Improvements by @nguidotti in #697
- Replace cudf Column and Buffers APIs with pylibcudf and public cuDF APIs by @ramakrishnap-nv in #781
- wheel builds: react to changes in pip's handling of build constraints by @mmccarty in #785
- Add support for c++20 by @ramakrishnap-nv in #486
- Update to 26.04 by @AyodeAwe in #788
- Add skills and other helper structure for agentic work by @ramakrishnap-nv in #778
- Add sonarqube for cuopt - static analysis by @ramakrishnap-nv in #762
- fix(build): build package on merge to
release/*branch by @gforsyth in #800 - Main merge release/26.02 by @ramakrishnap-nv in #801
- Add support for --split-compile and --jobserver in build.sh by @aliceb-nv in #626
- Add matrix interface to problem modeling by @Iroy30 in #775
- Main merge release/26.02.update by @ramakrishnap-nv in #812
- move ruff configuration into pyproject.toml by @jameslamb in #806
- refactor: drop support for Python 3.10 by @gforsyth in #809
- C api additions by @aliceb-nv in #721
- 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 @ramakrishnap-nv in #818
- Main merge release/26.02 4 by @ramakrishnap-nv in #830
- Scheduler-Worker Model + Reliability Branching by @nguidotti in #766
- update solver_settings by @Iroy30 in #840
- B&B CPU determinism by @aliceb-nv in #798
- 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 @ramakrishnap-nv 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 @ramakrishnap-nv in #913
- Fix routing module bugs from issue #857 by @anandhkb in #914
- Upgrade skills by @ramakrishnap-nv 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 @ramakrishnap-nv in #952
- Disable barrier and cuts tests by @ramakrishnap-nv in #968
- Fix server test behavior to stop on first failure by @ramakrishnap-nv 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
- Main merge release/26.04 by @ramakrishnap-nv in #998
- Add GitHub issue template for numerical instability reports by @anandhkb in #982
- Update versions1.json as part of version bump by @AyodeAwe in #1004
- Main merge release/26.04 1 by @ramakrishnap-nv in #1005
- Run FJ heuristics before and during presolve by @aliceb-nv in #899
- Make infra team as default code owner to any files which are not specifically added to a particular group by @ramakrishnap-nv in #1013
- 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
- Bump libcuopt size by 5 mb by @ramakrishnap-nv in #1016
- Disable incumbent test for neos test case by @ramakrishnap-nv 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
- Main merge release/26.04 2 by @ramakrishnap-nv in #1040
- 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 @ramakrishnap-nv in #1052
- Bump libcuopt wheel size by @ramakrishnap-nv in #1087
- Replace strtok with thread-safe strtok_r in MPS parser by @ramakrishnap-nv in #1088
- Update to clang 20.1.8 by @bdice in #1090
- bump nightly test to 26.06 by @ramakrishnap-nv in #1091
- Fix duplicate libmps_parser.so in libcuopt wheel by @ramakrishnap-nv in #1092
- fix(security): remove insecure SSL verification bypass in dataset downloaders by @ramakrishnap-nv in #1108
- Latency reductions for concurrent mode by @srib in #1083
- Add CTest labels for selective C++ test execution by @ramakrishnap-nv in #1102
- Improve developer skill with Python bindings, contribution workflow, and agent rules by @ramakrishnap-nv in #1106
- fix: add retry logic and error handling to dataset download scripts by @ramakrishnap-nv in #1116
- Update build and test skills by @mlubin in #1127
- ci: bump C++ test timeout from 40m to 50m by @ramakrishnap-nv in #1130
- docs: add entry points for more AI coding agents (Copilot, Cline, Windsurf, Jules, Aider) by @ramakrishnap-nv in #1129
- Conditional build for remote execution by @nguidotti in #1128
- Mark L1 tests as disabled by @mlubin in #1126
- Rename .cursor to .agents for codex support by @hlinsen in #1124
- docs: replace routing notebook with Python example and drop notebook support by @ramakrishnap-nv in #1125
- Improve C++ error handling, resource cleanup, and API return checks by @ramakrishnap-nv in #1089
- ci(images): bump docker CUDA to 13.1.0 and Python to 3.14.1 by @ramakrishnap-nv in #1123
- ci: assign benchmarks/ to engine codeowners by @ramakrishnap-nv in #1142
- add a scriptlet to put cuopt_grpc_server on the default path by @tmckayus in #1100
- ci: refine CodeRabbit review guide to match cuOpt idioms by @ramakrishnap-nv in #1139
- build: make docs build opt-in from build.sh by @ramakrishnap-nv in #1145
- Add QCMATRIX: parsing and quadratic-constraint model by @yuwenchen95 in #1105
- Replace custom span with std::span by @mlubin in #1164
- skill-evolution: scoped removal and references/ size escape hatch by @ramakrishnap-nv in #1160
- skill-evolution: add writing style guidance by @ramakrishnap-nv in #1159
- skill-evolution: drop inline provenance markers by @ramakrishnap-nv in #1161
- skill-evolution: add thrash-before-landing trigger by @ramakrishnap-nv in #1162
- Add initial skill evaluation dataset for cuopt-developer by @ramakrishnap-nv in #1167
- ci(pr): exclude skills//evals/ from test-trigger filters by @ramakrishnap-nv in #1170
- Add flaky test detection, retry, crash isolation, and nightly reporting by @ramakrishnap-nv in #1098
- skill-evolution: collapse three-phase model to single workflow by @ramakrishnap-nv in #1163
- mps_parser: switch ptr+size setters to std::span on mps_data_model_t by @mlubin in #1171
- ci(pr): skip build/test jobs for ci/docker-only changes by @ramakrishnap-nv in #1158
- Add skill evaluation dataset for cuopt-installation-developer by @ramakrishnap-nv in #1169
- Strip skill-evolution HTML comment markers from SKILL.md files by @ramakrishnap-nv in #1174
- Add skill evaluation dataset for cuopt-lp-milp-api-python by @ramakrishnap-nv in #1172
- ci: forward CUOPT_SLACK_MENTION_ID secret to nightly-summary by @ramakrishnap-nv in #1182
- Unified pseudocost object for the regular and deterministic mode by @nguidotti in #1020
- ci(nightly): set fail-fast: false on the build matrix by @ramakrishnap-nv in #1186
- Combine formulation and API skills into numerical-optimization skill family by @ramakrishnap-nv in #1183
- ci: format CUOPT_SLACK_MENTION_ID as subteam when ID starts with S by @ramakrishnap-nv in #1187
- ci(thirdparty-pulp): skip test_numpy_float in nightly cuOpt run by @ramakrishnap-nv in #1190
- Unified threading model in MIP solver by @nguidotti in #1099
- Improve cuopt-developer skill content and sibling-skill routing by @ramakrishnap-nv in #1176
- Combine installation user skills into cuopt-install by @ramakrishnap-nv in #1189
- Remove installation restrictions from AGENTS.md by @mlubin in #1200
- fix(ci): resolve all zizmor findings and add zizmor pre-commit checks by @gforsyth in #1181
- ci: surface crashed-test failures and add per-step summaries (cpp, python, thirdparty) by @ramakrishnap-nv in #1191
- evals: add eval suite for cuopt-install skill by @ramakrishnap-nv in #1205
- Run CPUFJ bursts at the root by @aliceb-nv in #1179
- Disable flaky swath1 incumbent callback tests by @mlubin in #1208
- Reduce memory footprint of cuPDLPx by @Bubullzz in #1153
- Minimize Ubuntu Boost dependencies by @bdice in #1165
- Require CMake 4.0 by @KyleFromNVIDIA in #1210
- fix NodeInfo assert message by @aycsi in #1218
- ci: split build.yaml concurrency group by build_type by @ramakrishnap-nv in #1211
- Build and test with CUDA 13.2.0 by @bdice in #1198
- Skip optionally the cost matrix validation check by @hlinsen in #1217
- skill: tighten PR-description and CI-authoring guidance for agents by @ramakrishnap-nv in #1224
- CI: suppress shell:S4830 false positive and scope GHA permissions to job level by @ramakrishnap-nv in #1229
- sonarqube: auto-detect newest CUDA env file per branch by @ramakrishnap-nv in #1236
- Revert temporary CUDA 13.2 branch changes by @bdice in #1238
- Reduce QP overheads by @rg20 in #1140
- skills: add NVIDIA-signed skill cards and signatures (partial set) by @ramakrishnap-nv in #1249
- Deprecate LP batch solve across Python, server, and docs by @anandhkb in #915
- Update lp testing by @Iroy30 in #1110
- ci: add NVSkills CI request workflow by @ramakrishnap-nv in #1243
- Declare defaulted move ops noexcept (SonarQube BLOCKER cpp:S5018) by @ramakrishnap-nv in #1227
- Dual simplex performance improvements by @chris-maes in #1043
- Add new solver setting CUOPT_MIP_PROBING and separate it from presolve by @akifcorduk in #1257
- Replaced SpMV with SpMVOp in PDHG for double precision by @Bubullzz in #1226
- Add
node_limitsetting for MIPs by @nguidotti in #1234 - Fix version failure in check style for skills by @ramakrishnap-nv in #1271
- Main merge release/26.06.01 by @ramakrishnap-nv in #1273
- ci: fix mangled python image tag on release/26.06 by @ramakrishnap-nv in #1269
- Make mip_node_t destructor exception-safe (SonarQube CRIT BUG cpp:S1048) by @ramakrishnap-nv in #1230
- Fix MAJOR SonarQube bugs: mps_parser signed/unsigned compare and example init by @ramakrishnap-nv in #1235
- Follow-up for LP format by @Iroy30 in #1251
- Migrates concurrent root LP to OpenMP by @nguidotti in #1291
- build gRPC against OpenSSL 3 by @tmckayus in #1188
- Main merge release/26.06 03 by @ramakrishnap-nv in #1296
- Fix skill-validation failures across all skills by @ramakrishnap-nv in #1287
- io: dlopen libbz2 by versioned SONAME, not unversioned symlink by @ramakrishnap-nv in #1297
- add mip start attribute by @Iroy30 in #1305
- skills: rename resources/ to references/ by @ramakrishnap-nv in #1301
- skills: add evals/evals.json smoke suite (group A) by @ramakrishnap-nv in #1308
- skills: add evals/evals.json smoke suite by @ramakrishnap-nv in #1302
- add code generation for grpc boilerplate conversions by @tmckayus in #1107
- Detect when MIP objectives must move in discrete steps. Tighten the dual bound using this info. by @chris-maes in #1239
- Main merge release/26.06 05 by @ramakrishnap-nv in #1318
- skills/cuopt-install:Add eval by @ramakrishnap-nv in #1324
- skills/cuopt-numerical-optimization-api-c: Add eval by @ramakrishnap-nv in #1327
- Rename routing-formulation to cuopt-routing-formulation by @ramakrishnap-nv in #1329
- Rename numerical-optimization-formulation to cuopt-numerical-optimization-formulation by @ramakrishnap-nv in #1328
- skills/cuopt-server-common: Add eval by @ramakrishnap-nv in #1325
- Rename skill-evolution to cuopt-skill-evolution by @ramakrishnap-nv in #1330
- skills/cuopt-server-api-python: update with benchmark details by @ramakrishnap-nv in #1334
- skills/cuopt-numerical-optimization-api-python: update with benchmark details by @ramakrishnap-nv in #1332
- skills/cuopt-routing-api-python: update with benchmark details by @ramakrishnap-nv in #1333
- skills/cuopt-user-rules: update with benchmark details by @ramakrishnap-nv in #1335
- Improve TSP with different vehicle start/end locations by @hlinsen in #1254
- skills/cuopt-numerical-optimization-api-cli: update with benchmark details by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1331
- skills/cuopt-skill-evolution: add eval by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1337
- skip CuPy 14.1.0 by @jameslamb in https://github.com/NVIDIA/cuopt/pull/1322
- skills: prep for nvidia/skills catalog onboarding by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1310
- B&B with Local Heaps by @nguidotti in https://github.com/NVIDIA/cuopt/pull/1149
- Main merge release/26.06 11 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1360
- fix(ci): fix configuration for breaking change notification workflow by @jameslamb in https://github.com/NVIDIA/cuopt/pull/1356
- Add ability to influence the objective gap for SOCP problems by @chris-maes in https://github.com/NVIDIA/cuopt/pull/1357
- Bump libcudss version to 0.8 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1365
- Main merge release/26.06 12 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1367
- Add support for general convex quadratic constraints (x^T Q x + c^T x… by @chris-maes in https://github.com/NVIDIA/cuopt/pull/1361
- Ceil cuDSS to >=0.7,<0.8 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1371
- Main merge release/26.06 14 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1374
- Add cuopt-multi-objective-exploration skill (Pareto frontier) by @cafzal in https://github.com/NVIDIA/cuopt/pull/1355
- Remove CUDA whole compilation programming model violations by @robertmaynard in https://github.com/NVIDIA/cuopt/pull/1347
- ci: nudge multi-objective skill to trigger eval by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1392
- Note dual/sensitivity support per problem type in formulation skill by @cafzal in https://github.com/NVIDIA/cuopt/pull/1393
- Expose diving hyper parameters by @nguidotti in https://github.com/NVIDIA/cuopt/pull/1364
- Fix adj_list check bug and improve clique cuts by @akifcorduk in https://github.com/NVIDIA/cuopt/pull/1386
- evals: add benchmark evals for cuopt-developer skill by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1399
- Use LP format reader throughout unit tests by @mlubin in https://github.com/NVIDIA/cuopt/pull/1410
- Correct dual-value scope to LP/QP in numerical-optimization API skills by @cafzal in https://github.com/NVIDIA/cuopt/pull/1408
- evals: add 3 C API evals for cuopt-numerical-optimization-api-c skill by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1417
- refactor: switch to
rapids-artifact-namefor consistent artifact naming by @gforsyth in https://github.com/NVIDIA/cuopt/pull/1411 - evals: add 3 Python API evals for cuopt-numerical-optimization-api-python skill by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1418
- ci: update nightly run branch from release/26.06 to release/26.08 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1424
- Vector length diving + Farkas diving by @nguidotti in https://github.com/NVIDIA/cuopt/pull/1401
- Remove pinned host memory from barrier solver by @rg20 in https://github.com/NVIDIA/cuopt/pull/1321
- Read epsilon-constraint duals as frontier slope / exchange rate in multi-objective skill by @cafzal in https://github.com/NVIDIA/cuopt/pull/1406
- Build and test with CUDA 13.3.0 by @bdice in https://github.com/NVIDIA/cuopt/pull/1409
- skills(multi-objective): add blank line after frontmatter to enable skill signing by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1433
- evals: add 3 formulation evals for cuopt-numerical-optimization-formulation skill by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1398
- skills: allow user-space env setup; refuse only sudo/system-level ops by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1448
- Correct quadratic-constraint claims in formulation skill by @cafzal in https://github.com/NVIDIA/cuopt/pull/1407
- Use main shared-workflows branch by @bdice in https://github.com/NVIDIA/cuopt/pull/1455
- ci: disable pulp test_infeasible_2 pending fix in #1115 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1454
- ci: trigger numerical optimization skill evals by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1453
- Restore resource_cast memory limit check by @bdice in https://github.com/NVIDIA/cuopt/pull/1231
- ci: reduce wheel-tests-cuopt-server matrix to 1 job per CUDA major by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1457
- Add latent-objective recognition eval to multi-objective skill by @cafzal in https://github.com/NVIDIA/cuopt/pull/1442
- Update CuPy and NumPy dependency specs by @bdice in https://github.com/NVIDIA/cuopt/pull/1456
- skills(multi-objective): trigger re-eval after adding eval-005 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1460
- ci: remove dataset downloads from Python test scripts by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1458
- chore(ci): exclude NVSkills-generated files from trailing-whitespace hook by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1465
- Refactor: mathematical_optimization namespace by @mlubin in https://github.com/NVIDIA/cuopt/pull/1446
- build(deps): bump msgpack from 1.1.2 to 1.2.1 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1464
- Post sticky PR comment summarizing CI test job failures by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1412
- skills(cuopt-user-rules): update for mathematical_optimization namespace refactor by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1480
- skills(cuopt-numerical-optimization-formulation): update for mathematical_optimization namespace refactor by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1479
- skills(cuopt-numerical-optimization-api-c): update for mathematical_optimization namespace refactor by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1478
- skills(cuopt-developer): update for mathematical_optimization namespace refactor by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1475
- skills(cuopt-multi-objective-exploration): update for mathematical_optimization namespace refactor by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1477
- skills(cuopt-install): update for mathematical_optimization namespace refactor by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1476
- MIP log cleanup by @nguidotti in https://github.com/NVIDIA/cuopt/pull/1402
- Zero Half(Odd-Cycle) cuts by @akifcorduk in https://github.com/NVIDIA/cuopt/pull/1428
- ci: remove lean CI matrix from pr.yaml by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1474
- skills: remove redundant concept-only skills by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1487
- Guard CuPy CTK extra for wheel metadata by @bdice in https://github.com/NVIDIA/cuopt/pull/1469
- refactor: promote shared primitives to mathematical_optimization by @mlubin in https://github.com/NVIDIA/cuopt/pull/1481
- test: clean up gRPC server process groups by @mlubin in https://github.com/NVIDIA/cuopt/pull/1492
- Improve cuopt-numerical-optimization-api-cli by @mlubin in https://github.com/NVIDIA/cuopt/pull/1495
- ci(test): enable pytest-xdist for cuopt Python tests by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1486
- Papilo primal/dual crush by @aliceb-nv in https://github.com/NVIDIA/cuopt/pull/1104
- Disable coverage in cuOpt.jl tests by @mlubin in https://github.com/NVIDIA/cuopt/pull/1504
- Update conventions for container indexing and casting by @mlubin in https://github.com/NVIDIA/cuopt/pull/1505
- feat(docker): add UBI10 container image for FIPS compliance by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1499
- fix(docker): use Docker Hub for UBI10 CUDA base images by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1511
- fix(ci): restrict UBI10 build, test, and manifest to CUDA 13.x only by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1515
- fix(grpc): drain all remaining log lines at job completion in StreamLogs by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1508
- ci: add multi-GPU (NCCL) cpp test job on 2-GPU runner by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1519
- style(cpp): drop gratuitous static_cast<size_t> on container subscripts by @mlubin in https://github.com/NVIDIA/cuopt/pull/1506
- Constrain server data file paths by @fallintoplace in https://github.com/NVIDIA/cuopt/pull/1423
- ci(test): fix grpc server GPU-memory leak and run cuopt tests in parallel by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1512
- Update RAPIDS.cmake to log source of rapids-cmake by @arhag23 in https://github.com/NVIDIA/cuopt/pull/1521
- remove 'cuda-python' dependency, test against oldest numba and numpy by @jameslamb in https://github.com/NVIDIA/cuopt/pull/1520
- Empty commit to trigger new builds due to RAFT 3052 ABI breakage by @divyegala in https://github.com/NVIDIA/cuopt/pull/1542
- make selection of CPU or GPU memory for problem automatic in C api by @tmckayus in https://github.com/NVIDIA/cuopt/pull/1522
- Accept numpy and pandas inputs in routing Python API by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1546
- Add a log-once macro by @aliceb-nv in https://github.com/NVIDIA/cuopt/pull/1545
- Removed
b_bartest for Gomory Cuts by @nguidotti in https://github.com/NVIDIA/cuopt/pull/1544 - Python grpc async api allow arguments for TLS by @tmckayus in https://github.com/NVIDIA/cuopt/pull/1525
- cuopt-skill-evolution: add low-maintenance/fail-loud design rule by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1561
- Clamp crushed solutions to dual-reduced bounds by @aliceb-nv in https://github.com/NVIDIA/cuopt/pull/1568
- Increase cuSparse version requierment for SpMVOp from 12.7 to 12.8 by @Bubullzz in https://github.com/NVIDIA/cuopt/pull/1576
- Conflict Graph Improvements: Use non-binary rows for and add probing implications to CG by @akifcorduk in https://github.com/NVIDIA/cuopt/pull/1569
- ci: enable codecov for Python test coverage by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1575
- Recursive RINS by @nguidotti in https://github.com/NVIDIA/cuopt/pull/1482
- Fast MPS parser for free-format MPS files by @aliceb-nv in https://github.com/NVIDIA/cuopt/pull/1429
- Routing Phase 3: export the recorded problem to a host representation by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1583
- change semantics of problem construction in cuOptReadProblem by @tmckayus in https://github.com/NVIDIA/cuopt/pull/1559
- Make cuopt.routing importable without a GPU by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1591
- Add front-completion workflow to cuopt-multi-objective-exploration skill by @cafzal in https://github.com/NVIDIA/cuopt/pull/1550
- fix(deps): add cufile to test dependencies for cuda12 by @gforsyth in https://github.com/NVIDIA/cuopt/pull/1553
- fix(build): pin RAPIDS_BRANCH to branch-26.08 by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1599
- tests: retire correctness/regression tests covered by C++ gtests by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1461
- fix(docker): patch UBI10 High CVEs — dnf update + remove vim by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1602
- extend getters on C API by @tmckayus in https://github.com/NVIDIA/cuopt/pull/1549
- fix(docker): patch High CVEs in UBI10 and Ubuntu container images by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1611
- developer skills: size PARALLEL_LEVEL from cgroup limits in containers by @mlubin in https://github.com/NVIDIA/cuopt/pull/1614
- Print logs when exception is caught by @akifcorduk in https://github.com/NVIDIA/cuopt/pull/1590
- fix(quality): resolve SonarQube S3490 and S1186 critical findings by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1609
- docs(skills): add GitHub etiquette rules and evals to cuopt-developer by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1619
- refactor(tests): link internal tests against cuopt_static by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1581
- enforce 'yamllint' checks by @jameslamb in https://github.com/NVIDIA/cuopt/pull/1613
- test routing null matrix validation by @aycsi in https://github.com/NVIDIA/cuopt/pull/1220
- fix(security): resolve SonarQube critical/high/blocker security findings by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1608
- fix(docker): don't override python3 alternative in UBI10 image by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1634
- test(mip): Update incumbent callback API test to use a bit more complex problem by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1649
- Include Q matrix in Ruiz scale computations by @rg20 in https://github.com/NVIDIA/cuopt/pull/1643
- skills(cuopt-multi-objective-exploration): trigger CI eval by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1642
- Reduce concurrent LP host memory footprint by @hlinsen in https://github.com/NVIDIA/cuopt/pull/1640
- Update to 26.10.00 by @gforsyth in https://github.com/NVIDIA/cuopt/pull/1666
- ci: sync skill-card.md versions in update-version flow by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1669
- fix: add statuses: read permission to request-nvskills-ci workflow by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1681
- docs: fix Vale heading case errors in gRPC async client docs by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1682
- Symbol visibility controls and exports (remove-internal approach) by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1625
- ensure nightly builds always produce new packages by @jameslamb in https://github.com/NVIDIA/cuopt/pull/1661
- ci: update NVSkills CI request template and add require-nvskills-status workflow by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1690
- chore: trigger NVSkills CI for cuopt-multi-objective-exploration by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1673
- chore: trigger NVSkills CI for cuopt-numerical-optimization-formulation by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1675
- chore: trigger NVSkills CI for cuopt-numerical-optimization-api by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1674
- Add iterative refinement to the GPU ADAT solve path by @rg20 in https://github.com/NVIDIA/cuopt/pull/1680
- Update to rapids-logger 0.3 by @bdice in https://github.com/NVIDIA/cuopt/pull/1659
- ci: make pr-test-summary and NVSkills CI checks non-blocking by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1696
- chore: trigger NVSkills CI for cuopt-routing-api-python by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1676
- chore: trigger NVSkills CI for cuopt-user-rules by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1679
- Add a hyperparameter that controls bounding of free variables by @yuwenchen95 in https://github.com/NVIDIA/cuopt/pull/1713
- Print total setup time by @yuwenchen95 in https://github.com/NVIDIA/cuopt/pull/1714
- make 'vale' check optional locally by @jameslamb in https://github.com/NVIDIA/cuopt/pull/1708
- fix: exec the binary from console-script wrappers instead of spawning it by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1723
- Update cpp/benchmarks codeowners to cuopt-solver-codeowners by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1742
- Release pslp presolve memory by @hlinsen in https://github.com/NVIDIA/cuopt/pull/1735
- wheels: avoid vendoring libnvJitLink by @jameslamb in https://github.com/NVIDIA/cuopt/pull/1741
- Build cuopt as an abi3 wheel using the CPython Limited API by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1731
- Routing over gRPC: VRP server + compiled C++/Cython client by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1597
- test: isolate library wheel smoke test by @bdice in https://github.com/NVIDIA/cuopt/pull/1624
- Build conda python packages independently of the Python version by @ramakrishnap-nv in https://github.com/NVIDIA/cuopt/pull/1744
- Mod-2 cut separator for zero-half cuts by @akifcorduk in https://github.com/NVIDIA/cuopt/pull/1726
- Revert presolve tolerance by @akifcorduk in https://github.com/NVIDIA/cuopt/pull/1757
- Block Bounded Value Elimination presolving pass for binary problems by @aliceb-nv in https://github.com/NVIDIA/cuopt/pull/1683
- Add a binary 2opt move fed from the probing cache into CPUFJ by @aliceb-nv in https://github.com/NVIDIA/cuopt/pull/1738
New Contributors
- @cwilkinson76 made their first contribution in #432
- @rockhowse made their first contribution in #583
- @mlubin made their first contribution in #743
- @aschilling-nv made their first contribution in #756
- @adityasinghz made their first contribution in #623
- @mmccarty made their first contribution in #785
- @mtanneau made their first contribution in #758
- @jeis4wpi made their first contribution in #761
- @aamijar made their first contribution in #865
- @trxcllnt made their first contribution in #848
- @anandhkb made their first contribution in #914
- @np96 made their first contribution in #1095
- @srib made their first contribution in #1083
- @Bubullzz made their first contribution in #1153
- @aycsi made their first contribution in #1218
- @jolorunyomi made their first contribution in https://github.com/NVIDIA/cuopt/pull/1259
- @cafzal made their first contribution in https://github.com/NVIDIA/cuopt/pull/1355
- @Sylendran95 made their first contribution in #1387
- @jackthepunished made their first contribution in #1389
- @fallintoplace made their first contribution in https://github.com/NVIDIA/cuopt/pull/1423
- @arhag23 made their first contribution in https://github.com/NVIDIA/cuopt/pull/1521
- @divyegala made their first contribution in https://github.com/NVIDIA/cuopt/pull/1542
Full Changelog: v25.12.00a...v-kitmaker-poc-test0