Following the collaboration on SugarJ with the Marburg team of Klaus Ostermann, the Software Language Design and Engineering Group at TU Delft has an opening for a researcher (3 year postdoc or 4 year PhD).

Project Summary:

Domain-specific languages (DSLs) are emerging as mainstream technique to increase the level of abstraction in software engineering. We propose to develop techniques for deep integration of domain-specific languages into host languages through language libraries that define domain-specific extensions and can be imported into programs like regular libraries, enabling the definition and use of DSLs without deploying a new compiler or IDE. A language library describes all aspects of a language embedding, including syntax, static analysis, translation to the host language, and its integration into the IDE.

A key concern in the construction of an IDE is its responsiveness. Most language engineering tools have been designed around a dichotomy between meta-programming and programming, and rely on batch-based, whole-program compilation techniques, giving rise to full recompilation of language compositions and their editors in the context of language libraries. Ensuring a responsive IDE for language libraries, requires new techniques for online language composition.

Deep integration of DSLs raises various research questions from the perspective of language design. Classical issues of module systems, separate checking, information hiding, composability, self-applicability and recursion, need new answers when the modules to be composed are language libraries. Language libraries also enable the design of a minimal extensible core language from which a full language can be boot-strapped.

We will develop a language libraries framework by building on the Spoofax Language Workbench, validating it with a collection of language libraries for web programming.

If you are interested in the position please contact me.

Karl Kalleberg has ported the command-line interpreter for Stratego to Spoofax:

Good news, boys and girls! If you happen to be a Stratego and/or Spoofax user, you might appreciate that I finally took some time to piece together an interactive command line interpreter—-a REPL—-for Spoofax.

This should improve experimentation and debugging. It is not clear from Karl's post to what extent the REPL integrates with ones 'Spoofax code'. Is it possible to call the analysis function used in the editor, or use origin tracking to the text of an editor? Looking forward to further reports and experiments.

Update: It turns out I had mis-interpreted Karl's post. The REPL was an in-the-shell command line interpreter, much like the stratego-shell of yore, but now JVM-based. However, an integration of that shell in Eclipse-Spoofax is in the works.

On Wednesday, January 11, 2012, Zef Hemel defends his PhD thesis at TU Delft. Quoting the introduction:

The promise of model-driven engineering is to reduce the development and maintenance effort of software by developing at a higher-level of abstraction through the use of domain-specific languages (DSLs). Domain-specific languages, as opposed to general-purpose languages, are software languages that focus on a specific problem domain, e.g. insurance, database querying, grammars or workflow.

The research in this thesis is conducted as part of the MoDSE (Model- Driven Software Evolution) project. The goal of the MoDSE project is to develop a systematic approach to model-driven software development using domain-specific languages. This approach includes methods, techniques, and underlying tool support. The group in which the research is conducted (the Software Engineering Research Group at Delft University of Technology) is building and evolving tools to simplify the development of domain-specific languages, including SDF [Heering et al., 1989] and SGLR [Visser, 1997a] for parsing, Stratego/XT [Visser, 2004, Bravenboer et al., 2008] for program transformation and Spoofax [Kats and Visser, 2010a] for building IDE (Integrated Development Environment) plug-ins for the developed languages.

The goal of the research is to explore the DSL design space and to develop techniques to simplify the implementation of DSLs. The research is conducted through case studies in DSL design, using tools developed as part of the MoDSE project.

The thesis includes chapters on

Update: Dr. Zef's report on the successful defense of his thesis.

Quoting the Spoofax news page:

We're pleased to announce the release of Spoofax 1.0. A number of significant new features have been added since the last stable release, a long list of bugs has been fixed, and various minor improvements were introduced.

Highlights of the release include:

The new version is now available from the update site at http://spoofax.org/update/stable.

In addition to these features, we're actively working on improving Spoofax with new features. In particular, we are now working on providing full support for debugging, on an interactive shell for Stratego and custom languages, and a new meta-language called !SpoofaxLang to define languages in a more modular fashion.

A full list of feature requests and issues addressed in the new version is provided at http://yellowgrass.org/tag/Spoofax/1.0.

This Tuesday, December 13, 2011, Lennart Kats defends his doctoral dissertation titled "Building Blocks for Language Workbenches" in the Aula of TU Delft. Quoting the introduction:

This dissertation presents research on techniques, methods, and tool support for domain-specific language engineering. Domain-specific language engineering is the discipline of designing, developing, and maintaining domain-specific programming languages. The focus of this thesis is the architecture of language workbenches their underlying technologies. Language workbenches are tools that make language engineering more efficient by providing an integrated development environment for language engineering tasks. In particular, we introduce the Spoofax language workbench, and describe its techniques for high-level, portable language definitions, language composition, interactive support for defining languages, and language testing.

Prior to the defense the TU Delft Software Engineering Research Group organizes a symposium on software language design and engineering featuring talks by Peter Mosses, Oscar Nierstrasz, and Paul Klint.