- Part 1: Building, debugging, and contributing to Rustc
- About the compiler team
- How to Build and Run the Compiler
- The compiler testing framework
- Walkthrough: a typical contribution
- Implementing new features
- Stability attributes
- Stabilizing Features
- Debugging the Compiler
- Profiling the compiler
- Coding conventions
- crates.io Dependencies
- Emitting Errors and other Diagnostics
- ICE-breaker teams
- Part 2: How rustc works
- High-level overview of the compiler source
- The Rustc Driver and Interface
- Queries: demand-driven compilation
- The parser
#[test]
Implementation- Macro expansion
- Name resolution
- The HIR (High-level IR)
- Closure expansion
- The
ty
module: representing types - Generic arguments
- Type inference
- Trait solving (old-style)
- Trait solving (new-style)
- Type checking
- The MIR (Mid-level IR)
- The borrow checker
- Constant evaluation
- Parameter Environments
- Code Generation
- Profile-guided Optimization
- Debugging Support in Rust Compiler
Appendix A: Stupid Stats Appendix B: Background material Appendix C: Glossary Appendix D: Code Index Appendix E: Bibliography