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