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.