Back to overview

Flexible object layouts: enabling lightweight language extensions by intercepting slot access

Type of publication Peer-reviewed
Publikationsform Proceedings (peer-reviewed)
Publication date 2011
Author Verwaest Toon, Bruni Camillo, Lungu Mircea, Nierstrasz Oscar,
Project Synchronizing Models and Code
Show all

Proceedings (peer-reviewed)

Title of proceedings OOPSLA 2011
DOI 10.1145/2048066.2048138

Open Access


Programming idioms, design patterns and application libraries often introduce cumbersome and repetitive boilerplate code to a software system. Language extensions and external DSLs (domain specific languages) are sometimes introduced to reduce the need for boilerplate code, but they also complicate the system by introducing the need for language dialects and inter-language mediation. To address this, we propose to extend the structural reflective model of the language with object layouts, layout scopes and slots. Based on the new reflective language model we can 1) provide behavioral hooks to object layouts that are triggered when the fields of an object are accessed and 2) simplify the implementation of state-related language extensions such as stateful traits. By doing this we show how many idiomatic use cases that normally require boilerplate code can be more effectively supported. We present an implementation in Smalltalk, and illustrate its usage through a series of extended examples.