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.
Stratego has two new reserved words:
is. Local variables can be reserved words if they start with
', so you can use
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 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.
Analysis times of large, multi-file Statix specifications has improved significantly.
- 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).
Premade Eclipse installations¶
With embedded JRE:
- Windows 32-bits, embedded JRE
- Windows 64-bits, embedded JRE
- Linux 64-bits, embedded JRE
- macOS, embedded JRE
Without embedded JRE:
- IntelliJ update site:
- IntelliJ update site archive
- Spoofax Core uber JAR
- Spoofax Core uber Maven artifact: