Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/planix-v0/sys/src/cmd/gs/doc/History4.htm – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
<html>
3
<head>
4
<title>History of Ghostscript versions 4.n</title>
5
<!-- $Id: History4.htm,v 1.39 2005/10/20 19:46:23 ray Exp $ -->
6
<!-- Originally: history4.txt -->
7
<!--
8
	WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to
9
	re-create the table of contents here, because it will replace the
10
	hand-edited TOC subheads with a separate subhead for each H2 in
11
	the body of the file.  Or if you do, first look at the original
12
	TOC to see how to edit it for visual conciseness.
13
-->
14
<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
15
</head>
16
 
17
<body>
18
<!-- [1.0 begin visible header] ============================================ -->
19
 
20
<!-- [1.1 begin headline] ================================================== -->
21
 
22
<h1>History of Ghostscript versions 4.n</h1>
23
 
24
<!-- [1.1 end headline] ==================================================== -->
25
 
26
<!-- [1.2 begin table of contents] ========================================= -->
27
 
28
<h2>Table of contents</h2>
29
 
30
<blockquote><ul>
31
<li><a href="#Version4.81">Version 4.81 (6/1/97)</a>
32
<ul>
33
<li><a href="#V4.81_Documentation">Documentation</a>,
34
    <a href="#V4.81_Procedures">Procedures</a>,
35
    <a href="#V4.81_Utilities">Utilities</a>,
36
    <a href="#V4.81_Drivers">Drivers</a>,
37
    <a href="#V4.81_Platforms">Platforms</a>,
38
    <a href="#V4.81_Interpreter">Interpreter</a>,
39
    <a href="#V4.81_Library">Library</a>
40
</ul>
41
<li><a href="#Version4.80">Version 4.80 (limited) (5/28/97)</a>
42
<ul>
43
<li><a href="#V4.80_Documentation">Documentation</a>,
44
    <a href="#V4.80_Procedures">Procedures</a>,
45
    <a href="#V4.80_Utilities">Utilities</a>,
46
    <a href="#V4.80_Drivers">Drivers</a>,
47
    <a href="#V4.80_Platforms">Platforms</a>,
48
    <a href="#V4.80_Fonts">Fonts</a>,
49
    <a href="#V4.80_Interpreter">Interpreter</a>,
50
    <a href="#V4.80_Streams">Streams</a>,
51
    <a href="#V4.80_Library">Library</a>
52
</ul>
53
<li><a href="#Version4.74">Version 4.74 (limited) (5/5/97)</a>
54
<ul>
55
<li><a href="#V4.74_Documentation">Documentation</a>,
56
    <a href="#V4.74_Utilities">Utilities</a>,
57
    <a href="#V4.74_Drivers">Drivers</a>,
58
    <a href="#V4.74_Interpreter">Interpreter</a>,
59
    <a href="#V4.74_Streams">Streams</a>,
60
    <a href="#V4.74_Library">Library</a>
61
</ul>
62
<li><a href="#Version4.73">Version 4.73 (limited) (4/19/97)</a>
63
<ul>
64
<li><a href="#V4.73_Documentation">Documentation</a>,
65
    <a href="#V4.73_Procedures">Procedures</a>,
66
    <a href="#V4.73_Utilities">Utilities</a>,
67
    <a href="#V4.73_Drivers">Drivers</a>,
68
    <a href="#V4.73_Platforms">Platforms</a>,
69
    <a href="#V4.73_Interpreter">Interpreter</a>,
70
    <a href="#V4.73_Interpreter_PDF">Interpreter (PDF)</a>,
71
    <a href="#V4.73_Streams">Streams</a>,
72
    <a href="#V4.73_Library">Library</a>
73
</ul>
74
<li><a href="#Version4.72">Version 4.72 (limited) (4/14/97)</a>
75
<ul>
76
<li><a href="#V4.72_Documentation">Documentation</a>,
77
    <a href="#V4.72_Procedures">Procedures</a>,
78
    <a href="#V4.72_Drivers">Drivers</a>,
79
    <a href="#V4.72_Platforms">Platforms</a>,
80
    <a href="#V4.72_Interpreter">Interpreter</a>,
81
    <a href="#V4.72_Interpreter_PDF">Interpreter (PDF)</a>,
82
    <a href="#V4.72_Streams">Streams</a>,
83
    <a href="#V4.72_Library">Library</a>
84
</ul>
85
<li><a href="#Version4.71">Version 4.71 (limited) (3/31/97)</a>
86
<ul>
87
<li><a href="#V4.71_Documentation">Documentation</a>,
88
    <a href="#V4.71_Procedures">Procedures</a>,
89
    <a href="#V4.71_Drivers">Drivers</a>,
90
    <a href="#V4.71_Interpreter">Interpreter</a>,
91
    <a href="#V4.71_Streams">Streams</a>,
92
    <a href="#V4.71_Library">Library</a>
93
</ul>
94
<li><a href="#Version4.70">Version 4.70 (limited) (3/26/97)</a>
95
<ul>
96
<li><a href="#V4.70_Documentation">Documentation</a>,
97
    <a href="#V4.70_Procedures">Procedures</a>,
98
    <a href="#V4.70_Drivers">Drivers</a>,
99
    <a href="#V4.70_Platforms">Platforms</a>,
100
    <a href="#V4.70_Interpreter">Interpreter</a>,
101
    <a href="#V4.70_Interpreter_PDF">Interpreter (PDF)</a>,
102
    <a href="#V4.70_Streams">Streams</a>,
103
    <a href="#V4.70_Library">Library</a>
104
</ul>
105
<li><a href="#Version4.61">Version 4.61 (limited) (3/13/97)</a>
106
<ul>
107
<li><a href="#V4.61_Documentation">Documentation</a>,
108
    <a href="#V4.61_Procedures">Procedures</a>,
109
    <a href="#V4.61_Drivers">Drivers</a>,
110
    <a href="#V4.61_Platforms">Platforms</a>,
111
    <a href="#V4.61_Interpreter">Interpreter</a>,
112
    <a href="#V4.61_Interpreter_PDF">Interpreter (PDF)</a>,
113
    <a href="#V4.61_Streams">Streams</a>,
114
    <a href="#V4.61_Library">Library</a>
115
</ul>
116
<li><a href="#Version4.60">Version 4.60 (limited) (3/2/97)</a>
117
<ul>
118
<li><a href="#V4.60_Documentation">Documentation</a>,
119
    <a href="#V4.60_Procedures">Procedures</a>,
120
    <a href="#V4.60_Drivers">Drivers</a>,
121
    <a href="#V4.60_Platforms">Platforms</a>,
122
    <a href="#V4.60_Fonts">Fonts</a>,
123
    <a href="#V4.60_Interpreter">Interpreter</a>,
124
    <a href="#V4.60_Interpreter_PDF">Interpreter (PDF)</a>,
125
    <a href="#V4.60_Streams">Streams</a>,
126
    <a href="#V4.60_Library">Library</a>
127
</ul>
128
<li><a href="#Version4.51">Version 4.51 (limited) (2/9/97)</a>
129
<ul>
130
<li><a href="#V4.51_Procedures">Procedures</a>,
131
    <a href="#V4.51_Drivers">Drivers</a>,
132
    <a href="#V4.51_Platforms">Platforms</a>,
133
    <a href="#V4.51_Interpreter">Interpreter</a>,
134
    <a href="#V4.51_Streams">Streams</a>,
135
    <a href="#V4.51_Library">Library</a>
136
</ul>
137
<li><a href="#Version4.50">Version 4.50 (limited) (1/31/97)</a>
138
<ul>
139
<li><a href="#V4.50_Documentation">Documentation</a>,
140
    <a href="#V4.50_Procedures">Procedures</a>,
141
    <a href="#V4.50_Drivers">Drivers</a>,
142
    <a href="#V4.50_Platforms">Platforms</a>,
143
    <a href="#V4.50_Interpreter">Interpreter</a>,
144
    <a href="#V4.50_Streams">Streams</a>,
145
    <a href="#V4.50_Library">Library</a>
146
</ul>
147
<li><a href="#Version4.41">Version 4.41 (private) (1/21/97)</a>
148
<ul>
149
<li><a href="#V4.41_Procedures">Procedures</a>,
150
    <a href="#V4.41_Drivers">Drivers</a>,
151
    <a href="#V4.41_Fonts">Fonts</a>,
152
    <a href="#V4.41_Interpreter">Interpreter</a>,
153
    <a href="#V4.41_Streams">Streams</a>,
154
    <a href="#V4.41_Library">Library</a>
155
</ul>
156
<li><a href="#Version4.40">Version 4.40 (private) (1/13/97)</a>
157
<ul>
158
<li><a href="#V4.40_Documentation">Documentation</a>,
159
    <a href="#V4.40_Utilities">Utilities</a>,
160
    <a href="#V4.40_Drivers">Drivers</a>,
161
    <a href="#V4.40_Interpreter">Interpreter</a>,
162
    <a href="#V4.40_Interpreter_PDF">Interpreter (PDF)</a>,
163
    <a href="#V4.40_Library">Library</a>
164
</ul>
165
<li><a href="#Version4.39">Version 4.39 (limited) (1/1/97)</a>
166
<ul>
167
<li><a href="#V4.39_Documentation">Documentation</a>,
168
    <a href="#V4.39_Procedures">Procedures</a>,
169
    <a href="#V4.39_Utilities">Utilities</a>,
170
    <a href="#V4.39_Drivers">Drivers</a>,
171
    <a href="#V4.39_Interpreter">Interpreter</a>,
172
    <a href="#V4.39_Streams">Streams</a>,
173
    <a href="#V4.39_Library">Library</a>
174
</ul>
175
<li><a href="#Version4.38">Version 4.38 (limited) (12/20/96)</a>
176
<ul>
177
<li><a href="#V4.38_Interpreter">Interpreter</a>,
178
    <a href="#V4.38_Streams">Streams</a>,
179
    <a href="#V4.38_Library">Library</a>
180
</ul>
181
<li><a href="#Version4.37">Version 4.37 (limited) (12/10/96)</a>
182
<ul>
183
<li><a href="#V4.37_Fonts">Fonts</a>,
184
    <a href="#V4.37_Interpreter">Interpreter</a>,
185
    <a href="#V4.37_Interpreter_PDF">Interpreter (PDF)</a>,
186
    <a href="#V4.37_Library">Library</a>
187
</ul>
188
<li><a href="#Version4.36">Version 4.36 (limited) (12/3/96)</a>
189
<ul>
190
<li><a href="#V4.36_Documentation">Documentation</a>,
191
    <a href="#V4.36_Drivers">Drivers</a>,
192
    <a href="#V4.36_Interpreter">Interpreter</a>,
193
    <a href="#V4.36_Library">Library</a>
194
</ul>
195
<li><a href="#Version4.35">Version 4.35 (limited) (11/24/96)</a>
196
<ul>
197
<li><a href="#V4.35_Documentation">Documentation</a>,
198
    <a href="#V4.35_Procedures">Procedures</a>,
199
    <a href="#V4.35_Interpreter">Interpreter</a>,
200
    <a href="#V4.35_Streams">Streams</a>,
201
    <a href="#V4.35_Library">Library</a>
202
</ul>
203
<li><a href="#Version4.34">Version 4.34 (limited) (11/18/96)</a>
204
<ul>
205
<li><a href="#V4.34_Documentation">Documentation</a>,
206
    <a href="#V4.34_Procedures">Procedures</a>,
207
    <a href="#V4.34_Drivers">Drivers</a>,
208
    <a href="#V4.34_Interpreter">Interpreter</a>,
209
    <a href="#V4.34_Streams">Streams</a>,
210
    <a href="#V4.34_Library">Library</a>
211
</ul>
212
<li><a href="#Version4.33">Version 4.33 (limited) (11/6/96)</a>
213
<ul>
214
<li><a href="#V4.33_Documentation">Documentation</a>,
215
    <a href="#V4.33_Procedures">Procedures</a>,
216
    <a href="#V4.33_Interpreter">Interpreter</a>,
217
    <a href="#V4.33_Library">Library</a>
218
</ul>
219
<li><a href="#Version4.32">Version 4.32 (limited) (11/1/96)</a>
220
<ul>
221
<li><a href="#V4.32_Documentation">Documentation</a>,
222
    <a href="#V4.32_Drivers">Drivers</a>,
223
    <a href="#V4.32_Platforms">Platforms</a>,
224
    <a href="#V4.32_Fonts">Fonts</a>,
225
    <a href="#V4.32_Interpreter">Interpreter</a>,
226
    <a href="#V4.32_Library">Library</a>
227
</ul>
228
<li><a href="#Version4.31">Version 4.31 (limited) (10/27/96)</a>
229
<ul>
230
<li><a href="#V4.31_Documentation">Documentation</a>,
231
    <a href="#V4.31_Procedures">Procedures</a>,
232
    <a href="#V4.31_Platforms">Platforms</a>,
233
    <a href="#V4.31_Interpreter">Interpreter</a>,
234
    <a href="#V4.31_Interpreter_PDF">Interpreter (PDF)</a>,
235
    <a href="#V4.31_Streams">Streams</a>,
236
    <a href="#V4.31_Library">Library</a>
237
</ul>
238
<li><a href="#Version4.30">Version 4.30 (limited) (10/23/96)</a>
239
<ul>
240
<li><a href="#V4.30_Documentation">Documentation</a>,
241
    <a href="#V4.30_Drivers">Drivers</a>,
242
    <a href="#V4.30_Platforms">Platforms</a>,
243
    <a href="#V4.30_Fonts">Fonts</a>,
244
    <a href="#V4.30_Interpreter">Interpreter</a>,
245
    <a href="#V4.30_Library">Library</a>
246
</ul>
247
<li><a href="#Version4.21">Version 4.21 (limited) (10/17/96)</a>
248
<ul>
249
<li><a href="#V4.21_Documentation">Documentation</a>,
250
    <a href="#V4.21_Procedures">Procedures</a>,
251
    <a href="#V4.21_Drivers">Drivers</a>,
252
    <a href="#V4.21_Platforms">Platforms</a>,
253
    <a href="#V4.21_Fonts">Fonts</a>,
254
    <a href="#V4.21_Interpreter">Interpreter</a>,
255
    <a href="#V4.21_Library">Library</a>
256
</ul>
257
<li><a href="#Version4.20">Version 4.20 (limited) (10/13/96)</a>
258
<ul>
259
<li><a href="#V4.20_Documentation">Documentation</a>,
260
    <a href="#V4.20_Procedures">Procedures</a>,
261
    <a href="#V4.20_Utilities">Utilities</a>,
262
    <a href="#V4.20_Drivers">Drivers</a>,
263
    <a href="#V4.20_Interpreter">Interpreter</a>,
264
    <a href="#V4.20_Library">Library</a>
265
</ul>
266
<li><a href="#Version4.10">Version 4.10 (limited) (9/25/96)</a>
267
<ul>
268
<li><a href="#V4.10_Documentation">Documentation</a>,
269
    <a href="#V4.10_Utilities">Utilities</a>,
270
    <a href="#V4.10_Drivers">Drivers</a>,
271
    <a href="#V4.10_Interpreter">Interpreter</a>,
272
    <a href="#V4.10_Interpreter_PDF">Interpreter (PDF)</a>,
273
    <a href="#V4.10_Library">Library</a>
274
</ul>
275
<li><a href="#Version4.03">Version 4.03 (9/23/96)</a>
276
<ul>
277
<li><a href="#V4.03_Documentation">Documentation</a>,
278
    <a href="#V4.03_Procedures">Procedures</a>,
279
    <a href="#V4.03_Drivers">Drivers</a>,
280
    <a href="#V4.03_Fonts">Fonts</a>,
281
    <a href="#V4.03_Streams">Streams</a>
282
</ul>
283
<li><a href="#Version4.02">Version 4.02 (9/19/96)</a>
284
<ul>
285
<li><a href="#V4.02_Documentation">Documentation</a>,
286
    <a href="#V4.02_Procedures">Procedures</a>,
287
    <a href="#V4.02_Utilities">Utilities</a>,
288
    <a href="#V4.02_Drivers">Drivers</a>,
289
    <a href="#V4.02_Platforms">Platforms</a>,
290
    <a href="#V4.02_Interpreter">Interpreter</a>,
291
    <a href="#V4.02_Interpreter_PDF">Interpreter (PDF)</a>,
292
    <a href="#V4.02_Streams">Streams</a>,
293
    <a href="#V4.02_Library">Library</a>
294
</ul>
295
<li><a href="#Version4.01">Version 4.01 (7/10/96)</a>
296
<ul>
297
<li><a href="#V4.01_Documentation">Documentation</a>,
298
    <a href="#V4.01_Procedures">Procedures</a>,
299
    <a href="#V4.01_Utilities">Utilities</a>,
300
    <a href="#V4.01_Platforms">Platforms</a>,
301
    <a href="#V4.01_Platforms">Platforms</a>,
302
    <a href="#V4.01_Interpreter">Interpreter</a>,
303
    <a href="#V4.01_Library">Library</a>
304
</ul>
305
<li><a href="#Version4.0">Version 4.0 (6/28/96)</a>
306
<ul>
307
<li><a href="#V4.0_Documentation">Documentation</a>,
308
    <a href="#V4.0_Procedures">Procedures</a>,
309
    <a href="#V4.0_Utilities">Utilities</a>,
310
    <a href="#V4.0_Drivers">Drivers</a>,
311
    <a href="#V4.0_Platforms">Platforms</a>,
312
    <a href="#V4.0_Interpreter">Interpreter</a>,
313
    <a href="#V4.0_Streams">Streams</a>,
314
    <a href="#V4.0_Library">Library</a>
315
</ul>
316
</ul></blockquote>
317
 
318
<!-- [1.2 end table of contents] =========================================== -->
319
 
320
<!-- [1.3 begin hint] ====================================================== -->
321
 
322
<p>
323
This document is a history of Ghostscript releases numbered 4.n.  For more
324
recent changes, see the the other history documents and, for the latest
325
versions, the news:
326
 
327
<blockquote>
328
<a href="News.htm">News</a><br>
329
History of Ghostscript versions 4.n (this document)<br>
330
<a href="History3.htm">History of Ghostscript versions 3.n</a><br>
331
<a href="History2.htm">History of Ghostscript versions 2.n</a><br>
332
<a href="History1.htm">History of Ghostscript versions 1.n</a>
333
</blockquote>
334
 
335
<p>For other information, see the <a href="Readme.htm">Ghostscript
336
overview</a>.
337
 
338
<!-- [1.3 end hint] ======================================================== -->
339
 
340
<hr>
341
 
342
<!-- [1.0 end visible header] ============================================== -->
343
 
344
<h2><a name="Version4.81"></a>Version 4.81 (6/1/97)</h2>
345
 
346
<p>
347
This is a last-minute set of bug fixes before the 5.0 release.
348
 
349
<h3><a name="V4.81_Documentation"></a>Documentation</h3><pre>
350
 
351
Adds some overlooked helpers to the list.  (helpers.txt)
352
 
353
</pre><h3><a name="V4.81_Procedures"></a>Procedures</h3><pre>
354
 
355
Makes a distinction between 2-part and 3-digit version numbers.
356
(version.mak, vms.mak)
357
 
358
</pre><h3><a name="V4.81_Utilities"></a>Utilities</h3><pre>
359
 
360
Develops the Type 1 to CFF converter a little further; it is still NOT
361
USABLE.  (t1tot2.ps)
362
 
363
Removes the pstoppm.ps script, since the p*m drivers supersede it.
364
(pstoppm.ps, unix-end.mak)
365
 
366
</pre><h3><a name="V4.81_Drivers"></a>Drivers</h3><pre>
367
 
368
Fixes bugs:
369
	- The PDF writer sometimes omitted an ET command before setting the
370
clip path.  (gdevpdf.c)
371
	- The PDF writer didn't initialize the "vector" state, leading to
372
some redundant output (performance bug only).  (gdevpdf.c)
373
	- The PDF writer wrote clip paths even when they included the entire
374
page (performance bug only).  (gdevpdf.c)
375
 
376
Changes the PDF writer so that it recognizes not only the 14 built-in fonts
377
but any font with the same UniqueID and metrics.  This covers some common
378
cases of re-registering a font with a variant Encoding.  (gs_pdfwr.ps)
379
 
380
</pre><h3><a name="V4.81_Platforms"></a>Platforms</h3><pre>
381
 
382
Fixes bugs:
383
	- SEARCH_HERE_FIRST was accidentally set to 0 on MS Windows
384
platforms.  (bcwin32.mak, msvc4.mak, msvc5.mak, watcw32.mak)
385
 
386
Adds code to remove "" around arguments in the command line passed to
387
WinMain (MS Windows platforms).  (dwmain.cpp, dwmainc.cpp)
388
 
389
</pre><h3><a name="V4.81_Interpreter"></a>Interpreter</h3><pre>
390
 
391
Fixes bugs:
392
	- setsystemparams was broken.  (gs_lev2.ps)
393
	- restore was broken if -dNOBIND was invoked.  (gs_dps1.ps)
394
	- deviceinfo returned much more information than it should.
395
(gs_dps.ps)
396
	- The fix for the default EndPage procedures not popping their page
397
count operand from the stack was wrong.  (gs_init.ps, gs_setpd.ps)
398
 
399
</pre><h3><a name="V4.81_Library"></a>Library</h3><pre>
400
 
401
Fixes bugs:
402
	- The saved character origin took the translation component of the
403
FontMatrix into account, which caused charpath on fonts with non-zero
404
translation in the FontMatrix to produce incorrect results.  (gschar.c)
405
 
406
Removes incorrect access attributes on a couple of files.  (gdevpdfm.c,
407
gxclist.h)
408
 
409
</pre>
410
 
411
<h2><a name="Version4.80"></a>Version 4.80 (limited) (5/28/97)</h2>
412
 
413
<p>
414
This is the candidate fileset for the 5.0 release.
415
 
416
<h3><a name="V4.80_Documentation"></a>Documentation</h3><pre>
417
 
418
Fixes bugs:
419
	- The one-line description of the color image rendering module was
420
incorrect.  (gximage3.c)
421
	- Some of the VMS documentation was out of date.  (make.txt,
422
use.txt)
423
	- The description of the file name separator for -sFONTMAP= was
424
wrong.  (use.txt)
425
	- PSFile was misspelled PSfile.  (use.txt)
426
	- There were some minor typos.  (gstype1.h)
427
	- The build instructions had a lot of obsolete information for PC
428
environments, and didn't cover Microsoft Visual C++.  (make.txt)
429
 
430
Explains that -sPAPERSIZE= only specifies the default papersize, and that
431
forcing a particular paper size also requires -dFIXEDMEDIA.  (use.txt)
432
 
433
Adds information about building with GNU make on OpenVMS.  (make.txt)
434
 
435
Clarifies the meaning of EOFC for streams.  (strimpl.h)
436
 
437
Documents the new dictionary argument for the eexecDecode filter.
438
(language.doc)
439
 
440
</pre><h3><a name="V4.80_Procedures"></a>Procedures</h3><pre>
441
 
442
Fixes bugs:
443
	- gs_epsf.ps didn't get installed on Unix systems.  (unix-end.mak)
444
	- The code wouldn't build with libpng 0.95b.  (libpng.mak)
445
	- One of the VMS scripts used CC_QUAL instead of CC_DEF.
446
(vms-cc.mak)
447
	- version.mak wasn't included in a dependency list.  (unix-end.mak)
448
 
449
Brings the VMS DCL script up to date again (for the last time, we hope).
450
(vms.mak)
451
 
452
Modifies all platform-independent uses of upper-case command line arguments
453
to deal properly with VMS, where the shell converts all command line
454
arguments to lower case, without requiring quotation.  (devs.mak, gs.mak,
455
int.mak, lib.mak, zlib.mak)
456
 
457
Moves the compilation rules for the third-party libraries into gs.mak, so
458
they can be used to compile the callers as well.  (gs.mak, jpeg.mak,
459
libpng.mak, zlib.mak)
460
 
461
Adds a set of files that allow building on OpenVMS using GNU make (slightly
462
patched).  The timing on this is unfortunate, but we've wanted this for a
463
very long time.  NOTE: be sure to look in the OpenVMS section of make.txt
464
for information on patching GNU make.  (openvms.mak, append_l.com,
465
rm_all.com, rm_one.com, copy_one.com)
466
 
467
Adds new makefiles for building on 32-bit Windows with Borland, Watcom, and
468
Microsoft Visual C++ (versions 4.x and 5.0).  The timing on this is
469
unfortunate too, but having this capability is so important that we couldn't
470
pass it up.  (bcwin32.mak, msvc4.mak, msvc5.mak, msvccom.mak, watcw32.mak,
471
wincom.mak)
472
 
473
Removes now-obsolete makefiles.  (dwcommon.mak, msc.mak, msvcwint.mak,
474
mscbegin.bat, watcwin.mak)
475
 
476
</pre><h3><a name="V4.80_Utilities"></a>Utilities</h3><pre>
477
 
478
Extends echogs to work in VMS environments, where the shell converts all
479
command line arguments to lower case, without requiring quotation.
480
(echogs.c)
481
 
482
Adds a sketch of a utility for converting Type 1 fonts to CFF.  DOESN'T WORK
483
YET: DON'T TRY TO USE IT.  (t1tot2.ps, type1ops.ps, writecff.ps)
484
 
485
</pre><h3><a name="V4.80_Drivers"></a>Drivers</h3><pre>
486
 
487
Fixes bugs:
488
	- A type declaration wasn't compatible with libpng 0.95.
489
(gdevpng.c)
490
	- kshow wasn't handled properly when producing PDF output.
