Wait. Has any of those techniques (beyond build systems) been demonstrated in compilers?
Conversation
We incremental computation researchers cannot say it to get published, but the basic assumption for readers seems that these techniques aren’t really black boxes and writing any essentially new program with them is a new paper, unless your program is already well *parallelized*!
3
By that do you mean that it’s hard to transfer the techniques between programs? Or hard to get reliable performance improvements?
1
See other replies: it’s hard to get performance improvements. You can write highly parallel reusable primitives (such as folds that require associativity and whose computation tree is balanced, or many query languages ops), then use them for your program.
1
1
Let me admit I did a PhD on this and realized the issue halfway, so there might be a “disgruntled failed employee” vibe to this (and I haven’t studied the type systems to guide authors of incremental programs).
3
Not to worry! I value the perspective!
2
1
Still pretty opaque from an outsider perspective though. Hard to know what direction to take to get me from a sequential scan over my ast, to something that can work as a language server/incremental compiler ☹️ - hard to know what to invest time in experimenting/learning.
2
Real compilers seem to recompile whole units if inputs change. State-of-the-art ones only react to API changes not implementation (tho “API” includes inlinable methods, see GHC/Scala and SBT/... or the stone age version, C headers).
1
For real incremental/parallel typecheckers it’s still dark magic I guess? I know there’s papers from on incremental typechecking, and work on Kentucky Mule for parallel typechecking (for Scala) by .
1
2
We’re currently exploring how our framework IncA for incremental static analysis can be used for incremental type checking. Early results on an incremental Rust type checker we’ve developed in IncA are very positive.
1
2
Oh yes! I did note that one down! The work that was presented at ICFP looked quite cool!


