October 22, 2006

International Lisp Conference '07 - Call for Papers

The call for papers for the International Lisp Conference 2007 is out. Please consider submitting papers about all Lisp- or Scheme-related topics. This time, the conference will be in Cambridge / UK in the first week of April 2007.

September 20, 2006

Freely downloadable books by Niklaus Wirth.

I haven't been aware of the fact that quite a few books by Niklaus Wirth are available as free downloads by now. Among them are such classics as Programming in Modula-2, Algorithms and Data Structures, Compiler Construction, and Project Oberon, all of them either originally in/about Oberon, or adapted to Oberon.

These books have influenced me a lot. Niklaus Wirth's main strength is a focus on the essentials, which is especially apparent in his concise programming style. I can especially recommend Compiler Construction which basically contains all you need to know about compilers in a very thin book (unless you decide to make this your field of expertise), and Project Oberon which contains the complete source code of a full operating system (including a file system, a garbage collector, a GUI, and so on).

See also the ETH Oberon Home Page for more information about Oberon and related materials.

CDR 0 & 1 finalized.

The Common Lisp Document Repository (CDR) has finalized its first documents today. CDR 0 describes CDR and the CDR process itself, while CDR 1 is the CLOS MOP specification, as published as an appendix in The Art of the Metaobject Protocol by Kiczales, des Rivières and Bobrow.

