Skip to content

Release 1.9.1: DNLP, bounds propagation, CVXPY 1.9.1 parity - #157

Merged
bnaras merged 3 commits into
masterfrom
s7-rewrite
Jun 5, 2026
Merged

Release 1.9.1: DNLP, bounds propagation, CVXPY 1.9.1 parity#157
bnaras merged 3 commits into
masterfrom
s7-rewrite

Conversation

@bnaras

@bnaras bnaras commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

S7 rewrite from 1.8.2-1 → 1.9.1, reaching CVXPY 1.9.1 parity.
R CMD check: Status: OK (full suite passes, vignettes rebuild clean, 0
NOTEs/WARNINGs). 683 files changed — mostly generated R/ renumbering, not
behavioral change.

Highlights

  • Disciplined Nonlinear Programmingpsolve(prob, nlp = TRUE) for smooth,
    not-necessarily-convex programs (is_dnlp() grammar). New smooth atoms
    (sin/cos/tan/sinh/tanh/asinh/atanh/normcdf/prod), smoothness
    predicates, best_of = n restarts. Powered by optional sparsediff + Uno/ipopt.
  • Bounds propagationget_bounds() works on any expression; sparse and
    symbolic (Parameter) bounds; native solver bounds consumed by HiGHS, Gurobi,
    CPLEX, XPRESS, PIQP, SCIP.
  • Atoms / DPPconvolve(); is_dpp(context=); DGP parametric bounds;
    CPLEX conic path (LP/SOCP/MI).
  • Bug fixes (also 1.8.x)gp arg honored in problem_data(); explicit
    enforce_dpp/ignore_dpp in psolve(); QP-path quad_over_lin fix.
  • Performance — ~5–13% faster than 1.8.2 on solve-dominated problems.
  • DocsNEWS.md + whats_new vignette consolidated to a single 1.9.1
    section (public jump is 1.8.2 → 1.9.1).

Dependencies / CI

Uno, sparsediff, ipopt, diffcp are in Enhances (optional,
requireNamespace()-guarded); Additional_repositories includes
bnaras.r-universe.dev, so CI resolves them from r-universe without anything on
CRAN. Builds/checks clean with all absent.

Notes

  • Known parity gap (from CVXPY): complex-SOC dual recovery unimplemented;
    complex SOC primal canonicalization works.

bnaras added 3 commits June 5, 2026 09:50
Consolidate NEWS.md and the whats_new vignette into a single 1.9.1
section (the CRAN jump is 1.8.2 -> 1.9.1; the internal 1.8.2-1 and
1.9.0 development cycles are folded in). Also includes accumulated R/
source renumbering since the last master publish.
Conic auto-select now follows CVXPY 1.9 problem_form.py::pick_default_solver
(commercial first; MI-LP -> HIGHS, MI-other -> SCIP; SDP -> SCS; else
CLARABEL) instead of first-cone-capable-in-order, fixing the two
test-problem-form-parity-v19.R default-solver assertions when no commercial
solver is installed. QP path and fallbacks unchanged.
Update reference index for the 1.9.x API surface and regenerate docs/.
Add the 11 previously-unindexed topics: convolve, normcdf, get_bounds,
is_dnlp, is_smooth, is_atom_smooth, is_linearizable_convex/concave,
scalarize, sample_bounds, and reduction-id-map (var_id_map/param_id_map).
@bnaras
bnaras merged commit 3afc181 into master Jun 5, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant