3
These notes correspond to *pcl-system-date* 3/19/87 prime.
8
Symbolics Common Lisp (Genera)
10
Xerox Common Lisp (Lyric Release)
12
CMU Lisp (nee Spice) and KCL should be working soon, I will announce
13
another release at that time. I figured it was better to get some
14
people beating on it as soon as possibl.
16
Xerox Lisp users should FTP all the source files from /pub/pcl/ as well
17
as all the dfasl files from /pub/pcl/xerox/. Included in the xerox
18
specific directory is a file called PCL-ENV, which provides some simple
19
environment support for using PCL in Xerox Lisp.
23
Following is a description of some of the things that are different in
24
this release of PCL. This list isn't in any particular order. There
25
are a number of incompatible changes in this release, please read the
26
whole thing carefully.
28
As usual, please enjoy, and send bug-reports, questions etc. to
29
CommonLoops@Xerox.com.
32
The single most significant change is that discriminator-objects with
33
corresponding discriminating functions have been replaced by generic
34
function objects. What does this mean?? Well, in previous releases of
37
(defmethod foo ((x class)) 'class)
38
(defmethod foo ((x method)) 'method)
40
Then (discriminator-named 'foo) returned a discriminator object which
41
had both of these methods defined on it. (symbol-function 'foo)
42
returned a discriminating function, which (discriminator-named 'foo) had
43
put in foo's function cell.
45
In this release of PCL, the above defmethod's put a generic-function
46
object in foo's function cell. This generic-function object is a
47
combination of the discriminator object and discriminating function of
48
the previous releases of PCL. This generic-function object is
49
funcallable, funcalling it causes the appropriate method to be looked up
50
and called. This generic function object has accessors which return the
51
methods defined on the generic function. This generic function object
52
is mutable. It is possible to add and remove methods from it.
54
(defmethod foo ((x class)) 'class)
55
(defmethod foo ((x method)) 'method)
57
(generic-function-methods #'foo)
58
(#<Method FOO (METHOD) 3434> #<Method FOO (CLASS) 3245>)
60
(foo (make 'class)) ==> 'class
61
(foo (make 'method)) ==> 'method
63
(remove-method #'foo (car (generic-function-methods #'foo)))
65
(foo (make 'class)) ==> 'class
66
(foo (make 'method)) ==> no matching method error
69
Note that as part of this change, the name of any function, generic
70
function or class which included the string "DISCRIMINATOR" has changed.
71
The name changes that happened were:
72
The class essential-discriminator was renamed to generic-function,
73
The class basic-discriminator and the class discrimiantor were
74
combined and renamed to standard-generic-function.
76
If you went through your code and made the following name changes, you
77
would probably win, (this is what I did to PCL and it worked).
79
essential-discriminator ==> generic-function
80
basic-discriminator ==> standard-generic-function
82
(when it appears as a specializer)
83
==> standard-generic-function
85
(when it appears as part of a variable name or something)
89
In most Lisp implementations, method lookup is at least twice as fast as
90
it was in the previous release.
93
The compiler isn't called when PCL is loaded anymore. In a future
94
release, the compiler will also not be called when any other method
95
definitions are loaded. This is part of an effort to get PCL to a state
96
where the compiler will never be needed when compiled files are loaded.
99
PCL now has a mechanism for naming the generic-function's and method
100
functions defined by defmethod. This means that in ports of PCL which
101
take advantage of this mechanism, you will see useful function names in
102
the debugger rather than the useless gensym names that have been in the
106
Compiled files containing defmethod forms should be smaller and load
110
Many of the files in the system have been renamed. More files will be
111
renamed in upcoming releases.
114
An important part of the bootstrapping code has been re-written. The
115
remainder of this code (the BRAID1 and BRAID2 files) will be re-written
118
The changes made to bootstrapping in this release were done to make
119
early methods more understandable, and as part of implementing generic
120
function objects. Also, most users should find that PCL loads in less
121
time than it did before.
123
The changes which will be made to bootstrapping in a future release will
124
make understanding the "Braid" stuff easier, and will make it possible
125
to implement slot-description objects as described in the CURRENT DRAFT
126
of the Common Lisp Object System Chapter 3.
129
The defsys file has been re-written AGAIN. This shouldn't affect users
130
since there are still the old familiar variables *pcl-pathname-defaults*
131
and *pathname-extensions*.
134
The specialized foo-notes files are all gone. Most of them were
135
hopelessly out of date, and installing pcl is now the same operation for
136
any Lisp. In particular, note that in Vaxlisp, it is no longer
137
necessary to push lisp:vaxlisp on the *features* list.