491
(gs_pdfwr.ps)
492
	- The PDF writer put out unnecessary ET/BT commands.  (gdevpdfx.h,
493
gdevpdf.c, gdevpdfi.c, gdevpdfm.c, gdevpdft.c)
494
	- The PCL XL writer put out real numbers for the miter limit, which
495
are not allowed (!).  (gdevpx.c)
496
	- The PCL XL writer didn't combine successive curves into a single
497
curve command (performance bug only).  (gdevpx.c)
498
	- The PCL XL writer could write uncompressed images with a tag
499
saying they were compressed.  (gdevpx.c)
500
	- The PCL XL writer always selected U.S. letter paper, rather than
501
the requested size.  (gdevpxen.h, gdevpx.c)
502
	- The PCL XL writer reselected the paper size on every page, even if
503
it hadn't changed.  (gdevpx.c)
504
	- The PCL XL writer always used shorts for line and curve
505
coordinates, rather than using bytes when possible (performance bug only).
506
(gdevpx.c)
507
	- Because of a compiler bug, a macro with argument conflicted with a
508
variable name.  (gdevpdfx.h, gdevpdf.c)
509
	- A picky compiler objected to an extern for an undefined structure.
510
(gdevpsdf.h)
511
	- The PDF writer sometimes didn't reset the clipping path, causing
512
bitmaps or rectangle to disappear.  (gdevpdf.c, gdevpdfi.c)
513
	- The PDF writer produced invalid output if the first page was
514
blank.  (gdevpdf.c)
515
	- The AutoRotatePages parameter for PostScript and PDF output (which
516
doesn't actually do anything yet) incorrectly expected a Boolean value
517
rather than an enumeration.  (gdevpsdf.h, gdevpsdf.c)
518
	- Some places returned -1 for an error without calling gs_note_error
519
or gs_return_error.  (gdevm1.c, gdevmpla.c, gdevrun.c, gxclpath.c)
520
	- The PCL XL writer produced extremely large files because it didn't
521
download character bitmaps.  (OK, this isn't really a bug fix.)  (gdevpx.c)
522
	- The forwarding implementation of get_page_device didn't do the
523
right thing.  (gdevnfwd.c)
524
	- The x11alpha device didn't implement get_params properly, leading
525
to anomalous behavior.  (gdevxalt.c)
526
	- The PDF writer produced incorrect Count values for outlines: the
527
count only counted descendant leaves, omitting intermediate nodes.
528
(gdevpdfm.c)
529
 
530
Removes an assumption that images have at most 4 components.  (gdevpdfi.c)
531
 
532
Adds an x11gray2 device, primarily for debugging.  (devs.mak, gdevxalt.c)
533
 
534
Updates the unified printer driver with a newer version.  (uninfo.ps,
535
gdevupd.c, *.upp)
536
 
537
</pre><h3><a name="V4.80_Platforms"></a>Platforms</h3><pre>
538
 
539
Adds the P*M devices and the X11 devices (commented out) to the OS/2
540
makefile.  (os2.mak)
541
 
542
Updates the MS Windows platform to be compatible with Microsoft Visual C++
543
(as well as Watcom and Borland compilers).  (gsdll32.def, gdevmswn.h,
544
gp_mswin.h, gsdll.h, dwimg.cpp, dwmain.cpp, dwmainc.cpp, dwtext.cpp,
545
gdevwdib.c, gdevwprn.c, gdevwpr2.c, gp_mswin.c, gsdll.c)
546
 
547
</pre><h3><a name="V4.80_Fonts"></a>Fonts</h3><pre>
548
 
549
Fixes bugs:
550
	- Certain synthetic fonts incorrectly were loaded into local rather
551
than global VM.  (These fonts are not part of the standard distribution.)
552
(gs_fonts.ps, gs_pfile.ps, *ss*.ps)
553
 
554
</pre><h3><a name="V4.80_Interpreter"></a>Interpreter</h3><pre>
555
 
556
Fixes bugs:
557
	- The FAKEFONTS scan could leave junk on the stack.  (gs_fonts.ps)
558
	- Dynamically loading known encodings on demand left junk on the
559
stack, causing a typecheck error.  (gs_res.ps)
560
	- Some 'static' declarations were missing (gcc lossage).  (iname.c)
561
	- Some internal operators didn't have names, leading to unhelpful
562
error printout.  (zfileio.c)
563
	- The resource "operators" didn't always restore the stacks properly
564
on an error.  (gs_res.ps)
565
	- The CID font code left a garbage value on the stack during
566
loading.  (gs_cidfn.ps)
567
	- The defineresource implementation for built-in resources like
568
FMapType didn't leave the resource "value" on the stack.  (gs_res.ps)
569
	- If an operator defined by a procedure was bound into a packed
570
procedure, the stack-protection feature wasn't effective.  (interp.c)
571
	- findfont didn't restore the stack if it failed.  (gs_res.ps)
572
	- The showpage count passed to the BeginPage and EndPage procedures
573
was incremented only if a page was printed, rather than for every invocation
574
of showpage.  (gs_init.ps, zdevice2.c)
575
	- The default EndPage procedures didn't pop their page count operand
576
from the stack.  (gs_init.ps, gs_setpd.ps)
577
	- If the argument of findfont wasn't a name or a string, and no font
578
with that key had been registered, an error occurred.  (gs_fonts.ps,
579
gs_res.ps)
580
 
581
Updates most of the remaining pseudo-operators to take advantage of stack
582
protection.  (gs_btokn.ps, gs_cmap.ps, gs_dps1.ps, gs_dps2.ps, gs_fonts.ps,
583
gs_lev2.ps, gs_pdfwr.ps)
584
 
585
Splits the image operators into a separate file from the path painting
586
operators.  (This should have been done a long time ago.)  (iimage.h,
587
zimage.c, zpaint.c)
588
 
589
Adds more of the implementation of the NeXT alpha and compositing
590
operations, under an #ifdef DPNEXT.  (iimage.h, zcolor1.c, zdpnext.c,
591
zimage.c)
592
 
593
Adds more of the implementation of DPS contexts.  These are still not
594
usable.  (icontext.h, icontext.c, zcontext.c, zmath.c)
595
 
596
Changes the help message to describe -dBATCH instead of -c quit.
597
(imainarg.c)
598
 
599
Recognizes the dictionary argument for the eexecDecode filter.  (zmisc1.c)
600
 
601
</pre><h3><a name="V4.80_Streams"></a>Streams</h3><pre>
602
 
603
Fixes bugs:
604
	- The tracing message when starting to decode 1-D fax data reported
605
the run_color incorrectly.  (scfd.c)
606
	- In the CCITTFaxDecode filter, if a buffer boundary fell between a
607
makeup code and a final zero-length termination code, an ioerror could
608
occur.  (scfd.c)
609
	- Per Adobe, in the CCITTFaxDecode filter, EndOfBlock = true should
610
cause Rows to be ignored.  (scfd.c)
611
	- If an output stream returned EOFC, an infinite loop might result.
612
This problem (and the fix) are in the same fragile code as the EOD fix in
613
4.74, and we may again have introduced a new bug.  (stream.c)
614
 
615
Changes the eexecDecode filter so that instead of a number, it can take a
616
dictionary with two keys, seed and lenIV.  (Having eexecDecode skip initial
617
bytes at all was a design bug that is too late to fix.)  (sfilter.h,
618
seexec.c)
619
 
620
</pre><h3><a name="V4.80_Library"></a>Library</h3><pre>
621
 
622
Fixes bugs:
623
	- The default mapping from RGB+alpha to RGB didn't lighten
624
(premultiply) the color according to the alpha value.  (gxcmap.c)
625
	- The angle error metric for rational tangent screen parameters
626
should be simply the difference in angle, not a ratio.  (gshtscr.c)
627
	- gs_setcolorscreen and gs_sethalftone didn't initialize an
628
allocator pointer, leading to memory access errors.  (gsht1.c)
629
	- If a banded image was clipped, an invalid band list could be
630
produced.  (gxclimag.c)
631
	- A picky compiler wouldn't allow an enum to be &amp;&amp;'ed with a
632
boolean.  (gschar.c)
633
	- A short-sighted compiler didn't allow the use of actual procedure
634
names (as opposed to procedure variables) in a conditional expression.
635
(gxfill.c)
636
	- A compiler objected to a name longer than 31 characters.  (gzht.h,
637
gsht.c, gxclread.c)
638
	- The height computations for banded images were not consistent,
639
possibly leading to invalid band lists.  (gxclimag.c)
640
	- copypage didn't reset the band writer and band reader bookkeeping
641
consistently, leading to incorrect output and possible errors.  (gxcldev.h,
642
gxclist.c, gxclread.c)
643
	- When banding, changing the halftone could lead to accessing memory
644
after freeing it.  (gxclread.c)
645
	- When using disk files for band storage, showpage didn't actually
646
delete or truncate the band list file, possibly causing subsequent copypage
647
operations to become confused.  (gxclfile.c)
648
	- When banding, having more than one image operator in progress at a
649
time confused the rasterizing pass and could produce arbitrary errors.  From
650
PostScript, this can only happen in the case of an image whose data source
651
was a procedure-based stream that itself invoked an image operator: this is
652
a senseless and perverse thing to do, but it shouldn't break the code (and a
653
Genoa CET file actually does it).  (gxclist.h, gxclimag.c, gxclist.c)
654
	- Some picky compilers objected to negating unsigned values.
655
(gsuid.h, gsht.c, gsmemory.c, gxpcopy.c)
656
	- When banding, if a 90- or 270-degree rotated monobit image was
657
clipped, invalid memory accesses could occur.  (gximage.h, gximage1.c)
658
	- The showpage count passed to the BeginPage and EndPage procedures
659
was incremented only if a page was printed, rather than for every invocation
660
of showpage.  Fixing this requires removing the incrementing of the count
661
from the library level altogether.  (gsdevice.c)
662
	- When rendering a subrectangle of an image, the X DDA was
663
initialized incorrectly, causing possible errors.  We think this only
664
affected certain banded images.  (gxdda.h)
665
 
666
Adds a provision for images with an alpha component, under an #ifdef DPNEXT.
667
****** THE BANDING CODE HAS NOT BEEN UPDATED YET. ******  (gsiparam.h,
668
gxcmap.h, gxdither.h, gximage.h, gsimage.c, gxclimag.c, gxclread.c,
669
gxcmap.c, gximage.c, gximage3.c, gximage4.c ****** NOT DONE YET ******,
670
gximage5.c)
671
 
672
Adds a return_if_error macro to capture the common idiom of making a call
673
and then returning its value if that value is negative (error).  (gserror.h)
674
 
675
</pre>
676
 
677
<hr>
678
 
679
<h2><a name="Version4.74"></a>Version 4.74 (limited) (5/5/97)</h2>
680
 
681
<p>
682
This fileset is supposed to fix all remaining errors reported by the Genoa
683
CET, and is intended to be the last incremental test fileset before the 5.0
684
release.
685
 
686
<h3><a name="V4.74_Documentation"></a>Documentation</h3><pre>
687
 
688
Fixes bugs:
689
	- Mark procedures are *not* executed in the normal return case.
690
(estack.h)
691
	- The line_params element of a gs_imager_state is *not* allocated
692
separately.  (gsstate.c)
693
	- The value passed to the PDF writer for text is a dictionary, not
694
an array.  (gdevpdft.c)
695
 
696
Improves the documentation of gstate memory management.  (gsstate.c)
697
 
698
Documents end_status = EOFC for writing streams.  (stream.h, strimpl.h)
699
 
700
Clarifies memory management for halftones and device halftones.  (gsht1.h,
701
gxdht.h, gxht.h, gzht.h)
702
 
703
Removes the "experimental" tag from the PostScript and EPS writers.
704
(devs.mak)
705
 
706
</pre><h3><a name="V4.74_Utilities"></a>Utilities</h3><pre>
707
 
708
Fixes bugs:
709
	- The viewpcx utility scaled images improperly.  (viewpcx.ps)
710
	- If a PDF file used F instead of f for filling a path, pdf2ps
711
didn't output the fill operation.  (pdf_base.ps)
712
 
713
Changes the ps2pdf script so that, like pdf2ps, it allows debugging
714
switches.  (ps2pdf)
715
 
716
</pre><h3><a name="V4.74_Drivers"></a>Drivers</h3><pre>
717
 
718
Fixes bugs:
719
	- The vgalib driver didn't clip monobit images properly.
720
(gdevvglb.c)
721
	- The X driver asked for exposure events to be reported, but never
722
read them, causing the event queue to grow indefinitely.  (gdevxini.c)
723
	- The "vector" drivers and the PDF writer didn't properly keep track
724
of whether the current clipping region was the default one.  (gs_pdfwr.ps,
725
gdevvec.h, gdevvec.c, gdevpdf.c, gdevpdft.c)
726
	- The PDF writer had word and character spacing interchanged.
727
(gdevpdft.c)
728
	- The PDF writer scaled word and character spacing incorrectly.
729
(gdevpdft.c)
730
 
731
</pre><h3><a name="V4.74_Interpreter"></a>Interpreter</h3><pre>
732
 
733
Fixes bugs:
734
	- The user object operators didn't leave the stack in a clean state
735
if they failed.  (gs_dps2.ps)
736
	- UserObjects wasn't actually defined.  (gs_dps2.ps)
737
	- deviceinfo and set/currenthalftonephase were defined even if the
738
dps feature wasn't selected.  (int.mak, gs_dps.ps, gs_dps1.ps, gs_lev2.ps,
739
zdps.c, zdps1.c)
740
	- The dps feature didn't automatically include the level2 feature,
741
which it needs.  (int.mak)
742
	- The DPS user names mechanism didn't work, since the user names
743
array was subject to save and restore.  (It still doesn't really work --
744
there is no provision for expanding the user names array, which is created
745
with length 0.)  (gs_btokn.ps, ivmspace.h, zbseq.c, zdps.c)
746
	- The DPS context operators didn't do all the necessary error
747
checking.  (zcontext.c)
748
	- The debugging printout for names printed the name index in hex
749
without identifying it as such.  (idebug.c)
750
	- Adding the first non-name key (or name key with a name index
751
beyond 4K) to a dictionary that had any deleted entries could cause some
752
entries to apparently disappear.  (idict.c)
753
	- If a sub-table of the name table was freed during garbage
754
collection, memory could be left in an inconsistent state.  (iname.c, igc.c)
755
	- findfont didn't restore the stacks reliably if an error occurred.
756
(gs_fonts.ps)
757
	- definefont with an invalid Type 0 font sometimes added a FID entry
758
(with a dangling pointer) if it failed.  (Recovering properly from a VMerror
759
during font creation would require a much more complicated fix than this,
760
but since we expect a garbage collection to occur in that case, we aren't
761
concerned about it.)  (zfont0.c)
762
	- Reading parameter values from a dictionary could access beyond the
763
end of the array that keeps track of which entries had been referenced.
764
(idict.h, idict.c, iparam.c)
765
	- Halftone data was allocated in the current VM rather than in the
766
same VM as the halftone dictionary or procedure.  (Fixing this includes
767
updating code as necessary for the change in halftone and device halftone
768
allocation.)  (iht.h, ivmspace.h, zht.c, zht1.c, zht2.c)
769
	- Closed non-executable files on the e-stack could cause a restore
770
to be invalid.  (zvmem.c)
771
 
772
Adds skeleton code for the NeXT Display PostScript alpha and compositing
773
operators.  This is not ready for use yet!  (errors.h, gs_dpnxt.ps,
774
zdpsnext.c)
775
 
776
Implements more of state saving and restoring for Display PostScript
777
contexts.  This is not ready for use yet either.  (int.mak, icontext.h,
778
istack.h, icontext.c, zcontext.c)
779
 
780
Adds stub code for the Display PostScript view clip operators.  (gs_dps.ps,
781
zdps.c)
782
 
783
Removes the obsolete PPM-writing operator.  (int.mak, vms.mak, *.mak,
784
zwppm.c)
785
 
786
Makes the random number generator state public so it can be stored in the
787
context state.  (zmath.c)
788
 
789
Changes the flag for forcing global garbage collection to a run-time
790
variable, for debugging.  (igc.c)
791
 
792
Changes the handling of job control so that it doesn't use procedures that
793
produce an execstackoverflow when being printed.  (gs_init.ps)
794
 
795
Updates code as necessary for the change in reference counting.  (zcie.c,
796
zcrd.c)
797
 
798
Updates code as necessary for the change in off-stack gstate copying.
799
(zdps1.c)
800
 
801
Removes a small bit of obsolete code.  (interp.c)
802
 
803
</pre><h3><a name="V4.74_Streams"></a>Streams</h3><pre>
804
 
805
Fixes bugs:
806
	- An output stream that was not the last one in a pipeline could
807
incorrectly be asked to write its EOD marker more than once.  (The fix is
808
very fragile and may have introduced new bugs.)  (stream.c)
809
 
810
</pre><h3><a name="V4.74_Library"></a>Library</h3><pre>
811
 
812
Fixes bugs:
813
	- The gx_device_halftone_release procedure was declared in two
814
different header files.  (gzht.h)
815
	- Off-stack copying of gstates could lead to a situation where
816
different parts of a single gstate were owned by different allocators; this
817
could cause them to be freed improperly, corrupting memory.  We fixed this
818
partly by making the mixed ownership situation work, and partly by copying
819
more of the gstate when off-stack gstates are involved.  Unfortunately, the
820
fixes are subtle and may have introduced new bugs.  (gsstate.h, gsht.c,
821
gsht1.c, gspcolor.c, gsstate.c)
822
	- If an error occurred while creating a Pattern instance, the
823
partially initialized instance structure wasn't freed.  (gspcolor.c)
824
	- Halftones and device halftones didn't allocate their clones or
825
their subsidiary structures with the correct allocator.  (gsht.c, gsht1.c)
826
	- The error statement when allocating a reference-counted object had
827
to be a control transfer.  (gsrefct.h)
828
	- Copying gstates incorrectly copied the memory and saved pointers,
829
and the pointer to the dash pattern.  (gsstate.c)
830
	- Flatness values less than 0.5 produced far more line segments than
831
necessary (roughly the square of the required number).  Fixing this may have
832
bad effects on character quality -- this remains to be seen.  (gxpflat.c)
833
	- An error during installation of a halftone could leave things in
834
an inconsistent state.  (gsht.c)
835
	- The API didn't provide enough flexibility with respect to memory
836
management for halftones, or guarantee consistent allocation of a halftone
837
and its subelements.  (gsht1.h, gsht.c, gsht1.c, gshtscr.c)
838
	- Releasing a path didn't clear enough pointers to ensure clean
839
garbage collection.  (gxpath.c)
840
	- Finalizing or discarding a (cached) scaled font didn't properly
841
unlink it from the scaled_fonts list.  (gsfont.c)
842
	- Invoking an image operator within the BuildChar procedure for a
843
charpath caused an infinite loop.  (gsimage.c)
844
	- The bookkeeping for the scaled font cache was incorrect: the count
845
didn't always get decremented when a scaled font was freed.  (gsfont.c)
846
	- "High level" masked images were written incorrectly in the band
847
list as black-and-white images.  (gxclimag.c)
848
	- For "high level" images with fewer than 4 samples per pixel,
849
non-standard Decode values were written incorrectly in the band list.
850
(gxclimag.c)
851
	- The color wasn't set correctly for "high level" masked images.
852
(gxclimag.c)
853
	- The fastest case of monobit image rendering could get a memory
854
access error if the image lay partly outside the page.  (gximage1.c)
855
	- Clipping with an empty path was a no-op, rather than clipping out
856
everything.  (gxcpath.c)
857
 
858
Makes reference-counted objects remember which allocator owns them: this
859
entails a NON-BACKWARD-COMPATIBLE change to some of the macros for reference
860
counting.  This was necessary to fix the off-stack gstate copying problem.
861
(gsrefct.h, gscie.c, gscolor.c, gscolor1.c, gscolor2.c, gscsepr.c,
862
gsstate.c, gxclread.c)
863
 
864
Refactors the unpacking of image data, to make unpacking available as a
865
general facility.  (gximage.h, gxsample.h, gximage.c, gximage0.c,
866
gximage1.c, gximage4.c, gxsample.c)
867
 
868
Enhances -Z? so that before freeing an object, it checks that the object was
869
owned by the correct allocator.  (gsalloc.c)
870
 
871
</pre>
872
 
873
<h2><a name="Version4.73"></a>Version 4.73 (limited) (4/19/97)</h2>
874
 
875
<p>
876
This is an incremental bug fix release made primarily to provide a
877
synchronization point for an upcoming trip.
878
 
879
<h3><a name="V4.73_Documentation"></a>Documentation</h3><pre>
880
 
881
Fixes bugs:
882
	- A reference to the uniprint documentation was incorrect.
883
(current.txt)
884
	- -Olimit 1000 is not enough now for DEC Ultrix, 1200 is required;
885
this is also required for SGI IRIX.  (make.txt)
886
 
887
Adds argument/result comments to all the operators defined in gs_lev2.ps.
888
(Eventually we will do this for all operators defined as PostScript
889
procedures.)  (gs_lev2.ps)
890
 
891
</pre><h3><a name="V4.73_Procedures"></a>Procedures</h3><pre>
892
 
893
Fixes bugs:
894
	- The makefiles didn't provide a default value for GCONFIG_EXTRAS.
895
(gs.mak)
896
 
897
</pre><h3><a name="V4.73_Utilities"></a>Utilities</h3><pre>
898
 
899
Fixes bugs:
900
	- pdf2ps didn't work with TrueType or compressed Type 1 fonts.
901
(gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
902
 
903
</pre><h3><a name="V4.73_Drivers"></a>Drivers</h3><pre>
904
 
905
Fixes bugs:
906
	- A cast from byte to char was omitted.  (gdevpdfm.c)
907
 
908
</pre><h3><a name="V4.73_Platforms"></a>Platforms</h3><pre>
909
 
910
Updates the VMS script (again).  (vms.mak)
911
 
912
</pre><h3><a name="V4.73_Interpreter"></a>Interpreter</h3><pre>
913
 
914
Fixes bugs:
915
	- A module that used strlen didn't include string_.h.  (zdevice.c)
916
	- Because of some bad PostScript code in FrameMaker output, identity
917
rather than unity black generation and undercolor removal functions are
918
required on black-and-white devices.  (gs_init.ps)
919
	- A harmless internal error during initialization left bogus
920
information in $error.  (gs_cidfn.ps)
921
	- startjob didn't clear the execution stack.  Fixing this required
922
NON-BACKWARD-COMPATIBLE changes to the internal operators .instopped, .stop,
923
and .stopped, which are not supposed to be used by any external code.
924
(startjob will still give errors if executed in a file that isn't being
925
piped from stdin; this will take longer to fix.)  (gs_init.ps, gs_lev2.ps,
926
iref.h, imain.c, interp.c, zcontrol.c, zfile.c)
927
 
928
Adds a new .execn operator, part of the startjob changes, that allows
929
pushing multiple items on the exec stack.  Eventually this will allow us to
930
get rid of many dynamically created closures.  (zcontrol.c)
931
 
932
</pre><h3><a name="V4.73_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
933
 
934
Fixes bugs:
935
	- Landscape-mode PDF files weren't rotated properly.  (gs_pdf.ps,
936
pdf_main.ps)
937
 
938
Makes the default PDF configuration notify users more informatively when
939
encountering an encrypted file.  (pdf_sec.ps)
940
 
941
</pre><h3><a name="V4.73_Streams"></a>Streams</h3><pre>
942
 
943
Makes the RunLengthEncode filter always generate optimally compressed
944
output.  We did this because we thought one of the Genoa CET files loops
945
forever if this is not the case; but we were wrong.  (srle.c)
946
 
947
</pre><h3><a name="V4.73_Library"></a>Library</h3><pre>
948
 
949
Fixes bugs:
950
	- If one coordinate of a position or distance overflowed the
951
internal representable range, the other coordinate became garbage.  (bug
952
introduced in 4.70) (gspath.c)
953
	- The bounding box computation for strokes was slightly too large
954
(sometimes much too large).  (gxpaint.h, gdevbbox.c, gxclpath.c, gxstroke.c)
955
 
