关于本指南
1.
第一部分:rustc 的构建、调试与贡献
1.1.
关于编译器团队
1.2.
如何构建并运行编译器
1.2.1.
构建并安装发行版工件
1.2.2.
构建编译器文档
1.3.
编译器测试框架
1.3.1.
运行测试
1.3.2.
添加新测试
1.3.3.
使用 compiletest + 命令来控制测试执行
1.4.
攻略:一次典型的贡献
1.5.
实现新特性
1.6.
稳定化特性
1.7.
调试编译器
1.8.
剖析编译器性能
1.8.1.
使用 linux perf 工具剖析
1.9.
编码约定
1.10.
crates.io 依赖
1.11.
消除错误和其它诊断报告
1.11.1.
JSON 诊断报告格式
2.
第二部分:rustc 的工作原理
2.1.
编译器源码概览
2.2.
rustc 驱动与接口
2.2.1.
rustdoc
2.3.
查询:需求驱动的编译
2.3.1.
查询求值模型详解
2.3.2.
增量编译
2.3.3.
增量编译详解
2.3.4.
调试与测试
2.4.
解析器
2.5.
#[test] 实现
2.6.
宏展开
2.7.
名字求解
2.8.
HIR(上层 IR)
2.8.1.
将 AST 降低为 HIR
2.8.2.
调试
2.9.
ty 模块:类型的表示
2.10.
种类
2.11.
类型推导
2.12.
Trait 解算(旧式风格)
2.12.1.
高阶 trait 绑定
2.12.2.
缓存的细节
2.12.3.
特化
2.13.
Trait 解算(新式风格)
2.13.1.
降低到逻辑层面
2.13.1.1.
目标与已知
2.13.1.2.
相等性与惯量类型
2.13.1.3.
隐式界定
2.13.1.4.
生存期约束
2.13.1.5.
rustc 中的 lowering 模块
2.13.1.6.
降低规则
2.13.1.7.
良构性检查
2.13.2.
典范查询
2.13.2.1.
典范化
2.13.3.
SLG 解算器
2.13.4.
Chalk 概览
2.13.5.
文献
2.14.
类型检查
2.14.1.
方法的查找
2.14.2.
型变
2.14.3.
存在类型
2.15.
MIR(中层 IR)
2.15.1.
MIR 的构造
2.15.2.
MIR 访问器与遍历
2.15.3.
MIR 趟:获取函数的 MIRn
2.15.4.
MIR 优化
2.15.5.
调试
2.16.
借用检查器
2.16.1.
跟踪转移和初始化
2.16.1.1.
转移路径
2.16.2.
MIR 类型检查器
2.16.3.
生存域推导
2.16.4.
两阶段借用
2.17.
常量求值
2.17.1.
miri const 求值器
2.18.
形参环境
2.19.
代码生成
2.19.1.
更新 LLVM
2.19.2.
调试 LLVM
2.20.
性能剖析指导的优化
附录 A:傻瓜分析
附录 B:背景材料
附录 C:术语表
附录 D:代码索引
Light (default)
Rust
Coal
Navy
Ayu
Rustc 开发指南
MIR optimizations