

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



