~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to pcl/notes/3-19-87-notes.text

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
 
 
3
These notes correspond to *pcl-system-date* 3/19/87 prime.
 
4
 
 
5
This release runs in:
 
6
  ExCL
 
7
  Lucid
 
8
  Symbolics Common Lisp (Genera)
 
9
  Vaxlisp (2.0)
 
10
  Xerox Common Lisp (Lyric Release)
 
11
 
 
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.
 
15
 
 
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.
 
20
 
 
21
 
 
22
 
 
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.
 
27
 
 
28
As usual, please enjoy, and send bug-reports, questions etc. to
 
29
CommonLoops@Xerox.com.
 
30
 
 
31
***
 
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
 
35
PCL, if you did:
 
36
 
 
37
(defmethod foo ((x class)) 'class)
 
38
(defmethod foo ((x method)) 'method)
 
39
 
 
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.
 
44
 
 
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.
 
53
 
 
54
(defmethod foo ((x class)) 'class)
 
55
(defmethod foo ((x method)) 'method)
 
56
 
 
57
(generic-function-methods #'foo)
 
58
(#<Method FOO (METHOD) 3434> #<Method FOO (CLASS) 3245>)
 
59
 
 
60
(foo (make 'class))  ==> 'class
 
61
(foo (make 'method)) ==> 'method
 
62
 
 
63
(remove-method #'foo (car (generic-function-methods #'foo)))
 
64
 
 
65
(foo (make 'class))  ==> 'class
 
66
(foo (make 'method)) ==> no matching method error
 
67
 
 
68
 
 
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.
 
75
 
 
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).
 
78
 
 
79
  essential-discriminator  ==> generic-function
 
80
  basic-discriminator      ==> standard-generic-function
 
81
  discriminator
 
82
    (when it appears as a specializer)
 
83
         ==> standard-generic-function
 
84
  discriminator
 
85
    (when it appears as part of a variable name or something)
 
86
         ==> generic-function
 
87
 
 
88
***
 
89
In most Lisp implementations, method lookup is at least twice as fast as
 
90
it was in the previous release.
 
91
 
 
92
***
 
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.
 
97
 
 
98
***
 
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
 
103
past few releases.
 
104
 
 
105
***
 
106
Compiled files containing defmethod forms should be smaller and load
 
107
faster.
 
108
 
 
109
***
 
110
Many of the files in the system have been renamed.  More files will be
 
111
renamed in upcoming releases.
 
112
 
 
113
***
 
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
 
116
sometime soon.
 
117
 
 
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.
 
122
 
 
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.
 
127
 
 
128
***
 
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*.
 
132
 
 
133
***
 
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.
 
138