Sunday, July 8, 2012

ABCL's MOP passes the test suite

Just some minutes ago, a commit went into ABCL's source repository which cleaned up a bit of confusion over the role of fast method functions in calculating the discriminating function of a generic function.  And as of now, Pascal Costanza's MOP test suite reports this:

CL-USER> (mop-feature-tests:describe-mop-features)

This MOP supports all known standard features.

This MOP lacks no known standard features.

This MOP supports the extra features (:ACCESSOR-METHOD-INITIALIZED-WITH-FAST-FUNCTION :ACCESSOR-METHOD-INITIALIZED-WITH-GENERIC-FUNCTION :ACCESSOR-METHOD-INITIALIZED-WITH-QUALIFIERS :ALLOCATION-CLASS-PASSED-TO-EFFECTIVE-SLOT-DEFINITION-CLASS :DIRECT-SLOT-DEFINITION-INITIALIZED-WITH-ALLOCATION-CLASS :EFFECTIVE-SLOT-DEFINITION-INITIALIZED-WITH-ALLOCATION-CLASS :METHOD-INITIALIZED-WITH-FAST-FUNCTION)

This MOP metaclass structure has no known leaks.
; No value
CL-USER>

The test suite page warns about interpreting such a result as "supports the meta-object protocol of Common Lisp, guaranteed bug-free!", and I heartily agree with that assessment.  I would classify ABCL's MOP support as early beta, with lots of exciting bugs to be uncovered as people start using it.  
That said, I will submit patches to closer-mop to support ABCL as soon as MOP support is in a released version of ABCL, and the large number of MOP-using systems available from quicklisp should then uncover any obvious bugs quite soon.