This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements. This version of CVXPY supports Python 3.8 through 3.12. While working on the next release, we continue to officially support
CVXPY 1.5 and 1.4.
This release may **not** be compatible with NumPy 2.0.
ECOS deprecation
CVXPY has used ECOS as the default solver for many years; however, it has known issues with performance and numerical stability in edge cases. Recently, a new solver, Clarabel, that improves the algorithm and implementation of ECOS has been under development.
In this release, CVXPY uses Clarabel instead of ECOS for all categories of problems where ECOS was previously the default.
In 1.6, we plan to no longer install ECOS as a CVXPY dependency. We have no plans to remove support for calling ECOS as a solver.
We encourage you to try and use Clarabel instead, but if you're dependent on ECOS's exact behavior please explicitly specify it as a solver and as a dependency for your project.
Features and bug fixes
- Major updates to the documentation, adding a number of new sections to the User Guide and breaking up the monolithic Advanced features page [Many PRs] Transurgeon
- Added `.curvatures` containing all curvatures an expression is compatible with 1540 sunnygurm
- Variable bounds can be specified with `cp.Variable(bound=(lower, upper))` and are directly passed to the solver when helpful. `lower` and `upper` can be either a NumPy array or floating point number. 2234, 2321 Paulnkk, SteveDiamond
- Constants can be named by writing `cp.Constant(name='...')` 2335 SteveDiamond
- Added a new atom, `vdot`, that has the same behavior as `scalar_product` 2371 Transurgeon
- CVXPY runs in the next PyOdide release via wasm 2363, 2382 phschiele
- Added or-tools 9.9 support 2316 mlubin
- Major rewrite to the PDLP interface 2252 mlubin
- Dropped MOSEK <= 9 support and upgraded the MOSEK integration code 2326 aszekMosek
- Improved HIGHS solver stats 2333 bstellato
- Removes pybind11 as runtime dep 2334 phschiele
- Quadratic objectives in NAG solver 2339 chasilvester
- DAQP solver interface 2312 enzbus
- Adds `solver_verbose` 2354 hailiangliu89
- ECOS deprecation progress 2388, 2391 PTNobel Transurgeon
- Improved type annotations 2304 sunnygurm
- Adds `save_file` to COPT interface 2393 wujianjack
- Setup dependabot 2369 tschm
- Many many infrastructure PRs phschiele
- Fixes doc deploy 2331 PTNobel
- Modernized build-system and metadata 2276 2277 mkoeppe
- Uses oldest-supported-numpy 2291 enzbus
- Fix keep dims for min atom 2431 allenlawrence94
- Reduce memory consumption for `sum(list)` 2428 phschiele
- Fix convolve when used with parameters 2427 SteveDiamond
- Fix nuclear norm gradient for non-square inputs 2426 SteveDiamond
- Improve XPRESS interface 2425 2288 phschiele
- Fix DQCP bugs with parameters 2424 SteveDiamond
- Warning for creating constants from nested lists 2423 phschiele
- Preserve sign in minimum and maximum 2420 zacharyweiss
- Resolves deprecation warnings in the SDPA interface 2350 usamamuneeb
- Starts NumPy 2.0 support 2319 phschiele
- Fixes counting of constraints 2303 PTNobel