March 1997
At a visit to INRIA in Nancy the ideas of RewritingStrategies in ELAN are explained. This looks like an interesting mechanism for dealing with some of the problems encountered in ASFandSDF specification.
Summer 1997
Development of strategy combinators with BasLuttik. The combinators are a mixture of process algebra (sequential programming) and modal logic (for term traversal). In contrast to ELAN no full backtracking operators are provided. New are combinators for GenericTermTraversal. The combinators are implemented in ASFandSDF.
Fall 1997
At the OregonGraduateInstitute? AndrewTolmach is interested in a high-level language for specifying optimizations. An interpreter for the strategy combinators is implemented in MetaML.
Winter 1998
Since the implementation of MetaML is not up to speed the implementation of the interpreter is continued in Transform.SML. The interpreter parses modules written in a dedicated language for specifying RewriteRules and RewritingStrategies.
While attending POPL'98 in San Diego it becomes clear that ContextualRules (inspired by the paper ShrinkingLambdaExpressionsInLinearTime? by AndrewAppel and TrevorJim?) can be implemented elegantly when match can share its variable scope with the context. A contextual rule can be implemented by means of a local traversal that performs a transformation that shares bindings from the context.
Spring 1998
Since interpretation is very slow implementation of compiler is begun with ZinoBenaissa.
(See also this CompilerWritingPicture)
The compiler is written in SML based on the front-end for the intepreter. The compiler implements full backtracking. Strategy definitions are interpreted as macros and are completely expanded at compile time. The compiler reduces a specification to one huge strategy expression which is compiled to a single C function.
At a talk at FMCS EugenioMoggi? observes that the operational semantics does not require full backtracking. It turns out that an implementation without full backtracking is desirable, i.e., much more efficient.
Summer 1998
As a test case for the language, i.e., to get material to compile and to get a feeling for programming in the language, a compiler for the strategies language is written in itself.
September 1998
The first bootstrap is completed just before attending ICFP'98.
As JanHeering had already suggested it suddenly becomes clear that the language should be called Stratego.
Fall 1998
Winter 1999
The first application other than the toy RML compiler and the StrategoCompiler itself is the implementation of the WarmFusion algorithm with PatriciaJohann. This later turns into the HSX package.
Summer 1999
Fall 1999
Winter 2000
Spring 2000
Summer 2000
Implementation of compiler for TigerLanguage?
Fall 2000
Winter 2001
Spring 2001
Teaching
Language extension
Summer 2001
Fall 2001
Fall 2002
Winter 2003
Spring 2004