release(v2.0.0): promote alpha to stable, fix PyPI naming, add v2 non-regression suite
- Bump Cargo.toml + pyproject.toml from 2.0.0-alpha.1 to 2.0.0. - Restore PyPI distribution name to 'optimizr' (continuity with v1.4.x). Rust crate stays 'optimiz-rs'; both expose Python module 'optimizr'. - README: new 'What's New in v2.0.0' section listing every advertised primitive (solve_volterra, solve_fractional_ode, linear_bsde_constant_coeffs, mean_reverting_mckean_vlasov, historical_var_py, etc.) with corrected install command 'pip install optimizr'. - tests/test_v2_api.py: 20-test non-regression suite with analytic ground-truth checks for every v2 primitive plus a parametrised guard over the v1.x public surface. - CHANGELOG: 2.0.0 entry documenting the release. Build verification: - maturin develop --release --features python-bindings -> optimizr-2.0.0 wheel built - pytest tests/test_v2_api.py: 20 passed, 0 failed - cargo test --lib --no-default-features: 124 passed; 5 pre-existing failures (mrsjd, ou_estimator, hurst_random_walk, hjb_solver_symmetry, regime_switching) unchanged since v1.1.
This commit is contained in:
@@ -6,13 +6,33 @@
|
||||
|
||||
**High-performance optimization algorithms in Rust with Python bindings**
|
||||
|
||||
[](https://github.com/ThotDjehuty/optimiz-r/releases)
|
||||
[](https://github.com/ThotDjehuty/optimiz-r/releases)
|
||||
[](LICENSE)
|
||||
[](https://www.rust-lang.org/)
|
||||
[](https://www.python.org/)
|
||||
|
||||
Optimiz-rs provides blazingly fast, production-ready implementations of advanced optimization and statistical inference algorithms. Built with Rust for maximum performance and exposed to Python through PyO3, it delivers 50-100× speedup over pure Python implementations.
|
||||
|
||||
## ✨ What's New in v2.0.0
|
||||
|
||||
This release adds **Python bindings for the v1.1 generic numerical primitives** and ships **eight brand-new CPU-only modules** covering rough volatility, mean-field control, BSDEs and robust inference. All v1.x APIs remain available — `import optimizr as opt` is unchanged.
|
||||
|
||||
New Python primitives (all importable directly from `optimizr`):
|
||||
|
||||
- **`solve_fractional_ode(h0, alpha, t_horizon, n_steps, rhs)`** — Caputo fractional ODE Adams scheme.
|
||||
- **`solve_volterra(g, kernel, t_horizon, n_steps)`** — second-kind Volterra integral equation.
|
||||
- **`linear_bsde_constant_coeffs(a, b, c, terminal, n_steps, t_horizon, theta=0.5)`** — backward SDE θ-scheme.
|
||||
- **`mean_reverting_mckean_vlasov(initial, theta, sigma, n_steps, t_horizon, seed)`** — N-particle McKean–Vlasov simulator (returns `paths_flat`, `n_particles`, `n_steps`, `time_grid`).
|
||||
- **`historical_var_py(losses, alpha)`** — empirical Value-at-Risk estimator.
|
||||
- Plus: `path_signature`, `random_signature`, `signature_kernel`, `persistent_homology`, `bottleneck_distance`, `spectral_cluster_py`, `mmd_gaussian`, `quadratic_impact_control_py`, and more.
|
||||
|
||||
A full non-regression suite for the v2 public API lives in `tests/test_v2_api.py` (analytic ground-truth checks for every advertised primitive).
|
||||
|
||||
```bash
|
||||
pip install --upgrade optimizr
|
||||
python -c "import optimizr; print(optimizr.solve_fractional_ode(1.0, 0.5, 1.0, 100, lambda t,h: 0.0)['h'][-1])"
|
||||
```
|
||||
|
||||
## ✨ What's New in v1.1.0
|
||||
|
||||
This release adds a broad collection of **CPU-only generic numerical primitives**, all purely additive:
|
||||
@@ -33,7 +53,7 @@ All new modules are exposed via the **Rust API only** in this release; Python bi
|
||||
🎉 **Production Ready** - First stable release with comprehensive documentation
|
||||
📚 **ReadTheDocs** - Full documentation at https://optimiz-r.readthedocs.io
|
||||
🏗️ **Published to crates.io** - Install with `cargo add optimiz-rs`
|
||||
🐍 **Published to PyPI** - Install with `pip install optimiz-rs`
|
||||
🐍 **Published to PyPI** - Install with `pip install optimizr`
|
||||
🔒 **Stable API** - Semantic versioning from v1.0.0 forward
|
||||
|
||||
## Features
|
||||
@@ -67,15 +87,19 @@ All new modules are exposed via the **Rust API only** in this release; Python bi
|
||||
### From PyPI (Python)
|
||||
|
||||
```bash
|
||||
pip install optimiz-rs
|
||||
pip install optimizr
|
||||
```
|
||||
|
||||
> **Note**: the historical PyPI distribution name is `optimizr` (no dash). The Python import name is also `optimizr`: `import optimizr as opt`.
|
||||
|
||||
### From crates.io (Rust)
|
||||
|
||||
```bash
|
||||
cargo add optimiz-rs
|
||||
```
|
||||
|
||||
> The Rust crate is `optimiz-rs` (with dash); its library name is `optimizr` (no dash) — matching the Python module.
|
||||
|
||||
### From Source
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user