- Changed
BezierEasingfrom a boxed callable function to an unboxed struct. - Replaced direct calls like
ease(x)withease.sample(x). - Kept
bezier_easing(...)as the free constructor, now returning the unboxedBezierEasingstruct.
- Added
BezierEasing::new(...)as an associated constructor. - Added Criterion benchmarks comparing the unboxed implementation against the previous boxed implementation.
- Added bitwise regression tests to verify sampled
f32andf64values match the previous boxed implementation.
- Added upstream JavaScript golden-output tests for common, overshooting, steep, and degenerate curves.
- Added boundary tests for invalid x control points, NaN/Infinity handling, endpoint preservation, unclamped inputs, and y control points outside
[0, 1]. - Added
proptestcoverage for endpoint invariants, deterministic outputs, identity curves, symmetric curves, andf32/f64consistency. - Added a CI coverage gate requiring at least 90% line coverage for the library crate.
- Changed the default easing float type to
f64. - Added generic float support for both
f32andf64. - Changed
bezier_easingto return a boxed callable easing function. - Replaced the previous sample/Newton/subdivision solver with the Cardano-based solver used by the upstream JavaScript implementation.
- Added integration tests ported from upstream
gre/bezier-easing. - Added regression coverage for degenerate
a == 0curves matching upstream JavaScript behavior. - Added a Cargo workspace layout.
- Added a WebAssembly HTML demo under
examples/wasm-demo. - Added GitHub Actions CI and GitHub Pages deployment support.
- Aligned invalid x-control-point error text with upstream JavaScript.
- Fixed documentation and examples for floating-point comparisons.
- Initial Rust library release.