Stratego Release 05

Stratego -- Strategies for Program Transformation
Version 0.5

 released: March 26, 2001

 (with respect to release 0.4.22)

 * StrategoScript an interpreter for Stratego
 * Syntax clean up
 * Compiler and library maintenance
 * Website under TWiki
 * Online documentation
 * Stratego alpha release with anonymous CVS
 * Daily build


 * StrategoScript is an interpreted language for strategic rewriting. 
   The interpreter has been designed for fast turn around time and
   not for performance; it will not replace the compiler. Possible
   applications are
   - learning Stratego
   - rapid prototyping
   - unit testing
   - glueing transformation components

 * A StrategoScript has the form

   #!/bin/sh stratego
   stratego script
   <commands and declarations>

   A script evaluates the commands and declarations sequentially. 
   Commands are strategy expressions that are applied to the current
   subject term. The starting term is the list of command-line options.
   Declarations are the usual declarations of signatures, overlays, rules, 
   strategies and imports that a normal Stratego module contains. In 
   addition a script can dump the current state of the intepreter and load 
   a previously dumped state. Thus, it is possible to load a previously 
   pre-compiled version of the library.

 * The implementation of the interpreter still lacks some features:
   - signatures and overlay declarations in scripts are not interpreted
   - nullary variables are not recognized without parentheses, i.e.,
     instead of Nil write Nil()
   - loading and precompiling modules should be more incremental

 * See doc/tutorial/exercises/pico for some example scripts


 * Local strategy definitions 

     let f1(...) = s1 ... fn(...) = sn in s

   This means that the identifier "in" has become a reserved word. Use
   'in to indicate the identifier. Note that only strategy operators
   without arguments are supported in this release.

 * Syntax ?t <= s has been removed

 * Syntax << l -> r >> has been removed. For local rules of the form
   {x1,...,xn: <<l -> r>>} use \ l -> r \, if the xi correspond to the
   variables in l. Otherwise use {x1,...,xn: ?l; !r}.

 * Formerly reserved words are no longer reserved: match, build

 * operations keyword in signatures has been removed; use constructors


 * Caching of symbols used when building terms (Arne de Bruijn)
 * Repaired bug in optimization rule for oncetd (Thanks Hedzer Westra)
 * Compiled specifications are now linked with optimized libraries.

 * uniq strategy now preserves order (Merijn de Jonge)
 * string-to-real and real-to-string conversion (Arne de Bruijn)
 * call now waits for all sub-processes to terminate (Merijn de Jonge)


 * The wiki server running the website has been
   replaced by TWiki, a much more powerful wiki system. All pages from
   the old website (including pages that were not under wiki) have been
   moved to the new TWiki. Pages can be edited and new pages can be
   created by registered users; anyone can register.

 * The Stratego documentation (Tutorial, Reference Manual and Library)
   is now readable online at; follow the
   links at StrategoDocumentation. The HTML is generated from LaTeX using


 * The latest developments in the Stratego system are now available
   via anonymous CVS. (Thanks Eelco Dolstra)

   To checkout the repository proceed as follows:

   % export
   % cvs login
   Password: anon
   % cvs checkout stratego

   Note that this distribution is very unstable.


 * The Stratego CVS distribution is now included in the daily build process
   at CWI ( This will make it easier to
   release minor releases more often. Minor releases will now be made
   whenever relevant changes have been made and the daily build succeeds. 
   Minor releases will only be announced to the stratego-developers mailing
   list. Major releases will be made when enough significant changes have