7.2 KiB
7.2 KiB
Summary
Building and debugging rustc
- How to Build and Run the Compiler
- The compiler testing framework
- Debugging the Compiler
- Profiling the compiler
- crates.io Dependencies
Contributing to Rust
- 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
High-level Compiler Architecture
- 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
Source Code Representation
- 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
Analysis
- Prologue
- The
tymodule: representing types - Type inference
- Trait solving
- Type checking
- Pattern and Exhaustiveness Checking
- MIR dataflow
- The borrow checker
- Parameter Environments
- Errors and Lints
MIR to Binaries
- 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