Sunday, February 22, 2009

Rascal, the new kid on the block

For those of you who have been following our commit messages it is clear: we are furiously working on a new system called "Rascal". But why? And what is it about? In this and subsequent messages I will try to clarify this. Why a new language? The success in solving automatic analysis and transformation problems achieved by a language like ASF+SDF makes it clear that with the increasing scale and complexity of the problems that are being solved, more language support would be welcome. We are still excited about the many good features of ASF+SDF like
  • Fully user-definable syntax.
  • Conditional rewriting.
  • Modular language definitions.
  • Fast execution.
In recent years, we have been experimenting with a tiny new language called RScript, it provides a typed relational calculus and is very useful for doing program analysis. Inspired by this, we asked ourselves the question: is it possible to keep the features of ASF+SDF and integrate them with RScript? Would this be a starting point for designing the additonal language features we are looking for? The briefest possible summary is therefore: Rascal = ASF+SDF+RScript This means that we are adding:
  • A new type system, including definitions for abstract data types, higher-order functions, and more.
  • New data types: lists, sets, relations.
  • New control structures, i.e. comprehensions, loops, execptions.
Of course, while designing such a new language we can profit from the extensive experience the ASF+SDF user community has gained while solving analysis and transformation problems. Some of the items on the wish list are:
  • Concrete and abstract datatypes.
  • More efficient processing of grammar modules.
  • More features for resolving ambiguities.
  • Seemless integration with a host language like Java.
  • Seemless integration with an IDE like Eclipse.
Typical problems to be solved:
  • Concise and efficient refactoring of Java programs.
  • Finding software bugs.
  • Large scale software conversions and transformations.
Now that the initial requirements are becoming clear, you may wonder how Rascal looks like. That will be the topic of a next message.

1 comment:

Erik said...

Interessant! Ik ga er als ik tijd heb zeker eens mee spelen!