These CDRs were mostly test runs of the CDR process, although they are of course also useful in their own right. (The CLOS MOP had already been published over 15 years ago and has long been proven useful, so didn't really need an official "stamp.")

See the CDR website for more information.

Furthermore, we have set up a CDR Blog where we will post CDR-related announcements - actually the same ones as in the cdr-announce mailing list.

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 http://groups.google.com/group/comp.lang.lisp/msg/15248a1b11c5a603 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 http://cdr.eurolisp.org


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 http://cdr.eurolisp.org

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

May 21, 2006

Music recommendations May 2006

I am listening a lot to the following recent releases a lot, which I hereby recommend.

Call for Participation: 3rd European Lisp Workshop

The 3rd European Lisp Workshop will be held on July 3 in Nantes, France, as part of this year's European Conference on Object-Oriented Programming (ECOOP 2006). We have accepted five papers for presentation, about an agent-based framework to simulate metabolic processes, simulation of quantum computations, Lisp tools for musicology, naturalising foreign libraries, and beating C in scientific computing applications, as well as a breakout group on Lisp Hardware revisited.

Nick Levine will be giving a keynote presentation on How to stay poor, with macros and closures. He has been a professional Lisp consultant for over two decades and is the organizer of the upcoming International Lisp Conference 2007 in Cambridge, UK. We are grateful to Ravenbrook Limited for sponsoring the keynote presentation.

The workshop will also contain tutorials about CLIM and/or reflection and metaprogramming in Lisp.

There is still enough for additional participants, so please contact me if you wish to participate. Note that the early registration deadline is May 23, 2006.

See the workshop website for more detailed information.

March 25, 2006

Edit-time MOP

Last week I have attended the AOSD'06 conference in my old hometown in Bonn - it was nice to be back there for a week, meet some friends, go to some favorite places of mine, especially Cafe Göttlich, and at the same time do some work. I have found one of the presentations I have seen especially intriguing, about a first implementation of an edit-time metaobject protocol. Unfortunately, it is implemented in the wrong language. ;) I think this could be a worthwhile project to implement in Lisp or Scheme.

March 18, 2006

3rd European Lisp Workshop registration fees

Apart from the previous news that the 3rd European Lisp Workshop will have a best-paper award and a keynote presentation by Nick Levine, we now also have information about the registration fees. If you want to attend only the European Lisp Workshop (two days), this will cost 150 Euro for students and 250 Euro for regular participants. If you want to attend the whole conference, including the workshop, this will cost 300 Euro for students and 500 Euro for regular participants. During the workshop days, coffee breaks and lunches are included in those fees, as are receptions on both evenings that typically include food and drinks. Note that these fees are early registration fees valid only before May 23, 2006. See the conference's page about registration fees for more information.

March 14, 2006

News for the 3rd European Lisp Workshop

There two news items concerning the 3rd European Lisp Workshop:
  • Nick Levine will be giving a keynote presentation at the European Lisp Workshop. He has been a professional Lisp consultant for over two decades and is the organizer of the upcoming International Lisp Conference 2007 in Cambridge, UK. We are grateful to Ravenbrook Limited for sponsoring the keynote presentation.
  • The Association of Lisp Users has kindly sponsored a $500 prize fund for exceptional papers submitted to this year's European Lisp Workshop. Both the ALU and the workshop organizers are looking forward to your submissions.

March 07, 2006

Dynamic Languages Day Material

The presentations, some demo code and quicktime movies of the Dynamic Languages Day @ Vrije Universiteit Brussel are now available for download at the DLD website. Since the quicktime movies are quite large, we welcome any volunteers who want to mirror them. Please send me links that I can mention on the DLD website.

February 23, 2006

3rd European Lisp Workshop

We are organizing another instance of the European Lisp Workshop (former European Lisp and Scheme Workshop). This time it will be in Nantes, Frances, on July 3 & 4, and will again be co-located with ECOOP, as in previous years. This time, the workshop is organized by Theo D'Hondt, Arthur Lemmens, Christophe Rhodes and myself. See the ELW'06 website for further information.

February 12, 2006

Workshop on Generic Programming 2006

I am a member of the program committee of the forthcoming Workshop on Generic Programming 2006 at the International Conference on Functional Programming.

January 19, 2006

Closer Project: New Releases

Today, I have released new versions of all the packages currently included in the Closer Project. This project is an umbrella project for a few subprojects whose aim is to improve the usability of the CLOS MOP across different Common Lisp implementations. It is also the home of ContextL, a full-fledged CLOS extension in its own right providing language constructs for Context-oriented Programming (COP).

All packages now support the current versions of all supported Common Lisp implementations. They are:
  • Allegro Common Lisp 7.0 Enterprise Edition.
  • Allegro Common Lisp 8.0 Enterprise Edition.
  • CLisp 2.35 - 2.37
  • CMU Common Lisp 19c
  • LispWorks 4.4.5, 4.4.6 for Macintosh, Personal Edition
  • LispWorks 4.4.5, 4.4.6 for Macintosh, Professional Edition
  • Macintosh Common Lisp 5.1
  • OpenMCL 1.0
  • SBCL 0.9.7, 0.9.8
Highlights of the new versions.

MOP Feature Tests 0.4:
  • All previous known but untested problems have either been resolved or turned into actual tests.
  • Added a test for checking whether the slot order requested by a primary method for COMPUTE-SLOTS is honored by a MOP. (Thanks to Christophe Rhodes for the suggestion.)
  • Added a test for checking whether the object returend by COMPUTE-DISCRIMINATING-FUNCTION can be funcalled and whether the second parameter to SET-FUNCALLABLE-INSTANCE-FUNCTION can be a 'real' closure.
  • Added a test for checking whether one can use one's own :ALLOCATION kinds.
  • Added a test for checking whether a generic function without any methods defined can still be called.
  • Added a test for checking whether a DEFMETHOD form can have multiple qualifiers.
  • Added more fine-grained tests for checking SLOT-XXX-USING-CLASS functions.
  • Added a test whether REINITIALIZE-INSTANCE on a class metaobject calls FINALIZE-INHERITANCE. Luckily, all implementations pass that test.
Closer to MOP 0.3:
  • The supported Common Lisp implementations improved with regard to their support for the MOP, with varying extent. This required a few changes here and there.
  • The lack of extensible :ALLOCATION kinds in Allegro Common Lisp, as specified in AMOP, is fixed. Thanks to John Foderaro for giving me the important hint on how to solve this.
ContextL 0.2:
  • When rebinding special places, it is now checked whether they actually contain special symbols, so this is now a safe operation. This can be tweaked to omit the check for improved performance.
  • Changing a non-special slot to a special slot in an already existing class is now also supported in Allegro Common Lisp from 7.0 on. Thanks to Duane Rettig for fixing the related bug in Allegro and thereby enabling this feature.
  • Improved parsing of layered methods: The :METHOD option in DEFINE-LAYERED-FUNCTION is now parsed and processed correctly. Furthermore, one can now optionally give a name to the otherwise anonymous layer parameter. This is useful for calling CALL-NEXT-METHOD with changed parameters.
  • Added a new namespace for layers. Before, their names could accidentally clash with class names.
  • Added a number of performance tweaks and better error messages.
  • Fixed a few bugs.
Special thanks go to John Foderaro, Duane Rettig and Christophe Rhodes (in alphabetical order) for exceptional help.

January 12, 2006

Dynamic Languages Day @ Vrije Universiteit Brussel

On Monday, February 12 there will be a Dynamic Languages Day @ Vrije Universiteit Brussel. It will consist of a number of talks about dynamic languages. It begins with a presentation about how Scheme is used at the Vrije Universiteit Brussel as an introductory programming language, and will be followed by presentations about Self, Smalltalk and Common Lisp. A special focus will be on the reflective and metaobject features of the respective languages. I will contribute to this event by repeating my tutorial on generic functions and the CLOS Metaobject Protocol that I have already given at OOPSLA'05 and several other past events. Attendance is free and open for the general public. See the website for that event for more information.

January 09, 2006

Gekido Party 01/06

This week's Saturday, I'll be going to the Gekido Party, which is one of the coolest parties around, pretty good music. And that's not just because the organizers and DJs are friends of mine. ;)

Here is a picture from last November's Gekido Party. It shows Steffi Schmid, one of my absolutely best friends of all time, and myself.

Steffi und Pascal