sparsediff 0.6.1
CRAN release: 2026-10-06
- The bundled SparseDiffEngine moves from 0.3.0 to 0.6.1, the release that ‘sparsediffpy’ 0.6.x and ‘CVXPY’ 1.9.3 use. From this release on, the package version matches the bundled engine version.
- Fixed: a parametric problem re-evaluated after
sd_update_params()could return values computed from the old parameter values (engine fix #107). For a modeling layer this meant that re-solving a parametric nonlinear problem after changing a parameter returned the previous solution, reported as optimal. - Fixed: selecting entries with repeated indices in
sd_index()(for example a quadratic objective over a symmetric variable) could crash R with a bus error when the Jacobian or Hessian was evaluated (engine fix #105). - New
sd_quad_form_dense(): the quadratic form with a dense constant or parametric matrix. The parametric form followssd_update_params().sd_quad_form()keeps its signature and still takes a sparse constant matrix. - Every ‘sparsediffpy’ 0.6.1 function now has an
sd_*counterpart that calls the same engine routine with the same arguments; the name map is on the package help page (?sparsediff). New:sd_left_kron()andsd_right_kron()(Kronecker products, used by the next CVXPY release), the compressed-sparse-row derivative accessorssd_jacobian(),sd_get_jacobian(),sd_init_hessian(),sd_hessian()andsd_get_hessian(), andsd_get_expr_dimensions()/sd_get_expr_size().sd_rel_entr()now dispatches on operand size likemake_rel_entr. - Fixed:
sd_init_hessian_coo()crashed R when called before the Jacobian was initialized; it now initializes the Jacobian first. -
sd_rel_entr(),sd_rel_entr_first_scalar()andsd_rel_entr_second_scalar()now check that their arguments are two different variables, which the engine requires; other arguments overflowed a heap buffer (found with AddressSanitizer). - The BLAS shim gains
cblas_ddot, which the 0.6.1 engine calls. - Fixed: the package failed to compile on Linux systems with glibc 2.36 or older (for example Debian 12), because
_GNU_SOURCEwas defined too late forfopencookie(). It is now set on the compiler command line. - Documentation: the sparse matrix arguments of
sd_quad_form()andsd_left_matmul()/sd_right_matmul()are compressed-sparse-row arrays, and the densedataarguments are row-major. Earlier documentation said compressed-sparse-column and column-major. The grouped help pages now have usage sections (flagged by current R-devel). - The package now has a ‘testthat’ test suite.