956
Adds (under an #if 0) an experimental alternate halftone cell choice
957
algorithm.  (gshtscr.c)
958
 
959
Adds a better comment to a particularly obscure line of C code.
960
(gxclimag.c)
961
 
962
</pre>
963
 
964
<h2><a name="Version4.72"></a>Version 4.72 (limited) (4/14/97)</h2>
965
 
966
<p>
967
This is another bug fix release, motivated mostly by Genoa testing.  It also
968
updates the new uniprint driver with a major revision, and upgrades CFF
969
support a little bit.
970
 
971
<h3><a name="V4.72_Documentation"></a>Documentation</h3><pre>
972
 
973
Fixes bugs:
974
	- -dNOGC only disables default automatic garbage collection, not all
975
garbage collection.  (use.txt)
976
	- Apparently a different set of flags is needed for newer H-P
977
compilers.  (make.txt)
978
 
979
Replaces the tiny FAQ with a pointer to the on-line FAQ.  (use.txt)
980
 
981
Updates the documentation for the uniprint driver.  (devices.txt)
982
 
983
Clarifies the fact that Ghostscript reads Fontmap files from *all*
984
directories in the search list.  (use.txt)
985
 
986
Notes that building on Linux may require SM and ICE in the list of X
987
libraries.  (make.txt)
988
 
989
</pre><h3><a name="V4.72_Procedures"></a>Procedures</h3><pre>
990
 
991
Fixes bugs:
992
	- An -include type42 was omitted from the level2 module description.
993
(int.mak)
994
	- A mention of $(ECHOGS) in the rule for sfile should have been
995
$(ECHOGS_XE).  (lib.mak)
996
	- The pcx2up sample device should have been put in devs.mak rather
997
than lib.mak.  (devs.mak, lib.mak)
998
	- scanchar.h and scantab.c belong in the library, not the
999
interpreter.  (devs.mak, int.mak, lib.mak)
1000
	- Some _h definitions were used before being defined, or weren't
1001
defined at all.  (devs.mak, lib.mak)
1002
	- The JPEG driver was missing a dependency.  (devs.mak)
1003
	- The PDF writer was missing a dependency.  (devs.mak)
1004
	- Building Level 1 systems was no longer possible.  (int.mak)
1005
 
1006
Updates the VMS build scripts.  (vms.mak, vms-decc.mak)
1007
 
1008
Adds *.upp to the list of files installed under Unix.  (unix-end.mak)
1009
 
1010
Adds rules to the Unix makefiles to build two library files: gs.a,
1011
consisting of the entire PostScript/PDF interpreter lacking only gs.c, and
1012
gslib.a, consisting of the graphics library without the gslib.c test driver.
1013
(ansihead.mak, cc-head.mak, gcc-head.mak, unixtail.mak)
1014
 
1015
</pre><h3><a name="V4.72_Drivers"></a>Drivers</h3><pre>
1016
 
1017
Fixes bugs:
1018
	- The PS/EPS writers could generate a reference to an undefined
1019
name.  (gdevps.c)
1020
	- The PDF writer produced incorrect output for multi-level outlines.
1021
(gdevpdfm.c)
1022
	- The PDF writer didn't convert /Action to /A, and /Action/Subtype
1023
to /S, in Annot dictionaries.  (gdevpdfm.c)
1024
	- The PDF writer didn't work in Level 1 systems.  (gs_pdfwr.ps)
1025
	- The PDF writer didn't transform /Rect and /R values to current
1026
user coordinates.  (gs_pdfwr.ps, gdevpdfx.h, gdevpdfm.c)
1027
	- The PNG writer could refer to the 3 predefined stdio files even in
1028
environments where this was undesirable.  (gdevpng.c)
1029
	- The PDF writer had a compiled-in limit of 100 pages of output.
1030
(gdevpdfx.h, gdevpdf.c)
1031
 
1032
Updates the uniprint driver with a major revision that uses device
1033
parameters that can be set from the command line, rather than PostScript
1034
code, for configuration choices.  (gdevupd.c, *.upp)
1035
 
1036
</pre><h3><a name="V4.72_Platforms"></a>Platforms</h3><pre>
1037
 
1038
Fixes bugs:
1039
	- gp_enumerate_files_next had no way to return an error.  (gp.h,
1040
gp_dosfe.c, gp_ntfs.c, gp_os2.c, gp_unifs.c, gp_vms.c) ****** NOT
1041
IMPLEMENTED YET ******
1042
	- On the Watcom platform, CPU_TYPE &gt;= 486 didn't automatically set
1043
FPU_TYPE to 387.  (wccommon.mak)
1044
 
1045
</pre><h3><a name="V4.72_Interpreter"></a>Interpreter</h3><pre>
1046
 
1047
Fixes bugs:
1048
	- Caching the current device in userdict could create dangling
1049
references.  (gs_init.ps, gs_pdfwr.ps, zdevice.c)
1050
	- If an error occurred in a BuildChar or BuildGlyph procedure, the
1051
graphics state stack wasn't restored.  (ichar.h, zchar.c, zchar2.c)
1052
	- There was an obsolete check for a structure when cleaning up after
1053
a show operator.  (zchar.c)
1054
	- Attempting to show a character with no associated glyph in a Type
1055
3 font with a BuildGlyph procedure caused an error.  (zchar.c)
1056
	- noaccess on a read-only dictionary didn't give an error.
1057
(ztype.c)
1058
	- The dictionary passed to a Pattern's PaintProc was the original
1059
template, not the copy made by makepattern.  (gs_lev2.ps)
1060
	- Invalid font parameters could result in partially constructed
1061
fonts, which caused problems for restore.  (zfont0.c, zfont2.c)
1062
	- Files run under job control caused an error when terminating.
1063
(gs_init.ps)
1064
	- setpagedevice didn't protect itself against malfunctioning
1065
BeginPage or EndPage procedures.  (The protection is still not perfect.)
1066
(gs_setpd.ps)
1067
	- .type42execchar called font_param redundantly.  (zchar42.c)
1068
	- The font operators didn't protect themselves well enough against
1069
bogus font dictionaries.  (zfont.c, zfont0.c)
1070
	- If an error occurred within a stringwidth, the graphics state
1071
stack wasn't restored properly.  (zchar.c)
1072
	- If an error occurred within the PaintProc of a form, the graphics
1073
state stack was left with an extra entry.  (gs_lev2.ps)
1074
	- Registering a font under a second name could corrupt data
1075
structures.  (zfont2.c)
1076
	- Different scalings of the same font should have "equal" fontIDs,
1077
to match the Adobe implementations.  (iutil.c)
1078
	- Errors detected by PostScript code during initialization either
1079
allowed execution to continue or produced a hex stack dump, instead of just
1080
producing a message and exiting.  (interp.c)
1081
	- The memory validator didn't validate chunks at previous save
1082
levels.  (ilocate.c)
1083
	- The Level 1 size of systemdict was too small.  (iinit.c)
1084
	- Attempting to define a Category resource in local VM gave a
1085
typecheck error rather than an invalidaccess.  (gs_res.ps)
1086
	- Building Level 1 systems was no longer possible.  (zusparam.c)
1087
 
1088
Rearranges the interpreter code slightly so that all operator invocations go
1089
through a single procedure when debugging.  (interp.c)
1090
 
1091
Adds a -K&lt;numK&gt; switch to limit the total amount of memory that Ghostscript
1092
can acquire.  (imainarg.c)
1093
 
1094
Makes the memory validator check packed refs more carefully.  (ilocate.c)
1095
 
1096
Makes the memory validator check explicitly for pointers to freed objects.
1097
(igc.c, ilocate.c)
1098
 
1099
Makes the memory validator check dictionaries more carefully.  (ilocate.c)
1100
 
1101
Makes the memory validator check refs embedded in structures.  (ilocate.c)
1102
 
1103
Adds a debugging option that bypasses the garbage collector entirely.
1104
(igc.c)
1105
 
1106
Adds debugging options to validate memory before/after save/restore.
1107
(zvmem.c)
1108
 
1109
Removes the patch for the uniprint driver, since it is no longer needed.
1110
(gs_init.ps)
1111
 
1112
Implements real-number operands in CFF fonts.  (gs_cff.ps)
1113
 
1114
Implements non-default charsets in CFF fonts.  (gs_cff.ps)
1115
 
1116
</pre><h3><a name="V4.72_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1117
 
1118
Fixes bugs:
1119
	- The PDF 1.2 "marked content" operators weren't defined.
1120
(pdf_main.ps)
1121
	- Streams with binary data whose first character was an EOL (\n)
1122
didn't parse properly.  Unfortunately, the way we fixed this may break some
1123
other files.  (pdf_base.ps)
1124
	- PDF 1.2 #nn escape syntax in names wasn't recognized.  ****** This
1125
is implemented with an inefficient hack that should be moved down into C.
1126
However, I don't want to risk introducing new bugs during the beta test
1127
period. ****** (pdf_base.ps)
1128
	- The interpreter had a limit of 64K objects.  Removing this limit
1129
required changing a basic data structure -- admittedly a risky thing to do
1130
during beta test.  (pdf_base.ps, pdf_main.ps)
1131
	- TJ didn't multiply the offsets by the font size, causing incorrect
1132
character positioning.  (gs_pdf.ps)
1133
 
1134
</pre><h3><a name="V4.72_Streams"></a>Streams</h3><pre>
1135
 
1136
Fixes bugs:
1137
	- The ASCIIHexDecode filter read an extra character in case of
1138
error.  (sstring.c)
1139
 
1140
Adds more tracing output to the CCITTFaxDecode stream.  (scfd.c)
1141
 
1142
</pre><h3><a name="V4.72_Library"></a>Library</h3><pre>
1143
 
1144
Fixes bugs:
1145
	- The allocator client name for rendering bitmap patterns was
1146
incorrect.  (Only affects tracing output.)  (gspcolor.c)
1147
	- The check for exceeding the overall allocation limit was
1148
incorrect, because of unsigned arithmetic.  (Only affects limitation of
1149
total allocation, which is only used for debugging and benchmarking.)
1150
(gsmemory.c)
1151
	- The 0'th component of colored screens wasn't passed through the
1152
band list, possibly causing access errors when rasterizing.  (gxclimag.c,
1153
gxclread.c)
1154
	- setbbox could get an overflow without detecting it.  (gsdps1.c)
1155
	- Images with only one component but MultipleDataSources = true
1156
could cause a memory access error.  (gximage.c)
1157
	- The buffer for unpacking 12-bit-per-sample image data was too
1158
small, causing memory corruption.  (gximage.c)
1159
	- 12-bit-per-sample images with multiple data sources sometimes
1160
didn't pass correct pointers to image_data.  (gsimage.c)
1161
	- If an image data stream reached EOF before supplying enough data
1162
for the entire image, memory corruption could occur.  (zpaint.c)
1163
	- When a device halftone was freed, some pointers in the halftone
1164
cache weren't cleared, leading to possible dangling references.  (gsstate.c)
1165
	- Invalid font parameters could result in partially constructed
1166
fonts, which caused problems for restore.  (gxfont0.h, gsfont.c)
1167
	- If an error occurred within a stringwidth, the graphics state
1168
stack wasn't restored properly.  (gschar.c)
1169
	- The (static) limit on the size of a command line argument was too
1170
small.  (gsargs.h)
1171
	- Building Level 1 systems was no longer possible.  (gxdht.h,
1172
gsht.c, gsht1.c)
1173
	- Truncation instead of rounding caused colors on gray-scale devices
1174
to come out very slightly too dark.  (gxcmap.c)
1175
	- The Decode mapping table constructed for images was slightly
1176
inaccurate for ranges other than [0 1] or [1 0].  (gximage.c)
1177
 
1178
</pre>
1179
 
1180
<h2><a name="Version4.71"></a>Version 4.71 (limited) (3/31/97)</h2>
1181
 
1182
<p>
1183
This is a bug fix release during the beta test period.
1184
 
1185
<h3><a name="V4.71_Documentation"></a>Documentation</h3><pre>
1186
 
1187
Fixes bugs:
1188
	- A larger value of -Olimit is now needed to optimize gxclread.c.
1189
(make.txt)
1190
	- Some comments were incorrect.  (gdevbbox.h, sfilter1.c)
1191
 
1192
Updates the GPL with a newer version from FSF.  (COPYLEFT)
1193
 
1194
Notes that the gcc 2.7.x code generation bug is fixed in 2.7.2.1.
1195
(make.txt)
1196
 
1197
</pre><h3><a name="V4.71_Procedures"></a>Procedures</h3><pre>
1198
 
1199
Fixes bugs:
1200
	- Some streams required by high-level drivers were incorrectly
1201
grouped with the interpreter rather than the library.  (int.mak, lib.mak)
1202
	- The choice of implementation for file streams was buried in an
1203
obscure place, rather than being included in the configuration definitions
1204
at the head of each makefile.  (We believe there are no more such buried
1205
parameters.)  This involved a NON-BACKWARD-COMPATIBLE change in the way this
1206
choice was specified.  (lib.mak, *.mak)
1207
	- Some dependencies were missing.  (lib.mak)
1208
 
1209
</pre><h3><a name="V4.71_Drivers"></a>Drivers</h3><pre>
1210
 
1211
Fixes bugs:
1212
	- A variable was used before being initialized, causing get_bits
1213
(and raster ops) to fail when using alternate X devices.  (bug introduced in
1214
4.70.)  (gdevxalt.c)
1215
	- Some 'private' declarations were omitted.  (It is infuriating that
1216
gcc doesn't check for this!)  (gdevps.c, gdevpx.c)
1217
	- A few character strings were used as byte arrays without a cast.
1218
(gdevpx.c)
1219
	- The EPS writer didn't write a correct bounding box, and didn't
1220
write it at the beginning of the file.  (gdevvec.h, gsstruct.h, gdevps.c,
1221
gdevvec.c)
1222
	- x_copy_color specified an incorrect (too large) image width.
1223
Apparently this only mattered because it could cause invalid memory
1224
accesses.  (gdevx.c)
1225
	- x_copy_mono also specified too large an image width.  It's not
1226
clear this made any difference.  (gdevx.c)
1227
	- The default implementation of strip_copy_rop didn't clamp Y values
1228
to legal values for get_bits.  (gdevmrop.c)
1229
 
1230
</pre><h3><a name="V4.71_Interpreter"></a>Interpreter</h3><pre>
1231
 
1232
Fixes bugs:
1233
	- Some initialization files prematurely switched the interpreter
1234
into Level 2 mode, causing some Level 2 operators not to be defined.  (bug
1235
introduced in 4.60 or later.)  (gs_cff.ps, gs_cidfn.ps, gs_cmap.ps,
1236
gs_init.ps, gs_res.ps)
1237
 
1238
</pre><h3><a name="V4.71_Streams"></a>Streams</h3><pre>
1239
 
1240
Fixes bugs:
1241
	- The choice of procedure names for the file-descriptor-based
1242
implementation of file streams was buried in a .c file, rather than being
1243
chosen in the makefile.  (sfile.c[deleted], sfileno.c[deleted], sfxstdio.c,
1244
sfxfd.c, sfxboth.c)
1245
 
1246
</pre><h3><a name="V4.71_Library"></a>Library</h3><pre>
1247
 
1248
Fixes bugs:
1249
	- rcurveto was broken -- it drew curves to random points.  (bug
1250
introduced in 4.61.)  (gspath.c)
1251
	- A trailing comma in an enum definition upset some compilers.  (bug
1252
introduced in 4.70.)  (gstype1.h)
1253
	- Type 1 fonts with hint replacement could produce anomalous or
1254
clipped output, or even missing lines.  (Also cleans up some out-of-date
1255
formatting.)  (gxtype1.h, gstype1.c, gxhint2.c)
1256
	- Removes some conditionals for choosing between old and new
1257
algorithms.  (gxhint3.c)
1258
	- makebitmappattern required that the bitmap consist of only a
1259
single tile repetition.  (gspcolor.c)
1260
	- Some computations on RasterOps didn't take transparency into
1261
account properly.  (gdevmrop.c)
1262
	- The structure definition for imager and graphics states had an
1263
incorrect offset for line_params, causing the garbage collector not to mark
1264
or relocate dash patterns, possibly causing memory faults, FPEs, or invalid
1265
output.  (bug introduced since 4.03.)  (gsstate.c)
1266
	- 'show' operators gave a limitcheck for unreasonable coordinates,
1267
even if limit clamping was enabled.  (gschar.c)
1268
 
1269
Implements banded filling and stroking with colored halftones, in addition
1270
to pure colors and binary halftones.  Since we are in a beta test period,
1271
actual use of this feature (but *not* all the code implementing it) is
1272
disabled under an #ifdef FUTURE.  (gsdcolor.h, gxcldev.h, gxclpath.h,
1273
gxdht.h, gxhttype.h, gsht.c, gxclimag.c, gxclpath.c, gxclread.c)
1274
 
1275
</pre>
1276
 
1277
<h2><a name="Version4.70"></a>Version 4.70 (limited) (3/26/97)</h2>
1278
 
1279
<p>
1280
This fileset fixes the one outstanding compilation problem on PC platforms
1281
and the old problem of limitchecks for out-of-bounds coordinates, and adds a
1282
variety of new features, including the ability to save away the band lists
1283
for pages and rasterize them later and/or elsewhere in any order and
1284
combination.  This is the first "serious beta" candidate for the next
1285
general release.
1286
 
1287
<p>
1288
Fileset numbers 4.62 through 4.69 were skipped deliberately.
1289
 
1290
<h3><a name="V4.70_Documentation"></a>Documentation</h3><pre>
1291
 
1292
Fixes bugs:
1293
	- The list of special -d and -s switches was out of date.  (use.txt)
1294
	- The name of the zlibDecode filter was incorrectly written
1295
zlibEncode.  (language.txt)
1296
 
1297
Documents where to find out how to install gcc 2.7.x on SGI IRIX 6.x.
1298
(make.txt)
1299
 
1300
Documents a makefile patch required on NeXTStep.  (make.txt)
1301
 
1302
Documents how to patch gcc to fix the AXP code generation bug.  (make.txt)
1303
 
1304
Adds documentation for the new unified printer driver.  (devices.txt)
1305
 
1306
</pre><h3><a name="V4.70_Procedures"></a>Procedures</h3><pre>
1307
 
1308
Fixes bugs:
1309
	- 'make distclean' didn't remove a couple of files.  (gs.mak)
1310
	- A library module didn't include a necessary dependency.  (lib.mak)
1311
	- A new .ps file wasn't installed properly.  (unix-end.mak)
1312
	- File write dates weren't updated properly on PC platforms, causing
1313
unnecessary rebuilding.  (cp.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak,
1314
tccommon.mak, wccommon.mak, zlib.mak)
1315
	- An unnecessary explicit compilation line for gdevcdj.c caused
1316
problems in the Mac environment.  (devs.mak)
1317
	- The VMS scripts were out of sync again.  (vms.mak)
1318
	- The VMS build scripts didn't include the new JPEG driver.
1319
(vms-*.mak)
1320
	- A number of makefile macros were referenced before being defined.
1321
(devs.mak, lib.mak, int.mak, *.mak)
1322
	- libpng.mak didn't work with PVERSION=90.  (libpng.mak, zlib.mak)
1323
 
1324
Separates install-scripts from install-exec and install-data.
1325
(unix-end.mak)
1326
 
1327
Moves the definition of SEARCH_HERE_FIRST from iminst.h to the makefiles.
1328
(*.mak, iminst.h, iconf.c, imain.c)
1329
 
1330
Adds a -dBATCH switch that causes Ghostscript to exit after processing the
1331
files named on the command line.  (gs_init.ps)
1332
 
1333
Adds the PostScript, EPS, and PCL XL writers, and the color and gray-scale
1334
JPEG drivers, to all Unix configurations.  (ansihead.mak, cc-head.mak,
1335
gcc-head.mak)
1336
 
1337
</pre><h3><a name="V4.70_Drivers"></a>Drivers</h3><pre>
1338
 
1339
NOTE: because of a change in an internal interface (clist_output_page), the
1340
cp50 driver no longer works.  This is a user-contributed driver for which we
1341
take no responsibility.
1342
 
1343
Fixes bugs:
1344
	- gdevcdj.c wasn't compatible with ansi2knr.  (gdevcdj.c)
1345
	- 'private' was omitted from some declarations.  (gdevjpeg.c)
1346
	- The PostScript writer didn't keep track of the current color
1347
properly.  (gdevps.c)
1348
	- RESOLUTION was misspelled in a header.  (gdevbjc.h)
1349
	- Some compilers objected to the use of a floating point initial
1350
resolution value.  (gdevbjc.h)
1351
	- Some compilers didn't allow static initialization of a union.
1352
(gsdcolor.h)
1353
	- If a TIFF driver got an error when initializing the CCITTFax
1354
encoder, it returned a bogus error code.  (gdevtfax.c)
1355
	- The PDF writer produced incorrect output for Indexed color space
1356
images.  (gdevpdfi.c)
1357
	- For many fatal error conditions, the X driver called exit()
1358
instead of returning an error.  (gdevx*.c)
1359
 
1360
Adds new drivers:
1361
	- epswrite, an EPS-writing driver (instead of making EPS output a
1362
parametric option of the PostScript-writing device).  (devs.mak, gdevps.c)
1363
	- pcxcmyk, a 4-bit CMYK PCX driver.  This is probably only useful
1364
for debugging CMYK color rendering.  (gdevpcx.c)
1365
	- jpeggray, a JPEG driver that produces gray-scale rather than color
1366
output.  Thanks to Tom Lane for contributing this.  (gdevjpeg.c)
1367
	- uniprint, a unified printer driver for a wide variety of inkjet
1368
printers.  Thanks to Gunther Hess for contributing this.  (gdevupd.c)
1369
 
1370
Adds the resolution (pHYs) to the output of the PNG drivers.  (gdevpng.c)
1371
 
1372
Adds recognition of the ASCII85EncodePages parameter to the PostScript and
1373
EPS writers.  (gdevps.c)
1374
 
1375
Makes the new JPEG driver write a JFIF header, which contains the image
1376
resolution.  (gdevjpeg.c)
1377
 
1378
Changes the "vector" device support interface so relative movement can be
1379
detected easily.  THIS IS STILL SUBJECT TO CHANGE WITHOUT NOTICE.
1380
(gdevvec.h, gdevpsdf.c, gdevps.c, gdevpx.c, gdevvec.c)
1381
 
1382
Changes the PostScript, EPS, and PDF writers to recognize curves and lines
1383
that can be represented more efficiently.  (gdevpsdf.h, gdevpsdf.c,
1384
gdevps.c)
1385
 
1386
Adds a new parameter to the PDF writer, FirstObjectNumber.  This defines the
1387
first object number that will be used in the output.  The default, and
1388
minimum, value is 1; the maximum value is approximately 2^31.  This is for
1389
the benefit of dvipdf; we don't expect it to be used otherwise.  In fact,
1390
using it appears to produce files that Adobe Acrobat Reader won't accept,
1391
even though the files are perfectly compliant with the published PDF
1392
specification.  (gdevpdfx.h, gdevpdf.c, gdevpdfp.c)
1393
 
1394
</pre><h3><a name="V4.70_Platforms"></a>Platforms</h3><pre>
1395
 
1396
Removes the makefile for the 16-bit Borland C++ platform.  This was the last
1397
supported 16-bit platform; we expect to gradually drop all 16-bit
1398
concessions from the code itself.  (bcwin.mak)
1399
 
1400
</pre><h3><a name="V4.70_Interpreter"></a>Interpreter</h3><pre>
1401
 
1402
Fixes bugs:
1403
	- The initial size of systemdict was too small, causing the
1404
interpreter to slow down substantially.  (iinit.c)
1405
	- A library module depended on an interpreter module.  (zcsindex.c)
1406
	- A logically necessary (but accidentally always available) #include
1407
was missing.  (ifont.h)
1408
 
1409
Moves set/currentoverprint to a more appropriate module.  (zcolor2.c,
1410
zcssepr.c)
1411
 
1412
Changes the default transfer functions so that they do something reasonable
1413
when given operands outside the legal [0..1] range.  We only do this to work
1414
around a bug in FrameMaker output, which uses the transfer function as the
1415
screen function (!).  (gs_init.ps)
1416
 
1417
Changes the CMap construction algorithm to use the new, more compact
1418
representation.  (zfcmap.c)
1419
 
1420
Adds support for Adobe's Compact Font Format.  Many individual features are
1421
not implemented yet: see the comment in the source code for details.
1422
(gs_cff.ps)
1423
 
1424
Adds support for Type 2 charstrings in Type 1 fonts.  (ifont.h, zfont1.c)
1425
 
1426
Changes the Type 1 character rendering operator for the library change in
1427
Type 1 fonts.  (zchar1.c, zfont1.c)
1428
 
1429
Initializes the graphics state limit clamp flag to true.  (zgstate.c)
1430
 
1431
Temporarily adds a configuration file for the new unified printer driver,
1432
and arranges for it to be read at startup.  This arrangement will be
1433
replaced very soon by a different one based on command line parameters.
1434
(gs_init.ps, uniprint.ps)
1435
 
1436
</pre><h3><a name="V4.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1437
 
1438
Adds support for Compact Font Format fonts.  (pdf_font.ps)
1439
 
1440
</pre><h3><a name="V4.70_Streams"></a>Streams</h3><pre>
1441
 
1442
Adds a glue procedure needed for the new jpeggray driver.  (sjpeg.h,
1443
sjpege.c)
1444
 
1445
Removes the width limit of 32K in the CCITTFaxEncode filter.  The new limit
1446
is absurdly large (about 50M).  (scf.h, scfx.h, scfe.c)
1447
 
1448
</pre><h3><a name="V4.70_Library"></a>Library</h3><pre>
1449
 
1450
Fixes bugs:
1451
	- A library module depended on an interpreter module.  (gxcolor2.h,
1452
gscolor2.c)
1453
	- When rendering a band, clipping was sometimes used when it wasn't
1454
necessary.  (Performance only.)  (gxclread.c)
1455
	- Stroking didn't check the path against the device clipping box in
1456
the absence of an explicit (non-default) clipping path.  (Performance only.)
1457
(gxstroke.c)
1458
	- A reference to an opaque type upset a couple of compilers.
1459
(gxclread.c)
1460
	- Negative 32-bit numbers in Type 1 fonts didn't work properly on
1461
64-bit systems.  (gstype1.c)
1462
	- A logically necessary (but accidentally always available) #include
1463
was missing.  (gxbitmap.h)
1464
	- A header wasn't protected against double inclusion.  (gxclist.h)
1465
	- Clipping devices didn't store their actual width and height.
1466
(gxcpath.c)
1467
	- The slow-case check for thin lines was incorrect.  (gxstroke.c)
1468
	- Images didn't compute their clipping boxes correctly if there
1469
wasn't an explicit clipping path.  (This must be a very recent bug, since it
1470
creates an overflow condition that prevents monochrome images from being
1471
rendered at all.)  (gximage.c)
1472
 
1473
Moves set/currentoverprint to a more appropriate module.  For clients of
1474
gs_set/currentoverprint, this is a NON-BACKWARD-COMPATIBLE CHANGE, since the
1475
header file is now separate.  (gscolor2.h, gscsepr.h, gscolor2.c, gscsepr.c)
1476
 
