NumPy 1.26.1 发行说明#

NumPy 1.26.1 是一个维护版本,修复了在 1.26.0 版本发布后发现的 bug 和回归.此外,它还添加了在从源代码构建时检测 BLAS 和 LAPACK 的新功能.亮点包括:

  • 改进了 meson 构建对 BLAS 和 LAPACK 库的检测

  • 与即将到来的 NumPy 2.0 的 Pickle 兼容性.

1.26 发布系列是 NumPy 2.0 之前的最后一个计划的小版本系列.此版本支持的 Python 版本为 3.9-3.12.

构建系统变更#

改进的 BLAS/LAPACK 检测和控制#

现在,Meson 实现了对许多 BLAS 和 LAPACK 的自动检测.默认情况下,构建系统将尝试检测 MKL,Accelerate(在 macOS >=13.3 上),OpenBLAS,FlexiBLAS,BLIS 和参考 BLAS/LAPACK.对 MKL 的支持得到了显着改进,并增加了对 FlexiBLAS 的支持.

现在可以使用新的命令行标志来进一步控制用于构建的 BLAS 和 LAPACK 库的选择.

要选择特定的库,请通过 pippypa/build 使用 config-settings 接口.例如,要选择 libblas / liblapack ,请使用:

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

这不仅适用于上面命名的库,而且适用于 Meson 能够通过 pkg-config 或 CMake 以给定名称检测到的任何库.

除了 -Dblas-Dlapack 之外,还有许多其他新标志可用于控制 BLAS/LAPACK 的选择和行为:

  • -Dblas-order-Dlapack-order :一个库名称列表,用于按顺序搜索,覆盖默认搜索顺序.

  • -Duse-ilp64 :如果设置为 true ,则使用 ILP64(64 位整数)BLAS 和 LAPACK.请注意,在此版本中,ILP64 支持已扩展到包括 MKL 和 FlexiBLAS.之前的版本支持 OpenBLAS 和 Accelerate.

  • -Dallow-noblas :如果设置为 true ,则允许 NumPy 使用其内部(非常慢)的回退例程进行构建,而不是链接到外部 BLAS/LAPACK 库.此标志的默认值可能会在未来的 1.26.x 版本中更改为 true ,但是对于 1.26.1,我们更希望将其保留为 false ,因为如果检测已安装的库失败,我们希望收到一个关于此的错误报告,以便我们能够快速评估新的自动检测机制是否需要进一步改进.

  • -Dmkl-threading :选择 MKL 的线程层.有四个选项: seq , iomp , gomptbb .默认值为 auto ,它会根据所选的 MKL 版本从这四个选项中进行选择.

  • -Dblas-symbol-suffix :手动选择用于库的符号后缀 - 仅在链接到以非标准方式构建的库时才需要.

新功能#

numpy._core 子模块存根#

添加了 numpy._core 子模块存根,以便在使用 NumPy 1.26 运行时提供与使用 NumPy 2.0 创建的 pickle 数组的兼容性.

贡献者#

总共有 13 个人为此版本做出了贡献.名字旁边带有“+”的人是第一次贡献补丁.

  • 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

合并的拉取请求#

此版本总共合并了 20 个拉取请求.

  • #24742 : MAINT: 更新 cibuildwheel 版本

  • #24748 : MAINT: 修复使用 setup.py 构建的 wheels 中的版本字符串

  • #24771 : BLD, BUG: 修复主机标志(例如 -march=native )的构建失败…

  • #24773 : DOC: 更新 f2py 文档以移除关于 -fimplicit-none 的说明

  • #24776 : BUG: 修复当基线为 none 时 s390x 上的 SIMD f32 trunc 测试

  • #24785 : BLD: 添加 libquadmath 到许可证和其他调整 (#24753)

  • #24786 : MAINT: 为 Cirrus 激活 use-compute-credits .

  • #24803 : BLD: 更新 vendored-meson/meson 以修复 mips64

  • #24804 : MAINT: 修复许可证路径 win

  • #24813 : BUG: 修复 Windows 操作系统检测宏的顺序.

  • #24831 : BUG, SIMD: 在错误的 Apple clang x86_64 上使用标量 cmul (#24828)

  • #24840 : BUG: 修复 f2py 的 DATA 语句

  • #24870 : API: 添加 NumpyUnpickler 用于向后移植

  • #24872 : MAINT: Xfail 在 PyPy 上失败的测试.

  • #24879 : BLD: 修复数学函数特性检查,修复 FreeBSD 构建,添加 CI…

  • #24899 : ENH: meson: 实现 BLAS/LAPACK 自动检测和许多 CI…

  • #24902 : DOC: 为 BLAS/LAPACK 构建添加 1.26.1 发行说明部分…

  • #24906 : MAINT: Backport numpy._core 存根.移除 NumpyUnpickler

  • #24911 : MAINT: 将 pypa/cibuildwheel 从 2.16.1 升级到 2.16.2

  • #24912 : BUG: loongarch 不使用 REAL(10)