版本 0.60.0 (2024年6月13日)

这是一个主要的 Numba 版本发布。Numba 现在支持 NumPy 2.0 的二进制版本。用户应注意,这尚未包括仍在进行中的与 NEP 50 相关的类型级别更改。此版本不保证与 NumPy 2.0 的执行级别兼容性,因此用户在使用 Numba 与 NumPy 2.0 时应预期会出现一些类型和数值偏差,这些偏差与正常 Python 行为有所不同。

请在下方找到所有值得注意项目的摘要。

亮点

NumPy 2.0 二进制支持

为 NumPy 2.0 添加了二进制支持。然而,这尚未包括仍在进行中的与 NEP 50 相关的类型级别更改。

以下是面向用户的更改摘要:

  • 之前可用于数组的 ptp() 方法已被弃用。建议改用 np.ptp(arr) 函数。

  • 数据类型 np.bool8 已被弃用,并被 np.bool 取代。

  • np.product 函数已被弃用;建议用户使用 np.prod 代替。

  • 从 NumPy 2.0 版本开始,itemset() 方法已从 ndarray 类中移除。要实现相同的功能,请使用赋值操作 arr[index] = value

  • 已弃用的常量 np.PINFnp.NINF 应分别替换为 np.inf 表示正无穷大和 -np.inf 表示负无穷大。

(PR-#9466)

新功能

在JIT代码中增强guvectorize支持

广义通用函数支持已扩展,现在可以从 JIT 编译的函数中调用 @guvectorize 装饰的函数。但是,请注意,广播功能尚未支持。在需要广播的情况下调用 guvectorize 函数可能会导致不正确的行为。

(PR-#8984)

添加对 ufunc.at 的实验性支持

添加了对 ufunc.at 的实验性支持。

(PR-#9239)

添加 float(<字符串字面量>) 构造函数

添加了对 float(<字符串字面量>) 的支持。

(PR-#9378)

添加对 math.log2 的支持。

添加了对 math.log2 的支持。

(PR-#9416)

为 nopython 模式添加 math.nextafter 支持。

在 nopython 模式下支持 math.nextafter

(PR-#9438)

添加对 parfor 二元操作归约的支持。

之前,只有像 += 这样的就地操作可以在 prange 中用作归约。现在,通过这个 PR,形式为 a = a binop b 的二元操作归约也可以使用。

(PR-#9521)

改进

扩展 isinstance() 对 NumPy 日期时间类型的支持

isinstance() 中添加对 numpy.datetime64numpy.timedelta64 类型的支持。

(PR-#9455)

Python 3.12 sys.monitoring 支持已添加到 Numba 的调度器中。

Python 3.12 引入了一个新的模块 sys.monitoring,该模块提供了一个事件驱动的监控 API,供需要监控执行的工具使用,例如调试器或分析器。Numba 的分发器类(处理 Python 解释器和编译代码之间控制转移的代码)已更新,以在适当的时候发出 sys.monitoring.events.PY_STARTsys.monitoring.events.PY_RETURN。这使得监视这些事件的工具能够识别控制何时进入和返回编译代码。由于这一变化,Numba 编译的代码现在以与历史相同的方式被 cProfile 识别,即它将出现在性能分析中。

(PR-#9482)

NumPy 支持

增加了对 np.size() 的支持

为 NumPy 添加了 np.size() 支持,该功能之前不受支持。

(PR-#9504)

CUDA API 变更

支持编译为 LTO-IR

在编译API中增加了对将设备函数编译为LTO-IR的支持。

(PR-#9274)

在CUDA中支持math.log、math.log2和math.log10

CUDA 目标现在支持 np.lognp.log2np.log10

(PR-#9417)

Bug 修复

修复parfor变量提升分析。

如果一个变量用于构建容器(例如,元组、列表、映射、集合)或作为参数传递给调用,那么保守地假设它可能会逃逸当前的并行循环迭代,因此不应被提升。

(PR-#9532)

弃用

弃用 old_style 错误捕获

根据弃用计划,old_style 错误捕获已被弃用,现在 defaultnew_style

(PR-#9549)

已过时的弃用

移除 numba.core.retarget

numba.core.retarget 中实现的一些实验性功能已被移除。这些功能主要用于 numba-dpex,但该项目已转而使用 target extension API 来替代 numba.core.retarget

(PR-#9539)

文档变更

numba.cuda.gpus.current 文档修正

numba.cuda.gpus.current 被错误地描述为一个函数,现在被描述为一个属性。

(PR-#9394)

CUDA 12 conda 安装文档

已为使用 CUDA 12 conda 的用户添加了安装说明。

(PR-#9487)

拉取请求:

作者: