Paper: 'Composing Source-to-Source Data-Flow Transformations with Rewriting Strategies and Dependent Dynamic Rewrite Rules
' describes the composition of source-to-source data-flow transformations in the program transformation language Stratego. The language supports the high-level specification of transformations by means of rewriting strategy combinators that allow a natural modeling of data- and control-flow without committing to a specific source language. Data-flow facts are propagated using dynamic rewriting rules. In particular, we introduce the concept of dependent dynamic rewrite rules, for modeling the dependencies of data-flow facts on program entitities such as variables. The approach supports the combination of analysis and transformation, the combination of multiple transformations, the combination with other types of transformations, and the correct treatment of variable binding constructs and lexical scope to avoid variable capture.
The paper has been accepted for publication in the proceedings of CC'05, the 14th international conference on Compiler Construction in Edinburgh.
that Stratego has a real chance at becoming a succesful language.
Paper: 'Program Transformation With Scoped Dynamic Rewrite Rules
' describes the new design of dynamic rewrite rules including scope labels, extended dynamic rules, and union and intersection of rulesets. It has been conditionally accepted for inclusion to the special issue on program transformation of Fundamenta Informaticae.
During the after-OOPSLA/GPCE-conference-beer Tijs van der Storm challenged me to write a program that prints its
own source in Stratego. That was not too hard of course, but getting the quotes right is tricky. Here
module quine imports lib strategies main = !["module quine imports
lib strategies main = ![\"","\"]; \\ [x, y] -> [x, <escape>x,
\"\\\",\\\"\", <escape>y, y] \\; concat-strings; <print>(stdout
, [<id>]); <exit> 0"]; \ [x, y] -> [x, <escape>x, "\",\"", <escape>y, y] \;
concat-strings; <print>(stdout, [<id>]); <exit> 0
I wrote a little educational reconstruction of the design process
There are some further challenges here. The above program uses strings for code generation, which
is against everything we stand for of course. So the next thing to do is write a program which uses
concrete syntax to produce a syntax tree for its own source and then pretty-prints it. Another one
is a program that prints its own source and
compiles it. Calling XTC components is allowed of course;-)
Back from Vancouver and a good conference.
Springer published the conference proceedings
of GPCE 2004
Of course we will also present our paper on Concrete Syntax for Objects
next week at OOPSLA (on Thursday to be precise). If you are close to Utrecht this week and not in Vancouver next week you might consider attending Martin's rehearsal at the Software Technology Colloquium
Karina Olmos and I finished a paper on definition of data-flow optimizations with dependent dynamic rules. It is not available publicly yet, but if you are interested and present good arguments, we may let you have a peek.
and I are going to state that the world needs Reusable and Adaptable Strategies for Generative Programming
next week at the Software Transformation Systems Workshop
in Vancouver. In fact dependent dynamic rules
are a step in the right direction since it is a generic mechanism that allows higher level specification of data-flow transformations without restricting applications to a fixed language or semantic model. (Now you are really becoming intrigued what those new dynamic rules are ...)
Just when I thought my GPCE
tour of duty was over, Eugenio Moggi
asked me to be publicity chair for GPCE'05. So you better get ready to write a generative paper for GPCE next year. It will be co-located with ICFP.
Today was my birthday and it was well spent writing a paper. Gifts are always welcome. High on the wish list are Stratego applications (toy, but preferably ready for deployment), new components for the Stratego compiler (I may have some specific ideas if necessary), a typechecker (for Stratego), and some grant money (or a lot even).
Apparently I am a Stratego blogger
and I have to blog more
. I'll do my best, here goes ...
Dependent dynamic rules are a cool (that's a good blog word isn't it) generative extension of the basic dynamic rules in StrategoXT
. Dependent dynamic rules kill themselves if you tell them to and also behave well under lexical scope so to avoid free variable capture. A complete common-subexpression elimination transformation component for Tiger (based on a generic data-flow traversal) is defined in 29 lines, of which 13 are empty lines and module header and such overhead. Excited? Read more about it in our upcoming paper.
Actually if you want to stay up to date, or check if the Stratego project is alive, read the viewcvs `blog' in the Stratego/XT subversion repository
Releases are now constructed automatically for Stratego/XT, BibTeX-Tools, Tiger, and the new
Stratego Core compiler; see http://catamaran.labs.cs.uu.nl/dist/stratego
Sent out call for participation for GPCE'04
. Early registration closes September 16.
All 500 pages of the GPCE'04
proceedings on their way to Springer; well the pdf files.
My first steps on the path to generalizing wiki
were remarkably smooth using Java servlets.
A first prototype emerged after two days work; one day to get deployment set up, another for programming. First test version will be available soon.
Jack Greenfield and Peter Mosses agree to give invited talks at GPCE'04
After searching and hacking scripts to automatically number pages for a proceedings based on a set of postscript files it turns
out that Springer no longer wants hard copy as they describe in their manual for volume editors.
for Stratego/XT is starting to happen.
now supports production of publication lists by year
, by type
, by year and type
, etc. All based on a query language for selecting BibTeX entries and an embedding of this query language in LaTeX templates for specifying the presentation.
: Working on redesign of the Stratego compiler based on a new definition of a Stratego Core language
. (It doesn't yet build completely in the new Nix buildfarm
Martin Bravenboer and I wrote a little position paper on 'Reusable and Adaptable Strategies for Generative Programming' for the Software Transformation Systems
workshop at GPCE'04
visited Utrecht again and revealed his Generic Build System.
The website of the Master Program Software Technology
looks all fresh, clean, and up-to-date again.
I'm organizing a new Seminar on Software Generation and Configuration
next winter. The plan is to look at software variability from all possible angles. There is a course description
. Pointers to interesting papers are welcome.
A fresh plan for the Software Engineering
course. All that remains is execution of the plan, and a prototype for GenWiki?
of course. (If the question mark is still there, I haven't done it yet.)
Tinkering with bibtex-tools
to get the entire composition into Stratego with XTC. Fiddling with directories to catch all the side effects caused by latex runs.
visited Utrecht and talked about ANSI C, coding standards and static analysis tools.
Visit to Philips Research.
Paper: 'A survey of strategies in rule based program transformation systems
' accepted for publication in the Journal of Symbolic Computation.
Attending ICSE 2004
Finally submitted a new paper on the redesign of scoped dynamic rewrite rules
NWO meeting about possible collaboration between astrophysics and computer science.
Chairing a program committee is a huge time-sink, but the result
is worth it.
PC selected 25 papers
from 75 submissions.
This morning Bente Sofie
Release of StrategoXT-0.10
introduce a complete redesign of scoped dynamic rewrite rules
Paper: 'Concrete syntax for objects
' describes the MetaBorg
approach to embedding and assimilating
domain-specific languages in a host language illustrated with several extensions of Java. It has been accepted for OOPSLA'04
Release of StrategoXT-0.9.5
of Rob Vermaas on ExtendibleDocumentationGeneration
What do you think http://www.software-deployment.org
of the Fifth Stratego User Days (SUD'04).
My Erdos number
is at most 5.
We (the TraCE
team) had a nice meeting with the Deliver
team at CWI.
Yet another domain: http://www.metaborg.org
75 submissions for GPCE'04!
My Erdos number
is at most 6.
My Erdos number
is at most 7.
Finally, a new revision of A survey of strategies in rule based program transformation systems
Visit by Rob van Ommeringen who gave a talk about Building product populations with Koala2
Jacquard match making event
is pretty straightforward (modulo some tweaking of the server configuration).
The Fifth Stratego User Days (SUD'04)
was attended by 25 people, had a full program with 21 interesting talks and
long walks after lunch. The slides of most talks are linked from the program of the meeting.
Finished revisions of papers `Retrofitting the AutoBayes Program Synthesis System with Concrete Syntax
' and `Program Transformation with StrategoXT
' for the book on the Dagstuhl meeting about 'Domain-Specific Program Generation
Updated publication list
for 2003 including a technical report with a new version of the paper on Fusing Logic and Control
with Patricia Johann.
With Karina Olmos
I found out that data-flow optimizations with dynamic rules can be further improved by employing `self'-destructive rules.
At the Functional Refactoring Workshop
in Kent I gave a talk about Implementation of Partial Evaluation in Stratego/XT
. For the demonstration I developed a primitive emacs mode for Tiger with menus for applying various transformations. It is quite easy to make Stratego transformations interactively usable.
Visit to Microsoft in Aachen.
Attended the IFIP WG 2.1
meeting in Rome
and gave a talk
about the refactored implementation of constant propagation for Tiger. Thanks to the excellent explanation by Ganesh Sittampalam
I finally understand the implementation of regular path queries.
Stratego:StrategoRelease094 --- finally a new release
: automatic generation of releases
2003-12-29 - 2004-01-02
Implementing a partial evaluator for Tiger:TigerLanguage for the program transformation course
. Required extension of Tiger with command-line arguments and modules.
2003-12-22 - 30
Distribution of StrategoXT
with the Nix deployment system
; towards completely automatic release management.
Creating and linking with a shared library for the Stratego Standard Library is a matter of getting the libtool to do the right thing.
2003-12-17 - 19
Stratego:SeparateCompilation : implementation of a seperate compilation scheme for Stratego.
Paper about Trace.Nix accepted at ICSE'04 and writing another paper about Nix.
Chapter 10 of StrategoBook
on 'Generic Traversal Strategies' rewritten.
Chapter 9 of StrategoBook
on 'First Class Pattern Matching' rewritten.
Chapter 8 of StrategoBook
on 'Composing Strategies' rewritten.
Chapter 7 of StrategoBook
on 'In Control of Rewriting' rewritten
Chapter 5 of StrategoBook
on 'Term Rewriting' rewritten
Paper: Retrofitting the AutoBayes Program Synthesis System with Concrete Syntax
-- Prolog with concrete syntax
I decided to make the draft StrategoBook
available on the web
2003 Winter (Nov - Jan)
Teaching Program Transformation
Program Transformation with StrategoXT
-- revision with an extra section about annotations in Stratego and a paragraph on foreign functions
Stratego:BibtexTools to convert a bibtex file to a publication list in html and pdf.
Used to generate the personal and group bibliographies
for the CST
for GPCE 2004
Teaching software engineering
and high-performance compilers
2003-07-15 -- 2003-08-16
Stratego:StrategoOptimizer (Stratego:AvoidRunTimeChecksOnVariables, Stratego:ConstantAndCopyPropagation, ...) -- adding optimizations to the Stratego:StrategoCompiler
-- prototyping buildfile language
Stratego:NativePrimitives -- extension of strategies with term arguments and primitives with strategy arguments
Beheersen van Variabiliteit met Transparante Configuratieomgevingen
-- paper for Informatie
Stratego:PrologTools -- a bridge between Prolog and Stratego
Stratego:StrategoRelease092 -- new release of StrategoXT
Program Transformation with StrategoXT
-- Overview paper of StrategoXT
for Dagstuhl seminar
Stratego:StrategoRelease091 -- new release of StrategoXT
Talk about Stratego:TransformationToolComposition for SUD'03
Is open publishing
Stratego:PrologTools -- syntax definition for Prolog to make extension with concrete syntax for AutoBayes
-- what is the best architecture for a buildfarm?