← Back to all sparks
N

NumPy

DEVOPS
Velocity2.5

Fundamental package for array computing and numerical analysis in Python

NumPy cut distutils loose and is quietly rebuilding for free-threaded Python.

numerical-computingfree-threadingarray-apipython-packagingc-api
Current state
NumPy is in the maintenance rhythm of a foundational library: a transitional minor release followed by a run of patch releases cleaning up what it broke. 2.5.0 removed distutils, expired a large batch of 2.0-era deprecations, and dropped Python 3.11. The patch line since has been about compatibility surfaces — a Cython datetime API fix so downstream can still target pre-2.5, a GCC minimum bump, and wheels for Python 3.15 release candidates.
Where it's heading
Two forces are steering releases. One is Python itself: NumPy is tracking 3.15 before it ships and steadily improving free-threading support, including fixing an ABI leak in the free-threading-compatible stable ABI. The other is the array-api standard, which is pulling NumPy's own semantics into line — descending sorts landed for exactly that reason.
Prediction
Expect the 2.5.x line to keep absorbing free-threading and Python 3.15 fallout; the entries suggest the interesting work now happens at the C API and build-system layers, not in array semantics.

Recent moves

  1. 1d ago

    Python 3.15rc1 wheels; StringDType struct made opaque under the free-threaded ABI

    Ships wheels for Python 3.15.0rc1, continuing the early-tracking pattern. The C API change is the substantive part: PyArray_StringDTypeObject was accidentally exposed under the free-threading stable ABI and is now opaque, a break shipped in a patch release precisely because any code relying on it would already have crashed.

    View source ↗
  2. 1mo ago

    Cython datetime API fix restores downstream support for older NumPy

    A patch release whose main fix lets downstream projects keep supporting NumPy versions older than 2.5 through the Cython datetime API. The GCC minimum moves from 9.3.0 to 10.3.0; otherwise typing and infrastructure.

    View source ↗
  3. 1mo ago

    Distutils removed, 2.0-era deprecations expired, descending sorts added

    ⚡ SPARK

    The release the rest of this window revolves around — every patch release since has been cleaning up after it. It closes out the 2.0 deprecation cycle and sets the free-threading and array-api direction the 2.5.x line now follows.

    View source ↗
  4. 2mo ago

    Release candidate for the 2.5.0 transitional release

    The release candidate carrying the same distutils removal, expired deprecations and descending sorts that shipped in 2.5.0 three weeks later. Notable only as the point where downstream projects got their first chance to test the break.

    View source ↗
  5. 2mo ago

    Quick fix for an arr.conj() regression in 2.4.5

    A four-patch emergency release fixing a conj() regression and a non-unitary result from hermitian SVD. Pure cleanup after the preceding patch release.

    View source ↗
  6. 2mo ago

    Patch release: typing fixes, s390x CI, f2py complex mapping

    Routine patch work — typing corrections, matrix_rank behavior on empty matrices, and native s390x CI jobs that surfaced a pack_inner bug. Nothing user-visible beyond the typing surface.

    View source ↗