Spoofax 2.5.12

Spoofax 2.5.12 contains an experimental gradual type system for Stratego, performance improvements to NaBL2 and Statix, and updates to Eclipse installations and their embedded JREs.

Changes

Stratego

Stratego has two new reserved words: cast and is. Local variables can be reserved words if they start with ', so you can use 'cast and 'is.

Under the Stratego language options in your metaborg.yaml file you can turn on the gradual type system, if you use the incremental compiler. This option is gradual: static, and only tests the types statically. The default is gradual: none right now, meaning the gradual type system is not on by default. The is dynamic type check is not yet supported at runtime, you may get Java compilation errors when attempting to compile Stratego code with that. Dynamic type casts inserted by the gradual type system are also forthcoming, runtime support for this is not yet ready.

NaBL2

NaBL2 supports a new resolution algorithm based on fexid-point environment computation instead of graph search, which can be enabled by adding strategy environments to the name-resolution signature section. It has much better performance characteristics, especially when dealing with mutually importing scopes and transitive imports. Compared the the search-based, the environment-based algorithm can get stuck on scope graphs with cycles involving scopes importing references that can be resolved via that same scope. Note that the environment-based algorithm may increase memory usage. The default remains the search-based algorithm.

Statix

Analysis times of large, multi-file Statix specifications has improved significantly.

Eclipse

  • Premade Eclipse installations have been updated from Eclipse Photon to Eclipse 2020-6.
  • Premade Eclipse installations for 32-bit Linux are no longer created.
  • Embedded JRE in premade Eclipse installations has been updated from 8u162 (Oracle JRE) to 8u265-b01 (AdoptOpenJDK).

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.12/org.metaborg.spoofax.eclipse.updatesite-2.5.12-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.12/org.metaborg.intellij.dist-2.5.12.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.12

Maven artifacts

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