CVXPY 1.5
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
.curvaturescontaining 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.loweranduppercan 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 asscalar_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_fileto 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