NumPy 1.26.1 发行说明#

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

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

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

1.26.release 系列是在 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 截断测试

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

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

  • #24803 : BLD:更新了为mips64修复的vendored-meson/meson

  • #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 test 在PyPy上失败.

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

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

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

  • #24906 : MAINT:反向移植 numpy._core 存根.移除 NumpyUnpickler

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

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