1477
Replace the MetroWerks work-around with a different, more general one.
1478
(gdevmem.h, gdevmem.c, gxdevice.h)
1479
 
1480
Speeds up the Type 1 interpreter a little.  (gstype1.c, gxhint3.c)
1481
 
1482
Redesigns the internal representation of CMaps to be more space-efficient.
1483
(gxfcmap.h, gschar0.c, gsfcmap.c)
1484
 
1485
Implements a facility for saving away pages and rendering them later.
1486
Currently this requires the pages to be represented as band lists on files,
1487
and only allows X translation when rendering.  This involves adding the
1488
following new printer device parameters:
1489
	BandHeight
1490
	BandWidth
1491
	BandBufferSpace
1492
Also changes the names of the printer device parameter elements from
1493
use_buffer_space to BufferSpace and from max_bitmap to MaxBitmap for
1494
consistency.  (gdevprn.h, gxcldev.h, gxclio.h, gxclist.h, gxclmem.h,
1495
gxclpage.h, gxdevmem.h, gdevmem.c, gdevp2up.c, gdevprn.c, gxclmem.c,
1496
gxclpath.c, gxclread.c)
1497
 
1498
Changes the band list implementation API to allow closing a file without
1499
deleting it, and to allow reopening an existing file.  This is a
1500
NON-BACKWARD-COMPATIBLE change to a deep internal interface.  (gxclio.h,
1501
gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
1502
 
1503
Speeds up rendering of colored halftones, by recognizing cases where one or
1504
more planes don't actually require screening, unrolling a loop, and doing
1505
basic clipping before halftoning.  (gxcht.c)
1506
 
1507
Adds a graphics state parameter, gs_set/currentlimitclamp, that changes the
1508
handling of out-of-range coordinates to clamp them in a way that produces
1509
approximately the intended output most of the time, rather than causing a
1510
limitcheck.  Currently this is only designed to work with the basic path
1511
construction operations ([r]moveto, [r]lineto, [r]curveto, closepath); it
1512
does not work with many other operations such as show, flattenpath or the
1513
rectangle operations.  Note also that while currentpoint will return the
1514
correct (unclamped) value, reading out the path with pathforall will return
1515
clamped values.  This involves NON-BACKWARD-COMPATIBLE changes to the path
1516
structure (but not to any public interfaces).  (gxpath.h, gxtype1.h,
1517
gzpath.h, gzstate.h, gspath.c, gspath1.c, gsstate.c, gstype1.c, gxpaint.c,
1518
gxpath.c, gxpath2.c, gxpcopy.c)
1519
 
1520
Adds support for Type 2 charstrings.  Some features are not implemented yet:
1521
see gstype2.c for details.  (gscrypt1.h, gstype1.h, gxfont1.h, gxop1.h,
1522
gxtype1.h, gstype1.c, gstype2.c, gxhint2.c, gxhint3.c, gxtype1.c)
1523
 
1524
</pre>
1525
 
1526
<hr>
1527
 
1528
<h2><a name="Version4.61"></a>Version 4.61 (limited) (3/13/97)</h2>
1529
 
1530
<p>
1531
This fileset cleans up many compiler warnings.  It adds support for
1532
CMap-encoded fonts, and a driver that writes JPEG images.
1533
 
1534
<h3><a name="V4.61_Documentation"></a>Documentation</h3><pre>
1535
 
1536
Corrects an error in the description of the internal CodeMap structure.
1537
(gs_cmap.ps)
1538
 
1539
Documents the fact that the optimizer in gcc 2.7.2.1 is broken on AXP
1540
machines.  (make.txt)
1541
 
1542
Corrects the name of the .setglobal/.currentglobal procedures.  (zvmem2.c)
1543
 
1544
Updates current.txt in preparation for the release.  (current.txt)
1545
 
1546
</pre><h3><a name="V4.61_Procedures"></a>Procedures</h3><pre>
1547
 
1548
Fixes bugs:
1549
	- The VMS script was out of date again.  (vms.mak)
1550
	- CIDFont support unnecessarily required composite font support.
1551
(int.mak)
1552
	- CMap and CIDFont support had improper dependencies on
1553
initialization order.  (lib.mak, int.mak)
1554
	- Some dependencies were missing in the JPEG library code.
1555
(jpeg.mak)
1556
 
1557
Adds the new JPEG driver to all standard configurations.  (*.mak)
1558
 
1559
</pre><h3><a name="V4.61_Drivers"></a>Drivers</h3><pre>
1560
 
1561
Fixes bugs:
1562
	- A dependency was omitted from the makefile.  (devs.mak, gdevps.c)
1563
 
1564
Cleans up some warnings from picky compilers.  Some of these actually
1565
indicated problems, such as unreachable code.  (gdevpdfx.h, gdevbj10.c,
1566
gdevcdj.c, gdevpdfp.c, gdevstc.c)
1567
 
1568
Adds a JPEG-writing driver.  Currently this only produces RGB output and
1569
only has a QFactor parameter, but eventually it could take all the other
1570
parameters of the DCTEncode filter.  (devs.mak, int.mak, lib.mak,
1571
gdevjpeg.c)
1572
 
1573
Refactors the PDF and PostScript output drivers so that both of them
1574
understand all the relevant documented PDF distiller parameters.  (The
1575
PostScript driver currently disregards nearly all of them.)  (gdevpdfx.h,
1576
gdevpsdf.h, gdevvec.h, gdevpdf*.c, gdevps.c, gdevpsdf.c, gdevpx.c)
1577
 
1578
</pre><h3><a name="V4.61_Platforms"></a>Platforms</h3><pre>
1579
 
1580
Fixes bugs:
1581
	- The MetroWerks C compiler gave an inexplicable error on a
1582
particular initialization.  (gdevmem.h, gdevmem.c)
1583
 
1584
</pre><h3><a name="V4.61_Interpreter"></a>Interpreter</h3><pre>
1585
 
1586
Fixes bugs:
1587
	- The insideness testing operators sometimes reported hits
1588
incorrectly.  (zupath.c)
1589
	- Mixed-type arithmetic used floats rather than doubles when
1590
converting integers, possibly leading to loss of precision.  (zarith.c,
1591
zrelbit.c)
1592
	- composefont was defined in a private dictionary, not in
1593
systemdict.  (gs_cmap.ps)
1594
	- composefont didn't work, for several different reasons.
1595
(gs_cmap.ps)
1596
	- After a Type 1 font called an OtherSubr, an invalid memory access
1597
usually occurred, because of an incorrect attempt to free a data structure.
1598
(zchar1.c)
1599
	- 2 .setlanguagelevel gave an error if globaldict hadn't been
1600
defined yet.  (zmisc2.c)
1601
 
1602
Cleans up some warnings from picky compilers.  Some of these actually
1603
indicated problems, such as unreachable code, or failure to check for
1604
(implausible) out-of-range data.  (idict.c, idparam.c, igc.c, iinit.c,
1605
imain.c, iscan.c, zbseq.c, zchar1.c, zdps1.c)
1606
 
1607
Adjusts clients for a change in the internal character cache structure and
1608
the introduction of the font next-glyph procedure.  (zfont.c, zfont0.c)
1609
 
1610
Refactors the Level 1 / Level 2 interpreter split slightly so that composite
1611
fonts don't require all of Level 2.  (int.mak, gs_dps1.ps, gs_dps2.ps)
1612
 
1613
Adds FMapType 9 (CMap-encoded) composite font support.  (int.mak,
1614
gs_cmap.ps, ifont.h, zfcmap.c, zfont.c, zfont0.c)
1615
 
1616
</pre><h3><a name="V4.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1617
 
1618
Adds recognition of /Identity values for BG, UCR, and TR functions in
1619
ExtGState resources.  (General function values still aren't recognized.)
1620
(pdf_draw.ps)
1621
 
1622
Centralizes the handling of inherited attributes.  (pdf_draw.ps,
1623
pdf_main.ps)
1624
 
1625
Starts to add support for Type 0 fonts.  (pdf_font.ps, pdf_main.ps)
1626
 
1627
</pre><h3><a name="V4.61_Streams"></a>Streams</h3><pre>
1628
 
1629
Cleans up some warnings from picky compilers.  Some of these actually
1630
indicated problems, such as unreachable code.  (shc.h, scfd.c, sfilter2.c,
1631
siscale.c, stream.c)
1632
 
1633
</pre><h3><a name="V4.61_Library"></a>Library</h3><pre>
1634
 
1635
Fixes bugs:
1636
	- Some picky compilers disliked certain conditional expressions.
1637
(gxclread.c)
1638
	- Some picky compilers couldn't handle an extraneous semicolon.
1639
(gdevvec.h)
1640
	- A cast from byte ** to const byte ** was missing.  (gdevvec.c)
1641
	- Resizing the levels array of a halftone order when banding could
1642
cause invalid memory accesses.  (bug introduced in 4.60) (gxclread.c)
1643
	- One picky compiler didn't allow taking the address of an extern
1644
undefined structure.  (lib.mak, gxclread.c)
1645
	- When rendering Type 1 fonts, character overshoot was usually
1646
suppressed when it shouldn't have been, often producing "squashed"
1647
characters.  (gxhint1.c)
1648
	- On systems where sizeof(long) &gt; sizeof(int), coordinate values of
1649
more than 22 bits were passed through the band list incorrectly, producing
1650
incorrect output.  (gxclread.c)
1651
 
1652
Cleans up some warnings from picky compilers.  Some of these actually
1653
indicated problems, such as unreachable code or (hypothetical) loss of
1654
precision.  (gsdevice.c, gshsb.c, gsht.c, gsstate.c, gstype1.c, gxclimag.c,
1655
gxclpath.c, gxclread.c, gxpdash.c)
1656
 
1657
Makes using font hints conditional, for debugging.  (gxhint1.c)
1658
 
1659
Adds library-level support for FMapType 9 (CMap-encoded) composite fonts.
1660
There is still no support for rearranged fonts.  (gsccode.h, gsfcmap.h,
1661
gsstruct.h, gxfcache.h, gxfcmap.h, gxfont.h, gxfont0.h, gschar.c, gschar0.c,
1662
gsfcmap.c, gsfont.c, gsfont0.c)
1663
 
1664
Splits band list control and utilities from rectangle-oriented commands,
1665
because a file was getting too big.  (gxclist.c, gxclrect.c)
1666
 
1667
Moves the temporary file names for command lists from the printer device
1668
structure to the command list structure; moves opening and closing the
1669
temporary files from gdev_prn_alloc/free to clist_open/close.  (gdevprn.h,
1670
gxclist.h, gdevprn.c, gxclist.c, gxclread.c)
1671
 
1672
Changes the command list storage implementation interface to pass the file
1673
name to the clist_rewind and clist_fseek functions, for the benefit of OSs
1674
that require closing and reopening a file to switch between reading and
1675
writing.  This is a NON-BACKWARD-COMPATIBLE change in a non-public
1676
interface.  (gxclio.h, gxclmem.h, gxclfile.c, gxclist.c, gxclmem.c)
1677
 
1678
Changes the get_outline procedure in Type 42 fonts to return the length of
1679
the outline data as well as the pointer.  This is a NON-BACKWARD-COMPATIBLE
1680
change in a semi-public interface.  (gxfont42.h, gstype42.c)
1681
 
1682
</pre>
1683
 
1684
<h2><a name="Version4.60"></a>Version 4.60 (limited) (3/2/97)</h2>
1685
 
1686
<p>
1687
This fileset moves color rendering up from the graphics state to the imager
1688
state so that color rendering can happen after banding.  It also shifts
1689
image rendering to the rendering pass of banding for many common cases
1690
(often referred to inaccurately as "high-level image" capability).  The
1691
changes involved are substantial and in some respects subtle, so
1692
unfortunately it is quite possible that some new bugs have been introduced.
1693
 
1694
<p>
1695
This fileset also includes improvements to the new PCL XL driver
1696
(pxlmono/color), and introduces an experimental PostScript driver (pswrite).
1697
 
1698
<h3><a name="V4.60_Documentation"></a>Documentation</h3><pre>
1699
 
1700
Fixes bugs:
1701
	- The argument list of colorimage was incorrect.  (zcolor1.c)
1702
	- false .charboxpath incorrectly claimed to create the correct path
1703
even when the CTM was not well-behaved.  (language.txt)
1704
	- The discussion of the "main program" files was out of date.
1705
(make.txt)
1706
 
1707
Updates the OS/2 EMX documentation.  (make.txt)
1708
 
1709
Modifies the Aladdin Ghostscript Free Public License slightly so it may be
1710
applied to other software packages.  (PUBLIC)
1711
 
1712
Updates inaccurate build documentation for several Unix platforms.
1713
(make.txt, ansihead.mak, cc-head.mak, gcc-head.mak, libpng.mak)
1714
 
1715
Notes a problem with the MIPSpro 7.1 compiler.  (make.txt)
1716
 
1717
</pre><h3><a name="V4.60_Procedures"></a>Procedures</h3><pre>
1718
 
1719
Fixes bugs:
1720
	- Most makefiles didn't include version.mak.  (msc.mak,
1721
msvcwint.mak, os2.mak, tctail.mak, wctail.mak)
1722
	- There was an incorrect dependency for the Windows printer device.
1723
(devs.mak)
1724
 
1725
Moves the PDF writer to devs.mak.  (devs.mak, int.mak)
1726
 
1727
Updates the main VMS script to be structured like version.mak.  (vms.mak)
1728
 
1729
</pre><h3><a name="V4.60_Drivers"></a>Drivers</h3><pre>
1730
 
1731
Factors out the stream-writing procedures from the PDF writer, so they can
1732
be shared with the new PostScript writer.  (gdevpdfs.h =&gt; gdevpstr.h,
1733
gdevpdfx.h, gdevpsdf.h, gdevpdf.c, gdevpdfi.c, gdevpdfs.c =&gt; gdevpstr.c,
1734
gdevpdft.c, gdevpsdf.c)
1735
 
1736
Adds a PostScript writer (pswrite), similar to the PDF and PCL XL drivers.
1737
Currently this handles fill/stroke graphics and Level 1 images; everything
1738
else (including text) is turned into bitmaps.  (devs.mak, gdevps.c)
1739
 
1740
Changes the names of the PCL XL drivers from hpxmono/color to pxlmono/color.
1741
(devs.mak, gdevpx.c)
1742
 
1743
Updates the "vector" device support interface.  THIS IS STILL SUBJECT TO
1744
CHANGE WITHOUT NOTICE.  (gdevvec.h, gdevpx.c, gdevvec.c)
1745
 
1746
Makes the vgalib driver a page device.  This seems bizarre, but it's
1747
necessary for setpagedevice to work with it.  (gdevvglb.c)
1748
 
1749
Updates some drivers for the new color mapping interfaces.  (gdevpx.c)
1750
 
1751
Updates the user-contributed Canon LBP-8II and LIPS III driver.
1752
(gdevlbp8.c)
1753
 
1754
</pre><h3><a name="V4.60_Platforms"></a>Platforms</h3><pre>
1755
 
1756
Fixes bugs:
1757
	- The workaround for Ultrix's incorrect implementation of sh -e
1758
still didn't work.  (unixtail.mak)
1759
	- The definition of offset_of didn't work on the Mac.  (stdpre.h)
1760
 
1761
Updates the OS/2 EMX linker command per input from a user.  (os2.mak)
1762
 
1763
</pre><h3><a name="V4.60_Fonts"></a>Fonts</h3><pre>
1764
 
1765
Adds .pss (apparently used by Adobe for Multiple Master font instances) to
1766
the list of extensions skipped by the GS_FONTPATH directory scanner.
1767
(gs_fonts.ps)
1768
 
1769
</pre><h3><a name="V4.60_Interpreter"></a>Interpreter</h3><pre>
1770
 
1771
Fixes bugs:
1772
	- Programs that rebind null, true, and/or false could cause all
1773
kinds of problems.  We've only fixed a couple of the places that might be
1774
affected (findfont, quit), by wrapping an explicit "systemdict begin/end"
1775
around the code; fixing this completely would probably require wrapping this
1776
implicitly around almost every pseudo-operator, which would be too
1777
expensive.  (gs_fonts.ps, gs_lev2.ps)
1778
	- In a Level 2 system, grestoreall stopped one level too early.
1779
(zdevice2.c)
1780
	- setpagedevice didn't restore the stack properly if it got an
1781
error.  (gs_setpd.ps)
1782
 
1783
Changes the GC pointer enumeration interface to reduce the number of
1784
'discarding const' warnings.  See under Library below.  (igc.c)
1785
 
1786
Updates the interpreter for the change in the imager / graphics state split.
1787
(zpcolor.c)
1788
 
1789
Makes the stack-restoring behavior of pseudo-operators non-optional.
1790
(interp.c)
1791
 
1792
</pre><h3><a name="V4.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1793
 
1794
Fixes bugs:
1795
	- PDFDocEncoding and WinAnsiEncoding incorrectly had `minus' at
1796
position 45 rather than `hyphen'.  (gs_pdf_e.ps, gs_wan_e.ps)
1797
 
1798
</pre><h3><a name="V4.60_Streams"></a>Streams</h3><pre>
1799
 
1800
Fixes bugs:
1801
	- A header file wasn't protected against double inclusion.
1802
(stream.h)
1803
	- any_abs was redefined.  (spngp.c)
1804
	- The CCITTFaxDecode filter didn't fully initialize the "previous
1805
line" for 2-D decoding, so if the very first line of data was 2-D, an
1806
out-of-bounds memory access could occur.  (scfd.c)
1807
 
1808
</pre><h3><a name="V4.60_Library"></a>Library</h3><pre>
1809
 
1810
Fixes bugs:
1811
	- gs_image_next could read too much data, causing errors at the
1812
interpreter level.  (gsimage.c)
1813
	- The bitmaps stored in the Pattern cache were usually freed,
1814
leaving dangling pointers.  (gsdcolor.h, gxpcache.h, gxpcolor.h, gsstate.c,
1815
gxpcmap.c)
1816
	- There was still one assignment to a const structure, and there
1817
were some unnecessary const-discarding casts.  (gxclread.c)
1818
	- If a character in a Type 3 font was defined by executing 'show'
1819
type commands, charpath did the wrong thing (didn't pick up the paths
1820
created by the inner show).  Similarly, if it uses 'stroke', true charpath
1821
did the wrong thing (appended the path rather than the strokepath path).
1822
(gxchar.h, gschar.c, gspaint.c)
1823
	- A header file wasn't protected against double inclusion.
1824
(gserror.h)
1825
	- The new fast implementation of rectfill didn't handle rectangles
1826
with negative width/height.  (bug introduced in 4.32) (gsdps1.c)
1827
	- Reading banded high-level images calculated the image height
1828
incorrectly, (usually) causing a rangecheck.  (gxclread.c)
1829
	- When reading band data, a memory fault could occur if the halftone
1830
cache hadn't been allocated yet.  (gxht.c)
1831
	- The imager state data for high-level images wasn't written soon
1832
enough.  (gxclimag.c)
1833
	- High-level images computed bounding boxes incorrectly, so they
1834
could write some garbage data in the band list, and could also fail to write
1835
some information.  (gsmatrix.h, gxmatrix.h, gxclimag.c)
1836
	- High-level images wrote the raster value incorrectly in the band
1837
list.  (gxclimag.c)
1838
	- Images with non-zero initial source X and non-portrait orientation
1839
were displaced on the page.  (In practice, this only applied to some banded
1840
high-level images.)  (gximage.c)
1841
	- The bounding box device didn't forward output_page calls, causing
1842
pages to be dropped or overprinted.  (gdevbbox.c)
1843
	- The band renderer considered all non-zero return codes as errors,
1844
rather than only negative codes.  (gxclread.c)
1845
	- An unnecessary extern hadn't been removed.  (gxclimag.c)
1846
	- Some macros didn't parenthesize uses of their arguments, causing
1847
syntax errors.  (gsrefct.h)
1848
	- The screen phase and color_info weren't set correctly when
1849
rendering bands.  (gsstate.h, gsht.c, gxclread.c)
1850
	- A header file didn't declare all the opaque types it used.
1851
(gsdevice.h)
1852
	- Indexed color spaces didn't work with banded images.  (They still
1853
don't -- the check for writing the color space, and the code for reading the
1854
table or map, are incomplete.)  (gxclist.h, gxclpath.h, gxclimag.c,
1855
gxclpath.c, gxclread.c)
1856
 
1857
In preparation for implementing post-banding halftoning:
1858
 
1859
	- Moves color rendering information, including alpha value, from
1860
graphics state to imager state; also moves the allocator pointer.  This is
1861
quite a subtle change, and may have a significant bug tail.  (gxdcolor.h,
1862
gxht.h, gxistate.h, gzstate.h, gschar.c, gsdps1.c, gspaint.c, gsstate.c,
1863
gxclread.c)
1864
 
1865
	- Changes all the relevant color space and color mapping procedures
1866
so they take a const gs_imager_state * (and, in some cases, a [const]
1867
gx_device *) instead of a const gs_state *.  This is a
1868
non-backward-compatible change, but it only affects internal interfaces.
1869
(gsdcolor.h, gxcmap.h, gxcspace.h, gxdcconv.h, gxdcolor.h, gxdither.h,
1870
gxpcolor.h, gzht.h, gschar.c, gscie.c, gscolor.c, gscolor1.c, gscolor2.c,
1871
gscsepr.c, gsdevice.c, gsimage.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcconv.c,
1872
gxdcolor.c, gxht.c, gximage.c, gximage[2345].c, gxpcmap.c)
1873
 
1874
	- Changes the color and color space reference count adjustment
1875
procedures similarly, to take a gs_memory_t * instead of a gs_state_t *.
1876
(gxcspace.h, gscie.c, gscolor.c, gscolor2.c, gscsepr.c, gspcolor.c)
1877
 
1878
	- Changes the gs_halftone in the graphics state from being part of
1879
the gs_state_contents to being an independent reference-counted object.
1880
This too may have a significant bug tail.  (gxht.h, gxistate.h, gsht.c,
1881
gsstate.c)
1882
 
1883
	- Changes the image processing code so it no longer assumes that the
1884
gs_imager_state is actually a gs_state.  (gximage.h, gximage.c, gximage2.c,
1885
gximage3.c, gximage4.c, gximage5.c)
1886
 
1887
	- Adds a unique ID value to device halftones, so that it's possible
1888
to detect (non-)changes quickly.  (gxdht.h, gsht.c)
1889
 
1890
Finishes the code for writing and reading color rendering information in the
1891
band list.  This involves changes to several band list opcodes.  (gsht.h,
1892
gsht1.h, gxcldev.h, gxclist.h, gxclpath.h, gxdht.h, gzht.h, gsht.c, gsht1.c,
1893
gxclbits.c, gxclimag.c, gxclist.c, gxclread.c)
1894
 
1895
Changes the garbage collector pointer enumeration procedure interface
1896
slightly to reduce the number of 'discarding const' warnings.  THIS IS A
1897
NON-BACKWARD-COMPATIBLE CHANGE for anyone who didn't use the
1898
ENUM_PTRS_BEGIN[_PROC] macro to start a pointer enumeration procedure (which
1899
should be no one).  (gsstruct.h, gsmemory.c)
1900
 
1901
Corrects a few more needlessly const-discarding casts.  (gxfcache.h,
1902
gxccache.c)
1903
 
1904
Checks for file reading errors when rasterizing bands.  (gxclread.c)
1905
 
1906
</pre>
1907
 
1908
<hr>
1909
 
1910
<h2><a name="Version4.51"></a>Version 4.51 (limited) (2/9/97)</h2>
1911
 
1912
<p>
1913
This version contains a more reasonable high-level PCL XL driver.  The VMS
1914
build script is working again, we think.
1915
 
1916
<h3><a name="V4.51_Procedures"></a>Procedures</h3><pre>
1917
 
1918
Fixes bugs:
1919
	- The gsdll_h macro wasn't defined all the places it was needed.
1920
(devs.mak, os2.mak)
1921
 
1922
</pre><h3><a name="V4.51_Drivers"></a>Drivers</h3><pre>
1923
 
1924
Continues to develop the "vector" driver infrastructure and the PCL XL
1925
driver.  EVERYTHING IN THESE FILES IS SUBJECT TO CHANGE WITHOUT NOTICE.
1926
(gdevvec.h, gdevvec.c)
1927
 
1928
Brings the PCL XL driver up to usable quality for graphics.  Most
1929
fill/stroke graphics, and portrait-orientation bitmap images up to 8 bits
1930
per pixel, are converted directly to their PCL XL equivalents.  Text is
1931
still treated as bitmaps.  Both gray-scale and color output are now
1932
supported.  (devs.mak, gdevpx.c)
1933
 
1934
</pre><h3><a name="V4.51_Platforms"></a>Platforms</h3><pre>
1935
 
1936
Fixes bugs:
1937
	- When using gsos2.exe with gsdll2.dll, reducing the size of the
1938
page bitmap caused a limitcheck error with the message
1939
    Failed to decommit memory in pm_alloc_bitmap, rc = 87  (gdevpm.c)
1940
	- The scripts that construct gconfig_.h failed on Ultrix, because
1941
Ultrix's implementation of sh -e is incorrect.  (unixtail.mak, ugcclib.mak)
1942
	- Some systems that have sys/times.h don't define CLK_TCK, making a
1943
compilation fail.  (time_.h)
1944
 
1945
</pre><h3><a name="V4.51_Interpreter"></a>Interpreter</h3><pre>
1946
 
1947
Fixes bugs:
1948
	- An omitted semicolon wasn't detected by gcc.  (idict.c)
1949
 
