Skip to content

Commit

Permalink
0.9.4.77:
Browse files Browse the repository at this point in the history
	Update fasl file version
	... also expand a little on metaobject protocol
		incompatibilities.
  • Loading branch information
csrhodes committed Sep 19, 2005
1 parent 1aee76d commit 4293ef0
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 2 deletions.
41 changes: 41 additions & 0 deletions doc/manual/beyond-ansi.texinfo
Expand Up @@ -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.

Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
4 changes: 3 additions & 1 deletion src/code/early-fasl.lisp
Expand Up @@ -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
Expand Down Expand Up @@ -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*))
Expand Down
2 changes: 1 addition & 1 deletion version.lisp-expr
Expand Up @@ -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"

0 comments on commit 4293ef0

Please sign in to comment.