Skip to content

v0.4.0

Choose a tag to compare

@anevolbap anevolbap released this 11 May 08:19
· 332 commits to main since this release

Fourth release. Closes the per-family performance gap: every lmrob-supported psi family now goes through the same Cython resampling kernel.

Added

  • Cython fast path for all five lmrob-supported psi families. hampel, optimal, lqq, and ggw now share the same nogil C kernel as bisquare. ggw brings the six polynomial chi coefficient tables and the _GGW_ABC (a, b, c) lookup over from _psi.pyx so the iteration body stays nogil. Uniform per-iteration runtime at n=500/p=10/nR=500: ~110-180 ms across families (down from 200-280 ms on the v0.3.0 NumPy path for the non-bisquare families). Stackloss element-wise parity vs R is preserved for all families.
  • Read the Docs config (.readthedocs.yaml). Builds the Sphinx site on every push and PR. Ubuntu 22.04 + Python 3.11 with libopenblas/liblapack apt packages. fail_on_warning: true keeps doc breakage visible in CI.

Known limitations

  • The survivor-refinement loop (_refine_to_convergence) and the subset-draw RNG are still pure Python. Closing them would shrink the remaining n=100 gap (~5x R) but requires a Cython-callable PCG64.
  • PyPI publishing is deferred.