Stratego/XT 0.16M1

September 02, 2005

The new translation scheme turned out quite well. On Linux it gives a slight performance improvement, on Macs it gives a major performance improvement; speedups of 3 times have been observed. Good reason for a new release:

Stratego/XT 0.16M1 is now available from
This release is the first milestone release (M1) towards the new major release 0.16. (The zero-th milestone was called 0.15.)

The purpose of the 0.16 development is a major overhaul of the language and compiler internals. Release 0.15 introduced the Stratego Core language and the corresponding refactoring and clean up of the compiler. This release features a lot of fixes to the Stratego Core compiler and lots of other small improvements. Noteworthy features include:

  • call(f|s*|t*) is a new language constructs that supports calling strategies by name, i.e., f is a term that is interpreted as the name of the strategy to call. Can be used for callbacks in libraries.
  • checksum strategy gives MD5 checksum of a term </ul> Furthermore, this release already contains some features planned for future milestones:

    For 0.16M2: A new translation scheme for implementing choice. Rather than using setjmp/longjmp the scheme now use NULL pointers to indicate the failure of a strategy. This produces a slight performance improvement on Linux and a great performance on Macs, where the setjmp/longjmp feature is quite expensive to use.

    For 0.16M3: A good number of improvements to the implementation of dynamic rules. In particular, the compiler now detects overlapping dynamic rules and forbids their use.

    While the 0.15 release was still rather experimental, the 0.16M1 release is much improved and is fairly reliable. We are interested in your experiences. Please report any problems such that we can solve these as soon as possible. We plan to have a stable 0.16 release by the end of September.