重新设计初始引导序列 | Rust 博客内部

主要观点:

  • 伴随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不再起作用等。
阅读 10
0 条评论