The best way to start is to read this document, then join the chat and say hello! We’ll help you from there.
This working group is focused on advancing incremental compilation and, in particular, on bringing the new red/green change tracking system over the finish line. Once there is a working prototype of the new tracking system, there will be four major areas of tasks:
Increasing test coverage by extending the existing test suite.
Profiling and tuning various parts of the new system and in it’s interaction with the compilation pipeline, in particular:
the runtime caching infrastructure, including graph representation and serialization
the partitioning of machine code into object files
the handling of spans within the compiler and the tracking system
It’s important to note that proper profiling is a crucial part of this task cluster.
Designing and implementing the caching of additional compiler state, most importantly type checking information.
Pay down technical debt that was introduced by incomplete refactorings done in order to support incremental compilation. Examples are:
the yet to be completed NodeId to HirId transition past HIR lowering(removing this point because there’s no clear direction yet on how we want this to look like)
the currently independent ways of defining queries and dependency node types
The tasks in this cluster are of a lower priority than the others.
Who to talk to?
If you’ve got questions, please reach out! People who hack actively in this area include:
For example, if you see an issue you would like to work on, but it doesn’t have mentoring instructions or the instructions are unclear, ping away! Even if these people don’t know the answer to your question, they should know who does.
The work items for this working group are tracked via issues in the rust-lang/rust github repository. You can also find them on the Rust“find-work” website.