Skip to content

SCS 3.3.0 Python bindings

Choose a tag to compare

@bodono bodono released this 30 Aug 15:47
2bd377d

Warning

The PyPI wheels for this release are broken on x86-64 Linux (and likely Windows): the first solve aborts the interpreter with Intel oneMKL FATAL ERROR: Cannot load libmkl_def.so.3 — the wheels omitted MKL's dlopen'd CPU dispatch kernels (cvxgrp/scs#423). 3.3.0 has been yanked on PyPI — pin scs!=3.3.0, use conda-forge, or build from sdist. Fixed wheels ship in 3.3.1.

Python bindings for SCS 3.3.0 — a major core performance release: +92 solved problems across a 505-problem LP/QP/SDP validation suite vs 3.2.11, with 3–7× lower mean solve times at equal-or-better independently verified accuracy, competitive with PDLP on LP benchmarks at matched delivered accuracy. See the core release notes for the full performance tables, algorithm changes, and accuracy guidance (eps=1e-5 recommended for LP/QP workloads when accuracy matters).

New in the Python interface

  • adaptive_diag_scale setting exposed (#225): the new per-row dynamic metric refinement from the core release, on by default (0/1; accepts bools).
  • LinearSolver enum replaces the old boolean solver-selection flags (#189, renamed members #206): AUTO, QDLDL, CPU_INDIRECT, MKL, ACCELERATE, CPU_DENSE, GPU_INDIRECT, CUDSS. AUTO on macOS now prefers QDLDL over Accelerate (#210).
  • Anderson acceleration introspection and tuning: detailed AA diagnostics in info['aa_stats'] (#208) and exposed AA settings (#209).
  • Apple Accelerate backend on macOS (#188).

Wheels and platforms

  • x86_64 Linux and Windows wheels link MKL (#187, #190), with BLAS64/ILP64 support and multi-threaded PARDISO (#192); a runtime check guards the process-wide MKL interface layer.
  • Free-threading (no-GIL) support for CPython 3.13t+ (#175) and crash fixes for 3.15t wheels (#228).
  • GPU: use_gpu=true build fix (#221), cuDSS/CUDA link dependencies scoped correctly (#223).

Robustness fixes

A hardening series across the binding layer (#195–#205): settings validation rejects NaN/±inf, negative cone dimensions rejected, caller's sparse A/P index arrays are no longer mutated in place, sparse b/c handled correctly, latent Windows scs_int truncation and OOM crash fixed, proper DeprecationWarning for the legacy 'f' cone, defensive NULL checks and better error messages. Test-suite additions for the new setting and finite-tolerance semantics (#229).

Compatibility

The boolean solver-selection flags (use_indirect, gpu, ...) are replaced by linear_solver=scs.LinearSolver.*; eps defaults are unchanged from the core (see the core notes for guidance). scs_source is pinned to SCS 3.3.0 final (9362c04).