1950
Removes a source of unnecessary duplication by getting the revision number
1951
and date from version.mak.  (gs.mak, int.mak, version.mak, gscdef.c)
1952
 
1953
</pre><h3><a name="V4.51_Streams"></a>Streams</h3><pre>
1954
 
1955
Fixes bugs:
1956
	- The minimum buffer sizes for the RunLengthDecode filter hadn't
1957
been changed to reflect the algorithm improvement made in release 4.38.
1958
(srld.c)
1959
 
1960
Changes the RunLengthEncode filter so it can make progress with only a
1961
2-byte output buffer.  (srlx.h, srle.c)
1962
 
1963
</pre><h3><a name="V4.51_Library"></a>Library</h3><pre>
1964
 
1965
Fixes bugs:
1966
	- Because of a typo, the slow general algorithm was always used for
1967
monochrome images.  (Performance bug only, but a serious one.)  (gximage2.c)
1968
	- Dots (zero-length lines with round caps and zero dot length)
1969
caused an infinite loop.  (bug introduced in 4.40)  (gxstroke.c)
1970
	- Some image data unpacking procedures were always required, but
1971
weren't always included.  (bug introduced in 4.50) (gximage.c, gximage0.c,
1972
gximage3.c)
1973
	- Images with 8 bits per pixel and non-identity Decode produced
1974
garbage.  (bug introduced later than 4.03) (gximage0.c)
1975
	- Some necessary casts and omitted punctuation weren't detected by
1976
gcc.  (gxpath.h, gsargs.c, gsstate.c, gxclread.c, gxpdash.c)
1977
	- The band list became confused if a band had no commands at all.
1978
(gxclread.c)
1979
	- If a path included a closepath followed by a moveto to the same
1980
point, it could be written incorrectly in the band list.  (bug probably
1981
introduced in 3.60) (gxclpath.c)
1982
 
1983
Changes some internal computations for arcs from float to double for greater
1984
accuracy.  (gspath1.c)
1985
 
1986
</pre>
1987
 
1988
<h2><a name="Version4.50"></a>Version 4.50 (limited) (1/31/97)</h2>
1989
 
1990
<p>
1991
This release contains an experimental high-level PCL XL driver, a little
1992
more support for CID/CMap fonts, and the usual bug fixes.  NOTE: the VMS
1993
build script is known to be out of sync with the makefiles again; we still
1994
don't see any alternative to constant struggles with this problem.
1995
 
1996
<h3><a name="V4.50_Documentation"></a>Documentation</h3><pre>
1997
 
1998
Corrects the -h message, which gave an incorrect file name for the bug
1999
report form.  (imainarg.c)
2000
 
2001
Removes documentation for 16-bit MS-DOS platforms with the Borland compiler.
2002
(fonts.txt, make.txt, new-user.txt, use.txt)
2003
 
2004
</pre><h3><a name="V4.50_Procedures"></a>Procedures</h3><pre>
2005
 
2006
Fixes bugs:
2007
	- The Watcom library makefile didn't define the directory
2008
information for libpng and zlib.  (watclib.mak)
2009
 
2010
Moves the selection of band list implementation (file- vs. RAM-based) and
2011
the compression filter for RAM-based band lists up to the top-level
2012
makefiles.  Again, this is a NON-BACKWARD-COMPATIBLE procedure change.
2013
(lib.mak, *.mak)
2014
 
2015
Moves the selection of version number for all platforms (except VMS, as
2016
usual) to a separate file.  This will reduce the number of files that need
2017
editing when the version number changes.  (ansihead.mak, cc-head.mak,
2018
gcc-head.mak, ugcclib.mak, version.mak, tar_cat)
2019
 
2020
</pre><h3><a name="V4.50_Drivers"></a>Drivers</h3><pre>
2021
 
2022
Fixes bugs:
2023
	- An error in the (unsupported) SGI RGB driver could cause crashes
2024
or incorrect output.  (gdevsgi.c)
2025
 
2026
Starts to create a framework for structured output ("vector") drivers (PDF,
2027
PostScript, PCL XL, etc.)  (gdevbbox.h, gdevvec.h, gsdcolor.h, gsstruct.h,
2028
gxdevice.h, gdevvec.c)
2029
 
2030
Moves default page size parameters to a more accessible header.  (gdevprn.h,
2031
gxdevice.h, gdevx.c)
2032
 
2033
Adds a driver that produces properly structured PCL XL output.  This is
2034
highly experimental and not ready for use yet.  (gdevpx.c)
2035
 
2036
</pre><h3><a name="V4.50_Platforms"></a>Platforms</h3><pre>
2037
 
2038
Removes support for 16-bit MS-DOS platforms with the Borland compiler.  For
2039
the moment, 16-bit MS Windows is still supported.  (bc.mak, bcflags.mak,
2040
bclib.mak, tc.mak)
2041
 
2042
</pre><h3><a name="V4.50_Interpreter"></a>Interpreter</h3><pre>
2043
 
2044
Fixes bugs:
2045
	- File-based CIDFonts (with delayed, incremental loading of
2046
character outlines) didn't work.  (gs_cidfn.ps)
2047
 
2048
Finishes implementing the definition of CMap resources, except for
2049
rearranged fonts.  (gs_cidfn.ps, gs_cmap.ps)
2050
 
2051
Adds a little more CMap support code.  (zcid.c)
2052
 
2053
Removes the .setcurrentfile operator, since it doesn't solve the problem it
2054
was intended to address.  (zcontrol.c)
2055
 
2056
Adapts the interpreter to use the new argument processing code.
2057
(imainarg.c)
2058
 
2059
</pre><h3><a name="V4.50_Streams"></a>Streams</h3><pre>
2060
 
2061
Fixes bugs:
2062
	- The CCITTFaxDecode filter could access as much as 3 bytes beyond
2063
the end of a buffer, causing an invalid memory access.  (This is essentially
2064
the same bug that was fixed for the CCITTFaxEncode filter in 4.38.)
2065
(scfd.c)
2066
 
2067
</pre><h3><a name="V4.50_Library"></a>Library</h3><pre>
2068
 
2069
Fixes bugs:
2070
	- Painting an image without having set up any halftone could cause a
2071
crash.  (gxht.c)
2072
	- In a very obscure case, an occasional scan line of landscape
2073
images could get corrupted.  (gximage0.c)
2074
	- Because of a rounding error, patterns could fail to be painted in
2075
certain cases.  (gxpcolor.h, gspcolor.c, gxpcmap.c)
2076
	- Very large line widths or miter limits could cause the computation
2077
of stroke expansion to overflow.  (gxpaint.h, gdevbbox.c, gxclpath.c,
2078
gxstroke.c)
2079
	- The phase could be incorrect for simple patterns.  (gspcolor.c)
2080
	- The default implementation of copy_mono used an incorrect
2081
RasterOp.  (gdevdflt.c)
2082
	- The default implementation of fill_masked didn't increment the row
2083
pointer, causing characters to appear as solid rectangular blocks.
2084
(gxdcolor.c)
2085
 
2086
Eliminates an unnecessary gsave and grestore from rectfill and rectstroke if
2087
the path was null.  (gsdps1.c)
2088
 
2089
Adds a limit on the amount of space that the default (C heap) allocator will
2090
allocate, and a record of the maximum amount allocated, to help testing
2091
embedded products.  (gsmemory.c)
2092
 
2093
Changes the band list algorithm for deciding how many replicas of a halftone
2094
tile to store in the tile cache.  The previous algorithm was too liberal,
2095
which could cause the cache to overflow and many unnecessary bitmaps to be
2096
written in the band list.  (gxclbits.c)
2097
 
2098
Writes clipping with a rectangle more compactly in the band list.
2099
(gxfixed.h, gxclpath.c)
2100
 
2101
Adds new band list commands for representing 90- and 180-degree arcs
2102
compactly.  (gxclpath.h, gxclpath.c, gxclread.c)
2103
 
2104
Repackages handling of general monochrome images, color images, and 12-bit
2105
and interpolated images, so that they are included optionally rather than in
2106
all configurations.  (int.mak, lib.mak, gximage.h, gximage.c,
2107
gximage[12345].c)
2108
 
2109
Changes the structure definition for devices to include no-op pointer
2110
enumeration and relocation, so they can have subclasses.  (gxdevice.h)
2111
 
2112
Adds a library facility for processing command line arguments with
2113
@-expansion.  (gsargs.h, gsargs.c)
2114
 
2115
</pre>
2116
 
2117
<hr>
2118
 
2119
<h2><a name="Version4.41"></a>Version 4.41 (private) (1/21/97)</h2>
2120
 
2121
<p>
2122
This release adds a PCL XL output driver, and a few performance
2123
improvements.
2124
 
2125
<h3><a name="V4.41_Procedures"></a>Procedures</h3><pre>
2126
 
2127
Fixes bugs:
2128
	- The zlib library used an incorrect header file when compiling.
2129
(zlib.mak)
2130
 
2131
Changes the names of the preprocessor symbols indicating the presence of
2132
system header files to be consistent with the ones used by GNU configure.
2133
(dvx-tail.mak, ugcclib.mak, unixtail.mak, vms.mak; dirent_.h, time_.h;
2134
gp_unix.c)
2135
 
2136
Changes the method for choosing the compression filter for RAM-based band
2137
lists.  This is a NON-BACKWARD-COMPATIBLE change in the makefile.  (lib.mak)
2138
 
2139
</pre><h3><a name="V4.41_Drivers"></a>Drivers</h3><pre>
2140
 
2141
Adds black-and-white and 8-bit gray PCL XL (PCL 6) drivers for the LaserJet
2142
5 and 6 family.  This driver is extremely simple and just emits bitmaps;
2143
future drivers will use more PCL XL high-level constructs.  (gdevlj56.c)
2144
 
2145
</pre><h3><a name="V4.41_Fonts"></a>Fonts</h3><pre>
2146
 
2147
Updates the free font distribution to add the URW Grotesk and Antiqua fonts.
2148
 
2149
</pre><h3><a name="V4.41_Interpreter"></a>Interpreter</h3><pre>
2150
 
2151
Fixes bugs:
2152
	- gs -h and -v returned with a non-zero exit code on all platforms.
2153
(This is necessary under Windows, to keep the message visible on the screen,
2154
but nowhere else.)  (imainarg.c)
2155
	- Resizing a dictionary could exceed dict_max_size, causing memory
2156
corruption.  (dstack.h, idict.h, idict.c, zdict.c)
2157
 
2158
Adds .setlinecap and .setlinejoin that can use the extended range of line
2159
cap/join values, and redefines setlinecap and setlinejoin in terms of them.
2160
(gs_init.ps, zgstate.c)
2161
 
2162
</pre><h3><a name="V4.41_Streams"></a>Streams</h3><pre>
2163
 
2164
Fixes bugs:
2165
	- The CCITTFaxDecode filter with EncodedByteAlign = true skipped to
2166
a byte boundary before checking for an EOL.  This may be wrong if EndOfLine
2167
= true; we aren't at all sure what should happen if EndOfLine = false.
2168
(scfd.c)
2169
 
2170
Adds a "no wrapper" option to the zlib streams, to optionally suppress the
2171
time-consuming integrity checksum computation.  (szlibx.h, szlibc.c,
2172
szlibd.c, szlibe.c)
2173
 
2174
</pre><h3><a name="V4.41_Library"></a>Library</h3><pre>
2175
 
2176
Fixes bugs:
2177
	- Dashed lines with zero-length drawn segments (dots) that fell
2178
exactly on a corner produced inappropriate output.  (pcl/test19.pxs)
2179
(gxpdash.c, gxstroke.c)
2180
	- Dashed lines didn't set the segment notes properly.  (gxpdash.c)
2181
	- The bounding box device didn't free a bookkeeping structure at the
2182
end of processing an image.  (gdevbbox.c)
2183
	- Curve points could get computed incorrectly when using emulated
2184
floating point.  (gxpcopy.c)
2185
	- The 1-element cache for curve_x_at_y didn't work if Y was
2186
decreasing.  (gxfixed.h, gxpcopy.c)
2187
 
2188
Distinguishes between error and informational exits.  (stdpre.h)
2189
 
2190
Defines and checks maximum values for line cap and join parameters.
2191
(gslparam.h, gsline.c)
2192
 
2193
Removes the 'not last' segment note, since it is not used for anything.
2194
(gxpath.h, gspath1.c, gxpath2.c, gxpcopy.c, gxpflat.c, gxstroke.c)
2195
 
2196
Changes the memory freeing algorithm for RAM-based band lists back to the
2197
original one, since the "improved" one had more bugs than it was worth
2198
chasing.  (gxclmem.c)
2199
 
2200
Speeds up the A * B / C algorithm a little.  (gsmisc.c)
2201
 
2202
Speeds up curve_x_at_y by recognizing more cases that don't require the slow
2203
A * B / C algorithm.  (gxpcopy.c)
2204
 
2205
Changes the path filling code so it uses fill-by-trapezoids even if
2206
fill_adjust is zero, as long as the flatness is at least 1 pixel.
2207
(gxfill.c)
2208
 
2209
Removes the (unneeded) floating point operations from gx_curve_log2_samples.
2210
(gxpflat.c)
2211
 
2212
Changes the memory-based implementation of band lists so that it constructs
2213
the compressor and decompressor by calling procedures rather than
2214
instantiating templates: this allows setting filter parameters to
2215
non-default values.  (gxclmem.h, gxcllzw.c, gxclmem.c, gxclzlib.c)
2216
 
2217
</pre>
2218
 
2219
<h2><a name="Version4.40"></a>Version 4.40 (private) (1/13/97)</h2>
2220
 
2221
<p>
2222
This version finally handles the last graphics model discrepancies between
2223
PostScript and PCL, by correctly implementing null joins, minimum dot
2224
lengths, and tangent-aligned curve ends.  It also contains some significant
2225
performance improvements, and as usual a few bug fixes.
2226
 
2227
<h3><a name="V4.40_Documentation"></a>Documentation</h3><pre>
2228
 
2229
Documents the new accurate curves and path dashing operators.
2230
(language.txt)
2231
 
2232
</pre><h3><a name="V4.40_Utilities"></a>Utilities</h3><pre>
2233
 
2234
Adds switches for genconf to set and unset a prefix for file names.
2235
(genconf.c)
2236
 
2237
</pre><h3><a name="V4.40_Drivers"></a>Drivers</h3><pre>
2238
 
2239
Adds recognition of the new Distiller 3.0 parameters to the PDF writer.
2240
(None of them have any effect yet.)  (gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c,
2241
gdevpdfp.c)
2242
 
2243
Converts all the output functions in the PDF writer from being file-based to
2244
using streams, in anticipation of adding compression.  (gdevpdfs.h,
2245
gdevpdfx.h, gdevpdf*.c, gdevpdfs.c)
2246
 
2247
</pre><h3><a name="V4.40_Interpreter"></a>Interpreter</h3><pre>
2248
 
2249
Adds operators for accessing the new accurate curves flag in the graphics
2250
state.  (zgstate.c)
2251
 
2252
Adds an operator for invoking gs_dashpath.  (zpath1.c)
2253
 
2254
</pre><h3><a name="V4.40_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2255
 
2256
Fixes bugs:
2257
	- Indexed color spaces whose base space was a CIE space caused an
2258
error.  (pdf_draw.ps)
2259
 
2260
</pre><h3><a name="V4.40_Library"></a>Library</h3><pre>
2261
 
2262
Fixes bugs:
2263
	- A pointer was declared const incorrectly.  (gxcpath.c)
2264
	- Filling with a pattern often failed to pass a non-null bitmap ID,
2265
causing excessive writing in the band list.  (Performance bug only.)
2266
(gspcolor.c)
2267
	- The bounding box device didn't discount copy_mono or draw_line
2268
operations drawing in white.  (gdevbbox.c)
2269
	- The bounding box device didn't read out the bounding box correctly
2270
as the PageBoundingBox device parameter.  (It did return it correctly
2271
through the gx_device_bbox_bbox procedure.)  (gdevbbox.c)
2272
	- The default implementation of fill_triangle drew nothing or
2273
incorrect output if the corners of the triangle were specified in certain
2274
orders (ax &lt; 0 or bx &lt; 0) (i.e., the previous "fix" had a bug).
2275
(gdevddrw.c)
2276
 
2277
Changes tile size from always being set in all bands to being 'known' by
2278
bands individually.  (gxclist.h, gxcldev.h, gxclbits.c, gxclist.c)
2279
 
2280
Computes an additional value in advance when rendering images.  (gximage.h,
2281
gximage1.c, gximage2.c)
2282
 
2283
Replaces some slow loops with calls of memmove.  (gxclmem.c)
2284
 
2285
Provides a fixed-point implementation of A * B / C for machines with slow
2286
floating point.  (gxfixed.h, gsmisc.c)
2287
 
2288
Extends the "device color" type to implement filling masked regions as well
2289
as rectangles.  (gxdcolor.h, gdevdflt.c, gspcolor.c, gxcht.c, gxdcolor.c,
2290
gxht.c)
2291
 
2292
Makes unclipped monobit portrait and landscape images and image masks use
2293
the new masked fill capability of device colors.  (gximage.h, gximage.c,
2294
gximage1.c, gximage2.c)
2295
 
2296
Adds a macro for determining pointer alignment.  (stdpre.h, gdevdflt.c)
2297
 
2298
When floating point is slow, uses a different, faster algorithm for
2299
gx_curve_x_at_y.  (gxpcopy.c)
2300
 
2301
Improves performance by adding a one-element cache for gx_curve_x_at_y.
2302
(gzpath.h, gxpcopy.c)
2303
 
2304
Reduces overhead when banded images are pre-rasterized (currently, always).
2305
(gxclimag.c)
2306
 
2307
Adds a rendering cost estimate field to each band in a band list.  This
2308
field isn't actually used for anything yet; eventually, the intent is that
2309
bands with a high cost will get rendered, and stored in compressed form,
2310
before starting the engine.  (gxclist.h)
2311
 
2312
Adds the concept of 'notes' for path segments, to allow remember what
2313
segments constitute a single curve or arc.  Currently we set these properly
2314
for everything except dashed paths.  (gxclpath.h, gxpath.h, gzpath.h,
2315
gspath1.c, gxclpath.c, gxclread.c, gxpath.c, gxpath2.c, gxpcopy.c)
2316
 
2317
When the dot length is non-zero, changes curve stroking to always use bevel
2318
joins within each curve rather than the current join.  This prevents a
2319
"bristly" look with no join and butt caps.  (gxstroke.c)
2320
 
2321
Adds an "accurate curves" capability that makes the last line segment of a
2322
flattened curve actually be tangent to the curve, which in turn makes
2323
flat-end caps be correctly perpendicular to the tangent.  (gxpath.h,
2324
gxpcopy.c)
2325
 
2326
Adds an "accurate curves" flag in the graphics state.  (gsline.h,
2327
gxclpath.h, gxistate.h, gsline.c, gspath.c, gspath1.c, gxclpath.c,
2328
gxclread.c, gxfill.c, gxstroke.c)
2329
 
2330
Changes the meaning of "no join" (gs_join_none) so that instead of producing
2331
no join and butt caps, it produces whatever the current cap is.  This is
2332
compatible with the H-P definition.  (gxstroke.c)
2333
 
2334
Implements non-zero dot length for dash patterns.  (gxpdash.c)
2335
 
2336
Splits off the curve flattening algorithms into a separate file.
2337
(gxpcopy.c, gxpflat.c)
2338
 
2339
</pre>
2340
 
2341
<hr>
2342
 
2343
<h2><a name="Version4.39"></a>Version 4.39 (limited) (1/1/97)</h2>
2344
 
2345
<p>
2346
This version was created only to accompany a release of the PCL XL
2347
interpreter.  It was withdrawn the day after it was released, because the
2348
tools used to produce it put the wrong files in the filesets.
2349
 
2350
<h3><a name="V4.39_Documentation"></a>Documentation</h3><pre>
2351
 
2352
Adds a more detailed description of the third-party ps_view viewer
2353
interface.  (new-user.txt)
2354
 
2355
Corrects an error in a reference to the PSLRM.  (lib.txt)
2356
 
2357
Documents the change in .makeoperator.  (language.txt)
2358
 
2359
Updates the FTP location of the zlib sources.  (zlib.mak)
2360
 
2361
</pre><h3><a name="V4.39_Procedures"></a>Procedures</h3><pre>
2362
 
2363
Fixes bugs:
2364
	- The Unix library makefile didn't include the necessary definitions
2365
for libpng and zlib.  (ugcclib.mak)
2366
 
2367
Allows selecting the compression filters for memory-based band lists in the
2368
makefile.  Makes zlib (deflate) the default compressor for memory-based band
2369
lists.  (lib.mak)
2370
 
2371
</pre><h3><a name="V4.39_Utilities"></a>Utilities</h3><pre>
2372
 
2373
Fixes bugs:
2374
	- prfont.ps wouldn't print unencoded characters in Type 42 fonts.
2375
(prfont.ps)
2376
 
2377
</pre><h3><a name="V4.39_Drivers"></a>Drivers</h3><pre>
2378
 
2379
Fixes bugs:
2380
	- The H-P monochrome driver didn't put out enough initialization
2381
commands at the beginning of each page to make each page printable
2382
independently.  (gdevdjet.c)
2383
 
2384
</pre><h3><a name="V4.39_Interpreter"></a>Interpreter</h3><pre>
2385
 
2386
Changes ref_stack_count_inline so it never does a procedure call.
2387
(istack.h)
2388
 
2389
Changes .makeoperator so that operator procedures save the stack depths, and
2390
restore the stack pointers (if possible) if the operator encounters an
2391
error.  This is a NON-BACKWARD-COMPATIBLE CHANGE; it requires rewriting the
2392
'stop' and 'stopped' pseudo-operators (and, if there were any, any other
2393
pseudo-operators that interact with the error handling machinery) in C.
2394
(gs_init.ps, interp.c, zcontrol.c)
2395
 
2396
Adds recognition of the LeadingEdge, MediaClass, and RollFedMedia keys in a
2397
page device dictionary, per the Adobe supplement for their version 2017
2398
interpreter.  This involves a NON-BACKWARD-COMPATIBLE change to the
2399
(undocumented) .matchpagesize operator.  (gs_setpd.ps, zmedia2.c)
2400
 
2401
Makes necessary changes for compatibility with the added parameters for the
2402
zlib filters.  (zfzlib.c)
2403
 
2404
</pre><h3><a name="V4.39_Streams"></a>Streams</h3><pre>
2405
 
2406
Fixes bugs:
2407
	- The zlib encoder returned EOFC when it should have returned 0.
2408
(szlibe.c)
2409
 
2410
Adds optional parameters and reset procedures for the zlib filters.
2411
(szlibx.h, szlibc.c, szlibd.c, szlibe.c)
2412
 
2413
</pre><h3><a name="V4.39_Library"></a>Library</h3><pre>
2414
 
2415
Fixes bugs:
2416
	- Displaying characters with a non-standard RasterOp could cause an
2417
invalid memory access.  (gdevdflt.c)
2418
	- Banding sometimes used an incorrect RasterOp.  (gxclread.c)
2419
	- When banding, mixing Patterns and halftones could confuse the
2420
bookkeeping of tile size, leading to incorrect generation of the band list
2421
and error messages or confusion when rasterizing.  (gxclist.h, gxclbits.c,
2422
gxclread.c)
2423
	- If only the dash pattern offset changed, and not any of the other
2424
dash-related parameters, the new offset wasn't written in the band list,
2425
causing incorrect output.  (gxclpath.c)
2426
	- Oversized halftone tiles didn't report their error code properly.
2427
(gxclbits.c)
2428
	- Oversized halftone tiles with RasterOp caused an error.
2429
(gxclist.c)
2430
	- When banding, RasterOp transfers that crossed a band boundary
2431
didn't access the correct source data on bands other than the first.
2432
(gxclist.c)
2433
	- There were redundant copies of the code for writing a RasterOp
2434
value in the band list.  (gxclimag.c, gxclpath.c)
2435
	- Oversized patterns or halftones produced garbled output.
2436
(gxclbits.c)
2437
	- The check for oversized patterns or halftones was slightly
2438
incorrect, leading to the possibility of writing out a tile that would
2439
overflow the reading buffer and corrupt memory.  (gxclbits.c)
2440
	- When banding, RasterOp wasn't applied to fill and stroke
2441
operations, and wasn't applied correctly to characters.  (gdevdflt.c,
2442
gxclimag.c, gxclread.c)
2443
	- The RasterOp-related optimizations for black-and-white images
2444
sometimes produced incorrect output.  (gximage.c, gximage2.c)
2445
	- The default implementation of fill_triangle didn't draw anything
2446
if the corners of the triangle were specified in certain orders (ax &lt; 0 or
2447
bx &lt; 0).  (gdevddrw.c)
2448
	- Painting with a Pattern could pass out-of-range phase values to
2449
driver procedures.  (gspcolor.c)
2450
	- Because of an off-by-1 error, halftones or patterns passed through
2451
the band list could write past the end of their allocated space in the band
2452
tile cache, leading to incorrect output or possible arithmetic exceptions or
2453
memory access errors.  (gsbitops.c)
2454
 
2455
Adds -Z: for printing only the minimal command list statistics.  (gxclist.c,
2456
gxclread.c)
2457
 
2458
Expands band list tracing so it includes all of the data associated with the
2459
command, not just the command name and a few command parameters.
2460
(gxclread.c)
2461
 
2462
Adds free lists for strings.  Currently these are only used in
2463
non-garbage-collected environments.  (gxalloc.h, gsalloc.c, gsnogc.c)
2464
 
