| | Closer to MOP is a compatibility layer that rectifies many of the absent or incorrect MOP features as detected by MOP Feature Tests.
Highlights of version 0.50:
- Support for MCL was dropped, and OpenMCL was replaced by Clozure Common Lisp. In these implementations, 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.
- Removed dependency on lw-compat.
- 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.
Highlights of version 0.42:
- Fixed a bug in the creation of congruent lambda lists for generic functions in c2mop for LispWorks.
Highlights of version 0.41:
- Fixed a problem in the handling of initial methods of generic functions in LispWorks.
- Added support for LispWorks 5.0/5.0.1.
- Fixed a bug in some LOOP idioms. (Thanks to Attila Lendvai.)
- Simplified the implementation of some validate-superclass methods.
- Changed the format of the contents of features.lisp. Better support for comparing feature changes between different versions of a given CL implementation.
- Corrected and added a few feature reports to features.txt.
Highlights of version 0.4:
- Rudimentary support for ECL added.
- Utility function REQUIRED-ARGS added for collecting the required arguments of a lambda list.
- Utility function ENSURE-FINALIZED added for ensuring that a class metaobject is finalized.
- In CMUCL and OpenMCL, DOCUMENTATION is properly defined for slot definition metaobjects.
- Again, some of 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.
Closer to MOP has an asdf system definition, so it should be straightforward to include it in your own projects. The package that exports the relevant symbols is called CLOSER-MOP or short C2MOP.Note that in some cases, symbols from the underlying MOP implementation or even the underlying COMMON-LISP package are shadowed in Closer to MOP. So if you use the CLOSER-MOP package you may need to shadow-import those symbols. Alternatively, you can use the packages CLOSER-COMMON-LISP and CLOSER-COMMON-LISP-USER that provide the symbols of COMMON-LISP / COMMON-LISP-USER plus the symbols of the CLOS MOP and the necessary shadow-imported symbols.For details on what has or has not been fixed, see the accompanying file features.txt. Please also check the comments that come with the source code. (Sorry for the lack of a more coherent documentation.)
Currently, the following Common Lisp implementations are supported:
- Allegro Common Lisp 8.1 Enterprise Edition.
- CLisp 2.46
- Clozure Common Lisp 1.2-rc1
- CMU Common 19e
- LispWorks 5.1.1, Personal and Professional Edition
- SBCL 1.0.18
There is also very rudimentary support for ECL 0.9i. All tests have been performed on Mac OS X 10.5.3.
The following implementations were supported in the past:
- Allegro Common Lisp 7.0 & 8.0 Enterprise Editions.
- CLisp from 2.35 onward
- CMU Common Lisp 19c & 19d
- LispWorks 4.3 & 4.4, Personal and Professional Editions
- LispWorks 5.0.1, 5.0.2, 5.1, Personal and Professional Editions
- Macintosh Common Lisp 5.1
- OpenMCL 1.0
- SBCL from 0.9.16 onward (except version 1.0.0)
The respective code conditionalizations are still in the source files, so there is a good chance that they still work, but there is no garantuee that this is the case, and active work for these implementations has been discontinued. |
|