- 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
- Bug Fix Procedure
- 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
- Licenses
- Part 2: How rustc works
- Overview of
rustc
- High-level overview of the compiler source
- The Rustc Driver and Interface
- Queries: demand-driven compilation
- Memory Management in Rustc
- Lexing and Parsing
#[test]
Implementation- Panic Implementation
- Macro expansion
- Name resolution
- The HIR (High-level IR)
- Closure expansion
- The
ty
module: representing types - Type inference
- Trait solving (old-style)
- Trait solving (new-style)
- Type checking
- The MIR (Mid-level IR)
- The borrow checker
- Constant evaluation
- Parameter Environments
- Compiler Backend
- Overview of
Appendix A: Stupid Stats Appendix B: Background material Appendix C: Glossary Appendix D: Code Index Appendix E: Compiler Lecture Series Appendix F: Bibliography