First beta release of OSQP v1.0
New features:
- Introduced new linear algebra backend system allowing compute framework to be changed at compile time.
- Merged cuOSQP project into main OSQP project (inside algebra/cuda directory).
- Introduced an Intel MKL-based algebra backend using the MKL sparse BLAS API, Vector Math Library. This backend contains both the Pardiso solver and an RCI conjugate gradient implementation.
- Added code generation capabilities to the C-level API (note, only problem export is in the C API, no file copying is done).
- Added initial adjoint derivative computation to the C-level API.
Main changes:
- Updated QDLDL to 0.1.7.
- Changed QDLDL to be included through CMake FetchContent instead of a git submodule.
- The MKL Pardiso solver is only available with the MKL backend.
- CMake installs CMake config files for consuming applications to use.
- All of OSQP's API is contained inside the
public
include files (there should be no need for users to include anything inprivate
). - All OSQP functions, defines and types are prefixed with
OSQP
(in some capitalization) to namespace the API.
Developer-centric changes:
- Test suite switched to Catch2 and now incorporates modern C++ for memory management and organization.
- ASAN flags integrated into main OSQP CMake build system.
- Fix MKL function prototypes (required for CRAN compilation) (PR #487)
- Use a constant interval for adaptive rho when in embedded=2 mode (PR #347)
- Include version.h in the OSQP installed headers (Fixes #323)
- Switch unit testing to use Catch2
- Switch to GitHub actions CI system
- Switched binary distribution from bintray to GitHub releases
- Various documentation fixes and improvements
- Fix segfault python multithreading
- Compatibility python 3.9
- Updated QDLDL to version 0.1.5
- Drop Python 2.7 support
- Added meaningful return values to internal functions. Changed syntax of
osqp_setup
function. It now returns an exitflag. osqp_setup
function requiresP
to be upper triangular. It returns a nonzero exitflag otherwise.- Custom memory allocators via cmake and the configure file.
- Changed interfaces to linsys solver functions. The solve function now computes
(x_tilde,z_tilde)
instead of(x_tilde,nu)
. This allows to implement custom linear system solvers (also indirect). - Added
solve
function in Python interface that performssetup
solve
andcleanup
for you directly and disables GIL. - Improved code generation folder structure.
- Added
update_time
to the info structure. - Fixed #101.
- Updated QDLDL to version 0.1.3.
- Added check for nonconvex cost function (non-positive semidefinite
P
) after factorization is performed. - Added complete sources distribution on bintray.com (including QDLDL).
- Added check for nonconvex cost function (non-positive semidefinite
P
). - Removed SuiteSparse LDL in favor of QDLDL.
- Static library
libosqpstatic
now renamed aslibosqp
.
- Fixed #62.
- Moved interfaces to separate repositories
- Fixed #54.
- Changes to support Matlab 2018a
- Added support for new interface in R
- Added
time_limit
option - Added CUTEst interface
- Fixed bug in upper triangular
P
extraction. Now the solver can accept both completeP
matrix or just the upper triangular part. - Fixed #33
- Fixed #34
- Allow
eps_rel=0
#40 - Fixed bug when calling
osqp_solve
orosqp_cleanup
after failed linear system initialization - Add "install" CMake target and installation of CMake configuration files
- Fixed potential name conflict with SCS 47
- Changed
set_default_settings
toosqp_set_default_settings
and brought function to main API headerosqp.h
- Fixed #49
- Fixed problem with code generation and pypi
data_files
(everything now in MANIFEST.in)
- Added adaptive rho -> Much more reliable convergence!
- Simplified several settings
- "early_terminate" and "early_terminate_interval" -> "check_termination"
- "scaling_iter" removed and put inside "scaling" parameter
- Julia interface OSQP.jl
- Shared libraries available on bintray.com
- Added inaccurate return statuses
- Added new object-oriented structure for linear system solvers
- Added MKL Pardiso interface using shared dynamic library loader
- Added diagonal rho vector with different values for equality/inequality constraints (interface still have scalar rho)
- Return certificates of infeasibility in results structure
- Now code generation produces a static library
- Fixed sources distribution on Python
- Added option to terminate with scaled or unscaled residual
- Now Matlab interface does support logical entries for the settings
- Fixed bug in index ordering of sparse matrices of Python interface
- Changed 2-norms to inf-norms
- Fixed code generation bug when scaling is disabled #7
- Removed warnings in code-generation for standard <= C99
- Fixed MATLAB 2015b compatibility #6
- Fixed crashes during polishing when factorization fails
- Added package to Pypi
- Fixed relative paths Matlab
- Linux, Mac and Windows
- Interface to Python 2.7, 3.5+
- Interface to Matlab 2015b+
- Embedded code generation