Description
This tracking issue contains links to the issues for all the chapters and subsections of the book. It is also the main place to come to if you're looking to get started on contributing.
How to contribute
Skim down the list below and find a chapter that looks interesting to you. It should have a link to an associated tracking issue. Click on that link and leave a comment there saying you'd like to help out (and/or start writing something).
In general, if you don't know how the compiler works, that is not a problem! In that case, what we will do is to schedule a bit of time for you to talk with someone who does know the code, or who wants to pair with you and figure it out. Then you can work on writing up what you learned. Just cc @nikomatsakis for help.
If you think there is a missing section please file an issue and we will consider how to fit into this outline.
The outline
- How to build the compiler and run what you built ("How to build the compiler and run what you built" #8)
- Walkthrough: a typical contribution (start on walkthrough #237)
- Using the compiler testing framework ("Using the compiler testing framework" #10)
- Debugging the compiler ("Debugging the compiler" #11)
- Conventions used in the compiler ("Conventions used in the compiler" #12)
- The parser ("The parser" #13)
- Diagnostics: reporting errors and lints ("Diagnostics: reporting errors and lints" #14)
- Macro expansion ("macro expansion" #15)
- Name resolution ("name resolution" #16)
- HIR and HIR lowering ("HIR and HIR Lowering" #17)
- Representing types (
ty
module in depth) - Type inference
- Trait resolution (Clean up and reorganize traits chapter #52, work on traits chapters #70 )
- Type checking
- MIR construction
- MIR borrowck (rework and vastly expand the MIR section #67 )
- MIR optimizations
- MIRI (Chapter on MIRI? #30, Add some documentation for const eval and related topics #45)
- trans: generating LLVM IR (Codegen: LLVM IR, Monomorphization, Codegen Units, Partitioning, Symbol Linkage and Visibility #89)
- Glossary