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 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

合併的 Pull Request#

此版本總共合併了 20 個 pull request。

  • #24742: MAINT: 更新 cibuildwheel 版本

  • #24748: MAINT: 修復使用 setup.py 建置的 wheels 中的版本字串

  • #24771: BLD, BUG: 修復主機標誌(例如 -march=native...)的建置失敗

  • #24773: DOC: 更新 f2py 文件以移除關於 -fimplicit-none 的註解

  • #24776: BUG: 修復當基準為 none 時 s390x 上的 SIMD f32 trunc 測試

  • #24785: BLD: 將 libquadmath 新增至授權及其他調整 (#24753)

  • #24786: MAINT: 為 Cirrus 啟用 use-compute-credits

  • #24803: BLD: 為 mips64 修復更新 vendored-meson/meson

  • #24804: MAINT: 修復授權路徑 win

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