SciPy 1.16.2 发布说明解析:首个支持 Windows on ARM 的稳定版与一批内存泄漏修复
SciPy 1.16.2 发布说明解析首个支持 Windows on ARM 的稳定版与一批内存泄漏修复【免费下载链接】scipySciPy library main repository项目地址: https://gitcode.com/gh_mirrors/sc/scipySciPy 1.16.2 是 1.16 系列的一个纯缺陷修复bug-fix版本相对 1.16.1 不引入任何新特性但它是 SciPy 历史上第一个在 PyPI 上提供 Windows on ARMWin-ARM64wheel 的稳定版本。本文将基于官方发布说明结合仓库源码逐一解读本版本修复的信号处理、优化、线性代数模块缺陷以及打包许可与 CI 基础设施层面的改动帮助读者理解这些修复背后的实现细节与升级价值。版本定位1.16 系列的一个纯修复版本SciPy 1.16.2 的性质与 SciPy 的版本发布节奏一致次要版本如 1.16.0承载新功能而第三位版本号patch release如 1.16.1、1.16.2只用于修复回归与缺陷不添加任何新功能、不改变公共 API 行为。因此1.16.x 用户升级到 1.16.2 是低风险操作主要收益是获得更稳健的内存管理、更正确的输入校验与更完整的平台支持。本版本共关闭了 10 个 issue、合入 16 个 pull request由 12 位贡献者共同完成名单见下文的 贡献者 一节其中 4 位是首次为 SciPy 贡献补丁的开发者。修复范围横跨scipy.signal、scipy.optimize、scipy.linalg三大子模块以及构建系统、打包与 CI 流水线。里程碑首个提供 Windows on ARM wheels 的稳定版本版本最醒目的新闻是1.16.2 是第一个在 PyPI 上提供 Windows on ARMARM64wheel 的 SciPy 稳定版本。此前 Windows on ARM 用户只能通过源码编译或第三方渠道使用 SciPy而本版本起可以像 x86 用户一样直接执行pip install scipy1.16.2pip 会根据平台自动选择win_arm64的 wheel 文件。围绕这一里程碑本版本合入了多条相关改动BLD: Windows Arm64 wheel supportPR #23122是核心的构建支持改动使官方构建流程能够产出 Win-ARM64 wheelCI: validate build on Win-ARM64PR #23133在 CI 中新增了对 Win-ARM64 构建的验证环节确保该平台产物可持续、可回归CI: bump OpenBLAS and cibuildwheel versionsPR #23154升级了 OpenBLAS 与 cibuildwheel为 ARM64 交叉/本机构建提供所需的构建工具链BUG: Skip installing gmpy2(test deps) for Win-ARM64PR #23403修复了 Win-ARM64 上测试依赖gmpy2安装失败的问题说明该平台在测试依赖层面也做了针对性适配。对希望在 ARM64 Windows 设备如 Surface Pro X 等上使用 SciPy 的开发者而言1.16.2 意味着可以告别繁琐的本地编译直接获得官方构建的二进制 wheel。信号处理模块scipy.signal的三处修复1.16.2 对scipy.signal合入了三项修复分别涉及频谱估计、时间序列分析与短时傅里叶变换。signal.periodogram修复内存泄漏Issue #23411 报告signal.periodogram存在内存泄漏。periodogram是功率谱密度估计的基础函数位于 scipy/signal/_spectral_py.py签名如下def periodogram(x, fs1.0, windowboxcar, nfftNone, detrendconstant, return_onesidedTrue, scalingdensity, axis-1):它负责对时间序列x计算周期图通过get_window生成窗函数默认boxcar矩形窗按detrend方式去趋势默认constant即减去均值做 FFT 并依据scaling输出功率谱密度density单位 V²/Hz或幅度谱spectrum单位 V²。在循环中反复调用该函数处理大量数据时内存泄漏会导致进程内存持续增长直至被 OOM 终止。本版本的修复合入的修复类 PR消除了这一隐患长期运行频谱分析任务的进程应升级到 1.16.2。signal.lombscargle不再原地修改输入数组Issue #23474 报告signal.lombscargle(precenterTrue)会修改调用者传入的输入数组。lombscargle用于处理不均匀采样的时间序列是天文等领域探测周期性信号的核心工具其实现位于 scipy/signal/_spectral_py.py。当前实现的签名已经演进为def lombscargle(x, y, freqs, *, normalizeFalse, weightsNone, floating_meanFalse):其中normalize可取值False/power、True/normalize或amplitudefloating_meanTrue时为每个频率独立求解一个未知的 y 偏移量。源码注释scipy/signal/_spectral_py.py明确指出The legacy concept of pre-centering entails removing the mean from parameterybefore processing, i.e., passingy - y.mean()instead of setting the parameterfloating_meantoTrue.即旧版中precenterTrue等价于先在输入上做y - y.mean()的去均值处理。若该去均值以 in-place 方式写回输入数组就会破坏调用方的数据。PR #23475signal.lombscargle: replace in-place input adjustments将 in-place 的输入调整改为安全方式确保函数不再修改外部传入的数组。升级后凡是在多处复用同一份数据的分析流程都不必担心lombscargle悄悄改动原数组。ShortTimeFFT移除 lru_cache消除无界缓存Issue #23414 指出ShortTimeFFT存在无界缓存问题PR #23457signal.ShortTimeFFT: Remove lru_cache decorators与 PR #23414 共同修复了它。ShortTimeFFT位于 scipy/signal/_short_time_fft.py提供短时傅里叶变换的类封装。从当前源码可以看到类内部已不再使用lru_cache装饰器而是改用两种受控的缓存机制cached_property如 scipy/signal/_short_time_fft.py只对一次性计算的属性做缓存显式单槽缓存字段例如_cache_post_padding、_cache_upper_border_begin、_cache_t、_cache_fscipy/signal/_short_time_fft.py。这些字段只保存最近一次调用的参数与返回值如_cache_t保存(args, return_value)_cache_f保存(current_state, return_value)当新调用的参数与上次相同时命中缓存否则直接覆盖。相比之下lru_cache会按调用参数无限累积缓存条目在长时间运行的信号处理程序中造成内存持续增长而单槽缓存固定只保留一个条目内存占用有上界。这一改动与periodogram的内存泄漏修复共同表明1.16.2 对信号处理路径上长期运行导致内存增长一类问题做了系统性清理。优化模块scipy.optimize的三处修复optimize.nnls修复内存泄漏Issue #23429 报告optimize.nnls存在内存泄漏。nnls求解非负最小二乘问题argmin_x || Ax - b ||_2^2, x 0实现在 scipy/optimize/_nnls.py基于 Lawson Hanson 的经典活跃集算法见其文档字符串引用的 [1]Lawson C., Hanson R.J., Solving Least Squares Problems, SIAM, 1995通过求解 KKT 条件迭代收敛。该函数签名如下def nnls(A, b, *, maxiterNone):其中maxiter默认为3 * nn为A的列数。函数入口还会做严格的输入校验A必须是 2D 数组、b必须是 1D或单列 2D数组、m维必须一致并对空列情况n 0提前返回。PR #23563fix memory leaks in optimize.nnls and linalg.sqrtm同时修复了nnls与linalg.sqrtm两处泄漏将二者放在同一个 PR 中处理说明泄漏的根因都位于它们共享的底层 C 实现路径上。optimize SLSQP为 maxiter 补充缺失的错误检查Issue #23430 报告optimize的 SLSQP 缺少对输入参数的错误检查PR #23442fix regression for non-integer maxiter in SLSQP修复了非整数maxiter导致的回归。SLSQP 的 Python 入口是 scipy/optimize/_slsqp_py.py 中的_minimize_slsqpdef _minimize_slsqp(func, x0, args(), jacNone, boundsNone, constraints(), maxiter100, ftol1.0E-6, iprint1, dispFalse, ...):在初始化内部求解器状态时代码将maxiter传入 C 求解器state_dict { ... itermax: int(maxiter), ... }见 scipy/optimize/_slsqp_py.py。如果用户传入的是浮点数等非整数值直接int(maxiter)的截断行为可能造成与预期不符的迭代上限甚至引发底层求解器异常。本版本的修复为该参数补充了类型/取值校验保证maxiter必须是合法整数。对调用方而言升级后 SLSQP 会在参数非法时给出清晰报错而不是在求解过程中产生难以定位的异常行为。optimize L-BFGS-B修复不兼容的 dtypePR #23471optimize: fix the incompatible dtypes in L-BFGS-B修复了 L-BFGS-B 中因数据类型dtype不兼容导致的问题。L-BFGS-B 是带边界约束的有限内存 BFGS 拟牛顿法底层是 Fortran 求解器对应仓库中的 scipy/optimize/_lbfgsbmodule.c。当目标函数、梯度或边界数组的 dtype 不一致例如混合 float32 与 float64或整数与浮点数组混用时底层的 Fortran 例程可能读到错误的内存布局。该修复统一了传入底层例程的数组 dtype避免此类边界条件下的未定义行为。线性代数模块scipy.linalgsqrtm 内存泄漏PR #23563 除修复optimize.nnls外同时修复了linalg.sqrtm的内存泄漏。sqrtm计算矩阵平方根实现在 scipy/linalg/_matfuncs.py采用 Schur 分解法算法依据 Deadman、Higham 与 Ralha 的 blocked Schur 算法以及 Higham 1987 的实矩阵平方根论文见其文档字符串 References 一节res, isIllconditioned, isSingular, info recursive_schur_sqrtm(a)入口处还包含完整的输入归一化逻辑整数输入会转成 float64、float16 转 float32、complex64/128 与 float64 保留原精度并拒绝fdFD之外的其他 dtype。值得注意的是sqrtm支持批量batch维度A的末两维必须是方阵。内存泄漏主要出现在 Schur 分解递归求解路径的临时缓冲区管理上本版本修复后频繁调用sqrtm的应用如大规模仿真中的矩阵根运算不再有内存持续增长的隐患。打包与许可合规修复本版本还包含两类容易被忽略但影响面较大的打包改动Qhull 许可证文件缺失Issue #23428 报告自 1.16.0 起wheel 中缺少子组件的许可证条款。PR #23435ensure Qhull license file gets included in wheels确保 Qhull 的许可证文件被纳入 wheel 产物。Qhull 是scipy.spatial中凸包、Delaunay 三角剖分等功能依赖的底层库对应子模块 scipy/spatial/qhull_misc.c 及 subprojects/qhull_r其许可证文件COPYING_QHULL.txt见 scipy/spatial/COPYING_QHULL.txt此前未能随 wheel 发布违反了开源许可证的分发要求。捆绑软件许可更新PR #23452Update licensing of bundled software系统性地更新了所有捆绑子组件的许可声明与上一项共同解决了 Issue #23428 反映的自 1.16.0 起子组件许可条款不完整的问题。对在企业或严格合规环境中分发 SciPy 的用户此修复具有实际意义。构建系统与 CI 基础设施改动1.16.2 的余下改动集中于工程基础设施pytest 下界Issue #22244 提出在 pyproject.toml 中为 pytest 指定下界PR #23495 将其落实为pytest8.0.0。这保证了 SciPy 测试套件在较新的 pytest 版本下行为一致避免因 pytest 老版本 API 差异导致的假性失败。CuPy 升级修复 GPU CIIssue #23458 报告所有 CuPy 测试出现 CUDA 编译失败PR #23488 将 CuPy 升级到 13.6.0 修复了 GPU 上的 CI 流水线。CI 运行器更新Issue #22825 提到 GitHub 新的 CI runnermacOS 15 与 Windows 2025可用相关改动PR #23154 等同步更新了构建矩阵。scikit-umfpack 版本钉扎Issue #23564 报告 macOS conda-forge 任务因 scikit-umfpack 升级而失败PR #23576 将其钉扎到 0.3.30.4.2 存在问题。scikit-umfpack 与 SciPy 的稀疏 LU 分解接口相关参见 scipy/sparse/linalg。meson wraplock 忽略PR #23540 在构建配置中忽略 meson 的 wraplock 文件属于构建系统层面的小清理对应仓库根目录的 meson.options。贡献者名单以下 12 位开发者共同完成了 1.16.2 的发布带号者为首次为 SciPy 贡献补丁Dietrich Brunn (1)Ralf Gommers (6)Adam Jones (1)Gleb Khmyznikov (1) Jost Migenda (1) newyork_loki (1)Nick ODell (3)Dimitri Papadopoulos Orfanos (1)Ilhan Polat (2)Tyler Reddy (26)Mugunthan Selvanayagam (1) Shuhei Watanabe (1) 该名单由版本发布脚本自动生成可能并非完全完整。其中 Tyler Reddy 以 26 次提交承担了本次发布的大部分工作。升级建议综合来看1.16.2 的升级价值集中在三点平台能力Windows on ARM 用户首次获得官方 PyPI wheel可直接pip install scipy1.16.2使用稳定性signal.periodogram、optimize.nnls、linalg.sqrtm三处内存泄漏被修复长期运行或大规模循环调用这些函数的场景收益明显正确性与合规性lombscargle不再原地修改输入数组、SLSQP 对maxiter增加了错误校验、L-BFGS-B 修复 dtype 兼容问题同时 wheel 内的捆绑软件许可证条款恢复完整。由于这是一个纯缺陷修复版本未改变任何公共 API 签名periodogram、nnls、sqrtm、lombscargle等函数的签名与 1.16.x 保持一致可从 scipy/signal/_spectral_py.py、scipy/optimize/_nnls.py、scipy/linalg/_matfuncs.py 直接核对1.16.0/1.16.1 用户可放心平滑升级。升级后可用以下方式确认版本号import scipy print(scipy.__version__) # 1.16.2【免费下载链接】scipySciPy library main repository项目地址: https://gitcode.com/gh_mirrors/sc/scipy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

