Greetings,

The book "The Art of the Metaobject Protocol" by Kiczales, Rivieres & Bobrow contains a simplified but working CLOS.  It is infinitely better than what's in ABCL right now (it has a full MOP) and IMO offers the shortest path to a pretty-close-to-full CLOS.  The code in that book suffers from two problems that could be addressed easier than other solutions as follows:

1.  I think the code keeps internal pointers to each object so that nothing ever gets GC'd.  The easiest way to fix it would be to support weak pointers (references to objects that don't prevent GC).  Weak pointer support is a good thing to have in any case.

2.  The other issue has to do with efficiency.  This code is pretty much implemented as a design-as-described code.  Very straight forward but not efficient in any respect.  Real CLOS implementations do a lot of work to pre-compute and minimize runtime lookups / calculations.  While doing similar optimizations is beyond the scope of this starting point, it would be easy to implement a lookup cache.

Just some thoughts.

Blake McBride