`rustc` 编译器包含超过 38 万行源代码,分布在 40 多个 crate1 中,支持 Rust 编译过程中的词法分析到二进制链接阶段。对于新手来说,这令人望而却步,我们认识到有必要对整个流程进行高层次的概述。
在我们十二月更新中,我们宣布了发布“rustc-dev-guide 概述”的计划。我们的目标是在一份高层次的文档中为用户和潜在的开发者描述编译器的集成组件。概述将发布在rustc-dev-guide 的开头,以便读者了解后续章节中更详细的编译器文档。
Rustc 概述结构
我们将从高层次分解编译器,以解答两个问题
- 编译器对你的源代码做了什么?
- 编译器是如何做到的?
当我们探讨这些主要领域时,我们将提供一个概要,简要涵盖社区中常见的问题,例如
- 编译器的目标冲突是什么,以及如何平衡编译器速度、编译器内存使用、程序速度、程序大小以及编译器稳定性/正确性等问题?
- 编译过程的各个阶段是什么,它们如何协同工作?
- 我的源代码有哪些中间表示形式?
- 在编译过程中,泛型会发生什么?
- 在编译过程中会执行哪些类型的优化?
- 增量编译是如何工作的?
- `rustc` 是否支持并行编译?
参与进来!
概述的工作正在进行中,我们需要你的帮助。该文档的工作草稿可在 `rustc-dev-guide` GitHub 仓库的这个 pull request 中找到。
如果你想更好地理解 `rustc` 的某个领域,并且它适合作为概述文档的一部分,请在我们的issue tracker 上提交一个 issue 告诉我们。
如果你了解编译器并想为 rustc-dev-guide 概述贡献力量,请提交一个包含你的修改的 pull request。我们欢迎你的贡献,并期待你的参与!
对学习感兴趣(工作组)?
你是否有兴趣了解更多关于 `rustc` 编译器的知识并教导他人?请访问我们的Zulip stream 并打个招呼吧!
1 这些数字统计了构建 `rustc` 所需的所有依赖项中 Rust 文件中的行数。感谢 @LeSeulArtichaut 的计算!详情请参阅 Zulip 上的说明。