5步图解路名性能瓶颈,告别配置卡死

5步图解路名性能瓶颈,告别配置卡死

5步图解路名性能瓶颈,告别配置卡死 配置环境就卡半天?别急着重装。 90%的卡顿源于底层路径解析逻辑的低效。 本文用图解原理拆解【路名】性能陷阱,附实战代码对比。 性能瓶颈定位:为什么越用越慢…

2026/9/23 1:12:08 阅读更多 →
Swift 字符串插值协议重构:SE-0228 `ExpressibleByStringInterpolation` 重设计详解

Swift 字符串插值协议重构:SE-0228 `ExpressibleByStringInterpolation` 重设计详解

Swift 字符串插值协议重构:SE-0228 ExpressibleByStringInterpolation 重设计详解 【免费下载链接】swift-evolution This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. 项目地址: https://gitcode.com/gh…

2026/9/23 1:12:08 阅读更多 →
Jetson Orin Nano Super模式刷机教程:解锁67 TOPS AI算力

Jetson Orin Nano Super模式刷机教程:解锁67 TOPS AI算力

1. Super模式到底是个什么东西,值不值得折腾先说结论:如果你是Jetson Orin Nano 8GB的用户,这篇文章能帮你的,不是简单刷个系统,而是把你手上这块板子的潜力彻底榨干。Jetson Orin Nano Super是NVIDIA在2024年底放出来…

