Spoofax 2.3.0

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

See the corresponding migration guide for migrating from Spoofax 2.2.0 to Spoofax 2.3.0.



  • Improvement: made NaBL2 the default static semantics language.
  • Improvement: put deprecated markers on NaBL+TS and Stratego as static semantics languages, and SDF2 as syntax language.
  • Improvement: allow configuration of source folders in metaborg.yaml.
  • Improvement: allow multiple languages in source and export entries.
  • Improvement: add dynsem as a compile dependency to newly generated languages.

Language specification build

  • Fix: occasional NPEs when the build failed.
  • Fix: hidden dependency error when building Stratego concrete syntax extensions.

Eclipse plugin

  • Improvement: updated Eclipse instance generator to generate Eclipse Oxygen instances.
  • Improvement: updated Eclipse instance generator to include JDK 8u144b01.
  • Improvement: do not reanalyze already analyzed files when opening an editor.
  • Improvement: use a default configuration if metaborg.yaml is not present.


  • Improvement: extended Stratego API to query reference resolution.
  • Improvement: add ? and + operators to regexp syntax for path well-formedness.
  • Fix: regexp normalization was only one level deep.
  • Fix: non-termination in name resolution in the cases of a direct cycle between a scope.
  • Update: confirm to latest DynSem version.
  • Fix: support all Stratego constructor and sort names, by allowing dashes and single quotes in sort and constructor names.
  • Fix: do not crash if dynsem properties file is missing.


  • Improvement: more stable SDF3 parser generator.
  • Improvement: new parenthesizer that considers deep priority conflicts.
  • Improvement: (experimental) support for lazy parse table generation, where the parse table is generated on-the-fly by the parser.
  • Fix: bug in the SDF3 normalizer for groups of priorities outside of a chain.
  • Fix: added support for generating the parse table from a “permissive” grammar
  • Fix: not necessary to specify the parse table as sdf-new.tbl in the ESV file when using the new parse table generator.