Adds 9 new top-level / sub-modules to the Rust API only (no Python
bindings yet), with at least one analytic unit test per module.
New Rust modules:
- optimal_control::matrix_riccati (RK4 backward solver)
- timeseries_utils::nonsync_covariance (Hayashi-Yoshida)
- timeseries_utils::wavelet (Haar / Daubechies DWT and MODWT)
- risk_measures (VaR, CVaR, projected sub-gradient CVaR minimisation)
- graph::laplacian + graph::spectral_clustering (Jacobi + k-means++)
- topology (Vietoris-Rips persistent homology, bottleneck distance)
- volterra (Caputo Adams, Markovian lift, second-kind Volterra,
Fourier inversion of characteristic functions)
- signatures (truncated tensor signature, log-sig, random reservoir,
Salvi-Cass-Lyons signature kernel, shuffle product)
All previously stable APIs untouched; abi3-py38 ABI preserved.
New module tests: 29/29 passing. Pre-existing 5 unrelated failures
unchanged.
2.9 KiB
2.9 KiB
Changelog
All notable changes to optimiz-rs are documented in this file. The format follows Keep a Changelog and the project adheres to Semantic Versioning.
[1.1.0] - 2026-05-12
Added — purely additive, no existing API changes
optimal_control::matrix_riccati— RK4 backward solver for the matrix Riccati differential equationdA/dt = -2 A M A + Q, plus terminal-condition variants for the associated affine and constant components.timeseries_utils::nonsync_covariance— Hayashi--Yoshida estimator for asynchronous covariance, with parallel matrix variant.timeseries_utils::wavelet— discrete and maximum-overlap wavelet transforms (Haar, Daubechies orders 2--10) with periodic boundaries.risk_measures— empirical and parametric Value-at-Risk and Conditional Value-at-Risk estimators, plus a projected sub-gradient solver for convex CVaR minimisation over the unit simplex.graph::laplacian— combinatorial, symmetric-normalised and random-walk graph Laplacians.graph::spectral_clustering— spectral clustering via Jacobi diagonalisation and Lloyd's algorithm with k-means++ initialisation.topology::persistent_homology— Vietoris--Rips persistent homology by the standardZ/2matrix-reduction algorithm.topology::bottleneck— bottleneck distance between persistence diagrams via Hopcroft--Karp matching with binary search.volterra::fractional_riccati— Adams predictor--corrector solver for Caputo fractional ODEs (Diethelm--Ford--Freed 2002).volterra::markovian_lift— multi-exponential approximation of convolution kernels by non-negative least squares on a geometric grid.volterra::volterra_solver— generic second-kind Volterra integral equation solver via product-trapezoidal quadrature.volterra::fourier_inversion— direct trapezoidal Fourier inversion of a characteristic function on a uniform frequency grid.signatures::path_signature— truncated tensor signature of a piecewise-linear path with truncated tensor exponential.signatures::log_signature— truncated tensor logarithm of a signature.signatures::random_signature— Cuchiero--Schmocker--Teichmann random reservoir projection of the signature.signatures::signature_kernel— Salvi--Cass--Lyons signature kernel via the Goursat finite-difference scheme.signatures::utils— shuffle product and Chen-identity-driven signature concatenation.
Changed
- Bumped crate version from
1.0.1to1.1.0. All previously stable symbols remain untouched and binary-compatible at the Python ABI level (abi3-py38).
Notes
This release is CPU-only and additive. No Python bindings were added
in 1.1.0; the new modules are exposed via the Rust API only and will
be wrapped behind the python-bindings feature in a follow-up release.