Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upTracking issue for "Red/Green" Dependency Tracking #42293
Comments
michaelwoerister
added
A-incr-comp
metabug
T-compiler
labels
May 29, 2017
michaelwoerister
referenced this issue
May 29, 2017
Closed
Remove all occurrences of "DepNode re-opening" #42298
michaelwoerister
referenced this issue
Jun 13, 2017
Closed
incr.comp.: Clarify compatibility of red/green evaluation and recovering from cycle errors #42633
Mark-Simulacrum
added
the
C-tracking-issue
label
Jul 27, 2017
alexcrichton
referenced this issue
Sep 15, 2017
Closed
Slow compilation on large project when nothing changes #40858
michaelwoerister
referenced this issue
Sep 20, 2017
Closed
Tracking Issue for incr. comp. red/green testing #44716
michaelwoerister
referenced this issue
Sep 28, 2017
Merged
incr.comp.: Switch to red/green change tracking, remove legacy system. #44901
bors
added a commit
that referenced
this issue
Sep 29, 2017
bors
added a commit
that referenced
this issue
Oct 4, 2017
This comment has been minimized.
This comment has been minimized.
|
|
michaelwoerister
closed this
Dec 14, 2017
This comment has been minimized.
This comment has been minimized.
|
@michaelwoerister could you add a link to https://rust-lang-nursery.github.io/rustc-guide/query.html to the original description? This is what comes up in the search for rust red-green, so it's nice to have links to state-of-the-art docs. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
michaelwoerister commentedMay 29, 2017
•
edited
"Red/Green dependency tracking" is what we call the improved tracking algorithm for incremental compilation. The main difference to the algorithm used at the moment is improved accuracy because it can recover from "false positives", that is, it can stop cache invalidation short if a potentially changed value turns out to not have changed after all. A (work-in-progress) description of the system can be found at https://github.com/nikomatsakis/rustc-on-demand-incremental-design-doc/blob/master/0000-rustc-on-demand-and-incremental.md. Implementing this new tracking and caching system will happen in a few phases:
Phase 1 - Red/Green without additional caching
In the first phase the core infrastructure for red/green tracking will be implemented. We do not cache any additional intermediate results but at the end of this phase, we will already have reached peak tracking accuracy.
DepTrackingMap::write()(#42192)DepNodeto use a stable hash that does not need "re-tracing" (#42294)CachingPolicysupport for queries and use for CGUsty::queries::{}::try_get()Phase 2 - Caching
ty::TypeckTablesIn the second phase, support for caching
ty::TypeckTableswill be added, which allows the compiler to skip type checking.NodeIdreferenced byty::TypeckTablesover toHirId(#40303)ty::TypeckTables(#46004)Phase 3 - Caching MIR
The third phase will support for caching MIR, which should be straight forward at that point. It remains to be verified though if it actually is a performance gain to do so.
cc @nikomatsakis, @eddyb, and @rust-lang/compiler in general