NumPy 2.5.2 Release Notes#

The NumPy 2.5.2 is a patch release that fixes bugs discovered after the 2.5.1 release. The big news is that it includes wheels for the newly released Python 3.15.0rc1.

This release supports Python versions 3.12-3.15

C API changes#

PyArray_StringDTypeObject is opaque under the abi3t stable ABI#

The PyArray_StringDTypeObject was accidentally exposed in NumPy 2.5 when targeting the free-threading-compatible stable ABI (Py_TARGET_ABI3T). PyArray_StringDTypeObject is now an opaque struct: extensions compiled that way cannot access its fields, since the struct layout depends on the size of the object header. Any code that accessed PyArray_StringDTypeObject fields in an abi3t build would have crashed, so we are making this API change in a bugfix release.

The NpyString allocator API remains usable by passing the descriptor object pointer, e.g. NpyString_acquire_allocator((PyArray_StringDTypeObject *)descr).

(gh-31771)

Contributors#

A total of 16 people contributed to this release. People with a “+” by their names contributed a patch for the first time.

  • Abhijeetsingh Meena +

  • Charalampos Stratakis

  • Charles Harris

  • Chris Ninham +

  • David Woods

  • Geonho +

  • Gopu Yeshwanth Reddy +

  • Iason Krommydas

  • Ijtihed Kilani

  • Jelle Zijlstra +

  • Joren Hammudoglu

  • Kumar Aditya

  • Mike Boyle

  • Nathan Goldbaum

  • Raghuveer Devulapalli

  • Sebastian Berg

Pull requests merged#

A total of 28 pull requests were merged for this release.

  • #31864: MAINT: Prepare 2.5.x for further development

  • #31889: TYP: Backport multiple static typing fixes 1.

  • #31900: TST: add tests for stable ABI numpy extensions (#31822)

  • #31901: BUG: fix StringDType coerce flag in binary ufunc promotion…

  • #31902: BLD: fix meson deprecation warnings (#31892)

  • #31921: TYP: Backport multiple typing fixes 2.

  • #31947: MAINT: Update x86-simd-sort subproject (5adb334 → fa944ef) (#31908)

  • #31949: BUG: fix crash on 32 bit systems using abi3t (#31771)

  • #31950: MNT: remove some obsolete string to bool workarounds (#31859)

  • #31952: BUG: centralized helper for output coerce and na_object in stringdtype…

  • #31953: BUG: fix CPU feature env diagnostic buffer overruns (#31905)

  • #31954: BUG: restore ndarray.conjugate() for legacy user-defined dtypes…

  • #31955: TYP: Avoid shadowed dtype annotations

  • #32077: MAINT: Update verdored-meson/meson to match main.

  • #32114: BUG: fix refcount leak on overlapping copyto with where=False

  • #32115: BUG: fix swallowed cast error in fancy indexing assignment (#31975)

  • #32116: BUG: Fix buffered iterator stride after removing multi-index

  • #32117: BUG: fix np.fromiter corruption when reusing a StringDType

  • #32119: BUG: add a special case for StringDType in np.isdtype (#32030)

  • #32121: BUG: reference leak in simd_sequence_from_iterable (#32038)

  • #32122: BUG: ensure lock is held when accessing or writing to RNG state…

  • #32123: BUG: fully reset cached RNG state for non-MT19937 RNGs (#32062)

  • #32135: TYP: type capabilities max dimensions

  • #32158: BUG: avoid possible stack overflow in arraydescr_dealloc (#32133)

  • #32206: MAINT: Update cibuildwheel to v4.2.0

  • #32214: MAINT: Skip limited_api tests on some platforms.

  • #32220: TYP: isclose shape-typing fix for 2d array-likes (#32205)

  • #32221: BUG: avoid segfaults when legacy copyswap slot is not defined…