NumPy v2.5.2

v2.5.2

v2.5.2 (Aug 9, 2026)

Added 1
  • Wheels for Python 3.15.0rc1 are now included
Changed 1
  • PyArray_StringDTypeObject is now opaque under the abi3t stable ABI, preventing access to struct fields in free-threading-compatible builds
Fixed 14
  • Fix StringDType coerce flag in binary ufunc promotion
  • Fix crash on 32 bit systems using abi3t
  • Fix CPU feature env diagnostic buffer overruns
  • Restore ndarray.conjugate() for legacy user-defined dtypes
  • Fix refcount leak on overlapping copyto with where=False
  • Fix swallowed cast error in fancy indexing assignment

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...
View original

Upgraded? How did it go?

Discussion