* incompatible change: the SB-PCL package should now be considered a
private implementation detail, and no longer a semi-private MOP
interface.
+ * minor incompatible change: due to rearrangement for threads, the
+ control stack and binding stack are now allocated at arbitrary
+ addresses instead of being hardcoded per-port. Users affected by
+ this probably have to be doing advanced things with shared
+ libraries, and will know who they are.
* known functions, which cannot be open coded by backend, are
considered to be able to check types of their arguments.
(reported by Nathan J. Froyd)
specified-by-AMOP order of (CLASS NAME &REST ARGS &KEY).
* fixed bug 20: DEFMETHOD can define methods using names that are
not the proper names of classes to designate class specializers.
+ * Experimental native threads support, on x86 Linux. This is not
+ compiled in by default: you need to add :SB-THREAD to the target
+ features. See the "Beyond ANSI" chapter of the manual for
+ details.
* fixed some bugs revealed by Paul Dietz' test suite:
** COPY-ALIST now signals an error if its argument is a dotted
list;
** the USE-VALUE, CONTINUE and STORE-VALUE functions now correctly
exclude restarts of the same name associated with a different
condition;
- * Experimental native threads support, on x86 Linux. This is not
- compiled in by default: you need to add :SB-THREAD to the target
- features. See the "Beyond ANSI" chapter of the manual for
- details.
- * Due to rearrangement for threads, the control stack and binding stack
- are now allocated at arbitrary addresses instead of being hardcoded
- per-port. Users affected by this probably have to be doing
- advanced things with shared libraries, and will know who they are
+ ** DEFCLASS of forward-referenced classes with another
+ forward-referenced class in the superclasses list no longer
+ causes an error;
planned incompatible changes in 0.8.x:
* (not done yet, but planned:) When the profiling interface settles
(defmethod ensure-class-using-class ((class pcl-class) name &rest args &key)
(multiple-value-bind (meta initargs)
(ensure-class-values class args)
- (unless (eq (class-of class) meta) (change-class class meta))
+ (unless (eq (class-of class) meta)
+ (apply #'change-class class meta initargs))
(apply #'reinitialize-instance class initargs)
(setf (find-class name) class)
(set-class-type-translation class name)
;;; that it doesn't happen again.
;;;
;;; First, the forward references:
-(defclass a (b) ())
-(defclass b () ())
+(defclass forward-ref-a (forward-ref-b) ())
+(defclass forward-ref-b () ())
+;;; (a couple more complicated examples found by Paul Dietz' test
+;;; suite):
+(defclass forward-ref-c1 (forward-ref-c2) ())
+(defclass forward-ref-c2 (forward-ref-c3) ())
+
+(defclass forward-ref-d1 (forward-ref-d2 forward-ref-d3) ())
+(defclass forward-ref-d2 (forward-ref-d4 forward-ref-d5) ())
+
;;; Then change-class
(defclass class-with-slots ()
((a-slot :initarg :a-slot :accessor a-slot)