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.

Yesterday I extended the modest collection of lenses for my DSLR. I'm still sporting an almost five year old Canon EOS 30D, but getting better lenses has had higher priority than upgrading the body. Lenses tend to be a better investment and add more to the quality of a photo. My first lens was the 17-85mm zoom lens that came with the 30D. With its maximal aperture of 4 it turned out to be suboptimal for the natural light photography that I tend to practice. I replaced the lens with a prime 50mm (F1.4) and a prime 28mm (F1.8). Both very sharp and fast lenses, ideal for portraits and landscapes. I like the large apertures not just for their speed but also for its small depth of field. For the purpose of photographing conferences I extended the collection with a 70-200mm (F2.8) telelens. I have been using this collection for the past three years with occasional good results. But the combination is quite heavy and changing lenses annoying. In particular, for the upcoming mountain vacation, the weight and backpack space occupied was determined too much; only one lens was to be part of the gear.

After some deliberation I chose to purchase the 24-70mm F2.8 zoom lens. It approximates the aperture of the prime lenses and is very sharp for a zoom lens according to reports. Today I took the lens for a test run and I am not disappointed.

IMG_7025c

This paper presents the mobl language for programming client-side applications that run in a HTML5 capable browser in a smartphone.

Zef Hemel, Eelco Visser. Declaratively Programming the Mobile Web with Mobl. In Proceedings of the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011. ACM, Portland, Oregon, USA, 2011.

Abstract A new generation of mobile touch devices, such as the iPhone, Android and iPad, are equipped with powerful, modern browsers. However, regular websites are not optimized for the specific features and constraints of these devices, such as limited screen estate, unreliable Internet access, touch-based interaction patterns, and features such as GPS. While recent advances in web technology enable web developers to build web applications that take advantage of the unique properties of mobile devices, developing such applications exposes a number of problems, specifically: developers are required to use many loosely coupled languages with limited tool support and application code is often verbose and imperative. We introduce mobl, a new language designed to declaratively construct mobile web applications. Mobl integrates languages for user interface design, styling, data modeling, querying and application logic into a single, unified language that is flexible, expressive, enables early detection of errors, and has good IDE support.

This paper describes an extension of Spoofax with support for testing of language definitions including the testing of editor services for a language. The language fragments in tests get the same editor support as in regular editors.

Lennart C. L. Kats, Rob Vermaas, Eelco Visser. Integrated Language Definition Testing. Enabling Test-Driven Language Development. In Proceedings of the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011. ACM, Portland, Oregon, USA, 2011.

Abstract The reliability of implementations of language definitions – compilers, interpreters, and development environments – is essential for effective software development and maintenance. They are often tested only as an afterthought. Languages with a smaller scope, such as domain-specific languages, often remain untested. General-purpose testing techniques and test case generation methods fall short in providing a low-threshold solution for test-driven language development. In this paper we introduce the notion of a language-parametric testing language (LPTL) that provides a reusable, generic basis for declaratively specifying language definition tests. We integrate the syntax, semantics, and editor services of a language under test into the LPTL for writing test inputs. This paper describes the design of an LPTL and the tool support provided for it, shows use cases using examples, and describes our implementation in the form of the Spoofax testing language.