Skip to content

wlsqm 1.0.0

Latest

Choose a tag to compare

@Technologicat Technologicat released this 15 Apr 07:23
· 2 commits to master since this release

v1.0.0 (15 April 2026)

First release under modern Python and modern packaging.

Python 2.7 and 3.4 are no longer supported.

New

  • Python 3.11 – 3.14 supported.
    • Pre-built wheels on PyPI for Linux, macOS, and Windows, with OpenMP
      parallelism enabled in every wheel.

Fixed

  • Data race in fit_1D_many_parallel, pre-existing from 2016.

    • Every OpenMP worker clobbered thread-0's work buffer, producing silently
      wrong fits whenever the parallel 1D many-case path ran with ntasks > 1. The
      2D/3D branch, the iterative parallel variant, and the serial variant were
      always correct.
  • rescale_dgeequ no longer silently accepts singular matrices.

    • It now checks LAPACK's info return and raises numpy.linalg.LinAlgError
      when a row or column is exactly zero.

Changed

  • Installation is now pip install wlsqm.

    • The old python setup.py install path is gone; setup.py has been removed.
    • The build system is meson-python,
      and dev environments are managed with PDM.
  • Language change on "Taylor series."

    • The storage layout still uses the same slots a Taylor expansion would (e.g.
      in 2D, f, ∂f/∂x, ∂f/∂y, ∂²f/∂x², ∂²f/∂x∂y, ∂²f/∂y², …), but the
      comments and docstrings no longer call the polynomial model a "Taylor series."
    • In the WLSQM method, the coefficients actually come from a least-squares
      fit, not from analytic differentiation. The error behavior is much better than
      the truncation of a Taylor series would predict.
    • The internal C-API function names taylor_1D/2D/3D are kept for backwards
      compatibility of downstream cimports — see
      wlsqm/fitter/polyeval.pyx.

Internal

  • Port from Cython 0.29 to Cython 3.x.

  • Comprehensive pytest suite. 57 tests, covering:

    • polynomial recovery across dimensions and orders,
    • ExpertSolver prepare/solve round-trips,
    • interpolation accuracy at interior points,
    • parallel ≡ serial implementation equivalence,
    • finite-difference stencil reproduction,
    • first-derivative robustness to Gaussian noise,
    • edge cases,
    • the LAPACK driver layer, and
    • .pxd installability for downstream cimport users.
  • ScalingAlgo is now a proper enum.IntEnum, replacing the old bare-class
    Python 2 workaround.

  • GitHub Actions CI: lint (ruff + cython-lint), test matrix
    (3 OSes × 4 Python versions), cibuildwheel for Linux/macOS/Windows
    wheels, meson-python sdist, and auto-publishing of releases on PyPI.