NumPy 1.26.1 发行说明#
NumPy 1.26.1 是一个维护版本,修复了 1.26.0 版本发布后发现的错误和回归。此外,它增加了从源代码构建时检测 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 库。
要选择特定库,请通过 pip
或 pypa/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
、gomp
和tbb
。默认值为auto
,它会根据所选的 MKL 版本适当选择其中之一。-Dblas-symbol-suffix
:手动选择要用于库的符号后缀——仅在链接非标准方式构建的库时才需要。
新特性#
numpy._core
子模块存根#
添加了 numpy._core
子模块存根,以在使用 Numpy 1.26 运行时,提供与使用 NumPy 2.0 创建的 pickled 数组的兼容性。
贡献者#
共有 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:维护:更新 cibuildwheel 版本
#24748:维护:修复使用 setup.py 构建的 wheel 中的版本字符串
#24771:构建,错误:修复主机标志(例如
-march=native
)导致的构建失败…#24773:文档:更新 f2py 文档,删除关于 -fimplicit-none 的说明
#24776:错误:修复 s390x 上当基线为 none 时 SIMD f32 trunc 测试
#24785:构建:将 libquadmath 添加到许可证及其他调整 (#24753)
#24786:维护:为 Cirrus 激活
use-compute-credits
。#24803:构建:更新 vendored-meson/meson 以修复 mips64
#24804:维护:修复 Windows 许可证路径
#24813:错误:修复 Windows OS 检测宏的顺序。
#24831:错误,SIMD:在有问题的 Apple clang x86_64 上使用标量 cmul (#24828)
#24840:错误:修复 f2py 的 DATA 语句
#24870:API:添加
NumpyUnpickler
以进行向后移植#24872:维护:在 PyPy 上将失败的测试标记为 Xfail。
#24879:构建:修复数学函数特性检查,修复 FreeBSD 构建,添加 CI…
#24899:增强:meson:实现 BLAS/LAPACK 自动检测和许多 CI…
#24902:文档:为 BLAS/LAPACK 构建添加 1.26.1 发行说明部分…
#24906:维护:向后移植
numpy._core
存根。移除NumpyUnpickler
#24911:维护:将 pypa/cibuildwheel 从 2.16.1 提升到 2.16.2
#24912:错误:龙芯架构不使用 REAL(10)