2026/9/23 1:12:07 阅读更多 →

最新新闻

OLAP从原理到选型:列式存储、MPP与主流引擎实战指南

OLAP从原理到选型:列式存储、MPP与主流引擎实战指南

1. 为什么我们需要认真聊聊OLAP数据分析这个行当里,OLAP是个绕不开的词。你去看任何一款数据产品的介绍,十有八九会提到“支持OLAP分析”“OLAP引擎”“实时OLAP”之类的字眼。但真要让人用一句话说清楚OLAP到底是什么,很多人会卡壳。我自己刚…

2026/9/23 22:06:57 阅读更多 →
手工标注VOC人车数据集的实战方法论

手工标注VOC人车数据集的实战方法论

简介:本资源是一份专为人车识别任务设计的高质量VOC格式图像数据集,面向深度学习初学者、计算机视觉方向研究者及YOLO系列模型实践者,解决目标检测中人与车辆类别标注质量不足、样本规模有限等常见训练瓶颈。数据集包含1000张真实场景图像&am…

2026/9/23 22:06:57 阅读更多 →
YOLOv5头盔检测数据集全解析:从格式核对到训练部署

YOLOv5头盔检测数据集全解析:从格式核对到训练部署

简介:这是一份面向YOLOv5目标检测任务的头盔检测数据集,专为安全帽佩戴识别场景设计,适合从事工地、工厂、园区等人员安全监管的开发者,以及刚接触目标检测的学生和研究者。数据集包含80张真实场景JPG图像,并配有80个对…

