Last year, Pieter Senster came to ask me whether I would be interested in being his TU Delft advisor for a Master's thesis project he would be conducting at Google which involved compilation. For a long time, the only thing I could say about it that he was doing a secret project at Google. Last week the result was announced and is now available for testing. Swiffy is a tool that converts Flash to HTML5. Marcel Gordon writes:

Swiffy uses a compact JSON representation of the animation, which is rendered using SVG and a bit of HTML5 and CSS3. ActionScript 2.0 is also present in the JSON object, and is interpreted in JavaScript in the browser. This representation makes the Swiffy animations almost as compact as the original SWF files.

A small gallery shows Flash animations and their indistinguishable Swiffy conversions.

Acoda extends the WebDSL web programming language with support for database migration based on evolution of the data model of an application.

Sander D. Vermolen, Guido Wachsmuth, Eelco Visser. Generating Database Migration for Evolving Web Applications. In Ewen Denney, Ulrik Pagh Schultz, editors, Generative Programming and Component Engineering, 7th International Conference, GPCE 2011, Portland, OR, USA, October 22-23, 2011, Proceedings. ACM, 2011.

Abstract WebDSL is a domain-specific language for the implementation of dynamic web applications with a rich datamodel. It provides developers with object-oriented data modeling concepts but abstracts over implementation details for persisting application data in relational databases. When the underlying data model of an application evolves, persisted application data has to be migrated. While implementing migration at the database level breaks the abstractions provided by WebDSL, an implementation at the data model level requires to intermingle migration with application code. In this paper, we present a domain-specific language for the coupled evolution of data models and application data. It allows to specify data model evolution as a separate concern at the data model level and can be compiled to migration code at the database level. Its linguistic integration with WebDSL enables static checks for evolution validity and correctness.

At last year's GPCE conference in Eindhoven I met Klaus Ostermann and Sebastian Erdweg who turned out to be working with Stratego/XT on the exciting SugarJ project. SugarJ turns MetaBorg into a homogeneous language extension mechanism, enabling the definition of language extensions in libraries that are invoked on import.

The meeting led to a demo, more talk on the walk to the banquet, a visit by Sebastian to TU Delft, collaboration with Lennart Kats on the integration of SugarJ and Spoofax to provide editor support for language extensions, and now a paper at GPCE 2011:

Sebastian Erdweg, Lennart C. L. Kats, Tillmann Rendel, Christian Kastner,  Klaus Ostermann, Eelco Visser. Growing a Language Environment with Editor Libraries. In Ewen Denney, Ulrik Pagh Schultz, editors, Generative Programming and Component Engineering, 7th International Conference, GPCE 2011, Portland, OR, USA, October 22-23, 2011, Proceedings. ACM, 2011.

Abstract Large software projects consist of code written in a multitude of different (possibly domain-specific) languages, which are often deeply interspersed even in single files. While many proposals exist on how to integrate languages semantically and syntactically, the question of how to support this scenario in integrated development environments (IDEs) remains open: How can standard IDE services, such as syntax highlighting, outlining, or reference resolving, be provided in an extensible and compositional way, such that an open mix of languages is supported in a single file? Based on our library-based syntactic extension language for Java, SugarJ, we propose to make IDEs extensible by organizing editor services in editor libraries. Editor libraries are libraries written in the object language, SugarJ, and hence activated and composed through regular import statements on a file-by-file basis. We have implemented an IDE for editor libraries on top of SugarJ and the Eclipse-based Spoofax language workbench. We have validated editor libraries by evolving this IDE into a fully-fledged and schema-aware XML editor as well as an extensible LATEX editor, which we used for writing this paper.

Last year, TU Delft Master's student Ricky Lindeman started working on a debugger for Stratego in Eclipse/Spoofax. Later he generalized the framework so that Spoofax can provide support for building debuggers for domain-specific languages. Today we learned that the paper we submitted to GPCE 2011 has been accepted.

Ricky T. Lindeman, Lennart C. L. Kats, Eelco Visser. Declaratively Defining Domain-Specific Language Debuggers. In Ewen Denney, Ulrik Pagh Schultz, editors, Generative Programming and Component Engineering, 7th International Conference, GPCE 2011, Portland, OR, USA, October 22-23, 2011, Proceedings. ACM, 2011.

Abstract Tool support is vital to the effectiveness of domain-specific languages. With language workbenches, domain-specific languages and their tool support can be generated from a combined, high-level specification. This paper shows how such a specification can be extended to describe a debugger for a language. To realize this, we introduce a meta-language for coordinating the debugger that abstracts over the complexity of writing a debugger by hand. We describe the implementation of a language-parametric infrastructure for debuggers that can be instantiated based on this specification. The approach is implemented in the Spoofax language workbench and validated through realistic case studies with the Stratego transformation language and the WebDSL web programming language.

Last year at SPLASH 2010 in Reno a group of programming language designers from academia and industry came together to discuss the creation of group to provide a forum for discussing language design at a much earlier stage than our conferences allow. Earlier this month we held our inaugural meeting hosted by Google in Mountain View with a great collection of language designers.

Today Jonathan Edwards and I (as secretary and chair, respectively, of the group) presented to the IFIP TC2 committee meeting at ETH in Zurich the proposal for the formation of a Working Group on Programming Language Design to join the existing TC2 working groups.

We are happy to report that the committee approved the formation of the working group

Quoting from the proposal:

Aim: To explore and evaluate new ideas in programming language design. Our stance is that programming languages are foremost a medium for expressing the structure and intention of software, and communicating these to other programmers. As such human factors must weigh heavily in language design decisions, requiring a well-judged balance between conflicting goals that are qualitative in nature.

Scope:

  • exploring programming paradigms and major language features, both established and novel;
  • co-designing programming environments with such language features;
  • articulating more clearly the problems of programming that language features are designed to address;
  • identifying key design decisions that balance conflicting goals such as usability, expressivity, and the ability to provide tool support
  • combining experiences and perspectives from the full spectrum of language paradigms and communities;
  • conversing at a conceptual level that practicing language designers find useful, not restricted to mathematical formalisms or empirical hypotheses;
  • meta-discussion of techniques for evaluating language design decisions;
  • promulgating the appreciation of design considerations among researchers, practitioners, students, and teachers.