新闻详情

新闻详情

首页 / 资讯中心 / 详情

Numba 0.63.0 版本解读:Python 3.14 与 free-threading 实验支持、osx-64 降级与一系列正确性修复

发布时间:2026/9/24 22:44:07来源:尧图网络
Numba 0.63.0 版本解读:Python 3.14 与 free-threading 实验支持、osx-64 降级与一系列正确性修复
Numba 0.63.0 版本解读Python 3.14 与 free-threading 实验支持、osx-64 降级与一系列正确性修复【免费下载链接】numbaNumPy aware dynamic Python compiler using LLVM项目地址: https://gitcode.com/gh_mirrors/nu/numba本文围绕 Numba 0.63.0发布于 2025 年 12 月 8 日这一主版本展开系统梳理其新增的 Python 3.14 支持、对 free-threading 模式 CPython 的初始实验性适配、math.exp2新函数支持、CUDA 驱动兼容性修复、并行缓存与内存管理等关键 Bug 修复以及 macOS Intelosx-64平台降级为 Tier 2 支持等重大变更并结合当前仓库源码给出实现层面的印证帮助读者评估升级影响并掌握新版本能力。版本概览与核心定位依据 0.63.0 发布说明这是 Numba 的一个主版本major release其核心亮点可概括为三点Python 版本支持前移正式支持 Python 3.14并首次为启用 free-threading自由线程即无 GIL构建的 CPython 提供实验性支持平台支持策略调整Intel x86_64 macOS即 conda 命名的osx-64被弃用并降级为 Tier 2 支持相关 CI 与二进制产物停止发布一批正确性修复涵盖并行函数缓存、np.copy、np.ndenumerate、gufunc 内存泄漏以及 CUDA 驱动兼容性等方向。该版本的完整变更清单Pull-Requests 列表与作者列表均可在发布说明文档中查阅下文将对每类变更逐一展开。新特性向无 GIL 的 Python 迈进free-threading自由线程Python 的初始支持0.63.0 最重要也最具前瞻性的新特性是代码库开始支持以 free-threading 模式--disable-gil构建、Py_GIL_DISABLED编译的 CPython 解释器对应 PR #10226。需要特别强调的是该特性仍处于experimental状态会随后续开发持续演进已弃用的numba.pycc模块不支持创建 free-threaded 的 AOT 编译模块即 AOT 与自由线程不能同时使用。从仓库现状看free-threading 相关适配痕迹已渗透到核心模块numba/core/options.py、numba/core/cpu.py、numba/core/object_mode_passes.py等文件均包含对无 GIL 构建的处理逻辑numba/_pymodule.h与numba/cloudpickle/cloudpickle.py中也存在相应条件编译/运行时分支。可以推断后续版本会围绕该实验特性持续补齐线程安全与内存管理语义。新增math.exp2支持math.exp2计算 2 的 x 次幂自 Python 3.11 起加入标准库0.63.0 在 Numba 中为其补上了 JIT 支持对应 PR #10276。实现层面与math.exp一致直接映射到 LLVM 内建指令# numba/cpython/mathimpl.py exp_impl unary_math_intr(math.exp, llvm.exp) if sys.version_info (3, 11): exp2_impl unary_math_intr(math.exp2, llvm.exp2)可见其仅在 Python 3.11 环境下注册通过unary_math_intr将math.exp2翻译为llvm.exp2内建指令并由 mathimpl.py 中的封装统一处理浮点与整数输入的提升。对应测试位于 test_mathlib.py覆盖 int16–uint64 与 float32/float64 多种输入类型。NumPy 侧的np.exp2亦有独立实现numba/np/npyfuncs.py中的np_real_exp2_impl同样调用llvm.exp2复数版本则通过乘以_NPY_LOGE2后复用np_complex_exp_impl并被 test_ufunc.py 覆盖。改进Python 3.14 正式支持0.63.0 实现了对 Python 3.14 的支持对应 PR #10150同步更新了发布物分类器trove classifier、CI 测试矩阵与依赖版本。仓库中相关配套改动包括CI 工作流在 Linux/macOS/Windows 上并行测试 Python 3.14PR #10242Azure 脚本将 gcc/gxx 固定到 v11 以适配新版本工具链PR #10327并更新了版本支持表PR #10333。需要说明的是Python 3.14 支持与 free-threading 实验支持是两个独立的维度前者是常规版本前移后者是针对无 GIL 构建模式的额外实验能力二者互不包含。CUDA 相关变更修复 NVIDIA 驱动 580 崩溃0.63.0 修复了 CUDA 目标在NVIDIA 驱动 580 及更高版本下崩溃的问题对应 PR #10237。该缺陷位于 CUDA 驱动封装层此修复此前已在独立的numba-cuda包中完成本次将其**回迁backport**到 Numba 主包以照顾尚未迁移的用户。发布说明同时明确鼓励所有 CUDA 用户切换到numba-cuda包以获得最新的 CUDA 支持。从源码看CUDA 驱动版本通过cuDriverGetVersion查询driver.py 中的get_version()将编码为1000 * major 10 * minor的整数值解包为(major, minor)元组驱动版本相关的入口在numba/cuda/cudadrv/drvapi.py中声明。这类版本敏感路径正是驱动升级后容易触发回归的位置580 系列驱动的引入促使封装层做了兼容性修正。Bug 修复详解附源码印证修复缓存了 parallelTrue 函数后 reload_init 未沿调用链传播此前reload_init记录模块重载时需要重新执行的初始化动作只为当前函数维护而不覆盖其被调用的函数。后果是若被调用函数需要重载初始化典型如parallelTrue的 parfors 需要重新拉起线程池而父函数已命中磁盘缓存则重载不会发生对应 PR #9950。修复方式是把reload_init沿调用链向父函数传播。仓库中的实现证据链清晰可见typed_passes.py 定义了_reload_parfors()其唯一职责是“从缓存加载时重新初始化并行后端”即调用numba.np.ufunc.parallel._launch_threads()在 typed_passes.py 处ParforPass会把_reload_parfors追加进state.reload_init函数库对象在 codegen.py 中以self._reload_init set()维护该集合并在finalize()阶段通过“父库继承子库_reload_init”的机制codegen.py完成向上传播_launch_threads()本身位于 parallel.py借助进程/线程级锁保证线程池只初始化一次并按NUMBA_THREADING_LAYER环境变量见 config.py选择 tbb / omp / workqueue 后端。修复types.ListType字符串表示可被求值types.ListType的规范字符串表示此前不可直接求值0.63.0 将其修正为可求值形式对应 PR #10195。核心改动是获取列表元素类型字符串表示时由str()改为repr()# numba/core/types/containers.py class ListType(IterableType): ... def __repr__(self): return fListType({repr(self.item_type)})即ListType的repr现在使用元素类型的repr而非str从而保证诸如ListType(types.float64)之类的输出可以被eval还原为相同类型对象。这一点对调试输出、as_numba_type转换以及序列化场景均有益相关用法可见于 test_asnumbatype.py 中对types.ListType(types.float64)等容器类型的断言。修复对非 Array 类型调用np.copy触发 UnboundLocalError此前在 JIT 函数内对非数组参数如 list、标量调用np.copy会触发UnboundLocalError0.63.0 修复了该问题对应 PR #10201。其实现位于 arrayobj.py 的overload(np.copy)overload(np.copy) def impl_numpy_copy(a): if not type_can_asarray(a): raise errors.TypingError(The argument a must be array-like) if isinstance(a, types.Array): def numpy_copy(a): return _array_copy_intrinsic(a) else: def numpy_copy(a): # asarray automatically copies non-Array types return np.asarray(a) return numpy_copy修复逻辑清晰对Array类型走基于a.copy(layout...)的专用内建路径_array_copy_intrinsic见 arrayobj.py对非数组但可asarray的类型则退化为np.asarray(a)完成隐式拷贝对既不是数组也无法 asarray 的类型则在类型推断期抛出可读的TypingError而非运行期的UnboundLocalError。修复np.ndenumerate对零维数组的支持np.ndenumerate()此前在 JIT 编译函数中处理零维数组时会抛出IndexError0.63.0 修复了该问题对应 PR #10288。其 lowering 实现位于 arrayobj.py 的lower_builtin(np.ndenumerate, types.Array)通过make_array_ndenumerate_cls构造迭代器类型测试用例 test_array_iterators.py 验证了零维数组np.array(97)迭代结果应为((), 97)——即索引元组为空、元素值正确返回与纯 Python 行为保持一致。修复gufunc 从 JIT 函数调用时的内存泄漏当 gufunc广义 ufunc从jit函数内部调用时存在内存泄漏对应 PR #10298。根因是 gufunc 的 loopnest 中引用计数错误——对数组切片array slices多计了一次引用导致内存无法被及时回收。修复涉及 gufunc 循环包装器的引用计数语义相关生成逻辑位于 wrappers.pybuild_gufunc_wrapper及 ufunc/gufunc 循环体构建部分gufunc 的 kernel 生成入口在numba/np/ufunc/gufunc.py的make_gufunc_kernel。弃用macOS Intelosx-64降级至 Tier 20.63.0 正式弃用 Intel x86_64 macOS 平台conda 命名osx-64并将其按 Support Tiers 政策 降级为 Tier 2 支持对应 PR #10243 等。具体影响CI 不再测试该平台仓库的 GitHub Actions / Azure 工作流已移除osx-64相关作业与脚本新版本不再发布osx-64二进制产物平台代码仍保留在源码树中可能基于社区反馈继续工作但不再有官方保障Intel Mac 用户应使用最后一个官方支持版本0.62.x。这与 0.63.0 新增的 支持层级文档 一致Tier 1 目前仅包含osx-arm64、linux-64、linux-aarch64、win-64四种 conda/wheel 组合osx-64被明确列入 Tier 2b“通用社区支持”的示例清单见 support_tiers.rst。文档与工程配套变更Numba 组织支持政策文档化0.63.0 新增了关于 Numba 组织旗下项目在 OS / 硬件 / 打包等方面的支持政策文档对应 PR #10283即上文引用的 support_tiers.rst。该文档定义了完整的分级体系Tier 1维护者长期承诺支持包含公开 CI/CD、候选版本首个 RC 至少两周测试期、conda/wheel 发布等保证且要求核心依赖Python、NumPy、LLVM持续提供支持——任一核心依赖停止支持平台将自动降级Tier 1.5面向新兴发布配置的实验性支持Tier 2a由大型软件发行商构建的发行版Tier 2b通用社区支持best effort层级迁移只能通过 GitHub issue 提案 维护者讨论批准。这份文档是理解本次osx-64降级以及未来平台策略变化的“政策依据”。CI、依赖与安全配套发布说明的 Pull-Requests 清单中还包含大量工程化改动虽不直接面向最终用户但对版本质量有实际影响CI 现代化osx-arm64/win-64wheel 构建改用setup-pythonPR #10230、修复 Linux wheel 链接关系PR #10241、修复 Windows 库查找路径PR #10248、修复osx-arm64wheel tag 回归PR #10274与 OpenMP 链接问题PR #10285依赖自动化引入 renovate 管理依赖PR #10294并持续升级 actions/checkout、actions/setup-python、actions/stale、twitter-bootstrap 等PR #10296–#10318构建与打包修复修复 editable installsPR #10323、修正SET_FUNCTION_ATTRIBUTE中标志位0x10/16的使用PR #10321、为 x86 工作流禁用 AVX512_SKXPR #10326安全与规范新增 SECURITY.mdPR #10254towncrier 检查仅在打开的 PR 上运行PR #10291。升级建议与小结综合 0.63.0 的变更内容可按如下要点规划升级常规用户可在 Python 3.14 环境直接升级注意math.exp2仅在 Python 3.11 可用若在 JIT 函数中使用np.copy、np.ndenumerate含零维数组或从jit内调用 gufunc本次修复将消除相关崩溃与内存泄漏并行计算用户parallelTrue函数的缓存场景父函数缓存、子函数需要重载线程池在本次得到修复可放心组合使用磁盘缓存与并行执行CUDA 用户若 NVIDIA 驱动为 580 及以上且尚未迁移到numba-cuda建议升级本版本获得回迁修复并尽早规划迁移Intel Mac 用户osx-64已降级为 Tier 2如需官方支持请停留在 0.62.x或迁移到 Apple Siliconosx-arm64尝鲜用户free-threading 构建的 Python 属于实验性支持生产使用需谨慎且不能与numba.pyccAOT 同时使用。若需深入了解本版本细节可进一步阅读 完整发布说明、支持层级政策 以及 Deprecation 指南。【免费下载链接】numbaNumPy aware dynamic Python compiler using LLVM项目地址: https://gitcode.com/gh_mirrors/nu/numba创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