2465
Adds a procedure for copying a path structure, and an (internal) accessor
2466
for the current path in the graphics state.  (gxpath.h, gspath.c, gxpath.c)
2467
 
2468
Speeds up filling characters with halftones a little bit.  (gdevdflt.c)
2469
 
2470
Changes the memory-based implementation of band lists so it can use any
2471
compression / decompression filter, so it only compresses when it has
2472
allocated a specified amount of buffer storage, and so it releases its
2473
buffer storage at the end of each page.  (gxclmem.h, gxclmem.c)
2474
 
2475
Speeds up counting the number of 1-bits in a byte, which is used in some
2476
image processing algorithms.  (gsbittab.h, gsbittab.c)
2477
 
2478
Reduces the band list space required for changing tile size.  (gxcldev.h,
2479
gxclbits.c, gxclread.c)
2480
 
2481
</pre>
2482
 
2483
<h2><a name="Version4.38"></a>Version 4.38 (limited) (12/20/96)</h2>
2484
 
2485
<p>
2486
Adds support for a couple of undocumented features in Type 1 fonts.
2487
 
2488
<h3><a name="V4.38_Interpreter"></a>Interpreter</h3><pre>
2489
 
2490
Adds handling of the Type 1 font subroutineNumberBias (an optional entry in
2491
the Private dictionary) and lenIV = -1 features at the interpreter level.
2492
(zchar1.c, zfont1.c)
2493
 
2494
</pre><h3><a name="V4.38_Streams"></a>Streams</h3><pre>
2495
 
2496
Fixes bugs:
2497
	- The CCITTFaxEncode filter could access as much as 3 bytes beyond
2498
the end of a buffer, causing an invalid memory access.  (scfe.c)
2499
 
2500
Changes the RunLengthDecode filter so it can make progress (produce output)
2501
with only a 1-byte output buffer.  (srlx.h, srld.c)
2502
 
2503
</pre><h3><a name="V4.38_Library"></a>Library</h3><pre>
2504
 
2505
Fixes bugs:
2506
	- The sine and cosine of multiples of 90 degrees weren't exact.
2507
(gxfarith.h, gsmisc.c)
2508
	- The expanded bounding box computation for strokes didn't take into
2509
account the possibility of overflow.  (gxstroke.c)
2510
	- The allocator didn't fill freed strings with the 'free' mark.
2511
(gsalloc.c)
2512
	- When using a pattern with RasterOp, the phase was computed
2513
incorrectly, leading to anomalous filling patterns.  (gspcolor.c)
2514
	- Patterns with a non-zero translation in the matrix passed to
2515
makepattern didn't translate the pattern origin properly.  (gxcolor2.h,
2516
gxpcolor.h, gspcolor.c)
2517
 
2518
Adds a subroutineNumberBias field to Type 1 fonts.  This is an undocumented
2519
feature of the Type 1 font format.  (gxfont1.h, gstype1.c)
2520
 
2521
Interprets lenIV = -1 in Type 1 fonts as meaning that the CharStrings are
2522
unencrypted.  This too is an undocumented feature of the Type 1 format.
2523
(gxfont1.h, gxtype1.h, gstype1.c, gstype2.c)
2524
 
2525
Changes gs_clippath so it returns more reasonable outlines.  (There are too
2526
many programs that rely on being able to stroke the result of clippath, even
2527
though both the Adobe and H-P literature specifically say the results are
2528
unpredictable.)  (gxcpath.h, gxcpath.c)
2529
 
2530
</pre>
2531
 
2532
<h2><a name="Version4.37"></a>Version 4.37 (limited) (12/10/96)</h2>
2533
 
2534
<p>
2535
This version implements separate halftone phase for source and texture,
2536
required for PCL XL implementation.
2537
 
2538
<h3><a name="V4.37_Fonts"></a>Fonts</h3><pre>
2539
 
2540
Fixes bugs:
2541
	- Loading a native TrueType font without a 'post' table caused an
2542
error.  (gs_ttf.ps)
2543
 
2544
</pre><h3><a name="V4.37_Interpreter"></a>Interpreter</h3><pre>
2545
 
2546
Extends the interpreter to handle the new separate halftone phases for the
2547
RasterOp source and texture.  (gs_dps1.ps, zdps1.c)
2548
 
2549
Makes a small change to accommodate a library change supporting Type 2
2550
charstrings.  (zfont1.c)
2551
 
2552
</pre><h3><a name="V4.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2553
 
2554
Implements the FontFile2 key for embedded TrueType fonts.  (pdf_font.ps)
2555
 
2556
Starts to implement the FontFile3 key for compressed Type 1 fonts.  This
2557
code is currently disabled, because none of the necessary underlying C is
2558
written yet.  (pdf_font.ps)
2559
 
2560
</pre><h3><a name="V4.37_Library"></a>Library</h3><pre>
2561
 
2562
Fixes bugs:
2563
	- The floating point emulator often returned incorrect results (too
2564
many bugs to list).  (This is not used in any standard configuration.)
2565
(gsfemu.c)
2566
	- The new copy_for procedure for gstates incorrectly declared an
2567
argument as const.  (gxstate.h, gsstate.c)
2568
	- If a curve had to be split twice along the same axis to make it
2569
monotonic, the split points could still be returned in the wrong order,
2570
possibly causing curved edges to turn into straight lines, and the algorithm
2571
still produced the wrong results if the curve had to be split twice along a
2572
single axis.  This is the second time we have "fixed" these problems and the
2573
4th time we have "fixed" the curve monotonizing algorithm.  (gxpcopy.c)
2574
	- Setting halftones cause a memory leak, because the subsidiary
2575
objects of the device halftone weren't freed properly.  Fixing this required
2576
changing the graphics state implementation from allocating a device halftone
2577
for each gstate to managing the device halftone with reference counting.
2578
(gxdht.h, gzstate.h, gsht.c, gsstate.c)
2579
 
2580
Provides an optimized version of ldexp for FPU-less configurations, and
2581
changes one key algorithm to use it.  (gxfixed.h, gsmisc.c, gxpcopy.c)
2582
 
2583
Speeds up imagemask with a halftone a little.  (This will eventually require
2584
more serious optimization.)  (gximage2.c)
2585
 
2586
Adds a -Z* switch for tracing varieties of image rendering.  (gximage.c)
2587
 
2588
Recognizes that if the logical operation is equivalent to D = S (after
2589
accounting for a constant texture, if any), or if it is equivalent to D = ~S
2590
or D = D {&amp;,|}{S,~S} and D and S are both monobit and both colors are pure,
2591
imaging with RasterOp can be executed without invoking RasterOp.  (gsropt.h,
2592
gximage.c)
2593
 
2594
Makes coordinate transformations with landscape matrices execute as fast as
2595
with portrait matrices.  (gxmatrix.h, gscoord.c, gsmatrix.c)
2596
 
2597
Adds some sketch code for interpreting Type 2 charstrings.  It compiles, but
2598
it makes no pretense of being runnable.  (gstype1.h, gxop1.h, gxtype1.h,
2599
gstype2.h, gxfont1.h, gstype1.c, gstype2.c)
2600
 
2601
Extends the library to allow setting separate halftone phases for the
2602
RasterOp source and texture, which is needed to implement halftone screens
2603
that behave like those in H-P's PCL XL printers.  (gscsel.h, gsstate.h,
2604
gxcmap.h, gxcspace.h, gxdcolor.h, gxdither.h, gxpcolor.h, gzht.h, gzstate.h,
2605
gscie.c, gscsepr.c, gsht.c, gspcolor.c, gxcht.c, gxcmap.c, gxdcolor.c,
2606
gxht.c, gximage.c, gximage[2345].c, gspcmap.c) ****** STILL NEED TO UPDATE
2607
BANDING CODE, grep FOR phase ******
2608
 
2609
Removes the rc_header member from the gs_halftone structure, since we don't
2610
need it after all.  (gxht.h)
2611
 
2612
</pre>
2613
 
2614
<h2><a name="Version4.36"></a>Version 4.36 (limited) (12/3/96)</h2>
2615
 
2616
<p>
2617
This version fixes a number of library bugs related to RasterOp, Patterns,
2618
and memory management.
2619
 
2620
<h3><a name="V4.36_Documentation"></a>Documentation</h3><pre>
2621
 
2622
Changes the definition of texture transparency to match the peculiar H-P
2623
specification.  (drivers.txt, language.txt)
2624
 
2625
</pre><h3><a name="V4.36_Drivers"></a>Drivers</h3><pre>
2626
 
2627
Fixes bugs:
2628
	- x_get_bits didn't flush updates to the frame buffer, leading to
2629
possibly incorrect data being returned.  (gdevx.c)
2630
	- x_get_bits added padding to the scan line being copied, possibly
2631
corrupting memory.  (gdevx.c)
2632
 
2633
Changes the x11mono driver to define white = 0, black = 1 to more closely
2634
model black-and-white printers.  (This is an internal change that doesn't
2635
affect the output.)  (gdevxalt.c)
2636
 
2637
</pre><h3><a name="V4.36_Interpreter"></a>Interpreter</h3><pre>
2638
 
2639
Removes some code that is no longer needed, by virtue of the fix for the
2640
memory leak in Pattern remapping.  (zpcolor.c)
2641
 
2642
</pre><h3><a name="V4.36_Library"></a>Library</h3><pre>
2643
 
2644
Fixes bugs:
2645
	- Patterns wider than 1024 bits caused a rangecheck.  (gxclip2.h,
2646
gxclip2.c)
2647
	- Dash patterns never got freed.  The fix for this slows down gsave
2648
and grestore slightly, but we don't see any way around it.  (gsline.c,
2649
gsstate.c)
2650
	- If the CTM was very non-uniform in X and Y, stroke sometimes
2651
didn't recognize thin lines as being thin, leading to dropouts.
2652
(gxstroke.c)
2653
	- RasterOps that didn't use S or T still took S or T transparency
2654
into account.  (gdevmrop.c)
2655
	- RasterOps with no source didn't handle the possibility that the
2656
device color for black might have a value other than 0.  (gxdcolor.h,
2657
gspcolor.c, gxcht.c, gxdcolor.c, gxht.c)
2658
	- White pixels in halftones on black-and-white devices apparently
2659
are *not* supposed to be treated as opaque for RasterOp.  (gxcht.c, gxht.c)
2660
	- clippath caused memory to be lost until a restore or a garbage
2661
collection.  (gspath.c)
2662
	- Clipping lists weren't ever freed, and clipping paths sometimes
2663
weren't freed, causing memory to be lost until a restore or a garbage
2664
collection.  (gzacpath.h, gxacpath.c, gxcpath.c)
2665
	- Freeing a pattern instance referenced a pointer after it had been
2666
freed, causing an invalid memory access.  (gspcolor.c)
2667
	- Remapping a Pattern color lost track of the temporary gstate,
2668
memory devices, and possibly the mask, causing memory to be lost until a
2669
restore or GC.  (gxpcolor.h, gxpcmap.c)
2670
	- Remapping a Pattern color could cause paths to be marked as
2671
shared, preventing them from being freed until a restore or GC.  (gxpcmap.c)
2672
 
2673
Enhances the non-tracing garbage collector so that if there are no strings
2674
allocated at all, it resets the string allocation pointers.  (gsnogc.c)
2675
 
2676
Optimizes the black-and-white RasterOp implementation by recognizing cases
2677
that can be implemented directly by fill_rectangle, copy_mono, or
2678
tile_rectangle.  (gdevmrop.h, gsropt.h, gdevmrop.c, gsroptab.c)
2679
 
2680
Changes -ZA so it no longer produces [P] tracing messages for path
2681
construction.  (gxpath.c)
2682
 
2683
Adds a gx_pattern_cache_winnow procedure for selectively removing entries
2684
from the Pattern cache, similar to gx_purge_selected_cached_chars.
2685
(gscolor2.h, gxpcolor.h, gxpcmap.c)
2686
 
2687
Adds the Pattern UID to Pattern cache entries.  (gxpcolor.h, gxpcmap.c)
2688
****** MUST HANDLE XUID POINTERS ON GC (RELOC) &amp; RESTORE (CLEAR LIKE HT
2689
CACHE) ******
2690
 
2691
Makes gs_gstate free the path representation of the clipping path if it's a
2692
rectangle, since reconstructing it is cheap and otherwise the path segments
2693
would not be freeable until a restore or GC.  (gsstate.c)
2694
 
2695
Extends the "client data" interface for gstates so that the copy procedure
2696
can determine why it is being called.  (gxstate.h, gsstate.c)
2697
 
2698
</pre>
2699
 
2700
<h2><a name="Version4.35"></a>Version 4.35 (limited) (11/24/96)</h2>
2701
 
2702
<p>
2703
This contains the usual bug fixes, and two minor enhancements: an option for
2704
handling EPSF files with binary headers, and support for file-based
2705
resources.
2706
 
2707
<h3><a name="V4.35_Documentation"></a>Documentation</h3><pre>
2708
 
2709
Documents the new EPSF-reading capability.  (gs.mak)
2710
 
2711
</pre><h3><a name="V4.35_Procedures"></a>Procedures</h3><pre>
2712
 
2713
Fixes bugs:
2714
	- Some obsolete definitions were accidentally left in the rules for
2715
compiling fonts into the executable.  (int.mak)
2716
 
2717
</pre><h3><a name="V4.35_Interpreter"></a>Interpreter</h3><pre>
2718
 
2719
Fixes bugs:
2720
	- initgraphics left the current color space in an inconsistent
2721
state.  (bug introduced in 4.32) (zgstate.c)
2722
	- restore didn't properly rebind FontDirectory to either Local or
2723
SharedFontDirectory according to the current VM selection.  (gs_dps1.ps)
2724
	- If FontDirectory was redefined, many things broke.  (gs_ccfnt.ps,
2725
gs_dps1.ps, gs_fonts.ps, gs_pdfwr.ps)
2726
	- If a resource provided a file name but the file couldn't be
2727
opened, an error occurred.  (gs_res.ps)
2728
	- flushfile didn't work with procedure-based streams.  (zfileio.c)
2729
 
2730
Adds a feature (epsf.dev) that allows the interpreter to recognize and
2731
handle MS-DOS EPSF files with a binary header.  (int.mak, gs_epsf.ps,
2732
gs_init.ps, pdf_main.ps)
2733
 
2734
Adds (internal) .getuserparam and .getsystemparam operators for getting the
2735
value of a single user or system parameter.  (gs_lev2.ps, zusparam.c)
2736
 
2737
To support file-based resources, implements the FontResourceDir,
2738
GenericResourceDir, and GenericResourcePathSep system parameters, and
2739
ResourceFileName for the built-in resource categories.  (gs_init.ps,
2740
gs_lev2.ps, gs_res.ps)
2741
 
2742
</pre><h3><a name="V4.35_Streams"></a>Streams</h3><pre>
2743
 
2744
Fixes bugs:
2745
	- The 2-D CCITTFaxDecode filter became confused if a buffer boundary
2746
fell between a horizontal make-up code and its terminating code, typically
2747
causing an ioerror.  (scfd.c)
2748
 
2749
</pre><h3><a name="V4.35_Library"></a>Library</h3><pre>
2750
 
2751
Fixes bugs:
2752
	- Using the null color could confuse the reference counts for color
2753
spaces, causing memory access errors.  (gscolor.c)
2754
	- Images with CombineWithColor = true caused memory access error,
2755
because a structure element wasn't initialized.  (gdevmrop.c)
2756
	- gs_setnullcolor tried to return an error code, even though it was
2757
declared as returning void.  (Why doesn't gcc catch this??)  (gscolor.h,
2758
gscolor.c)
2759
	- gs_setnullcolor was declared inconsistently as taking a const or
2760
non-const argument.  (gscolor.h)
2761
	- Small color tiles in the band list were not read in correctly.
2762
(gxclread.c)
2763
	- The band list could get confused, causing ioerrors, invalid memory
2764
accesses, or garbled output, because the algorithms for computing the size
2765
of bitmaps when writing and when reading had gotten inconsistent.  This code
2766
has been broken and "fixed" at least 4 or 5 times.  (gxcldev.h, gxclbits.c,
2767
gxclread.c)
2768
	- When using banding, characters that extended off the page
2769
vertically in the -Y direction came out garbled.  (gxclimag.c)
2770
	- The bounding box device didn't compute the box correctly for
2771
trapezoids.  (gdevbbox.c)
2772
	- The fastest case of rendering monochrome images could cause
2773
unaligned data accesses.  (bug introduced recently.)  (gximage.h,
2774
gximage1.c)
2775
	- TrueType characters with no contours could cause an invalid memory
2776
access.  (gstype42.c)
2777
	- Composite TrueType characters weren't rendered properly.
2778
(gstype42.c)
2779
 
2780
Adds a get_outline procedure to the Type 42 font header, to provide a
2781
callback for getting the outline data for a glyph.  (gxfont42.h, gstype42.c)
2782
 
2783
</pre>
2784
 
2785
<h2><a name="Version4.34"></a>Version 4.34 (limited) (11/18/96)</h2>
2786
 
2787
<p>
2788
This release adds a little more support for CID-keyed fonts and for PCL
2789
emulation, and a bit more of the machinery for passing images through the
2790
band list.
2791
 
2792
<h3><a name="V4.34_Documentation"></a>Documentation</h3><pre>
2793
 
2794
Fixes bugs:
2795
	- The RasterOp source device wasn't listed as an internal device in
2796
drivers.txt.  (drivers.txt)
2797
 
2798
Corrects a statement regarding the pstotext license.  (new-user.txt)
2799
 
2800
</pre><h3><a name="V4.34_Procedures"></a>Procedures</h3><pre>
2801
 
2802
Fixes bugs:
2803
	- The Watcom makefile for the library didn't work properly if
2804
certain variables were overridden from the command line.  (watclib.mak)
2805
	- The library code inadvertently depended on an interpreter header
2806
file.  (*.mak)
2807
 
2808
</pre><h3><a name="V4.34_Drivers"></a>Drivers</h3><pre>
2809
 
2810
Fixes bugs:
2811
	- Some very picky compilers complained about assigning 0 to a
2812
variable of an enum type.  (gdevpdfx.h, gdevpdf.c)
2813
 
2814
</pre><h3><a name="V4.34_Interpreter"></a>Interpreter</h3><pre>
2815
 
2816
Fixes bugs:
2817
	- Some very picky compilers didn't like a cast from a pointer type
2818
to an int type.  (idebug.c)
2819
	- Some very picky (and non-ANSI-compliant) compilers didn't allow
2820
assigning an int to a variable of enumerated type.  (zfont2.c, zht2.c)
2821
	- The library code inadvertently depended on an interpreter header
2822
file.  (iref.h)
2823
 
2824
Restructures the font building code slightly to support CID fonts better.
2825
(gs_cidfn.ps, bfont.h, zcid.c, zfont0.c, zfont1.c, zfont2.c, zfont42.c)
2826
 
2827
Adds a .setcurrentfile operator to allow disk-based fonts to keep their file
2828
open.  (gs_cidfn.ps, zcontrol.c)
2829
 
2830
</pre><h3><a name="V4.34_Streams"></a>Streams</h3><pre>
2831
 
2832
Fixes bugs:
2833
	- Some very picky compilers didn't like the computation (const byte
2834
*)0 - 1.  (stream.c)
2835
	- A cast to ulong was omitted.  (smtf.c)
2836
	- Some compilers got confused by typedefs in the zlib header files.
2837
(szlibd.c, szlibe.c)
2838
 
2839
</pre><h3><a name="V4.34_Library"></a>Library</h3><pre>
2840
 
2841
Fixes bugs:
2842
	- A header file didn't select the proper system header on all POSIX
2843
systems.  (malloc_.h)
2844
	- A subclass/superclass type discrepancy upset some compilers.
2845
(gsline.h, gsline.c, gxpdash.c)
2846
	- Some very picky compilers didn't accept the previous definition of
2847
the offset_of macro.  (stdpre.h)
2848
	- Some very picky (and non-ANSI-compliant) compilers didn't like
2849
mixing int and enumerated types.  (gsropt.h, gzstate.h, gdevmrop.c,
2850
gdevrrgb.c, gsrop.c, gxclist.c)
2851
	- A cast was missing.  (gslib.c)
2852
	- The gs_setxxxtransparent procedures interpreted their argument
2853
backwards (i.e., as "opaque" rather than "transparent").  (gsrop.c)
2854
	- Intersecting clipping paths didn't reset the logical operation to
2855
the default, causing a possible crash.  (gsrop.h, gsrop.c, gxacpath.c)
2856
	- Pattern accumulation didn't reset the logical operation to the
2857
default, possibly causing incorrect output.  (gspcolor.c)
2858
	- If a Type 1 character ended with a curve and a closepath, a
2859
microscopic line could result, causing output anomalies.  (gstype1.c)
2860
	- Stroking a path with a mix of thin and non-thin lines could cause
2861
extraneous lines to appear.  (gxstroke.c)
2862
	- Zero-width rectangles were painted even when fill adjustment was
2863
turned off.  (gxpaint.c, gxstroke.c)
2864
	- The algorithm for dividing a curve into monotonic pieces could
2865
produce incorrect results, causing anomalies when filling curved regions
2866
with zero fill adjustment.  (gxpcopy.c)
2867
	- The algorithms for outside clipping were wrong, causing some
2868
inside regions not to be clipped.  (gxcpath.c)
2869
	- The white pixels in halftones weren't treated as unconditionally
2870
opaque for RasterOp.  (gxht.c, gxcht.c)
2871
	- Images with RasterOp didn't work properly.  (gdevmrop.c,
2872
gximage[2345].c, gxpcmap.c)
2873
	- The library code inadvertently depended on an interpreter header
2874
file.  (gxalloc.h, genarch.c)
2875
	- An important optimization for stroking (recognizing portrait,
2876
landscape, and unscaled CTMs) was commented out.  WE DON'T HAVE ANY RECORD
2877
OF WHY WE DID THIS, AND RESTORING IT MAY INTRODUCE NEW BUGS.  (gxstroke.c)
2878
	- Bitmap images with non-zero data_x values were passed through the
2879
band list incorrectly, possibly causing vertical "streaks" in the output.
2880
(gxcldev.h, gxclread.c)
2881
	- If a curve had to be split twice along the same axis to make it
2882
monotonic, the split points were returned in the wrong order, possibly
2883
causing curved edges to turn into straight lines.  (gxpcopy.c)
2884
 
2885
Changes the debugging printout format for paths so the output can be
2886
processed mechanically more easily.  (gxpath.c)
2887
 
2888
Adds gs_glyphpath, like charpath but taking a glyph rather than a string of
2889
character codes.  (gschar.h, gschar.c)
2890
 
2891
Adds an internal concept of a "null color", a color that doesn't actually
2892
mark any pixels.  (gscolor.h, gsdcolor.h, gxdcolor.h, gscolor.c, gxdcolor.c)
2893
 
2894
Takes the next incremental steps towards passing images through the band
2895
list:
2896
	- Implements the ability to pass some color mapping information
2897
(transfer functions, black generation, undercolor removal) through the band
2898
list.  (gxclist.h, gxclimag.c, gxclist.c, gxclread.c)
2899
 
2900
</pre>
2901
 
2902
<h2><a name="Version4.33"></a>Version 4.33 (limited) (11/6/96)</h2>
2903
 
2904
<p>
2905
This release fixes yet another obscure bug in the recently rewritten fast
2906
loops for image rendering.  (These loops have caused more problems than any
2907
other single module of the entire library.)  It also adds preliminary
2908
support for CID-keyed fonts (CIDFonts only, not CMaps yet) and some library
2909
extensions for supporting HP-GL/2.
2910
 
2911
<h3><a name="V4.33_Documentation"></a>Documentation</h3><pre>
2912
 
2913
Adds considerable new material to the C style document.  (c-style.txt)
2914
 
2915
Changes -cckr to -ansi in the SGI build procedure.  (make.txt)
2916
 
2917
Corrects an error in the description of the .type42execchar operator.
2918
(gs_typ42.ps)
2919
 
2920
</pre><h3><a name="V4.33_Procedures"></a>Procedures</h3><pre>
2921
 
2922
Fixes bugs:
2923
	- The 'man' pages were installed in the documentation directory as
2924
well as in the man directory.  (unix-end.mak)
2925
 
2926
</pre><h3><a name="V4.33_Interpreter"></a>Interpreter</h3><pre>
2927
 
2928
Adds support for CID-keyed fonts.  There is no CMap support yet, and some
2929
things are done with hacks.  (int.mak, gs_cidfn.ps, gs_cmap.ps, ichar.h,
2930
zchar.c, zchar2.c, zchar42.c, zfont2.c, zfont42.c, zcid.c)
2931
 
2932
Adds operators for accessing the new dash adaptation and dot length
2933
parameters in the graphics state.  (gs_init.ps, zgstate.c)
2934
 
2935
</pre><h3><a name="V4.33_Library"></a>Library</h3><pre>
2936
 
2937
Fixes bugs:
2938
	- The fast case of monobit image rendering could overwrite memory.
2939
(gximage1.c)
2940
	- The new fast implementation of rectfill didn't check for
2941
fixed-point overflow.  (gsdps1.c)
2942
	- Internally, fonts with no name all appeared to have the same name,
2943
possibly confusing the xfont machinery.  (gxccman.c)
2944
	- A cast to remove const was omitted, upsetting some compilers.
2945
(gximage1.c)
2946
	- The driver's stroke_path routine was not called if the logical
2947
operation was not the default one.  (gxpaint.c)
2948
 
2949
Adds support for CID-keyed fonts.  (gsccode.h, gxfont.h)
2950
 
