hey @mw I figured I might as well ask some questions out in the open
i've been using the case of recompiling an unchanged source tree as an initial point for better understanding the incr comp code, specifically dep-graph
I had mentioned to you earlier that we unconditionally emit the dep graph on every compile, regardless of whether the input changed.
We do have the previous serialized graph already loaded, so I looked into comparing the serialized current graph and the previous one. Interestingly, they differ. Does that surprise you, @mw ?
(I have not yet exactly dissected the manner in which they differ; all I mean right now is that the in-memory graph representation differs. I'm hopeful that the abstract dep-graphs they each represent is in fact the same, but I have not yet confirmed that.)
(if I had parallel_compiler turned on, then of course the order of insertions and thus the assigned indices for the dep-nodes would differ. But I don't think my testing configuration has parallel_compiler turned on.)
the representations are tailored for their respective purpose
i.e. the current dep-graph is set up in a way that allows for building it quickly
sure, but post converting the current graph to its serialized form
and the serialized dep-graph should require little post-processing after loading
that is, i'm just talking about comparing two instances of SerializedDepGraph
there are a few things that differ because not everything is a proper query
but it sounds like you are not surprised to hear they differ
ah I missed that
it's easy to miss :)