Wednesday, March 28, 2012

Closing in on the MOP ...

I just sent the following patch to Pascal Costanza, the author of the excellent mop-feature-tests test suite:

--- old-mop-features/mop-feature-tests.lisp
+++ new-mop-features/mop-feature-tests.lisp
@@ -1,6 +1,7 @@
 (in-package :mop-feature-tests)
 
 (defparameter *mop-package-name*
+  #+abcl "MOP"
   #+allegro "MOP" ;; "CLOS" "ACLMOP"
   #+clisp "CLOS"
   #+cmu "CLOS-MOP" ;; "MOP"
@@ -730,6 +731,7 @@
         (format out "(defparameter *mop-known-extra-features*~%")
         (format out "  '~S)~%~%" *mop-known-extra-features*))
       (format out
+              #+abcl "#+abcl~%"
               #+allegro "#+allegro~%"
               #+clisp "#+clisp~%"
               #+cmu "#+cmu~%"

The version of ABCL in subversion now runs this test suite to completion, sporting 53 missing standard features but on the other hand also 13 extra features, as reported by (mop-feature-tests:describe-mop-features).  Next up: finding out what these numbers mean, implementing the missing features, and getting ABCL support into Pascal's closer-mop compatibility library, which is used by virtually all MOP-using Lisp code these days.

Right now, I would rate ABCL's MOP support as alpha-quality, as in "it compiled, check it in!".  But after some rounds of bug-fixing, we should have solid support for another big group of Common Lisp libraries and systems.  Onward!