0.9.4.77:
authorChristophe Rhodes <csr21@cam.ac.uk>
Mon, 19 Sep 2005 19:23:00 +0000 (19:23 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Mon, 19 Sep 2005 19:23:00 +0000 (19:23 +0000)
Update fasl file version
... also expand a little on metaobject protocol
incompatibilities.

doc/manual/beyond-ansi.texinfo
src/code/early-fasl.lisp
version.lisp-expr

index 2cde567..c79ee95 100644 (file)
@@ -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
index 6d40380..89ad9be 100644 (file)
@@ -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
 ;;;     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*))
index 3946e05..1c934a8 100644 (file)
@@ -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"