Trip report on LCSD (October 22, 2006)

LCSD is a workshop of OOPSLA on libraries. Libraries have long been a core concept for practical software development, and they are especially important as more software is built by teams distributed around the world. I enjoyed hearing what other people are thinking about libraries nowadays.

My talk on interface evolution generated several questions and responses. Many people seem to be familiar with this issue!

The keynote was by Sean Parent from Adobe. The theme of his talk is that the glue code is the code. He went on from there to talk about some experiments Adobe is making with a declarative language for gluing together GUI environments. It addresses the same problem as SuperGlue.

Several other talks I found interesting for various reasons. Lubomir Bourdev and Jaakko Jarvi talked about the tension between generic programming, size of compiled code, and efficiency. They discuss their solution in this design space, based on C++ templates. Cosmin Oancea and Stephen Watt talked about inter-library interfaces that have a lot of abstraction, even when your interface language is a lowest-common-denominator system like CORBA. The speaker plugged Scala’s triple of abstraction mechanisms for having extensible components: type members, mixins, and GADT’s.

Eric Van Wyk, Derek Bodin, and Paul Huntington talked about their system for having language extensions in libraries. This is exciting because the Scala group is exploring things like language extension at the language level. The system of Wyk, et al., is based on putting attributed grammar fragments in the libraries. If you import a library, then you get access to the syntax and semantics defined in those attribute grammar fragments. Interesting. To contrast, Scala’s efforts use fixed Scala syntax, and the semantic changes are implemented in general Scala code, not in a separate attribute language.