In Miksilo, language transformations are packaged as re-usable units. Such a unit is called a delta. Commonly, a delta applies a small change to a language, such as adding or removing a language feature, or adding an optimization. Languages are defined by composing many deltas. A similar approach is described in the paper A Nanopass Framework for Compiler Education.
Delta’s can, and commonly do, depend on other deltas. For example, WhileContinueDelta, that adds a continue statement usable in a while loop, depends on WhileDelta, that adds a while loop, which depends on IfThenDelta, that adds an if statement, etc.
Related to the type Delta
is Language
, which is created from a list of deltas, and provides an API of language features such as parsing and compiling.
An overview of deltas and their dependencies can be seen when running the Miksilo UI and navigation to the dependency graph.