Commit 3fcff15d authored by Pascal Costanza's avatar Pascal Costanza
Browse files

Removed notes about previously supported Common Lisp implementations.

darcs-hash:c0d93a4ee0f792e43d202856c593f884c9797855
parent fde70ab9
:allegro7.0
((:class-default-initargs)
(:class-direct-default-initargs)
(:compute-default-initargs) ; -> :compute-default-initargs-allegro
(:default-superclass-for-funcallable-standard-class-is-funcallable-standard-object)
(:defgeneric-calls-find-method-combination)
(:defmethod-calls-make-method-lambda)
(:dependent-protocol-for-generic-functions fixed)
(:extensible-allocation fixed)
(:function-invocation-calls-compute-applicable-methods)
(:function-invocation-calls-compute-applicable-methods-using-classes)
(:function-invocation-calls-compute-effective-method)
(:make-method-lambda)
(:method-functions-take-processed-parameters)
(:method-lambdas-are-processed)
(:multiple-qualifiers)
(:reinitialize-instance-calls-compute-discriminating-function fixed)
(:setf-class-name-calls-reinitialize-instance)
(:setf-generic-function-name-calls-reinitialize-instance)
(:slot-boundp-using-class-specialized-on-slot-definition fixed)
(:slot-makunbound-using-class-specialized-on-slot-definition fixed)
(:standard-class-and-funcallable-standard-class-are-compatible)
(:subclasses-of-built-in-class-do-not-inherit-exported-slots)
(:subclasses-of-forward-referenced-class-do-not-inherit-exported-slots)
(:subclasses-of-funcallable-standard-class-do-not-inherit-exported-slots)
(:subclasses-of-method-combination-do-not-inherit-exported-slots)
(:subclasses-of-standard-accessor-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-class-do-not-inherit-exported-slots)
(:subclasses-of-standard-direct-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-effective-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-generic-function-do-not-inherit-exported-slots)
(:subclasses-of-standard-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-reader-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-writer-method-do-not-inherit-exported-slots)
(:t-is-always-a-valid-superclass))
:allegro8.0
((:class-default-initargs)
(:class-direct-default-initargs)
(:compute-default-initargs) ; -> :compute-default-initargs-allegro
(:default-superclass-for-funcallable-standard-class-is-funcallable-standard-object)
(:defgeneric-calls-find-method-combination)
(:defmethod-calls-make-method-lambda)
(:dependent-protocol-for-generic-functions fixed)
(:extensible-allocation fixed)
(:function-invocation-calls-compute-applicable-methods)
(:function-invocation-calls-compute-applicable-methods-using-classes)
(:function-invocation-calls-compute-effective-method)
(:make-method-lambda)
(:method-functions-take-processed-parameters)
(:method-lambdas-are-processed)
(:reinitialize-instance-calls-compute-discriminating-function fixed)
(:setf-class-name-calls-reinitialize-instance)
(:setf-generic-function-name-calls-reinitialize-instance)
(:slot-boundp-using-class-specialized-on-slot-definition fixed)
(:slot-makunbound-using-class-specialized-on-slot-definition fixed)
(:standard-class-and-funcallable-standard-class-are-compatible)
(:subclasses-of-built-in-class-do-not-inherit-exported-slots)
(:subclasses-of-forward-referenced-class-do-not-inherit-exported-slots)
(:subclasses-of-funcallable-standard-class-do-not-inherit-exported-slots)
(:subclasses-of-method-combination-do-not-inherit-exported-slots)
(:subclasses-of-standard-accessor-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-class-do-not-inherit-exported-slots)
(:subclasses-of-standard-direct-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-effective-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-generic-function-do-not-inherit-exported-slots)
(:subclasses-of-standard-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-reader-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-writer-method-do-not-inherit-exported-slots)
(:t-is-always-a-valid-superclass))
:allegro8.1
((:class-default-initargs)
(:class-direct-default-initargs)
......@@ -108,23 +34,7 @@
(:subclasses-of-standard-writer-method-do-not-inherit-exported-slots)
(:t-is-always-a-valid-superclass))
:clisp2.35-2.36
((:accessor-method-initialized-with-function)
(:add-method-calls-compute-discriminating-function)
(:compute-slots-requested-slot-order-honoured)
(:defmethod-calls-make-method-lambda)
(:extensible-allocation)
(:forward-referenced-class-changed-by-change-class)
(:initialize-instance-calls-compute-discriminating-function)
(:make-method-lambda)
(:method-initialized-with-function)
(:method-lambdas-are-processed)
(:reinitialize-instance-calls-compute-discriminating-function)
(:reinitialize-instance-calls-finalize-inheritance)
(:remove-method-calls-compute-discriminating-function)
(:subclasses-of-method-combination-do-not-inherit-exported-slots))
:clisp2.37-2.39
:clisp2.43
((:accessor-method-initialized-with-function)
(:add-method-calls-compute-discriminating-function)
(:compute-slots-requested-slot-order-honoured)
......@@ -135,25 +45,10 @@
(:method-initialized-with-function)
(:method-lambdas-are-processed)
(:reinitialize-instance-calls-compute-discriminating-function)
(:reinitialize-instance-calls-finalize-inheritance)
(:remove-method-calls-compute-discriminating-function)
(:subclasses-of-method-combination-do-not-inherit-exported-slots))
:clisp2.40-2.43
((:accessor-method-initialized-with-function)
(:add-method-calls-compute-discriminating-function)
(:compute-slots-requested-slot-order-honoured)
(:defmethod-calls-make-method-lambda)
(:forward-referenced-class-changed-by-change-class)
(:initialize-instance-calls-compute-discriminating-function)
(:make-method-lambda)
(:method-initialized-with-function)
(:method-lambdas-are-processed)
(:reinitialize-instance-calls-compute-discriminating-function)
(:remove-method-calls-compute-discriminating-function)
(:subclasses-of-method-combination-do-not-inherit-exported-slots))
:cmu19c-19d
:cmu19d
((:accessor-method-initialized-with-function fixed)
(:accessor-method-initialized-with-lambda-list fixed)
(:accessor-method-initialized-with-slot-definition fixed)
......@@ -296,67 +191,6 @@
(:validate-superclass)
(:writer-method-class fixed))
:lispworks4.4
((:add-method-calls-add-direct-method fixed)
(:add-method-calls-compute-discriminating-function)
(:add-method-calls-remove-method fixed)
(:add-method-updates-specializer-direct-generic-functions fixed)
(:allocation-passed-to-effective-slot-definition-class) ; instead :flags-passed-to-effective-slot-definition-class
(:class-default-initargs)
(:class-direct-default-initargs)
(:class-initialized-with-direct-default-initargs) ; instead: conditionalization
(:class-reinitialization-calls-remove-direct-subclass fixed)
(:compute-applicable-methods-using-classes)
(:compute-default-initargs)
(:defgeneric-calls-find-method-combination)
(:direct-superclasses-by-default-empty) ; not fixed, but direct superclasses are automatically adjusted
(:effective-slot-definition-initialized-with-allocation) ; instead :effective-slot-definition-initialized-with-flags
(:eql-specializer) ; partially fixed
(:eql-specializer-object fixed)
(:eql-specializers-are-objects)
(:extensible-allocation)
(:finalize-inheritance-calls-compute-default-initargs)
(:find-method-combination fixed) ; partially
(:funcallable-standard-instance-access)
(:function-invocation-calls-compute-applicable-methods)
(:function-invocation-calls-compute-applicable-methods-using-classes)
(:generic-function-initialized-with-declarations) ; map from generic-function-initialized-with-declare
(:initialize-instance-calls-compute-discriminating-function)
(:intern-eql-specializer fixed) ; partially
(:make-method-lambda fixed) ; partially
(:method-functions-take-processed-parameters)
(:reinitialize-instance-calls-compute-discriminating-function)
(:remove-method-calls-compute-discriminating-function)
(:remove-method-calls-remove-direct-method fixed)
(:setf-class-name-calls-reinitialize-instance)
(:setf-generic-function-name-calls-reinitialize-instance)
(:setf-slot-value-using-class-specialized-on-slot-definition fixed)
(:slot-boundp-using-class-specialized-on-slot-definition fixed)
(:slot-makunbound-using-class-specialized-on-slot-definition fixed)
(:slot-reader-calls-slot-value-using-class fixed)
(:slot-value-using-class-specialized-on-slot-definition fixed)
(:slot-writer-calls-slot-value-using-class fixed)
(:specializer)
(:specializer-direct-generic-functions fixed)
(:standard-class-and-funcallable-standard-class-are-compatible)
(:standard-instance-access)
(:subclasses-of-built-in-class-do-not-inherit-exported-slots fixed)
(:subclasses-of-class-do-not-inherit-exported-slots fixed)
(:subclasses-of-direct-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-effective-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-forward-referenced-class-do-not-inherit-exported-slots fixed)
(:subclasses-of-funcallable-standard-class-do-not-inherit-exported-slots fixed)
(:subclasses-of-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-accessor-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-class-do-not-inherit-exported-slots fixed)
(:subclasses-of-standard-direct-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-effective-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-generic-function-do-not-inherit-exported-slots)
(:subclasses-of-standard-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-reader-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-writer-method-do-not-inherit-exported-slots))
:lispworks5.0-5.0.2
((:add-method-calls-compute-discriminating-function)
(:add-method-updates-specializer-direct-generic-functions fixed)
......@@ -496,5 +330,5 @@
(:subclasses-of-standard-accessor-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-writer-method-do-not-inherit-exported-slots))
:sbcl 0.9.16-1.0.11
:sbcl 1.0.11
#| all features implemented |#
Features that don't adhere to AMOP in various CLOS MOP implementations, and whether and how they are resolved in Closer to MOP.
Allegro Common Lisp 7.0
- CLASS-DIRECT-DEFAULT-INITARGS and CLASS-DEFAULT-INITARGS don't return canonicalized default initargs as specified. Not fixed.
- COMPUTE-DEFAULT-INITARGS takes more parameters than specified. Not fixed. Conditionalize on #+allegro for your own methods instead.
- FUNCALLABLE-STANDARD-OBJECT is not used as the default superclass for classes with :metaclass FUNCALLABLE-STANDARD-CLASS.
- DEFGENERIC does not call FIND-METHOD-COMBINATION. Not fixed.
- DEFMETHOD doesn't call MAKE-METHOD-LAMBDA. Not fixed.
- The dependent protocol for generic functions doesn't work fully. Fixed.
- The function invocation protocol doesn't call COMPUTE-APPLICABLE-METHODS, COMPUTE-APPLICABLE-METHODS-USING-CLASSES and COMPUTE-EFFECTIVE-METHOD. Not fixed.
- The :ALLOCATION type cannot be extended. Fixed.
- MAKE-METHOD-LAMBDA is not provided. Not fixed.
- Method functions don't take parameters as specified in AMOP, but instead just the parameters that the generic function receives. Not fixed.
- The defmethod form does not accept multiple qualifiers. Not fixed.
- REINITIALIZE-INSTANCE doesn't determine a new discriminating function. Fixed.
- (SETF CLASS-NAME) and (SETF GENERIC-FUNCTION-NAME) do not use REINITIALIZE-INSTANCE for changing the names. Not fixed.
- SLOT-BOUNDP-USING-CLASS and SLOT-MAKUNBOUND-USING-CLASS are not specialized on slot definition metaobjects, but on symbols. Fixed.
- STANDARD-CLASS and FUNCALLABLE-STANDARD-CLASS are not compatible. Not fixed.
- VALIDATE-SUPERCLASS doesn't recognize T as a valid superclass. Not fixed.
- Subclasses of BUILT-IN-CLASS, FORWARD-REFERENCED-CLASS, FUNCALLABLE-STANDARD-CLASS, METHOD-COMBINATION, STANDARD-ACCESSOR-METHOD, STANDARD-CLASS, STANDARD-DIRECT-SLOT-DEFINITION, STANDARD-EFFECTIVE-SLOT-DEFINITION, STANDARD-GENERIC-FUNCTION, STANDARD-METHOD, STANDARD-READER-METHOD, STANDARD-SLOT-DEFINITION and STANDARD-WRITER-METHOD will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
Allegro Common Lisp 8.0
- CLASS-DIRECT-DEFAULT-INITARGS and CLASS-DEFAULT-INITARGS don't return canonicalized default initargs as specified. Not fixed.
- COMPUTE-DEFAULT-INITARGS takes more parameters than specified. Not fixed. Conditionalize on #+allegro for your own methods instead.
- FUNCALLABLE-STANDARD-OBJECT is not used as the default superclass for classes with :metaclass FUNCALLABLE-STANDARD-CLASS.
- DEFGENERIC does not call FIND-METHOD-COMBINATION. Not fixed.
- DEFMETHOD doesn't call MAKE-METHOD-LAMBDA. Not fixed.
- The dependent protocol for generic functions doesn't work fully. Fixed.
- The function invocation protocol doesn't call COMPUTE-APPLICABLE-METHODS, COMPUTE-APPLICABLE-METHODS-USING-CLASSES and COMPUTE-EFFECTIVE-METHOD. Not fixed.
- The :ALLOCATION type cannot be extended. Fixed.
- MAKE-METHOD-LAMBDA is not provided. Not fixed.
- Method functions don't take parameters as specified in AMOP, but instead just the parameters that the generic function receives. Not fixed.
- REINITIALIZE-INSTANCE doesn't determine a new discriminating function. Fixed.
- (SETF CLASS-NAME) and (SETF GENERIC-FUNCTION-NAME) do not use REINITIALIZE-INSTANCE for changing the names. Not fixed.
- SLOT-BOUNDP-USING-CLASS and SLOT-MAKUNBOUND-USING-CLASS are not specialized on slot definition metaobjects, but on symbols. Fixed.
- STANDARD-CLASS and FUNCALLABLE-STANDARD-CLASS are not compatible. Not fixed.
- VALIDATE-SUPERCLASS doesn't recognize T as a valid superclass. Not fixed.
- Subclasses of BUILT-IN-CLASS, FORWARD-REFERENCED-CLASS, FUNCALLABLE-STANDARD-CLASS, METHOD-COMBINATION, STANDARD-ACCESSOR-METHOD, STANDARD-CLASS, STANDARD-DIRECT-SLOT-DEFINITION, STANDARD-EFFECTIVE-SLOT-DEFINITION, STANDARD-GENERIC-FUNCTION, STANDARD-METHOD, STANDARD-READER-METHOD, STANDARD-SLOT-DEFINITION and STANDARD-WRITER-METHOD will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
Allegro Common Lisp 8.1
- CLASS-DIRECT-DEFAULT-INITARGS and CLASS-DEFAULT-INITARGS don't return canonicalized default initargs as specified. Not fixed.
......@@ -59,21 +20,7 @@ Allegro Common Lisp 8.1
- VALIDATE-SUPERCLASS doesn't recognize T as a valid superclass. Not fixed.
- Subclasses of BUILT-IN-CLASS, FORWARD-REFERENCED-CLASS, FUNCALLABLE-STANDARD-CLASS, METHOD-COMBINATION, STANDARD-ACCESSOR-METHOD, STANDARD-CLASS, STANDARD-DIRECT-SLOT-DEFINITION, STANDARD-EFFECTIVE-SLOT-DEFINITION, STANDARD-GENERIC-FUNCTION, STANDARD-METHOD, STANDARD-READER-METHOD, STANDARD-SLOT-DEFINITION and STANDARD-WRITER-METHOD will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
CLisp 2.35 and 2.36
None of the incompatibilities in CLisp are fixed.
- Methods are not initialized with :function.
- ADD-METHOD, REMOVE-METHOD, INITIALIZE-INSTANCE and REINITIALIZE-INSTANCE do not determine a new discriminating function. This is postponed until function invocation instead, so shouldn't be a problem in practice.
- The slot order requested by a primary method for COMPUTE-SLOTS is not honoured by this MOP.
- DEFMETHOD does not call MAKE-METHOD-LAMBDA.
- The :ALLOCATION type cannot be extended. Not fixed.
- A FORWARD-REFERENCED-CLASS is not changed via CHANGE-CLASS (but is correctly reinitialized via REINITIALIZE-INSTANCE).
- MAKE-METHOD-LAMBDA is not provided.
- REINITIALIZE-INSTANCE of a class metaobject doesn't invoke FINALIZE-INHERITANCE again. Not fixed.
- Subclasses of METHOD-COMBINATION will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
CLisp 2.37 - 2.39
CLisp 2.43
None of the incompatibilities in CLisp are fixed.
......@@ -83,22 +30,9 @@ None of the incompatibilities in CLisp are fixed.
- DEFMETHOD does not call MAKE-METHOD-LAMBDA.
- A FORWARD-REFERENCED-CLASS is not changed via CHANGE-CLASS (but is correctly reinitialized via REINITIALIZE-INSTANCE).
- MAKE-METHOD-LAMBDA is not provided.
- REINITIALIZE-INSTANCE of a class metaobject doesn't invoke FINALIZE-INHERITANCE again. Not fixed.
- Subclasses of METHOD-COMBINATION will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
CLisp 2.40 - 2.43
None of the incompatibilities in CLisp are fixed.
- Methods are not initialized with :function.
- ADD-METHOD, REMOVE-METHOD, INITIALIZE-INSTANCE and REINITIALIZE-INSTANCE do not determine a new discriminating function. This is postponed until function invocation instead, so shouldn't be a problem in practice.
- The slot order requested by a primary method for COMPUTE-SLOTS is not honoured by this MOP.
- DEFMETHOD does not call MAKE-METHOD-LAMBDA.
- A FORWARD-REFERENCED-CLASS is not changed via CHANGE-CLASS (but is correctly reinitialized via REINITIALIZE-INSTANCE).
- MAKE-METHOD-LAMBDA is not provided.
- Subclasses of METHOD-COMBINATION will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
CMUCL 19c, 19d
CMUCL 19d
- CLASS-DIRECT-DEFAULT-INITARGS and CLASS-DEFAULT-INITARGS don't return canonicalized default initargs as specified. Not fixed.
- Accessor methods are not initialized with :function, :lambda-list, :slot-definition and :specializers. Fixed.
......@@ -115,37 +49,6 @@ CMUCL 19c, 19d
- STANDARD-CLASS and FUNCALLABLE-STANDARD-CLASS are not compatible. Not fixed.
- Subclasses of BUILT-IN-CLASS, CLASS, DIRECT-SLOT-DEFINITION, EFFECTIVE-SLOT-DEFINITION, EQL-SPECIALIZER, FORWARD-REFERENCED-CLASS, FUNCALLABLE-STANDARD-CLASS, SLOT-DEFINITION, SPECIALIZER, STANDARD-ACCESSOR-METHOD, STANDARD-CLASS, STANDARD-DIRECT-SLOT-DEFINITION, STANDARD-EFFECTIVE-SLOT-DEFINITION, STANDARD-GENERIC-FUNCTION, STANDARD-METHOD, STANDARD-READER-METHOD, STANDARD-SLOT-DEFINITION and STANDARD-WRITER-METHOD will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
LispWorks, 4.4.5, 4.4.6, Personal and Professional Editions
- CLASS-DIRECT-DEFAULT-INITARGS and CLASS-DEFAULT-INITARGS don't return canonicalized default initargs as specified. Not fixed.
- ADD-METHOD doesn't call ADD-DIRECT-METHOD and REMOVE-METHOD. Fixed.
- ADD-METHOD, REMOVE-METHOD, INITIALIZE-INSTANCE and REINITIALIZE-INSTANCE do not determine a new discriminating function. This is postponed until function invocation instead, so shouldn't be a problem in practice.
- Effective slot definitions are not initialized with :allocation, and EFFECTIVE-SLOT-DEFINITION-CLASS also doesn't receive that initarg. Not fixed. This information is encoded in the initarg :flags, but I don't have any detailed information about that parameter.
- Classes are not initialized with :direct-default-initargs, but with :default-initargs. Conditionalize on #+lispworks to fix this.
- Class reinitialization does not call REMOVE-DIRECT-SUBCLASS. Fixed.
- COMPUTE-APPLICABLE-METHODS-USING-CLASSES doesn't exist. Not fixed.
- COMPUTE-DEFAULT-INITARGS doesn't exist. Not fixed.
- DEFGENERIC does not call FIND-METHOD-COMBINATION. Not fixed.
- When classes are initialized, :direct-superclasses are by default not empty. Not fixed, but direct superclasses are automatically adjusted when you use the standard idiom for adding a new default superclass.
- EQL-SPECIALIZER, EQL-SPECIALIZER-OBJECT and INTERN-EQL-SPECIALIZER don't exist. In LispWorks, eql specializers are lists not objects. I have provided EQL-SPECIALIZER as a type (not as a class) and EQL-SPECIALIZER-OBJECT and INTERN-EQL-SPECIALIZER to work on lists, and a class EQL-SPECIALIZER* and corresponding EQL-SPECIALIZER-OBJECT* and INTERN-EQL-SPECILAIZER* to soften the incompatibilities.
- The :ALLOCATION type cannot be extended. Not fixed.
- FIND-METHOD-COMBINATION doesn't exist. Fixed, but fixed version doesn't work with method combination options.
- FUNCALLABLE-STANDARD-INSTANCE-ACCESS and STANDARD-INSTANCE-ACCESS don't exist. Not fixed.
- The function invocation protocol doesn't call COMPUTE-APPLICABLE-METHODS and COMPUTE-APPLICABLE-METHODS-USING-CLASSES. Not fixed.
- Generic functions are not initialized with :declarations, but with 'declare. Not fixed. Conditionalize on #+lispworks instead.
- MAKE-METHOD-LAMBDA expects other parameters than specified. Fixed.
- Method functions don't take parameters as specified in AMOP, but instead just the parameters that the generic function receives. Not fixed.
- REMOVE-METHOD doesn't call REMOVE-DIRECT-METHOD. Fixed.
- (SETF CLASS-NAME) and (SETF GENERIC-FUNCTION-NAME) do not use REINITIALIZE-INSTANCE for changing the names. Not fixed.
- The slot methods (SLOT-VALUE-USING-CLASS, etc.) are not specialized on effective slot definitions, but on slot names. Fixed.
- The generated accessor methods don't use the slot methods for accessing slots. Fixed. (Don't use :optimize-slot-access to deoptimize slot access, or otherwise the fixed slot access protocol doesn't work anymore!)
- SPECIALIZER doesn't exist. Not fixed.
- SPECIALIZER-DIRECT-GENERIC-FUNCTIONS doesn't exist. Fixed.
- STANDARD-CLASS and FUNCALLABLE-STANDARD-CLASS are not compatible. Not fixed.
- Subclasses of BUILT-IN-CLASS (fixed), CLASS (fixed), DIRECT-SLOT-DEFINITION, EFFECTIVE-SLOT-DEFINITION, FORWARD-REFERENCED-CLASS (fixed), FUNCALLABLE-STANDARD-CLASS (fixed), SLOT-DEFINITION, STANDARD-ACCESSOR-METHOD, STANDARD-CLASS (fixed), STANDARD-DIRECT-SLOT-DEFINITION, STANDARD-EFFECTIVE-SLOT-DEFINITION, STANDARD-GENERIC-FUNCTION, STANDARD-METHOD, STANDARD-READER-METHOD, STANDARD-SLOT-DEFINITION and STANDARD-WRITER-METHOD will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed, except where indicated otherwise.
LispWorks, 5.0 and 5.0.1, Personal Edition
LispWorks, 5.0 - 5.0.2, Professional Edition
- CLASS-DIRECT-DEFAULT-INITARGS and CLASS-DEFAULT-INITARGS don't return canonicalized default initargs as specified. Not fixed.
......@@ -191,7 +94,7 @@ In OpenMCL, generic functions work completely differently than specified. The sp
- REINITIALIZE-INSTANCE of a class metaobject doesn't invoke FINALIZE-INHERITANCE again. Not fixed.
- Subclasses of DIRECT-SLOT-DEFINITION, EFFECTIVE-SLOT-DEFINITION, GENERIC-FUNCTION, SLOT-DEFINITION, STANDARD-ACCESSOR-METHOD, STANDARD-DIRECT-SLOT-DEFINITION, STANDARD-EFFECTIVE-SLOT-DEFINITION, STANDARD-GENERIC-FUNCTION, STANDARD-METHOD, STANDARD-READER-METHOD, STANDARD-SLOT-DEFINITION and STANDARD-WRITER-METHOD will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
SBCL 0.9.16 - 1.0.11
SBCL 1.0.11
All features implemented.
......@@ -207,20 +110,18 @@ Summary:
- MAKE-METHOD-LAMBDA only works in CMUCL and SBCL as specified (but make sure that the respective generic function and method metaobject classes and make-method-lambda definitions are part of your compilation enviroment). MAKE-METHOD-LAMBDA also works in LispWorks, but the returned lambda expressions don't adhere to the AMOP specification (which may be good enough for your purposes).
- Specialize the methods for the dependent protocol on the class or generic function metaobject class. The example in AMOP doesn't do this but that is fragile code.
- Don't rely on methods being initialized with the specified initargs from inside the MOP.
- CLisp doesn't change a FORWARD-REFERENCED-CLASS via CHANGE-CLASS. Apart from that, FORWARD-REFERENCED-CLASS works reliably across all MOPs.
- Effective slot definitions and EFFECTIVE-SLOT-DEFINITION-CLASS don't receive :documentation in CMUCL, and no :allocation (!) in LispWorks before 5.0.
- CLisp doesn't change a FORWARD-REFERENCED-CLASS via CHANGE-CLASS.
- Effective slot definitions and EFFECTIVE-SLOT-DEFINITION-CLASS don't receive :documentation in CMUCL.
- If you specialize DIRECT-SLOT-DEFINITION-CLASS, use FIX-SLOT-INITARGS in portable code.
- If you want to use :ALLOCATION types other than :CLASS or :INSTANCE, you cannot use CLisp before 2.37, LispWorks or MCL. Only Allegro Common Lisp, CLisp from 2.37 on, CMUCL, OpenMCL and SBCL support this.
- If you want to use :ALLOCATION types other than :CLASS or :INSTANCE, you cannot use LispWorks or MCL. Only Allegro Common Lisp, CLisp, CMUCL, OpenMCL and SBCL support this.
- In Allegro, CMUCL and LispWorks, STANDARD-CLASS and FUNCALLABLE-STANDARD-CLASS are not compatible.
- The function invocation protocol only works in CMUCL, SBCL and CLisp.
- If you need to see :direct-default-initargs when classes are initialized, conditionalize on #+lispworks to receive :default-initargs instead for LispWorks version before 5.0.
- COMPUTE-DEFAULT-INITARGS doesn't exist (and isn't called) in LispWorks.
- In LispWorks, eql specializers are lists.
- FUNCALLABLE-STANDARD-INSTANCE-ACCESS and STANDARD-INSTANCE-ACCESS doesn't exist / should not be used in LispWorks.
- In CLisp before version 2.40, and in CMUCL, MCL and OpenMCL, the reinitialization of a class metaobject does not lead to a call of FINALIZE-INHERITANCE, so methods defined on FINALIZE-INHERITANCE won't be called again in that case.
- If you need to see :declarations when generic functions are initialized, conditionalize on #+lispworks to receive 'declare instead for LispWorks versions before 5.0. (Actually, AMOP and ANSI Common Lisp diverge in this regard. AMOP specifies that :declarations is used whereas ANSI Common Lisp specifies that 'declare is used. Since most MOP implementations adhere to AMOP in this regard, I have also chosen that path.)
- In CMUCL, MCL and OpenMCL, the reinitialization of a class metaobject does not lead to a call of FINALIZE-INHERITANCE, so methods defined on FINALIZE-INHERITANCE won't be called again in that case.
- AMOP specifies that :declarations is used whereas ANSI Common Lisp specifies that 'declare is used. Since all MOP implementations adhere to AMOP in this regard, I have also chosen that path.
- In Allegro Common Lisp and LispWorks, method functions take the original parameters that a generic function has received.
- In LispWorks before 5.0, the class SPECIALIZER doesn't exist.
- If you need to rely on the generic function protocols, don't use MCL or OpenMCL (or be very careful - some minor things work there as specified).
- The declarations for a generic function cannot be inspected in MCL.
- All implementations define slots on various specified metaobject classes that are exported from some package and/or accessible in the package common-lisp-user. Only sbcl is safe from this, and clisp is relatively safe in that it does that only for the class METHOD-COMBINATION.
- All implementations define slots on various specified metaobject classes that are exported from some package and/or accessible in the package common-lisp-user. Only SBCL is safe from this, and clisp is relatively safe in that it does that only for the class METHOD-COMBINATION.
Allegro 7.0, 8.0 & 8.1
CLisp 2.35 - 2.43
CMU Common Lisp 19c, 19d
LispWorks 4.4.5, 4.4.6 Personal Edition
LispWorks 4.4.5, 4.4.6 Professional Edition
LispWorks 5.0, 5.0.1, Personal Edition
Allegro 8.1
CLisp 2.43
CMU Common Lisp 19d
LispWorks 5.0 - 5.0.2, Professional Edition
Macintosh Common Lisp 5.1
OpenMCL 1.0
SBCL 0.9.16 - 0.9.18, 1.0.1 - 1.0.11
SBCL 1.0.11
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment