Edwin Westbrook

Domain-Specific Languages (DSLs) are a powerful technique for increasing programmer productivity, by matching the language design to the needs of the programmer. Although they are growing in popularity, however, DSLs are not used in practice as often as they should be because of four concerns: ease of implementation, efficiency, implementation correctness, and DSL program correctness. In this talk, the speaker will discuss some of his research that addresses these concerns. The talk will focus on two projects which have recently been published, Habanero Java with permissions (HJp) and HobbitLib.

HJp is a domain-specific extension of Java, including the Habanero Java (HJ) language, for writing race-free concurrent programs. Race-freedom is guaranteed by a combination of static and dynamic checks, where dynamic checks are inserted by the compiler whenever static checks cannot guarantee race-freedom. HJp is a gradual type system, meaning that, by inserting dynamic checks, existing HJ programs can be compiled using HJp to ensure races are detected before they can happen. The user can then gradually add annotations, eventually leading to a statically-verified race-free program.

HobbitLib is a Haskell library for representing name-binding constructs, such as the lexical scoping constructs found in most programming languages. The benefit of the HobbitLib library is that many common errors involved in manipulating name-binding constructs, such as accidental variable capture and scope extrusion, are prevented, since such bugs are not possible given the HobbitLib API for manipulating name-bindings. Further, using HobbitLib, programmers can define well-typed representations of typed programming languages; operations defined over such representations are then guaranteed to be type-preserving. These properties improve the correctness of DSL implementations.