v2.5.2 (Aug 9, 2026)
- Wheels for Python 3.15.0rc1 are now included
- PyArray_StringDTypeObject is now opaque under the abi3t stable ABI, preventing access to struct fields in free-threading-compatible builds
- 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
- Fix buffered iterator stride after removing multi-index
- Fix np.fromiter corruption when reusing a StringDType
- Add a special case for StringDType in np.isdtype
- Fix reference leak in simd_sequence_from_iterable
- Ensure lock is held when accessing or writing to RNG state
- Fully reset cached RNG state for non-MT19937 RNGs
- Avoid possible stack overflow in arraydescr_dealloc
- Avoid segfaults when legacy copyswap slot is not defined
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
StringDTypecoerce 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.fromitercorruption when reusing aStringDType... - #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:
iscloseshape-typing fix for 2d array-likes (#32205) - #32221: BUG: avoid segfaults when legacy copyswap slot is not defined...