Spoofax 2.2.0

Spoofax 2.2 improves on Spoofax 2.1 with a new NaBL2 constraint solver which is optimised for performance, improved progress reporting and cancellation in Eclipse, an experimental replacement for sdf2table which fixes several long-standing bugs, improvements to the core API, and several bug fixes.

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

Downloads

Eclipse plugin

Update site

IntelliJ plugin

Command-line utilities

Core API

  • Spoofax Core uber JAR
  • Spoofax Core uber Maven artifact: org.metaborg:org.metaborg.spoofax.core.uber:2.2.0

Maven artifacts

Maven artifacts can be found on our artifact server. The Maven version used for this release is 2.2.0. See the instructions on using MetaBorg Maven artifacts for more information.

Changes

Overall

  • 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

Eclipse

  • 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.

SDF3

  • 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:
language:
  sdf:
    sdf2table: java
  • Improve: Moved the placeholder and pretty-print options in the metaborg.yaml file to be under language.sdf, as in:
language:
  sdf:
    placeholder:
      prefix: "[["
      suffix: "]]"
    pretty-print: LangName

NaBL2

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

SPT

  • Fix: Several origin tracking issues related to section markers.

DynSem

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