NumPy 1.26.1 发布说明#

NumPy 1.26.1 是一个维护版本,修复了在 1.26.0 版本发布后发现的错误和回归问题.此外,它增加了从源代码构建时检测 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 的线程层.有四个选项:seqiompgomptbb.默认是 auto,它会根据所选的 MKL 版本从这四个选项中适当选择.

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

新功能#

numpy._core 子模块存根#

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

贡献者#

总共有13个人为这次发布做出了贡献.名字后面带有”+”的人首次贡献了一个补丁.

  • 安德鲁·纳尔逊

  • 安东·普罗塞金 +

  • 查尔斯·哈里斯

  • 李重云 +

  • 伊万·A·梅尔尼科夫 +

  • 杰克·利什曼 +

  • Mahder Gebremedhin +

  • Mateusz Sokół

  • Matti Picus

  • Munira Alduraibi +

  • Ralf Gommers

  • Rohit Goswami

  • 赛义德·阿德尔

合并的拉取请求#

本次发布共合并了20个拉取请求.

  • #24742: MAINT: 更新 cibuildwheel 版本

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

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

  • #24773: DOC: 更新了 f2py 文档以删除关于 -fimplicit-none 的注释

  • #24776: BUG: 修复当基准为无时在 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: 在 PyPy 上失败的测试标记为 Xfail.

  • #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)