Spoofax 2.5.8

Spoofax 2.5.8 includes several bugfixes and improvements.

Changes

SDF

  • 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.
  • The old (Aster based) version of make-permissive (to add error recovery to your grammar) used to be called in a way that create a small memory leak, which would compound over time with subsequent builds. This is has now been fixed. The old version of make-permissive is only in effect if you use sdf2table: c in your metaborg.yaml file.

Parser

  • Add two experimental variants to the JSGLR2 parser: recovery and recovery-incremental.
  • Add 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.
  • Add logging to the JSGLR2 parser. Configure by setting language.sdf.jsglr2-logging to all, none, minimal, parsing or recovery in metaborg.yaml.

Programmatic API

  • 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.
  • Add org.spoofax.terms.util.TermUtils class with functions for working with terms. This replaces the equivalent (now deprecated) functions in org.spoofax.interpreter.core.Tools.

NaBL2

  • Improve error message location when scopes are used as term indices.
  • Dropped support for polymorphism, which was unsound.
  • Small improvements to solver performance.
  • Add support for external calls for language with Stratego JAR compilation.

Statix

  • Ability to automatically generate Statix signatures from SDF3 specifications.
  • Add support for importing other modules in Statix specifications.
  • Add support for custom messages, and a try construct for warnings and notes.
  • Add support for adding multiple values to AST properties.
  • Improve disunification support in the solver.
  • Extend reserved keywords to fix parsing problems.
  • Several smaller bugfixes.

Overall

  • Fixed several issues with files not being released properly, causing file I/O errors on Windows.

Downloads

Eclipse plugin

Update site

  • Eclipse update site: http://artifacts.metaborg.org/content/unzip/releases-unzipped/org/metaborg/org.metaborg.spoofax.eclipse.updatesite/2.5.8/org.metaborg.spoofax.eclipse.updatesite-2.5.8-assembly.zip-unzip/
  • Eclipse update site archive

IntelliJ plugin

  • IntelliJ update site: http://artifacts.metaborg.org/content/repositories/releases/org/metaborg/org.metaborg.intellij.dist/2.5.8/org.metaborg.intellij.dist-2.5.8.zip
  • IntelliJ update site archive

Command-line utilities

Core API

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

Maven artifacts

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