Spoofax Bootstrapping
This repository contains the source code of Spoofax's eight meta-languages that we successfully bootstrap with seven changes.
This repository contains submodules for meta-language definitions, which are essentially links to a specific commit in repository of the meta-language. Clicking the link will navigate to the commit with the change.
We list the relevant diffs, source code, and baseline for each change tagged with a version.
- v2.1.0: all sources, produced baseline, fixpoint bootstrapping log
- v2.1.1: diff of SDF2, all sources, produced baseline
- v2.1.2: diff of SDF3, all sources, produced baseline
- v2.1.3: diff of SDF2, all sources, produced baseline
- v2.1.4: diff of SDF3, all sources, produced baseline, fixpoint bootstrapping log
- v2.1.5: diff of SDF2, diff of Stratego, all sources, produced baseline, fixpoint bootstrapping log
- v2.1.6: diff of Stratego, all sources, produced baseline
- v2.1.7: diff of NaBL, all sources, produced baseline, fixpoint bootstrapping log
Implementation source code
We have implemented the bootstrapping method in the Spoofax language workbench. We link to several parts of the source code that implement important parts.
- Compile: Builder.java
- Bootstrap: BootstrapJob.java, with the following parts:
- Fixpoint loop
- Rollback and cancellation, which undo's changes using a command pattern:
- Setting versions
- Compiling, storing, comparing
- Binary comparison: ResourceComparer.java