Extending the Domain Specific Language for the Pipelines for Interactive Environments build system
Date: Fri, July 01, 2022
Room: 0.E420 Turing / Ivo's Zoom Room
Note: This is a MSc thesis defense
Build systems speed up builds by reusing build step outputs from previous builds when possible. This requires precise definitions of the dependencies for build steps. Pipelines for Interactive Environments (PIE) is a build system with precise dependencies, but its task definitions in Java are verbose. The PIE Domain Specific Language (DSL) allows pipeline developers to write concise definitions of PIE tasks, but the PIE framework has evolved and the PIE DSL cannot express many tasks and projects.
This thesis presents PIE DSL 2, which improves on PIE DSL 1 in three areas. It extends the language itself with a module system, generics and support for suppliers and injected values, which allows it to express more tasks within the DSL. There are four improvements for the code base. The first two are a specification of the static semantics in Statix and a new compiler backend that compiles to an AST instead of using string interpolation, both of which extend the features for the DSL that can be expressed. The second pair is constructors for semantic types and tests, which improve development speed of the DSL. The final area we improve is usability, which we improve by adding documentation for expressions and types in the PIE DSL.
We compare PIE DSL 2 to Java in a case study. Only a single task can be expressed in the DSL, which means that the boilerplate is not reduced. Furthermore, the Java ecosystem has better error detection except for nullability. Finally, the PIE DSL is simpler than Java, but only when the full pipeline is supported by the DSL. We conclude that the DSL is not better than Java for full projects yet, but for tasks that it can express it is a slight improvement over Java. This leads to the hypothesis that it has potential to become better if it can express enough tasks.
Due to time constraints, the case study did not use the latest version of the DSL. In theory the latest version of the DSL can express 15 of the 19 tasks, with the full case study project using about half the lines of Java, but this has not been verified experimentally.
Overall, this thesis makes improvements to the PIE DSL and its environment, but that has not translated to the DSL being better than Java.
Matthijs Bijman | Dataflow Analysis in a Language Workbench
Next: Olav de Haas | Mechanizing Hoare Style Proof Outlines for Imperative Programs in Agda