Closer Project.
Hot topics: ContextL
  Navigation.
  • Main
  • History
  • Feature Tests
  • Closer to MOP
  • ContextL
  • AspectL
  • Mailing Lists
  • Downloads
  •   MOP Feature Tests.
    This package provides a way to check what features a Common Lisp implementation supports.

    Highlights of version 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).
    • Support for MCL was dropped, and OpenMCL was replaced by Clozure Common Lisp.

    Highlights of version 0.44:
    • Added new tests for standard metaobject classes.
    • Simplified output for feature reports.
    • Added a report function for quick comparison between two versions of a given CL implementation.
    • Significantly simplified the test for extensible allocations.

    Highlights of version 0.43:
    • Added rudimentary support for ECL. Added even more rudimentary support for GCL.
    • Added a test for dependencies between lambda-list and argument-precedence-order in initialization and reinitialization of generic functions.
    • Added more detailed checks for metaobject readers.
    • Added a test for slot inheritance in subclasses of specified metaobject classes.
    • Fixed the test whether reinitialization of class metaobjects calls FINALIZE-INHERITANCE on those class metaobjects again. Unfortunately, some CL implementations do not pass the fixed test anymore.

    Highlights of version 0.4:
    • Added a test for checking whether the slot order requested by a primary method for COMPUTE-SLOTS is honored by a MOP. (Thanks to Christophe Rhodes for the suggestion.)
    • Added a test for checking whether the object returend by COMPUTE-DISCRIMINATING-FUNCTION can be funcalled and whether the second parameter to SET-FUNCALLABLE-INSTANCE-FUNCTION can be a 'real' closure.
    • Added a test for checking whether one can use one's own :ALLOCATION kinds.
    • Added a test for checking whether a generic function without any methods defined can still be called.
    • Added a test for checking whether a DEFMETHOD form can have multiple qualifiers.
    • Added more fine-grained tests for checking SLOT-XXX-USING-CLASS functions.

    The simplest way to use MOP Feature Tests is to load it with asdf, use the :mop-feature-tests package and execute the functions run-feature-tests and describe-mop-features without parameters.

    You can also select to test single features by executing run-feature-test and pass the name of a feature test as a string to it. The tests are stored in the "tests" folder, each .lisp file therein represents one ore more feature tests.

    Make sure that *mop-feature-test-path* points to the right folder. After execution of run-feature-tests, the variables *mop-features* and *mop-structure-leaks* describe the feature set of your MOP implementation. *mop-features* is a subset of (union *mop-known-standard-features* *mop-known-extra-features*). *mop-known-standard-features* are the MOP features as specified in AMOP, whereas *mop-known-extra-features* are both additional features not specified there, or features that are specified there but deviate from that specification in important ways. *mop-known-missing-features* is a list of all the features that are not supported in some of the supported Common Lisp implementations.

    *mop-structure-leaks* is a subset of *mop-known-structure-leaks* - these are deviations from the metaobject class hierarchy as specified in AMOP. There is no *mop-known-structure-adherences*, or some such, because that list would be too long. (There will probably also be no way to circumvent these structure leaks.)

    The other exported symbols from :mop-feature-tests are mostly utility functions to support implementing feature tests.

    Currently, the following Common Lisp implementations are supported:
    • Allegro Common Lisp 8.1 Enterprise Edition.
    • CLisp 2.46
    • Clozure Common Lisp 1.2
    • CMU Common Lisp 19e
    • LispWorks 5.1.1, Personal and Professional Edition
    • SBCL 1.0.20
    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.

    Please check the release notes for details about changes to previous versions.

    Disclaimer: This project is in an early stage. Don't publish any findings about existing MOP implementations based on the software offered here with the implicit suggestion that they are facts. It is very likely that the code includes bugs and misinterpretations of the AMOP specification. You have been warned!
    Powered by LML!
      (c) 2005 - 2008 Pascal Costanza. Original site design by Antipop.