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 库.
要选择特定的库,请通过 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 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)