Spoofax 2.2.0

This page is a stub for the release notes of Spoofax 2.2.0. Please write down your changes to the development version, so that we can quickly release Spoofax 2.2.0 when it is ready.

See the corresponding migration guide for migrating from Spoofax 2.1 to Spoofax 2.2.



  • The deprecated libraries and files from Spoofax 2.1.0 have been removed. If you have not done so yet, follow the Spoofax 2.1.0 migration guide to migrate your project to the new Spoofax library.

Core API


  • Upgrade: Eclipse Neon (4.6) is now required.
  • Improve: Added several switches to the Spoofax (meta) menu for disabling analyses and builds, to improve usability in cases where these operations are very slow.
  • Improve: Bind new progress reporting and cancellation in core to Eclipse progress monitors, enabling reporting of builds and cancellation of analysis.
  • Fix: Fix cancellation not being propagated in SubMonitors, preventing cancellation from working in many places.


  • Feature: Re-implemented the parse table generator in Java, removing the dependency on a platform-specific sdf2table binary, and fixing several long-standing bugs. This implementation is still being tested, it is therefore only enabled after opt-in. To enable the new implementation, set the following option in your metaborg.yaml file:
    sdf2table: java
  • Improve: Moved the placeholder and pretty-print options in the metaborg.yaml file to be under language.sdf, as in:
      prefix: "[["
      suffix: "]]"
    pretty-print: LangName


  • Introduces a new solver implementation with improved performance.
  • Introduces separate signature sections for constructors, relations, and functions.
  • Deprecates the types signature, which will be removed in the next release.


  • Fix several origin tracking issues related to section markers.


  • Fix analysis crashes on empty rules sections (#161)
  • Support for abrupt termination: automatic expansion and propagation of read-write semantic components with default values
  • Analysis performance improvements