Skip to content

Latest commit

 

History

History
172 lines (104 loc) · 7.98 KB

CHANGELOG.md

File metadata and controls

172 lines (104 loc) · 7.98 KB

Changelog

Changes for the Rust version of Clarabel are documented in this file. For the Julia version, see here.

The format is based on Keep a Changelog.

Version numbering in this project adheres to Semantic Versioning. We aim to keep the core solver functionality and minor releases in sync between the Rust/Python and Julia implementations. Small fixes that affect one implementation only may result in the patch release versions differing.

0.9.0 - 2024-01-06

What's Changed

  • Read/write problems to JSON files #111

Rust specific changes

  • validation tools for solver settings #113

  • adds feature to include supernodal LDL solver from faer-rs #112

  • Add wasm feature by @alexarice in #114

  • pypi and testpypi build updates by @tschm in #110, #115, #109

0.8.1 - 2024-21-05

Changed

  • change to docs.rs configuration so that SDP documentation will build

0.8.0 - 2024-21-05

Changed

  • implements chordal decomposition for PSD cones #100
  • updates scaling bounds. Fixes #96

Rust specific changes

  • Derive debug trait to the solution struct #97. Thanks @nunzioono.
  • Resolve clippy warnings for rustc >=v1.75 #94

0.7.1 - 2024-29-02

Changed

  • Fixes a panic / crash condition in PSD scaling step #78

Rust specific changes

  • Fix to output printing when Python version is run within a Jupyter notebook / Google Colab. Fixes [#60].

0.7.1 - 2024-29-02

Changed

  • Fixes a panic / crash condition in PSD scaling step #78

Rust specific changes

  • Fix to output printing when Python version is run within a Jupyter notebook / Google Colab. Fixes #60.

0.7.0 - 2024-26-02

Changed

  • Solution output reports dual objective values. Infeasible problems report NaN. Fixes [#67] (#67)
  • Solver now supports problems with a mix of PSD and nonsymmetric cones. Fixes [#66] (#66)
  • Added methods for updating problem data without reallocating memory. Addresses [#59] (#59)
  • Bug fix enforcing scaling limits in equilibration. Port of Julia fix #151
  • Bug fix in infeasibility detection. Fixes [#65] (#65)

0.6.0 - 2023-20-09

Changed

This version introduces support for the generalized power cone and implements stability and speed improvements for SOC problems. SOCs with dimension less than or equal to 4 are now treated as special cases with dense Hessian blocks.

  • Introduces support for the generalized power cone.
  • Implements stability and speed improvements for SOC problems. SOCs with dimension less than or equal to 4 are now treated as special cases with dense Hessian blocks.
  • Fixes bad initialization point for non-quadratic objectives
  • Improved convergence speed for QPs with no constraints or only ZeroCone constraints.
  • Internal code restructuring for cones with sparsifiable Hessian blocks.

Rust specific changes

  • Added additional documentation and utilities #43,#46.
  • Allow printing of internal timers through Julia wrappers in ClarabelRs #44
  • Updated keywords for crates.io #45
  • Better error reporting from internal QDLDL factor methods. Fixes #49

0.5.1 - 2023-02-06

Changed

Fixes convergence edge case in KKT direct solve iterative refinement.

Rust specific changes

  • Updates for custom build of R interface with BLAS/LAPACK support
  • Additional linear algebra unit tests and CSC matrix utilities

0.5.0 - 2023-25-04

Changed

This version ports support for PSD cones from the Julia version to Rust, with internal supporting modifications to both versions to keep implementations synchronized.

Rust specific changes

  • Package implements a variety of dense linear algebra functions using BLAS/LAPACK in support of the PSD cone implementation. Provides various build options for using different BLAS/LAPACK external libraries.

  • Python interface makes direct access to SciPy BLAS/LAPACK internal function pointers so that no external library linking is required for distribution via PyPI.

0.4.1 - 2023-08-03

Changed

Added optional feature to remove inequality constraints with very large upper bounds. This feature is enabled by default but can be turned off using the presolve_enable setting.

Bug fix in equilibration for NN and zero cones.

Rust/Python specific changes

Rust algebra module modified to allow chaining of elementwise vector operations.

Added Rust matrix format checking utility in CscMatrix::check_format. NB: CscMatrix integrity is assumed by the solver and is not checked internall.

0.4.0 - 2023-25-02

Changed

  • Internal fixes relating to initialization of iterates in symmetric cone problems.

  • Numerical stability improvements for second order cone constraints.

Rust/Python specific changes

  • Modification of the internal calls to the Rust qdldl to allow for direct assignment of parameters in AMD ordering.

  • Added release of binaries for arm64 Linux #9. Thanks to @nrontsis.

  • Fixed a bug using == for SolverStatus objects in Python. Fixes #10.

  • Python now reports the Clarabel version using __version__ instead of __version__().

  • Added additional unit tests for Rust implementation. NB: Rust implementation is also tested offline against the Julia-based benchmark problem suite, but this will not appear in coverage reporting.

0.3.0 - 2022-09-13

Changed

  • Implements support for exponential and power cones

  • Numerical stability improvements

  • Various bug fixes

0.2.0 - 2022-07-31

  • Rust/python implementation released starting from this version.

  • Ported all documentation to the common site here