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

RustcDevGuideZh

Parameter Environments