NumPy 2.5.3 Release Notes
The NumPy 2.5.3 is a patch release that fixes bugs discovered after the 2.5.2
release. Apart from the usual bug and maintenance work, there are a number of
StringDType related fixes for problems discovered during the ongoing string
work in the main branch.
This release supports Python versions 3.12-3.15
Changes
-
Casting a fixed-width byte string array (
np.bytes_) toStringDType
now raisesTypeErrorwhen the bytes are not valid UTF-8. Previously the
invalid bytes were stored as-is and later caused undefined behavior in
string operations.(gh-32296)
-
MaskedArray._fill_valuewould become stale when ufuncs that change dtype
left the result holding a fill_value typed for the old dtype. The mismatch
was silent until something later called_check_fill_value, such as
.view(), and then aTypeErrorwould be raised. Now, when the copied
fill_value is no longer valid for the new dtype, fall back to the
default fill_value for that dtype instead of propagating the stale value.
This may raise aComplexWarningif the fill_value is complex and the
new dtype is real.(gh-32423)
Contributors
A total of 9 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.
- Charles Harris
- Iason Krommydas
- James Davies +
- Joren Hammudoglu
- Maanas Arora
- Matti Picus
- Nathan Goldbaum
- Shikhar Goel +
- Yeonho Kim +
Pull requests merged
A total of 27 pull requests were merged for this release.
- #32235: MAINT: Prepare 2.5.x for further development
- #32289: BUG: raise ValueError when reading into record array with references...
- #32290: BUG: avoid uninitialized memory access / NULL-pointer deref in...
- #32291: TYP: fix
np.random.{get,set}_bit_generatorimplicit re-exports... - #32292: BUG: don't assume strides are a multiple of itemsize in stringdtype...
- #32293: CI: fix ccache CC override, add CXX in mac Conda CI (#32285)
- #32303: BUG: Fix ref leak in [convert_from_type]{#convert_from_type} for custom scalar types...
- #32304: BUG: fix a number of issues around iterators and StringDType...
- #32326: TST: avoid allocating huge tuple of arrays in concatenate test...
- #32338: BUG: avoid possible UB in 'safe' multiplication helpers (#32294)
- #32339: MAINT: use
PyObject_functions instead of rawPyArray_ ones(#32331) - #32378: BUG: validate UTF-8 and harden StringDType bounds handling (#32296)
- #32380: BUG: fix two error handling mistakes in stringdtype replace loop...
- #32381: BUG: fix visibility annotations for functions in StringDType...
- #32384: MAINT: Update ml_dtypes pin to 8/21/2026.
- #32385: MAINT: Update numpy/_core/src/umath/svml
- #32410: MAINT: skip failing cython limited API tests on Cython 3.3.0...
- #32427: BUG: close duplicated file descriptor if fdopen fails (#32386)
- #32428: MAINT: add missing space in warning and error messages (#32405)
- #32430: BUG: fix error handling in StringDType to fixed-width bytes case...
- #32441: MAINT: Only run nightly BLAS tests on main.
- #32471: BUG: fix memory leak in StringDType creation error path (#32470)
- #32477: BUG: fix stale fill_value after ufuncs change MaskedArray dtype...
- #32478: MAINT: exit deadlock tests quickly on slow hardware (#32466)
- #32481: BUG: Backport StringDType byteorder fixes
- #32506: DOC: use static scipy doc site for intershpinx (#32503)
- #32509: BUG: fix crash in ufunc.resolve_dtypes with a Python scalar type...