8.8 KiB
8.8 KiB
Summary
Getting Started About this guide
Building and debugging rustc
- How to build and run the compiler
- Testing the compiler
- Debugging the compiler
- Profiling the compiler
- crates.io Dependencies
Contributing to Rust
- 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
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
- 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
Analysis
- Prologue
- The
tymodule: representing types - Type inference
- Trait solving
- Type checking
- Effect checking
- Pattern and Exhaustiveness Checking
- MIR dataflow
- Drop elaboration
- 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