Files
optimiz-rs/CHANGELOG.md
ThotDjehuty d780ed81d7 release(v1.1.0): additive CPU-only generic numerical primitives
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.
2026-05-12 10:59:09 +02:00

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 equation dA/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 standard Z/2 matrix-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.1 to 1.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.