From 4293ef0eaa26fc153dfae88de3d1dbe5043ac39e Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Mon, 19 Sep 2005 19:23:00 +0000 Subject: [PATCH] 0.9.4.77: Update fasl file version ... also expand a little on metaobject protocol incompatibilities. --- doc/manual/beyond-ansi.texinfo | 41 ++++++++++++++++++++++++++++++++++ src/code/early-fasl.lisp | 4 +++- version.lisp-expr | 2 +- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/doc/manual/beyond-ansi.texinfo b/doc/manual/beyond-ansi.texinfo index 2cde56762..c79ee95b7 100644 --- a/doc/manual/beyond-ansi.texinfo +++ b/doc/manual/beyond-ansi.texinfo @@ -48,6 +48,7 @@ are: @findex compute-effective-method @findex sb-mop:compute-effective-method @code{compute-effective-method} only returns one value, not two. + There is no record of what the second return value was meant to indicate, and apparently no clients for it. @@ -60,6 +61,10 @@ the arguments @code{:declare} and @code{:declarations} to argument defining the declarations to be stored and returned by @code{generic-function-declarations}. +Where AMOP specifies @code{:declarations} as the keyword argument to +@code{ensure-generic-function}, the Common Lisp standard specifies +@code{:declare}. Portable code should use @code{:declare}. + @item @findex validate-superclass @findex finalize-inheritance @@ -69,6 +74,8 @@ argument defining the declarations to be stored and returned by @tindex funcallable-standard-class @tindex sb-mop:funcallable-standard-class @tindex function +@findex sb-mop:class-prototype +@findex class-prototype although SBCL obeys the requirement in AMOP for @code{validate-superclass} for @code{standard-class} and @code{funcallable-standard-class} to be compatible metaclasses, we @@ -77,6 +84,40 @@ of metaclass @code{funcallable-standard-class} must have @code{function} in its superclasses, and a class of metaclass @code{standard-class} must not. +@findex typep +@findex class-of +@findex subtypep +At class finalization, a class prototype which is accessible by a +standard mop function @code{sb-mop:class-prototype}. The user can +then ask whether this object is a @code{function} or not in several +different ways: whether it is a function according to @code{typep}; +whether its @code{class-of} is @code{subtypep} @code{function}, or +whether @code{function} appears in the superclasses of the class. The +additional consistency requirement comes from the desire to make all +of these answers the same. + +The following class definitions are bad, and will lead to errors +either immediately or if an instance is created: +@lisp +(defclass bad-object (funcallable-standard-object) + () + (:metaclass standard-class)) +@end lisp +@lisp +(defclass bad-funcallable-object (standard-object) + () + (:metaclass funcallable-standard-class)) +@end lisp +The following definition is acceptable: +@lisp +(defclass mixin () + ((slot :initarg slot))) +(defclass funcallable-object (funcallable-standard-object mixin) + () + (:metaclass funcallable-standard-class)) +@end lisp +and leads to a class whose instances are funcallable and have one slot. + @end itemize @node Support For Unix diff --git a/src/code/early-fasl.lisp b/src/code/early-fasl.lisp index 6d4038030..89ad9be2f 100644 --- a/src/code/early-fasl.lisp +++ b/src/code/early-fasl.lisp @@ -76,7 +76,7 @@ ;;; versions which break binary compatibility. But it certainly should ;;; be incremented for release versions which break binary ;;; compatibility. -(def!constant +fasl-file-version+ 58) +(def!constant +fasl-file-version+ 59) ;;; (record of versions before 2003 deleted in 2003-04-26/0.pre8.107 or so) ;;; 38: (2003-01-05) changed names of internal SORT machinery ;;; 39: (2003-02-20) in 0.7.12.1 a slot was added to @@ -123,6 +123,8 @@ ;;; on 0.9.0.6 (MORE CASE CONSISTENCY). ;;; 57: (2005-06-12) Raw slot rearrangement in 0.9.1.38 ;;; 58: (2005-08-16) Multiple incompatible changes between 0.9.3 and 0.9.3.60 +;;; 59: (2005-09-18) METAOBJECT implementation, removal of INSTANCE and +;;; FUNCALLABLE-INSTANCE classes. ;;; the conventional file extension for our fasl files (declaim (type simple-string *fasl-file-type*)) diff --git a/version.lisp-expr b/version.lisp-expr index 3946e05f9..1c934a8ef 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.4.76" +"0.9.4.77"