Enabling the next iteration of the borrow checker on nightly
8 hours ago
- Rust 正在夜间版上启用借用检查器的下一代版本 Polonius Alpha,目标是在未来几个月内稳定。
- Polonius Alpha 引入了对生命周期超出关系的流敏感借用检查,允许更多代码通过当前 NLL 借用检查器的编译。
- 现在可以编译的关键代码示例包括条件分支中借用不在所有路径中存活的情况,例如 `get_mut_or_default` 和 `reborrow` 函数。
- Polonius Alpha 并非完全替代品;一些在原始(慢速)Polonius 下编译的程序无法在 Polonius Alpha 下编译,尽管一些新程序也能工作。
- 性能回归在排名前 10,000 的 crate 中通常很小,少数异常值在包含许多借用的案例中显示出 2-3 倍的减速。
- 用户可以通过在夜间版中传递 `-Zpolonius=off` 给 rustc 或通过 `.cargo/config.toml` 选择退出。
- 团队将在稳定之前监控问题和性能回归,目标是在年底前稳定。