Wednesday, July 15, 2009

The introduction of Rascal at the GTTSE Summerschool

We have introduced the Rascal language at the GTTSE Summerschool by giving a three hour tutorial and a demonstration. First of all, thanks to the organizers and the attendees. We have had the pleasure of a large and interested audience!

Rascal is a domain specific language that covers the full scope of software analysis and transformation. It is currently being developed by the Meta-Environment team.

The goal of the tutorial at GTTSE was to show the concepts, syntax and semantics of Rascal. How it can be applied to different kinds of software analysis and transformation tasks was also explained. A secondary goal was to obtain feedback from potential users of Rascal and other designers of meta programming systems on Rascal.

Please find the lecture notes here.

We can organize the feedback by splitting the audience in

  • Colleagues in the meta programming area working on similar systems
  • Master and PhD students in (meta-)modeling and meta-programming
.

From the first group we received encouraging remarks on the functionality of the language. Regarding the syntax and semantics our presentation left some confusion on the conceptual basis of the language. The experts want to see how features in the language map to formal concepts. They want a clear picture of how the integration of general control and data flow features with software analysis and software transformation features works on a conceptual level. Is it still conceptually simple?

The answer is yes: Rascal is a simple procedural language with structured control flow, exceptions and lexically scoped backtracking. And, all data is immutable (functional). This is the basic framework of the language. The expression sub-languages are a functional sub-set of the language. The expression operator suite unifies operations often done in either software analysis or software transformation or both. Two examples are the pattern matching operator and the set comprehension operator. Any kind of more complex feature in the Rascal language, such as rewrite rules, can easily be given a transformational semantics into the core of Rascal.

From the second group &emdash; some of who immediately downloaded the alpha evaluation version &emdash; we received usability feedback. We mentioned the design guideline of "the principle of least surprise" in our presentations. Already some syntax was surprising, like the necessity of terminating commands in the Rascal shell with a semicolon (;). As we announced, the alpha version is unfinished and contains several annoying bugs. We were happy to have found out that some people have taken the time to submit bugreports. Thanks! We are working hard to finish the Rascal implementation.

The most active bugger on our bugzilla will win a Rascal T-Shirt! The competition has started last week and a winner will be selected at X-mas time 2009.

Did you know this?

  • A beta version is expected in October 2009
  • Rascal covers all features of ASF+SDF and RScript
  • It comes with both a commandline shell and an Eclipse/IMP-based IDE
  • It already has a significant standard library that includes interfaces to the Eclipse project environment and the Eclipse Java Development Tools (JDT).