June 01, 2008

New versions of Closer libraries released

I have just released new versions of all Closer libraries, including Closer to MOP and ContextL.

A major change that affects all libraries is that I have dropped support for Macintosh Common Lisp, and "replaced" OpenMCL with Clozure Common Lisp. Furthermore, the dependency of Closer to MOP to LW-Compat has been removed due to requests by users, but a dependency of ContextL to the portable-threads librarie of the GBBopen project has been added.

Other highlights include:

Closer to MOP 0.5

  • In MCL, OpenMCL and Clozure Common Lisp, funcallable-standard-object is now exported from Closer to MOP.

  • Fixed the lack of :generic-function-argument-precedence-order-returns-required-arguments in Allegro Common Lisp.

  • Ensured that a defgeneric form makes a generic function metaobject available in the compile-time environment. Otherwise, defmethod may not yield a method of the correct method metaobject class.

  • Added support for compute-discriminating-function in Clozure Common Lisp and OpenMCL, based on code provided by Slava Akhmechet.

  • Added a classp predicate (due to Willem Broekema).



ContextL 0.5

  • Added :in as an alternative for :in-layer in the various define-layered-xyz macros.

  • ContextL now depends on portable-threads of the GBBopen project. This is done for locking critical sections to ensure thread safety of ContextL.

  • Added new functions active-layers and (setf current-layer-context).

  • Added a garbage collector for layer caches, such that redefinition of layers or certain methods in the ContextL MOP have an effect.

  • Simplified mapping of layer-related names to internal names, which should also make things easier to read when debugging ContextL programs.



MOP Feature Tests 0.45

  • Added new recognized standard feature :generic-function-argument-precedence-order-returns-required-arguments.

  • Added a new known extra feature for SBCL (since SBCL version 1.0.14).



The libraries can be downloaded from the Closer Project and are asdf-installable, as usual.

Reengineering Patterns

Most people misunderstand the concept of patterns. This is probably mostly due to the Design Patterns book by Gamma, Helm, Johnson and Vlissides, which only conveys parts of what patterns can actually express and what they can be used for. People who know "better" languages know that most of the design patterns in that book can be much easier expressed, such that they virtually go away. However, that's not the "fault" of the patterns concept, that's rather a problem with that book, in that quite boring patterns have been selected.

A much better book is "Object-Oriented Reengineering Patterns" by Demeyer, Ducasse and Nierstrasz. In my opinion, it is probably the best book about (software-related) patterns that has been published so far. The good news is that the book is now freely available for download, so check it out.