Skip to content

feat!: breaking API batch — v2.1.0 (#63 #64 #65 #66) - #121

Merged
pandashark merged 7 commits into
mainfrom
feat/api-breaking-batch
Mar 25, 2026
Merged

feat!: breaking API batch — v2.1.0 (#63 #64 #65 #66)#121
pandashark merged 7 commits into
mainfrom
feat/api-breaking-batch

Conversation

@pandashark

Copy link
Copy Markdown
Contributor

Summary

Batched all 4 remaining breaking API changes into a single release (v2.1.0).

Breaking Changes

Semver Note

v2.1.0 (pragmatic) — 0 downstream crates on crates.io. Breaking changes documented in commit messages with feat!: prefix.

Changes

  • 30 files changed, 213 insertions, 216 deletions (net -3)
  • Core: ArbitrageReport, SurfaceDiagnostics restructured; 2 trait methods added
  • Bindings: Python + WASM updated for all 4 changes
  • Tests: 65 WASM tests (was 63), all Rust tests updated

Test plan

  • 877 Rust lib + 5 bench + 17 doc + 40 integration + 13 proptest + 15 hendriks + 20 doctest = 987 Rust tests
  • 65 WASM tests pass
  • 255 Python tests pass
  • Zero clippy warnings
  • All 6 roborev reviews addressed and closed

Closes #63, closes #64, closes #65, closes #66

#66)

BREAKING: ArbitrageReport.is_free is now a computed method, not a stored
field. ArbitrageReport gains expiry: f64 field. merge() removed (was only
used in tests). clean() now takes expiry parameter. Serde output no longer
includes is_free (derivable from violations).
BREAKING: SurfaceDiagnostics.is_free is now a computed method. Serde
output no longer includes is_free. Computed from smile_reports and
calendar_violations, matching the logic previously duplicated at every
construction site.
BREAKING: SmileSection gains required model_name() method returning
&'static str. Returns "SVI", "SABR", "CubicSpline", "SSVI", "eSSVI".
BREAKING: VolSurface gains required tenors() method returning &[f64].
Enables generic code over Box<dyn VolSurface> to discover tenor grid.
…65 #66)

Expose ArbitrageReport.expiry, tenors() on surface types, model_name()
on smile types. Update WASM serde assertions for removed is_free field.
Breaking API changes in this release:
- ArbitrageReport: is_free is computed, expiry field added, merge() removed
- SurfaceDiagnostics: is_free is computed
- SmileSection: model_name() added
- VolSurface: tenors() added
Address roborev review gaps: model_name on SVI/SABR, expiry getter,
tenors on PiecewiseSurface, stronger serde assertion.
@pandashark
pandashark merged commit 6c26184 into main Mar 25, 2026
5 checks passed
@pandashark
pandashark deleted the feat/api-breaking-batch branch March 25, 2026 13:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant