The Scala Compiler Corner:
|
|
|
|
scala.tools.nsc.matching) was designed by Burak Emir and is explained in his
PhD reporthttp://lamp.epfl.ch/teaching/projects/archive/coppel_report.pdfhttp://www.scala-lang.org/sid/5superaccessors till
cleanup perform, one after the other, one compilation unit after the other,
actually operate on their own portion of an AST. For example, the effects of a
single tailcalls-rewriting are limited to a single method body. In principle, all
those rewritings could be performed in parallel (the other method
definitions need not know how a particular method is rewritten). I'm not
saying the current implementation of tailcalls is thread-safe.
What I'm saying is that if compilation phases were structured following the
architecture for task-level parallelism of java.util.concurrent then most worries about compilation
speed would vanish.
Summing up:
all collected ASTs constitute the shared mutable state, each transformation
is realized by a component spawning tasks, "component" meaning keeping all
of the mutable state required for its operation stack-local or
thread-confined.
The programming techniques above (that have to be manually applied) are
adopted as the native programming model by X10 and Fortress (trees instead
of lists, semi-balanced trees, hierarchical places) only that for numerical
computing.
Details appear in the talk by Guy Steele
foldl and foldr considered slightly harmful.
The lessons are the same for AST processing.
On a related note:
javacecj-Xgenerate-phase-graph).
In IDE-speak, a type lattice is called a "UML Class Hierarchy".
Actually, it need not be IDE-based: Scaladoc2
could be retrofitted to perform code-summarization as in Spinelli's UMLGraph.
–Yrecursion and –experimental). A dedicated compiler
plugin can instead dispense with all the resulting syntactic burden.
(4)
Ordered Datalog for refactoring analyses.
scalac.
invokedynamic, http://blogs.sun.com/jrose/resource/pres/200910-VMIL.pdfhttp://www.ssw.uni-linz.ac.at/Research/Papers/Schwaighofer09Master/http://www.ssw.uni-linz.ac.at/Research/Papers/Stadler09/
|
|
|