These notes correspond to *pcl-system-date* "5/22/87 May 22nd, 1987". The notes from the last release are stored as 4-29-notes.text This release runs in: CMU Lisp ExCL Lucid Symbolics Common Lisp (Genera) Vaxlisp (2.0) Xerox Common Lisp (Lyric Release) Kyoto Common Lisp (5.2) TI Common Lisp (Release 3) TI release 2 should also be working soon, I will announce that when it happens. Note once again, that Xerox Lisp users should FTP all the source files from /pub/pcl/ as well as all the dfasl files from /pub/pcl/xerox/. Included in the xerox specific directory is a file called PCL-ENV, which provides some simple environment support for using PCL in Xerox Lisp. You must load PCL BEFORE loading pcl-env. MAJOR CHANGES IN THIS RELEASE: --- it is possible to forward reference classes in a defclass (or add-named-class) form. This means it is possible to say: (defclass foo (bar) (i j k)) (defclass bar () (x y z)) Rather than having to put the in the "right" order. NOTE: the full-on error checking for this is not finished yet. don't try to break it by doing things like: (defclass foo (bar) (i j k)) (make-instance 'foo) (defclass bar () (x y z)) --- print-instance has been renamed to print-object --- the defclass and class-definition protocol has changed. some of the effects of this change are: * ADD-NAMED-CLASS is a true functional interface for defclass, so for example, (defclass foo () (x y z) (:accessor-prefix foo-)) is equivalent to: (add-named-class (class-prototype (class-named 'class)) 'foo () '(x y z) '((:accessor-prefix foo-))) * defclass (and add-named-class) now undefined accessor methods, reader methods and constructors which 'went away'. For example: (defclass foo () (x y z) (:reader-prefix foo-)) defines methods on the generic functions foo-x foo-y and foo-z. but if you then evaluated the defclass form: (defclass foo () (x y z)) those reader methods will be removed from the generic functions foo-x foo-y and foo-z. Similarly constructors which 'went away' will be undefined. --- writer methods generated by the :accessor and :accessor-prefix options now pay attention to the :type slot-option. So, (defclass foo () ((x :accessor foo-x :type symbol))) (defvar *foo-1* (make-instance 'foo)) (setf (foo-x *foo-1*) 'bar) ; is OK (setf (foo-x *foo-1*) 10) ; signals an error --- There are fewer built-in classes. Specifically, only the following Common Lisp types have classes: ARRAY BIT-VECTOR CHARACTER COMPLEX CONS FLOAT INTEGER LIST NULL NUMBER RATIO RATIONAL SEQUENCE STRING SYMBOL T VECTOR * In a future release the subtypes of FLOAT may have classes, that issue is still under discussion. * Some ports of PCL also define classes for: HASH-TABLE PACKAGE PATHNAME RANDOM-STATE READTABLE STREAM it depends on how the type is represented in that Lisp's type system. --- The with-slots option :use-slot-value is now obsolete. You should use the :use-accessors option as specified in the CLOS spec instead. with-slot forms which did not use the :use-slot-value option are OK, you don't have to touch them. with-slot forms which used :USE-SLOT-VALUE T should be changed to say :USE-ACCESSORS NIL. with-slot forms which used :USE-SLOT-VALUE NIL should be changed to use neither option, or if you insist :USE-ACCESSORS T