Thursday, September 11, 2008

On the difference between a release and a release candidate

Question: Is ASF+SDF Meta-Environment 2.0.1-RC4 newer or older than ASF+SDF Meta-Environment 2.0.1?

We have added the RC postfix - release candidate - to indicate a preview of a version that is to be released after a number of pre-releases. Version 2.0.1 is thus the final version after the unfinished pre-releases 2.0.1-RC1 through 2.0.1-RC4.

We expect to release small bugfixes on 2.0.1 this year, called 2.0.x with increasing numbers for x. Non-backward compatible changes, or otherwise de-stabilizing changes will lead to 2.y versions. We are working on 3.z in parallel.

Monday, September 8, 2008

ToolBus is now implemented in Java

The ToolBus was re-implemented in Java. This re-implementation facilitates:
  • Porting The Meta-Environment to Windows
  • Integrating The Meta-Environment as an Eclipse plugin
ToolBus-NG, as the new version is called, is an integral part of The ASF+SDF Meta-Environment 2.x. Also, it is the base for researching the T-script language and the ToolBus architecture as a vehicle for service oriented programming and web applications.

SDF 2.6.3 released

We have released SDF 2.6.3. Apart from some bugfixes this release includes a new version of the sdf2table commandline tool. To facilitate the port of SDF to Windows, we have replaced the sdf2table shell script with a binary tool. This tool simulates all the features of the old script. It can also load SDF modules starting from a single top module and searching for imported modules in a colon-separated search path. This removes the need for 'packing' or 'dumping' the full SDF definition file before using sdf2table!
$ sdf2table -h
Use this program to generate a parse table from an SDF definition.
It can generate tables from full SDF definition files, parse trees
of full SDF definition files, or search for modules itself starting
from a top module name and using a search path.

Common usage patterns:
        sdf2table -c -m <topModule> -o <file>.tbl
        sdf2table -c -m <topModule> -p <searchPath> -o <file>.tbl
        sdf2table -m <topModule> -i <definitionFile>.def -o <file>.tbl
        sdf2table -m <topModule> -i <definitionTree>.def.pt -o <file>.tbl
        sdf2table -c -d -m <topModule> -o <definitionFile>.def.pt

Usage: sdf2table [options]
Options:
        -b              output terms in BAF format (default)
        -c              collect SDF modules from the search path
        -d              only collect an SDF definition
        -g              take kernel sdf as input and generate table
        -h              display help information (usage)
        -i filename     input from file (default stdin, can be repeated)
        -l filename     log statistic information
        -m modulename   name of top module (default Main)
        -n              only normalization of grammar
        -o filename     output to file (default stdout)
        -p path         colon separated search path for SDF modules (default '.')
        -t              output terms in plaintext format
        -v              verbose mode
        -V              reveal program version (i.e. 5.0)

ASF+SDF Meta-Environment 2.0.1 released

We have released The ASF+SDF Meta-Environment 2.0.1!

The 2.x release has been coming for a while. The release candidates RC1, RC2 and RC3 have been used in several local projects and in courses for the Master Software Engineering at the UvA. After some bug fixing we are now happy to announce version 2.0.1.

Please download bundled source distributions or binary installers for linux here.

The ASF+SDF Meta-Environment 2.0.1. is a programming language workbench, featuring advanced syntax definition and term rewriting functionality, as well as IDE and visualization features. Among other applications, it is used to implement Domain Specific Languages, Software Analyses and Source-to-source Transformations.

The 2.x release has many features, which we will not list here. Please refer to the extensive documentation.

This is a high-level overview:

  • Integrated support for syntax definition in SDF, including
    • modular syntax definitions (any context-free grammar) in SDF
    • an SDF static checker
    • automatic parser generation
    • generated syntax editors with configurable syntax highlighting
    • parse tree and parse forest visualizations
  • Integrated support for source analysis and transformation in ASF+SDF, including
    • ASF+SDF, featuring conditional term rewriting with concrete syntax for source code patterns, syntax safe transformation and generation of source code and automated tree traversal.
    • ASF editors, with syntax highlighting.
    • ASF static checker
    • ASF interpreter, featuring 'hifi' source-to-source transformation (i.e. no loss of source code comments)
    • ASF compiler, extremely fast compiled term rewriting systems
    • Automatic IDE integration for language support programmed in ASF+SDF:
      • Syntax highlighting
      • Static checkers
      • Reverse engineering and software visualization
      • SVG drawing
    • Integrated ASF step-wise debugger.

For users of the 1.5.x series of The Meta-Environment, these are the major differences:

  • The Meta-Environment integrates editors in tabbed windows, instead of interfacing with Emacs or ViM
  • ASF+SDF now features fully structured lexical constructor functions, and is therefore now completely "syntax safe".
  • The ASF static checker detects more errors and generates warnings for common programming errors
  • There is a lot of online documentation now!

What the future holds?

Development and maintenance on the 2.x series will continue for a while. In parallel, the Meta-Environment team is working on the following:

  • "Rascal" - a domain specific language for integrated software analysis and transformation
  • Facilitating source code fact extraction using "DeFacto"
  • Contributing to Eclipse IMP, a platform for IDE construction
  • Port of The Meta-Environment to Eclipse IMP
  • SDF ambiguity diagnostics