[Tracking] Incremental Systems Rethought
@blyxyas is already working on this.
Since Aug 9, 2026.
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
This issue lists all current list points in order to complete the Incremental Systems Rethought project goal. These should be done in order-of-appearance, and they should be self-contained enough that anyone can pick them up.
If you pick one of these up, please ping me in the resulting PR or contact me through Zulip.
Reading materials
- Rustc's docs.rs
- Rustc-dev-guide
- Specifically, the "Queries: demand-driven compilation" section and all sub-sections.
- RFC PR#3118
- The project goal itself and linked documents.
Progress
- Merge RFC.
- Build-over-check
- We should be able to run
cargo check && cargo build, and havecargo buildbe able to re-use cached information bycargo check. - Being that
cargo checkmonomorphizes, I'm tracking monomorphization information and use it incargo build. - Other approach: Track name resolution, with very primitive type information (limits us in many aspects, but lower memory fingeprrint).
- We should be able to run
- Per-owner querying.
- We currently have a lot of queries that work on the whole crate (e.g.
codegen_crate,collect_and_partition_mono_items), we should fragment these, trying to keep overhead as low as possible.
- We currently have a lot of queries that work on the whole crate (e.g.
- Cargo: Go top-down instead of bottom-up.
- Currently we completely codegen the lowest dependencies in a crate tree. We should start by doing nameres in the root, and then compiling the dependency judging by that name resolution information (So, don't take into account unused items)
Experiments
Workflows
I (@blyxyas) am currently the only person actively working on this. I've received a couple of offers for help, so it might evolve into a working group or other kind of organized effort.
I'm holding bi-weekly meetings with Jack Huey @jackh726, discussing the design.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.