# What changed in cvxpy

> 48 changes in cvxpy 1 from its official release notes, upgrade guides and advisories: 3 breaking, 25 new APIs and options. Each one cited. Sources checked 2026-11-13. HTML: https://unstale.sh/pypi/cvxpy/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## cvxpy 1

### Breaking changes

- Sparse or diagonal variables with pos/neg attributes are now rejected. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- NumPy versions below 2.0 are no longer supported. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Python 3.10 is no longer supported; CVXPY 1.8 supports Python 3.11 through 3.14. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)

### New APIs and options

- A new solver interface is available for PDCS. (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- Pass nlp=True to use Disciplined Nonlinear Programming for a broader class of nonlinear problems. (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- The axis argument is now supported. (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- Zero-sized expressions are now supported. (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- Adds BOUNDED_VARIABLES support for Xpress solvers. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- Specify canon_backend="COO" when solving a DPP problem to use the new backend, which can handle a very large number of parameters. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds a new solver interface for COSMO. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds the AND atom for logical boolean operations on boolean expressions. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds the NOT atom for logical boolean operations on boolean expressions. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds the OR atom for logical boolean operations on boolean expressions. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds the XOR atom for logical boolean operations on boolean expressions. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds einsum as a new atom. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- The approx parameter determines whether geo_mean is canonicalized using many SOCs or one power cone. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- The approx parameter determines whether inv_prod is canonicalized using many SOCs or one power cone. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds a new solver interface for KNITRO. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds a new solver interface for MOREAU. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds support for ND cumsum. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds support for ND matmul. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds num_iters to Gurobi conic solver solution info. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- The approx parameter determines whether pnorm is canonicalized using many SOCs or one power cone. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- The approx parameter determines whether power is canonicalized using many SOCs or one power cone. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds a new solver interface for QPALM. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds solving chain context. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds stack as a new atom. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Adds a new Moreau Interface. (1.7.5) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.7.5)

### Performance

- Uses LDL decomposition instead of eigh in decomp_quad. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- Uses a balanced tree for PowConeND to PowCone3D decomposition. (1.8.1) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.1)

### Behavior and default changes

- Exponentiation now works when a is a positive constant, using canonicalization via exp(x * log(a)). (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- N-D and tuple-axis support is generalized across AxisAtom canonicalizers, including max, norm_inf, log_sum_exp, and cummax. (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- Parameter values may now be positive or negative infinity. (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- A parametric PSD matrix is now DPP-compliant on solvers with native quadratic objective support, enabling efficient re-solves when only its value changes. (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- Sparse Cholesky now uses QDLDL. (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- Bounds can use parameter expressions and sparse bound arrays when the variable is sparse; many solvers now natively use provided bounds. (1.9.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.9.0)
- Adds support for DPP with complex expressions. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- HiGHS is now CVXPY's default mixed-integer linear programming solver. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)
- Unifies the QP interface into the quadratic conic pathway. (1.8.0) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.0)

### Fixes and other changes

- Fixes negative axis sums in the Python backends. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- Ensures backward() sets param.gradient to a zero ndarray rather than a float when the gradient is zero. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- Fixes a KeyError when a log-param is not in dparams. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- Fixes scalar canonicalization in DGP so it promotes x instead of p. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- Prevents quad_form canonicalization from silently dropping the M1 term when P is indefinite. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- Fixes shape inference for N-D shapes containing -1. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- Updates the Xpress solver interfaces for compatibility with version 9.8. (1.8.2) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.2)
- Fixes cvxpy-base dependencies. (1.8.1) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.1)
- Fixes an IndexError with transformed parameters in parametric reshape. (1.8.1) — [release notes](https://github.com/cvxpy/cvxpy/releases/tag/v1.8.1)
