Spoofax 1.3.0 (12-11-2014)

We’re happy to announce the release of Spoofax 1.3, which improves SDF3, the build system for languages, and the build system for Spoofax itself.


Language projects

The build for language projects has changed since the last Spoofax, so your language projects need to be migrated. To automatically migrate your project, follow these steps:

  1. Right click the project in Eclipse
  2. Choose Spoofax -> Upgrade Spoofax project
  3. Press Finish

This will automatically upgrade your project to the latest format, after which you can build your project normally. The build might fail with:


/Users/gohla/spoofax/workspace/runtime-Spoofax/Entity/build.generated.xml:266: The following error occurred while executing this line:
Target "sdf2parenthesize.helper" does not exist in the project "Entity".

If this is the case, build again, because some files are only upgraded after building once.

Compiled Java files are now stored in the target/classes directory instead of the bin directory, so the bin directory can be deleted.

SDF3 grammars

SDF2 and old SDF3 grammars can be migrated following these instructions: How to migrate old SDF grammars into latest SDF3?.

Some manual changes might still be necessary since a sort cannot have more than one constructor with the same name and arity, and priority rules may contain the entire production instead of priority shorthands.



Several improvements have been made to increase the consistency and robustness of SDF3.

  • Regular productive productions can be mixed with template productions in the context-free syntax section.
  • Each production defines a non-unique sort and a unique constructor of that sort. References point to these definitions and errors are given for undefined elements in the grammar.
  • Signatures are generated on-save following the sorts used in the right-hand side of a production and the sort and constructor that are being defined.
  • All code generated from SDF3 grammars is organized in the src-gen directory of the project, which keeps Spoofax projects more clean and structured.

Contributors: Eduardo Amorim

Building language projects

Projects are built using Ant Macros tailored to make the build system more incremental.

Language projects can now also be built on the command-line using Maven. See the instructions on building Spoofax languages for more information.

Contributors: Eduardo Amorim, Gabriël Konat

Building and developing Spoofax

The build system for Spoofax itself has been refactored from a Nix build into a full Maven build. This enables local builds on any system that Maven supports, which is basically any system that supports Java. See the instructions on building Spoofax for more information.the instructions on using MetaBorg Maven artifacts for more information. There is now also documentation on Setting up Eclipse for Spoofax development, which explains how to set up an environment for developing projects which are included in Spoofax.

The nightly version of Spoofax is now built on our Jenkins server: http://buildfarm.metaborg.org/. It publishes artifacts to our artifact server: http://artifacts.metaborg.org/. To use these artifacts, read the instructions on the instructions on using MetaBorg Maven artifacts for more information.

Contributors: Gabriël Konat, Danny Groenewegen, Elmer van Chastelet


More changes, additions, and bug fixes can be found in the roadmap on our issue tracker: http://yellowgrass.org/tag/Spoofax/1.3


Eclipse plugin update site

The latest stable version of the Spoofax Eclipse plugin is always published to the stable update site: http://download.spoofax.org/update/stable. See the getting started guide for instructions on how to get started with Spoofax.

This specific release is also published to the release/1.3.0 update site: http://download.spoofax.org/update/release/1.3.0.

Sunshine JAR

The Sunshine JAR file corresponding with this release can be downloaded here. See the Sunshine documentation for more information on using Sunshine.

Maven artifacts

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