August 24, 2006

Efficient Layer Activation for Switching Context-dependent Behavior

This is a paper that I have written together with Robert Hirschfeld and Wolfgang De Meuter, and we are going to present it at the Joint Modular Languages Conference (JMLC'06) in Oxford next month. The paper discusses how the CLOS Metaobject Protocol is used to implement the features of ContextL and presents a benchmark that shows that ContextL is quite efficient - not significantly worse than CLOS, which itself can be implemented very efficiently. So context-oriented programming does not seem to place a significant burden on applications in this regard.

The benchmark is based on an example that is frequently used to discuss aspect-oriented programming, especially control-flow-related features like the cflow construct in AspectJ. In our paper, we do not use an aspect-oriented solution, but obviously one based on context-oriented programming. That solution requires repeated activations and deactivations of layers, so this is indeed a useful benchmark for ContextL. These repeated activations and deactivations do not add any significant overhead to a similar program that does not activate or deactivate layers at all. To the contrary, in CMUCL and SBCL, the runs with repeated activations / deactivations are actually faster than the ones without. This means that other factors play a more important role with regard to efficiency. The benchmark is part of the ContextL release, so you can run it in your own environment.

The paper uses a Java-style syntax instead of the original Lisp syntax. We have decided to do so to make the paper more accessible to non-Lispers. However, I will use the original ContextL version for the presentation at the conference.

The paper can be downloaded from my website.

August 10, 2006

Common Lisp Document Repository

CDR - The Common Lisp Document Repository


The Common Lisp Document Repository is a repository of documents that are of interest to the Common Lisp community. The most important property of a CDR document is that it will never change: if you refer to it, you can be sure that your reference will always refer to exactly the same document.


There have been a number of attempts to establish a standardization process for Common Lisp after it has been officially published as an ANSI standard. The ANSI standardization was very costly and very time consuming (according to it took nearly 10 years and at least $400K).

The goal of the Common Lisp Document Repository is to be more light-weight and more efficient. We focus on one aspect of standardization: the ability to refer to a specification document in an unambiguous way.

The Common Lisp Document Repository intentionally does not define a process for coming up with specifications or any other means to guarantee some level of quality of the submitted documents. Instead, we aim for a community-driven, decentralized approach to come up, discuss and finalize specifications. In this sense, we only provide the services of librarians.

We hope that the Common Lisp Document Repository has the potential to prove useful in establishing new de-facto standards, and to serve as a stepping stone for more formal standardizations in the long run.


The Common Lisp Document Repository is hosted at


The Common Lisp Document Repository is a repository of printable text documents that contain material that are of interest to the Common Lisp community. For example, a CDR document can contain specifications of libraries, language extensions, example implementations, test suites, articles, etc. Each CDR document will be identified by a number. Form and possible contents of CDR documents are not prescribed, but the goal is to provide the Common Lisp community with a way to unambiguously refer to a document by way of mentioning its CDR number.

The repository already contains two CDR documents: CDR 0 describes CDR itself, and CDR 1 is the CLOS Metaobject Protocol specification as published in the book "The Art of the Metaobject" by Gregor Kiczales, Jim des Rivieres and Daniel G. Bobrow.

The presence of a document in the CDR repository does not imply a recommendation of any kind, but we leave the acceptance or rejection of particular documents to the community's natural selection process. We expect that some CDR documents will claim to be replacements of, or clarifications for, previous ones, but again such statements do not mean that this repository's goal is to enforce such developments. We are just librarians who want to make it possible to refer and cite documents of interest to Common Lispers.

We use a light-weight process that consists of the following steps:

  1. One or more authors submit a document.
  2. We check that the document is a printable text document, that it is indeed about Common Lisp, and that it does not contain objectionable material (like porn, religious or political statements, etc.).
  3. The document will be immediately assigned a fresh CDR number that can be used to refer to the document. We will make the document available for an initial period, after which it will be frozen and moved into final status, unless the authors decide to withdraw the document during the initial period.
For more details about the process, see the CDR manual at

The CDR editors
Marc Battyani, Pascal Costanza, Arthur Lemmens, Edi Weitz