Rust 在 nightly 启用新一代借用检查器 Polonius Alpha
来源:blog.rust-lang.org — 2026-08-04
📋 概述
Rust 团队宣布在 nightly 上启用下一代借用检查器 Polonius Alpha,为未来几个月内的稳定化做准备。Polonius 诞生于 2018 年的 NLL 项目,最初版本虽能通过 NLL 测试套件并接受 NLL 无法接受的(健全的)代码,但性能成为致命瓶颈。2023 年团队提出一种新公式化,只需对现有 NLL 实现做最小重构。Polonius Alpha 的核心改进是<span class="highlight">对流敏感的 lifetime outlives 关系借用检查</span>——它能判断某些 borrow 在某些分支中并未存活,从而让更多代码通过编译,这是 NLL 流不敏感分析做不到的。目前性能与 NLL 相当或略高,仅少数 crate 出现轻微回归。
🔑 核心要点
- Polonius Alpha 已无已知问题,在 nightly 启用以寻找性能回归、健全性漏洞与诊断问题,计划年底前稳定化。
- 它相对 NLL 的关键能力是流敏感的 lifetime 借用检查:能识别某些 borrow 在特定分支并不存活。
- 典型例子是 get_mut_or_default:map.get_mut(&key) 的 borrow 因返回类型 &'r mut 被视为存活整个函数,但 Polonius Alpha 知道它在 None 分支并不存活。
- 并非所有程序都兼容——部分在旧 Polonius 下能编译的程序在 Alpha 下不行,因此才叫 "Alpha"。
- 性能上与 NLL 相当或略多,在下载量前一万的 crate 中仅少数出现"显著"回归,最坏约 2-3 倍,团队正在排查修复。
- 不想要的用户可用 -Zpolonius=off(rustflags)退回稳定 NLL,并请团队反馈原因。
💡 金句
是的,你没听错!Rust 借用检查器的下一代迭代就要来了。
👍 0
👎 0
← 返回 Lobsters 首页