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.

No comments: