Releases: cvxpy/cvxpy
v1.5.1
What's Changed
- #2438 Fixes QP canonicalization (@phschiele)
- #2436 Fix link in README.md (@StefRe)
- #2435 Fix for issue with quad_over_lin parameters (@SteveDiamond)
- #2441 Adds back DGP + DPP quad_over_lin (@phschiele)
Full Changelog: v1.5.0...v1.5.1
v1.4.4
What's Changed
- #2411 value.A is deprecated (@chofchof)
- #2420 Preserve expression sign in canonicalization of minimum and maximum (@zacharyweiss)
- #2423 Adds warning for constants from nested lists (@phschiele)
- #2425 New XPRESS API (@phschiele)
- #2427 Fix convolve bug (@SteveDiamond)
- #2424 Fix DQCP bugs (@SteveDiamond)
- #2426 Fix nuclear norm gradient for non-square inputs (@SteveDiamond)
- #2428 Reduce memory consumption for sum(list) (@phschiele)
- #2431 Fix keep dims for min atom (@allenlawrence94)
- #2332 Implements inplace mutation error (@PTNobel)
- #2432 Updates notable contributors (@PTNobel)
- #2438 Fixes QP canonicalization (@phschiele)
- #2436 Fix link in README.md (@StefRe)
- #2435 Fix for issue with quad_over_lin parameters (@SteveDiamond)
- #2441 Adds back DGP + DPP quad_over_lin (@phschiele)
Full Changelog: v1.4.3...v1.4.4
v1.5.0
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
.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
andupper
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 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_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
v1.3.4
What's Changed
- #2351 Fix invalid escape sequences in docstrings (@befelix)
- #2338 Improving the Gurobi integration by supporting further error codes (@jmarecek)
- #2358 Removes deprecated scipy_wrapper.py (@PTNobel)
- #2356 Redirect model output to Python instead of Terminal (@anmolsahoo25)
New Contributors
Full Changelog: v1.3.3...v1.3.4
v1.4.3
This is a patch release for 1.4. The patch includes a variety of fixes:
What's Changed
- #2351 Fix invalid escape sequences in docstrings (@befelix)
- #2338 Improving the Gurobi integration by supporting further error codes (@jmarecek)
- #2358 Removes deprecated scipy_wrapper.py (@PTNobel)
- #2356 Redirect model output to Python instead of Terminal (@anmolsahoo25)
- #2406 [Bug] Parametrized quad form broken when values are zero (@phschiele)
Full Changelog: v1.4.2...v1.4.3
v1.4.2
This is a patch release for 1.4. The patch includes a variety of fixes:
SCIP return solution if [total]nodelimit hit (#2279)
Update swig autogenerated files to swig 4.1.1 (#2273)
Update contributing docs to reflect usage of ruff over flake8/isort (#2302)
Change some O(n) lookups in scip_conif.py to O(1) (#2313)
Avoid sparse matrix multiply for identity matrix (#2315)
Restore Mosek 9 compatibility (#2325)
Reformatting the installation page (#2268)
Updating NAG website links in doc (#2299)
Fix Gurobi interface issues (#2300)
Use new NumPy API (#2319)
Fixing links to cvx_short_course (#2264)
v1.4.1
This is a patch release for 1.4. The patch includes fixes from several contributors:
@goulart-paul Change conic solver preference order (#2259)
@maxschaller Include use_quad_obj in cache (#2262)
v1.4.0
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, and is our first release that supports Python 3.12. While working on the next release, we continue to officially support CVXPY 1.3 and 1.4.
New features
- New atom:
convolve
- New atom:
mean
- New atom:
outer
- New atom:
ptp
- New atom:
std
- New atom:
var
- New atom:
vec_to_upper_tri
- Adds methods to CVXPY expressions that are found on NumPy ndarrays such as
.sum()
,.max()
, and.mean()
- New solver interface:
PIQP
- Adds SDP support to the Clarabel interface
- Added support for OR-Tools 9.7
- Removed support for OR-Tools 9.4
PowerConeND
now supports extracting its dual variablesreshape
now supports using-1
as a dimension, with the same meaning it has in NumPy- Indexing CVXPY expressions with floats now raises an appropriate error
- Clearer error messages for a number of common errors
- The
perspective
atom now supportss=0
- Performance improvements in the SCIPY backend
- Performance improvements in canonicalizing parameterized QPs
- Performance improvements for quadratic forms with sparse matrices
- Greater support for static typing
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 1.5, CVXPY plans to start using Clarabel instead of ECOS by default for some categories of problems. 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. As part of this transition, in 1.4 CVXPY will raise a warning whenever ECOS is called by default. 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.
conv
deprecation
The CVXPY atom conv
is inconsistent with NumPy's convolve
functions. We are deprecating it, but have no plans to remove it in the short term. We encourage all users to use the CVXPY atom convolve
instead.
NonPos
deprecation
The NonPos
cone uses the opposite dual variable sign convention as the rest of the CVXPY cones and a constraint of NonPos(expr)
is the same as a constraint on NonNeg(-expr)
. We are deprecating NonPos
, but have no plans to remove it in the short term. We encourage users to switch to using NonNeg
.
Contributors
This release would not have been possible without the contributions of many CVXPY users and developers. Across 29 contributors and 116 PRs, we would like to thank the following people for their contributions to this release (in alphabetical order):
- @akshayka | #2105
- @allenlawrence94 | #2080, #2103
- @alxhslm | #2046
- @aryamanjeendgar | #2171, #2192, #2204, #2241
- @aszekMosek | #2017, #2029
- @bkurtz | #1821
- @carlosgmartin | #2246, #2250
- @cbonet | #2173, #2175
- @dcajasn | #2131, #2152
- @goulart-paul | #2108
- @h-vetinari | #1998
- @jlchen0 | #2028
- @michaels0m | #2085
- @mkoeppe | #2118
- @mlubin | #2169, #2251
- @Paulnkk | #2069, #2073, #2078, #2084, #2086, #2096, #2117, #2119, #2137, #2144, #2179
- @phschiele | #2008, #2009, #2049, #2053, #2054, #2061, #2063, #2088, #2094, #2113, #2120, #2127, #2141, #2146, #2156, #2161, #2164, #2185, #2196, #2206, #2219, #2220, #2221, #2245, #2247, #2249, #2253
- @pragmaticTNT | #2057
- @PTNobel | #2058, #2081, #2172, #2188, #2207, #2238, #2248, #2254, #2255
- @r-barnes | #1697
- @rileyjmurray | #2001, #2123, #2125, #2139, #2155
- @RSchwan | #2190
- @samuel-adekunle | #2016
- @sdementen | #2056
- @SteveDiamond | #2007, #2022, #2041, #2043, #2047, #2060, #2067, #2071, #2079, #2110, #2111, #2126, #2130, #2159, #2160, #2183, #2225, #2226, #2232, #2233, #2244
- @Transurgeon | #2044, #2091, #2186, #2213, #2215, #2223, #2224, #2230, #2239
- @usamamuneeb | #2097, #2116, #2147
- @wfan19 | #2157
- @wujianjack | #2134
Special shoutout to our Google Summer of Code interns @aryamanjeendgar and @Transurgeon!
v1.2.5
This is a patch release for 1.2. The patch includes fixes from many contributors:
- @SteveDiamond Fix conv and add convolve (#2047)
- @allenlawrence94 fix: scipy time limit raises SolverError (#2080)
- @Paulnkk Fix scip timelimit no solution (#2084)
- @phschiele Adds devcontainer support (#2088)
- @dcajasn Fixes to PowCone3D and updates to test_conic_solvers.py (#2131)
- @Paulnkk Fix rare bugs in curvature calculation: identity matrices and nondeterministic starting vectors in eigsh (#2086)
- @SteveDiamond Fix bug with calling Mosek simplex solver (#2126)
- @rileyjmurray CBC interface: add ability to configure the underlying CLP solver (#1821)
- @SteveDiamond Remove github banner (#2160)
- @SteveDiamond Update scipy_wrapper (#2159)
v1.1.24
This is a patch release for 1.1. The patch includes fixes from many contributors:
- @SteveDiamond Fix conv and add convolve (#2047)
- @allenlawrence94 fix: scipy time limit raises SolverError (#2080)
- @Paulnkk Fix scip timelimit no solution (#2084)
- @phschiele Adds devcontainer support (#2088)
- @dcajasn Fixes to PowCone3D and updates to test_conic_solvers.py (#2131)
- @Paulnkk Fix rare bugs in curvature calculation: identity matrices and nondeterministic starting vectors in eigsh (#2086)
- @SteveDiamond Fix bug with calling Mosek simplex solver (#2126)
- @rileyjmurray CBC interface: add ability to configure the underlying CLP solver (#1821)
- @SteveDiamond Remove github banner (#2160)
- @SteveDiamond Update scipy_wrapper (#2159)