2951
Adds a new "dash pattern adaptation" flag in the imager state.  When this
2952
flag is set and a dash pattern is in effect, each line segment will receive
2953
an integral number of repetitions of the dash pattern (if necessary, rounded
2954
up).  (gsline.h, gxline.h, gsline.c, gsstate.c, gxpdash.c)
2955
 
2956
Adds a new "dot length" parameter to the imager state.  If this parameter is
2957
non-zero, it gives a length for rendering dots (zero-length lines).  See
2958
language.txt for details.  (gsline.h, gxline.h, gsline.c, gsstate.c,
2959
gxstroke.c)
2960
 
2961
Extends band lists so they can handle dash pattern adaptation and dot
2962
length.  (gxcldev.h, gxclpath.h, gxclpath.c, gxclread.c)
2963
 
2964
Adds a floating point emulator to allow more realistic profiling of
2965
configurations without a FPU.  (gsfemu.c)
2966
 
2967
</pre>
2968
 
2969
<h2><a name="Version4.32"></a>Version 4.32 (limited) (11/1/96)</h2>
2970
 
2971
<p>
2972
This fixes a couple more bugs, most notably the infamous "pixel stripe" bug.
2973
 
2974
<h3><a name="V4.32_Documentation"></a>Documentation</h3><pre>
2975
 
2976
Fixes bugs:
2977
	- The documentation said that Ghostscript could not interpret
2978
encrypted PDF files.  (language.txt)
2979
	- A number of Ghostscript's extensions to the PostScript language
2980
were missing.  (language.txt)
2981
 
2982
</pre><h3><a name="V4.32_Drivers"></a>Drivers</h3><pre>
2983
 
2984
Fixes bugs:
2985
	- A compiler complained about initializing an unsigned variable with
2986
a negative value.  (gdevx.c)
2987
	- An off-by-1 allocation error could cause memory overwriting.
2988
(gdevepsc.c)
2989
 
2990
</pre><h3><a name="V4.32_Platforms"></a>Platforms</h3><pre>
2991
 
2992
Declares a pointer 'const' that is actually only used for reading.
2993
(gp_unifs.c)
2994
 
2995
</pre><h3><a name="V4.32_Fonts"></a>Fonts</h3><pre>
2996
 
2997
Fixes bugs:
2998
	- The code for adding nominal UnderlinePosition and
2999
UnderlineThickness entries to FontInfo assumed (incorrectly) that all Type 1
3000
fonts had FontBBox entries.  (gs_type1.ps)
3001
 
3002
Brings CIDFont support closer to reality.  It doesn't work yet, though.
3003
(gs_cidfn.ps, gs_fonts.ps, gs_init.ps, gs_res.ps, gs_typ42.ps)
3004
 
3005
</pre><h3><a name="V4.32_Interpreter"></a>Interpreter</h3><pre>
3006
 
3007
Removes a redundant implementation of initgraphics.  (gs_init.ps)
3008
 
3009
Speeds up rectfill a little for the common case (4 numbers on the stack).
3010
(zdps1.c)
3011
 
3012
</pre><h3><a name="V4.32_Library"></a>Library</h3><pre>
3013
 
3014
Fixes bugs:
3015
	- Zero-width, 1-bit-deep, landscape or portrait images could
3016
overwrite memory ad lib.  (gximage1.c)
3017
	- A procedure was declared 'static' inconsistently, upsetting many
