NumPy 1.26.1 发布说明#

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

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

  • 与即将发布的 NumPy 2.0 兼容的 Pickle.

1.26.x 系列是 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``,因为如果发生无法检测到已安装库的失败,我们希望收到 bug 报告,以便我们能够快速评估新的自动检测机制是否需要进一步改进。

  • -Dmkl-threading:用于选择 MKL 的线程层。有四种选项:seqiompgomptbb。默认值为 auto,它会根据所选 MKL 的版本从这四种中选择合适的。

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

新功能#

numpy._core 子模块存根#

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

贡献者#

共有 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 个 pull requests。

  • #24742: MAINT: 更新 cibuildwheel 版本

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

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

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

  • #24776: BUG: 修复 s390x 上 baseline 为 none 时 SIMD f32 截断测试

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

  • #24786: MAINT: 为 Cirrus 启用 use-compute-credits

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

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

  • #24813: BUG: 修复 Windows OS 检测宏的顺序。

  • #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: 向后移植 numpy._core 存根。删除 NumpyUnpickler

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

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