Spoofax 2.6.0

This is a stub for the release notes of Spoofax 2.6.0.

See the corresponding migration guide for migrating from Spoofax 2.5.0 to Spoofax 2.6.0.



  • The Java version of sdf2table is now slightly faster and takes up less peak memory due to improvements in writing away the parsetable to file.


  • Added two experimental variants to the JSGLR2 parser: recovery and recovery-incremental.
  • Added Unicode support to the JSGLR1 and JSGLR2 parsers. The meta-languages themselves do not support Unicode yet, because they are bootstrapped with and old version of SDF3. However, other languages built with Spoofax can use Unicode.
  • Added logging to the JSGLR2 parser. Configure by setting language.sdf.jsglr2-logging to all, none, minimal, parsing or recovery in metaborg.yaml.


Bugfix: Names with namespaces were broken in an earlier version during performance optimization. The error would like: java.lang.AssertionError: Unrecognised Namespace: Namespace("Var").


Stratego separate compilation is now switched to the new system. It no longer has any limitations that were previously mentioned. Do note that separate compilation will give the same stricter error messages that the editor does: You need to import anything you use. Transitive imports still work, but you cannot use something from a module that imports your module.

Programmatic API

The TermFactory for building Stratego terms now supports a builder for lists that creates an arraylist-like structure instead of the standard linkedlist-like structure. This is typically more efficient for building stratego list terms in Java.