3018
compilers (but not gcc, which, in contradiction to the ANSI standard,
3019
doesn't check this properly).  (gxcpath.c)
3020
	- A local variable was initialized with a value computed from a
3021
variable that hadn't been set yet, leading to possibly incorrect coloring of
3022
the first run of pixels in images with 12 bits per sample.  (gximage4.c)
3023
	- A compiler complained about initializing an unsigned variable with
3024
a negative value.  (shcgen.c)
3025
	- A rounding problem could produce a vertical stripe of 1 (or on
3026
very large images possibly more) incorrect pixels at the right edge of a
3027
1-bit-deep image.  (gxdda.h, gximage1.c)
3028
 
3029
Speeds up gs_rectfill substantially for the portrait/landscape case with a
3030
rectangular clipping region.  (gsdps1.c)
3031
 
3032
Adds a parameter so we can include gx_line_params in subclasses.  (gzline.h)
3033
 
3034
</pre>
3035
 
3036
<h2><a name="Version4.31"></a>Version 4.31 (limited) (10/27/96)</h2>
3037
 
3038
<p>
3039
This is primarily a bug fix release for 4.30, which we had hoped wouldn't be
3040
necessary....
3041
 
3042
<h3><a name="V4.31_Documentation"></a>Documentation</h3><pre>
3043
 
3044
Fixes bugs:
3045
	- The comment describing the order of coefficients in a CTM written
3046
on the band list was wrong.  (gxclpath.h)
3047
 
3048
</pre><h3><a name="V4.31_Procedures"></a>Procedures</h3><pre>
3049
 
3050
Fixes bugs:
3051
	- bug-form.txt wasn't installed by 'make install'.  (unix-end.mak)
3052
	- The default flags in ugcclib.mak didn't take the gcc code
3053
generation bug into account.  (ugcclib.mak)
3054
 
3055
</pre><h3><a name="V4.31_Platforms"></a>Platforms</h3><pre>
3056
 
3057
Fixes bugs:
3058
	- MetroWerks CodeWarrior predefines true and false, causing
3059
compilation errors on the Mac.  (stdpre.h)
3060
 
3061
</pre><h3><a name="V4.31_Interpreter"></a>Interpreter</h3><pre>
3062
 
3063
Updates code for the change in the ENUM_PTR macros.  (iscan.c)
3064
 
3065
Changes the allocator to keep track of "lost" ref space separately, to allow
3066
an independent check on its activities.  (gxalloc.h, ialloc.c, isave.c)
3067
 
3068
Changes the garbage collector API slightly to allow implementation of the
3069
API in applications other than PostScript interpreters.  (ivmspace.h,
3070
ireclaim.c, igc.c)
3071
 
3072
</pre><h3><a name="V4.31_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3073
 
3074
Implements the PDF 1.1 BX and EX operators.  (pdf_base.ps, pdf_main.ps)
3075
 
3076
</pre><h3><a name="V4.31_Streams"></a>Streams</h3><pre>
3077
 
3078
Fixes bugs:
3079
	- Some (harmless) pointer incompatibilities upset some compilers.
3080
(szlibd.c, szlibe.c)
3081
 
3082
Updates code for the change in the ENUM_PTR macros.  (stream.c)
3083
 
3084
</pre><h3><a name="V4.31_Library"></a>Library</h3><pre>
3085
 
3086
Fixes bugs:
3087
	- A label in the ENUM_PTR procedure generating macros was often not
3088
referenced, leading to compiler warnings.  (gsstruct.h, gxxfont.h,
3089
gdevmem.c, gschar.c, gscolor2.c, gsdevice.c, gsfont0.c, gsht.c, gsstate.c,
3090
gxcpath.c, gximage.c)
3091
	- Using the gstate version of setflat rather than the imager version
3092
caused compiler warnings (and, in some cases, errors).  (gstype1.c)
3093
	- Non-standard ImageMatrix values for banded images didn't work.
3094
(This wasn't actually used.)  (gxclread.c)
3095
	- imagemask with a halftone and portrait orientation colored some
3096
inappropriate pixels.  (bug introduced in 4.30) (gximage2.c)
3097
	- When banding, if a character straddled a band boundary the first
3098
time it occurred, all occurrences of it were clipped.  (bug introduced in
3099
4.2x or 4.30) (gxclimag.c)
3100
	- Degenerate clipping rectangles sometimes got turned into
3101
non-degenerate ones by swapping the min and max coordinates.  (gxcpath.c)
3102
	- Resizing an object either allocated a new object unnecessarily
3103
(performance bug only), or in very rare cases could corrupt memory.
3104
(gsalloc.c)
3105
	- Very small objects didn't get put on a free list when freed.
3106
(Performance bug only.) (gsalloc.c)
3107
	- Some pointers were incorrectly declared 'const', upsetting some
3108
compilers.  (gxclread.c)
3109
 
3110
Adds more tracing output for -ZL.  (gxclread.c)
3111
 
3112
Changes the -Za tracing output slightly to aid mechanical analysis of
3113
allocation traces: allocation events now always include a '+', deallocation
3114
events always include a '-', and the address is always the address of the
3115
object data and not the header.  (gsalloc.c, gsmemory.c)
3116
 
3117
Changes the allocator to keep track of "lost" object and string space
3118
separately, to allow an independent check on its activities.  (gxalloc.h,
3119
gsalloc.c)
3120
 
3121
Changes the allocator to use 'memmove' in an obvious place.  (gsalloc.c)
3122
 
3123
Provides a garbage collector API at the library level to allow
3124
implementation of the API in applications other than PostScript
3125
interpreters.  (gsgc.h)
3126
 
3127
</pre>
3128
 
3129
<h2><a name="Version4.30"></a>Version 4.30 (limited) (10/23/96)</h2>
3130
 
3131
<p>
3132
The main purpose of this release is to implement a substantial change in the
3133
"high level" image API, after which we believe this API will be stable.
3134
 
3135
<h3><a name="V4.30_Documentation"></a>Documentation</h3><pre>
3136
 
3137
Documents the changes in the begin_image and image_data device procedures.
3138
(drivers.txt)
3139
 
3140
</pre><h3><a name="V4.30_Drivers"></a>Drivers</h3><pre>
3141
 
3142
Speeds up the PDF writer a little by reducing the amount of allocation,
3143
which was causing very frequent garbage collections.  (gs_pdfwr.ps,
3144
gdevpdft.c)
3145
 
3146
Updates the PDF writer for the change in begin_image/image_data.
3147
(gdevpdfi.c)
3148
 
3149
</pre><h3><a name="V4.30_Platforms"></a>Platforms</h3><pre>
3150
 
3151
Fixes bugs:
3152
	- Some versions of the SGI IRIX compiler have a bug that causes them
3153
to try to expand macros that require arguments even when the macro name
3154
isn't followed by a left parenthesis.  (gdevsgi.h, gdevsgi.c)
3155
	- The IBM RS6000 compilers now provide &lt;stdlib.h&gt;, so our
3156
definitions of malloc and free caused a conflict.  (malloc_.h)
3157
 
3158
</pre><h3><a name="V4.30_Fonts"></a>Fonts</h3><pre>
3159
 
3160
Fixes bugs:
3161
	- Many Fontmaps included obsolete references to an old
3162
Helvetica-Narrow font.  (Fontmap.*)
3163
 
3164
Makes the GS_FONTPATH directory scanner a little more liberal about what
3165
files it examines: it will now examine any file whose first line begins with
3166
%!PS-Adobe or %!FontType.  (gs_fonts.ps)
3167
 
3168
To match an apparent Adobe convention, augments findfont so that if a font
3169
isn't in the Fontmap, it will try to load a file whose name is the same as
3170
the font name.  (gs_fonts.ps)
3171
 
3172
To make some questionable Apple font inquiry code work, augments the
3173
FAKEFONTS facility so that it sets the FontType of fake fonts to 1.
3174
(gs_fonts.ps)
3175
 
3176
</pre><h3><a name="V4.30_Interpreter"></a>Interpreter</h3><pre>
3177
 
3178
Fixes bugs:
3179
	- .checkpassword, .putdeviceparams, .putdevparams, setsystemparams,
3180
and setuserparams didn't free the results byte array, causing a memory leak
3181
(until the next garbage collection).  (zdevice.c, ziodev.c, zusparam.c)
3182
 
3183
</pre><h3><a name="V4.30_Library"></a>Library</h3><pre>
3184
 
3185
Fixes bugs:
3186
	- The code for emulating floating point multiplication with
3187
conversion to fixed point didn't detect overflow correctly, which could
3188
produce incorrect results instead of a limitcheck.  (gsmisc.c)
3189
	- A macro cast a pointer incorrectly, leading to spurious compiler
3190
warnings.  (gxfixed.h)
3191
	- The code for emulating fixed-to-float conversion computed the
3192
exponent incorrectly.  (gsmisc.c)
3193
	- The algorithm for advancing a DDA a given number of steps (not
3194
actually used anywhere before this version) was wrong.  (gxdda.h)
3195
	- The clipping box returned by clipping devices was incorrect,
3196
causing parts of the page to disappear.  (bug introduced in 4.20)
3197
(gxcpath.c)
3198
 
3199
Changes the begin_image and image_data device procedures:
3200
	- begin_image now takes an optional subrectangle instead of a set of
3201
shape flags.
3202
	- image_data now always takes complete rows of pixels, takes a
3203
source X offset, and returns 1 when it has received all the data.
3204
 
3205
The change in begin_image and image_data is a NON-BACKWARD-COMPATIBLE CHANGE
3206
IN A PUBLIC INTERFACE; however, this interface was still designated "subject
3207
to change", per the notes for release 3.67 and the documentation in
3208
drivers.txt.  (gsiparam.h, gxclpath.h, gxdda.h, gxdevice.h, gximage.h,
3209
gdevbbox.c, gdevnfwd.c, gsimage.c, gxclimag.c, gxclread.c, gximage.c,
3210
gximage?.c)
3211
 
3212
</pre>
3213
 
3214
<hr>
3215
 
3216
<h2><a name="Version4.21"></a>Version 4.21 (limited) (10/17/96)</h2>
3217
 
3218
<p>
3219
The purpose of this release is to fix bugs reported in 4.0x, 4.10, and 4.20.
3220
 
3221
<h3><a name="V4.21_Documentation"></a>Documentation</h3><pre>
3222
 
3223
Fixes bugs:
3224
	- The Ghostscript man page had a .TH in the middle.  (gs.1)
3225
 
3226
</pre><h3><a name="V4.21_Procedures"></a>Procedures</h3><pre>
3227
 
3228
Fixes bugs:
3229
	- The shared version of zlib was always called libgz; on most
3230
systems, it is now called libz (but not on Red Hat Linux, where libz is a
3231
library for dealing with time zones).  (*.mak, gs.mak, libpng.mak, zlib.mak)
3232
	- The pdf2dsc.1 man page wasn't installed on Unix systems.
3233
(unix-end.mak)
3234
	- font2c generated procedures named gsf_xxx, but genconf assumed
3235
they were named gs_f_xxx.  (int.mak)
3236
 
3237
</pre><h3><a name="V4.21_Drivers"></a>Drivers</h3><pre>
3238
 
3239
Updates the user-contributed LBP-8II driver to correct unspecified problems.
3240
(gdevlbp8.c)
3241
 
3242
Adds a user-contributed driver for Avance Logic SuperVGA cards.
3243
(gdevsvga.c, devs.mak)
3244
 
3245
</pre><h3><a name="V4.21_Platforms"></a>Platforms</h3><pre>
3246
 
3247
Fixes bugs:
3248
	- On Windows NT, a 32-bit parameter was truncated to 16 bits,
3249
preventing drawing of scroll bars of the image window when the window is
3250
uncovered.  (dwimg.cpp)
3251
 
3252
</pre><h3><a name="V4.21_Fonts"></a>Fonts</h3><pre>
3253
 
3254
Fixes bugs:
3255
	- The free URW Grotesk and Antiqua fonts were omitted from the
3256
distribution.
3257
 
3258
</pre><h3><a name="V4.21_Interpreter"></a>Interpreter</h3><pre>
3259
 
3260
Fixes bugs:
3261
	- Defining a new global instance of a built-in resource
3262
(ColorRendering, ColorSpace, Form, Halftone, Pattern, ProcSet) caused an
3263
invalidaccess error.  (gs_res.ps)
3264
	- pathbbox with no current path left an extra item on the stack when
3265
the error occurred.  (gs_init.ps)
3266
	- findresource for an undefined resource instance didn't preserve
3267
the contents of the stack.  (gs_res.ps)
3268
 
3269
Adds a new file providing a procedural interface with a very rudimentary
3270
form of job encapsulation.  (gserver.c)
3271
 
3272
Changes the initial value of MaxOpStack to 20000, for the sake of a few
3273
badly-behaved files.  (gs_init.ps, pdf_base.ps)
3274
 
3275
</pre><h3><a name="V4.21_Library"></a>Library</h3><pre>
3276
 
3277
Fixes bugs:
3278
	- If the image operators failed to allocated their bookkeeping
3279
structure, the result was a crash rather than VMerror.  (gximage.c)
3280
	- gx_default_fill_triangle (currently used only to implement the
3281
fastest case of stroke) had a typo that could cause a numeric exception or
3282
incorrect output, and another typo that could produce incorrect output.
3283
(gdevddrw.c)
3284
	- When banding, if the first occurrence of a character fell partly
3285
off the page, all occurrences of that character on the page could be clipped
3286
or mangled.  (gxclbits.c, gxclimag.c)
3287
	- When testing whether it's worthwhile compressing a bitmap for
3288
banding, the compressor was allowed to generate a lot more output than
3289
needed to make the test.  (gxclbits.c)
3290
	- Certain cases of unrotated gray-scale images dropped the first or
3291
last pixel of each scan line.  (gximage2.c)
3292
	- In rare cases, a run of pixels in a image could get erroneously
3293
displayed in the same color as the previous run, because of a cache
3294
bookkeeping bug.  (gximage3.c)
3295
	- The sample driver for the library had gotten inconsistent with a
3296
header file.  (gslib.c)
3297
	- A declaration was followed by an extraneous semicolon, which upset
3298
some compilers.  (gxht.h)
3299
	- Missing parentheses caused a test for thin lines to be incorrect.
3300
(gxstroke.c)
3301
 
3302
</pre>
3303
 
3304
<h2><a name="Version4.20"></a>Version 4.20 (limited) (10/13/96)</h2>
3305
 
3306
<p>
3307
This release has internal changes for future support of banded image
3308
processing, but no externally visible changes.  Its primary purpose is to
3309
incorporate speedups for clipped images.  It does *not* incorporate fixes
3310
for all problems reported in 4.0x or 4.10.
3311
 
3312
<h3><a name="V4.20_Documentation"></a>Documentation</h3><pre>
3313
 
3314
Documents the new get_clipping_box device procedure.  (drivers.txt)
3315
 
3316
</pre><h3><a name="V4.20_Procedures"></a>Procedures</h3><pre>
3317
 
3318
Fixes bugs:
3319
	- There were many, many minor inconsistencies between the makefiles
3320
and the source code.  (We finally have an automated tool to detect these.)
3321
(devs.mak, int.mak, lib.mak, unixtail.mak; gsutil.c, zwppm.c)
3322
	- Some makefile rules weren't properly terminated by a blank line.
3323
(lib.mak)
3324
 
3325
</pre><h3><a name="V4.20_Utilities"></a>Utilities</h3><pre>
3326
 
3327
Fixes bugs:
3328
	- The comments in gslp.ps had gotten out of date.  (gslp.ps)
3329
 
3330
Adds --no-eject-file and --no-eject-formfeed switches to gslp.ps, to allow
3331
packing files in multi-column printouts.  (gslp.ps)
3332
 
3333
</pre><h3><a name="V4.20_Drivers"></a>Drivers</h3><pre>
3334
 
3335
Adds a user-contributed driver for the Epson LP-8000 laser printer.
3336
(gdevlp8k.c)
3337
 
3338
Adds a DisplayMode parameter to the vgalib device.  (gdevvglb.c)
3339
 
3340
Removes the requirement of typing a character at the end of each page using
3341
the vgalib driver.  THIS IS A USER-VISIBLE, NON-BACKWARD-COMPATIBLE CHANGE.
3342
(gdevvglb.c)
3343
 
3344
</pre><h3><a name="V4.20_Interpreter"></a>Interpreter</h3><pre>
3345
 
3346
Updates code to accommodate the new get_clipping_box device procedure.
3347
(zupath.c)
3348
 
3349
</pre><h3><a name="V4.20_Library"></a>Library</h3><pre>
3350
 
3351
Fixes bugs:
3352
	- When a CTM was passed through the band list, it didn't get
3353
translated to match the band coordinate system.  (This had no effect,
3354
because the translation part of the CTM was never used.)  (gxclread.c)
3355
 
3356
Adds a ',' debugging switch to disable high-level operations when banding.
3357
(gxclpath.c)
3358
 
3359
Adds an optional get_clipping_box device procedure, so that filling and
3360
stroking can clip more aggressively.  (gdevmem.h, gdevprn.h, gxdevice.h,
3361
gxpaint.h, gxpath.h, gzacpath.h, gdevdflt.c, gdevht.c, gdevnfwd.c,
3362
gxacpath.c, gxclip2.c, gxclist.c, gxcpath.c, gxpcmap.c, gxfill.c,
3363
gxstroke.c)
3364
 
3365
Speeds up clipped filling and stroking, by checking against the device
3366
clipping box.  (gxfill.c, gxstroke.c)
3367
 
3368
Adds the ability to clip with a rectangle a clipping path being accumulated,
3369
and uses it to do more aggressive clipping when banding.  (gzacpath.h,
3370
gxacpath.c, gxclread.c)
3371
 
3372
Speeds up clipping of objects lying partly above or below the clipping
3373
region.  (gxcpath.c)
3374
 
3375
Speeds up clipping vertically-oriented objects (such as 90 degree rotated
3376
images or vertical rectangles) with convex clipping regions, by checking for
3377
vertical rectangles contained in multiple clipping rectangles.  (gxcpath.c)
3378
 
3379
Speeds up the handling of 90 degree rotated gray-scale images.  (gximage2.c)
3380
 
3381
Enhances the band list so that it can contain commands for a range of bands,
3382
not just a single band or all bands.  (gxcldev.h, gxclist.h, gxclbits.c,
3383
gxclist.c, gxclread.c)
3384
 
3385
Adds an operation to the DDA structure, for eventual support of clipped
3386
images.  (gxdda.h)
3387
 
3388
Factors out some macros useful for generating bit-transformation tables.
3389
(gsbittab.h, gsbittab.c, gsflip.c)
3390
 
3391
</pre>
3392
 
3393
<hr>
3394
 
3395
<h2><a name="Version4.10"></a>Version 4.10 (limited) (9/25/96)</h2>
3396
 
3397
<p>
3398
This release adds local garbage collection, and a number of performance
3399
improvements for garbage collection in general.  We will support it for one
3400
or two OEMs, but it is not a public release.
3401
 
3402
<h3><a name="V4.10_Documentation"></a>Documentation</h3><pre>
3403
 
3404
Moves documentation for all releases before 4.0 to history3.txt.  (NEWS,
3405
history3.txt)
3406
 
3407
</pre><h3><a name="V4.10_Utilities"></a>Utilities</h3><pre>
3408
 
3409
Fixes bugs:
3410
	- pdf2dsc.ps didn't have a proper license notice.  (pdf2dsc.ps)
3411
 
3412
</pre><h3><a name="V4.10_Drivers"></a>Drivers</h3><pre>
3413
 
3414
Adds a psgray driver, like psmono, to produce 8-bit gray PostScript (level
3415
1) images.  (devs.mak, *.mak, gdevpsim.c)
3416
 
3417
Changes the psmono driver to allow runs of up to 255 repeated bytes.
3418
(gdevpsim.c)
3419
 
3420
</pre><h3><a name="V4.10_Interpreter"></a>Interpreter</h3><pre>
3421
 
3422
Fixes bugs:
3423
	- setdevice erased the page even if this wasn't necessary.
3424
(zdevice.c)
3425
 
3426
Speeds up the garbage collector, primarily by speeding up pointer
3427
relocation.  (int.mak, ipacked.h, iref.h, ialloc.c, igc.c, igcref.c)
3428
 
3429
Actually implements local garbage collection.  (igc.h, ivmspace.h, igc.c,
3430
igcref.c, igcstr.c, ireclaim.c)
3431
 
3432
Adds some additional error checking for the -Z? switch.  (ilocate.c)
3433
 
3434
Moves a utility for color mapping from the interpreter to the library.
3435
(icolor.h, zcolor.c)
3436
 
3437
Adds a MinScreenLevels user parameter.  (zusparam.c)
3438
 
3439
</pre><h3><a name="V4.10_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3440
 
3441
Adds partial support for the PDF 1.2 gs operator, reverse engineered from a
3442
PDF 1.2 file.  (pdf_draw.ps)
3443
 
3444
</pre><h3><a name="V4.10_Library"></a>Library</h3><pre>
3445
 
3446
Fixes bugs:
3447
	- The test for "thin" stroked lines incorrectly claimed some
3448
non-thin lines were thin.  (gxstroke.c)
3449
	- The computations for halftone cells didn't work for non-square
3450
pixels.  (gxdht.h, gsht.c, gsht1.c, gshtscr.c)
3451
 
3452
Speeds up the garbage collector a little.  (gsstruct.h, gxalloc.h,
3453
gxfcache.h, gsfont.c)
3454
 
3455
Replaces references to private statically allocated color spaces with
3456
references to shared dynamically allocated ones, which are guaranteed to be
3457
fully filled-in.  (gscie.c)
3458
 
3459
Moves a utility for color mapping from the interpreter to the library.
3460
(gxfmap.h, gxcmap.c)
3461
 
3462
Makes available an imager analogue of setmatrix.  (gscoord.h, gscoord.c)
3463
 
3464
Adds a parameter to control the minimum number of halftone screen levels.
3465
If a halftone cell has fewer pixels than this number, it will be replicated
3466
(similar to what AccurateScreens does) until the replicated screen has
3467
enough levels.  (gxht.h, gshtscr.c)
3468
 
3469
</pre>
3470
 
3471
<hr>
3472
 
3473
<h2><a name="Version4.03"></a>Version 4.03 (9/23/96)</h2>
3474
 
3475
<p>
3476
This was an emergency re-release of 4.02 to fix the stdin redirection
3477
problem.  It has essentially no other changes.
3478
 
3479
<h3><a name="V4.03_Documentation"></a>Documentation</h3><pre>
3480
 
3481
Fixes bugs:
3482
	- Solaris 2.x has /usr/ucb/install, not installbsd.  (make.txt)
3483
 
3484
Updates current.txt to mention the ability to share libpng and libgz.
3485
(current.txt)
3486
 
3487
</pre><h3><a name="V4.03_Procedures"></a>Procedures</h3><pre>
3488
 
3489
Fixes bugs:
3490
	- A rule assumed that the makefile was named `makefile'.
3491
(unixtail.mak)
3492
 
3493
</pre><h3><a name="V4.03_Drivers"></a>Drivers</h3><pre>
3494
 
3495
Fixes bugs:
3496
	- The stcolor drivers had an off-by-1 error that could cause them to
3497
write into unallocated memory.  (gdevstc.c)
3498
	- The Imagen driver wouldn't compile with gcc.  (gdevimgn.c)
3499
 
3500
</pre><h3><a name="V4.03_Fonts"></a>Fonts</h3><pre>
3501
 
3502
Fixes bugs:
3503
	- The Solaris fontmap had gotten out of date.  (Fontmap.Sol)
3504
 
3505
</pre><h3><a name="V4.03_Streams"></a>Streams</h3><pre>
3506
 
3507
Fixes bugs:
3508
	- The test for stdin being non-seekable could leave the file error
3509
flag set, which caused an infinite loop when trying to read from the file
3510
later.  (sfile.c, sfileno.c)
3511
 
3512
</pre>
3513
 
3514
<h2><a name="Version4.02"></a>Version 4.02 (9/19/96)</h2>
3515
 
3516
<p>
3517
This release fixes a few more bugs, and adds the ability to read encrypted
3518
PDF files and some PDF 1.2 files.
3519
 
3520
<p>
3521
This release was withdrawn after a few days because the stdin redirection
3522
fix, which was made at the last minute, cause Ghostview to hang.
3523
 
3524
<h3><a name="V4.02_Documentation"></a>Documentation</h3><pre>
3525
 
3526
Fixes bugs:
3527
	- The list of required support files was incorrect.  (install.txt)
3528
	- The descriptions of file name lookup weren't accurate.  (use.txt)
3529
	- A J should have been an H.  (gxbitmap.h)
3530
 
3531
Updates the documentation about encrypted PDF files.  (new-user.txt)
3532
 
3533
Documents what the 13 base PDF fonts are.  (ps2pdf.txt)
3534
 
3535
Fixes a tiny typo.  (c-style.txt)
3536
 
3537
Adds a user-contributed man page for the new pdf2dsc script.  (pdf2dsc.1)
3538
 
3539
Updates the government restricted rights notice in the Aladdin Ghostscript
3540
Free Public License.  (PUBLIC)
3541
 
3542
Adds the URL of test files to the bug report form.  (new-user.txt)
3543
 
3544
Puts the bug reporting form in a separate file.  (readme, bug-form.txt,
3545
new-user.txt)
3546
 
3547
Notes that map_xxx_color procedures should not return gx_no_color_index.
3548
(drivers.txt)
3549
 
3550
Notes that Ghostscript supports the Flate filters.  (language.txt)
3551
 
3552
Documents the use of the system libpng and zlib.  (make.txt, gs.mak)
3553
 
3554
Notes that Borland C++ 5.0 and 5.01 will not compile Ghostscript correctly.
3555
(make.txt)
3556
 
3557
</pre><h3><a name="V4.02_Procedures"></a>Procedures</h3><pre>
3558
 
3559
Fixes bugs:
3560
	- Using both DELAYBIND and SAFER caused problems.  (pstotext uses
3561
DELAYBIND.)  (gs_init.ps)
3562
 
3563
</pre><h3><a name="V4.02_Utilities"></a>Utilities</h3><pre>
3564
 
3565
Fixes bugs:
3566
	- Some pdf2ps machinery interfered with the PDF interpreter.
3567
(pdf_2ps.ps, pdf_main.ps)
3568
	- In the output of pdf2ps, page numbers in link destinations were
3569
too high by 1.  (pdf_main.ps)
3570
	- viewpbm didn't handle value ranges other than [0..255] correctly.
3571
(viewpbm.ps)
3572
 
3573
Adds a user-contributed shell script to invoke pdf2dsc.ps.  (pdf2dsc,
3574
unix-end.mak)
3575
 
3576
Adds a switch to the genconf utility to set the prefix for generated
3577
procedure names.  (genconf.c)
3578
 
3579
Adds the option of using system libraries (possibly shared) for libpng
3580
and/or zlib.  (*head.mak, msc*.mak, os2.mak, tccommon.mak, wccommon.mak;
3581
libpng.mak, zlib.mak)
3582
 
3583
</pre><h3><a name="V4.02_Drivers"></a>Drivers</h3><pre>
3584
 
3585
Fixes bugs:
3586
	- The X11 display devices ignored the -DA4 compile-time option.
3587
(gdevx.c)
3588
	- The garbage collector could scramble the state of the CGM drivers.
3589
(gxdevice.h, gdevcgm.c)
3590
	- An identifier of more than 31 characters upset the VAX DEC C
3591
compiler.  (gdevcgml.h, gdevcgml.c)
3592
	- In case of an error in trying to set the CoreDistVersion distiller
3593
parameter, a variable could be used without initialization.  (gdevpdfp.c)
3594
	- When DEBUG is selected, the X Windows driver referenced _Xdebug,
3595
which is not defined in (at least the VMS version of) DECWindows.  (x_.h,
3596
gdevxini.c)
3597
	- Some map_cmyk_color implementations could return "transparent".
3598
(gdevbit.c)
3599
	- Setting GraphicsAlphaBits or TextAlphaBits in the P*M drivers
3600
caused an error.  (gdevpbm.c)
3601
	- If a user cancelled printing under MS Windows, a confusing error
3602
resulted, and a temporary file wasn't deleted.  (gdevwpr2.c)
3603
	- The map_color_rgb procedure for the bit devices produced incorrect
3604
results.  (This probably had no effect in practice.)  (gdevbit.c)
3605
	- The os2prn device produced incorrect output.  (gdevos2p.c)
3606
	- The OS/2 PM device didn't detect PM applications correctly.
3607
(gdevpm.c)
3608
	- The MS Windows printer driver didn't automatically detect the
3609
printer's color capabilities.  (gdevwpr2.c)
3610
	- The BJC-610 driver didn't print at 720 dpi.  (gdevcdj.c)
3611
	- The static prototypes of many devices didn't include the far_data
3612
keyword.  (gdev3852.c, gdev4081.c, gdevbgi.c, gdevcgm.c, gdevht.c,
3613
gdevimgn.c, gdevl256.c, gdevmrop.c, gdevn533.c, gdevnfwd.c, gdevnp6.c,
3614
gdevo182.c, gdevpcfb.c, gdevpdf.c, gdevpe.c, gdevpm.c, gdevs3ga.c,
3615
gdevsnfb.c, gdevsppr.c, gdevsun.c, gdevsvga.c, gdevtknk.c, gdevvglb.c,
3616
gdevwddb.c, gdevwprn.c, gdevx.c, gdevxalt.c)
3617
	- The (original) deskjet driver collapsed print lines towards the
3618
left margin.  (gdevdjet.c)
3619
 
3620
Adds to the pgm/pgnm/ppm/pnm[raw] drivers the ability to set the maximum
3621
pixel value, by setting any of the Gray/Red/Green/BlueValues device
3622
parameters.  (gdevpbm.c)
3623
 
3624
Adds pkm[raw] drivers, which do all their internal computations in CMYK and
3625
convert the data to RGB as they write the file.  (gdevpbm.c)
3626
 
3627
</pre><h3><a name="V4.02_Platforms"></a>Platforms</h3><pre>
3628
 
3629
Fixes bugs:
3630
	- The VMS script referred to old versions of the third-party
3631
libraries.  (vms.mak)
3632
	- Under VMS with DEC C, attempting to open a new file fails.
3633
(gp_vms.c)
3634
	- If you tried to print (gp_printfile) under Windows on a system
3635
with no printers installed, Ghostscript caused a GPF.  (gp_mswin.c)
3636
 
3637
Restores support for a non-DLL MS Windows platform.  (bcwin32.mak,
3638
dwnodll.cpp)
3639
 
3640
Adds a new MS Windows DLL call, gsdll_get_bitmap.  (gsdll16.def,
3641
gsdll32.def, dll.txt, gdevwdib.c)
3642
 
3643
Fixes a variety of other small Windows- and OS/2-related problems, mostly
3644
related to printing.  (gp_mswin.h, dpmainc.c, dwmain.cpp, dwmainc.cpp,
3645
gdevmswn.c, gdevpm.c, gdevwpr2.c, gp_mswin.c)
3646
 
3647
</pre><h3><a name="V4.02_Interpreter"></a>Interpreter</h3><pre>
3648
 
3649
Fixes bugs:
3650
	- The value of /newerror in $error was true at the end of
3651
initialization.  We now reset it after each internal use of stopped if
3652
necessary.  (gs_dps1.ps, gs_fform.ps, gs_fonts.ps, gs_init.ps, gs_pdf.ps,
3653
gs_res.ps, gs_type1.ps)
3654
	- setpagedevice (and finddevice) didn't recognize Default.
3655
(gs_init.ps)
3656
	- When running with -dNODISPLAY, calling gssetresolution would cause
3657
a crash.  (gs_init.ps)
3658
	- A particular combination of save, .forgetsave, and garbage
3659
collection could cause a memory access error in restore.  (isave.c)
3660
	- Some references to systemdict were affected if a user redefined
3661
the name /systemdict.  (gs_cmdl.ps, gs_fonts.ps, gs_kanji.ps, gs_dps1.ps,
3662
gs_init.ps, gs_res.ps, gs_statd.ps, gs_type1.ps)
3663
	- The insideness testing operators caused an invalid memory access.
3664
(drivers.txt, zupath.c)
3665
	- If a readline reached an input buffer boundary between the \r and
3666
\n of a 2-character EOL, an error could occur.  (zfileio.c)
3667
	- setdevparams caused an error.  (gs_lev2.ps)
3668
 
3669
Changes file names beginning with ./ or ../ so they are recognized as
3670
"absolute" and not subject to the search path.  (gp_dosfs.c, gp_ntfs.c,
3671
gp_os2.c, gp_unifn.c)
3672
 
3673
Changes the exit code for -h or --help from 0 to 1, so an invoking program
3674
will keep the output around for the user to look at.  (imainarg.c)
3675
 
3676
Adds the FlateEncode and FlateDecode filters; adds PNG pixel prediction to
3677
the LZW filters.  These additions are required for PDF 1.2 and will be part
3678
of PostScript Level 3.  (int.mak, lib.mak, zfdecode.c, zfilter2.c, zfzlib.c,
3679
zfpngp.c [deleted])
3680
 
3681
</pre><h3><a name="V4.02_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3682
 
3683
Fixes bugs:
3684
	- The copyright notices on some files didn't mention the Aladdin
3685
free license.  (pdf_*.ps)
3686
	- Some references to systemdict were affected if a user redefined
3687
the name /systemdict.  (pdf_font.ps)
3688
	- The value of /newerror in $error was true at the end of
3689
initialization.  We now reset it after each internal use of stopped if
3690
necessary.  (pdf_main.ps)
3691
	- stdin redirection failed for PDF files even if the new stdin was
3692
seekable.  (pdf_main.ps)
3693
	- The Rotate key rotated pages in the wrong direction.
3694
(pdf_main.ps)
3695
 
3696
Adds a minimal "security socket" to the interpreter.  This does not include
3697
any actual decryption code; such code is available elsewhere (see
3698
new-user.txt).  (int.mak, pdf_base.ps, pdf_main.ps, pdf_sec.ps)
3699
 
3700
Adds a PDF 1.2 capability:
3701
	- The destination in a Dest array can be a page number as well as a
3702
page object.  (pdf_main.ps)
3703
 
3704
</pre><h3><a name="V4.02_Streams"></a>Streams</h3><pre>
3705
 
3706
Fixes bugs:
3707
	- stdin was assumed to be non-seekable.  (sfile.c, sfileno.c)
3708
 
3709
</pre><h3><a name="V4.02_Library"></a>Library</h3><pre>
3710
 
3711
Fixes bugs:
3712
	- Garbage collection could corrupt a pointer in Type 0 fonts.
3713
(gxfont0.h, gsfont0.c)
3714
	- When applying hints to a Type 1 font outline, the last point could
3715
sometimes get moved twice, causing output anomalies.  (gxhint3.c)
3716
	- An #include needed for debugging was missing.  (gxcmap.h)
3717
	- Graphics states included a no-longer-used private color space
3718
object.  (gsstate.c)
3719
	- Images could get clipped randomly in the X direction.  (I don't
3720
understand why this problem hasn't shown up more often, since it's been
3721
there since release 4.00.)  (gximage.c)
3722
	- The arct and arcto operators failed to draw the line to the
3723
starting point of the arc.  (bug introduced in 4.01) (gspath1.c)
3724
	- Prefix subclasses of simple structures caused an invalid memory
3725
access.  (gsstruct.h)
3726
	- The variable fheight was sometimes unused.  (gstype1.c)
3727
	- igcd and imod didn't have prototypes in an appropriate header
3728
file, and were declared extern in several places.  (gsdcolor.h, gsline.h,
3729
gxarith.h, gxdht.h, gsht.c, gshtscr.c, gsimage.c, gsline.c, gstype1.c,
3730
gxclimag.c)
3731
	- When using a non-identity RenderTable in a CIE rendering
3732
dictionary, all colors came out too light.  (gscie.c)
3733
	- When using anti-aliased graphics, stroked lines were rendered too
3734
thin.  (gspaint.c)
3735
	- The default map_cmyk_color implementations could return
3736
"transparent".  (gxcmap.c)
3737
	- The number of bits of alpha requested when rendering anti-aliased
3738
characters could exceed 4.  (gschar.c)
3739
	- Multi-screen halftones could cause errors or infinite looping when
3740
banding.  (This problem predates 4.0; I don't know why it didn't show up
3741
before.)  (gxcldev.h, gxclist.c, gxclread.c)
3742
	- Skewed or rotated gray-scale images, or masks with a halftoned
3743
color, omitted one line of pixels and displaced the image by one pixel.
3744
(gximage2.c)
3745
 
3746
Adds an implementation of realloc, for systems that don't have one that
3747
works.  I don't know how to determine this automatically, so for the moment,
3748
the code uses our own implementation on Linux (where realloc is known to be
3749
broken, at least in some releases) and nowhere else.  (malloc_.h,
3750
gsmemory.c, gsmisc.c)
3751
 
3752
Removes the "OLD" algorithms from the Type 1 hinting source code, since they
3753
are no longer executed.  (If necessary, they can be retrieved from an older
3754
version.)  (gxhint3.c)
3755
 
3756
</pre>
3757
 
3758
<h2><a name="Version4.01"></a>Version 4.01 (7/10/96)</h2>
3759
 
3760
<p>
3761
This fixes a few minor bugs discovered since the 4.0 release.
3762
 
3763
<h3><a name="V4.01_Documentation"></a>Documentation</h3><pre>
3764
 
3765
Fixes bugs:
3766
	- An installation directory name was wrong.  (make.txt,
3767
unix-lpr.txt)
3768
	- A URL was wrong.  (devices.txt)
3769
	- A reference to use.doc hadn't been updated.  (gs.1)
3770
	- Some references to /usr/local/lib hadn't been updated.  (gs.1)
3771
	- The NEWS file and history* files still referred to *.doc rather
3772
than *.txt.  (NEWS, history*.txt)
3773
 
3774
Adds a note about compilation on Digital Unix.  (make.txt)
3775
 
3776
Clarifies that calling gs_exit calls gs_finit automatically.  (imain.h)
3777
 
3778
Adds a pointer to the PDF encryption patch.  (Ridiculous U.S. export control
3779
laws don't allow including the patch itself in the main fileset.)
3780
(new-user.txt)
3781
 
3782
Adds a help file for VMS.  (gs-vms.hlp)
3783
 
3784
</pre><h3><a name="V4.01_Procedures"></a>Procedures</h3><pre>
3785
 
3786
Fixes bugs:
3787
	- vms.mak had gotten out of sync with the makefiles (again).
3788
(vms.mak)
3789
	- DEVICE{WIDTH,HEIGHT}POINTS didn't override PAPERSIZE.
3790
(gs_init.ps)
3791
	- The Microsoft C makefiles had gotten out of date.  (msc.mak)
3792
 
3793
The (few) GNU-Licensed drivers were accidentally omitted from the fileset.
3794
 
3795
Modifies a makefile for greater reusability.  (watclib.mak)
3796
 
3797
Adds a 'debug' target for making Unix debugging configurations.
3798
(unix-end.mak)
3799
 
3800
</pre><h3><a name="V4.01_Utilities"></a>Utilities</h3><pre>
3801
 
3802
Fixes bugs:
3803
	- Some uses of 'run' should be changed to runlibfile.  (bdftops.ps,
3804
impath.ps, markhint.ps, packfile.ps, showchar.ps, waterfal.ps, wftopfa.ps,
3805
wrfont.ps)
3806
	- Some debugging code hadn't been removed.  (gslp.ps)
3807
 
3808
Adds a new utility, viewcmyk.ps, for viewing 4-bit CMYK data.  (psfiles.txt,
3809
unix-end.mak, viewcmyk.ps)
3810
 
3811
Improves pdf2dsc by including Title and CreationDate DSC comments (these are
3812
displayed by Ghostview) and reducing the size of typical output files by a
3813
factor of about 3.  (pdf2dsc.ps)
3814
 
3815
Incorporates major changes (claimed to be improvements) to ps2ascii
3816
contributed by a user.  If you have problems with it, please contact him,
3817
not Aladdin.  (ps2ascii.ps)
3818
 
3819
</pre><h3><a name="V4.01_Platforms"></a>Platforms</h3><pre>
3820
 
3821
Fixes bugs:
3822
	- The X value of a bounding box could be computed incorrectly.
3823
(gdevbbox.c)
3824
 
3825
</pre><h3><a name="V4.01_Platforms"></a>Platforms</h3><pre>
3826
 
3827
Fixes bugs:
3828
	- The Windows DLL sometimes didn't clean up properly.  (dll.txt,
3829
dpmainc.c, dwdll.cpp, dwmain.cpp, dwmainc.cpp, gsdll.c, gsdll.h)
3830
 
3831
</pre><h3><a name="V4.01_Interpreter"></a>Interpreter</h3><pre>
3832
 
3833
Fixes bugs:
3834
	- Reading from a filter could hang forever, because a buffer was
3835
allocated 1 byte too small.  (zfilter.c)
3836
	- The search path could become garbage under some circumstances.
3837
(imain.c)
3838
	- A dangling reference to a stack-allocated variable could corrupt
3839
memory if a client mixed interpreter calls and direct C calls.  (interp.c)
3840
	- Printing an object to a procedure-based filter could cause an
3841
invalid memory access.  (zfileio.c)
3842
 
3843
</pre><h3><a name="V4.01_Library"></a>Library</h3><pre>
3844
 
3845
Fixes bugs:
3846
	- Setting parameters for an unopened device could cause an access
3847
error or invoke the wrong put_params procedure.  (gsdparam.c)
3848
	- Reading from a filter could hang forever, because a buffer was
3849
allocated 1 byte too small.  (stream.h)
3850
	- If the current device was the nullpage device, doing a [g]save,
3851
selecting a different device, and doing a [g]restore caused an error.
3852
(gsdparam.c)
3853
 
3854
Adds the ability to append arcs without the initial lineto, for PCL
3855
emulation.  (gspath.h, gspath1.c)
3856
 
3857
</pre>
3858
 
3859
<h2><a name="Version4.0"></a>Version 4.0 (6/28/96)</h2>
3860
 
3861
<p>
3862
This is the first public release since 3.53, with a few more last-minute
3863
patches beyond 3.70.
3864
 
3865
<h3><a name="V4.0_Documentation"></a>Documentation</h3><pre>
3866
 
3867
Fixes bugs:
3868
	- Many makefiles still referred to .doc files rather than .txt.
3869
(cfonts.mak, devs.mak, gs.mak, int.mak, libpng.mak, unix-end.mak, watc.mak,
3870
watcwin.mak, wccommon.mak, zlib.mak)
3871
	- Some FONTPATH-related information was out of date.  (use.txt)
3872
	- The installation directory for fonts was incorrect.  (install.txt)
3873
	- The libpng and zlib versions were out of date.  (libpng.mak,
3874
zlib.mak)
3875
	- Some information about GSview was incorrect or incomplete.
3876
(new-user.txt)
3877
	- make.txt said it described installation as well as building.
3878
(make.txt)
3879
 
3880
Notes that the current release of zlib won't compile and link correctly with
3881
Sun cc.  (make.txt)
3882
 
3883
Adds a little more detail to the C style document.  (c-style.txt)
3884
 
3885
</pre><h3><a name="V4.0_Procedures"></a>Procedures</h3><pre>
3886
 
3887
Fixes bugs:
3888
	- Some documentation files weren't installed.  (unix-end.mak)
3889
	- Some dependencies were incorrect.  (bcwin32.mak)
3890
	- 'make begin' and 'make clean' deleted too many and/or the wrong
3891
files.  (bcwin.mak, bcwin32.mak)
3892
	- libpng.mak didn't work with libpng version 0.89c.  (libpng.mak)
3893
	- -d&lt;var&gt;=&lt;name&gt; was equivalent to -d&lt;var&gt;=/&lt;name&gt;, and there was no
3894
way to set a variable to true, false, or null.  (use.txt, gs_init.ps,
3895
iinit.c, imainarg.c)
3896
 
3897
Removes the modules.lis file, which is no longer used.
3898
 
3899
Undoes detecting automatically the need to run tar_cat -- the mechanism
3900
didn't work, and caused confusion.  (unix-end.mak)
3901
 
3902
Updates the makefiles to libpng version 0.89, but allows them to work with
3903
either 0.88 or 0.89.  (*.mak)
3904
 
3905
</pre><h3><a name="V4.0_Utilities"></a>Utilities</h3><pre>
3906
 
3907
Fixes bugs:
3908
	- Showing the details of a protected font caused an error.
3909
(markhint.ps)
3910
 
3911
</pre><h3><a name="V4.0_Drivers"></a>Drivers</h3><pre>
3912
 
3913
Fixes bugs:
3914
	- A copyright notice was wrong.  (gs_pdfwr.ps)
3915
	- PDF link annotations could get written with two Dest keys.
3916
(gdevpdfm.c)
3917
	- MakeProcInstance and FreeProcInstance were called on platforms
3918
where it wasn't appropriate.  (gdevwpr2.c, gdevwprn.c, gp_mswin.c)
3919
	- On X servers that return very large values for the "virtual
3920
screen" size in millimeters but correct values for the screen size in
3921
pixels, a rangecheck could occur.  (gdevxini.c)
3922
	- The bounding box device could return garbage if stroke or fill was
3923
ever invoked with an empty path.  (gdevbbox.c)
3924
 
3925
Replaces the LBP8 driver with a revised one contributed by a user.
3926
(gdevlbp8.c, devs.mak)
3927
 
3928
</pre><h3><a name="V4.0_Platforms"></a>Platforms</h3><pre>
3929
 
3930
Fixes bugs:
3931
	- Some Windows menu parameters were incorrect.  (gsdll16.rc,
3932
gsdll32.rc)
3933
 
3934
</pre><h3><a name="V4.0_Interpreter"></a>Interpreter</h3><pre>
3935
 
3936
Fixes bugs:
3937
	- .getdevparams sometimes returned duplicate entries for /Type.
3938
(ziodev2.c)
3939
	- File names weren't parsed or concatenated properly on all
3940
platforms.  (gs_fonts.ps, zfile.c)
3941
	- Filter lookahead caused problems with special files.  (zfproc.c)
3942
	- If a TransformPQR procedure in a CIE color rendering dictionary
3943
didn't pop its 4 array arguments, an error occurred.  (gs_lev2.ps, zcrd.c)
3944
 
3945
</pre><h3><a name="V4.0_Streams"></a>Streams</h3><pre>
3946
 
3947
Fixes bugs:
3948
	- Filter lookahead caused problems with special files.  (bug
3949
introduced in 3.70) (stream.h)
3950
 
3951
</pre><h3><a name="V4.0_Library"></a>Library</h3><pre>
3952
 
3953
Fixes bugs:
3954
	- .getdevparams sometimes returned duplicate entries for /Type.
3955
(gxiodev.h, gsiodev.c)
3956
 
3957
</pre>
3958
 
3959
<!-- [3.0 begin visible trailer] =========================================== -->
3960
<hr>
3961
 
3962
<p>
3963
<small>Copyright &copy; 1996, 1997, 1998 Aladdin Enterprises.
3964
All rights reserved.</small>
3965
 
3966
<p>
3967
This software is provided AS-IS with no warranty, either express or
3968
implied.
3969
 
3970
This software is distributed under license and may not be copied,
3971
modified or distributed except as expressly authorized under the terms
3972
of the license contained in the file LICENSE in this distribution.
3973
 
3974
For more information about licensing, please refer to
3975
http://www.ghostscript.com/licensing/. For information on
3976
commercial licensing, go to http://www.artifex.com/licensing/ or
3977
contact Artifex Software, Inc., 101 Lucas Valley Road #110,
3978
San Rafael, CA  94903, U.S.A., +1(415)492-9861.
3979
 
3980
<p>
3981
<small>Ghostscript version 8.53, 20 October 2005
3982
 
3983
<!-- [3.0 end visible trailer] ============================================= -->
3984
 
3985
</body>
3986
</html>