rustc
编译器包含超过 380,000 行源代码,分布在 40 多个 crate1 中,以支持 Rust 编译过程的从词法分析到二进制链接的各个阶段。这对新手来说令人生畏,我们认识到有必要对整个流程进行高层次的概览。
在我们的12月更新中,我们宣布了发布 “rustc-dev-guide 概述” 的计划。我们的目标是在一份高层次文档中为用户和潜在的开发者描述编译器的集成组件。该概述将在rustc-dev-guide的开头发布,以便读者了解后续章节中更详细的编译器文档。
Rustc 概述结构
我们将把编译器分解为两个高层次的问题来解答:
- 编译器如何处理您的源代码?
- 编译器是如何做到这一点的?
在解答这些一般性问题时,我们将提供一个概要,简要涵盖社区中经常出现的问题,例如:
- 编译器的冲突目标是什么?如何平衡编译器速度、编译器内存使用、程序速度、程序大小以及编译器稳定性/正确性等问题?
- 编译过程的阶段有哪些?它们是如何协同工作的?
- 我的源代码的中间表示是什么?
- 在编译过程中,泛型会发生什么?
- 在编译过程中执行哪些类型的优化?
- 增量编译是如何工作的?
rustc
是否支持并行编译?
参与其中!
概述的工作正在进行中,我们需要您的帮助。该文档的工作草案可在rustc-dev-guide
GitHub 存储库上的此拉取请求中找到。
如果您想更好地了解 rustc
的某个领域,并且该领域适合概述文档,请在我们的问题跟踪器上打开一个 issue 让我们知道。
如果您了解编译器并想为 rustc-dev-guide 概述做出贡献,请提交一个包含您的修订的拉取请求。我们欢迎您的贡献,并期待您的参与!
对学习(工作组)感兴趣?
您是否对学习更多关于 rustc
编译器并教导他人感兴趣?请访问我们的 Zulip 流 并打个招呼!
1 这些数字包括构建 rustc
所需的所有依赖项中的 Rust 文件中的行数。感谢 @LeSeulArtichaut 的计算!请参阅 Zulip 上的注释 了解更多详细信息。