Release Plan

Stratego -- Strategies for Program Transformation
This page provides the tentative scheduling for future releases of StrategoXT. See PastReleases for an overview of the development of StrategoXT. Note that except for the first planned release, the plans mentioned on this page have the character of a wishlist and that all dates are indicative only. If you are interested in (contributing to) any of the items mentioned here or have ideas of your own, feel free to join the discussion at the stratego-dev mailing list.

Issue Tracking

The JIRA roadmap of the StrategoXT project provides a detailed and up-to-date overview of upcoming features.

Items that need to be added to JIRA

Language

  • Concrete syntax for arithmetic and relational operations

  • Language extensions
    • Dynamic patterns?
    • Dynamic strategies? Can currently be emulated for a single strategy with a dynamic rule x -> x where s.

  • Instrumentation of Stratego programs in aspect-oriented style

Compiler

  • Typecheck match and build terms against signature (warning only)

  • Effects analysis
    • Make it possible to specify a certain rule should always succeed, and if it doesn't print the child rule that was responsable for the problem (maybe even print stacktrace)

Interpreter

  • is the interpreter up to date? (testsuites)
  • make the interpreter reusable in different front-ends (StrategoShell, StrategoScript?) or even inside 'ordinary' Stratego programs

Deployment

  • Start maintaining Debian packages
    • Become Debian apt source
    • Daily build binary packages

  • Mac OS X Support verified in buildfarn
    • Automate creation of binary distributions StrategoXT

  • Separate deployment of individual packages
    • Distribute separate packages in a collection of RPMS or Nix expressions?
    • sdf2-bundle as well

  • Verify the portability of the dependencies:
    • Choice Point Library Portability?
    • ATerm Portability?
    • Sdf2 Bundle Portability?

Tools

  • Embedding generator: generate SDF grammar with all (?) concrete object syntax productions

  • GPP: better support for pretty-printing terms with annotations

  • ImplodeAsFix? : attach location in source file in annotations after implosion

  • Tool documentation?
    • Provide more easy and abstract facilities for tools to document themselves in --help and/or man pages
    • Refactor the existing tool documentation (ofter in comments or bad layout) to this new mechanism.
    • DocBook? : write a docbook2wiki, docbook2help?

Misc.

  • QuickCheck? for Stratego: specify properties in program and test these for randomly generated arguments

  • Benchmarking framework

  • XTC
    • Improve overriding of tools
    • Task-oriented component composition
    • check out relation to package config

  • Project wizard that sets up all default files for typical StrategoXT packages and applications.

StrategoXT 1.0

  • ExamplesPackage?

  • Conditional Compilation? -- Useful for enabling/disabling special features at compile time (such as support for language extensions), and for making modules useable both stand-alone and imported into other modules. Use C preprocessor says Eelco D.

  • Scoped dynamic relations (multi-way rules)

  • Global variables? -- Maybe with a syntax that separates them clearly from local variables. Can of course be emulated using tables, at the expense of table lookups and the inconvenience of creating/destroying tables.

  • Scoped tables? (and global variables (in which case they probably won't be global anymore)).

  • Improve error messages? (add linenr, continue after problem if possible and give multiple/all errormsgs which decreases time to fix all problems).

  • Improve debugging:
    • allow for easy print statement that automatically adds filename + linenr

  • Improve automatic preservation of annotations?

  • Auto concat Conc node after an antiquotation that returns a list

  • Think about < > usage: "s = id" vs "s = (...)"

StrategoXT 2.0

  • Complete redesign of the syntax. Stratego has matured enough that we have a good understanding of which features are needed. However, any attempts to use those features to solve non-trivial problems has a tendency to degenerate into a mess of strange symbols. Even simple things such as if-then-else are utterly unreadable (although the theory behind the syntax is elegant...).

  • Not only allow strategies to be passed as special arguments but also allow them to be returned from a rule/strategy and be assigned to a new variable.

Stratego.ReleasePlan moved from Stratego.FutureReleases on 09 Feb 2003 - 22:22 by EelcoVisser - put it back