Getting Started About this guide
- How to build and run the compiler
- Testing the compiler
- Debugging the compiler
- Profiling the compiler
- crates.io Dependencies
- Contribution Procedures
- About the compiler team
- Using Git
- Mastering @rustbot
- Walkthrough: a typical contribution
- Implementing new language features
- Stability attributes
- Stabilizing Features
- Feature Gates
- Coding conventions
- Procedures for Breaking Changes
- Using external repositories
- Fuzzing
- Notification groups
- Licenses
- Editions
- 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
- rustc_driver and rustc_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
- Effect checking
- Pattern and Exhaustiveness Checking
- Unsafety 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