NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1447 most downloaded on PyPI
A domain-specific language for modeling convex optimization problems in Python.
Last release 15 days ago
19 Sep 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 55 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
12 years old
149 releases · first in 2014
This new release totaled 29 PRs from 12 contributors.
This new release totaled 29 PRs from 12 contributors.
One column per quarter.
This patch release contains bug fixes and follow-up improvements for CVXPY 1.9.
This patch release contains bug fixes and follow-up improvements for CVXPY 1.9.
This new release totaled 34 PRs from 7 contributors.
This patch release contains bug fixes and follow-up improvements for CVXPY 1.9.
This patch release contains bug fixes and follow-up improvements for CVXPY 1.9.
This new release totaled 8 PRs from 3 contributors.
This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements.
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.11 through 3.14. We will support CVXPY 1.9 with bugfixes while developing the 1.10 release. CVXPY 1.8 and older are no longer supported.
This release introduces Disciplined Nonlinear Programming (DNLP), a ruleset that extends CVXPY beyond convex optimization to a broad class of nonlinear problems. DNLP canonicalizes nonsmooth functions in the same way as DCP, but allows for general smooth functions to be used otherwise.
To use DNLP, pass nlp=True to problem.solve(...). Supported NLP solvers include IPOPT, KNITRO, UNO, and COPT. See the DNLP tutorial for more details and examples.
Variable bounds can now be specified with expressions involving parameters, and also support sparse bound arrays (when the variable itself is sparse). Many solvers now natively use variable bounds when they are provided.
quad_form(x, P) with a parametric PSD matrix P is now DPP-compliant on solvers that natively support quadratic objectives, allowing efficient re-solves when only P's value changes.
a ** x now works for positive constant a (canonicalized via exp(x * log(a)))axis argument support for sum_largest and sum_smallestaxis support generalized across AxisAtom canonicalizers (max, norm_inf, log_sum_exp, cummax, ...)Parameter values may now be ±infThis new release totaled 124 PRs from 25 contributors.
This is a patch release with bugfixes and solver interface updates.
This is a patch release with bugfixes and solver interface updates.
This new release totaled 37 PRs from 6 contributors.
This new release totaled 7 PRs from 3 contributors.
| PR | Title | Type |
|---|---|---|
| #3093 | Fix IndexError with transformed parameters in parametric reshape | Bug fix |
| #3094 | Add KNITRO solver installation instructions to documentation | Docs |
| #3099 | Remove Google Analytics from documentation | Docs |
| #3113 | Use balanced tree for PowConeND to PowCone3D decomposition | Bug fix |
| #3114 | Add CVXPY Workshop 2026 website | Docs |
| #3115 | Add HiGHS and Moreau to related projects | Docs |
| #3116 | Fix cvxpy-base dependencies | Bug fix |
This new release totaled 7 PRs from 3 contributors.
This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements.
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.11 through 3.14. We will support CVXPY 1.8 with bugfixes while developing the 1.9 release. CVXPY 1.7 and older are no longer supported.
In this release we decided to adopt the minimum supported dependencies SPEC (Scientific Python Ecosystem Coordination). Notably, this means that we have dropped support for Python 3.10 and NumPy < 2.0.
This release introduces a new backend which can handle a very large number of parameters. To use the backend, please specify the argument canon_backend="COO" when solving a DPP problem.
CVXPY adds the open source solver HiGHS as its default mixed-integer linear programming (MILP) solver. HiGHS is a high performance serial and parallel solver for large scale sparse linear optimization problems developed by a team from the University of Edinburgh.
Four atoms, power, geo_mean, pnorm, and inv_prod now take a parameter approx that determines whether CVXPY canonicalizes the atom using many SOCs or one power cone. Feel free to set approx=False and report on whether it improves performance or accuracy!
CVXPY now supports logical boolean operations on boolean expressions via the cp.logic module. The new atoms are cp.logic.AND, cp.logic.OR, cp.logic.NOT, and cp.logic.XOR.
einsumstacknum_iters to Gurobi conic solver solution infoThis new release totaled 115 PRs from 35 contributors.
Patch notes 1.7.5 (from #3026 )
Patch notes 1.7.4 (from #3011 )
This is a micro patch release which fixes many bugs and updates to the documentation.
| Link | Type | 1.7.x | Comment |
|---|---|---|---|
| #3005 | Bug Fix | ✅ | |
| #2993 | Tests | ✅ | |
| #2989 | Solver Interface | ✅ | |
| #2985 | Bug Fix | ✅ | |
| #2976 | Error messages | ✅ | |
| #2974 | Solver interface | ✅ | |
| #2983 | Solver interface | ✅ | |
| #2963 | Documentation | ✅ | |
| #2957 | Solver Interface | ✅ | |
| #2955 | Developer tools | ✅ | |
| #2951 | CVXPY(layers/gen) fix | ✅ | |
| #2950 | Revert | ✅ | |
| #2948 | Bug Fix | ✅ | |
| #2947 | Bug Fix | ✅ | |
| #2945 | Solver interface | ✅ |
This is a micro patch release which fixes many bugs and updates to the documentation.
This is a micro patch release which fixes many bugs and updates to the documentation.
| Link | Type | 1.7.x | Comment |
|---|---|---|---|
| #2901 | Version bump | ✅ | |
| #2913 | Bug Fix | ✅ | |
| #2914 | Docs | ✅ | |
| #2919 | Solver Interface | ✅ | |
| #2918 | Solver Interface | ✅ | |
| #2924 | Bug Fix | ✅ | |
| #2929 | Docs | ✅ | |
| #2933 | Bug Fix | ✅ | |
| #2938 | Docs | ✅ |
Special shoutout to new contributors: @thisisRMak and @ClayCampaigne !
This is a micro patch release which fixes many bugs and typos.
This is a micro patch release which fixes many bugs and typos.
| Link | Type | 1.7.x | Comment |
|---|---|---|---|
| #2869 | Docs | ✅ | |
| #2870 | Setup | ✅ | |
| #2872 | Bug Fix | ✅ | |
| #2878 | CI | ✅ | |
| #2882 | Bug Fix | ✅ | |
| #2886 | Docs | ✅ | |
| #2888 | Solver Interface | ✅ | |
| #2892 | Version Bump | ✅ | |
| #2894 | Docs | ✅ | |
| #2897 | Bug Fix | ✅ | |
| #2906 | Bug Fix | ✅ | |
| #2908 | Bug Fix | ✅ | |
| #2903 | Bug Fix | ✅ |
This is a micro patch release which fixes two bugs from the 1.7.0 release.
This is a micro patch release which fixes two bugs from the 1.7.0 release.
| Link | Type | 1.7.x | Comment |
|---|---|---|---|
| #2862 | Bug Fix | ✅ | |
| #2864 | Bug Fix | ✅ |
SciPy is deprecating the sparse matrix API in favor of sparse arrays. See the migration guide here.
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.9 through 3.13. While working on the next release, we continue to officially support CVXPY 1.6.
CVXPY begins supporting GPU solvers in this release. The following solvers are supported:
MPAX runs on a GPU device specified by the JAX environment. MPAX, cuOpt, and CuClarabel are new solver interfaces that can be used with CVXPY. SCS has a new backend based on cuDSS that can be used through the existing SCS interface.
SciPy is deprecating the sparse matrix API in favor of sparse arrays. See the migration guide here.
CVXPY 1.7 supports the new sparse array API but continues to support the sparse matrix API for backwards compatibility.
In CVXPY 1.6, we began raising warnings for the default reshape order being Fortran ('F'), which differs from NumPy's default order ('C'). We also mentioned that we would raise an error if the order was not specified in CVXPY 1.7, and switch the default order to 'C' in CVXPY 1.8. However, we have decided to postpone these changes to CVXPY 2.0, the next major release. We believe that raising errors could break existing code and cause confusion among users. We encourage users to continue explicitly specifying the order when using reshape, vec, and flatten atoms.
broadcast_totranspose(expr, axes)swapaxesmoveaxispermute_dimsThis new release totaled 84 PRs from 27 users.
Special shoutout to @PTNobel for leading the integration of GPU solver interfaces into CVXPY.
This is a micro patch release which fixes a few bugs.
This is a micro patch release which fixes a few bugs.
| Link | Type | 1.6.x | Comment |
|---|---|---|---|
| #2829 | Bug Fix | ✅ | |
| #2839 | Bug Fix | ✅ | |
| #2834 | Bug Fix | ✅ | |
| #2838 | Bug Fix | ✅ | |
| #2846 | Doc | ✅ |
.value with sparse leaves @PTNobelThis is a micro patch release which fixes a few bugs and updates solver interfaces.
This is a micro patch release which fixes a few bugs and updates solver interfaces.
| Link | Type | 1.6.x | Comment |
|---|---|---|---|
| #2805 | Bug Fix | ✅ | |
| #2798 | Bug Fix | ✅ | |
| #2797 | Interface | ✅ | |
| #2796 | Interface | ✅ |
This is a micro patch release which fixes a few bugs and updates solver interfaces.
This is a micro patch release which fixes a few bugs and updates solver interfaces.
| Link | Type | 1.6.x | Comment |
|---|---|---|---|
| #2785 | Interface | ✅ | |
| #2784 | Interface | ✅ | |
| #2778 | Bug Fix | ✅ | |
| #2769 | Interface | ✅ | |
| #2765 | Bug Fix | ✅ | |
| #2763 | Interface | ✅ | |
| #2760 | Bug Fix | ✅ | |
| #2756 | Bug Fix | ✅ |
This is a micro patch release which adds an interface for QOCO. Notably this release will allow cvxpygen to use the interface and integrate with qocog
This is a micro patch release which adds an interface for QOCO. Notably this release will allow cvxpygen to use the interface and integrate with qocogen.
| Link | Type | 1.6.x | Comment |
|---|---|---|---|
| #2745 | Interface | ✅ | |
| #2724 | Interface | ✅ | |
| #2719 | Interface | ✅ |
All three PRs are from @govindchari , author of QOCO.
This is a micro patch release which fixes two bugs.
This is a micro patch release which fixes two bugs.
| Link | Type | 1.6.x | Comment |
|---|---|---|---|
| #2745 | Bug | ✅ | |
| #2724 | Bug | ✅ |
This is a micro patch release which fixes two bugs and removes one warning.
This is a micro patch release which fixes two bugs and removes one warning.
| Link | Type | 1.6.x | Comment |
|---|---|---|---|
| #2737 | Bug | ✅ | |
| #2734 | Bug | ✅ | |
| #2726 | Warning | ✅ |
| Link | Type | 1.6.x | Comment |
| Link | Type | 1.6.x | Comment |
|---|---|---|---|
| #2630 | Interface update | ✅ | |
| #2634 | Bug | ✅ | Remove bound setter |
| #2635 | Bug | ✅ | |
| #2636 | Interface update | ✅ | ortools bump |
| #2691 | Docs | ✅ | |
| #2694 | Bug | ✅ | |
| #2695 | Type hints | ✅ | |
| #2697 | Bug | ✅ | Clarabel fix |
| #2702 | Bug | ✅ | |
| #2705 | Docs | ✅ | |
| #2711 | Docs | ✅ | |
| #2714 | Bug | ✅ | |
| #2690 | Dependency | ✅ |
This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements. Th
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.9 through 3.13. While working on the next release, we continue to officially support CVXPY 1.5.
CVXPY's default order for array manipulation atoms such as reshape, vec and flatten, is Fortran ('F'). In this release CVXPY raises a warning when no explicit order is specified.
In version 1.7, we plan to raise an error if the order is not specified. Finally, in version 1.8, we will switch the default order from ('F') to ('C') to match NumPy's behavior.
In version 1.5, we changed our default solver from ECOS to Clarabel and announced that we would be removing ECOS as a dependency in 1.6. Despite some regressions in certain DQCP tests, we are moving forward with dropping ECOS in this release. If you are experiencing any issues with Clarabel we encourage you to try using SCS or add ECOS as a dependency to your project.
This new release totaled 80 PRs from 24 users, 14 of which are first time contributors :).
The list below details all contributions made throughout this new release. Thank you all for your incredible work!
| Link | Type | 1.5.x | Comment |
| Link | Type | 1.5.x | Comment |
|---|---|---|---|
| #2541 | Bug | ✅ | |
| #2542 | Bug | ✅ | |
| #2549 | Bug | ✅ | |
| #2609 | Bug | ✅ | |
| #2624 | Bug | ✅ | |
| #2630 | Interface update | ✅ |
This release will be the last one in the 1.5.x series. We plan to no longer support cvxpy versions 1.5.x, where x<4, while we continue working on cvxpy 1.6.x Version 1.5.4 will be the last supported version in the 1.5.x series. In the future, we might update 1.5.4 with backport bug fixes.
@rluce Fixing compatibility between NumPy 2.0 and the Gurobi interface #2484 @Transurgeon Numerous bug fixes @GaetanLepage Improved scipy compatibilit
@rluce Fixing compatibility between NumPy 2.0 and the Gurobi interface #2484 @Transurgeon Numerous bug fixes @GaetanLepage Improved scipy compatibility #2508
This release is the first one compatible with NumPy 2.0. It is backward compatible, i.e., NumPy versions < 2.0 will continue to work.
This release is the first one compatible with NumPy 2.0. It is backward compatible, i.e., NumPy versions < 2.0 will continue to work.
Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.5.1...v1.5.2
## What's Changed - #2438 Fixes QP canonicalization (@phschiele) - #2436 Fix link in README.md (@StefRe) - #2435 Fix for issue with quad_over_lin para
Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.5.0...v1.5.1
ECOS deprecation progress #2388, #2391 @PTNobel @Transurgeon
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.
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.
.curvatures containing all curvatures an expression is compatible with #1540 @sunnygurmcp.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, @SteveDiamondcp.Constant(name='...') #2335 @SteveDiamondvdot, that has the same behavior as scalar_product #2371 @Transurgeonsolver_verbose #2354 @hailiangliu89save_file to COPT interface #2393 @wujianjacksum(list) #2428 @phschiele## What's Changed - #2411 value.A is deprecated (@chofchof) - #2420 Preserve expression sign in canonicalization of minimum and maximum (@zacharyweiss
Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.4.3...v1.4.4
This is a patch release for 1.4. The patch includes a variety of fixes:
This is a patch release for 1.4. The patch includes a variety of fixes:
Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.4.2...v1.4.3
This is a patch release for 1.4. The patch includes a variety of fixes:
This is a patch release for 1.4. The patch includes a variety of fixes:
SCIP return solution if [total]nodelimit hit (https://github.com/cvxpy/cvxpy/pull/2279) Update swig autogenerated files to swig 4.1.1 (https://github.com/cvxpy/cvxpy/pull/2273) Update contributing docs to reflect usage of ruff over flake8/isort (https://github.com/cvxpy/cvxpy/pull/2302) Change some O(n) lookups in scip_conif.py to O(1) (https://github.com/cvxpy/cvxpy/pull/2313) Avoid sparse matrix multiply for identity matrix (https://github.com/cvxpy/cvxpy/pull/2315) Restore Mosek 9 compatibility (https://github.com/cvxpy/cvxpy/pull/2325) Reformatting the installation page (https://github.com/cvxpy/cvxpy/pull/2268) Updating NAG website links in doc (https://github.com/cvxpy/cvxpy/pull/2299) Fix Gurobi interface issues (https://github.com/cvxpy/cvxpy/pull/2300) Use new NumPy API (https://github.com/cvxpy/cvxpy/pull/2319) Fixing links to cvx_short_course (https://github.com/cvxpy/cvxpy/pull/2264)
This is a patch release for 1.4. The patch includes fixes from several contributors:
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)
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 encou…
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.
convolvemeanouterptpstdvarvec_to_upper_tri.sum(), .max(), and .mean()PIQPPowerConeND now supports extracting its dual variablesreshape now supports using -1 as a dimension, with the same meaning it has in NumPyperspective atom now supports s=0CVXPY 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 deprecationThe 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 deprecationThe 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.
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):
Special shoutout to our Google Summer of Code interns @aryamanjeendgar and @Transurgeon!
@syanga made their first contribution in https://github.com/cvxpy/cvxpy/pull/2415
Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.3.3...v1.3.4
Nothing published for this version
This is a patch release for 1.3. The patch includes fixes from many contributors:
This is a patch release for 1.3. The patch includes fixes from many contributors:
This is a patch release for 1.3. The patch includes fixes from many contributors:
This is a patch release for 1.3. The patch includes fixes from many contributors:
@phschiele New deepcopy semantics https://github.com/cvxpy/cvxpy/pull/2053 @Transurgeon Typo fix in documentation https://github.com/cvxpy/cvxpy/pull/2044 @SteveDiamond Fix Mosek power cone https://github.com/cvxpy/cvxpy/pull/2043 @aszekMosek Clean up Mosek parameter settings https://github.com/cvxpy/cvxpy/pull/2029 @jlchen0 Fix p-norm issue with DGP problems https://github.com/cvxpy/cvxpy/pull/2028 @SteveDiamond Unpin setuptools https://github.com/cvxpy/cvxpy/pull/2022 @aszekMosek Attach Mosek log handler before inputting data https://github.com/cvxpy/cvxpy/pull/2017 @samuel-adekunle Update atomic functions docs https://github.com/cvxpy/cvxpy/pull/2016 @phschiele Build wheels on push https://github.com/cvxpy/cvxpy/pull/2008 @phschiele aarch64 wheels https://github.com/cvxpy/cvxpy/pull/2054 @phschiele Keep sparsity for PSD constraints in Mosek interface https://github.com/cvxpy/cvxpy/pull/2063 @SteveDiamond Fix issue with matrix multiplication involving quad https://github.com/cvxpy/cvxpy/pull/2067 @PTNobel Adds error on floats as indices https://github.com/cvxpy/cvxpy/pull/2058 @phschiele Improved PSD check message https://github.com/cvxpy/cvxpy/pull/2009 @SteveDiamond Fix bug with quadratic objective and power atom https://github.com/cvxpy/cvxpy/pull/2060 @rileyjmurray Remove ill-posed xexp test case https://github.com/cvxpy/cvxpy/pull/2001
we do not consider replacing cvxpy.power, which is currently a class, with a function to be a breaking change or replacing cp.quad_form which is a fun…
This release marks our first minor release since the introduction of semantic versioning in March 2022. It comes packed with many new features, bug fixes, and performance improvements. This version of CVXPY supports Python 3.7 through 3.11, and is our first release that supports Python 3.11. While working on the next release, we continue to officially support CVXPY 1.2 and 1.3, and will backport important bug fixes to 1.1, if feasible.
dotsorttr_invvon_neumann_entrperspectivex.T @ P @ x)COPT, SDPA, Clarabel, proxqpFiniteSetRelEntrConeQuadOpRelEntrConeQuadMoving forward, the public API of CVXPY is considered to be everything that is importable directly from the cvxpy namespace. We plan to introduce a cvxpy.experimental namespace for features in development where the API has not yet been fixed. It is explicitly not a part of our API whether atoms are implemented by functions or classes, e.g. we do not consider replacing cvxpy.power, which is currently a class, with a function to be a breaking change or replacing cp.quad_form which is a function to become a class to be a breaking change. Code of the form cvxpy.power(a, b) is guaranteed to remain working.
We were thrilled to see the CVXPY community grow since our last release. In GitHub issues and the increasingly utilized GitHub discussions, we saw a lot of great reports and questions. Reaching almost 1000 members, the CVXPY Discord has become a great place to ask questions and get quick help. It was great to meet some of you at SciPy 2022 and ICCOPT 2022.
A major upcoming project is an overhaul of the web documentation, making it more modern, structured, and interactive. For this, we received a NumFOCUS Small Development Grant and are currently looking for a web developer to help us with the implementation. Email us at cvxpydevs@gmail.com if interested.
This release would not have been possible without the contributions of many CVXPY users and developers. Across 30 contributors and 95 PRs, we would like to thank the following people for their contributions to this release (in alphabetical order):
Special thanks to @michaels0m for numerous discussions about the new backend.
This is a patch release for 1.2. The patch includes fixes from many contributors:
This is a patch release for 1.2. The patch includes fixes from many contributors:
This is a patch release for 1.2. The patch includes fixes from many contributors:
This is a patch release for 1.2. The patch includes fixes from many contributors:
@SteveDiamond Fix cvxpy base deployment https://github.com/cvxpy/cvxpy/pull/2071 @Transurgeon Typo fix in documentation https://github.com/cvxpy/cvxpy/pull/2044 @SteveDiamond Fix Mosek power cone https://github.com/cvxpy/cvxpy/pull/2043 @aszekMosek Clean up Mosek parameter settings https://github.com/cvxpy/cvxpy/pull/2029 @jlchen0 Fix p-norm issue with DGP problems https://github.com/cvxpy/cvxpy/pull/2028 @SteveDiamond Unpin setuptools https://github.com/cvxpy/cvxpy/pull/2022 @samuel-adekunle Update atomic functions docs https://github.com/cvxpy/cvxpy/pull/2016 @phschiele Build wheels on push https://github.com/cvxpy/cvxpy/pull/2008 @SteveDiamond Fix issue with matrix multiplication involving quad https://github.com/cvxpy/cvxpy/pull/2067 @PTNobel Adds error on floats as indices https://github.com/cvxpy/cvxpy/pull/2058 @rileyjmurray Remove ill-posed xexp test case https://github.com/cvxpy/cvxpy/pull/2001 @h-vetinari Fixes for 1.3.0 https://github.com/cvxpy/cvxpy/pull/1998
This is a patch release for 1.2. The patch includes bug fixes from many contributors:
This is a patch release for 1.2. The patch includes bug fixes from many contributors:
@phschiele @h-vetinari SciPy 1.9 compatibility https://github.com/cvxpy/cvxpy/pull/1931
@piiq Pin setuptools version https://github.com/cvxpy/cvxpy/pull/1951
@rileyjmurray Make log_det robust https://github.com/cvxpy/cvxpy/pull/1866
@rluce Adapt to API changes in gurobipy https://github.com/cvxpy/cvxpy/pull/1962
@rileyjmurray Correct handling of KNOWN_SOLVER_ERRORS https://github.com/cvxpy/cvxpy/pull/1984
@rileyjmurray Bugfixes related to complex2real https://github.com/cvxpy/cvxpy/pull/1978
@rileyjmurray More bugfixes related to complex2real https://github.com/cvxpy/cvxpy/pull/1987
This is a patch release for 1.2. The patch includes bug fixes from many contributors:
This is a patch release for 1.2. The patch includes bug fixes from many contributors:
@mlubin Fix time_limit_sec for GLOP and PDLP #1859
@fabinsch Fix OSQP warm start https://github.com/cvxpy/cvxpy/pull/1882
@SteveDiamond Switch SCS timings to seconds https://github.com/cvxpy/cvxpy/pull/1880
@phschiele Allow deepcopy of constraints https://github.com/cvxpy/cvxpy/pull/1852
@phschiele Fix linters https://github.com/cvxpy/cvxpy/pull/1851
@rileyjmurray @SteveDiamond @phschiele Fix SOC residual https://github.com/cvxpy/cvxpy/pull/1844
@SteveDiamond Fix bug with diff https://github.com/cvxpy/cvxpy/pull/1835
@akshayka @SteveDiamond Fix DQCP issue with sign function https://github.com/cvxpy/cvxpy/pull/1829
@SteveDiamond Minor test formatting fix https://github.com/cvxpy/cvxpy/pull/1886
@SteveDiamond New SCIP interface https://github.com/cvxpy/cvxpy/pull/1898
@phschiele Allow lists as shapes https://github.com/cvxpy/cvxpy/pull/1922
@roberthuisman Fix gradient for multidimensional quad form https://github.com/cvxpy/cvxpy/pull/1854
@KerimovEmil Add edge case handling for string inputs into norm https://github.com/cvxpy/cvxpy/pull/1871
CVXPY 1.2.1 is a patch release (i.e., a bugfix release) in the 1.2.X release series. Special thanks to @mkoeppe for his contribution!
CVXPY 1.2.1 is a patch release (i.e., a bugfix release) in the 1.2.X release series. Special thanks to @mkoeppe for his contribution!
Changes since 1.2.0:
This release marks a big milestone in CVXPY's development. It's the first time we've incremented the minor version number since releasing CVXPY 1.1 in
This release marks a big milestone in CVXPY's development. It's the first time we've incremented the minor version number since releasing CVXPY 1.1 in June 2020. Since then we've added many new features and improved CVXPY's efficiency in important ways. A summary of those changes -- including many which were released with little fanfare between CVXPY 1.1.1 and 1.1.18 -- can be found on cvxpy.org. Changes specific to CVXPY 1.2 include:
xexp, partial_trace, partial_transpose, and kron. The latter three atoms significantly expand CVXPY's modeling capabilities for matrix representations of tensor products; they'll be especially useful for quantum information applications.We've also grown in ways that can't be seen from changes to source code alone. We've adopted open governance principles, become a NumFOCUS affiliated project, and -- starting this week -- we're adopting semantic versioning.
Our adoption of semantic versioning will fundamentally change the way we approach CVXPY's maintenance and development. The most observable change is that new features will only be released in major or minor releases, as opposed to patch releases. Since CVXPY receives new feature contributions on a regular basis, that means you can expect minor releases from us much more often: multiple times per year instead of once in two years. It also means we'll support multiple minor-release series at any given time. Right now we provide bugfix support for CVXPY 1.1 and 1.2. Once CVXPY 1.3 comes out later this year, we'll provide bugfix support for CVXPY 1.1, 1.2, and 1.3.
While this approach creates more work for day-to-day maintenance, it has two major benefits:
It gives us space to heavily refactor CVXPY's back-end for improved efficiency in the future. This will be important for CVXPY users who want to scale their convex optimization workflows to larger and more sophisticated problems.
It makes it easier for us to publicly recognize and encourage CVXPY's many volunteer contributors. This is crucial for the long-term health of CVXPY as an open-source software project.
Our adoption of semantic versioning is an ongoing process. Stay tuned for announcements on our Discord server, website, or Twitter for more information.
CVXPY 1.2.0 includes contributions from 15 people across more than 25 pull requests. In no particular order, those contributors are
Among those listed above, we would like to call special attention to @phschiele, @Michael-git96, and @dcajasn -- each of whom has made contributions to CVXPY prior to version 1.1.18. Those recurring contributions are instrumental to CVXPY's success.
On behalf of the CVXPY project maintainers, Riley Murray CC: @akshayka @SteveDiamond, @bstellato
This is a patch release for 1.1. The patch includes fixes from many contributors:
This is a patch release for 1.1. The patch includes fixes from many contributors:
This is a patch release for 1.1. The patch includes fixes from many contributors:
This is a patch release for 1.1. The patch includes fixes from many contributors:
@SteveDiamond Fix cvxpy base deployment https://github.com/cvxpy/cvxpy/pull/2071 @Transurgeon Typo fix in documentation https://github.com/cvxpy/cvxpy/pull/2044 @SteveDiamond Fix Mosek power cone https://github.com/cvxpy/cvxpy/pull/2043 @aszekMosek Clean up Mosek parameter settings https://github.com/cvxpy/cvxpy/pull/2029 @jlchen0 Fix p-norm issue with DGP problems https://github.com/cvxpy/cvxpy/pull/2028 @SteveDiamond Unpin setuptools https://github.com/cvxpy/cvxpy/pull/2022 @samuel-adekunle Update atomic functions docs https://github.com/cvxpy/cvxpy/pull/2016 @phschiele Build wheels on push https://github.com/cvxpy/cvxpy/pull/2008 @SteveDiamond Fix issue with matrix multiplication involving quad https://github.com/cvxpy/cvxpy/pull/2067 @PTNobel Adds error on floats as indices https://github.com/cvxpy/cvxpy/pull/2058 @h-vetinari Fixes for 1.3.0 https://github.com/cvxpy/cvxpy/pull/1998
This is a patch release for 1.1. The patch includes bug fixes from many contributors:
This is a patch release for 1.1. The patch includes bug fixes from many contributors:
@phschiele @h-vetinari SciPy 1.9 compatibility https://github.com/cvxpy/cvxpy/pull/1931
@piiq Pin setuptools version https://github.com/cvxpy/cvxpy/pull/1951
@rileyjmurray Make log_det robust https://github.com/cvxpy/cvxpy/pull/1866
@rluce Adapt to API changes in gurobipy https://github.com/cvxpy/cvxpy/pull/1962
@rileyjmurray Bugfixes related to complex2real https://github.com/cvxpy/cvxpy/pull/1978
@rileyjmurray More bugfixes related to complex2real https://github.com/cvxpy/cvxpy/pull/1987
This is a patch release for 1.1. The patch includes bug fixes from many contributors:
This is a patch release for 1.1. The patch includes bug fixes from many contributors:
@fabinsch Fix OSQP warm start https://github.com/cvxpy/cvxpy/pull/1882
@SteveDiamond Switch SCS timings to seconds https://github.com/cvxpy/cvxpy/pull/1880
@phschiele Allow deepcopy of constraints https://github.com/cvxpy/cvxpy/pull/1852
@phschiele Fix linters https://github.com/cvxpy/cvxpy/pull/1851
@rileyjmurray @SteveDiamond @phschiele Fix SOC residual https://github.com/cvxpy/cvxpy/pull/1844
@SteveDiamond Fix bug with diff https://github.com/cvxpy/cvxpy/pull/1835
@akshayka @SteveDiamond Fix DQCP issue with sign function https://github.com/cvxpy/cvxpy/pull/1829
@SteveDiamond Minor test formatting fix https://github.com/cvxpy/cvxpy/pull/1886
@SteveDiamond New SCIP interface https://github.com/cvxpy/cvxpy/pull/1898
@phschiele Allow lists as shapes https://github.com/cvxpy/cvxpy/pull/1922
@roberthuisman Fix gradient for multidimensional quad form https://github.com/cvxpy/cvxpy/pull/1854
@KerimovEmil Add edge case handling for string inputs into norm https://github.com/cvxpy/cvxpy/pull/1871
CVXPY 1.1.20 is a patch release (i.e., a bugfix release) in the 1.1.X release series. Special thanks to @mkoeppe for his contribution!
CVXPY 1.1.20 is a patch release (i.e., a bugfix release) in the 1.1.X release series. Special thanks to @mkoeppe for his contribution!
Changes since 1.1.19:
CVXPY 1.1.19 is a patch release (i.e., a bugfix release) in the 1.1.X release series. It's released concurrently with CVXPY 1.2.0, which has the same
CVXPY 1.1.19 is a patch release (i.e., a bugfix release) in the 1.1.X release series. It's released concurrently with CVXPY 1.2.0, which has the same set of bugfixes as well as additional features. CVXPY 1.1.19 supports Python 3.6 to 3.10, while CVXPY 1.2.0 only supports Python 3.7 through 3.10. You can read about version 1.2.0 here.
The full set of changes between CVXPY 1.1.18 and 1.1.19 can be found in PR #1673.
CC @SteveDiamond @akshayka @bstellato
Use s.LOGGER instead of stdout in mosek.
Changelog/bug fixes:
Backwards compatible support for SCS 3 v2
Changelog:
Support for Gurobi Environments
Changelog:
Use builtin types instead of deprecated numpy aliases
Changelog
Update SCS status map to use status vals rather than string matching
Move Travis CI to GitHub Actions
Implement handling of bool valued constraints
Improvements
bool valued constraints (#1283)Bug fixes
CVXPY version 1.1.11 introduces better verbose logging, several performance improvements, and various bug fixes. One performance optimization, namely
CVXPY version 1.1.11 introduces better verbose logging, several performance improvements, and various bug fixes. One performance optimization, namely multi-threaded compilation with OpenMP, is experimental, and must be opted into (see below).
When solving problems with verbose=True, you will now see detailed logging that describes CVXPY's compilation of your problem, in addition to logs output by the underlying solver. This logging can be helpful when compiling large problems. (It is sometimes easy to forget that CVXPY is a compiler that interfaces your problems to low-level numerical solvers; CVXPY is not a solver.)
Here's an example of the new output.
===============================================================================
CVXPY
v1.1.11
===============================================================================
(CVXPY) Feb 26 10:30:24 PM: Your problem has 20 variables, 2 constraints, and 0 parameters.
(CVXPY) Feb 26 10:30:24 PM: It is compliant with the following grammars: DCP, DQCP
(CVXPY) Feb 26 10:30:24 PM: (If you need to solve this problem multiple times, but with different data, consider using parameters.)
(CVXPY) Feb 26 10:30:24 PM: CVXPY will first compile your problem; then, it will invoke a numerical solver to obtain a solution.
-------------------------------------------------------------------------------
Compilation
-------------------------------------------------------------------------------
(CVXPY) Feb 26 10:30:24 PM: Compiling problem (target solver=OSQP).
(CVXPY) Feb 26 10:30:24 PM: Reduction chain: CvxAttr2Constr -> Qp2SymbolicQp -> QpMatrixStuffing -> OSQP
(CVXPY) Feb 26 10:30:24 PM: Applying reduction CvxAttr2Constr
(CVXPY) Feb 26 10:30:24 PM: Applying reduction Qp2SymbolicQp
(CVXPY) Feb 26 10:30:24 PM: Applying reduction QpMatrixStuffing
(CVXPY) Feb 26 10:30:24 PM: Applying reduction OSQP
(CVXPY) Feb 26 10:30:24 PM: Finished problem compilation (took 5.444e-03 seconds).
(CVXPY) Feb 26 10:30:24 PM: (Subsequent compilations of this problem, using the same arguments, should take less time.)
-------------------------------------------------------------------------------
Numerical solver
-------------------------------------------------------------------------------
(CVXPY) Feb 26 10:30:24 PM: Invoking solver OSQP to obtain a solution.
-----------------------------------------------------------------
OSQP v0.6.0 - Operator Splitting QP Solver
(c) Bartolomeo Stellato, Goran Banjac
University of Oxford - Stanford University 2019
-----------------------------------------------------------------
problem: variables n = 50, constraints m = 70
nnz(P) + nnz(A) = 700
settings: linear system solver = qdldl,
eps_abs = 1.0e-05, eps_rel = 1.0e-05,
eps_prim_inf = 1.0e-04, eps_dual_inf = 1.0e-04,
rho = 1.00e-01 (adaptive),
sigma = 1.00e-06, alpha = 1.60, max_iter = 10000
check_termination: on (interval 25),
scaling: on, scaled_termination: off
warm start: on, polish: on, time_limit: off
iter objective pri res dua res rho time
1 0.0000e+00 1.95e+00 6.37e+02 1.00e-01 1.61e-04s
200 1.9831e+01 2.92e-05 5.58e-06 1.29e+00 7.50e-04s
plsh 1.9831e+01 3.35e-16 8.89e-15 -------- 8.37e-04s
status: solved
solution polish: successful
number of iterations: 200
optimal objective: 19.8313
run time: 8.37e-04s
optimal rho estimate: 4.33e+00
-------------------------------------------------------------------------------
Summary
-------------------------------------------------------------------------------
(CVXPY) Feb 26 10:30:24 PM: Problem status: optimal
(CVXPY) Feb 26 10:30:24 PM: Optimal value: 1.983e+01
(CVXPY) Feb 26 10:30:24 PM: Compilation took 5.444e-03 seconds
(CVXPY) Feb 26 10:30:24 PM: Solver (including time spent in interface) took 1.555e-03 seconds
See #1251 for more context.
We have made several optimizations to CVXPY's compilation process (#1255, #1259). These optimizations can sometimes yield modest to large reductions in the time CVXPY spends compiling your problem.
CVXPY 1.1.11 also includes experimental multi-threaded compilation, which can yield dramatic speed-ups on problems with many expressions. To enable multi-threaded compilation, you'll need to have OpenMP installed and compile from source. For example, on Linux with GCC, use
CFLAGS='-fopenmp' LDFLAGS='-lgomp' pip install cvxpy --no-binary cvxpy
Control the number of threads used either by setting the OMP_NUM_THREADS environment variable, or by using the function cvxpy.set_num_threads. The latter takes precedence.
diag atom's is_nonneg method now checks for PSD-ness (#1242 by @phschiele)order=C now works properly (#1264 by @akshayka )quad_form was fixed to handle complex inputs (#1261 by @SteveDiamond )There were many changes between CVXPY versions 1.1.7 and 1.1.8. However, CVXPY 1.1.8 should not be used because of NumPy configuration issues and CVXP
There were many changes between CVXPY versions 1.1.7 and 1.1.8. However, CVXPY 1.1.8 should not be used because of NumPy configuration issues and CVXPY 1.1.9 was quickly followed by a bugfix. Therefore CVXPY version 1.1.10 is the spiritual successor to 1.1.7. Here's an account of the merged PR's since 1.1.7:
Features, infrastructure, and speed improvements.
log_normcdf atom based on piecewise quadratic approximation (see #1224).Bug-fixes:
affine2direct code path (#1227 by @rileyjmurray).pyproject.toml for source installations via pip (#1234 by @akshayka).Documentation improvements:
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →