Skip to content

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

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 follow 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: It publishes artifacts to our artifact server: 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:

Last update: July 3, 2024
Created: July 3, 2024