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