NumPy 1.26.1 Release Notes#

NumPy 1.26.1 is a maintenance release that fixes bugs and regressions discovered after the 1.26.0 release. In addition, it adds new functionality for detecting BLAS and LAPACK when building from source. Highlights are:

  • Improved detection of BLAS and LAPACK libraries for meson builds

  • Pickle compatibility with the upcoming NumPy 2.0.

The 1.26.release series is the last planned minor release series before NumPy 2.0. The Python versions supported by this release are 3.9-3.12.

Build system changes#

Improved BLAS/LAPACK detection and control#

Auto-detection for a number of BLAS and LAPACK is now implemented for Meson. By default, the build system will try to detect MKL, Accelerate (on macOS >=13.3), OpenBLAS, FlexiBLAS, BLIS and reference BLAS/LAPACK. Support for MKL was significantly improved, and support for FlexiBLAS was added.

New command-line flags are available to further control the selection of the BLAS and LAPACK libraries to build against.

To select a specific library, use the config-settings interface via pip or pypa/build. E.g., to select libblas/liblapack, use:

$ pip install numpy -Csetup-args=-Dblas=blas -Csetup-args=-Dlapack=lapack
$ # OR
$ python -m build . -Csetup-args=-Dblas=blas -Csetup-args=-Dlapack=lapack

This works not only for the libraries named above, but for any library that Meson is able to detect with the given name through pkg-config or CMake.

Besides -Dblas and -Dlapack, a number of other new flags are available to control BLAS/LAPACK selection and behavior:

  • -Dblas-order and -Dlapack-order: a list of library names to search for in order, overriding the default search order.

  • -Duse-ilp64: if set to true, use ILP64 (64-bit integer) BLAS and LAPACK. Note that with this release, ILP64 support has been extended to include MKL and FlexiBLAS. OpenBLAS and Accelerate were supported in previous releases.

  • -Dallow-noblas: if set to true, allow NumPy to build with its internal (very slow) fallback routines instead of linking against an external BLAS/LAPACK library. The default for this flag may be changed to ``true`` in a future 1.26.x release, however for 1.26.1 we’d prefer to keep it as ``false`` because if failures to detect an installed library are happening, we’d like a bug report for that, so we can quickly assess whether the new auto-detection machinery needs further improvements.

  • -Dmkl-threading: to select the threading layer for MKL. There are four options: seq, iomp, gomp and tbb. The default is auto, which selects from those four as appropriate given the version of MKL selected.

  • -Dblas-symbol-suffix: manually select the symbol suffix to use for the library - should only be needed for linking against libraries built in a non-standard way.

New features#

numpy._core submodule stubs#

numpy._core submodule stubs were added to provide compatibility with pickled arrays created using NumPy 2.0 when running Numpy 1.26.

Contributors#

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

  • Andrew Nelson

  • Anton Prosekin +

  • Charles Harris

  • Chongyun Lee +

  • Ivan A. Melnikov +

  • Jake Lishman +

  • Mahder Gebremedhin +

  • Mateusz Sokół

  • Matti Picus

  • Munira Alduraibi +

  • Ralf Gommers

  • Rohit Goswami

  • Sayed Adel

Pull requests merged#

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

  • #24742: MAINT: Update cibuildwheel version

  • #24748: MAINT: fix version string in wheels built with setup.py

  • #24771: BLD, BUG: Fix build failure for host flags e.g. -march=native

  • #24773: DOC: Updated the f2py docs to remove a note on -fimplicit-none

  • #24776: BUG: Fix SIMD f32 trunc test on s390x when baseline is none

  • #24785: BLD: add libquadmath to licences and other tweaks (#24753)

  • #24786: MAINT: Activate use-compute-credits for Cirrus.

  • #24803: BLD: updated vendored-meson/meson for mips64 fix

  • #24804: MAINT: fix licence path win

  • #24813: BUG: Fix order of Windows OS detection macros.

  • #24831: BUG, SIMD: use scalar cmul on bad Apple clang x86_64 (#24828)

  • #24840: BUG: Fix DATA statements for f2py

  • #24870: API: Add NumpyUnpickler for backporting

  • #24872: MAINT: Xfail test failing on PyPy.

  • #24879: BLD: fix math func feature checks, fix FreeBSD build, add CI…

  • #24899: ENH: meson: implement BLAS/LAPACK auto-detection and many CI…

  • #24902: DOC: add a 1.26.1 release notes section for BLAS/LAPACK build…

  • #24906: MAINT: Backport numpy._core stubs. Remove NumpyUnpickler

  • #24911: MAINT: Bump pypa/cibuildwheel from 2.16.1 to 2.16.2

  • #24912: BUG: loongarch doesn’t use REAL(10)