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 ...float64 parameter with BoundsConfig struct in all five bounds estimators, enabling seed configuration without separate *WithSeed functions. Remove SpreadBoundsWithSeed, DisparityBoundsWithSeed, and avgSpreadBoundsWithSeed.

Bug Fixes

  • ts: Use BigInt for pairwise count arithmetic in fastShift, fastCenter, fastSpread, shiftBounds, and centerBounds to prevent 53-bit overflow when sample sizes exceed ~67M elements.
  • ts: Return bigint from deriveSeed and accept bigint in Rng constructor to preserve full 64-bit seed precision.
  • rs: Return Err instead of panicking in select_kth_pairwise_diff for k-out-of-range, NaN inputs, and convergence failure.
  • rs: Use u64 for pairwise products in pairwise_margin and shift_bounds to 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 selectKthPairwiseDiff for idiomatic error handling.
  • docs: Compute Go major version from VERSION instead of hardcoding v4 in the manual.

Improvements

  • cs: Remove dead Assertion.Validity calls across 12 estimator files — the Sample constructor already guarantees non-empty finite input.

Internal

  • ci: Run CI on dev branch.
  • go: Realign trailing comments in README and demo after the BoundsConfig refactor.

Full Changelog: https://github.com/AndreyAkinshin/pragmastat/compare/v10.0.4...v10.0.5

Release notes generated by herald v1.0.4