Copyright (c) Xerox Corporation 1989. All rights reserved.
These notes correspond to the "5/22/89 Victoria PCL" version of PCL.
Please read this entire file carefully. Failure to do so guarantees
that you will have problems porting your code from the previous release
of PCL.
You may also be interested in looking at previous versions of the
notes.text file. These are called xxx-notes.text where xxx is the
version of the PCL system the file corresponds to. At least the last
two versions of this file contain useful information for any PCL user.
This version of PCL has been tested at PARC in the following Common
Lisps:
Symbolics 7.2, 7.4
Coral 1.2
Lucid 3.0
IBCL (October 15, 1987)
Allegro 3.0.1
Golden Common Lisp 3.1
EnvOS Medley
These should work, but haven't been tested yet:
TI
This release is similar to Cinco de Mayo and Passover PCL. The major
difference is that this release actually works.
***
*other-exports* flushed. More exports now on *exports*
The symbol STANDARD is now exported from the PCL package. standard-class
standard-method standard-generic-function standard-object built-in-class
structure-class
scoping problem with *next-methods*
method and generic function initialization protocol
methods are immutable
type-specifiers --> specializers
load-truename etc.
defgeneric ensure-generic-function define-method-combination
metabraid changes
file namings
***
There are a number of minor and one major difference between this
release and No Cute Name PCL.
- In the last release there was an implementation of the specified CLOS
initialization protocol. This implementation had the correct behavior,
but some of the generic functions had temporary names (*make-instance,
*initialize-instance and *default-initargs). This was done to give
people time to convert their code to the behavior of the new
initialization protocol.
In this release, all generic functions in the specified initialization
protocol have their proper names. The implementation of the old,
obsolete initialization protocol has disappeared entirely.
The following renamings have happened:
12/7/88 release this release
*make-instance make-instance
*initialize-instance initialize-instance
*default-initargs default-initargs
The functions shared-initialize and reinitialize-instance already had
the proper names.
The new initialization protocol is documented fully in the 88-002R
specification.
As part of this change, PCL now uses the new initialization protocol to
create metaobjects internally. That is it calls make-instance to create
these metaobjects. The actual initargs passed are not yet as specified,
that will be in a later release.
This is the largest change in this release. If you have not already
started using the new initialization protocol (with the temporary *xxx
names) you are going to have to do so now. In most cases, old methods
on the generic functions INITIALIZE, INITIALIZE-FROM-DEFAULTS and
INITIALIZE-FROM-INIT-PLIST must be substantially rewritten to convert
them to methods on INITIALIZE and SHARED-INITIALIZE.
- slots with :ALLOCATION, :CLASS now inherit properly. As part of this
change, some slot description objects now return a class object as the
result of SLOTD-ALLOCATION.
- There is now a minimal implementation of the DEFGENERIC macro. This
implementation supports no options, but it does allow you to define a
generic function in one place and put some comments there with it.
- The following functions and macros have disappeared. This table also
show briefly what you use instead.
DEFMETHOD-SETF (use DEFMETHOD)
RUN-SUPER (use CALL-NEXT-METHOD)
OBSOLETE-WITH-SLOTS (use WITH-SLOTS or WITH-ACCESSORS)
SYMBOL-CLASS (use FIND-CLASS)
CBOUNDP (use FIND-CLASS)
CLASS-NAMED (use FIND-CLASS)
GET-SETF-GENERIC-FUNCTION (use GDEFINITION)
- In certain ports, method lookup will be faster because of a new scheme
to deal with interrupts and the cache code. In other ports it will be
slightly slower. In all ports, the cache code now interacts properly
with interrupts.
- DEFMETHOD should interact properly with TRACE, ADVISE etc. in most
ports. two new port-specific functions (in defs.lisp) implement this.
These are unencapsulated-fdefinition and fdefine-carefully. If this
doesn't work properly in your port, fix the definition of these
functions and send it back so it can be in the next release.
- This release runs in Golden Common Lisp version 3.0.
- Previously, the use of slot-value (or with-slots) in the body of a
method which had an illegal specializer gave strange errors. Now it
gives a more reasonable error message.
- An annoying problem which caused KCL and friends to complain about
*exports* being unbound has been fixed.
- The walker has been modified to understand the ccl:%stack-block
special form in Coral Common Lisp.
- The use of defadvice in pre 3.0 releases has been fixed in Lucid Low.
- multiple-value-setq inside of with-slots now returns the correct
value.
- A minor bug having to do with macroexpansion environments and the KCL
walker has been fixed.
- A bug in the parsing of defmethod which caused only symbols (rather
than non-nil atoms) to be used as qualifiers.