- How to Build and Run the Compiler
- Testing the compiler
- Debugging the Compiler
- Profiling the compiler
- crates.io Dependencies
- Introduction
- About the compiler team
- Using Git
- Mastering @rustbot
- Walkthrough: a typical contribution
- Bug Fix Procedure
- Implementing new features
- Stability attributes
- Stabilizing Features
- Feature Gates
- Coding conventions
- Notification groups
- Licenses
- Prologue
- Overview of the Compiler
- The compiler source code
- Bootstrapping
- Queries: demand-driven compilation
- Memory Management in Rustc
- Serialization in Rustc
- Parallel Compilation
- Rustdoc internals
- Prologue
- Command-line arguments
- The Rustc Driver and Interface
- Syntax and the AST
- The HIR (High-level IR)
- The THIR (Typed High-level IR)
- The MIR (Mid-level IR)
- Identifiers in the Compiler
- Closure expansion
- Inline assembly
- Prologue
- The
ty
module: representing types - Type inference
- Trait solving
- Type checking
- Pattern and Exhaustiveness Checking
- MIR dataflow
- Drop elaboration
- The borrow checker
- Parameter Environments
- Errors and Lints
- Prologue
- MIR optimizations
- Debugging
- Constant evaluation
- Monomorphization
- Lowering MIR
- Code Generation
- Libraries and Metadata
- Profile-guided Optimization
- LLVM Source-Based Code Coverage
- Sanitizers Support
- Debugging Support in the Rust Compiler
Appendix A: Background topics Appendix B: Glossary Appendix C: Code Index Appendix D: Compiler Lecture Series Appendix E: Bibliography