NumPy 1.26.0 Release Notes
The NumPy 1.26.0 release is a continuation of the 1.25.x release cycle
with the addition of Python 3.12.0 support. Python 3.12 dropped
distutils, consequently supporting it required finding a replacement for
the setup.py/distutils based build system NumPy was using. We have
chosen to use the Meson build system instead, and this is the first
NumPy release supporting it. This is also the first release that
supports Cython 3.0 in addition to retaining 0.29.X compatibility.
Supporting those two upgrades was a large project, over 100 files have
been touched in this release. The changelog doesn't capture the full
extent of the work, special thanks to Ralf Gommers, Sayed Adel, Stéfan
van der Walt, and Matti Picus who did much of the work in the main
development branch.
The highlights of this release are:
- Python 3.12.0 support.
- Cython 3.0.0 compatibility.
- Use of the Meson build system
- Updated SIMD support
- f2py fixes, meson and bind(x) support
- Support for the updated Accelerate BLAS/LAPACK library
The Python versions supported in this release are 3.9-3.12.
New Features
Array API v2022.12 support in numpy.array_api
numpy.array_api
now full supports the
v2022.12 version of the array API standard. Note that this does not
yet include the optional fft
extension in the standard.
(gh-23789)
Support for the updated Accelerate BLAS/LAPACK library
Support for the updated Accelerate BLAS/LAPACK library, including ILP64
(64-bit integer) support, in macOS 13.3 has been added. This brings
arm64 support, and significant performance improvements of up to 10x for
commonly used linear algebra operations. When Accelerate is selected at
build time, the 13.3+ version will automatically be used if available.
(gh-24053)
meson
backend for f2py
f2py
in compile mode (i.e. f2py -c
) now accepts the
--backend meson
option. This is the default option for Python 3.12
on-wards. Older versions will still default to --backend distutils
.
To support this in realistic use-cases, in compile mode f2py
takes a
--dep
flag one or many times which maps to dependency()
calls in the
meson
backend, and does nothing in the distutils
backend.
There are no changes for users of f2py
only as a code generator, i.e.
without -c
.
(gh-24532)
bind(c)
support for f2py
Both functions and subroutines can be annotated with bind(c)
. f2py
will handle both the correct type mapping, and preserve the unique label
for other C
interfaces.
Note: bind(c, name = 'routine_name_other_than_fortran_routine')
is
not honored by the f2py
bindings by design, since bind(c)
with the
name
is meant to guarantee only the same name in C
and Fortran
,
not in Python
and Fortran
.
(gh-24555)
Improvements
iso_c_binding
support for f2py
Previously, users would have to define their own custom f2cmap
file to
use type mappings defined by the Fortran2003 iso_c_binding
intrinsic
module. These type maps are now natively supported by f2py
(gh-24555)
Build system changes
In this release, NumPy has switched to Meson as the build system and
meson-python as the build backend. Installing NumPy or building a wheel
can be done with standard tools like pip
and pypa/build
. The
following are supported:
- Regular installs:
pip install numpy
or (in a cloned repo)
pip install .
- Building a wheel:
python -m build
(preferred), orpip wheel .
- Editable installs:
pip install -e . --no-build-isolation
- Development builds through the custom CLI implemented with
spin:spin build
.
All the regular pip
and pypa/build
flags (e.g.,
--no-build-isolation
) should work as expected.
NumPy-specific build customization
Many of the NumPy-specific ways of customizing builds have changed. The
NPY_*
environment variables which control BLAS/LAPACK, SIMD,
threading, and other such options are no longer supported, nor is a
site.cfg
file to select BLAS and LAPACK. Instead, there are
command-line flags that can be passed to the build via pip
/build
's
config-settings interface. These flags are all listed in the
meson_options.txt
file in the root of the repo. Detailed documented
will be available before the final 1.26.0 release; for now please see
the SciPy "building from source" docs
since most build customization works in an almost identical way in SciPy as it
does in NumPy.
Build dependencies
While the runtime dependencies of NumPy have not changed, the build
dependencies have. Because we temporarily vendor Meson and meson-python,
there are several new dependencies - please see the [build-system]
section of pyproject.toml
for details.
Troubleshooting
This build system change is quite large. In case of unexpected issues,
it is still possible to use a setup.py
-based build as a temporary
workaround (on Python 3.9-3.11, not 3.12), by copying
pyproject.toml.setuppy
to pyproject.toml
. However, please open an
issue with details on the NumPy issue tracker. We aim to phase out
setup.py
builds as soon as possible, and therefore would like to see
all potential blockers surfaced early on in the 1.26.0 release cycle.
Contributors
A total of 20 people contributed to this release. People with a "+" by
their names contributed a patch for the first time.
- @DWesl
- Albert Steppi +
- Bas van Beek
- Charles Harris
- Developer-Ecosystem-Engineering
- Filipe Laíns +
- Jake Vanderplas
- Liang Yan +
- Marten van Kerkwijk
- Matti Picus
- Melissa Weber Mendonça
- Namami Shanker
- Nathan Goldbaum
- Ralf Gommers
- Rohit Goswami
- Sayed Adel
- Sebastian Berg
- Stefan van der Walt
- Tyler Reddy
- Warren Weckesser
Pull requests merged
A total of 59 pull requests were merged for this release.
- #24305: MAINT: Prepare 1.26.x branch for development
- #24308: MAINT: Massive update of files from main for numpy 1.26
- #24322: CI: fix wheel builds on the 1.26.x branch
- #24326: BLD: update openblas to newer version
- #24327: TYP: Trim down the
_NestedSequence.__getitem__
signature - #24328: BUG: fix choose refcount leak
- #24337: TST: fix running the test suite in builds without BLAS/LAPACK
- #24338: BUG: random: Fix generation of nan by dirichlet.
- #24340: MAINT: Dependabot updates from main
- #24342: MAINT: Add back NPY_RUN_MYPY_IN_TESTSUITE=1
- #24353: MAINT: Update
extbuild.py
from main. - #24356: TST: fix distutils tests for deprecations in recent setuptools...
- #24375: MAINT: Update cibuildwheel to version 2.15.0
- #24381: MAINT: Fix codespaces setup.sh script
- #24403: ENH: Vendor meson for multi-target build support
- #24404: BLD: vendor meson-python to make the Windows builds with SIMD...
- #24405: BLD, SIMD: The meson CPU dispatcher implementation
- #24406: MAINT: Remove versioneer
- #24409: REL: Prepare for the NumPy 1.26.0b1 release.
- #24453: MAINT: Pin upper version of sphinx.
- #24455: ENH: Add prefix to _ALIGN Macro
- #24456: BUG: cleanup warnings
- #24460: MAINT: Upgrade to spin 0.5
- #24495: BUG:
asv dev
has been removed, useasv run
. - #24496: BUG: Fix meson build failure due to unchanged inplace auto-generated...
- #24521: BUG: fix issue with git-version script, needs a shebang to run
- #24522: BUG: Use a default assignment for git_hash
- #24524: BUG: fix NPY_cast_info error handling in choose
- #24526: BUG: Fix common block handling in f2py
- #24541: CI,TYP: Bump mypy to 1.4.1
- #24542: BUG: Fix assumed length f2py regression
- #24544: MAINT: Harmonize fortranobject
- #24545: TYP: add kind argument to numpy.isin type specification
- #24561: BUG: fix comparisons between masked and unmasked structured arrays
- #24590: CI: Exclude import libraries from list of DLLs on Cygwin.
- #24591: BLD: fix
_umath_linalg
dependencies - #24594: MAINT: Stop testing on ppc64le.
- #24602: BLD: meson-cpu: fix SIMD support on platforms with no features
- #24606: BUG: Change Cython
binding
directive to "False". - #24613: ENH: Adopt new macOS Accelerate BLAS/LAPACK Interfaces, including...
- #24614: DOC: Update building docs to use Meson
- #24615: TYP: Add the missing
casting
keyword tonp.clip
- #24616: TST: convert cython test from setup.py to meson
- #24617: MAINT: Fixup
fromnumeric.pyi
- #24622: BUG, ENH: Fix
iso_c_binding
type maps and fixbind(c)
... - #24629: TYP: Allow
binary_repr
to accept any object implementing... - #24630: TYP: Explicitly declare
dtype
andgeneric
hashable - #24637: ENH: Refactor the typing "reveal" tests using
typing.assert_type
- #24638: MAINT: Bump actions/checkout from 3.6.0 to 4.0.0
- #24647: ENH:
meson
backend forf2py
- #24648: MAINT: Refactor partial load Workaround for Clang
- #24653: REL: Prepare for the NumPy 1.26.0rc1 release.
- #24659: BLD: allow specifying the long double format to avoid the runtime...
- #24665: BLD: fix bug in random.mtrand extension, don't link libnpyrandom
- #24675: BLD: build wheels for 32-bit Python on Windows, using MSVC
- #24700: BLD: fix issue with compiler selection during cross compilation
- #24701: BUG: Fix data stmt handling for complex values in f2py
- #24707: TYP: Add annotations for the py3.12 buffer protocol
- #24718: DOC: fix a few doc build issues on 1.26.x and update
spin docs
...
Checksums
MD5
052d84a2aaad4d5a455b64f5ff3f160b numpy-1.26.0-cp310-cp310-macosx_10_9_x86_64.whl
874567083be194080e97bea39ea7befd numpy-1.26.0-cp310-cp310-macosx_11_0_arm64.whl
1a5fa023e05e050b95549d355890fbb6 numpy-1.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
2af03fbadd96360b26b993975709d072 numpy-1.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
32717dd51a915e9aee4dcca72acb00d0 numpy-1.26.0-cp310-cp310-musllinux_1_1_x86_64.whl
3f101e51b3b5f8c3f01256da645a1962 numpy-1.26.0-cp310-cp310-win32.whl
d523a40f0a5f5ba94f09679adbabf825 numpy-1.26.0-cp310-cp310-win_amd64.whl
6115698fdf5fb8cf895540a57d12bfb9 numpy-1.26.0-cp311-cp311-macosx_10_9_x86_64.whl
207603ee822d8af4542f239b8c0a7a67 numpy-1.26.0-cp311-cp311-macosx_11_0_arm64.whl
0cc5f95c4aebab0ca4f9f66463981016 numpy-1.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
a4654b46bc10738825f37a1797e1eba5 numpy-1.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
3b037dc746499f2a19bb58b55fdd0bfb numpy-1.26.0-cp311-cp311-musllinux_1_1_x86_64.whl
7bfb0c44e95f765e7fc5a7a86968a56c numpy-1.26.0-cp311-cp311-win32.whl
3355b510410cb20bacfb3c87632a731a numpy-1.26.0-cp311-cp311-win_amd64.whl
9624a97f1df9f64054409d274c1502f3 numpy-1.26.0-cp312-cp312-macosx_10_9_x86_64.whl
53429b1349542c38b2f3822c7f2904d5 numpy-1.26.0-cp312-cp312-macosx_11_0_arm64.whl
66a21bf4d8a6372cc3c4c89a67b96279 numpy-1.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
cb9abc312090046563eae619c0b68210 numpy-1.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
49e3498e0e0ec5c1f6314fb86d7f006e numpy-1.26.0-cp312-cp312-musllinux_1_1_x86_64.whl
f4a31765889478341597a7140044db85 numpy-1.26.0-cp312-cp312-win32.whl
e7d7ded11f89baf760e5ba69249606e4 numpy-1.26.0-cp312-cp312-win_amd64.whl
19698f330ae322c4813eed6e790a04d5 numpy-1.26.0-cp39-cp39-macosx_10_9_x86_64.whl
a3628f551d851fbcde6551adb8fcfe2b numpy-1.26.0-cp39-cp39-macosx_11_0_arm64.whl
b34af2ddf43b28207ec7e2c837cbe35f numpy-1.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
3d888129c86357ccfb779d9f0c1256f5 numpy-1.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
e49d00c779df59a786d9f41e0d73c520 numpy-1.26.0-cp39-cp39-musllinux_1_1_x86_64.whl
69f6aa8a0f3919797cb28fab7069a578 numpy-1.26.0-cp39-cp39-win32.whl
8233224840dcdda49b08da1d5e91a730 numpy-1.26.0-cp39-cp39-win_amd64.whl
c11b4d1181b825407b71a1ac8ec04a10 numpy-1.26.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
1515773d4f569d44c6a757cb5a636cb2 numpy-1.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
60dc766d863d8ab561b494a7a759d562 numpy-1.26.0-pp39-pypy39_pp73-win_amd64.whl
69bd28f07afbeed2bb6ecd467afcd469 numpy-1.26.0.tar.gz
SHA256
f8db2f125746e44dce707dd44d4f4efeea8d7e2b43aace3f8d1f235cfa2733dd numpy-1.26.0-cp310-cp310-macosx_10_9_x86_64.whl
0621f7daf973d34d18b4e4bafb210bbaf1ef5e0100b5fa750bd9cde84c7ac292 numpy-1.26.0-cp310-cp310-macosx_11_0_arm64.whl
51be5f8c349fdd1a5568e72713a21f518e7d6707bcf8503b528b88d33b57dc68 numpy-1.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
767254ad364991ccfc4d81b8152912e53e103ec192d1bb4ea6b1f5a7117040be numpy-1.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
436c8e9a4bdeeee84e3e59614d38c3dbd3235838a877af8c211cfcac8a80b8d3 numpy-1.26.0-cp310-cp310-musllinux_1_1_x86_64.whl
c2e698cb0c6dda9372ea98a0344245ee65bdc1c9dd939cceed6bb91256837896 numpy-1.26.0-cp310-cp310-win32.whl
09aaee96c2cbdea95de76ecb8a586cb687d281c881f5f17bfc0fb7f5890f6b91 numpy-1.26.0-cp310-cp310-win_amd64.whl
637c58b468a69869258b8ae26f4a4c6ff8abffd4a8334c830ffb63e0feefe99a numpy-1.26.0-cp311-cp311-macosx_10_9_x86_64.whl
306545e234503a24fe9ae95ebf84d25cba1fdc27db971aa2d9f1ab6bba19a9dd numpy-1.26.0-cp311-cp311-macosx_11_0_arm64.whl
8c6adc33561bd1d46f81131d5352348350fc23df4d742bb246cdfca606ea1208 numpy-1.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
e062aa24638bb5018b7841977c360d2f5917268d125c833a686b7cbabbec496c numpy-1.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
546b7dd7e22f3c6861463bebb000646fa730e55df5ee4a0224408b5694cc6148 numpy-1.26.0-cp311-cp311-musllinux_1_1_x86_64.whl
c0b45c8b65b79337dee5134d038346d30e109e9e2e9d43464a2970e5c0e93229 numpy-1.26.0-cp311-cp311-win32.whl
eae430ecf5794cb7ae7fa3808740b015aa80747e5266153128ef055975a72b99 numpy-1.26.0-cp311-cp311-win_amd64.whl
166b36197e9debc4e384e9c652ba60c0bacc216d0fc89e78f973a9760b503388 numpy-1.26.0-cp312-cp312-macosx_10_9_x86_64.whl
f042f66d0b4ae6d48e70e28d487376204d3cbf43b84c03bac57e28dac6151581 numpy-1.26.0-cp312-cp312-macosx_11_0_arm64.whl
e5e18e5b14a7560d8acf1c596688f4dfd19b4f2945b245a71e5af4ddb7422feb numpy-1.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
7f6bad22a791226d0a5c7c27a80a20e11cfe09ad5ef9084d4d3fc4a299cca505 numpy-1.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
4acc65dd65da28060e206c8f27a573455ed724e6179941edb19f97e58161bb69 numpy-1.26.0-cp312-cp312-musllinux_1_1_x86_64.whl
bb0d9a1aaf5f1cb7967320e80690a1d7ff69f1d47ebc5a9bea013e3a21faec95 numpy-1.26.0-cp312-cp312-win32.whl
ee84ca3c58fe48b8ddafdeb1db87388dce2c3c3f701bf447b05e4cfcc3679112 numpy-1.26.0-cp312-cp312-win_amd64.whl
4a873a8180479bc829313e8d9798d5234dfacfc2e8a7ac188418189bb8eafbd2 numpy-1.26.0-cp39-cp39-macosx_10_9_x86_64.whl
914b28d3215e0c721dc75db3ad6d62f51f630cb0c277e6b3bcb39519bed10bd8 numpy-1.26.0-cp39-cp39-macosx_11_0_arm64.whl
c78a22e95182fb2e7874712433eaa610478a3caf86f28c621708d35fa4fd6e7f numpy-1.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
86f737708b366c36b76e953c46ba5827d8c27b7a8c9d0f471810728e5a2fe57c numpy-1.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
b44e6a09afc12952a7d2a58ca0a2429ee0d49a4f89d83a0a11052da696440e49 numpy-1.26.0-cp39-cp39-musllinux_1_1_x86_64.whl
5671338034b820c8d58c81ad1dafc0ed5a00771a82fccc71d6438df00302094b numpy-1.26.0-cp39-cp39-win32.whl
020cdbee66ed46b671429c7265cf00d8ac91c046901c55684954c3958525dab2 numpy-1.26.0-cp39-cp39-win_amd64.whl
0792824ce2f7ea0c82ed2e4fecc29bb86bee0567a080dacaf2e0a01fe7654369 numpy-1.26.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
7d484292eaeb3e84a51432a94f53578689ffdea3f90e10c8b203a99be5af57d8 numpy-1.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
186ba67fad3c60dbe8a3abff3b67a91351100f2661c8e2a80364ae6279720299 numpy-1.26.0-pp39-pypy39_pp73-win_amd64.whl
f93fc78fe8bf15afe2b8d6b6499f1c73953169fad1e9a8dd086cdff3190e7fdf numpy-1.26.0.tar.gz