1.
介绍
2.
关于
3.
Getting Start
构建与调试rustc (Building and debugging rustc)
4.
如何构建和运行 Rust 编译器
❱
4.1.
Prerequisites
4.2.
Suggested Workflows
4.3.
Distribution artifacts
4.4.
Documenting Compiler
4.5.
Rustdoc
4.6.
ctags
4.7.
Adding a new target
5.
The compiler testing framework
❱
5.1.
Running tests
5.2.
Adding new tests
5.3.
Using compiletest commands to control test execution
6.
Debugging the Compiler
7.
Profiling the compiler
❱
7.1.
with the linux perf tool
8.
crates.io Dependencies
为 Rust 做贡献 (Contributing to Rust)
9.
介绍
10.
About the compiler team
11.
Using Git
12.
Mastering @rustbot
13.
Walkthrough: a typical contribution
14.
Bug Fix Procedure
15.
Implementing new features
16.
Stability attributes
17.
Stabilizing Features
18.
Feature Gates
19.
Coding conventions
20.
Notification groups
❱
20.1.
ARM
20.2.
Cleanup Crew
20.3.
LLVM
20.4.
RISC-V
20.5.
Windows
21.
Licenses
编译器架构概要 (High-level Compiler Architecture)
22.
序言
23.
Overview of the Compiler
24.
The compiler source code
25.
Bootstrapping
26.
Queries: demand-driven compilation
❱
26.1.
The Query Evaluation Model in Detail
26.2.
Incremental compilation
26.3.
Incremental compilation In Detail
26.4.
Debugging and Testing
26.5.
Profiling Queries
26.6.
Salsa
27.
Memory Management in Rustc
28.
Serialization in Rustc
29.
Parallel Compilation
30.
Rustdoc
源码表示 (Source Code Representation)
31.
序言
32.
命令行参数
33.
Rustc Driver 和 Rustc Interface
❱
33.1.
示例:通过 rustc_interface 进行类型检查
33.2.
示例:通过 rustc_interface 获取诊断信息
34.
Syntax and the AST
❱
34.1.
Lexing and Parsing
34.2.
Macro expansion
34.3.
Name resolution
34.4.
#[test] Implementation
34.5.
Panic Implementation
34.6.
AST Validation
34.7.
Feature Gate Checking
35.
The HIR (High-level IR)
❱
35.1.
Lowering AST to HIR
35.2.
Debugging
36.
The MIR (Mid-level IR)
❱
36.1.
THIR and MIR construction
36.2.
MIR visitor and traversal
36.3.
MIR passes: getting the MIR for a function
37.
Identifiers in the Compiler
38.
Closure expansion
静态分析 (Analysis)
39.
序言
40.
The ty module: representing types
❱
40.1.
Generics and substitutions
40.2.
TypeFolder and TypeFoldable
40.3.
Generic arguments
41.
Type inference
42.
Trait solving
❱
42.1.
Early and Late Bound Parameters
42.2.
Higher-ranked trait bounds
42.3.
Caching subtleties
42.4.
Specialization
42.5.
Chalk-based trait solving
❱
42.5.1.
Lowering to logic
42.5.2.
Goals and clauses
42.5.3.
Canonical queries
43.
Type checking
❱
43.1.
Method Lookup
43.2.
Variance
43.3.
Opaque Types
44.
Pattern and Exhaustiveness Checking
45.
MIR dataflow
46.
The borrow checker
❱
46.1.
Tracking moves and initialization
❱
46.1.1.
Move paths
46.2.
MIR type checker
46.3.
Region inference
❱
46.3.1.
Constraint propagation
46.3.2.
Lifetime parameters
46.3.3.
Member constraints
46.3.4.
Placeholders and universes
46.3.5.
Closure constraints
46.3.6.
Error reporting
46.4.
Two-phase-borrows
47.
Parameter Environments
48.
Errors and Lints
❱
48.1.
Creating Errors With SessionDiagnostic
48.2.
LintStore
48.3.
Diagnostic Codes
从 MIR 到 二进制 (MIR to Binaries)
49.
序言
50.
MIR 优化
51.
Debugging
52.
Constant evaluation
❱
52.1.
miri const evaluator
53.
Monomorphization
54.
Lowering MIR
55.
Code Generation
❱
55.1.
Updating LLVM
55.2.
Debugging LLVM
55.3.
Backend Agnostic Codegen
55.4.
Implicit Caller Location
56.
Profile-guided Optimization
57.
LLVM Source-Based Code Coverage
58.
Sanitizers Support
59.
Debugging Support in the Rust Compiler
附录 A: Background topics
附录 B: Glossary
附录 C: Code Index
附录 D: Compiler Lecture Series
附录 E: Bibliography
附录 Z: HumorRust
Light (default)
Rust
Coal
Navy
Ayu
RustcDevGuideZh
Error reporting