Incremental Compilation
Lead: @michaelwoerister 
Chat: WG-compiler-incr or #rustc on IRC

Getting started

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 compiler’s partitioning into “queries” (which affect caching effectiveness)
  • 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:
Time Zone
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.

Work items

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

  • Want something to work on?
  • Want to help mentor others?

Completed work items

Here is a list of work items that we have completed: