-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGES
331 lines (236 loc) · 12.9 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
R5 changes: (see below for details)
o Numerous bug fixes
o Continued gradual conversion towards ANSI Common Lisp
o Performance improvements to image code
o Multiprocess locking and error reporting made more robust
o Event queue consing reduced
o ICCCM support
Details of changes since R4:
R4.1 changes:
o Fix reported bugs and to include the vendor-specific
bug-fixing and performance-improving patches that I recently received.
o Code compiled with the R4 CLX will work with the R4.1X CLX, but code
compiled with the R4.1X CLX will NOT work with the R4 CLX. I made an effort
to ensure backward binary compatibility with R4 CLX so that old code doesn't
have to be recompiled to still work. It does have to be recompiled to fix
an event-queue bug, since the fix involved a change to the event-loop macro.
R4.2 changes:
o Atoms and visuals are now correctly maintained in a separate namespace from
windows, pixmaps, cursors, fonts, gcontexts, and colormaps.
o I have made an attempt to make socket code work for kcl and ibcl. I have
akcl here, but not kcl and ibcl, so it's only guesswork that kcl and ibcl
works.
o compile-clx and load-clx do more pathname merging to work around problems
in some lisp implementations. *default-pathname-defaults* is never bound
anymore.
o Some ansi common lisp stuff. If you have :ansi-common-lisp on *features*,
CLX will:
- Use the common-lisp package instead of the lisp package.
- Use the common lisp condition system, being careful not to stomp on
define-condition and type-error.
- Use declaim instead of proclaim.
- Use the dynamic-extent declaration for rest args and closures.
- Use print-unreadable-object.
o Code compiled with the R4 and R4.1 CLX will work with the R4.2 CLX, provided
you don't have :ansi-common-lisp on your features list. Code compiled with
the R4.2 CLX will NOT work with the R4 CLX.
R4.3 changes:
o Changed the ansi-common-lisp feature to clx-ansi-common-lisp.
o A new package.l file has been introduced. All the package operations that
were in the other files have been moved to package.l. Because of this,
the compile-clx and load-clx functions which are defined in the defsystem.l
file have been moved to the user package from the xlib package, since the xlib
package isn't defined when the defsystem.l file is loaded.
o excldefsys.l has been merged into defsystem.l. You don't have to rename
excldefsys.l to defsystem.l anymore.
o User-specified-size/position-p hints are now set correctly.
These hints were being ignored if the size-hints structure did not
define the corresponding geometry slots. But ICCCM declares these
slots to be obsolete.
o (setf wm-command) has been changed to use PRIN1 inside the ANSI Common Lisp
form WITH-STANDARD-IO-SYNTAX (or the equivalent defined in dependent.l), with
elements of command separated by NULL characters. This enables
(with-standard-io-syntax (mapcar #'read-from-string (wm-command window)))
to recover a lisp command.
o A typo in X-TYPE-ERROR has been fixed.
o The WITH-GCONTEXT macro has been changed so that if you supply nil for a
property value, WITH-GCONTEXT is will leave the property unchanged. It used
to always change the property without regard for whether the supplied value
was nil. This change to how the macro expands, so user code has to be
recompiled for the change to take effect.
o Since ANSI Common Lisp doesn't have CHAR-BIT, the implementation of
DEFAULT-KEYSYM-TRANSLATE is now implementation dependent in ANSI Common Lisp
implementations, with the default doing nothing to character objects. In
non-ANSI Common Lisps and lispms, it still uses CHAR-BIT. The definition of
DEFAULT-KEYSYM-TRANSLATE has been moved to dependent.l.
o The image putting, getting, and copying code has been sped up a bit for lispm,
lcl3.0, and excl.
o The lcl3.0 io code has been sped up a bit by using read-array instead of
fast-read-byte.
o READ-RESOURCES now handles any lines that start with # and don't start with
#include as comments.
R4.4 changes:
o Fixed typo in DEFAULT-KEYSYM-TRANSLATE.
o In events, CurrentTime (encoded as 0 in the protocol) decodes to NIL instead
of 0.
o NIL now translates to and from the atom-id of 0.
o A new variable *OUTPUT-BUFFER-SIZE* has been introduced, with value 8192.
Now, instead of the buffer creating code always creating output buffers of
length 8192 bytes, they create output buffers of length *OUTPUT-BUFFER-SIZE*
bytes.
o GCONTEXT-CACHE-P, COLORMAP-PLIST and CURSOR-PLIST have been exported.
o If CREATE-GCONTEXT is given a rect-seq as a clip-mask, then a
SetClipRectangles request must be sent to initialize the clip-mask. The logic
to do this is located in FORCE-GCONTEXT-CHANGES-INTERNAL, but this wasn't
being called because create-gcontext always forces local/server-state
timestamps equal. Same problem for dash lists. CREATE-GCONTEXT has been
fixed so that in these cases it makes the timestamps unequal so that
FORCE-GCONTEXT-CHANGES-INTERNAL is called.
o ANGLEP type check sped up for excl. Arc drawing should be lots faster.
o RATIONAL type definition for kcl now takes the correct optional args.
o (SETF FONT-PATH) changed to return the value
o Fixed typo in the hex parsing in READ-BITMAP-FILE
o Made READ-RESOURCES more robust about weird resource files.
o New variable *DEF-CLX-CLASS-USE-DEFCLASS*, which controls whether DEF-CLX-CLASS
uses DEFCLASS. If it is a list, it is interpreted by DEF-CLX-CLASS to be a list
of type names for which DEFCLASS should be used. If it is not a list, DEFCLASS
is always used. IF it is NIL, DEFCLASS is never used, since NIL is the empty
list. By default, it's T in Genera, NIL otherwise.
o Fixed typo in DEFINE-CONDITION for #-(or lispm clx-ansi-common-lisp excl lcl3.0).
o Fixed typo in MERGE-RESOURCES
o In Lucid lisp, the functions aref-card8, aref-int8, aset-card8, aset-int8,
aref-card16, aref-int16, aref-card32, aref-int32, aref-card29, aset-card16,
aset-int16, aset-card32, aset-int32, and aset-card29 Have been fixed so that
they can be used inline with the development compiler.
o The default value of the BYTE-LSB-FIRST-P argument to CREATE-IMAGE has been
changed from always T to T on LSBFirst machines and NIL on MSBFirst machines.
o The order of the color values returned by ALLOC-COLOR when a color name is supplied
as an argument is fixed so that the screen color correctly is returned as the second
value and the exact color is correctly returned as the third value. The order was
backwards.
o The internal WITH-BUFFER-INPUT and WITH-BUFFER-OUTPUT macros have been
changed to wrap macrolet around body only when necessary. This simplifies the
compiler's job for non lisp machines.
o All uses of DEFINE-CONDITION have been changed to include a slots argument,
even if that argument is NIL -- the argument is not optional.
o DEFINE-CONDITION is no longer exported from the XLIB package.
o New functionality has been added to make-pixmap and make-window. They may
now take a :PIXMAP or :WINDOW argument (respectively). If non-NIL (default is
nil), they will use that argument as the pixmap or window object to be set.
Otherwise they will create a new pixmap/window object. This whole schmeel is
necessary because creation of window and pixmap objects in CLX doesn't go
through the CLOS initialize-instance mechanism.
o The DESCRIBE-WINDOW debug utility has been fixed to not use strange
lisp machine format codes.
o Numerous Allegro specific changes in support of Allegro CL version 4.0.
R4.5 changes:
o Fixed READ-VECTOR-CARD8 and WRITE-VECTOR-CARD8 to work with arbitrary vectors.
o Changed COMPILE-CLX and LOAD-CLX to use the verbose mode of COMPILE-FILE and LOAD.
o Added a conditional for HPUX to COMPILE-CLX.
o Changed DISPLAY-CONNECT to save the default colormap ID in the ID database.
o Added new keyword arguments :PROGRAM-SPECIFIED-POSITION-P and :PROGRAM-SPECIFIED-SIZE-P
to SET-WM-PROPERTIES and corresponsing slots in the WM-SIZE-HINTS structure.
These control the appropriate flags in the size hints. The old way of controlling these
flags, with the :X, :Y, :WIDTH, and :HEIGHT arguments, is now obsolete due to changes
in the ICCCM.
o Removed bogus declarations from the SETF expander for WM-NAME.
o Defined a proper SETF function for CUT-BUFFER when in ANSI Lisp.
o Fix the encoding of the revert-to argument to SET-INPUT-FOCUS.
o Fix a fencepost error in STORE-COLORS.
o Fix TEXT-EXTENTS and TEXT-WIDTH to handle font changes properly.
o Fix TEXT-EXTENTS-LOCAL to handle negative ascents and descents properly.
o Fix DRAW-IMAGE-GLYPHS to not try to write more than 255 glyphs.
o Added conditionalizations for Minima, a new operating system under development at Symbolics.
o Some gratuitous changes in the Symbolics-specific code.
o Removed *EVENT-LOOP-VERSION* and support for pre-R4.1 compiled code.
o In Lucid, fixed HOLDING-LOCK to clean up on timeout.
o Gcontexts and fonts without associated displays now print correctly.
Requests that send "strings" of two byte font indices can *not* assume that
the two byte objects are being written on two byte boundaries. The simplest
fix was just to modify the write-*-card16 functions to use a new macro that
writes one half of the object at a time. The only undesirable affect of
this is that CLIENT-MESSAGE and CHANGE-PROPERTY are slightly slower for
card16 data than they were before.
NEW macro
-- write-card16-by-bytes bufmac.l
CHANGED functions:
-- write-list-card16 buffer.l
-- write-list-card16-with-transform ""
-- write-simple-array-card16 ""
-- write-simple-array-card16-with-transform ""
-- write-vector-card16 ""
-- write-vector-card16-with-transform ""
Print functions changed to use write-string instead of princ where
possible. This allows for much cleaner printing when *print-circle* is
true -- princ is required to use *print-circle*, even for strings!
Write-string is, of course, not so burdened.
-- print-color clx.l
-- print-display ""
-- print-drawable ""
-- print-visual-info ""
-- print-colormap ""
-- print-cursor ""
-- print-gcontext ""
-- print-screen ""
-- print-font ""
-- print-resource-database resource.l
-- print-image image.l
Changes to display tracing: In a multiprocessing system is it very helpful
to know what process wrote or read certain requests. Thus I have modified
the format of the trace-history list. It is now an alist of: ((id .
more-info) . byte-vector). (more-info is a list returned by the
trace-more-info function). Also added the ability to suspend and resume
tracing without destroying the trace history. Renamed 'display-trace' to
'show-trace' to avoid confusion. (Having both 'trace-display and
'display-trace wasn't such a hot idea).
-- lots-o-stuff debug/trace.l
Image-glyph functions had a different argument order than non-image glyph
functions. Image-glyph functions changed to be compatible with others.
Declarations in draw-glyphs* functions were wrong.
-- draw-image-glyphs text.l
-- draw-image-glyphs8 text.l
-- draw-image-glyphs16 text.l
-- draw-glyphs8 text.l
-- draw-glyphs16 text.l
Quote #.'ed arrays to accomodate CLTL1 lisps
-- empty-data constants image.l
Set-input-focus fix wasn't finished
-- set-input-focus requests.l
Standardized strange integer type specifier in keysym macro
-- keysym translate.l
===============================================================================
Franz specific changes, applicable to Allegro and Extended Common Lisps:
(note that all these changes are #+excl or #+allegro, so if you're not
using our product these changes are "commented" out)
-----------------------------------------------------------------------
Atom-cache hash table type changed to #'equal. Resource-id-map has table
type changed to #'equal.
NEW macro
-- atom-cache-map-test depdefs.l
CHANGED def-clx-class
-- display clx.l
CHANGED macro
-- resource-id-map-test depdefs.l
Don't bother to import require, provide, since we're using the CLTL1
package. Also put the requires and provides inside eval-when to make the
compiler happy. Don't redefine typep, instead push our customizations onto
the typep handling list.
-- toplevel forms excldep.l
Old code removed from file
-- removed some cmacros exclcmac.l
Allegro >=4.0 now does support with-standard-io-syntax and
print-unreadable-object.
-- with-standard-io-syntax{,-function} dependent.l
-- print-unreadable-object{,-function} depdefs.l
Conditionalizations in Makefile cleaned up.
-- exclMakefile
Descriptive comment added to holding-lock
-- holding-lock dependent.l
Added typep transformers for all CLX types.
-- excldep.cl
R5.0 changes:
o Changed occurrances STRING-CHAR to BASE-CHAR.
o Fixed some type declarations to use type NULL instead of NIL.
o Various fixes to vendor-specific code.
o Detect attempts to use images an incorrect depth.
o Stop doing case conversion on resource names be default.