v10.0.5 fixes integer overflow and precision issues in TypeScript, replaces panics with proper error returns in Rust and Go, and refactors the Go bounds API to use a config struct.
Breaking Changes
- go: Replace variadic
misrate ...float64parameter withBoundsConfigstruct in all five bounds estimators, enabling seed configuration without separate*WithSeedfunctions. RemoveSpreadBoundsWithSeed,DisparityBoundsWithSeed, andavgSpreadBoundsWithSeed.
Bug Fixes
- ts: Use BigInt for pairwise count arithmetic in
fastShift,fastCenter,fastSpread,shiftBounds, andcenterBoundsto prevent 53-bit overflow when sample sizes exceed ~67M elements. - ts: Return bigint from
deriveSeedand accept bigint inRngconstructor to preserve full 64-bit seed precision. - rs: Return
Errinstead of panicking inselect_kth_pairwise_difffor k-out-of-range, NaN inputs, and convergence failure. - rs: Use
u64for pairwise products inpairwise_marginandshift_boundsto prevent overflow on 32-bit targets. - rs: Preserve original error messages from fast algorithms instead of replacing them with misleading validity errors.
- go: Return errors instead of panicking in
selectKthPairwiseDifffor idiomatic error handling. - docs: Compute Go major version from
VERSIONinstead of hardcodingv4in the manual.
Improvements
- cs: Remove dead
Assertion.Validitycalls across 12 estimator files — theSampleconstructor already guarantees non-empty finite input.
Internal
- ci: Run CI on
devbranch. - go: Realign trailing comments in README and demo after the
BoundsConfigrefactor.
Full Changelog: https://github.com/AndreyAkinshin/pragmastat/compare/v10.0.4...v10.0.5
Release notes generated by herald v1.0.4