2026/9/23 22:06:57 阅读更多 →
MiniCPM 历史专题技术详解:BitCPM4 三值量化与 MiniCPM4 应用生态实战

MiniCPM 历史专题技术详解:BitCPM4 三值量化与 MiniCPM4 应用生态实战

MiniCPM 历史专题技术详解:BitCPM4 三值量化与 MiniCPM4 应用生态实战 【免费下载链接】MiniCPM MiniCPM4 & MiniCPM4.1: Ultra-Efficient LLMs on End Devices, achieving 3 generation speedup on reasoning tasks 项目地址: https://gitcode.com/OpenBMB/M…

2026/9/23 22:06:57 阅读更多 →
Mouser解剖指南:一个Python开源项目如何跨三大平台拦截鼠标事件

Mouser解剖指南:一个Python开源项目如何跨三大平台拦截鼠标事件

Mouser解剖指南:一个Python开源项目如何跨三大平台拦截鼠标事件 【免费下载链接】Mouser A lightweight, open-source, fully local alternative to Logitech Options for remapping Logitech HID mice. 项目地址: https://gitcode.com/gh_mirrors/mousec/Mouser …

2026/9/23 22:06:57 阅读更多 →
YOLOv5红外车辆检测实战:数据构建、模型微调与边缘部署

YOLOv5红外车辆检测实战:数据构建、模型微调与边缘部署

简介:本资源是面向计算机视觉开发者与智能交通系统研究者的红外车辆检测实战方案,基于YOLOv5框架实现端到端的红外图像车辆识别与实时检测。针对夜间、低光照及恶劣天气下可见光检测失效的痛点,该方案利用红外热成像特性提升鲁棒性&#xff0…

2026/9/23 22:05:57 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →