introduced.
327: "Lazy construction of CLOS classes from system classoids"
- In a fresh SBCL,
- (sb-mop:class-direct-subclasses (find-class 'pathname))
- returns NIL, despite the LOGICAL-PATHNAME class existing. However,
- if we then do (find-class 'logical-pathname) and repeat the request
- for direct subclasses, a list of the logical pathname class is
- returned. (Though this particular example revealed the problem to
- CSR, others have found that this gave consistent results for
- PATHNAME, but not for SIMPLE-CONDITION.)
-
- Presumably the CLOS bootstrap process needs to iterate over
- classoids (both structure- and condition-) to create CLOS classes
- for them, so that this internal inconsistency does not arise? How
- does this interact with the classoid hierarchy not perfectly
- mirroring the class hierarchy? (e.g. INSTANCE?)
+ (fixed in sbcl-0.8.10.69)
* fixed bug 321: define-method-combination argument lambda lists do
not cause invalid code to be generated when &optional or &aux
variables have default values. (reported by Bruno Haible)
+ * fixed bug 327: system subclasses of STRUCTURE-OBJECT or CONDITION
+ have CLOS classes; this appears also to have fixed reported
+ instability in stack exhaustion detection.
* optimization: rearranged the expansion of various defining macros
so that each expands into only one top-level form in a
:LOAD-TOPLEVEL context; this appears to decrease fasl sizes by
(!fix-early-generic-functions)
(compute-standard-slot-locations)
+(dolist (s '(condition structure-object))
+ (dohash (k v (classoid-subclasses (find-classoid s)))
+ (find-class (classoid-name k))))
(setq *boot-state* 'complete)
(defun print-std-instance (instance stream depth)
(assert (= (substandard-defgeneric 1 2) 3))
(assert (string= (substandard-defgeneric "1" "2") "12"))
\f
+(let* ((x (find-class 'pathname))
+ (xs (class-direct-subclasses x)))
+ (assert (>= (length xs) 1))
+ (assert (member (find-class 'logical-pathname) xs)))
+\f
;;;; success
(sb-ext:quit :unix-status 104)
;;; 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.8.10.68"
+"0.8.10.69"