UPX加壳脱壳管家:PE结构分析与检测脱壳实战 2026/9/25 1:26:17

UPX加壳脱壳管家:PE结构分析与检测脱壳实战

简介:这是一款面向逆向工程初学者与安全测试人员的UPX加壳脱壳辅助工具,聚焦PE可执行文件的压缩保护与还原场景。软件提供一键加壳与一键脱壳能力,压缩等级1至9可选,涵盖常规、最佳压缩、暴力与超暴力四种模式,并支持自…

阅读更多 →
智能计算系统课程设计实战:从选题到跑通的工程笔记 2026/9/25 1:26:10

智能计算系统课程设计实战:从选题到跑通的工程笔记

简介:这份智能计算系统课程设计资源包面向计算机类、人工智能方向的毕业设计与课程作业需求,适合需要完整项目参考的中高年级学生与自学者。内容围绕智能系统开发全流程展开,涵盖人工智能基础、算法与数据结构、系统架构设计、数据处理与预处…

阅读更多 →
Apache Beam 2018 开发者邮件列表讨论文档档案:Fn API 可移植性、SplittableDoFn 与 Go SDK 等设计提案回顾 2026/9/25 1:26:10

Apache Beam 2018 开发者邮件列表讨论文档档案:Fn API 可移植性、SplittableDoFn 与 Go SDK 等设计提案回顾

大数据批处理流处理数据工程 【免费下载链接】beam Apache Beam is a unified programming model for Batch and Streaming data processing. 项目地址: https://gitcode.com/gh_mirrors/beam4/beam 点击查看 免费下载 本文基于 Apache Beam 仓库中的年度讨论文档档…

阅读更多 →
点阵字库转 BMP 绘图实战:从字库文件到 RGB 像素的完整链路(TaoToken 配置避坑) 2026/9/25 1:26:10

点阵字库转 BMP 绘图实战:从字库文件到 RGB 像素的完整链路(TaoToken 配置避坑)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
工业控制器新物种:PLC、HMI与边缘AI一体化部署实战 2026/9/25 1:26:10

工业控制器新物种:PLC、HMI与边缘AI一体化部署实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Python常用函数实战总结:77个高频函数场景与避坑指南 2026/9/25 1:26:10

Python常用函数实战总结:77个高频函数场景与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