主要观点:
- 伴随
rust-lang/rust
构建系统的重大变化,推出此博客,重点在于改变的动机及系统工作模型,而非深入探讨工作流程变化。 - 正在重新设计 Rust 工具链的引导序列,标准库将从支持由旧工具链版本和当前版本构建,改为仅支持当前版本,这不会影响 Rust 最终用户的分发工件,但会影响编译器和标准库的贡献者工作流程。
- 介绍了引导的概念及相关术语,当前和重新设计的引导序列,以及重新设计的好处,包括减少标准库中的变动、减少重新构建、更好地与其他 Rust 程序构建方式对齐等。
关键信息:
- 新的引导序列中,下载预构建的 beta rustc 作为阶段 0 编译器和 beta std 作为阶段 0 std,而不是从树内源构建阶段 0 std。
- 重新设计后,标准库不再需要为内在函数和语言项使用
cfg(bootstrap)
,减少了变动和复杂性。 - 对于贡献者,不再需要在内在函数和语言项中使用
cfg(bootstrap)
,但可能在编译器代码中使用(用于试验不稳定的库特性)。 - 此更改对分发打包者无影响,他们仍可使用不同工具链构建分发工件。
重要细节:
- Rust 工具链整体支持仅用两个 Rust 次要版本构建,如 Rust 1.85.1 可用 1.84.0、1.85.0 或 1.85.1 工具链构建。
- 引导过程涉及阶段概念,如阶段 2 编译器由阶段 1 编译器和相关阶段 1 工件构建。
- 历史上 Rust 一直使用树内标准库 API 构建大部分树内源代码,导致标准库需支持两个编译器版本。
- 重新设计的引导序列改善了工作流程,如减少重新构建、更好地与其他 Rust 程序对齐等。
- 在引导调用和配置方面,检查、构建和测试标准库的最小阶段现在是阶段 1,
--keep-stage-std=0
不再起作用等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。