xref: /plan9/sys/src/cmd/gs/doc/History3.htm (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
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 3.n</title>
5<!-- $Id: History3.htm,v 1.39 2005/10/20 19:46:23 ray Exp $ -->
6<!-- Originally: history3.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 3.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="#Version3.70p1">Version 3.70 patch 1 (6/24/96)</a>
32<ul>
33<li><a href="#V3.70p1_Procedures">Procedures</a>,
34    <a href="#V3.70p1_Drivers">Drivers</a>
35</ul>
36<li><a href="#Version3.70">Version 3.70 (limited) (6/23/96)</a>
37<ul>
38<li><a href="#V3.70_Documentation">Documentation</a>,
39    <a href="#V3.70_Procedures">Procedures</a>,
40    <a href="#V3.70_Drivers">Drivers</a>,
41    <a href="#V3.70_Platforms">Platforms</a>,
42    <a href="#V3.70_Fonts">Fonts</a>,
43    <a href="#V3.70_Interpreter">Interpreter</a>,
44    <a href="#V3.70_Interpreter_PDF">Interpreter (PDF)</a>,
45    <a href="#V3.70_Streams">Streams</a>,
46    <a href="#V3.70_Library">Library</a>
47</ul>
48<li><a href="#Version3.69">Version 3.69 (limited) (6/14/96)</a>
49<ul>
50<li><a href="#V3.69_Documentation">Documentation</a>,
51    <a href="#V3.69_Procedures">Procedures</a>,
52    <a href="#V3.69_Utilities">Utilities</a>,
53    <a href="#V3.69_Drivers">Drivers</a>,
54    <a href="#V3.69_Platforms">Platforms</a>,
55    <a href="#V3.69_Fonts">Fonts</a>,
56    <a href="#V3.69_Interpreter">Interpreter</a>,
57    <a href="#V3.69_Library">Library</a>
58</ul>
59<li><a href="#Version3.68p4">Version 3.68 patch 4 (5/23/96)</a>
60<ul>
61<li><a href="#V3.68p4_Documentation">Documentation</a>,
62    <a href="#V3.68p4_Procedures">Procedures</a>,
63    <a href="#V3.68p4_Drivers">Drivers</a>,
64    <a href="#V3.68p4_Platforms">Platforms</a>,
65    <a href="#V3.68p4_Fonts">Fonts</a>,
66    <a href="#V3.68p4_Interpreter">Interpreter</a>,
67    <a href="#V3.68p4_Library">Library</a>
68</ul>
69<li><a href="#Version3.68p3">Version 3.68 patch 3 (5/17/96)</a>
70<ul>
71<li><a href="#V3.68p3_Procedures">Procedures</a>,
72    <a href="#V3.68p3_Utilities">Utilities</a>,
73    <a href="#V3.68p3_Drivers">Drivers</a>,
74    <a href="#V3.68p3_Platforms">Platforms</a>,
75    <a href="#V3.68p3_Interpreter">Interpreter</a>,
76    <a href="#V3.68p3_Library">Library</a>
77</ul>
78<li><a href="#Version3.68p2">Version 3.68 patch 2 (5/13/96)</a>
79<ul>
80<li><a href="#V3.68p2_Documentation">Documentation</a>,
81    <a href="#V3.68p2_Procedures">Procedures</a>,
82    <a href="#V3.68p2_Drivers">Drivers</a>,
83    <a href="#V3.68p2_Interpreter">Interpreter</a>,
84    <a href="#V3.68p2_Streams">Streams</a>,
85    <a href="#V3.68p2_Library">Library</a>
86</ul>
87<li><a href="#Version3.68p1">Version 3.68 patch 1 (5/10/96)</a>
88<ul>
89<li><a href="#V3.68p1_Procedures">Procedures</a>
90</ul>
91<li><a href="#Version3.68">Version 3.68 (limited) (5/9/96)</a>
92<ul>
93<li><a href="#V3.68_Documentation">Documentation</a>,
94    <a href="#V3.68_Procedures">Procedures</a>,
95    <a href="#V3.68_Utilities">Utilities</a>,
96    <a href="#V3.68_Drivers">Drivers</a>,
97    <a href="#V3.68_Platforms">Platforms</a>,
98    <a href="#V3.68_Fonts">Fonts</a>,
99    <a href="#V3.68_Interpreter">Interpreter</a>,
100    <a href="#V3.68_Streams">Streams</a>,
101    <a href="#V3.68_Library">Library</a>
102</ul>
103<li><a href="#Version3.67">Version 3.67 (limited) (4/12/96)</a>
104<ul>
105<li><a href="#V3.67_Documentation">Documentation</a>,
106    <a href="#V3.67_Procedures">Procedures</a>,
107    <a href="#V3.67_Platforms">Platforms</a>,
108    <a href="#V3.67_Interpreter">Interpreter</a>,
109    <a href="#V3.67_Interpreter_PDF">Interpreter (PDF)</a>,
110    <a href="#V3.67_Library">Library</a>
111</ul>
112<li><a href="#Version3.66">Version 3.66 (limited) (4/8/96)</a>
113<ul>
114<li><a href="#V3.66_Documentation">Documentation</a>,
115    <a href="#V3.66_Procedures">Procedures</a>,
116    <a href="#V3.66_Utilities">Utilities</a>,
117    <a href="#V3.66_Drivers">Drivers</a>,
118    <a href="#V3.66_Platforms">Platforms</a>,
119    <a href="#V3.66_Fonts">Fonts</a>,
120    <a href="#V3.66_Interpreter">Interpreter</a>,
121    <a href="#V3.66_Interpreter_PDF">Interpreter (PDF)</a>,
122    <a href="#V3.66_Streams">Streams</a>,
123    <a href="#V3.66_Library">Library</a>
124</ul>
125<li><a href="#Version3.65">Version 3.65 (limited) (3/9/96)</a>
126<ul>
127<li><a href="#V3.65_Documentation">Documentation</a>,
128    <a href="#V3.65_Procedures">Procedures</a>,
129    <a href="#V3.65_Utilities">Utilities</a>,
130    <a href="#V3.65_Drivers">Drivers</a>,
131    <a href="#V3.65_Platforms">Platforms</a>,
132    <a href="#V3.65_Interpreter">Interpreter</a>,
133    <a href="#V3.65_Interpreter_PDF">Interpreter (PDF)</a>,
134    <a href="#V3.65_Streams">Streams</a>,
135    <a href="#V3.65_Library">Library</a>
136</ul>
137<li><a href="#Version3.64">Version 3.64 (limited, incremental) (1/27/96)</a>
138<ul>
139<li><a href="#V3.64_Documentation">Documentation</a>,
140    <a href="#V3.64_Procedures">Procedures</a>,
141    <a href="#V3.64_Utilities">Utilities</a>,
142    <a href="#V3.64_Drivers">Drivers</a>,
143    <a href="#V3.64_Platforms">Platforms</a>,
144    <a href="#V3.64_Interpreter">Interpreter</a>,
145    <a href="#V3.64_Streams">Streams</a>,
146    <a href="#V3.64_Library">Library</a>
147</ul>
148<li><a href="#Version3.63">Version 3.63 (limited, incremental) (1/14/96)</a>
149<ul>
150<li><a href="#V3.63_Documentation">Documentation</a>,
151    <a href="#V3.63_Procedures">Procedures</a>,
152    <a href="#V3.63_Utilities">Utilities</a>,
153    <a href="#V3.63_Drivers">Drivers</a>,
154    <a href="#V3.63_Platforms">Platforms</a>,
155    <a href="#V3.63_Interpreter">Interpreter</a>,
156    <a href="#V3.63_Interpreter_PDF">Interpreter (PDF)</a>,
157    <a href="#V3.63_Streams">Streams</a>,
158    <a href="#V3.63_Library">Library</a>
159</ul>
160<li><a href="#Version3.62">Version 3.62 (limited, incremental) (12/26/95)</a>
161<ul>
162<li><a href="#V3.62_Documentation">Documentation</a>,
163    <a href="#V3.62_Procedures">Procedures</a>,
164    <a href="#V3.62_Interpreter">Interpreter</a>,
165    <a href="#V3.62_Interpreter_PDF">Interpreter (PDF)</a>,
166    <a href="#V3.62_Library">Library</a>
167</ul>
168<li><a href="#Version3.61">Version 3.61 (limited) (12/10/95)</a>
169<ul>
170<li><a href="#V3.61_Documentation">Documentation</a>,
171    <a href="#V3.61_Procedures">Procedures</a>,
172    <a href="#V3.61_Utilities">Utilities</a>,
173    <a href="#V3.61_Drivers">Drivers</a>,
174    <a href="#V3.61_Platforms">Platforms</a>,
175    <a href="#V3.61_Fonts">Fonts</a>,
176    <a href="#V3.61_Interpreter">Interpreter</a>,
177    <a href="#V3.61_Interpreter_PDF">Interpreter (PDF)</a>,
178    <a href="#V3.61_Streams">Streams</a>,
179    <a href="#V3.61_Library">Library</a>
180</ul>
181<li><a href="#Version3.60">Version 3.60 (limited) (11/20/95)</a>
182<ul>
183<li><a href="#V3.60_Documentation">Documentation</a>,
184    <a href="#V3.60_Procedures">Procedures</a>,
185    <a href="#V3.60_Utilities">Utilities</a>,
186    <a href="#V3.60_Drivers">Drivers</a>,
187    <a href="#V3.60_Platforms">Platforms</a>,
188    <a href="#V3.60_Fonts">Fonts</a>,
189    <a href="#V3.60_Interpreter">Interpreter</a>,
190    <a href="#V3.60_Interpreter_PDF">Interpreter (PDF)</a>,
191    <a href="#V3.60_Streams">Streams</a>,
192    <a href="#V3.60_Library">Library</a>
193</ul>
194<li><a href="#Version3.53">Version 3.53 (1/10/96)</a>
195<ul>
196<li><a href="#V3.53_Documentation">Documentation</a>,
197    <a href="#V3.53_Procedures">Procedures</a>,
198    <a href="#V3.53_Utilities">Utilities</a>,
199    <a href="#V3.53_Drivers">Drivers</a>,
200    <a href="#V3.53_Platforms">Platforms</a>,
201    <a href="#V3.53_Fonts">Fonts</a>,
202    <a href="#V3.53_Interpreter">Interpreter</a>,
203    <a href="#V3.53_Interpreter_PDF">Interpreter (PDF)</a>,
204    <a href="#V3.53_Streams">Streams</a>,
205    <a href="#V3.53_Library">Library</a>
206</ul>
207<li><a href="#Version3.52">Version 3.52 (limited) (10/6/95)</a>
208<ul>
209<li><a href="#V3.52_Procedures">Procedures</a>,
210    <a href="#V3.52_Interpreter">Interpreter</a>,
211    <a href="#V3.52_Library">Library</a>
212</ul>
213<li><a href="#Version3.51">Version 3.51 (9/27/95)</a>
214<ul>
215<li><a href="#V3.51_Documentation">Documentation</a>,
216    <a href="#V3.51_Procedures">Procedures</a>,
217    <a href="#V3.51_Utilities">Utilities</a>,
218    <a href="#V3.51_Drivers">Drivers</a>,
219    <a href="#V3.51_Platforms">Platforms</a>,
220    <a href="#V3.51_Interpreter">Interpreter</a>,
221    <a href="#V3.51_Interpreter_PDF">Interpreter (PDF)</a>,
222    <a href="#V3.51_Library">Library</a>
223</ul>
224<li><a href="#Version3.50">Version 3.50 (limited) (9/24/95)</a>
225<ul>
226<li><a href="#V3.50_Procedures">Procedures</a>,
227    <a href="#V3.50_Utilities">Utilities</a>,
228    <a href="#V3.50_Drivers">Drivers</a>,
229    <a href="#V3.50_Interpreter">Interpreter</a>,
230    <a href="#V3.50_Interpreter_PDF">Interpreter (PDF)</a>,
231    <a href="#V3.50_Library">Library</a>
232</ul>
233<li><a href="#Version3.49">Version 3.49 (limited) (9/20/95)</a>
234<ul>
235<li><a href="#V3.49_Documentation">Documentation</a>,
236    <a href="#V3.49_Procedures">Procedures</a>,
237    <a href="#V3.49_Drivers">Drivers</a>,
238    <a href="#V3.49_Platforms">Platforms</a>,
239    <a href="#V3.49_Interpreter">Interpreter</a>,
240    <a href="#V3.49_Library">Library</a>
241</ul>
242<li><a href="#Version3.48">Version 3.48 (limited) (9/17/95)</a>
243<ul>
244<li><a href="#V3.48_Documentation">Documentation</a>,
245    <a href="#V3.48_Procedures">Procedures</a>,
246    <a href="#V3.48_Drivers">Drivers</a>,
247    <a href="#V3.48_Platforms">Platforms</a>,
248    <a href="#V3.48_Interpreter">Interpreter</a>,
249    <a href="#V3.48_Interpreter_PDF">Interpreter (PDF)</a>,
250    <a href="#V3.48_Library">Library</a>
251</ul>
252<li><a href="#Version3.47">Version 3.47 (limited) (9/14/95)</a>
253<ul>
254<li><a href="#V3.47_Documentation">Documentation</a>,
255    <a href="#V3.47_Procedures">Procedures</a>,
256    <a href="#V3.47_Utilities">Utilities</a>,
257    <a href="#V3.47_Drivers">Drivers</a>,
258    <a href="#V3.47_Platforms">Platforms</a>,
259    <a href="#V3.47_Fonts">Fonts</a>,
260    <a href="#V3.47_Interpreter">Interpreter</a>,
261    <a href="#V3.47_Interpreter_PDF">Interpreter (PDF)</a>,
262    <a href="#V3.47_Streams">Streams</a>,
263    <a href="#V3.47_Library">Library</a>
264</ul>
265<li><a href="#Version3.46">Version 3.46 (limited) (9/4/95)</a>
266<ul>
267<li><a href="#V3.46_Documentation">Documentation</a>,
268    <a href="#V3.46_Procedures">Procedures</a>,
269    <a href="#V3.46_Utilities">Utilities</a>,
270    <a href="#V3.46_Drivers">Drivers</a>,
271    <a href="#V3.46_Platforms">Platforms</a>,
272    <a href="#V3.46_Interpreter">Interpreter</a>,
273    <a href="#V3.46_Interpreter_PDF">Interpreter (PDF)</a>,
274    <a href="#V3.46_Library">Library</a>
275</ul>
276<li><a href="#Version3.45">Version 3.45 (limited) (8/27/95)</a>
277<ul>
278<li><a href="#V3.45_Documentation">Documentation</a>,
279    <a href="#V3.45_Procedures">Procedures</a>,
280    <a href="#V3.45_Utilities">Utilities</a>,
281    <a href="#V3.45_Drivers">Drivers</a>,
282    <a href="#V3.45_Platforms">Platforms</a>,
283    <a href="#V3.45_Interpreter">Interpreter</a>,
284    <a href="#V3.45_Interpreter_PDF">Interpreter (PDF)</a>,
285    <a href="#V3.45_Streams">Streams</a>,
286    <a href="#V3.45_Library">Library</a>
287</ul>
288<li><a href="#Version3.44">Version 3.44 (limited) (8/21/95)</a>
289<ul>
290<li><a href="#V3.44_Documentation">Documentation</a>,
291    <a href="#V3.44_Procedures">Procedures</a>,
292    <a href="#V3.44_Utilities">Utilities</a>,
293    <a href="#V3.44_Drivers">Drivers</a>,
294    <a href="#V3.44_Platforms">Platforms</a>,
295    <a href="#V3.44_Interpreter">Interpreter</a>,
296    <a href="#V3.44_Interpreter_PDF">Interpreter (PDF)</a>,
297    <a href="#V3.44_Library">Library</a>
298</ul>
299<li><a href="#Version3.43">Version 3.43 (limited) (8/10/95)</a>
300<ul>
301<li><a href="#V3.43_Documentation">Documentation</a>,
302    <a href="#V3.43_Procedures">Procedures</a>,
303    <a href="#V3.43_Platforms">Platforms</a>,
304    <a href="#V3.43_Fonts">Fonts</a>,
305    <a href="#V3.43_Interpreter">Interpreter</a>,
306    <a href="#V3.43_Streams">Streams</a>,
307    <a href="#V3.43_Library">Library</a>
308</ul>
309<li><a href="#Version3.42">Version 3.42 (limited) (8/2/95)</a>
310<ul>
311<li><a href="#V3.42_Documentation">Documentation</a>,
312    <a href="#V3.42_Procedures">Procedures</a>,
313    <a href="#V3.42_Platforms">Platforms</a>,
314    <a href="#V3.42_Interpreter">Interpreter</a>,
315    <a href="#V3.42_Streams">Streams</a>,
316    <a href="#V3.42_Library">Library</a>
317</ul>
318<li><a href="#Version3.41">Version 3.41 (limited) (7/27/95)</a>
319<ul>
320<li><a href="#V3.41_Documentation">Documentation</a>,
321    <a href="#V3.41_Procedures">Procedures</a>,
322    <a href="#V3.41_Utilities">Utilities</a>,
323    <a href="#V3.41_Drivers">Drivers</a>,
324    <a href="#V3.41_Platforms">Platforms</a>,
325    <a href="#V3.41_Fonts">Fonts</a>,
326    <a href="#V3.41_Interpreter">Interpreter</a>,
327    <a href="#V3.41_Interpreter_PDF">Interpreter (PDF)</a>,
328    <a href="#V3.41_Streams">Streams</a>,
329    <a href="#V3.41_Library">Library</a>
330</ul>
331<li><a href="#Version3.40">Version 3.40 (limited) (6/28/95)</a>
332<ul>
333<li><a href="#V3.40_Documentation">Documentation</a>,
334    <a href="#V3.40_Procedures">Procedures</a>,
335    <a href="#V3.40_Utilities">Utilities</a>,
336    <a href="#V3.40_Platforms">Platforms</a>,
337    <a href="#V3.40_Interpreter">Interpreter</a>,
338    <a href="#V3.40_Streams">Streams</a>,
339    <a href="#V3.40_Library">Library</a>
340</ul>
341<li><a href="#Version3.39">Version 3.39 (limited) (6/24/95)</a>
342<ul>
343<li><a href="#V3.39_Documentation">Documentation</a>,
344    <a href="#V3.39_Procedures">Procedures</a>,
345    <a href="#V3.39_Utilities">Utilities</a>,
346    <a href="#V3.39_Platforms">Platforms</a>,
347    <a href="#V3.39_Fonts">Fonts</a>,
348    <a href="#V3.39_Interpreter">Interpreter</a>,
349    <a href="#V3.39_Streams">Streams</a>,
350    <a href="#V3.39_Library">Library</a>
351</ul>
352<li><a href="#Version3.38">Version 3.38 (limited) (6/18/95)</a>
353<ul>
354<li><a href="#V3.38_Documentation">Documentation</a>,
355    <a href="#V3.38_Procedures">Procedures</a>,
356    <a href="#V3.38_Utilities">Utilities</a>,
357    <a href="#V3.38_Drivers">Drivers</a>,
358    <a href="#V3.38_Platforms">Platforms</a>,
359    <a href="#V3.38_Fonts">Fonts</a>,
360    <a href="#V3.38_Interpreter">Interpreter</a>,
361    <a href="#V3.38_Interpreter_PDF">Interpreter (PDF)</a>,
362    <a href="#V3.38_Streams">Streams</a>,
363    <a href="#V3.38_Library">Library</a>
364</ul>
365<li><a href="#Version3.37">Version 3.37 (limited) (5/11/95)</a>
366<ul>
367<li><a href="#V3.37_Documentation">Documentation</a>,
368    <a href="#V3.37_Procedures">Procedures</a>,
369    <a href="#V3.37_Utilities">Utilities</a>,
370    <a href="#V3.37_Drivers">Drivers</a>,
371    <a href="#V3.37_Fonts">Fonts</a>,
372    <a href="#V3.37_Interpreter_PostScript">Interpreter (PostScript)</a>,
373    <a href="#V3.37_Interpreter_PDF">Interpreter (PDF)</a>
374</ul>
375<li><a href="#Version3.36">Version 3.36 (limited) (5/4/95)</a>
376<ul>
377<li><a href="#V3.36_Documentation">Documentation</a>,
378    <a href="#V3.36_Procedures">Procedures</a>,
379    <a href="#V3.36_Drivers">Drivers</a>,
380    <a href="#V3.36_Interpreter">Interpreter</a>,
381    <a href="#V3.36_Library">Library</a>
382</ul>
383<li><a href="#Version3.35">Version 3.35 (internal) (5/2/95)</a>
384<ul>
385<li><a href="#V3.35_Documentation">Documentation</a>,
386    <a href="#V3.35_Procedures">Procedures</a>,
387    <a href="#V3.35_Utilities">Utilities</a>,
388    <a href="#V3.35_Drivers">Drivers</a>,
389    <a href="#V3.35_Platforms">Platforms</a>,
390    <a href="#V3.35_Fonts">Fonts</a>,
391    <a href="#V3.35_Interpreter">Interpreter</a>,
392    <a href="#V3.35_Library">Library</a>
393</ul>
394<li><a href="#Version3.34">Version 3.34 (internal) (4/18/95)</a>
395<ul>
396<li><a href="#V3.34_Documentation">Documentation</a>,
397    <a href="#V3.34_Procedures">Procedures</a>,
398    <a href="#V3.34_Interpreter">Interpreter</a>,
399    <a href="#V3.34_Library">Library</a>
400</ul>
401<li><a href="#Version3.33">Version 3.33 (4/13/95)</a>
402<ul>
403<li><a href="#V3.33_Documentation">Documentation</a>,
404    <a href="#V3.33_Procedures">Procedures</a>,
405    <a href="#V3.33_Utilities">Utilities</a>,
406    <a href="#V3.33_Drivers">Drivers</a>,
407    <a href="#V3.33_Platforms">Platforms</a>,
408    <a href="#V3.33_Fonts">Fonts</a>,
409    <a href="#V3.33_Library">Library</a>
410</ul>
411<li><a href="#Version3.32">Version 3.32 (4/7/95)</a>
412<ul>
413<li><a href="#V3.32_Documentation">Documentation</a>,
414    <a href="#V3.32_Procedures">Procedures</a>,
415    <a href="#V3.32_Utilities">Utilities</a>,
416    <a href="#V3.32_Drivers">Drivers</a>,
417    <a href="#V3.32_Platforms">Platforms</a>,
418    <a href="#V3.32_Interpreter">Interpreter</a>,
419    <a href="#V3.32_Streams">Streams</a>,
420    <a href="#V3.32_Library">Library</a>
421</ul>
422<li><a href="#Version3.31">Version 3.31 (4/2/95)</a>
423<ul>
424<li><a href="#V3.31_Documentation">Documentation</a>,
425    <a href="#V3.31_Procedures">Procedures</a>,
426    <a href="#V3.31_Utilities">Utilities</a>,
427    <a href="#V3.31_Drivers">Drivers</a>,
428    <a href="#V3.31_Platforms">Platforms</a>,
429    <a href="#V3.31_Interpreter">Interpreter</a>,
430    <a href="#V3.31_Streams">Streams</a>,
431    <a href="#V3.31_Library">Library</a>
432</ul>
433<li><a href="#Version3.30">Version 3.30 (beta) (3/21/95)</a>
434<ul>
435<li><a href="#V3.30_Documentation">Documentation</a>,
436    <a href="#V3.30_Utilities">Utilities</a>,
437    <a href="#V3.30_Drivers">Drivers</a>,
438    <a href="#V3.30_Interpreter_PostScript">Interpreter (PostScript)</a>,
439    <a href="#V3.30_Interpreter_PDF">Interpreter (PDF)</a>,
440    <a href="#V3.30_Library">Library</a>
441</ul>
442<li><a href="#Version3.29">Version 3.29 (internal) (3/8/95)</a>
443<ul>
444<li><a href="#V3.29_Documentation">Documentation</a>,
445    <a href="#V3.29_Procedures">Procedures</a>,
446    <a href="#V3.29_Utilities">Utilities</a>,
447    <a href="#V3.29_Fonts">Fonts</a>,
448    <a href="#V3.29_Drivers">Drivers</a>,
449    <a href="#V3.29_Interpreter_PostScript">Interpreter (PostScript)</a>,
450    <a href="#V3.29_Interpreter_PDF">Interpreter (PDF)</a>,
451    <a href="#V3.29_Streams">Streams</a>,
452    <a href="#V3.29_Library">Library</a>
453</ul>
454<li><a href="#Version3.28">Version 3.28 (beta) (2/13/95)</a>
455<ul>
456<li><a href="#V3.28_Documentation">Documentation</a>,
457    <a href="#V3.28_Procedures">Procedures</a>,
458    <a href="#V3.28_Utilities">Utilities</a>,
459    <a href="#V3.28_Drivers">Drivers</a>,
460    <a href="#V3.28_Interpreter">Interpreter</a>,
461    <a href="#V3.28_Library">Library</a>
462</ul>
463<li><a href="#Version3.27">Version 3.27 (beta)(withdrawn) (2/8/95)</a>
464<ul>
465<li><a href="#V3.27_Documentation">Documentation</a>,
466    <a href="#V3.27_Procedures">Procedures</a>,
467    <a href="#V3.27_Utilities">Utilities</a>,
468    <a href="#V3.27_Drivers">Drivers</a>,
469    <a href="#V3.27_Platforms">Platforms</a>,
470    <a href="#V3.27_Fonts">Fonts</a>,
471    <a href="#V3.27_Interpreter">Interpreter</a>,
472    <a href="#V3.27_Streams">Streams</a>,
473    <a href="#V3.27_Library">Library</a>
474</ul>
475<li><a href="#Version3.26">Version 3.26 (beta) (2/1/95)</a>
476<ul>
477<li><a href="#V3.26_Documentation">Documentation</a>,
478    <a href="#V3.26_Procedures">Procedures</a>,
479    <a href="#V3.26_Utilities">Utilities</a>,
480    <a href="#V3.26_Drivers">Drivers</a>,
481    <a href="#V3.26_Platforms">Platforms</a>,
482    <a href="#V3.26_Interpreter">Interpreter</a>,
483    <a href="#V3.26_Streams">Streams</a>,
484    <a href="#V3.26_Library">Library</a>
485</ul>
486<li><a href="#Version3.25">Version 3.25 (beta) (1/24/95)</a>
487<ul>
488<li><a href="#V3.25_Documentation">Documentation</a>,
489    <a href="#V3.25_Procedures">Procedures</a>,
490    <a href="#V3.25_Drivers">Drivers</a>,
491    <a href="#V3.25_Platforms">Platforms</a>,
492    <a href="#V3.25_Interpreter">Interpreter</a>,
493    <a href="#V3.25_Library">Library</a>
494</ul>
495<li><a href="#Version3.24">Version 3.24 (beta) (1/17/95)</a>
496<ul>
497<li><a href="#V3.24_Documentation">Documentation</a>,
498    <a href="#V3.24_Procedures">Procedures</a>,
499    <a href="#V3.24_Drivers">Drivers</a>,
500    <a href="#V3.24_Platforms">Platforms</a>,
501    <a href="#V3.24_Fonts">Fonts</a>,
502    <a href="#V3.24_Interpreter">Interpreter</a>,
503    <a href="#V3.24_Interpreter_PostScript">Interpreter (PostScript)</a>,
504    <a href="#V3.24_Interpreter_PDF">Interpreter (PDF)</a>,
505    <a href="#V3.24_Streams">Streams</a>,
506    <a href="#V3.24_Library">Library</a>
507</ul>
508<li><a href="#Version3.23">Version 3.23 (beta) (1/5/95)</a>
509<ul>
510<li><a href="#V3.23_Documentation">Documentation</a>,
511    <a href="#V3.23_Procedures">Procedures</a>,
512    <a href="#V3.23_Utilities">Utilities</a>,
513    <a href="#V3.23_Drivers">Drivers</a>,
514    <a href="#V3.23_Platforms">Platforms</a>,
515    <a href="#V3.23_Fonts">Fonts</a>,
516    <a href="#V3.23_Interpreter_PostScript">Interpreter (PostScript)</a>,
517    <a href="#V3.23_Interpreter_PDF">Interpreter (PDF)</a>,
518    <a href="#V3.23_Streams">Streams</a>,
519    <a href="#V3.23_Library">Library</a>
520</ul>
521<li><a href="#Version3.22">Version 3.22 (beta) (11/30/94)</a>
522<ul>
523<li><a href="#V3.22_Procedures">Procedures</a>,
524    <a href="#V3.22_Drivers">Drivers</a>,
525    <a href="#V3.22_Platforms">Platforms</a>,
526    <a href="#V3.22_Fonts">Fonts</a>,
527    <a href="#V3.22_Interpreter">Interpreter</a>,
528    <a href="#V3.22_Streams">Streams</a>,
529    <a href="#V3.22_Library">Library</a>
530</ul>
531<li><a href="#Version3.21">Version 3.21 (beta) (11/17/94)</a>
532<ul>
533<li><a href="#V3.21_Documentation">Documentation</a>,
534    <a href="#V3.21_Procedures">Procedures</a>,
535    <a href="#V3.21_Utilities">Utilities</a>,
536    <a href="#V3.21_Drivers">Drivers</a>,
537    <a href="#V3.21_Platforms">Platforms</a>,
538    <a href="#V3.21_Fonts">Fonts</a>,
539    <a href="#V3.21_Interpreter">Interpreter</a>,
540    <a href="#V3.21_Streams">Streams</a>,
541    <a href="#V3.21_Library">Library</a>
542</ul>
543<li><a href="#Version3.20">Version 3.20 (beta) (10/31/94)</a>
544<ul>
545<li><a href="#V3.20_Documentation">Documentation</a>,
546    <a href="#V3.20_Procedures">Procedures</a>,
547    <a href="#V3.20_Utilities">Utilities</a>,
548    <a href="#V3.20_Drivers">Drivers</a>,
549    <a href="#V3.20_Platforms">Platforms</a>,
550    <a href="#V3.20_Fonts">Fonts</a>,
551    <a href="#V3.20_Interpreters">Interpreters</a>,
552    <a href="#V3.20_Library">Library</a>
553</ul>
554<li><a href="#Version3.13">Version 3.13(private) (10/3/94)</a>
555<ul>
556<li><a href="#V3.13_Documentation">Documentation</a>,
557    <a href="#V3.13_Procedures">Procedures</a>,
558    <a href="#V3.13_Utilities">Utilities</a>,
559    <a href="#V3.13_Drivers">Drivers</a>,
560    <a href="#V3.13_Platforms">Platforms</a>,
561    <a href="#V3.13_Fonts">Fonts</a>,
562    <a href="#V3.13_Interpreter">Interpreter</a>,
563    <a href="#V3.13_Streams">Streams</a>,
564    <a href="#V3.13_Library">Library</a>
565</ul>
566<li><a href="#Version3.12">Version 3.12 (9/29/94)</a>
567<ul>
568<li><a href="#V3.12_Documentation">Documentation</a>,
569    <a href="#V3.12_Procedures">Procedures</a>,
570    <a href="#V3.12_Drivers">Drivers</a>,
571    <a href="#V3.12_Platforms">Platforms</a>,
572    <a href="#V3.12_Interpreter">Interpreter</a>,
573    <a href="#V3.12_Streams">Streams</a>,
574    <a href="#V3.12_Library">Library</a>
575</ul>
576<li><a href="#Version3.1.1">Version 3.1.1 (9/25/94)</a>
577<ul>
578<li><a href="#V3.1.1_Documentation">Documentation</a>,
579    <a href="#V3.1.1_Procedures">Procedures</a>,
580    <a href="#V3.1.1_Drivers">Drivers</a>,
581    <a href="#V3.1.1_Platforms">Platforms</a>,
582    <a href="#V3.1.1_Interpreter">Interpreter</a>
583</ul>
584<li><a href="#Version3.1">Version 3.1 (9/20/94)</a>
585<ul>
586<li><a href="#V3.1_Documentation">Documentation</a>,
587    <a href="#V3.1_Procedures">Procedures</a>,
588    <a href="#V3.1_Drivers">Drivers</a>,
589    <a href="#V3.1_Interpreter">Interpreter</a>,
590    <a href="#V3.1_Streams">Streams</a>,
591    <a href="#V3.1_Library">Library</a>
592</ul>
593<li><a href="#Version3.0.3">Version 3.0.3 (9/16/94)</a>
594<ul>
595<li><a href="#V3.0.3_Documentation">Documentation</a>,
596    <a href="#V3.0.3_Procedures">Procedures</a>,
597    <a href="#V3.0.3_Utilities">Utilities</a>,
598    <a href="#V3.0.3_Drivers">Drivers</a>,
599    <a href="#V3.0.3_Platforms">Platforms</a>,
600    <a href="#V3.0.3_Fonts">Fonts</a>,
601    <a href="#V3.0.3_Streams">Streams</a>,
602    <a href="#V3.0.3_Interpreter">Interpreter</a>,
603    <a href="#V3.0.3_Library">Library</a>
604</ul>
605<li><a href="#Version3.02">Version 3.02 (8/30/94)</a>
606<ul>
607<li><a href="#V3.02_Documentation">Documentation</a>,
608    <a href="#V3.02_Procedures">Procedures</a>,
609    <a href="#V3.02_Utilities">Utilities</a>,
610    <a href="#V3.02_Drivers">Drivers</a>,
611    <a href="#V3.02_Platforms">Platforms</a>,
612    <a href="#V3.02_Fonts">Fonts</a>,
613    <a href="#V3.02_Interpreter">Interpreter</a>,
614    <a href="#V3.02_Streams">Streams</a>,
615    <a href="#V3.02_Library">Library</a>
616</ul>
617<li><a href="#Version3.01">Version 3.01 (8/14/94)</a>
618<ul>
619<li><a href="#V3.01_Documentation">Documentation</a>,
620    <a href="#V3.01_Procedures">Procedures</a>,
621    <a href="#V3.01_Utilities">Utilities</a>,
622    <a href="#V3.01_Drivers">Drivers</a>,
623    <a href="#V3.01_Platforms">Platforms</a>,
624    <a href="#V3.01_Fonts">Fonts</a>,
625    <a href="#V3.01_Interpreter">Interpreter</a>,
626    <a href="#V3.01_Streams">Streams</a>,
627    <a href="#V3.01_Library">Library</a>
628</ul>
629<li><a href="#Version3.0">Version 3.0 (8/1/94)</a>
630<ul>
631<li><a href="#V3.0_Documentation">Documentation</a>,
632    <a href="#V3.0_Procedures">Procedures</a>,
633    <a href="#V3.0_Utilities">Utilities</a>,
634    <a href="#V3.0_Drivers">Drivers</a>,
635    <a href="#V3.0_Platforms">Platforms</a>,
636    <a href="#V3.0_Fonts">Fonts</a>,
637    <a href="#V3.0_Interpreter">Interpreter</a>,
638    <a href="#V3.0_Streams">Streams</a>,
639    <a href="#V3.0_Library">Library</a>
640</ul>
641</ul></blockquote>
642
643<!-- [1.2 end table of contents] =========================================== -->
644
645<!-- [1.3 begin hint] ====================================================== -->
646
647<p>
648This document is a history of Ghostscript releases numbered 3.n.  For more
649recent changes, see the the other history documents and, for the latest
650versions, the news:
651
652<blockquote>
653<a href="News.htm">News</a><br>
654<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
655History of Ghostscript versions 3.n (this document)<br>
656<a href="History2.htm">History of Ghostscript versions 2.n</a><br>
657<a href="History1.htm">History of Ghostscript versions 1.n</a>
658</blockquote>
659
660<p>For other information, see the <a href="Readme.htm">Ghostscript
661overview</a>.
662
663<!-- [1.3 end hint] ======================================================== -->
664
665<hr>
666
667<!-- [1.0 end visible header] ============================================== -->
668
669<h2><a name="Version3.70p1"></a>Version 3.70 patch 1 (6/24/96)</h2>
670
671<p>
672This contains a few last-minute patches before the release.
673
674<h3><a name="V3.70p1_Procedures"></a>Procedures</h3><pre>
675Comments out the color inkjet drivers in the cc-based makefile, because a
676bug in Sun's cc prevents them from compiling.  (cc-head.mak)
677
678</pre><h3><a name="V3.70p1_Drivers"></a>Drivers</h3><pre>
679Fixes bugs:
680	- The os2prn driver smashed memory.  (gdevos2p.c)
681	- Some initialized structures weren't declared 'static'.
682(gdevpdf.c, gdevpdfm.c)
683	- The PNG driver wouldn't compile with some older versions of the
684PNG library.  (gdevpng.c)
685
686</pre>
687
688<h2><a name="Version3.70"></a>Version 3.70 (limited) (6/23/96)</h2>
689
690<p>
691This is the candidate fileset for 4.0.  Aside from one optimization
692for the PDF writer, the only changes are bug fixes.
693
694<h3><a name="V3.70_Documentation"></a>Documentation</h3><pre>
695
696Renames all the documentation files from *.doc to *.txt, since the .doc
697extension didn't give any information about the format of the file.
698(readme, *.doc, *.txt)
699
700Notes that IJG JPEG library v6[a] is now required.  (jpeg.mak)
701
702Brings ps2pdf.1 up to date.  (ps2pdf.1)
703
704Adds a new file describing Aladdin's C coding practices.  (c-style.txt)
705
706Updates the man pages to refer to version 4.0.  (gs.1, pdf2ps.1, ps2ascii.1,
707ps2pdf.1)
708
709</pre><h3><a name="V3.70_Procedures"></a>Procedures</h3><pre>
710
711Changes some file names to fit within the MS-DOS 8.3 limit.  (gs.mak)
712
713Adds the PDF writer to the remaining 32-bit configurations (Watcom, OS/2,
714MSC).  (watc.mak, watcwin.mak, os2.mak, msc.mak, msvcwint.mak)
715
716Changes the -sFONTMAP= switch so it can take a list of font names, like a
717search path.  (use.txt)
718
719</pre><h3><a name="V3.70_Drivers"></a>Drivers</h3><pre>
720
721Fixes bugs:
722	- Signed and unsigned values were mixed inconsistently.  (gdevcdj.c)
723	- PDF files could contain e-format floating point numbers, which the
724PDF specification doesn't allow.  (gdevpdfx.h, gdevpdf*.c)
725	- The PDF writer didn't handle glyphshow properly.  (gs_pdfwr.ps)
726	- The PDF writer did the wrong thing with fonts whose FontMatrix had
727a non-zero translation component.  (gs_pdfwr.ps, gdevpdft.c)
728	- The stand-alone bounding box device could crash when setting
729parameters.  (gdevbbox.c)
730	- The mswinpr2 driver smashed memory.  (gdevwpr2.c)
731
732Changes the PDF writer so that if it encounters a re-encoded character, it
733tries to map it to an encoded character in the standard (ISO Latin-1)
734encoding rather than converting the entire string containing it to a bitmap.
735This dramatically improves output file size for files with a few divergently
736encoded characters, but it may cause the text in the PDF file to differ from
737the text in the PostScript input.  (gdevpdft.c)
738
739Disallows BitsPerPixel=16 in the MS Windows and OS/2 drivers, since this bit
740depth is not supported by Windows and would require special extra buffering.
741(install.txt, dwtext.h, dwtext.cpp, gdevmswn.c, gdevpm.c, gdevwpr2.c)
742
743</pre><h3><a name="V3.70_Platforms"></a>Platforms</h3><pre>
744
745Fixes bugs:
746	- On the PC platforms, file names weren't changed to reflect the
747value of CONFIG.  (gs.mak, bc*.mak, ms*.mak, os2.mak, tc*.mak, watc*.mak,
748wccommon.mak)
749
750Modifies some makefiles for greater reusability.  (bclib.mak, watclib.mak)
751
752</pre><h3><a name="V3.70_Fonts"></a>Fonts</h3><pre>
753
754Changes the font searching rules in the following NON-BACKWARD-COMPATIBLE
755way: (gs_fonts.ps, gs_res.ps)
756	- -sFONTMAP=files specifies a list of files containing fontmaps;
757previously, it specified only a single fontmap file.
758	- If -sFONTMAP= is not used, the interpreter reads the Fontmaps from
759*all* directories on the search path, and does so even if FONTPATH or
760GS_FONTPATH is set; previously, it read only the first Fontmap, and only if
761[GS_]FONTPATH was not set.
762	- Fontmap(s) take precedence over [GS_]FONTPATH; previously,
763[GS_]FONTPATH caused Fontmap to be ignored.  (You can still force Fontmap to
764be ignored with -dNOFONTMAP.)
765	- Earlier [GS_]FONTPATH entries take precedence over later;
766previously, later entries took precedence over earlier.  Note that this is
767different from Fontmap: earlier Fontmaps in the search path take precedence
768over later, but within a single Fontmap, later entries take precedence over
769earlier (for backward compatibility).
770	- [GS_]FONTPATH is consulted only if there is no Fontmap entry for a
771font, or no Fontmap entry leads to successful loading; previously,
772[GS_]FONTPATH was always consulted at startup.
773	- If loading a font fails, the interpreter tries the next Fontmap
774entry; previously, it fell back to font substitution.
775
776</pre><h3><a name="V3.70_Interpreter"></a>Interpreter</h3><pre>
777
778Fixes bugs:
779	- Filters didn't peek ahead for an EOD (see Streams below).
780(zfileio.c, zpaint.c)
781
782Splits up a file to allow internal access to user and system parameters even
783in Level 1.  (zmisc2.c, zusparam.c)
784
785Adds LIBPATH as a predefined name in systemdict.  Its value is an array of
786strings comprising the library search path.  (imain.c)
787
788</pre><h3><a name="V3.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
789
790Fixes bugs:
791	- A Dests dictionary entry with an array (rather than a dictionary)
792value caused an error.  (pdf_main.ps)
793	- Rotated pages could have incorrect translation and/or clipping.
794(pdf_main.ps)
795
796</pre><h3><a name="V3.70_Streams"></a>Streams</h3><pre>
797
798Fixes bugs:
799	- If a buffer boundary fell just before an EOD, and the client read
800exactly as much data as was present before the EOD, filters didn't consume
801the EOD.  (This is required as a tricky consequence of the Adobe
802specification.)  (stream.h, strimpl.h, stream.c)
803
804</pre><h3><a name="V3.70_Library"></a>Library</h3><pre>
805
806Fixes bugs:
807	- An extra column of bits could get turned on at the right edge of
808masked or monochrome images.  (gximage2.c)
809	- Rasterizing very long curves could cause arithmetic errors or
810floating point overflows.  (gxpcopy.c)
811	- Banding with large line widths could truncate curves or introduce
812spurious lines.  (gxclpath.c)
813
814</pre>
815
816<hr>
817
818<h2><a name="Version3.69"></a>Version 3.69 (limited) (6/14/96)</h2>
819
820<p>
821More bug fixes, plus one irresistible new feature: the ability to use
822TrueType fonts as freely as Type 1 fonts.  Also, one new feature (outside
823clipping) that was needed for Aladdin's PCL XL project.  We incremented the
824version number because of the change in trapezoid and path filling (see
825under Library below).
826
827<h3><a name="V3.69_Documentation"></a>Documentation</h3><pre>
828Brings documentation about fonts up to date.  (fonts.doc)
829
830Updates current.doc to reflect changes since 3.53.  (current.doc)
831
832Updates the DLL documentation to reflect recent changes.  (dll.doc)
833
834Documents a workaround for the code generation bug in gcc 2.7.x.  (make.doc)
835
836Changes the contact information for potential commercial customers in
837Europe.  (new-user.doc)
838
839Updates the OS/2 documentation to make it current.  (install.doc, make.doc)
840
841Documents -dCOLORSCREEN=0.  (use.doc)
842
843</pre><h3><a name="V3.69_Procedures"></a>Procedures</h3><pre>
844
845Fixes bugs:
846	- 'make clean' didn't work in the Watcom environment.
847(wmakebat.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak, tccommon.mak,
848unixhead.mak, wccommon.mak)
849	- The X11 libraries were listed in an incorrect order.
850(ansihead.mak, cc-head.mak, gcc-head.mak, ugcclib.mak, unix-end.mak)
851	- The OS/2 makefile didn't ignore errors from `erase' commands.
852(os2.mak)
853
854Adds the PDF writer to the 32-bit MS Windows configuration.  (bcwin32.mak)
855
856Adds the PNG drivers to the 32-bit MS Windows platform, since they now
857compile properly.  (bcwin32.mak)
858
859Changes the ttfont feature so that it refers to support for direct usage of
860TrueType fonts; puts support for Type 42 fonts into a separate feature
861(type42).  (gs.mak, int.mak)
862
863Adds direct TrueType font support to the Windows platforms.  (bcwin.mak,
864bcwin32.mak)
865
866Rewrites vms.mak to be structured more like the other makefiles.  (vms.mak,
867modules.lis)
868
869Makes the device lists in vms-*.mak the same as those for the Unix
870configurations.  (vms-cc.mak, vms-decc.mak, vms-gcc.mak)
871
872Changes the default X library directory for gcc to /usr/X11/lib.
873(gcc-head.mak)
874
875Adds the list of devices to --help, since HylaFax depends on this.
876(imainarg.c)
877
878Adds -dCOLORSCREEN=0 to indicate use of 4 separate color screens with the
879same frequency and angle.  (gs_init.ps)
880
881</pre><h3><a name="V3.69_Utilities"></a>Utilities</h3><pre>
882
883Fixes bugs:
884	- When ps2epsi encountered a blank page, it called the
885(undocumented) .quit operator with only one argument, causing a stack
886underflow.  (ps2epsi.ps)
887	- An extraneous file was included in the fileset.  (checkacc.ps)
888	- A file was omitted from the fileset.  (bench.c)
889	- Images in PostScript files produced by pdf2ps were processed about
89050 times slower than they should have been.  (gs_pdf.ps)
891
892</pre><h3><a name="V3.69_Drivers"></a>Drivers</h3><pre>
893
894Fixes bugs:
895	- An #include was omitted.  (gdevpdfi.c)
896	- The BJC driver could get into an inconsistent state.  (gdevcdj.c)
897	- Braces were omitted around the values for two initialized byte
898arrays.  (gdevpcx.c)
899	- A function used 'float' in its argument list, causing problems in
900mixed ANSI/non-ANSI compilation.  (gdevcdj.c)
901	- signed and unsigned char pointers were used inconsistently.
902(gdevcdj.c, gdevcgml.c)
903	- Some header files weren't protected against double inclusion.
904(gdevprn.h, gdevtifs.h)
905	- The 24-bit PNG driver included unnecessary copies of the color
906mapping procedures.  (gdevpng.c)
907
908Fixes bugs in the PDF writer:
909	- The PDF writer sometimes produced a double // in front of a filter
910name.  (gdevpdfi.c)
911	- The PDF writer produced zero-width, zero-height images for
912non-standard fonts.  (bug introduced since 3.68) (gdevpdfi.c)
913	- The PDF writer got confused if the input file invoked
914setpagedevice.  (gdevpdfp.c)
915	- The PDF writer put annotations on the page after the one they were
916supposed to be on.  (gdevpdf.c)
917	- The PDF writer sometimes failed to set the font when needed.
918(gdevpdf.c)
919	- The PDF writer could produce in-line images that were too large.
920(gdevpdfi.c)
921	- The PDF writer didn't scale explicit character and word spacing
922(ashow/widthshow/awidthshow) properly.  (gdevpdft.c)
923	- The PDF writer didn't copy named destination or article title
924strings, possibly leading to dangling pointers.  (gdevpdf.c, gdevpdfm.c)
925	- The PDF writer produced incorrect output for re-encoded fonts.
926(It now converts any string containing characters in non-standard positions
927to bitmaps; this will be fixed in a later release.)  (gs_pdfwr.ps,
928gdevpdfx.h, gdevpdfp.c, gdevpdft.c)
929
930Updates a few drivers for the change in the handling of band device
931procedures.  (gdevcp50.c, gdevdjet.c)
932
933Updates the X Windows driver for strip halftones.  (gdevx.c)
934
935Adds anti-aliasing capability to the os2pm device.  (gdevpm.c)
936
937Increases the sizes of some tables in the PDF writer.  (gdevpdfx.h)
938
939</pre><h3><a name="V3.69_Platforms"></a>Platforms</h3><pre>
940
941Fixes bugs:
942	- A patch for the MS Windows platform was accidentally omitted.
943(gp_mswin.c)
944	- A block of code was accidentally duplicated.  (dwmain.cpp)
945	- An identifier exceeded VAX VMS C's limit of 31 characters.
946(gscspace.h)
947	- File name enumeration didn't work properly on Unix systems
948(still/again).  (gp_unifs.c)
949	- On MS Windows, If you closed Ghostscript with the system menu, you
950only closed the text window; Ghostscript kept running and you had to use the
951task manager to kill it.  (dwmain.cpp, dwmainc.cpp, dwtext.cpp)
952	- Some DLL-related typedefs were not consistent.  (dwdll.h, gsdll.h,
953dpmainc.c, dwdll.cpp)
954	- Attempts to call the DLL before it was initialized were not
955detected.  (gsdll.c)
956	- Bitmap line lengths were rounded up even on 32-bit Windows, which
957doesn't want this.  (gdevwdib.c)
958
959Further improves the handling of attempts to use the DLL when it is already
960in use.  (dwdll.cpp, gsdll.c)
961
962Adds a DLL-compatible main program for OS/2.  (dpmainc.c, gp_os2.c, gsdll.c)
963
964</pre><h3><a name="V3.69_Fonts"></a>Fonts</h3><pre>
965
966Fixes bugs:
967	- The WingDings TrueType font wasn't loaded properly.  (gs_ttf.ps)
968
969Makes changes so that TrueType fonts can appear in the Fontmap and can be
970loaded directly.  (gs_fonts.ps, gs_ttf.ps)
971
972</pre><h3><a name="V3.69_Interpreter"></a>Interpreter</h3><pre>
973
974Fixes bugs:
975	- Executing a .quit with only 1 element on the operand stack caused
976an invalid access.  (zcontrol.c)
977	- The usage help message contained incorrect double %%s.
978(imainarg.c)
979	- If an initialization file tried to use any Encodings other than
980the 4 registered ones, it couldn't find them.  (gs_init.ps, gs_res.ps)
981	- Places that expected arrays of coordinates (rectangles,
982x/y/xyshow) didn't accept packed arrays.  (ibnum.c, zdps1.c)
983	- filterdict was still visible after initialization.  (gs_init.ps)
984	- The usage error message wasn't terminated by a newline.
985(imainarg.c)
986	- setcacheparams (or setting the MaxFontCache user parameter) didn't
987actually affect the size of the character cache.  (zfont.c, zmisc2.c)
988	- The main interpreter loop declared iref as a ref *, even though it
989may only be a ref_packed *.  (iref.h, interp.c)
990
991Changes the character cache so it ignores absurd FontBBox values.  Nothing
992in the Adobe spec suggests doing this, but it is necessary for handling
993questionable output produced by PageMaker 5.0 (an Adobe product!).
994(zchar1.c)
995
996Changes some type declarations slightly to reduce the number of 'discarding
997const' compiler warnings.  (igc.h, igc.c, igcref.c)
998
999Adds .setclipoutside and .currentclipoutside operators for accessing the new
1000outside clipping capability.  (zpath.c)
1001
1002Adds the dictionary stack to the information printed in case of a fatal
1003problem.  (imain.c)
1004
1005Adds .set/currentrenderalgorithm operators for testing.  (zrop.c)
1006
1007</pre><h3><a name="V3.69_Library"></a>Library</h3><pre>
1008
1009Fixes bugs:
1010	- The TrueType rasterizer didn't map quadratic to cubic splines
1011well, and didn't handle off-curve points at the end of a contour properly.
1012(gstype42.c)
1013	- An #include was omitted.  (gsimage.c, gxclimag.c)
1014	- Some compilers complained about statements with no effect, or
1015comma operators with no effect on the left.  (gschar.c, gxcpath.c, gxfill.c)
1016	- TrueType or Type 42 glyphs with a repeat count that crossed a
1017contour boundary produced incorrect output.  (gstype42.c)
1018	- TrueType / Type 42 composite glyphs involving rotation were placed
1019incorrectly.  (gstype42.c)
1020	- Type 42 fonts with an absent or incorrect FontBBox could fail to
1021produce output.  (gstype42.c)
1022	- Some header files weren't protected against double inclusion.
1023(gsio.h, gdebug.h)
1024	- Decoding filters didn't "look ahead" to detect EOD, so if the last
1025read operation before closing the filter ended just before the EOD mark, the
1026EOD mark might not be absorbed.  (stream.h, stream.c)
1027	- Filling paths consisting of multiple subpaths that overlap in Y
1028produced slightly inaccurate output.  We were unable to find a way to fix
1029this without making a NON-BACKWARD-COMPATIBLE change in the interface for
1030the recently introduced fill_trapezoid device procedure.  (gxdevice.h,
1031gdevbbox.c, gdevddrw.c, gdevnfwd.c, gxfill.c)
1032	- When banding, get_bits didn't detect calls with out-of-range Y
1033values.  (gxclread.c)
1034	- setcacheparams didn't actually affect the size of the character
1035cache.  (gsfont.h, gxbcache.h, gxfcache.h, gschar.c, gsfont.c, gxbcache.c,
1036gxccman.c, gxclbits.c)
1037	- When banding, colored halftones could be mangled.  (gxclread.c)
1038
1039Fixes bugs in the bounding box device:
1040	- The bounding box device could give bizarre results if any objects
1041crossed the lower edge of the page.  (gdevbbox.c)
1042	- The bounding box device could get a memory access error when
1043processing image data.  (gdebbox.c)
1044	- The bounding box device ran the default drawing algorithms even if
1045it had no target (performance bug only).  (gdevbbox.c)
1046	- The bounding box device computed an incorrect (too small) box for
1047partially clipped bitmap images.  (gdevbbox.c)
1048	- The bounding box device got confused by files that filled the
1049entire page with a background color.  (gdevbbox.c)
1050	- The bounding box device produced infinite-height boxes for certain
1051kinds of data.  (gdevbbox.c)
1052
1053Changes some type declarations slightly to reduce the number of 'discarding
1054const' compiler warnings.  (gsmemory.h, gsstruct.h)
1055
1056Adds the capability of clipping to the outside rather than the inside of the
1057clipping path.  This is required for emulating an obscure feature of the
1058Microsoft Windows GDI.  (gspath.h, gxclpath.h, gxpath.h, gxcpath.h,
1059gzcpath.h, gspath.c, gxacpath.c, gxclpath.c, gxclread.c, gxcpath.c.)
1060
1061Makes it possible for band devices to select the underlying memory device
1062used to accumulate the actual bits.  This is required for (at least) PCL5
1063emulation.  This requires adding a procedure to the gx_device_printer
1064structure, which, for devices that initialize the structure without using
1065the macros in gdevprn.h or access the printer-specific procedures directly,
1066is a NON-BACKWARD-COMPATIBLE change.  (gdevprn.h, gxclist.h, gxdevice.h,
1067gdevdflt.c, gdevprn.c, gxclread.c)
1068
1069Speeds up handling of rotated or halftoned masked images.  (gximage2.c)
1070
1071Adds an output_page procedure to the bounding box device, for testing.
1072(gdevbbox.c)
1073
1074Adds a sample device that keeps track of the "render algorithm", for PCL5c
1075emulation.  (gdevrrgb.c)
1076
1077</pre>
1078
1079<h2><a name="Version3.68p4"></a>Version 3.68 patch 4 (5/23/96)</h2>
1080
1081<p>
1082More minor bug fixes, mostly related to the MS Windows implementation.
1083
1084<h3><a name="V3.68p4_Documentation"></a>Documentation</h3><pre>
1085Further updates various doc files to make them more useful to new users.
1086(NEWS, README, current.doc, helpers.doc, new-user.doc)
1087
1088Adds user-contributed documentation for ps2pdf.  (ps2pdf.doc, unix-end.mak)
1089
1090Documents a bug in the Borland C++ 4.52 compiler, and where to find the
1091patch for it.  (make.doc)
1092
1093</pre><h3><a name="V3.68p4_Procedures"></a>Procedures</h3><pre>
1094
1095Fixes bugs:
1096	- A command line exceeded the MS-DOS 120 character limit.
1097(devs.mak)
1098
1099A file was accidentally omitted from the fileset.  (wmakebat.bat)
1100
1101</pre><h3><a name="V3.68p4_Drivers"></a>Drivers</h3><pre>
1102
1103Fixes bugs:
1104	- Many of the 'show' operators didn't work properly if the PDF
1105writer was included in the configuration.  (gs_pdfwr.ps)
1106	- x_wrap_get_bits was ridiculously slow.  (It still is, but not
1107quite as ridiculously.)  (gxcindex.h, gdevxalt.c)
1108	- The PDF writer generated CR instead of CalRGB, which is legal per
1109the Adobe spec but not compatible with some Adobe Acrobat products.
1110(gdevpdfi.c)
1111	- Some signed/unsigned discrepancies caused compilation warnings.
1112(gdevpdfm.c, gdevpdfp.c, gdevpdft.c)
1113
1114Fixes bugs in the Windows driver:
1115	- An accidentally opened tiny window didn't get closed.
1116(gdevwdib.c)
1117	- The name DllInit was misleading, and this procedure wasn't being
1118called whtn the DLL was loaded, so the DLL couldn't know the instance
1119handle.  (gp_mswin.c)
1120	- The code didn't recognize Win32s (vs. Windows 95) correctly.
1121(dwmain.cpp, gdevwdib.c, gp_mswin.h, gp_mswin.c, gsdll16.rc)
1122	- Some compiler warnings needed fixing.  (gdevwdib.c)
1123	- gsdll16.def and gsdll32.def were different.  (gsdll32.def)
1124	- A GPF leaving the 16-bit DLL loaded could make the DLL permanently
1125unusable.  (dwmain.cpp)
1126	- Two obsolete files were still included in the fileset.
1127(gswin.def, gswin32.def)
1128
1129Adds a compile-time option to the 'bit' drivers to expand 4-bit pixels to
113032-bit.  This was required for tracking down customer problems, because the
1131only tools we have available for displaying CMYK images require 32 bits per
1132pixel.  (gdevbit.c)
1133
1134</pre><h3><a name="V3.68p4_Platforms"></a>Platforms</h3><pre>
1135
1136Fixes bugs:
1137	- In DEC C, &lt;time.h&gt; does define the timeval struct.  (time_.h)
1138
1139Changes gsdll_init() to take an additional argument, a window handle.  This
1140is a NON-BACKWARD-COMPATIBLE change.  (dll.doc, dwdll.h, gsdll.h, dwdll.cpp,
1141dwmain.cpp, dwmainc.cpp, gsdll.c)
1142
1143</pre><h3><a name="V3.68p4_Fonts"></a>Fonts</h3><pre>
1144
1145Updates more Fontmaps to include the new URW++ fonts.  (Fontmap.OS2,
1146Fontmap.ATM)
1147
1148</pre><h3><a name="V3.68p4_Interpreter"></a>Interpreter</h3><pre>
1149
1150Fixes bugs:
1151	- The default operator array table wasn't big enough.  (iinit.c)
1152	- Some signed/unsigned discrepancies caused compilation warnings.
1153(imain.c, imainarg.c, zfile.c)
1154
1155Adds encoding vectors for Windows 3.1 Latin 1, Latin 2, and Latin 5
1156encodings.  None of these are loaded in the standard configuration.
1157(gs_wl{1,2,5}_e.ps)
1158
1159</pre><h3><a name="V3.68p4_Library"></a>Library</h3><pre>
1160
1161Fixes bugs:
1162	- Some tracing output was incorrect or missing.  (gxdither.c)
1163	- Resized objects in the C heap had incorrect bookkeeping
1164information (bug introduced in 3.68).  (gsmemory.c)
1165	- Image pixels that fell exactly on device half-pixel boundaries
1166could get discarded.  (gximage0.c)
1167	- The bounding box device didn't set a variable properly and didn't
1168implement end_image, leading to invalid memory accesses.  (gdevbbox.c)
1169	- Fonts with BuildChar routines written in C didn't work properly
1170with kshow or xyshow.  (gschar.c)
1171
1172Adds some additional tracing output for Patterns.  (gxpcmap.c)
1173
1174Adds tracing output for freeing malloc'ed blocks at the end of execution.
1175(gsmemory.c)
1176
1177Adds a gs_dashpath procedure that expands dashes in the same way that
1178gs_flattenpath expands curves.  (gspath.h, gspath1.c)
1179
1180</pre>
1181
1182<h2><a name="Version3.68p3"></a>Version 3.68 patch 3 (5/17/96)</h2>
1183
1184<p>
1185More bug fixes during the beta test period.  AccurateScreens now works
1186properly.
1187
1188<h3><a name="V3.68p3_Procedures"></a>Procedures</h3><pre>
1189Fixes bugs:
1190	- The help message was too long to fit on a PC screen or standard
1191terminal.  (imainarg.c)
1192	- Failure to run tar_cat wasn't detected.  (unix-end.mak,
1193unixtail.mak)
1194
1195</pre><h3><a name="V3.68p3_Utilities"></a>Utilities</h3><pre>
1196Fixes bugs:
1197	- In the PostScript files produced by pdf2ps, images using ASCII85
1198encoding would cause a typecheck error.  (gs_pdf.ps)
1199	- pdf2ps wrote out strings longer than 200 characters incorrectly.
1200(pdf_2ps.ps)
1201
1202</pre><h3><a name="V3.68p3_Drivers"></a>Drivers</h3><pre>
1203
1204Fixes bugs in gdevcdj.c (according to the author, we have no way to test
1205this):
1206	- The driver used to use Colors as well as ProcessColorModel to
1207define the process color model.  (devices.doc, gdevbjc.h, gdevcdj.c)
1208	- Incorrect or inconsistent settings of BitsPerPixel and
1209ProcessColorModel, or setting one but not the other, could leave the driver
1210in an inconsistent state.  (gdevcdj.c)
1211
1212Fixes bugs in the MS Windows driver:
1213	- Insufficient memory for the backing bitmap could cause a GPF.
1214(gdevmswn.c, gdevwdib.c)
1215	- Invalid parameters could cause a crash within the DLL code.
1216(gdevwdib.c)
1217
1218Adds a user-contributed driver for the CalComp Raster Format.  (devs.mak,
1219gdevccr.c)
1220
1221Adds an anti-aliasing option for MS Windows.  (gdevmswn.c, gdevwdib.c)
1222
1223</pre><h3><a name="V3.68p3_Platforms"></a>Platforms</h3><pre>
1224
1225Fixes bugs in the Windows platform:
1226	- One had to type "quit" twice to exit.  (dwdll.h, dwdll.cpp)
1227
1228</pre><h3><a name="V3.68p3_Interpreter"></a>Interpreter</h3><pre>
1229
1230Fixes bugs:
1231	- Platform fonts didn't work properly if the document's primary
1232encoding was the standard MS Windows encoding.  (ifont.h, gs_wan_e.ps)
1233	- stringwidth with a Type 1 font could give a spurious typecheck
1234error (bug introduced in 3.65).  (zcharout.c)
1235	- If a DOS editor added a ^Z to the end of the Fontmap file, an
1236error occurred during initialization.  (gs_fonts.ps)
1237	- Halftones that didn't specify a value for AccurateScreens
1238sometimes ignored the setting of the AccurateScreens user parameter.
1239(zht2.c)
1240
1241</pre><h3><a name="V3.68p3_Library"></a>Library</h3><pre>
1242
1243Fixes bugs:
1244	- gs_join_none was defined, but not implemented.  (gxstroke.c)
1245	- A bookkeeping list for fonts could get confused, causing invalid
1246memory accesses.  (gsfont.c)
1247	- An I/O error or internal error would cause the band list
1248rasterizer to go into an infinite loop.  (gxclread.c)
1249	- The algorithm for choosing screen angles and frequencies produced
1250poor results.  (gshtscr.c)
1251	- Color screens were broken (bug introduced in 3.68).  (gxdht.h,
1252gzht.h, gsht.c, gshtscr.c)
1253
1254</pre>
1255
1256<h2><a name="Version3.68p2"></a>Version 3.68 patch 2 (5/13/96)</h2>
1257
1258<p>
1259This is another set of patches for the next general release.
1260
1261<h3><a name="V3.68p2_Documentation"></a>Documentation</h3><pre>
1262Fixes bugs:
1263	- Windows NT and Windows 95 implementations were identified as
1264"under development" rather than available.  (README)
1265	- There were several other minor errors in the README file.
1266(README)
1267	- The claimed current IJG JPEG version was incorrect.  (jpeg.mak)
1268
1269Splits off information for new users into a separate file.  (README,
1270new-user.doc)
1271
1272</pre><h3><a name="V3.68p2_Procedures"></a>Procedures</h3><pre>
1273
1274Fixes bugs:
1275	- gettimeofday takes 2 arguments on SVR4 systems more recent than
1276SVR4.0.  (make.doc, ansihead.mak, cc-head.mak, gcc-head.mak, time_.h)
1277
1278Changes the default Unix data installation directory from /usr/local/lib to
1279/usr/local/share, which seems to be favored by more recent Unix systems
1280(except for some Linux versions, which still use /usr/local/lib, and BSD/OS,
1281which puts Ghostscript in /usr/contrib/lib.)  (ansihead.mak, cc-head.mak,
1282gcc-head.mak, ugcclib.mak)
1283
1284Changes the unset commands in the Unix script to assignments, because a few
1285older Unix shells don't provide unset.  (unixtail.mak)
1286
1287</pre><h3><a name="V3.68p2_Drivers"></a>Drivers</h3><pre>
1288
1289Fixes bugs:
1290	- An #include incorrectly referred directly to a system header.
1291(gdevpdft.c)
1292	- CMYK devices took an excessive amount of time clearing the page to
1293white.  (gdevm32.c)
1294
1295Adds a compile-time option to the 'bit' drivers to remove top and bottom
1296whitespace.  This change was required in order to track down a customer bug.
1297(gdevbit.c)
1298
1299</pre><h3><a name="V3.68p2_Interpreter"></a>Interpreter</h3><pre>
1300
1301Updates the interpreter for the split in the gstate API.  (igstate.h)
1302
1303</pre><h3><a name="V3.68p2_Streams"></a>Streams</h3><pre>
1304
1305Fixes bugs:
1306	- Some compilers don't define NULL widely enough.  (spngp.c)
1307
1308</pre><h3><a name="V3.68p2_Library"></a>Library</h3><pre>
1309
1310Fixes bugs:
1311	- There was a minor typo (&amp; for &amp;&amp;) that didn't affect execution.
1312(gxccman.c)
1313	- There was a trailing comma in an enumeration.  (gsiparam.h)
1314	- Internal and public interfaces weren't separated properly.  THIS
1315IS A NON-BACKWARD-COMPATIBLE CHANGE for clients using certain undocumented
1316interfaces to the graphics state.  (gsstate.h, gxstate.h, gzstate.h,
1317gsstate.c)
1318	- A 'private' declaration was missing (yet again).  (gxclimag.c)
1319
1320</pre>
1321
1322<h2><a name="Version3.68p1"></a>Version 3.68 patch 1 (5/10/96)</h2>
1323
1324<p>
1325This is the first bug fix (patch) incremental release for the next
1326general release.
1327
1328<h3><a name="V3.68p1_Procedures"></a>Procedures</h3><pre>
1329Fixes bugs:
1330	- Many Windows-specific files were omitted from the previous
1331fileset: dw*.rc, dw*.cpp.
1332
1333</pre>
1334
1335<h2><a name="Version3.68"></a>Version 3.68 (limited) (5/9/96)</h2>
1336
1337<p>
1338This release cleans up the new Windows files, mostly implements the
1339high-level driver API for bitmap images, and adds practical strip
1340(AccurateScreens) halftoning.  This is the first "serious beta" fileset for
1341the next general release.  It still has more problems than I would have
1342liked.
1343
1344<h3><a name="V3.68_Documentation"></a>Documentation</h3><pre>
1345Fixes bugs:
1346	- The names of the executable files for MS Windows were out of date.
1347(make.doc)
1348	- gxcindex.h still referred to "drawing color".  (gxcindex.h)
1349	- The name of the default font directory for Unix systems was
1350incorrect.  (make.doc)
1351
1352Moves the list of files required for installation, and some other
1353installation instructions, from make.doc to install.doc.  (install.doc,
1354make.doc)
1355
1356Adds a description of the PNGPredictor filters.  (language.doc)
1357
1358Updates the documentation of the higher-level driver procedures to match the
1359specification changes.  (drivers.doc)
1360
1361Documents the change in the Watcom build procedure.  (make.doc)
1362
1363Improves the documentation of bitmap IDs.  (gxbitmap.h)
1364
1365Adds documentation for the new strip_tile_rectangle and strip_copy_rop
1366driver procedures.  (drivers.doc)
1367
1368Changes the few remaining direct FTP addresses in README to URLs.  (README)
1369
1370Notes that zlib does not compile correctly on IRIX 6.n with optimization.
1371(make.doc)
1372
1373Adds references to PDF and TrueType fonts to language.doc.  (language.doc)
1374
1375Updates fonts.doc to remove references to fonts.mak.  (fonts.doc)
1376
1377Describes how to substitute an LZW compressor for the LZW-compatible
1378compressor provided in the standard release.  (make.doc)
1379
1380</pre><h3><a name="V3.68_Procedures"></a>Procedures</h3><pre>
1381
1382Fixes bugs:
1383	- Some lines had exceeded the 120-character limit of the
1384MS-DOS shell.  (int.mak)
1385	- The configuration files weren't generated correctly when CONFIG
1386wasn't an empty string.  (unixhead.mak)
1387
1388Factors out shared DLL makefile rules into a new file.  (bcwin.mak,
1389bcwin32.mak, dwcommon.mak)
1390
1391Makes the cp and rm commands into makefile parameters, allowing automatic
1392generation of build scripts even in the MS-DOS and MS Windows environments
1393where the shell requires the CALL command for sub-scripts.  (*.mak,
1394genconf.c)
1395
1396Adds the PDF writer to the default Unix configurations.  (ansihead.mak,
1397cc-head.mak, gcc-head.mak)
1398
1399Adds TrueType support to all Level 2 configurations.  (int.mak)
1400
1401Removes fonts.mak, which is no longer relevant.  (fonts.mak)
1402
1403Brings the font compilation procedures up to date.  (cfonts.mak, int.mak)
1404
1405</pre><h3><a name="V3.68_Utilities"></a>Utilities</h3><pre>
1406
1407Fixes bugs:
1408	- There was an extra 'show' in one file.  (align.ps)
1409
1410</pre><h3><a name="V3.68_Drivers"></a>Drivers</h3><pre>
1411
1412Fixes bugs:
1413	- The bit devices were missing the map_color_rgb procedure.
1414(gdevbit.c)
1415	- The MS Windows driver sent a redundant message. (gdevmswn.c)
1416
1417Adds a device that keeps track of the page bounding box.  This device is not
1418included in any standard configuration.  (drivers.doc, gdevbbox.h,
1419gsmatrix.h, gsstruct.h, gxdevice.h, gdevbbox.c, gdevnfwd.c, gsmatrix.c)
1420
1421Updates the PDF writer to track the changes in the high-level driver API,
1422and to write out images in a reasonable way.  NOTE: the current
1423implementation doesn't write out CIE color space parameters, so CIE-color
1424images won't be colored accurately.  (gdevpdf.c, gdevpdfi.c)
1425
1426Adds a forwarding procedure for tile_rectangle.  (gxdevice.h, gdevnfwd.c)
1427
1428Changes the copyright notices on the PDF writer to be the same as on the
1429rest of Ghostscript.  (gdevpdf*.[ch])
1430
1431Updates Gunther Hess's Epson Stylus Color driver from 1.21 to 1.90.  (Aladdin
1432Enterprises takes no responsibility for this driver: if you have questions,
1433contact the author.)  (devices.doc, devs.mak, gdevstc*.c, gdevstc.h)
1434
1435</pre><h3><a name="V3.68_Platforms"></a>Platforms</h3><pre>
1436
1437Removes some obsolete MS Windows files and #defines.  (gp_mswtx.h,
1438gp_mswtx.c, gp_mswin.h)
1439
1440Works around a memory limitation in the Watcom make utility.  (wmakebat.bat)
1441
1442</pre><h3><a name="V3.68_Fonts"></a>Fonts</h3><pre>
1443
1444Changes the standard Fontmap from using the low-quality fonts converted from
1445bitmaps to using high-quality fonts recently contributed by URW++.
1446(Fontmap, Fontmap.GS)
1447
1448</pre><h3><a name="V3.68_Interpreter"></a>Interpreter</h3><pre>
1449
1450Fixes bugs:
1451	- A macro containing an if-else, and a macro generating a compound
1452statement, could cause incorrect grouping of 'if' statements.  (files.h,
1453ostack.h)
1454	- .setrasterop didn't pop its operand.  (zrop.c)
1455	- A rounding inaccuracy could cause bounding box rangecheck errors.
1456(gsdps1.c)
1457	- CIE-based images in PDF files didn't work.  (gs_pdf.ps)
1458	- The page parameter .MediaSize didn't get updated when PageSize was
1459set.  (This is just the most recent manifestation of the setpagedevice
1460morass.)  (gs_setpd.ps)
1461	- %lineedit and %statementedit were limited to 160 characters.
1462(zfileio.c, ziodev.c)
1463	- Compiled initialization files didn't work properly.  (geninit.c,
1464gs_l2img.ps)
1465	- Attempting to parse a command line with argc = 0 caused a crash.
1466(imainarg.c)
1467
1468Renames some files to allow separating the non-DLL 'main' procedure into a
1469separate file, and to make the file naming more consistent:
1470	gs.c (except for 'main') =&gt; imainarg.c
1471	gsmain.c =&gt; imain.c
1472gs.c now consists only of 'main'.  The name gs.c is still inconsistent (it
1473should be i- something), but at least it's consistent with the name of the
1474executable.  (*.mak, imain.h, iminst.h, imainarg.h, gs.c, gsmain.c, imain.c,
1475imainarg.c)
1476
1477Adds PNGPredictorEncode/Decode filters, and increases the size of filterdict
1478slightly to make room for them.  (iinit.c, zfpngp.c)
1479
1480Makes zwrite external, per a customer request.  (opextern.h, zfileio.c)
1481
1482Updates clients to work with the new API-based bitmap imaging calls.
1483(iimage.h, zcolor1.c, zimage2.c, zpaint.c)
1484
1485Updates clients for the split in gscspace.h.  (zcie.c, zcolor1.c, zcolor2.c,
1486zcsindex.c, zcssepr.c, zimage2.c, zpaint.c, zpcolor.c)
1487
1488Updates clients for strip-based halftones.  (zpcolor.c)
1489
1490Updates the initialization code to pass the correct (system) allocator to
1491the library initialization.  (imain.c)
1492
1493</pre><h3><a name="V3.68_Streams"></a>Streams</h3><pre>
1494
1495Fixes bugs:
1496	- If a filter reached EOD exactly at the end of reading data for
1497certain operations, it didn't get closed automatically.  (stream.c)
1498	- The LZW-compatible encoding filter reset procedure had an
1499incorrect return type.  (slzwce.c)
1500
1501Changes the ASCIIHexEncode filter to insert \ns in fewer places, to be
1502somewhat more compatible with the Adobe implementation.  (sstring.c)
1503
1504Adds PNGPredictorEncode/Decode filters that implement the pixel prediction
1505algorithms in the PNG specification.  (We'd like to use the code in the PNG
1506library, but it's too deeply embedded in the rest of the PNG machinery, and
1507it also doesn't provide for suspendable I/O.)  (spngpx.h, spngp.c)
1508
1509</pre><h3><a name="V3.68_Library"></a>Library</h3><pre>
1510
1511Fixes bugs:
1512	- A test for pure color was backwards, causing garbage output or
1513possible address or floating point exceptions.  (gxclpath.c)
1514	- A macro containing an if-else could cause incorrect grouping of
1515'if' statements.  (gsrefct.h)
1516	- The default implementation of RasterOp didn't handle the device
1517depth correctly.  (gdevmrop.c)
1518	- The memory device implementation of RasterOp truncated 24-bit
1519constant source or texture values to 8 bits.  (gdevmrop.c)
1520	- A typo caused the garbage collector to miss an internal buffer
1521used when rendering images.  (gximage.h)
1522	- gs_debug_out was only defined if DEBUG was set.  (gdebug.h)
1523	- The raster of horizontally replicated tiles was incorrect.
1524(gxht.c)
1525	- A data type might not be declared, causing a compilation error.
1526(gscoord.h)
1527	- Empty TrueType glyphs weren't handled properly.  (gstype42.c)
1528	- Fonts with a build procedure written in C could cause an invalid
1529memory access.  (gschar.c)
1530	- The initial point of a band list path sometimes didn't get
1531written, causing excess or missing filled regions.  (gxclpath.c)
1532	- Characters between 49 and 56 bits wide were rendered incorrectly
1533when banding.  (gxclbits.c)
1534
1535Renames gsimage*.c as gximage*.c, to reflect more accurately the position of
1536these files in the architecture.  (gsimage*.c, gximage*.c)
1537
1538Fully implements the high-level bitmap image calls in the driver API.  This
1539includes some driver API changes; however, this part of the API was clearly
1540documented as not stable enough to rely on.  (gxdevice.h, gximage.h,
1541gdevbbox.c, gdevddrw.c, gdevnfwd.c, gsimage.c, gximage*.c)
1542
1543Splits the color space header into client and implementation, as with many
1544others.  (gscspace.h, gxcspace.h, gximage.h, gscie.c, gscolor.c, gscolor1.c,
1545gscolor2.c, gscsepr.c, gsimage.c, gspcolor.c, gsstate.c, gxcmap.c,
1546gxpcmap.c)
1547
1548Extends band lists to handle high-level images.  NOTE: This facility is
1549patched out because there is not yet a way to pass the necessary color
1550rendering information through the band list.  (gxcldev.h, gxclist.h,
1551gxclpath.h, gxclimag.c, gxclist.c, gxclpath.c, gxclread.c)
1552
1553Implements fixed2float and float2fixed more efficiently on machines with
1554slow floating point.  (gxfixed.h, gscoord.c, gsmisc.c)
1555
1556Makes one further NON-BACKWARD-COMPATIBLE change in the existing
1557higher-level driver procedures (fill_path, stroke_path, fill_mask): we make
1558the imager state pointer an explicit argument, rather than a member of the
1559gx_fill/stroke_params structure.  We now consider the specification of these
1560procedures stable, and have removed the "subject to change" notice from the
1561documentation.  (gxdevice.h, gxpaint.h, gdevbbox.c, gdevnfwd.c, gxacpath.c,
1562gxclpath.c, gxclread.c, gxfill.c, gxpaint.c, gxstroke.c)
1563
1564Extends halftone bitmaps to include "strip" and "shift" information,
1565allowing halftone cells with arbitrary angles to be stored in space
1566proportional to the number of bits in the cell rather than the square of the
1567number of bits.  This requires adding new (optional) strip_tile_rectangle
1568and strip_copy_rop driver procedures that are like tile_rectangle and
1569copy_rop respectively but accept a strip bitmap rather than an ordinary
1570tile; these procedures supersede tile_rectangle and copy_rop (although these
1571also remain, defined in terms of the new ones).  This also requires making
1572small but NON-BACKWARD-COMPATIBLE changes in several internal interfaces.
1573(gdevmem.h, gdevprn.h, gsdcolor.h, gxbcache.h, gxbitmap.h, gxcldev.h,
1574gxclip2.h, gxclist.h, gxdevice.h, gxdevrop.h, gxdht.h, gxfcache.h,
1575gxhttile.h, gxpcolor.h, gzht.h; gdevabuf.c, gdevbbox.c, gdevdflt.c,
1576gdevm*.c, gdevmpla.c, gdevmrop.c, gdevnfwd.c, gsht.c, gsht1.c, gshtscr.c,
1577gspcolor.c, gsstate.c, gxcht.c, gxclbits.c, gxclip2.c, gxclist.c,
1578gxclpath.c, gxclread.c, gxcpath.c, gxdcolor.c, gxdither.c, gxht.c,
1579gximage2.c, gxpcmap.c, ...)
1580
1581Adds "no join" as a line join type.  NOTE: this is not actually implemented
1582yet.  (gslparam.h)
1583
1584Changes the initialization code so that it passes the system allocator as an
1585argument to module initialization procedures.  While this is theoretically a
1586NON-BACKWARD-COMPATIBLE change, module initialization procedures are not
1587documented and presumably are not used by any code outside the
1588implementation.  (gscdefs.h, gconf.c, gdevmrop.c, gsinit.c, gxclimag.c,
1589gxclpath.c)
1590
1591Splits up gs_lib_init into two procedures, allowing specification of a
1592different default allocator for the library.  (gslib.h, gsinit.c)
1593
1594Adds a resize_object operation to the allocator API.  (gsmemory.h,
1595gsalloc.c, gsmemory.c)
1596
1597</pre>
1598
1599<h2><a name="Version3.67"></a>Version 3.67 (limited) (4/12/96)</h2>
1600
1601<p>
1602This release restructures the MS Windows and OS/2 code to be primarily DLL-
1603rather than EXE-based.  See under Platforms below for more news.  This
1604release was put out in a hurry in order to get the new DLL code into
1605testers' hands; it has more rough edges than usual.
1606
1607<h3><a name="V3.67_Documentation"></a>Documentation</h3><pre>
1608Fixes bugs:
1609	- A definition &amp; use comment was incorrect.  (scanchar.h)
1610	- William Bader's e-mail address was wrong.  (README)
1611
1612Adds documentation for the new begin_image, image_data, and end_image
1613procedures.  THIS INTERFACE IS STILL SUBJECT TO CHANGE.  (drivers.doc)
1614
1615</pre><h3><a name="V3.67_Procedures"></a>Procedures</h3><pre>
1616
1617Renames all the *core.dev modules as *lib.dev.  (int.mak, *lib.mak, vms.mak,
1618gdevmrop.c)
1619
1620Updates all the remaining makefiles to IJG JPEG version 6a.  (*.mak)
1621
1622Moves the configuration parameter definitions from gconf.c to a new file
1623gscdefs.c.  (bcwin*.mak, *lib.mak, gs.mak, int.mak, lib.mak, unixtail.mak,
1624vms.mak, gconf.c, gscdefs.c)
1625
1626</pre><h3><a name="V3.67_Platforms"></a>Platforms</h3><pre>
1627
1628Restructures the MS Windows and OS/2 code to be primarily DLL- rather than
1629EXE-based.  This involves two minor NON-BACKWARD-COMPATIBLE changes to the DLL
1630interface, documented near the end of dll.doc:
1631
1632	- Adding argv and argc as arguments to gsdll_init.
1633
1634	- Adding a new message type, GSDLL_POLL, to the callback procedure.
1635
1636(bcwin*.mak, devs.mak, os2.mak, dll.doc, install.doc, dw*.*, gsdll*.*,
1637gdevms*.*, gdevpm.c, gdevw*.c, gp_mswin.c, gp_os2.c, gsos2.def, gswin.rc)
1638
1639Adds the BMP drivers to the Watcom platform.  (watc.mak)
1640
1641</pre><h3><a name="V3.67_Interpreter"></a>Interpreter</h3><pre>
1642
1643Fixes bugs:
1644	- gs.c assumed the presence of stdio.  (gs.c)
1645
1646Defines a new API entry point that is the equivalent of command line
1647invocation.  (imain.h, imainarg.h, gs.c)
1648
1649Changes clients to conform to the changes in gsimage.h.  (zimage2.c,
1650zpaint.c)
1651
1652Speeds up the search operator slightly.  (zstring.c)
1653
1654</pre><h3><a name="V3.67_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1655
1656Fixes bugs:
1657	- If the PDF interpreter was present, running a PostScript file
1658didn't close the file properly if it caused an error.  (pdf_main.ps)
1659
1660Speeds up embedded font loading by making an internal buffer bigger.
1661(pdf_font.ps)
1662
1663</pre><h3><a name="V3.67_Library"></a>Library</h3><pre>
1664
1665Fixes bugs:
1666	- There could be some non-zero garbage between the width and the
1667next multiple of bitmap_align_mod for copy_alpha.  (The driver API
1668specification explicitly allows this, but it upset one customer.)
1669(gxccman.c)
1670	- Nibble-swapped alpha values could be displaced in memory by one
1671pixel, damaging the output.  (gdevabuf.c)
1672
1673Makes further changes towards adding high-level bitmap image calls to the
1674driver API.  This includes the following minor NON-BACKWARD-COMPATIBLE
1675changes to the interface defined in gsimage.h:
1676
1677	- changing MultipleDataSources from a member of the gs_image_t
1678	structure to an argument of gs_image_init;
1679
1680	- changing the default image parameter values from constant
1681	structures to procedures that initialize the structure.
1682
1683As far as we know, this doesn't affect any existing client code.
1684(gsimage.h, gsiparam.h, gxdevice.h, gdevddrw.c, gdevnfwd.c, gsimage.c,
1685gspcolor.c, gxccache.c)
1686
1687Removes an unnecessary level of call for path filling.  (gxpaint.h,
1688gxfill.c, gxpaint.c)
1689
1690</pre>
1691
1692<h2><a name="Version3.66"></a>Version 3.66 (limited) (4/8/96)</h2>
1693
1694<p>
1695This release adds support for TrueType fonts and Type 42 (encapsulated
1696TrueType) PostScript fonts.  The MS Windows driver now interacts properly
1697with the garbage collector.  This release also includes a new, high-quality
1698set of free fonts.
1699
1700<h3><a name="V3.66_Documentation"></a>Documentation</h3><pre>
1701Fixes bugs:
1702	- The list of generic makefiles had gotten out of date.  (make.doc)
1703
1704Adds a mention of the bmv program, created by a user and available under the
1705GPL.  (README)
1706
1707Notes that a bug in gcc 2.7.x prevents these versions from compiling
1708Ghostscript.  (make.doc)
1709
1710Clarifies the meaning of "inverted" masks.  (gsimage.h)
1711
1712Improves the documentation of the stack sizing parameters.  (interp.c)
1713
1714Improves the documentation of the copy_rop driver procedure.
1715(drivers.doc)
1716
1717Notes that all subclasses of gx_device must explicitly include the
1718device_finalize finalization procedure.  (gxdevice.h)
1719
1720Updates the documentation of the high-level driver API to reflect the change
1721in gx_drawing_color, and the addition of the new polygon and image drawing
1722procedures.  (drivers.doc)
1723
1724Updates the documentation for building zlib and libpng.  (make.doc)
1725
1726</pre><h3><a name="V3.66_Procedures"></a>Procedures</h3><pre>
1727
1728Fixes bugs:
1729	- The environment space overflowed on some inferior Unix systems.
1730(unixtail.mak)
1731
1732Adds a ttfont.dev "feature" for including the TrueType interpreter and the
1733ability to handle Type 42 fonts.  A new procedure, .loadttfont, allows
1734loading a TrueType font directly (by converting it to a Type 42 on the fly).
1735(gs.mak, int.mak, lib.mak)
1736
1737Updates the makefiles and procedures to libpng 0.88 and zlib 1.0.
1738(libpng.mak, zlib.mak)
1739
1740</pre><h3><a name="V3.66_Utilities"></a>Utilities</h3><pre>
1741
1742Fixes bugs:
1743	- pdf2ps could produce lines longer than 255 characters.
1744(pdf_2ps.ps)
1745
1746Removes some unnecessary and error-inviting code from pdf2dsc.  (pdf2dsc.ps)
1747
1748Updates lines.ps to test the new stroke code more fully.  (lines.ps)
1749
1750Allows omitting the second argument of ps2pdf, as for ps2epsi.  (ps2pdf)
1751
1752</pre><h3><a name="V3.66_Drivers"></a>Drivers</h3><pre>
1753
1754Fixes bugs:
1755	- A routine was incorrectly declared "private".  (I wish gcc caught
1756this!)  (gdevpdf.c)
1757	- A 'const' was omitted in a parameter list.  (gdevpdfp.c)
1758	- Some imported procedures didn't have prototypes declared.
1759(gdevpdft.c)
1760	- The ProcSet list for PDF files didn't include Text when it was
1761needed.  (gdevpdfx.h, gdevpdf.c, gdevpdft.c)
1762	- Text in PDF output ignored the color setting.  (gs_pdfwr.ps,
1763gdevpdft.c)
1764	- Text in PDF output could be positioned incorrectly.  (gdevpdft.c)
1765	- pdfmarks could produce an error when producing PDF output.
1766(gs_pdfwr.ps)
1767
1768Slightly improves the text output of the PDF writer.  (gs_pdfwr.ps,
1769gdevpdft.c)
1770
1771Defines driver procedures for filling trapezoids (with the parallel edges
1772parallel to a coordinate axis), parallelograms (with arbitrary orientation),
1773triangles (ditto), and minimum-width lines (ditto).  (Note that the last of
1774these obsoletes the former draw_line procedure.)  (gdevmem.h, gdevprn.h,
1775gxdevice.h, gxdraw.h (deleted), gdevddrw.c, gdevdflt.c, gdevht.c,
1776gdevnfwd.c, gsimage[12345].c, gxacpath.c, gxclist.c, gxclip2.c, gxcpath.c,
1777gxdraw.c (deleted), gxfill.c, gxpcmap.c, gxstroke.c)
1778
1779Adds "sketched" driver procedures for high-level bitmap / pixmap image
1780drawing.  In this release, the argument lists are incomplete, and the
1781procedures are stubs: don't try to use them!  [see previous entry]
1782
1783Changes the screen update strategy for the X Windows driver from a
1784compile-time option to a settable run-time variable.  (gdevx.c)
1785
1786Patches around a problem with libpng 0.88 that can't be fixed without
1787editing a configuration file.  (gdevpng.c)
1788
1789</pre><h3><a name="V3.66_Platforms"></a>Platforms</h3><pre>
1790
1791Fixes bugs:
1792	- %g formats with sscanf don't work on NeXT systems.  (gdevpdft.c,
1793iutil.c, zdouble.c)
1794	- getenv could be declared inconsistently.  (gp_unix.c)
1795
1796</pre><h3><a name="V3.66_Fonts"></a>Fonts</h3><pre>
1797
1798Fixes bugs:
1799	- The Type 1 font interpreter sometimes set the flatness too large.
1800(gstype1.c)
1801	- Fonts defined by definefont could never be garbage collected.
1802(gsstruct.h, gxfcache.h, gxfont.h, gxfont0.h, gxfont1.h, gsfont.c,
1803gsfont0.c)
1804	- Type 0 fonts weren't garbage collected properly.  (gsfont0.c)
1805	- Compiled fonts caused a compilation error (bug introduced in
18063.65).  (ifont.h)
1807	- If a Type 1 font used hint replacement, hints could be applied
1808more than once, distorting the character shape.  (gxtype1.h, gxhint3.c)
1809	- Oversampling wasn't applied to large enough characters.
1810(gschar.c)
1811
1812</pre><h3><a name="V3.66_Interpreter"></a>Interpreter</h3><pre>
1813
1814Fixes bugs:
1815	- The scanner accepted /[, /], /&lt;&lt;, and /&gt;&gt; as literal names (and
1816similarly for //).  It isn't obvious from the Red Book, but the Adobe
1817implementations don't accept these.  What a nuisance!  (gs_btokn.ps,
1818gs_init.ps, pdf_2ps.ps, pdf_base.ps, pdf_main.ps, iscan.c)
1819	- A spurious stackoverflow could occur under unusual conditions.
1820(istack.c)
1821	- The values of OrigFont and ScaleMatrix in scaled fonts reflected
1822only the most recent scaling operation, not the original font and the
1823combined scaling operation.  (zfont.c)
1824	- The default size of systemdict had become slightly too small.
1825(iinit.c)
1826	- Type 1 characters defined by PostScript procedures were called
1827incorrectly.  (zcharout.c)
1828
1829Removes the papersize operator from statusdict, since it is not documented
1830anywhere in the Adobe literature and didn't interact properly with the
1831various ways of setting the page size.  (gs_statd.ps)
1832
1833Changes the one client of sskip to match the changed API.  (zpaint.c)
1834
1835Changes clients to reflect the creation of sstring.h.  (iscan.h, zfilter.c)
1836
1837Adds PSStringEncode as an accessible filter.  (zfilter.c)
1838
1839Adds support for TrueType and Type 42 fonts.  (gs_fonts.ps, gs_ttf.ps,
1840gs_typ42.ps, bfont.h, icharout.h, ifont.h, zchar1.c, zchar42.c, zcharout.c,
1841zfont1.c, zfont2.c, zfont42.c)
1842
1843Adds a few ANSI sheet sizes (commented out, for documentation only).
1844(gs_statd.ps)
1845
1846</pre><h3><a name="V3.66_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
1847
1848Fixes bugs:
1849	- Clients who called pdfopen/close rather than runpdf could get an
1850error (PSLevel1 undefined).  (pdf_main.ps)
1851	- Some masked images were displayed with black and white inverted.
1852(gs_pdf.ps)
1853	- In Level 1 output produced by pdf2ps, images caused a syntaxerror.
1854(gs_pdf.ps)
1855	- If a PDF file had multiple xref sections and later sections added
1856new objects, an error occurred.  (pdf_main.ps)
1857	- Some very old Level 1 interpreters couldn't deal with a file
1858object embedded in a procedure.  (gs_pdf.ps)
1859
1860</pre><h3><a name="V3.66_Streams"></a>Streams</h3><pre>
1861
1862Fixes bugs:
1863	- The PSStringEncode filter didn't always produce printable 7-bit
1864output.  (sstring.c)
1865	- The CCITTFaxDecode filter didn't implement DamagedRowsBeforeError.
1866(scfx.h, scfd.c)
1867	- Interpolated images displayed nothing if the data stream ended
1868before the image height was reached.  (siscale.h, gsimage5.c, siscale.c)
1869
1870Changes the sskip stream procedure so that it takes an additional argument
1871where it returns the actual number of bytes skipped.  THIS IS A
1872NON-BACKWARD-COMPATIBLE CHANGE in the API.  However, as far as we know,
1873there are no external clients of this procedure.  (stream.h, stream.c)
1874
1875Splits up sfilter.h so that the headers correspond more directly with the
1876implementations.  (sfilter.h, sstring.h, sstring.c)
1877
1878</pre><h3><a name="V3.66_Library"></a>Library</h3><pre>
1879
1880Fixes bugs:
1881	- The default device in the library configuration was device 1, not
1882device 0.  (bclib.mak, ugcclib.mak, watclib.mak, gslib.c)
1883	- Patterns could be rendered with small gaps between them.
1884(gspcolor.c)
1885	- Large characters could render inaccurately because of a numerical
1886boundary condition.  (gxpcopy.c)
1887	- The show_gstate pointer in the graphics state was not managed
1888properly, possibly leading to dangling pointers or GC errors.  (gsstate.c)
1889	- Bitmaps could get shifted to the left if ALPHA_LSB_FIRST was
1890selected (bug introduced in 3.53).  (gsbitops.c)
1891	- The garbage collector could move devices in memory, causing
1892problems with command list devices.  (gxdevice.h, gsdevice.c)
1893
1894Continues restructuring the image handling code in preparation for adding a
1895high-level driver operation.  (gsimage[12345].c)
1896
1897Starts to implement passing color mapping information (transfer function,
1898black generation, undercolor removal, CRD, halftoning) in the band list.
1899(gxfmap.h, gscolor.c, gscolor1.c, gsht1.c, gsstate.c)
1900
1901Speeds up the path filling code a little more.  (gxdraw.c)
1902
1903Removes the workaround for the gcc 2.7.0/1/2 optimizer bug, since this
1904turned out to cause more trouble than it was worth.  (stdpre.h)
1905
1906Speeds up stroking dramatically for the case of butt or square caps, bevel
1907or beveled miter joins, and no fill adjustment, by filling parallelograms
1908and triangles directly rather than constructing and filling paths.  This is
1909an important common case for CAD drawings.  (gxdraw.h, gxdraw.c, gxstroke.c)
1910
1911Adds support for TrueType and Type 42 fonts.  (gxfont.h, gxfont42.h,
1912gstype42.c)
1913
1914Extends the memory manager to allow allocating objects that the garbage
1915collector won't move.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for
1916implementors of memory managers, but clients aren't supposed to have any of
1917these.  (gsmemory.h, gsmemory.c, gsalloc.c)
1918
1919Makes dynamically created instances of registered devices immovable.
1920(gsdevice.c)
1921
1922Unifies gx_drawing_color with (makes it equivalent to) gx_device_color.
1923THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for implementors of the
1924higher-level driver procedures (fill_path, stroke_path, fill_mask).  We
1925regret that this was necessary, but the documentation in drivers.doc does
1926warn the reader: "DO NOT ASSUME THESE OPERATIONS WILL REMAIN UNCHANGED IN
1927FUTURE RELEASES."  These three procedures, at least, should now be stable.
1928(gsdcolor.h, gxcindex.h, gxdcolor.h, gxdevice.h, gximage.h, gxpaint.h,
1929gxpcolor.h, gdevdflt.c, gdevpdf.c, gdevpdfi.c, gdevxalt.c, gsimage.c,
1930gsimage2.c, gspcolor.c, gxacpath.c, gxccache.c, gxcht.c, gxclpath.c,
1931gxclread.c, gxdcconv.c, gxdither.c, gxfill.c, gxdraw.c, gxht.c, gxpaint.c,
1932gxpcmap.c, gxstroke.c)
1933
1934</pre>
1935
1936<h2><a name="Version3.65"></a>Version 3.65 (limited) (3/9/96)</h2>
1937
1938<p>
1939This release adds garbage collection for device instances.  ****** NOTE:
1940Because of changes in memory management, if you are using the MS Windows
1941driver (mswin), you must run with -dNOGC.  This is a temporary problem which
1942will be fixed before the next beta release.
1943
1944<h3><a name="V3.65_Documentation"></a>Documentation</h3><pre>
1945Documents the C API equivalent of a -d switch for setting a flag like
1946NOPAUSE.  (imain.h)
1947
1948Splits off the NEWS entries for versions 3.0 through 3.33 into a new
1949file.  (history3.doc)
1950
1951Adds a man page for ps2pdf.  (ps2pdf.1)
1952
1953Documents the new memory management aspects of device drivers, and corrects
1954many other aspects of driver documentation that had become inaccurate.
1955(drivers.doc)
1956
1957Updates the documentation for the gs_*.ps files.  (psfiles.doc)
1958
1959Replaces .type1addpath with .type1execchar.  (language.doc)
1960
1961Adds some more documentation on how band lists do read/write switching.
1962(gxclist.h)
1963
1964Adds a reference to the new Genscript program, a free Ghostscript-based
1965replacement for enscript.  (README)
1966
1967Notes that no further changes will be accepted for the gdevcdj.c file, which
1968has gotten completely out of hand.  (gdevcdj.c).
1969
1970Documents the TextAlphaBits and GraphicsAlphaBits device parameters.
1971(language.doc)
1972
1973</pre><h3><a name="V3.65_Procedures"></a>Procedures</h3><pre>
1974Fixes bugs:
1975	- gs_pdfwr.ps and pdf2ps.1 weren't installed on Unix systems.
1976(unix-end.mak)
1977	- The pdf2ps shell script didn't accept any options.  (pdf2ps)
1978	- The rule for srle.$(OBJ) incorrectly specified a dependency on
1979srld.c.  (lib.mak)
1980	- The rule for command lists didn't include stream.$(OBJ).
1981(lib.mak)
1982	- The stack size for one configuration was set too small.
1983(watclib.mak)
1984
1985Speeds up genconf by eliminating redundant file reading and processing.
1986(genconf.c)
1987
1988Moves the pixel-difference filters from int.mak to lib.mak.  (int.mak,
1989lib.mak)
1990
1991Moves the library parts of the HSB color and Level 1 path (arcs, pathbbox,
1992path enumeration) options from int.mak to lib.mak, and adds them to the
1993library makefiles.  (int.mak, lib.mak; bclib.mak. ugcclib.mak, watclib.mak)
1994
1995</pre><h3><a name="V3.65_Utilities"></a>Utilities</h3><pre>
1996
1997Fixes bugs:
1998	- pdf2ps would fail if it encountered a font with a standard
1999encoding.  (pdf_2ps.ps)
2000
2001Adds new switches to pdf2ps:
2002	-dPSBinaryOK allows writing binary image data in the output.
2003(pdf_2ps.ps)
2004	-dPSLevel1 forces Level 1 compatible output.  (int.mak,
2005unix-end.mak, gs_l2img.ps, gs_pdf.ps, pdf_2ps.ps, pdf_main.ps)
2006	-dPSNoProcSet causes the ProcSet to be loaded at run time, not at
2007conversion time -- primarily useful for debugging.  (pdf_2ps.ps)
2008
2009Adds a utility for viewing PCX files, so we can preview high-resolution
2010output in a reasonable compressed format.  (unix-end.mak, viewpcx.ps)
2011
2012</pre><h3><a name="V3.65_Drivers"></a>Drivers</h3><pre>
2013
2014Fixes bugs:
2015	- Some compilers require an extra #include to define structures even
2016if they are only referenced by pointers.  (int.mak, gdevpdf.c, gdevpdfp.c)
2017	- A procedure name was duplicated.  (gdevpdfi.c)
2018	- A pdfmark between a gsave and a grestore could cause a
2019rangecheck error.  (gdevpdfp.c)
2020	- A pdfmark between a gsave and a grestore could cause the
2021grestore to do an inappropriate initgraphics.  (gs_pdfwr.ps)
2022	- The pdfwrite driver could reinitialize the output file
2023unpredictably.  (gdevpdfp.c)
2024	- The PCX drivers didn't clear padding bytes at the ends of scan
2025lines.  (gdevpcx.c)
2026	- The PCX drivers didn't set the "version" field correctly (this was
2027OK in 2.6.1, bug introduced sometime since then).  (gdevpcx.c)
2028	- Whoever last touched the color inkjet drivers completely broke the
2029handling of the BitsPerPixel parameter, again.  We were able to half-fix it,
2030but the code is impossible to understand, let alone modify safely.
2031(gdevcdj.c)
2032	- Anti-aliased characters didn't work with banding.  (gxclpath.c)
2033	- The PGM/PPM drivers didn't recognize black-and-white pages for
2034optimization to PBM, only gray or colored.  (gdevpbm.c)
2035	- The color inkjet drivers initialized the params_size field of the
2036static instance incorrectly, resulting in garbage in the last few structure
2037members when instances were copied.  (gdevcdj.c)
2038	- The 24-bit PCX driver didn't pad each scan line to an even number
2039of bytes.  (gdevpcx.c)
2040	- The svga16 driver initialized its procedures incorrectly.
2041(gdevpcfb.c)
2042
2043Adds text writing capability to the PDF writer.  In its present form, this
2044is a very bad hack: it only works for the 14 built-in fonts with their
2045standard encodings.  (gdevpdfx.h, gdevpdf.c, gdevpdfp.c, gdevpdft.c)
2046
2047Adds garbage collection and finalization for device instances (gscdefs.h,
2048gsdevice.h, gxdevice.h, gconf.c, gdevmrop.c, gsdevice.c, gslib.c, gsmain.c).
2049(See the "Driver instance allocation" section of drivers.doc for more
2050details about what is required to make this work.)
2051
2052	- When an open device is freed (explicitly, by garbage collection,
2053or by 'restore'), if the device was allocated dynamically by Ghostscript's
2054standard allocator, the device's close procedure will be called.  THIS IS A
2055NON-BACKWARD-COMPATIBLE CHANGE for dynamically created devices, which
2056formerly were not closed automatically, even when Ghostscript exited.
2057
2058	- Device instances allocated in GC-able space will be traced
2059like other objects, assuming they have proper structure descriptors.
2060
2061Provides a (very slow but correct) default implementation of copy_alpha.
2062(gxcindex.h, gdevdflt.c, gsimage4.c)
2063
2064Removes the implementation of copy_alpha in gdevpbm.c, since this is now
2065implemented (more efficiently) in gdevm24.c.  (gdevpbm.c)
2066
2067Adds TextAlphaBits and GraphicsAlphaBits as readable parameters for all
2068devices.  (gsdparam.c, gdevpbm.c, gdevsvga.c)
2069
2070</pre><h3><a name="V3.65_Platforms"></a>Platforms</h3><pre>
2071
2072Fixes bugs:
2073	- There were some attempts to coerce long to short pointers
2074on segmented platforms.  (gsdparam.c, gstype1.c)
2075	- The stack could overflow on the 16-bit MS Windows platform.
2076(gxfill.c, gxclread.c)
2077	- The DLL callback parameter for window resize events was computed
2078incorrectly on 16-bit systems.  (gdevwdib.c)
2079	- A file included gxdevice.h unnecessarily.  (bcwin.mak,
2080bcwin32.mak, msvcwint.mak, gp_mswin.c)
2081
2082</pre><h3><a name="V3.65_Interpreter"></a>Interpreter</h3><pre>
2083
2084Fixes bugs:
2085	- Storing into a read-only dictionary with def or store was
2086allowed.  (dstack.h)
2087	- If the interpreter allocated extra space for a dictionary
2088to round its storage size up to a power of 2, it was possible for
2089length to exceed maxlength.  (idict.c, iinit.c)
2090	- The if and ifelse operators didn't check that their
2091'procedure' arguments were actually procedures.  (interp.c, zcontrol.c)
2092	- The undef operator was defined even in Level 1
2093configurations.  (We need this capability for all configurations, so
2094we always define .undef.)  (zdict.c, gs_*.ps, pdf_*.ps)
2095	- In Level 1 configurations, copying a dictionary should copy the
2096access attributes, but it didn't.  We have to work around this
2097compatibility quirk in a lot of places.  (gs_cidfn.ps, gs_cmap.ps,
2098gs_dps1.ps, gs_fonts.ps, gs_init.ps, gs_l2img.ps, gs_lev2.ps, gs_pdf.ps,
2099gs_pfile.ps, gs_res.ps, gs_setpd.ps, gs_type1.ps, zdict.c)
2100	- DSC comments that crossed a buffer boundary didn't call the
2101scan_dsc_proc.  (iscan.c)
2102	- "statusdict /setpage get exec" caused an error.  (gs_statd.ps)
2103	- The default size of systemdict had become slightly too small.
2104(iinit.c)
2105	- Doing a showpage or copypage would cause the equivalent of a
2106setpagedevice at the next restore or grestore.  We aren't entirely sure that
2107the fix we made doesn't have bad side-effects.  (gs_setpd.ps)
2108	- Not all filters accepted (and ignored) an optional dictionary
2109parameter on the stack.  (ifilter.h, zfbcp.c, zfdecode.c, zfilter.c,
2110zfilterx.c, zfzlib.c, zmisc1.c)
2111	- The PixelDifference filters required a Columns parameter, rather
2112than defaulting it to 1.  (spdiffx.h, zfdecode.c)
2113	- Contrary to the NEWS entry for release 3.60, the LZW filters did
2114not implement pixel differencing.  (zfdecode.c, zfilter2.c)
2115	- readstring with a 0-length string didn't signal a rangecheck.
2116This doesn't make a lot of sense to me, but it's what the Adobe
2117documentation specifies.  Unfortunately, we have to work around this in a
2118number of places that assumed the sensible definition (return () true
2119without reading anything).  (gs_l2img.ps, pdf_font.ps, zfileio.c)
2120	- Encoded number strings didn't work (bug introduced in 3.64).
2121(ibnum.c)
2122	- The allocator could produce spurious "free large 0x...... chunk
2123not found" messages.  (These didn't cause any harm, but they were
2124disturbing.)  (gsalloc.c)
2125
2126Changes the default transfer function for high-resolution devices so
2127that it is the identity function if the device is continuous-tone.
2128(gs_init.ps)
2129
2130Undoes the "subversion" of zgetdevice noted in release 3.61, since it
2131is now possible to copy devices safely.  (zdevice.c)
2132
2133Changes the implementation of the garbage collector and restore so that
2134object finalization code may safely free objects.  (igc.c, isave.c)
2135
2136Reimplements essentially all of Type 1 BuildChar in C.  (gs_init.ps,
2137gs_type0.ps (deleted), gs_type1.ps, ifont.h, zchar.c, zchar1.c, zfont.c)
2138
2139Reimplements DISKFONTS as a separate feature (diskfont.dev), and changes it
2140to use Type 4 fonts rather than special machinery.  Currently this feature
2141is included only in the makefiles for 16-bit architectures.  (bc.mak,
2142bcwin.mak, int.mak, tc.mak, gs_diskf.ps, gs_fonts.ps, gs_type1.ps)
2143
2144Converts the library search path from a list of strings to a (PostScript)
2145array of strings, one string per directory.  (iminst.h, main.h, gs.c,
2146gsmain.c, zfile.c)
2147
2148Adds a hook procedure scan_comment_proc for processing all comments,
2149similar to scan_dsc_proc.  If both are set, scan_comment_proc is used only
2150for non-DSC comments.  (iscan.h, iscan.c)
2151
2152</pre><h3><a name="V3.65_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2153
2154Fixes bugs:
2155	- Encrypted PDF files produced a random error (usually ioerror in
2156--token--) rather than a meaningful message.  (pdf_main.ps)
2157	- Color space setting didn't work.  (gs_pdf.ps)
2158	- The algorithm for skipping a possible blank line following the
2159'stream' keyword wasn't robust enough.  (We aren't sure the new algorithm is
2160exactly right, either.)  (pdf_base.ps)
2161
2162Gets rid of the special handling of the LZW decoding filter, since the
2163filter itself now handles the Predictor facility.  (pdf_base.ps)
2164
2165</pre><h3><a name="V3.65_Streams"></a>Streams</h3><pre>
2166
2167Fixes bugs:
2168	- Configurations with LZW encoding but not decoding had an
2169undefined reference.  (lib.mak, slzwc.c, slzwd.c)
2170	- The LZW-compatible encoder didn't provide a 'reset' procedure.
2171(slzwce.c)
2172	- The PixelDifference filters didn't work for most parameter
2173combinations in which each pixel took up more than 1 byte.  (spdiff.c)
2174	- Temporary write streams could cause an infinite loop.  (We only
2175need such streams for the Predictor = 2 case of LZWEncode: this is why the
2176bug never showed up before.)  (stream.c)
2177
2178Adds an optional reinitialization procedure to the stream template.  Note
2179that this is not the same as the PostScript 'reset' operation or the stream
2180resetting operation invoked by sreset: the reinit procedure in the template
2181reinitializes any internal state of the encoder or decoder without affecting
2182buffered data.  (scommon.h, strimpl.h, sbcp.c, sbhc.c, slzwce.c, slzwd.c,
2183slzwe.c, smtf.c, spdiff.c, srle.c) ****** NOT DONE YET: sbwbs.c, szlibd.c,
2184szlibe.c
2185
2186Adds a decoding stream for the run-length compression used in PCX.
2187(spcxx.h, spcxd.c)
2188
2189</pre><h3><a name="V3.65_Library"></a>Library</h3><pre>
2190
2191Fixes bugs:
2192	- A recent edit introduced an extraneous right parenthesis.
2193(gpcheck.h)
2194	- A minor nit in a macro could cause incorrect grouping of 'if'
2195statements under implausible conditions.  (gsmdebug.h)
2196	- The first data plane buffer of an image enumerator didn't get
2197marked during garbage collection.  (gsimage.c)
2198	- The Watcom C compiler required splitting up a declaration.
2199(gxcmap.h)
2200	- The extern declarations for the tables in gconf.c weren't gathered
2201together in one place.  (gscdefs.h, gxiodev.h, gconf.c, gsdevice.c, gslib.c,
2202gsinit.c, gsiodev.c)
2203	- charpath and show produced different output.  We fixed this by
2204undoing a "bug fix", introduced in version 2.9, which suppressed hinting and
2205coordinate rounding for charpath; we aren't sure this won't cause some
2206obscure problems to reappear.  (gstype1.c)
2207	- Clipping with a rectangle usually created a 3-rectangle clipping
2208list, slowing down all drawing operations (performance bug only).
2209(gxacpath.c)
2210	- stroking in a rotated coordinate system sometimes thought lines
2211were always thin when they actually weren't.  (gxstroke.c)
2212	- An unsigned quantity wasn't properly converted to signed, possibly
2213causing band path coordinates to get mangled.  (gxclread.c)
2214	- A bug in the Borland compiler caused an unsigned quantity to be
2215interpreted as signed, causing band path coordinates to get mangled.
2216(gxclread.c)
2217
2218Changes structure type pointers on 16-bit segmented systems to full
221932-bit pointers.  This will increase time and space requirements very
2220slightly on these systems.  (gsmemory.h, gxobj.h)
2221
2222Changes the memory manager so that object finalization code may safely free
2223objects.  (gsmemory.h, gsstruct.h, gsalloc.c, gsmemory.c)
2224
2225Refactors the Type 1 CharString interpreter so it can be included in
2226the imager library.  (gstype1.h, gxtype1.h, gstype1.c)
2227
2228Starts to refactor the implementation of band lists in memory so that it can
2229use any encoding/decoding filter.  Currently this choice is made at compile
2230time, but it could easily be made dynamic.  (gxclmem.h, gxclmem.c)
2231
2232Starts to refactor image rendering so that, like path filling and stroking,
2233it only uses imager state and can be done after banding.  (gxcmap.h,
2234gxdraw.h, gximage.h, gsimage*.c, gxcmap.c)
2235
2236Speeds up copy_mono for 2-bit-per-pixel devices a little.  (gdevm2.c)
2237
2238Implements an optimized copy_alpha for 24-bit memory devices.  (gdevmem.h,
2239gdevm24.c)
2240
2241Speeds up filling rectangles significantly.  (gsbitops.c)
2242
2243Changes the band list rasterizer to use the memory space of the device
2244rather than the C heap: our allocator is considerably faster than malloc.
2245(gxclread.c)
2246
2247Speeds up stroking a little, especially in 90 degree rotated coordinate
2248systems.  (gxstroke.c)
2249
2250</pre>
2251
2252<h2><a name="Version3.64"></a>Version 3.64 (limited, incremental) (1/27/96)</h2>
2253
2254<p>
2255This release fixes a few more bugs, including some serious bugs in band
2256lists, and adds pdfmark processing to the PDF writer.  The PDF writer is
2257still not fit for real use, since it converts all text characters into 720
2258dpi bitmaps and turns images into zillions of tiny rectangles (!), but it
2259should be producing legal output.
2260
2261<h3><a name="V3.64_Documentation"></a>Documentation</h3><pre>
2262Fixes bugs:
2263	- Frans van Hoesel's e-mail address was incorrect.  (gdevdjet.c)
2264	- The man page for ansi2knr was out of date.  (ansi2knr.1)
2265	- The description of a procedure was out of date.  (gxdcolor.h)
2266
2267Notes that several "optional" features are required in order to obtain the
2268full PostScript Level 1 functionality at the library level.  (lib.doc)
2269
2270Documents the top-level interpreter API.  (imain.h)
2271
2272Adds details on differences between the imager API and the PostScript
2273graphics operators.  (lib.doc)
2274
2275Notes (here, in NEWS) that the change for device prototypes in 3.61 made the
2276protection attributes of a device significant for the first time.  Only the
2277writable attribute is significant so far.  (news)
2278
2279</pre><h3><a name="V3.64_Procedures"></a>Procedures</h3><pre>
2280
2281Fixes bugs:
2282	- The .dev rules in the library makefiles didn't list echogs as a
2283dependency.  (jpeg.mak, libpng.mak, zlib.mak)
2284	- The install rule tried to install gs.1.1 etc. rather than gs.1
2285etc.  (unix-end.mak)
2286	- The install rule tried to install some nonexistent *.1 files.
2287(unix-end.mak)
2288
2289Adds 'help' and '?' procedures to assist users who don't read the
2290documentation.  (gs_init.ps)
2291
2292Adds -A-, -E-, and -Z-... to turn off debugging flags.  (gs.c)
2293
2294Adds a -dDELAYBIND switch to delay binding operators, to allow special
2295packages like pstotext to redefine them.  (gs_init.ps)
2296
2297</pre><h3><a name="V3.64_Utilities"></a>Utilities</h3><pre>
2298
2299Fixes bugs:
2300	- Fonts produced by rollconv.ps left a couple of items on the
2301operand stack, and left array packing set to true.  (rollconv.ps)
2302
2303Makes ansi2knr require that the first token after a function header be a
2304left brace on the next line, so it can cope with some macros in IJG release
23056a.  Also updates it to work better without the GNU configure machinery, and
2306on some old compilers.  (ansi2knr.c)
2307
2308Changes align.ps so it can be used directly to determine the margin
2309parameters.  (align.ps, psfiles.doc)
2310
2311</pre><h3><a name="V3.64_Drivers"></a>Drivers</h3><pre>
2312
2313Fixes bugs:
2314	- The TIFF/F (G3 and G4) drivers were broken (bug introduced in
23153.60).  (gdevtfax.c)
2316	- The PDF writer produced invalid output for 0-width, 0-height
2317images.  (gdevpdfi.c)
2318	- The PDF writer wasn't a page device.  (gdevpdf.c)
2319	- The PDF writer assigned the Contents node rather than the Pages
2320node as the Parent of each page.  (gdevpdfx.h, gdevpdf.c)
2321
2322Corrects the margin information for the DeskJet printers to be the actual
2323values observed on a printer; all of the values in the file were wrong.
2324(gdevdjet.c)
2325
2326Adds pdfmark recognition and conversion to the PDF writer.  All documented
2327pdfmarks (ANN, ARTICLE, DEST, DOCINFO, DOCVIEW, LNK, OUT, PAGE, PAGES, PS)
2328are recognized and converted, but some of them are not converted correctly.
2329(gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfm.c)
2330
2331Adds recognition of all Distiller parameters, except *ImageDict, to the PDF
2332writer.  Currently only ASCII85EncodePages actually has any effect.
2333(gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c)
2334
2335Ensures that PDF output files include at least a default Info dictionary.
2336(gdevpdf.c)
2337
2338Changes the handling of coordinates in PDF output files so that the scale is
2339always 72 dpi, and so that each graphics operator is on a line by itself,
2340for compatibility with Adobe Illustrator.  (gdevpdfx.h, gdevpdf*.c)
2341
2342Adds a driver for ImageMagick's MIFF format.  The driver currently only
2343produces 24-bit, direct color, RLE compressed output.  (gdevmiff.c)
2344
2345</pre><h3><a name="V3.64_Platforms"></a>Platforms</h3><pre>
2346
2347Changes the gp_check_interrupts platform procedure so that instead of just
2348returning a Boolean, it can now also return a negative error code.  THIS IS
2349(THEORETICALLY) A NON-BACKWARD-COMPATIBLE CHANGE.  However, since all
2350implementations of this procedure should only have been returning 0 or 1 up
2351to now, no existing code should need to be changed.  (gpcheck.h, gsmisc.c)
2352
2353</pre><h3><a name="V3.64_Interpreter"></a>Interpreter</h3><pre>
2354
2355Fixes bugs:
2356	- devicenames was accidentally deleted.  (gs_init.ps)
2357	- -dFAKEFONTS could cause the memory manager to waste a lot of time.
2358(gs_dps1.ps)
2359	- Using -r or -dFIXEDMEDIA with a non-page device caused an error.
2360(gs_init.ps)
2361	- A VMS compiler reserves the word "readonly", which was used as a
2362parameter name.  (imain.h, gsmain.c)
2363	- A garbage collection during the execution of x/y/xyshow with an
2364array providing the values could get confused.  (ibnum.h, ichar.h, stream.h,
2365ibnum.c, iscanbin.c, zchar.c, zchar2.c, zdps1.c, zupath.c)
2366	- Errors in encoded number strings produced a typecheck rather than
2367a rangecheck error.  (ibnum.c, zupath.c)
2368
2369Updates the DCT filters for IJG release 6a.  (zfdctc.c)
2370
2371Provides an API call for getting the real stdio files.  (imain.h,
2372gs.c, gsmain.c)
2373
2374</pre><h3><a name="V3.64_Streams"></a>Streams</h3><pre>
2375
2376Fixes bugs:
2377	- If the CCITTFaxEncode stream encountered an output buffer boundary
2378while processing the last scan line of input, it could fail to process some
2379the scan line.  (scfe.c)
2380	- A couple of pointers weren't always initialized, possibly
2381confusing the garbage collector.  (stream.c)
2382	- The weighting coefficient structures used for image scaling
2383weren't declared properly for the garbage collector.  (siscale.h, siscale.c)
2384
2385</pre><h3><a name="V3.64_Library"></a>Library</h3><pre>
2386
2387Fixes bugs:
2388	- Unrotated patterns always used the bounding box size as the step,
2389rather than XStep/YStep.  (gspcolor.c)
2390	- Alpha computations for graphics could be seriously incorrect (bug
2391introduced in 3.6x).  (gdevabuf.c)
2392	- The length of the next_data_x command for the fill_mask operation
2393was incorrect, causing the band list to become confused (bug introduced in
23943.63).  (gxclpath.c)
2395	- An extern was omitted, causing linker warnings.  (gxdevice.h)
2396	- RasterOps could cause an invalid access because the palette
2397for a memory device wasn't set.  (gdevmrop.c)
2398	- gximage.h was included unnecessarily.  (gspaint.c)
2399	- Color screens caused a segmentation fault (bug introduced in
24003.6x).  (gxcht.c)
2401	- cshow returned the width in an incorrect coordinate system.
2402(gscoord.h, gschar.c)
2403	- Filling or stroking a path that lay entirely off the page in the
2404+X or +Y direction could corrupt memory (bug introduced in 3.6x).
2405(gxclpath.c)
2406	- When banding, painting characters with halftones produced random
2407results (bug introduced in 3.6x).  (gxclpath.c)
2408	- When banding, characters could get clipped when they shouldn't be
2409(bug introduced in 3.6x).  (gxclpath.c)
2410	- The default implementation of fill_mask could discard clipped
2411bitmaps (bug introduced in 3.6x).  (gdevdflt.c)
2412	- Non-halftoned 24-bit colors could get garbled when banding (bug
2413introduced in 3.6x).  (gxclist.c)
2414	- When banding, if a stroked path had subpaths that fell entirely
2415outside the current band, the rest of the path was drawn in the wrong place
2416(bug introduced in 3.6x).  (gxclpath.c)
2417
2418Speeds up image interpolation on machines with slow floating point.
2419(siscale.h, siscale.c)
2420
2421Speeds up interpolated images when using device color spaces.  (gxcvalue.h,
2422gxfrac.h, gdevht.c, gxcmap.c, gsimage.c, gsimage3.c)
2423
2424Speeds up color mapping a little by removing tests and calls in favor of
2425code copying.  (gxcmap.c)
2426
2427Implements RasterOp for 24-bit RGB devices.  (gdevm8.c, gdevm24.c,
2428gdevmrop.c)
2429
2430</pre>
2431
2432<h2><a name="Version3.63"></a>Version 3.63 (limited, incremental) (1/14/96)</h2>
2433
2434<p>
2435This release has the usual collection of bug fixes, and two significant
2436additions: AccurateScreens, and the first draft of a PostScript-&gt;PDF
2437converter ("distiller").
2438
2439<h3><a name="V3.63_Documentation"></a>Documentation</h3><pre>
2440Fixes bugs:
2441	- Some documentation for pstoppm.ps was out of date.  (psfiles.doc)
2442	- Documentation for acctest.ps, view*.ps, and zeroline.ps was
2443missing.  (psfiles.doc)
2444	- The documentation for rollconv.ps omitted the .CSR file.
2445(rollconv.ps)
2446
2447Removes an inappropriate RCS Id line.  (gs.1)
2448
2449Adds a list of paper sizes to the man page.  (gs.1)
2450
2451Suggests that driver authors use parameterization rather than copying when
2452possible.  (drivers.doc)
2453
2454Adds an announcement of Ghostscript support on CompuServe.  (README)
2455
2456Documents the new -dCOLORSCREEN switch and the existing -dDITHERPPI=lpi
2457switch.  (use.doc)
2458
2459Notes that the OS/2 implementation now requires EMX/GCC 0.9b rather than
24600.9a.  (install.doc)
2461
2462Adds some new man pages.  (pdf2ps.1, ps2ascii.1)
2463
2464Greatly expands lib.doc.  (lib.doc)
2465
2466</pre><h3><a name="V3.63_Procedures"></a>Procedures</h3><pre>
2467
2468Fixes bugs:
2469	- The pg target for Unix platforms didn't include some necessary
2470additional X11 libraries.  (unix-end.mak)
2471	- The Unix library makefile didn't define CCAUX or CCLEAF.
2472(ugcclib.mak)
2473	- Unix systems didn't `install' some .ps files.  (unix-end.mak)
2474
2475Extends genconf so that features at the library level can have
2476initialization procedures.  (gconf.c, genconf.c, gsinit.c)
2477
2478Adds a -dCOLORSCREEN[=false] switch to force enabling or disabling of
24794-color screens.  (gs_init.ps, gs_setpd.ps)
2480
2481</pre><h3><a name="V3.63_Utilities"></a>Utilities</h3><pre>
2482
2483Fixes bugs:
2484	- The prfont utility didn't leave enough of a margin on the left.
2485(prfont.ps)
2486	- The ps2ascii utility still created files _temp_.out and _temp_.err
2487even though they are no longer used.  (ps2ascii.ps)
2488	- The acctest.ps file was empty, rather than including a test
2489program.  (acctest.ps)
2490
2491Adds ps2pdf[.bat] scripts for invoking the new pdfwrite driver.  (ps2pdf,
2492ps2pdf.bat, unix-end.mak)
2493
2494</pre><h3><a name="V3.63_Drivers"></a>Drivers</h3><pre>
2495
2496Fixes bugs:
2497	- The x11alpha driver had a patch that suppressed output in many
2498cases.  (gdevxalt.c)
2499	- The X driver set up a parameter incorrectly in copy_color.
2500(gdevx.c)
2501	- An explicit cast was needed to handle a 'const' problem.
2502(gdevpng.c)
2503
2504Adds a pdfwrite driver that creates syntactically correct PDF output.  The
2505output is only reasonable for fill/stroke graphics, not for text or images.
2506(iscan.h, sa85x.h, sfilter.h, gdevpdf.c, sfilter2.c, zfdecode.c)
2507
2508</pre><h3><a name="V3.63_Platforms"></a>Platforms</h3><pre>
2509
2510Fixes bugs:
2511	- The test for WinExec failure on Win32 was incorrect.  (gp_mswin.c)
2512	- getenv was declared redundantly on OS/2.  (gp_os2.c)
2513	- gs16spl.c was missing &lt;string.h&gt;.  (gs16spl.c)
2514
2515</pre><h3><a name="V3.63_Interpreter"></a>Interpreter</h3><pre>
2516
2517Fixes bugs:
2518	- Images read data in smaller and smaller increments (performance
2519bug only).  (zpaint.c)
2520	- Images with MultipleDataSources=true and two or more DataSources
2521referencing the same stream could get confused.  (zpaint.c)
2522	- Invoking setpagedevice with an undefined key, even with Policy =
25231, caused an error.  (gs_setpd.ps)
2524	- IEEE floats in binary tokens or encoded number strings were read
2525incorrectly on CPUs that use non-IEEE floating point.  (ibnum.c)
2526
2527Adds a 'const' to the second parameter of zimage_setup.  (zimage2.c,
2528zpaint.c)
2529
2530Encapsulates the filling of free memory blocks in a macro.  (igc.c,
2531igcstr.c)
2532
2533</pre><h3><a name="V3.63_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2534
2535Fixes bugs:
2536	- If the first line of a file began with % but the line was longer
2537than 255 characters, an error occurred.  (pdf_main.ps)
2538	- Masked images didn't set the color before drawing.  (gs_pdf.ps)
2539	- Extraneous blank lines in the trailer or cross-reference region
2540caused an error.  (pdf_base.ps, pdf_main.ps)
2541
2542</pre><h3><a name="V3.63_Streams"></a>Streams</h3><pre>
2543
2544Speeds up image interpolation a little.  Much more could be still be done.
2545(siscale.c)
2546
2547</pre><h3><a name="V3.63_Library"></a>Library</h3><pre>
2548
2549Fixes bugs:
2550	- An error in handling a boundary condition could cause a horizontal
2551streak of pixels to be turned on or off when it shouldn't be.  (gxfill.c)
2552	- The new scan-line-based filling loop could write pixels twice.
2553(The old trapezoid-based loop still does write pixels twice.)  (gxfill.c)
2554	- For multi-plane images, gs_image_next only sets *pused for the
2555last plane; this wasn't documented.  (gsimage.h)
2556	- Images with MultipleDataSources=true and two or more DataSources
2557referencing the same stream could get confused.  (gsimage.h, gsimage0.c)
2558	- 12-bit gray images caused an invalid memory access.  (gsimage.c)
2559	- Nearly-zero-thickness lines didn't get filled, because the hack
2560that compensates for this peculiarity of the MS Windows PostScript driver
2561accidentally got disabled.  (gxfill.c)
2562	- Some casts to remove 'const' were omitted.  (gxclread.c)
2563	- 1-line-high bitmaps could get written in the band list with an
2564inconsistent number of bytes, causing errors when reading.  (gxcldev.h,
2565gxclbits.c, gxclist.c, gxclpath.c, gxclread.c)
2566	- Isolated dots produced by round caps usually disappeared.  (They
2567still disappear sometimes.)  (gxstroke.c)
2568	- On 16-bit platforms, the computation of t2 and t3 in
2569gx_curve_x_at_y could overflow, leading to incorrect output.  (gxpcopy.c)
2570	- Stroking horizontal or vertical lines could produce variations of
25711 pixel in the line width.  (gxstroke.c)
2572	- The default clipping region for band rendering was too large,
2573leading to wasted work.  (gxclread.c)
2574	- Guarantees no double pixel writing when necessary, i.e., when a
2575non-idempotent RasterOp is selected.  (gsropt.h, gxfill.c)
2576	- For unrotated black-and-white images, one column of pixels at the
2577right edge of the image might be incorrect.  (gsimage1.c)
2578	- A const pointer was passed inappropriately.  (gxistate.h,
2579gscoord.c)
2580	- CIE color conversion could address 1 element beyond the end of an
2581array, with unpredictable results.  (gscie.c)
2582
2583Separates out the higher-level band list facilities, so they can be an
2584optional feature.  (lib.mak, gxcldev.h, gxclpath.h, gxclbits.c, gxclist.c,
2585gxclpath.c, gxclread.c)
2586
2587Implements bitmap (fill_mask) clipping in the band list.  (gxcldev.h,
2588gxclpath.h, gxclist.c, gxclpath.c, gxclread.c)
2589
2590Starts to separate out the RasterOp facility as an optional feature.
2591(lib.mak, gxdevice.h, gxdevrop.h, gdevdflt.c, gdevmrop.c)
2592
2593Encapsulates the filling of free memory blocks in a macro, at the request of
2594a licensee.  (gdebug.h, gsmdebug.h, gsmemory.h, gs.c, gsalloc.c, gsmemory.c,
2595gxbcache.c)
2596
2597Speeds up fill_rectangle for 32-bit devices.  (gdevm32.c)
2598
2599Speeds up path writing in band lists a little.  (gxclpath.c)
2600
2601Implements AccurateScreens along the lines described in the Adobe
2602documentation.  The current implementation can produce very large
2603super-cells, so it will not always be able to actually increase the screen
2604accuracy.  (gxdht.h, gsht.c, gshtscr.c)
2605
2606</pre>
2607
2608<h2><a name="Version3.62"></a>Version 3.62 (limited, incremental) (12/26/95)</h2>
2609
2610<p>
2611This release makes some licensee-requested improvements in the garbage
2612collector and fixes a couple of minor bugs.  It also constitutes a
2613checkpoint for the forthcoming forked 3.53 release.
2614
2615<h3><a name="V3.62_Documentation"></a>Documentation</h3><pre>
2616Notes that for Win32s, gs16spl.exe must be in the same directory as
2617gswin32.exe.  (install.doc)
2618
2619Changes `3.N' to a real version number in the man page.  (gs.1)
2620
2621Adds a reference to dos-psv, another "dumb terminal" user interface for
2622Ghostscript intended for MS-DOS users.  (README)
2623
2624</pre><h3><a name="V3.62_Procedures"></a>Procedures</h3><pre>
2625
2626Fixes bugs:
2627	- The stack size for some of the PC platforms was set too small.
2628(watc.mak, watcwin.mak)
2629
2630Changes the default value of ORIENT1 from false to true, i.e., assumes that
2631a value of 1 for the orientation parameter of setpageparams indicates
2632portrait orientation.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  It only
2633affects files created for roll-media imagesetters.  (gs_init.ps, use.doc)
2634
2635</pre><h3><a name="V3.62_Interpreter"></a>Interpreter</h3><pre>
2636
2637Fixes bugs:
2638	- The definition of the op_index_op_array_table macro had an
2639incorrect trailing semicolon.  (opdef.h)
2640	- Setting the PageSize policy to 1 and then trying to set the page
2641size caused an error if FIXEDMEDIA was selected.  (gs_setpd.ps)
2642
2643Changes the garbage collector marking phase so that instead of just using a
2644single block (allocated, free, or default) for the mark stack, it can chain
2645all three types of block together.  (igc.h, igc.c, igcstr.c, ilocate.c)
2646
2647Refactors the garbage collector slightly to reduce inter-module
2648dependencies.  (int.mak, igc.h, igcstr.h, igcstr.c)
2649
2650Changes the garbage collector to keep track of ranges within each chunk that
2651must be scanned if the mark stack overflows.  (gxalloc.h, igc.c)
2652
2653Adds [write]===[only] procedures, which act like == but also print the
2654contents of dictionaries, and ppstack, which acts like pstack but uses ===.
2655Changes ESTACKPRINT and OSTACKPRINT to use === rather than ==.  (gs_init.ps,
2656gs_setpd.ps)
2657
2658</pre><h3><a name="V3.62_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2659
2660Fixes bugs:
2661	- If a PDF file substituted a calibrated color space for the
2662DeviceGray or DeviceRGB color space using a ColorSpace resource, the
2663PostScript file that pdf2ps produced from that PDF file caused an error.
2664(gs_pdf.ps)
2665
2666</pre><h3><a name="V3.62_Library"></a>Library</h3><pre>
2667
2668Fixes bugs:
2669	- The debugging code for checking the sorting of line lists didn't
2670check for an empty list.  (gxfill.c)
2671
2672</pre>
2673
2674<h2><a name="Version3.61"></a>Version 3.61 (limited) (12/10/95)</h2>
2675
2676<p>
2677This limited release fixes a few bugs (including a couple that significantly
2678affected character quality) and also includes some substantial performance
2679improvements.
2680
2681<h3><a name="V3.61_Documentation"></a>Documentation</h3><pre>
2682Fixes bugs:
2683	- The directory name for the PNG library was incorrect.
2684(libpng.mak)
2685	- The analysis of curve monotonocity in gxpcopy.c had an error.
2686(gxpcopy.c)
2687
2688Changes the subdirectory names for zlib and libpng to be consistent.
2689(make.doc)
2690
2691Documents a possible problem with object file format incompatibilities in
2692certain versions of Linux.  (make.doc)
2693
2694Documents the new distinction between devices and device prototypes.
2695(language.doc)
2696
2697Adds a pointer to DEC's free pstotext utility.  (README)
2698
2699</pre><h3><a name="V3.61_Procedures"></a>Procedures</h3><pre>
2700
2701Fixes bugs:
2702	- zlib.mak omitted some files in the encoding module dependencies.
2703(zlib.mak)
2704	- os2.mak referred to png.mak rather than libpng.mak.  (os2.mak)
2705	- The png devices didn't include gdevpccm.$(OBJ) as a required file.
2706(devs.mak)
2707	- Some modules in lib.mak referred to stream.h, which was defined in
2708int.mak.  (int.mak, lib.mak)
2709	- Quite a few dependencies on header files were missing from the
2710makefiles.  (int.mak, lib.mak, *.mak)
2711
2712Adds a 'pg' target to the Unix makefiles, for building profiling
2713configurations.  (unix-end.mak)
2714
2715</pre><h3><a name="V3.61_Utilities"></a>Utilities</h3><pre>
2716
2717Fixes bugs:
2718	- Type 1 fonts in which some characters are defined by PostScript
2719procedures couldn't be compiled.  (ccfont.h, iccfont.c, font2c.ps)
2720	- pdf2ps didn't write Widths or Encoding in the converted file,
2721producing incorrect spacing and incorrect characters.  (pdf_2ps.ps)
2722	- markhint.ps didn't handle the Type 1 'div' operator, causing
2723typecheck errors.  (markhint.ps)
2724	- markhint.ps ignored the hstem3 and vstem3 hints.  (markhint.ps)
2725
2726Changes the rollconv.ps utility to produce files whose names conform to the
27278.3 length restriction, and to reduce the fixed RAM overhead for Kanji
2728fonts.  (rollconv.ps)
2729
2730Adds a utility for detecting compiler problems that affect Ghostscript.
2731(bughunt.sh)
2732
2733</pre><h3><a name="V3.61_Drivers"></a>Drivers</h3><pre>
2734
2735Adds anti-aliasing capability (-dTextAlphaBits and -dGraphicsAlphaBits) to
2736the PGM and PPM drivers.  (gdevpbm.c)
2737
2738Declares the static_procs member of the device structure as const *.  This
2739should have been done a long time ago!  (drivers.doc, gxdevice.h)
2740
2741</pre><h3><a name="V3.61_Platforms"></a>Platforms</h3><pre>
2742
2743Fixes bugs:
2744	- Printing didn't work in 32-bit MS Windows environments.
2745(bcwin32.mak, gdevmswn.c, gp_mswin.c)
2746	- There were some compatibility problems with IBM C.  (os2.mak,
2747gsdll.h, gdevpm.c, gp_os2.c)
2748
2749Adds the PNG drivers to the 32-bit MS Windows and OS/2 makefiles.
2750(bcwin32.mak, os2.mak)
2751
2752Adds a conditional to work around a bug in gcc 2.7.x (it didn't recognize
2753that the target of a const T * might still be mutable through aliasing).
2754(stdpre.h)
2755
2756</pre><h3><a name="V3.61_Fonts"></a>Fonts</h3><pre>
2757
2758Fixes bugs:
2759	- Rasterizing a character in a Type 1 font with an invalid FontBBox
2760left some garbage on the operand stack (bug introduced in 3.52 or 3.60).
2761(gs_type1.ps)
2762	- The font substitution algorithm could fail or loop.  (gs_fonts.ps)
2763
2764Adds a little more support for CID fonts and CMaps.  (gs_cidfn.ps,
2765gs_cmap.ps)
2766
2767</pre><h3><a name="V3.61_Interpreter"></a>Interpreter</h3><pre>
2768
2769Fixes bugs:
2770	- An #include &lt;memory_.h&gt; was missing.  (ziodev.h)
2771	- Scanner-detected errors (primarily syntaxerror) didn't report the
2772file position.  (gs_init.ps)
2773	- Rotated characters were rendered incorrectly (bug introduced in
27743.52).  (gstype1.c)
2775	- Some compilers got upset about the use of 'dict' as a variable
2776name.  (zdict.c)
2777	- Operand stack overflows sometimes didn't set the "requested" field
2778correctly.  (interp.c)
2779	- Using -dBufferSpace= with a non-printer device caused an error.
2780(gs_init.ps)
2781
2782Adds zlibEncode/Decode filters.  (int.mak, zfzlib.c)
2783
2784Separates devices from device prototypes.  Prototypes, which lack the
2785writable attribute, cannot be installed as the current device or have their
2786parameters changed.  This change allows Ghostscript to be exited and
2787restarted without being reloaded, which solves some problems with DLL
2788usage.  ****** WE HAD TO SUBVERT THIS CHANGE BECAUSE OF MEMORY MANAGER
2789PROBLEMS, by making zgetdevice return a writable reference to the
2790prototype.  (We finally fixed this in release 3.65.)  (gs_init.ps, iref.h,
2791opcheck.h, zdevice.c, ztype.c, zwppm.c)
2792
2793Extends the client API to allow for pushing values onto the operand stack.
2794(imain.h, gs.c, gsmain.c)
2795
2796Defines a .setdefaultscreen procedure that sets the default halftone screen,
2797transfer function, and stroke adjustment for the current device.  Changes
2798selectdevice and setpagedevice so that they call .setdefaultscreen;
2799setpagedevice calls .setdefaultscreen before calling the Install procedure,
2800so that Install can set different parameters if it wishes.  Note that
2801setdevice does not do this.  (gs_init.ps, gs_setpd.ps)
2802
2803</pre><h3><a name="V3.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
2804
2805Fixes bugs:
2806	- Tf set the current text font twice, and interacted with pdf2ps in
2807an awkward way.  (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
2808	- If a font had variant Widths, it could get confused in the cache
2809with the underlying font.  (pdf_font.ps)
2810	- If a character appeared twice in an encoding and the font
2811specified different Widths values for the two occurrences, the last Width
2812would be used.  We patched this to ignore zero Widths, which is not the
2813correct solution but which almost always produces correct output.
2814(pdf_font.ps)
2815	- Arrays containing nulls didn't print out correctly (bug introduced
2816in 3.60).  (gs_init.ps)
2817	- Some PDF files contain very large dictionaries, which caused a
2818stackoverflow.  (pdf_base.ps)
2819
2820Speeds up the initial processing of PDF files by caching the map from page
2821numbers to page objects, and by not scanning the outlines if we aren't
2822producing PostScript output.  (pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
2823
2824</pre><h3><a name="V3.61_Streams"></a>Streams</h3><pre>
2825
2826Adds zlibEncode/Decode filters.  (lib.mak, szlibx.h, szlibc.c, szlibd.c,
2827szlibe.c)
2828
2829</pre><h3><a name="V3.61_Library"></a>Library</h3><pre>
2830
2831Fixes bugs:
2832	- glyphshow displayed a character with code 0 rather than the
2833requested character (bug introduced in 3.60.)  (gschar.c)
2834	- If trimming white space around a character reduced its raster, the
2835character was garbled in the cache (bug introduced in 3.60.)  (gxccman.c)
2836	- colorimage would incorrectly convert white pixels to black if the
2837image color space was CMYK, the current color space was not CMYK, and the
2838number of bits per pixel was 4 or 8.  (gsimage2.c)
2839	- One of the clipping tests for images was backwards (bug introduced
2840in 3.60).  (gsimage.c)
2841	- Type 1 fonts that used the Flex feature applied hints to the path
2842multiple times, causing dropouts, uneven stems, and other problems (bug
2843probably introduced in 3.21).  (gstype1.c)
2844	- If a Type 1 font used the Flex feature within the accent of an
2845accented character defined with seac, the shape of the accent could be
2846distorted.  (gxtype1.h, gstype1.c)
2847	- If a Type 1 font changed hints using the hint replacement facility
2848when the last operation was a closepath, the old hints would be applied a
2849second time, distorting the shape.  (gxhint3.c)
2850	- Band lists could read garbage beyond the end of data for a band,
2851causing unpredictable errors (bug introduced in 3.60).  (gxclread.c)
2852	- If the bounding box of the path for fill_path or stroke_path went
2853outside the device page boundary when banding, out-of-bounds memory
2854references occurred (bug introduced in 3.60).  (gxdevice.h, gxclpath.c)
2855
2856Adds an alternative implementation of the core path filling algorithm that
2857is much faster on objects with curves but doesn't handle Y fattening.  This
2858is the implementation that will normally be used for rasterizing characters.
2859This implementation rasterizes curves directly, without flattening them.
2860(gxfixed.h, gxpath.h, gzpath.h, gsdps1.c, gxfill.c, gxpcopy.c, gxpdash.c)
2861
2862Speeds up the flattening of curves substantially by omitting more redundant
2863points.  (gxpcopy.c)
2864
2865Speeds up character bitmap compression a little more.  (gsbitops.h,
2866gdevabuf.c, gsbitops.c, gxccman.c)
2867
2868Speeds up anti-aliased graphics a bit by computing a bounding box before
2869converting from oversampling to alpha values, and by speeding up the
2870bounding box computation itself.  (gsbitops.h, gdevabuf.c, gsbitops.c,
2871gxccman.c)
2872
2873</pre>
2874
2875<h2><a name="Version3.60"></a>Version 3.60 (limited) (11/20/95)</h2>
2876
2877<p>
2878(Note: release numbers 3.54 through 3.59 were deliberately skipped.)  This
2879internal release includes a major redesign of band lists in order to reduce
2880their size for embedded implementations, to move towards supporting "vector"
2881output formats, and to further separate the imager library from the language
2882interpreters.
2883
2884<h3><a name="V3.60_Documentation"></a>Documentation</h3><pre>
2885Fixes bugs:
2886	- A comment was incorrect.  (viewpbm.ps)
2887	- The PixelDifference filters were not documented.  (language.doc)
2888	- The change from currenttime to .currenttime wasn't documented.
2889(language.doc)
2890	- gs.1 incorrectly stated that the default font directory name
2891included the version number.  (gs.1)
2892	- The -g and -r switches didn't specify that the units for their
2893arguments are pixels and pixels per inch respectively.  (use.doc)
2894	- The PageOffset page device parameter wasn't listed.
2895(language.doc)
2896
2897Changes copy_mono and copy_color to optional procedures.  (drivers.doc)
2898
2899Adds a reference to ps_view.ps, a "dumb terminal" user interface for
2900Ghostscript intended for MS-DOS users.  (README)
2901
2902Splits off the documentation on installing Ghostscript into a separate file.
2903(readme, install.doc, use.doc)
2904
2905Adds documentation on the data format produced by the standard LZWEncode
2906filter.  (readme, lzwce.doc)
2907
2908Clarifies XLIBDIR vs. XLIBDIRS.  (make.doc)
2909
2910Adds user-contributed documentation on building Ghostscript under QNX.
2911(make.doc)
2912
2913</pre><h3><a name="V3.60_Procedures"></a>Procedures</h3><pre>
2914
2915Fixes bugs:
2916	- The rule for building dfaxhigh.dev had a typo.  (devs.mak)
2917	- The dependencies for gdevpipe.h were missing errno__h and
2918string__h.  (unixtail.mak)
2919	- The geninit program (the implementation of COMPILE_INITS=1) didn't
2920parse the command line properly, and didn't check for PostScript files
2921properly.  (geninit.c)
2922	- ccfontab.c was omitted from the fileset.  The easiest way to fix
2923this was to rename it to icfontab.c.  (gs.mak, int.mak, ccfontab.c)
2924	- The Unix makefiles installed caption.ls (a typo) rather than
2925caption.ps.  (unix-end.mak)
2926	- XLIBDIR, for dynamic library access, wasn't defined.  (*head.mak,
2927*tail.mak, ugcclib.mak)
2928
2929Adds the PNG and ZLIB makefiles to the fileset.  (*.mak, png.mak, zlib.mak,
2930tar_cat)
2931
2932Puts the PixelDifference filters in the standard Level 2 set, since the LZW
2933filters may invoke them (a post-Red Book addition to the PostScript language
2934definition).  (int.mak)
2935
2936Adds -Wcast-qual to the gcc compiler flags.  (gcc-head.mak)
2937
2938Adds the PNG drivers to the standard Unix configurations.
2939(ansi/cc-/gcc-head.mak)
2940
2941Adds a -dNOFONTPATH switch to suppress any consultation of the FONTPATH
2942variable or the GS_FONTPATH environment variable.  (gs_fonts.ps, gs_init.ps)
2943
2944</pre><h3><a name="V3.60_Utilities"></a>Utilities</h3><pre>
2945
2946Fixes bugs:
2947	- The default scaling for viewing PBM files was computed
2948incorrectly.  (viewpbm.ps)
2949	- ps2ascii left a value on the stack for each unrecognized character
2950it processed, eventually causing a stackoverflow.  (ps2ascii.ps)
2951
2952Changes viewpbm.ps so that it simply defines P1 through P6, allowing PBM
2953files to be executed with 'run'.  (viewpbm.ps)
2954
2955Adds a small benchmark to crudely measure hardware/system performance.  The
2956same file can either be compiled as a C program or executed as a PostScript
2957program.  (bench.c)
2958
2959Adds a few PPD files to the distribution.  There will probably be more as
2960time goes on.  (tar_gs, unix-end.mak)
2961
2962Updates the Unix lpr scripts to handle a wider variety of device options.
2963(unix-lpr.doc, lprsetup.sh, unix-lpr.sh)
2964
2965Adds a utility for converting files produced by Macromedia's Rollup program
2966to a Type 0 form directly usable by Ghostscript.  (rollconv.ps)
2967
2968</pre><h3><a name="V3.60_Drivers"></a>Drivers</h3><pre>
2969
2970Fixes bugs:
2971	- Forwarding devices passed an incorrect first argument when
2972forwarding a copy_rop operation.  (gsdevice.c)
2973	- Because of a typo, the LaserJet drivers had incorrect margins.
2974This was probably a new bug in 3.5x.  (gdevdjet.c)
2975	- A private name was duplicated.  (gdevtfax.c)
2976	- The x11alpha driver passed invalid colors to the X library.
2977(gdevxalt.c)
2978	- The x11alpha driver set the blue component of colors incorrectly.
2979(gdevxalt.c)
2980	- Some `const' declarations were missing.  (gdevtifs.c, gdevtfnx.c,
2981gdevxxf.c)
2982	- The size of A4 paper was slightly inconsistent across drivers.
2983(gdevdjet.c, gdevl256.c)
2984
2985Provides default implementations of copy_mono and copy_color in terms of
2986fill_rectangle.  (gxdevice.h, gsdevice.c)
2987
2988Adds forwarders for sync_output and output_page.  (gxdevice.h, gsdevice.c)
2989
2990Adds new optional procedures to the driver interface:
2991	- fill_path for filling a path with a color;
2992	- stroke_path for stroking a path;
2993	- fill_mask for painting a color through a mask.
2994The default implementations use the existing rasterizer algorithms.  This
2995involves a NON-BACKWARD-COMPATIBLE change to the parameters of a few
2996internal routines:
2997	gs_currentlineparams
2998	gx_fill_path, gx_fill_path_only, gx_path_expand_dashes, gx_path_flatten
2999and two externally visible routines not part of standard PostScript:
3000	gs_setfilladjust, gs_currentfilladjust
3001(gdevmem.h, gdevprn.h, gspath.h, gspenum.h, gxcpath.h, gxdevice.h, gxdraw.h,
3002gxpaint.h, gxpath.h, gscoord.c, gsdevice.c, gspaint.c, gsstate.c,
3003gxacpath.c, gxclist.c, gxclread.c, gxcpath.c, gxdraw.c, gxfill.c, gxpaint.c,
3004gxpcmap.c, gxpcopy.c, gxstroke.c)
3005
3006Makes major changes to the dithering algorithm for the color DeskJet and
3007BubbleJet drivers, contributed by a user.  (gdevcdj.c)
3008
3009Adds a contributed 12-bit RGB TIFF driver.  (gdevtfnx.c)
3010
3011</pre><h3><a name="V3.60_Platforms"></a>Platforms</h3><pre>
3012
3013Fixes bugs:
3014	- The printjob created by Ghostscript was called "Ghostscirpt"
3015instead of "Ghostscript".  (gp_os2.c)
3016	- An "export" declaration was omitted from DllInit.  (gp_mswin.c)
3017
3018Removes gp_get_clock (its interface was changed from calendar
3019days/milliseconds to epoch seconds/nanoseconds in an undocumented,
3020NON-BACKWARD-COMPATIBLE change in 3.51), and adds a new gp_get_realtime
3021procedure that returns epoch seconds/nanoseconds.  This too is a
3022NON-BACKWARD-COMPATIBLE change; it is required because we overlooked the
3023prior change in a batch of user-contributed code.  (gp.h, gp_*.c)
3024
3025</pre><h3><a name="V3.60_Fonts"></a>Fonts</h3><pre>
3026
3027Adds Heavy as a synonym for Bold when doing intelligent font substitution.
3028(gs_fonts.ps)
3029
3030</pre><h3><a name="V3.60_Interpreter"></a>Interpreter</h3><pre>
3031
3032Fixes bugs:
3033	- The setup for the CCITTFax filters set the 'raster' element
3034redundantly.  (zfdecode.c)
3035	- currentscreen and currentcolorscreen could give an error if the
3036current screen was set with sethalftone (or, for currentscreen,
3037setcolorscreen).  (gs_dps1.ps)
3038	- The font operators didn't work properly if a PostScript file
3039redefined certain operator names.  (gs_res.ps)
3040	- The CCITTFax filters imposed a limit of 9999 Rows or Columns.  The
3041new limit is 32000.  (zfdecode.c)
3042	- Streams could get removed from a bookkeeping list prematurely, and
3043wind up dangling.  (zfile.c)
3044	- The garbage collector didn't ask for large enough a mark stack,
3045and only used half of what it got.  (This was only a performance problem.)
3046(igc.c)
3047	- Two private names duplicated names in a vendor library.  (zbseq.c)
3048	- Type 1 fonts didn't enforce the maximum value of BlueScale, which
3049caused some faulty fonts produced by Fontographer to produce incorrect
3050output.  (zfont1.c)
3051	- cvs / cvrs / = didn't produce Adobe-compatible output.
3052(gs_init.ps, iutil.h, iutil.c, zfileio.c)
3053	- Multiple -I switches set the search path incorrectly.  (gsmain.c)
3054	- Many `const' declarations were missing.  (icie.h, idparam.h,
3055iref.h, iutil.h, idparam.c, iinit.c, ilocate.c, iname.c, interp.c, iparam.c,
3056iutil.c, zcie.c, zfile.c, zgstate.c, ziodev.c, ztype.c)
3057	- Fonts could wind up with a pointer to the wrong VM space, causing
3058potential GC or save/restore confusion.  (zfont2.c)
3059	- upath could leave garbage on the stack if it failed.  (gs_dps1.ps)
3060
3061Speeds up rasterizing characters into the cache a little.  (gs_type0.ps)
3062
3063Changes the default limit on the size of cached characters from the maximum
3064of (18 points or 5 times the "average" character size) to (18 points or 1%
3065of the total cache size).  (gs_init.ps)
3066
3067Adds the DecodedByteAlign parameter to the CCITTFax filters.  (zfdecode.c)
3068
3069Updates some code for compatibility with the new fill_path driver procedure.
3070(zupath.c)
3071
3072Replaces .set/currentfilladjust with .set/currentfilladjust2, and defines
3073the former in terms of the latter.  (gs_init.ps, zgstate.c)
3074
3075Extends the make[word]imagedevice operators to accept palette values of 16,
307624, and 32, for creating true-color image devices.  (zdevice.c)
3077
3078Changes realtime to match the definition of gp_get_realtime.  (zmisc.c)
3079
3080Removes the [.]currenttime operator.  realtime provides interval timing in
3081milliseconds; the %Calendar% IODevice provides calendar times.  (zmisc.c)
3082
3083Extends the LZW filters to handle the PDF Predictor (pixel-differencing)
3084option.  (zfdecode.c, zfilter2.c, zfpdiff.c (deleted))
3085
3086</pre><h3><a name="V3.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3087
3088Fixes bugs:
3089	- The length of an image's data was sometimes calculated
3090incorrectly, causing an error when converting PDF to PostScript.
3091(pdf_draw.ps)
3092	- If word spacing and/or text spacing was non-zero, an error could
3093occur.  (gs_pdf.ps)
3094	- Text that was both filled and stroked caused an error.
3095(gs_pdf.ps)
3096
3097</pre><h3><a name="V3.60_Streams"></a>Streams</h3><pre>
3098
3099Fixes bugs:
3100	- When closing an encoding filter stream whose target was also a
3101filter, the latter could get called incorrectly with last = 1, possibly more
3102than once, leading to premature EOD markers.  (stream.c)
3103	- The LZW-compatible encoder put out an incorrect end-of-data code.
3104(slzwce.c)
3105	- The LZW-compatible encoder didn't put out a reset code soon
3106enough.  (slzwce.c)
3107	- Some `const' declarations were missing.  (siscale.c)
3108	- Doing a sgets on a closed stream could call sreadbuf, possibly
3109causing an error.  (stream.c)
3110
3111Adds a new (optional) set_defaults procedure to the stream template, which
3112sets the stream parameters to default values.  We only implement it for a
3113few stream types.  (scfx.h, scommon.h, slzwx.h, spdiffx.h, srlx.h,
3114strimpl.h, scfd.c, scfe.c, slzwce.c, slzwd.c, slzwe.c, spdiff.c, srld.c,
3115srle.c)
3116
3117Adds a new parameter to the CCITTFax filters, DecodedByteAlign.  This is an
3118integer N, which must be a power of 2 between 1 (2^0) and 16 (2^4), that
3119specifies that decoded data scan lines are always a multiple of N bytes.
3120The encoding filter skips data in each scan line from Columns to the next
3121multiple of N bytes; the decoding filter pads each scan line to a multiple
3122of N bytes.  Default value: 1.  (scfx.h, scfd.c, scfe.c)
3123
3124Increases the maximum width of a scan line for the CCITTFaxEncode filter to
312532000 pixels.  (scf.h)
3126
3127</pre><h3><a name="V3.60_Library"></a>Library</h3><pre>
3128
3129Fixes bugs:
3130	- Cached characters sometimes had extra blank space on the left,
3131leading to some unnecessary bit-shuffling when imaging them.  (gxccman.c)
3132	- In rare cases, gray halftones called gx_color_load unnecessarily.
3133(gxdither.c)
3134	- The list of all-bands commands wasn't initialized/reset properly.
3135(gxclist.c, gxclread.c)
3136	- Rendering an anti-aliased character to a non-anti-aliased device
3137didn't free the temporary bitmap, causing memory to be lost.  (gxccache.c)
3138	- Dash patterns where the offset exactly reached a run of length 0
3139skipped over the 0-length run.  (gsline.c)
3140	- Rectangles closed with both lineto and closepath weren't
3141recognized as rectangles.  This is only a performance bug.  (gxpath2.c)
3142	- Because of a typo in a macro formal parameter list, a private name
3143was duplicated.  (gsstruct.h)
3144	- Text display operations didn't update the current character in the
3145enumerator structure during the fastest path through the code.  This only
3146matters to one very unusual commercial client.  (gschar.c)
3147	- Some `const' declarations were missing.  (gsparam.h, gxistate.h,
3148stdpre.h; gdevm1.c, gsalloc.c, gsfont.c, gsimage3.c, gsmemory.c, gsmisc.c,
3149gspcolor.c, gstype1.c, gxfill.c, gxpcopy.c)
3150
3151Changes the header files to assume that gcc on Solaris defines
3152__svr4__ and that, in this case, &lt;string.h&gt; has the right stuff in it.
3153(memory_.h)
3154
3155Refactors the character cache to share structures with a similar cache
3156used by band lists.  Eventually the band list may be able to reference
3157the character cache directly, saving a lot of copying.  (gxbcache.h,
3158gxfcache.h, gsfont.c, gxbcache.c, gxccache.c, gxccman.c)
3159
3160Speeds up getting the side bearing and width of a Type 1 charstring a
3161little.  (gxtype1.h, gstype1.c)
3162
3163Redesigns band lists so that they can cache character bitmaps as well as
3164halftone bitmaps.  Characters may be written for all bands, not just the
3165band(s) they appear in, depending on the setting of the CHAR_ALL_BANDS_COUNT
3166parameter in gxclbits.c.  (gxcldev.h, gxclist.h, gxclbits.c, gxclist.c,
3167gxclread.c)
3168
3169Adds G4 fax compression for band list bitmaps.  (gxcldev.h, gxclist.c,
3170gxclread.c)
3171
3172Incorporates the new set_defaults procedure into the memory-based band list
3173implementation.  (gxclmem.c)
3174
3175Implements a halftoning device that can be used in a device pipeline.
3176(gdevht.h, gzht.h, gdevht.c, gxcht.c)
3177
3178Factors out imager state from the full graphics state.  This division is
3179preliminary and subject to change.  (gxistate.h, gxop1.h, gzstate.h,
3180gsline.c, gsstate.c, gstype1.c, gxhint*.c)
3181
3182Implements passing fill operations in the band list, except for pattern
3183color or colored halftones.  (gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
3184
3185Implements passing stroke operations in the band list, except for pattern
3186color or colored halftones.  (gsline.h, gslparam.h, gxline.h, gzline.h,
3187gsline.c; gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
3188
3189Implements the ability to represent halftoned characters in the band list.
3190(gxccache.c)
3191
3192Starts to implement the ability to do halftoning during the rendering phase
3193rather than before writing the band list (currently for black-and-white
3194devices only).  Doing this required NON-BACKWARD-COMPATIBLE changes to the
3195interfaces of a few internal procedures:
3196	gx_check_tile_size, gx_render_device_{color,gray}
3197(gxdcolor.h, gxdht.h, gzht.h, gsht.c, gsimage1.c, gsmisc.c, gspcolor.c,
3198gsstate.c, gxcht.c, gxclbits.c, gxdither.c, gxht.c)
3199
3200Implements passing clipping information in the band list.  (gzcpath.h,
3201gxacpath.c, gxclpath.c, gxclread.c, gxcpath.c)
3202
3203Removes the gs_state * parameter from the device color fill_rectangle
3204procedures and many of their callers, since it is no longer needed.  This is
3205a non-backward-compatible change to an internal API.  (gdevmrop.h,
3206gxdcolor.h, gxdraw.h, gxpaint.h, gdevmrop.c, gsimage.c, gspcolor.c, gxcht.c,
3207gxclread.c, gxdraw.c, gxfill.c, gxht.c, gxpaint.c, gxstroke.c)
3208
3209Removes gxdevice.h from gzstate.h, since not all modules requiring access to
3210the graphics state need to know the implementation of devices.  This entails
3211adding gxdevice.h to the include lists for some modules.  (gxchar.h,
3212gxcpath.h, gxcvalue.h, gxdevice.h, gxtype1.h, gzstate.h; gschar.c,
3213gscoord.c, gsdevice.c, gsimage1.c, gsimage2.c, gsimage3.c, gspaint.c,
3214gspath.c, gsstate.c, gstype1.c, gxccache.c, gxccman.c, gxhint1.c, gxhint2.c,
3215gxhint3.c, gxpaint.c)
3216
3217Adds a compile-time option, ALPHA_LSB_FIRST, which causes alpha-sampled
3218characters to be nibble-reversed in the cache.  This was created for a
3219specialized application and does not interact well with the rest of the
3220code.  (gsbitops.c)
3221
3222Substantially reduces the space required to represent 24- or 32-bit colors
3223in the band list, by using more aggressive color differencing.  (gxcldev.h,
3224gxclist.c, gxclread.c)
3225
3226Changes the allocation of unique IDs for halftone tiles to use the gray
3227level rather than the number of 1-bits as the increment to a base ID; this
3228allows more efficient (delta) representation of halftone indices in the band
3229list.  (gxcldev.h, gxclist.c, gxclread.c, gxht.c)
3230
3231Substantially speeds up entering anti-aliased characters in the cache, by
3232removing white space before compressing rather than vice versa.
3233(gsbitops.c, gxccman.c)
3234
3235</pre>
3236
3237<hr>
3238
3239<h2><a name="Version3.53"></a>Version 3.53 (1/10/96)</h2>
3240
3241<p>
3242This is an anomalous, out-of-sequence release requested by a commercial
3243licensee.  It consists of 3.52 plus the following retrofits from 3.60
3244through 3.63:
3245	- PDF interpreter and pdf2ps;
3246	- Type 1 rasterizer fixes;
3247	- Type 1 rasterizer and polygon fill performance improvements;
3248	- MS Windows and OS/2 fixes;
3249	- A few other important fixes.
3250It does NOT fix all problems reported since 3.52.
3251
3252<p>
3253The list of changes below indicates which subsequent release was the source
3254of each change.  In several cases, minor editing of the change was required
3255to make it compatible with 3.52.
3256
3257<h3><a name="V3.53_Documentation"></a>Documentation</h3><pre>
3258Fixes bugs:
3259	[3.61] The analysis of curve monotonocity in gxpcopy.c had an error.
3260(gxpcopy.c)
3261
3262[3.63] Notes that the OS/2 implementation now requires EMX/GCC 0.9b rather
3263than 0.9a.  (use.doc)
3264
3265[3.62] Notes that for Win32s, gs16spl.exe must be in the same directory as
3266gswin32.exe.  (use.doc)
3267
3268[3.62] Adds a reference to dos-psv, another "dumb terminal" user interface
3269for Ghostscript intended for MS-DOS users.  (README)
3270
3271[3.61] Adds a pointer to DEC's free pstotext utility.  (README)
3272
3273[3.60] Adds a reference to ps_view.ps, a "dumb terminal" user interface for
3274Ghostscript intended for MS-DOS users.  (README)
3275
3276</pre><h3><a name="V3.53_Procedures"></a>Procedures</h3><pre>
3277
3278Fixes bugs:
3279	[3.60] The geninit program (the implementation of COMPILE_INITS=1)
3280didn't parse the command line properly, and didn't check for PostScript
3281files properly.  (geninit.c)
3282	[3.60] ccfontab.c was omitted from the fileset.  The easiest way to
3283fix this was to rename it to icfontab.c.  (gs.mak, int.mak, ccfontab.c)
3284	[3.60] The definition of pdfread.dev did an ADDMOD, not a SETMOD.
3285(int.mak)
3286
3287[3.60] Adds a -dNOFONTPATH switch to suppress any consultation of the
3288FONTPATH variable or the GS_FONTPATH environment variable.  (gs_fonts.ps,
3289gs_init.ps)
3290
3291</pre><h3><a name="V3.53_Utilities"></a>Utilities</h3><pre>
3292
3293Fixes bugs:
3294	[3.61] pdf2ps didn't write Widths or Encoding in the converted file,
3295producing incorrect spacing and incorrect characters.  (pdf_2ps.ps)
3296	[3.60] ps2ascii left a value on the stack for each unrecognized
3297character it processed, eventually causing a stackoverflow.  (ps2ascii.ps)
3298
3299[3.61] Changes the rollconv.ps utility to produce files whose names conform
3300to the 8.3 length restriction, and to reduce the fixed RAM overhead for
3301Kanji fonts.  (rollconv.ps)
3302
3303[3.60] Adds a utility for converting files produced by Macromedia's Rollup
3304program to a Type 0 form directly usable by Ghostscript.  (rollconv.ps)
3305
3306</pre><h3><a name="V3.53_Drivers"></a>Drivers</h3><pre>
3307
3308Fixes bugs:
3309	[3.60] Because of a typo, the LaserJet drivers had incorrect
3310margins.  This was probably a new bug in 3.5x.  (gdevdjet.c)
3311	[3.60] A private name was duplicated.  (gdevtfax.c)
3312	[3.60] The x11alpha driver passed invalid colors to the X library.
3313(gdevxalt.c)
3314	[3.60] The x11alpha driver set the blue component of colors
3315incorrectly.  (gdevxalt.c)
3316
3317</pre><h3><a name="V3.53_Platforms"></a>Platforms</h3><pre>
3318
3319Fixes bugs:
3320	[3.63] The test for WinExec failure on Win32 was incorrect.
3321(gp_mswin.c)
3322	[3.63] getenv was declared redundantly on OS/2.  (gp_os2.c)
3323	[3.63] gs16spl.c was missing &lt;string.h&gt;.  (gs16spl.c)
3324	[3.61] Printing didn't work in 32-bit MS Windows environments.
3325(bcwin32.mak, gdevmswn.c, gp_mswin.c)
3326	[3.61] There were some compatibility problems with IBM C.  (os2.mak,
3327gsdll.h, gdevpm.c, gp_os2.c)
3328	[3.60] The printjob created by Ghostscript was called "Ghostscirpt"
3329instead of "Ghostscript".  (gp_os2.c)
3330	[3.60] An "export" declaration was omitted from DllInit.
3331(gp_mswin.c)
3332
3333[3.61] Adds a conditional to work around a bug in gcc 2.7.x (it didn't
3334recognize that the target of a const T * might still be mutable through
3335aliasing).  (stdpre.h)
3336
3337</pre><h3><a name="V3.53_Fonts"></a>Fonts</h3><pre>
3338
3339Fixes bugs:
3340	[3.61] Rasterizing a character in a Type 1 font with an invalid
3341FontBBox left some garbage on the operand stack (bug introduced in 3.52 or
33423.60).  (gs_type1.ps)
3343	[3.61] The font substitution algorithm could fail or loop.
3344(gs_fonts.ps)
3345
3346[3.60] Adds Heavy as a synonym for Bold when doing intelligent font
3347substitution.  (gs_fonts.ps)
3348
3349</pre><h3><a name="V3.53_Interpreter"></a>Interpreter</h3><pre>
3350
3351Fixes bugs:
3352	[3.63] Invoking setpagedevice with an undefined key, even with
3353Policy = 1, caused an error.  (gs_setpd.ps)
3354	[3.62] Setting the PageSize policy to 1 and then trying to set the
3355page size caused an error if FIXEDMEDIA was selected.  (gs_setpd.ps)
3356	[3.61] Rotated characters were rendered incorrectly (bug introduced
3357in 3.52).  (gstype1.c)
3358	[3.60] currentscreen and currentcolorscreen could give an error if
3359the current screen was set with sethalftone (or, for currentscreen,
3360setcolorscreen).  (gs_dps1.ps)
3361	[3.60] Streams could get removed from a bookkeeping list
3362prematurely, and wind up dangling.  (zfile.c)
3363	[3.60] Multiple -I switches set the search path incorrectly.
3364(gsmain.c)
3365	[3.60] Fonts could wind up with a pointer to the wrong VM space,
3366causing potential GC or save/restore confusion.  (zfont2.c)
3367	[3.60] upath could leave garbage on the stack if it failed.
3368(gs_dps1.ps)
3369
3370[3.61] Extends the client API to allow for pushing values onto the operand
3371stack.  (imain.h, gs.c, gsmain.c)
3372
3373[3.61] Defines a .setdefaultscreen procedure that sets the default halftone
3374screen, transfer function, and stroke adjustment for the current device.
3375Changes selectdevice and setpagedevice so that they call .setdefaultscreen;
3376setpagedevice calls .setdefaultscreen before calling the Install procedure,
3377so that Install can set different parameters if it wishes.  Note that
3378setdevice does not do this.  (gs_init.ps, gs_setpd.ps)
3379
3380[3.60] Speeds up rasterizing characters into the cache a little.
3381(gs_type0.ps)
3382
3383[3.60] Changes the default limit on the size of cached characters from the
3384maximum of (18 points or 5 times the "average" character size) to (18 points
3385or 1% of the total cache size).  (gs_init.ps)
3386
3387[3.60] Implements parts of the Type 1 BuildChar callout in C.  (gs_type1.ps,
3388zchar.c)
3389
3390</pre><h3><a name="V3.53_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3391
3392Fixes bugs:
3393	[3.62] If a PDF file substituted a calibrated color space for the
3394DeviceGray or DeviceRGB color space using a ColorSpace resource, the
3395PostScript file that pdf2ps produced from that PDF file caused an error.
3396(gs_pdf.ps)
3397	[3.61] Tf set the current text font twice, and interacted with
3398pdf2ps in an awkward way.  (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
3399	[3.61] If a font had variant Widths, it could get confused in the
3400cache with the underlying font.  (pdf_font.ps)
3401	[3.61] If a character appeared twice in an encoding and the font
3402specified different Widths values for the two occurrences, the last Width
3403would be used.  We patched this to ignore zero Widths, which is not the
3404correct solution but which almost always produces correct output.
3405(pdf_font.ps)
3406	[3.61] Arrays containing nulls didn't print out correctly (bug
3407introduced in 3.60).  (gs_init.ps)
3408	[3.61] Some PDF files contain very large dictionaries, which caused
3409a stackoverflow.  (pdf_base.ps)
3410	[3.60] The length of an image's data was sometimes calculated
3411incorrectly, causing an error when converting PDF to PostScript.
3412(pdf_draw.ps)
3413	[3.60] If word spacing and/or text spacing was non-zero, an error
3414could occur.  (gs_pdf.ps)
3415	[3.60] Text that was both filled and stroked caused an error.
3416(gs_pdf.ps)
3417
3418[3.61] Speeds up the initial processing of PDF files by caching the map from
3419page numbers to page objects, and by not scanning the outlines if we aren't
3420producing PostScript output.  (pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
3421
3422</pre><h3><a name="V3.53_Streams"></a>Streams</h3><pre>
3423
3424Fixes bugs:
3425	[3.60] When closing an encoding filter stream whose target was also
3426a filter, the latter could get called incorrectly with last = 1, possibly
3427more than once, leading to premature EOD markers.  (stream.c)
3428	[3.60] The LZW-compatible encoder put out an incorrect end-of-data
3429code.  (slzwce.c)
3430	[3.60] The LZW-compatible encoder didn't put out a reset code soon
3431enough.  (slzwce.c)
3432	[3.60] Doing a sgets on a closed stream could call sreadbuf,
3433possibly causing an error.  (stream.c)
3434
3435</pre><h3><a name="V3.53_Library"></a>Library</h3><pre>
3436
3437Fixes bugs:
3438	[3.63] On 16-bit platforms, the computation of t2 and t3 in
3439gx_curve_x_at_y could overflow, leading to incorrect output.  (gxpcopy.c)
3440	[3.61] glyphshow displayed a character with code 0 rather than the
3441requested character (bug introduced in 3.60.)  (gschar.c)
3442	[3.61] If trimming white space around a character reduced its
3443raster, the character was garbled in the cache (bug introduced in 3.60.)
3444(gxccman.c)
3445	[3.61] colorimage would incorrectly convert white pixels to black if
3446the image color space was CMYK, the current color space was not CMYK, and
3447the number of bits per pixel was 4 or 8.  (gsimage2.c)
3448	[3.61] Type 1 fonts that used the Flex feature applied hints to the
3449path multiple times, causing dropouts, uneven stems, and other problems (bug
3450probably introduced in 3.21).  (gstype1.c)
3451	[3.61] If a Type 1 font used the Flex feature within the accent of
3452an accented character defined with seac, the shape of the accent could be
3453distorted.  (gxtype1.h, gstype1.c)
3454	[3.61] If a Type 1 font changed hints using the hint replacement
3455facility when the last operation was a closepath, the old hints would be
3456applied a second time, distorting the shape.  (gxhint2.c, gxhint3.c)
3457	[3.60] Cached characters sometimes had extra blank space on the
3458left, leading to some unnecessary bit-shuffling when imaging them.
3459(gxccman.c)
3460	[3.60] The list of all-bands commands wasn't initialized/reset
3461properly.  (gxclist.c)
3462	[3.60] Because of a typo in a macro formal parameter list, a private
3463name was duplicated.  (gsstruct.h)
3464	[3.60] Text display operations didn't update the current character
3465in the enumerator structure during the fastest path through the code.  This
3466only matters to one very unusual commercial client.  (gschar.c)
3467
3468[3.61] Adds an alternative implementation of the core path filling algorithm
3469that is much faster on objects with curves but doesn't handle Y fattening.
3470This is the implementation that will normally be used for rasterizing
3471characters.  This implementation rasterizes curves directly, without
3472flattening them.  (gxfixed.h, gxpath.h, gzpath.h, gxdraw.c, gxfill.c,
3473gxpcopy.c)
3474
3475[3.61] Speeds up the flattening of curves substantially by omitting more
3476redundant points.  (gxpcopy.c)
3477
3478[3.61] Speeds up character bitmap compression a little more.  (gsbitops.h,
3479gdevabuf.c, gsbitops.c, gxccman.c)
3480
3481[3.61] Speeds up anti-aliased graphics a bit by computing a bounding box
3482before converting from oversampling to alpha values, and by speeding up the
3483bounding box computation itself.  (gsbitops.h, gdevabuf.c, gsbitops.c,
3484gxccman.c)
3485
3486[3.60] Speeds up getting the side bearing and width of a Type 1 charstring a
3487little.  (gxtype1.h, gstype1.c)
3488
3489[3.60] Adds a compile-time option, ALPHA_LSB_FIRST, which causes
3490alpha-sampled characters to be nibble-reversed in the cache.  This was
3491created for a specialized application and does not interact well with the
3492rest of the code.  (gsbitops.c)
3493
3494[3.60] Substantially speeds up entering anti-aliased characters in the
3495cache, by removing white space before compressing rather than vice versa.
3496(gsbitops.c, gxccman.c)
3497
3498</pre>
3499
3500<h2><a name="Version3.52"></a>Version 3.52 (limited) (10/6/95)</h2>
3501
3502<p>
3503This is an incremental release to fix a few problems in 3.51.  Since it is
3504being made in an environment with no network connectivity, it will probably
3505not be released to the general public.  ****** THE CHANGES MARKED WITH ***
3506BELOW WERE LOST IN THE PROCESS OF SHUFFLING FILESETS BETWEEN ENVIRONMENTS.
3507THEY ARE INCORPORATED IN 3.60 BUT NOT IN 3.52. ******
3508
3509<h3><a name="V3.52_Procedures"></a>Procedures</h3><pre>
3510Fixes bugs:
3511	- The fileset included a meaningless empty file.  (acctest.ps)
3512	*** The definition of pdfread.dev did an ADDMOD, not a SETMOD.
3513(int.mak)
3514
3515</pre><h3><a name="V3.52_Interpreter"></a>Interpreter</h3><pre>
3516
3517Fixes bugs:
3518	- The RunLengthEncode filter used with a dictionary argument could
3519give a spurious error.  (zfilter.c)
3520	- The fast form of the 'dup' operator failed to check for stack
3521overflow, which could lead to memory smashing.  (interp.c)
3522	*** Level 1 configurations gave errors during initialization.
3523(ialloc.c, iinit.c, ireclaim.c)
3524	*** Attempting to look up or insert a noaccess string as a
3525dictionary key converted the string to a name rather than giving an error.
3526(idict.h, idict.c)
3527
3528Adds a C implementation of the .dicttomark (&gt;&gt;) procedure.  (gs_init.ps,
3529zdict.c)
3530
3531*** Implements parts of the Type 1 BuildChar callout in C.  (gs_type1.ps,
3532ifont.h, zchar.c, zfont1.c, zfont2.c)
3533
3534</pre><h3><a name="V3.52_Library"></a>Library</h3><pre>
3535
3536Fixes bugs:
3537	- Braces were missing in an initializer.  (gxdcolor.h)
3538	- Composite fonts with a non-zero translation in the FontMatrix
3539positioned characters incorrectly.  (gschar.c)
3540	*** gsparam.c wouldn't compile with some versions of the Borland
3541compiler.  (gsparam.c)
3542
3543Speeds up the handling of curve segments in Type 1 fonts a little.
3544(gstype1.c)
3545
3546Speeds up displaying very short strings a little.  (gschar.c)
3547
3548*** Implements parts of the Type 1 BuildChar callout in C.  (gxfont.h)
3549
3550</pre>
3551
3552<h2><a name="Version3.51"></a>Version 3.51 (9/27/95)</h2>
3553
3554<p>
3555This is the first public release since 3.33.  Its main features are a
3556working setpagedevice, a working PDF interpreter, and a working PDF to PS
3557converter.
3558
3559<h3><a name="V3.51_Documentation"></a>Documentation</h3><pre>
3560
3561Fixes bugs:
3562	- The -dSHORTERRORS switch wasn't documented in enough places.
3563(current.doc, use.doc)
3564	- The DLL documentation was internally inconsistent.  (dll.doc)
3565	- The %pipe% file name syntax wasn't documented.  (language.doc)
3566
3567</pre><h3><a name="V3.51_Procedures"></a>Procedures</h3><pre>
3568
3569Fixes bugs:
3570	- caption.ps wasn't installed properly.  (unix-end.mak)
3571	- geninit depended on $(gconfig_h) in an improper way.  (geninit.c,
3572int.mak, *.mak)
3573	- One script lacked the #!/bin/sh header.  (gsdj500)
3574
3575Adds the 24-bit color TIFF driver to all configurations that support
3576black-and-white TIFF.  (*.mak)
3577
3578</pre><h3><a name="V3.51_Utilities"></a>Utilities</h3><pre>
3579
3580Fixes bugs:
3581	- align.ps was omitted from the fileset.  (psfiles.doc, align.ps,
3582unix-end.mak)
3583
3584</pre><h3><a name="V3.51_Drivers"></a>Drivers</h3><pre>
3585
3586Fixes bugs:
3587	- A driver had some \s in formal parameter lists.  (gdevcdj.c)
3588	- A driver had some improper &amp;s.  (gdevtifs.c)
3589	- The default MS Windows printer driver was very slow.  (gdevwpr2.c)
3590	- The (newly restructured) TIFF drivers could produce a memory
3591access error.  (gdevtifs.c)
3592	- The CGM drivers referred to an obsolete structure member.
3593(gdevcgm.c)
3594	- The black-and-white H-P drivers didn't set the margins properly
3595(again).  (gdevdjet.c)
3596	- Several of the most common printer drivers omitted some scan lines
3597at the bottom of the page.  (gdevprn.h, gdevprn.c)
3598
3599At the request of the main OS/2 developer, adds a printer device for OS/2.
3600(gdevos2p.c, os2.mak)
3601
3602Makes many changes to the stcolor driver, submitted by the developer just
3603before the release.  (devices.doc, unix-end.mak, gdevstc.h, gdevstc*.c,
3604stcinfo.ps, stcolor.ps, stcinfo.ps)
3605
3606</pre><h3><a name="V3.51_Platforms"></a>Platforms</h3><pre>
3607
3608Fixes bugs:
3609	- usertime (and realtime) were broken on VMS.  (gp_vms.c)
3610	- The 32-bit MS Windows DLL control file had a typo.  (gsdll32.def)
3611
3612Removes the color inkjet drivers from the 16-bit Windows executable, because
3613they overflow the 64K default data segment; adds PCX, TIFF, and BMP output
3614formats.  (bcwin.mak)
3615
3616</pre><h3><a name="V3.51_Interpreter"></a>Interpreter</h3><pre>
3617
3618Fixes bugs:
3619	- A routine was declared 'private' inconsistently.  (zcie.c)
3620	- -dSHORTERRORS didn't remove enough non-Adobe error output.
3621(gs_init.ps)
3622
3623</pre><h3><a name="V3.51_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3624
3625Fixes bugs:
3626	- The ProcSet relied on the presence of NullFont.  (gs_pdf.ps)
3627
3628</pre><h3><a name="V3.51_Library"></a>Library</h3><pre>
3629
3630Fixes bugs:
3631	- There was an extraneous \ outside a macro.  (gsline.c)
3632	- Scaling up a black-and-white image could caused many scan lines to
3633be inverted.  (gsimage1.c)
3634	- The initial clipping path did not take Margins into account
3635properly.  (gxdevice.h, gdevxalt.c, gscoord.c, gsdevice.c, gsdevmem.c,
3636gsdparam.c, gspath.c)
3637	- If banding was required, characters could come out as solid black
3638rectangles.  (gxclist.c, gxclread.c)
3639
3640</pre>
3641
3642<h2><a name="Version3.50"></a>Version 3.50 (limited) (9/24/95)</h2>
3643
3644<p>
3645This is the last limited bug-fix release during beta test.  The color
3646DeskJet drivers are broken (they sometimes produce black rectangles instead
3647of characters); we will fix this in the next release.
3648<p>
3649The following issues have been postponed to an unspecified future release:
3650<ul>
3651<li>	- Filling areas often writes pixels twice, causing incorrect
3652output
3653with certain unusual RasterOp values.  [1.814]
3654<li>	- The tar.gz archives should include a subdirectory like
3655gs-3.46/ in
3656the file names.
3657<li>	- The CCITTFaxDecode filter should skip initial junk if
3658EndOfLine =
3659true.  [1844 8/24/95, NRE]
3660</ul>
3661
3662<h3><a name="V3.50_Procedures"></a>Procedures</h3><pre>
3663Fixes bugs:
3664	- The name of the new 24-bit TIFF driver was incorrect in one place.
3665(vms.mak)
3666
3667</pre><h3><a name="V3.50_Utilities"></a>Utilities</h3><pre>
3668
3669Adds a new utility to put a caption in a box at the bottom of each page.
3670(caption.ps)
3671
3672</pre><h3><a name="V3.50_Drivers"></a>Drivers</h3><pre>
3673
3674Fixes bugs:
3675	- The PC display devices weren't page devices.  Probably all the
3676other display and window system devices should be made page devices too, but
3677we aren't going to bother tracking them down.  (gdevpcfb.c)
3678	- There was a lot of duplicated code in the TIFF drivers.
3679(gdevtifs.h, gdevtfax.c, gdevtfnx.c, gdevtifs.c)
3680
3681Updates the bjc600 / bjc800 drivers with changes from the author.
3682(devices.doc, gdevbjc.h, gdevcdj.c)
3683
3684</pre><h3><a name="V3.50_Interpreter"></a>Interpreter</h3><pre>
3685
3686Fixes bugs:
3687	- Building with COMPILE_INITS=1 produced a stackunderflow error.
3688(gs_pdf_e.ps)
3689	- An internal operator didn't have a name.  (ztoken.c)
3690	- Some error and information messages weren't in the Adobe format.
3691(gs_fonts.ps, gs_init.ps)
3692	- Some common Adobe compatibility operators weren't implemented:
3693pagemargin, pageparams, setpagemargin.  (gs_statd.ps, gs_lev2.ps)
3694	- setpageparams set Margins rather than PageOffset.  (gs_lev2.ps)
3695	- setpage and setpageparams didn't set Orientation.  (gs_lev2.ps)
3696	- If the end of an input buffer fell just after the / of a literal
3697name, a memory access error could occur.  (iscan.c)
3698	- When the interpreter returned from gs_[main_]run_string_continue,
3699there could be an extra value on the operand stack.  (iscan.h, istream.h,
3700interp.c, iscan.c, zfileio.c, zfproc.c, zpaint.c, ztoken.c)
3701	- If the character cache was disabled, or if a character was too
3702large to be cached, returning from a font BuildChar procedure could do an
3703erasepage.  (zchar.c)
3704
3705A minor change was required for compatibility with the library change for
3706image devices.  (zdevice.c)
3707
3708Adds a -dSHORTERRORS switch that changes some of the common error and
3709warning messages for greater Adobe compatibility.  (gs_init.ps, gs_fonts.ps)
3710
3711</pre><h3><a name="V3.50_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3712
3713Fixes bugs:
3714	- If a CharProc for a Type 3 font did a BT/ET, the graphics state
3715could get confused.  (gs_pdf.ps)
3716	- If a Tf occurred inside a BT/ET, it didn't take effect on
3717subsequent BT/ETs.  (gs_pdf.ps)
3718
3719</pre><h3><a name="V3.50_Library"></a>Library</h3><pre>
3720
3721Fixes bugs:
3722	- There was no way to control whether an image device was a page
3723device.  Fixing this required a NON-BACKWARD-COMPATIBLE CHANGE to
3724gs_makewordimagedevice and gs_initialize_wordimagedevice to take a Boolean
3725page_device argument.  Fortunately, this change affects only a few obscure
3726library clients.  (gsdevice.h, gsdevmem.c)
3727
3728Adds translation capability to clipping devices.  This isn't used anywhere
3729yet.  (gxcpath.h, gxcpath.c)
3730
3731Adds procedures for doing unaligned copy_xxx operations.  These were added
3732for a customer.  (gxdevice.h, gsdevice.c)
3733
3734Changes the (undocumented) return value of gs_setcachedevice[2]: they used
3735to return 1 if the current show operation was a non-displaying one
3736(stringwidth or cshow), and now return 1 if the cache device was just
3737installed.  This change was required to fix the BuildChar page clearing bug
3738in the interpreter.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE, but as far as
3739I know, there aren't any external clients of these routines.  (gschar.h,
3740gschar.c)
3741
3742</pre>
3743
3744<hr>
3745
3746<h2><a name="Version3.49"></a>Version 3.49 (limited) (9/20/95)</h2>
3747
3748<p>
3749This is another bug-fix release during beta test.  There are other bugs
3750outstanding, but the ones I know about right now are all platform-specific.
3751
3752<h3><a name="V3.49_Documentation"></a>Documentation</h3><pre>
3753Fixes bugs:
3754	- make.doc didn't mention that the .def files are needed to build a
3755MS Windows executable.  (make.doc)
3756
3757</pre><h3><a name="V3.49_Procedures"></a>Procedures</h3><pre>
3758
3759Fixes bugs:
3760	- There were some forward references to macro definitions in the
3761makefiles.  (int.mak, lib.mak)
3762	- The default device for library configurations was the null page
3763device, not the first device in DEVICE_DEVS.  (ugcclib.mak)
3764
3765</pre><h3><a name="V3.49_Drivers"></a>Drivers</h3><pre>
3766
3767Fixes bugs:
3768	- The BJC600 / BJC800 drivers were missing a header file.
3769(gdevbjc.h, gdevcdj.c)
3770	- A procedure name was used in two different files.  (gdevcdj.c)
3771	- The PCX driver didn't return an error code in case of failure.
3772(gdevpcx.c)
3773	- The X Windows driver produced some confusing warning messages.
3774(gdevxini.c)
3775	- Some names were duplicated between drivers.  (gdevepsc.c)
3776	- The X driver maintained its own, peculiar initial matrix even if
3777Ghostview wasn't involved.  (gdevx.c)
3778
3779With the permission of the author, changes the 24-bit TIFF license from GNU
3780to Aladdin.  (gdevtfnx.c)
3781
3782</pre><h3><a name="V3.49_Platforms"></a>Platforms</h3><pre>
3783
3784Fixes bugs:
3785	- The VMS build scripts were out of sync with the makefiles (again).
3786(modules.lis, vms.mak)
3787
3788</pre><h3><a name="V3.49_Interpreter"></a>Interpreter</h3><pre>
3789
3790Fixes bugs:
3791	- When the requested media size matched an available size exactly
3792with a 90 degree rotation, Orientation was ignored.  (zmedia2.c)
3793
3794Makes zcurrentdevice extern.  (opextern.h, zdevice.c)
3795
3796</pre><h3><a name="V3.49_Library"></a>Library</h3><pre>
3797
3798Fixes bugs:
3799	- A couple of places used memcpy instead of memmove.  (gxclread.c)
3800	- If a bitmap image was compressed with RLE compression in a band
3801list, it would cause an error on decompression.  (gxclread.c)
3802	- The representation of colors in the band list was needlessly
3803inefficient.  (gxcldev.h, gxclist.c, gxclread.c)
3804	- When using colored halftones, snowflak.ps crashed with an invalid
3805memory access.  More generally, any use of halftones could cause the garbage
3806collector to make an invalid access.  (gsstate.c)
3807
3808Adds some more code for paths in band lists, but again doesn't activate it.
3809(gxcldev.h, gxpath.h, gzline.h, gsline.c, gspath1.c, gxclist.c, gxclread.c,
3810gxpath.c)
3811
3812</pre>
3813
3814<h2><a name="Version3.48"></a>Version 3.48 (limited) (9/17/95)</h2>
3815
3816<p>
3817This is the second bug-fix release during beta test.  Among other things, it
3818fixes a bug introduced in 3.47 that caused all PDF files to give an error.
3819
3820<p>
3821******NOTE: the BJC600 and BCJ800 drivers do not work in this release,
3822because we didn't get a file from the author in time.  They will compile,
3823but not run.  This will be fixed in the next round.
3824
3825<h3><a name="V3.48_Documentation"></a>Documentation</h3><pre>
3826Fixes bugs:
3827	- Alan Barclay's contact information was wrong.  (README)
3828
3829</pre><h3><a name="V3.48_Procedures"></a>Procedures</h3><pre>
3830
3831Fixes bugs:
3832	- The linker path for Watcom C++ 10.5 was wrong.  (wccommon.mak)
3833	- There was a syntax error in a batch file.  (pdf2ps.bat)
3834	- The VMS build script didn't have entries for some printers.
3835(vms.mak)
3836
3837Adds the bjc600 and bjc800 devices on all platforms that already include the
3838color DeskJet devices.  (*.mak)
3839
3840</pre><h3><a name="V3.48_Drivers"></a>Drivers</h3><pre>
3841
3842Fixes bugs:
3843	- The H-P drivers didn't reposition the cursor properly at the
3844beginning of pages after the first page, causing the image to be shifted
3845down slightly and cut off at the bottom.  (gdevdjet.c)
3846	- The x11alpha driver was extremely slow.  (gdevxalt.c)
3847	- The -g switch by itself didn't work for the X Windows driver.
3848(gdevxini.c)
3849	- .installpagedevice can get a rangecheck on MS Windows because the
3850HWColorMap can change spontaneously.  (gs_setpd.ps)
3851
3852Updates the bjc600 and bjc800 drivers with new versions from Yves Arrouye.
3853(gdevcdj.c)
3854
3855Adds a user-contributed driver that writes uncompressed 24-bit RGB TIFF
3856images in a format that is standard on NeXT platforms.  This driver is
3857governed by the GNU license and is therefore separated from the rest of the
3858Aladdin distribution.  (gdevtfnx.c)
3859
3860</pre><h3><a name="V3.48_Platforms"></a>Platforms</h3><pre>
3861
3862Fixes bugs:
3863	- There was an undefined reference to clock_gettime on some Unix
3864systems.  (gp_unix.c)
3865	- The new gp_fopen routine had several errors.  (gp_vms.c)
3866
3867</pre><h3><a name="V3.48_Interpreter"></a>Interpreter</h3><pre>
3868
3869Fixes bugs:
3870	- Some routines that should be main-instance-specific weren't.
3871(imain.h, main.h, gsmain.c)
3872	- sethalftone with a Type 2 or Type 4 halftone didn't work on CMYK
3873devices.  (zht2.c)
3874	- Setting A4 paper as the default in gs_init.ps, or specifying
3875-dPAPERSIZE, conflicted with -g.  (gs_init.ps)
3876	- The maximum value of a single-precision float wasn't correct on
3877VAX systems.  (math_.h, iscannum.c)
3878	- Some integer expressions were passed as floating point arguments.
3879(gs.c, zmedia2.c)
3880	- Media selection in setpagedevice was broken (again), as of 3.46.
3881(gs_setpd.ps, zmedia2.c)
3882
3883</pre><h3><a name="V3.48_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
3884
3885Fixes bugs:
3886	- Substituted color spaces caused an error.  (gs_pdf.ps,
3887pdf_draw.ps)
3888
3889</pre><h3><a name="V3.48_Library"></a>Library</h3><pre>
3890
3891Fixes bugs:
3892	- If a halftone had no non-default components that matched the
3893device's primary colors, the result would be a solid color rather than a
3894halftone using the default screen.  (gsht.c)
3895	- sethalftone with a Type 2 or Type 4 halftone didn't work on CMYK
3896devices.  (gxht.h, gsht.c, gsht1.c)
3897	- The new gp_fopen routine wasn't being used.  (gsiodev.c)
3898	- A mixing of float and fixed values caused a clipping region to be
3899possibly incorrect by up to 1 pixel.  (gspaint.c)
3900	- A function definition was inconsistent with the prototype.
3901(gspath1.c)
3902
3903Adds preliminary code for including paths in band lists, but doesn't
3904activate any of it.  (lib.mak, gxcldev.h, gxclist.c, gxclread.c)
3905
3906</pre>
3907
3908<h2><a name="Version3.47"></a>Version 3.47 (limited) (9/14/95)</h2>
3909
3910<p>
3911This is a bug-fix release during beta test.  It is meant to have no new
3912functionality, although in the case of setpagedevice that's stretching
3913things a little.
3914
3915<h3><a name="V3.47_Documentation"></a>Documentation</h3><pre>
3916Fixes bugs:
3917	- The Mac documentation still referred to IJG JPEG v5a rather than
3918v6.  (make.doc)
3919	- The RasterOp texture device was identified incorrectly.
3920(gdevmrop.c)
3921	- use.doc and psfiles.doc didn't mention the PDF-related files.
3922(psfiles.doc, use.doc)
3923	- psview is no longer available.  (README)
3924	- current.doc didn't document the recognized setpagedevice keys.
3925(current.doc)
3926
3927</pre><h3><a name="V3.47_Procedures"></a>Procedures</h3><pre>
3928
3929Fixes bugs:
3930	- Many utility programs weren't included in the Unix 'install' list.
3931(unix-end.mak)
3932	- It wasn't at all convenient to make configurations without the BCP
3933or other non-standard filters.  (*.mak, int.mak, modules.lis, zfilter2.c,
3934zfilterx.c)
3935	- The gconfig.c and iconfig.c files weren't deleted after
3936compilation.  (int.mak, lib.mak)
3937	- unix-end.mak referred to the nonexistent macros INT{1,2}_MAK.
3938(unix-end.mak)
3939	- The rules for building the dfax drivers were incorrect.  (devs.mak)
3940	- Omitting filter.dev produced an undefined reference.  (int.mak)
3941
3942Adds a customer-contributed makefile for Microsoft Visual C++ 2.n under
3943Windows NT.  (msvcwint.mak)
3944
3945</pre><h3><a name="V3.47_Utilities"></a>Utilities</h3><pre>
3946
3947Fixes bugs:
3948	- The JPEG utility didn't support the new progressive JPEG modes,
3949and didn't invert Adobe Photoshop output as needed.  (viewjpeg.ps)
3950	- The printafm utility had a single font name wired in.  (printafm,
3951printafm.ps)
3952	- The CIE lookup simulation had several bugs.  (docie.ps)
3953	- pdf2ps[.bat] were missing from the fileset.
3954	- Files produced by pdf_2ps didn't include the GS_PDF ProcSet.
3955(gs_pdf.ps, pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
3956
3957</pre><h3><a name="V3.47_Drivers"></a>Drivers</h3><pre>
3958
3959Fixes bugs:
3960	- Bits read back from an EGA or VGA device were incorrect.
3961(gdevpcfb.c)
3962	- The 24-bit PCX run length compressor used a slow algorithm.
3963(gdevpcx.c)
3964	- gdevstc.c wouldn't compile with the Borland compiler.  (gdevstc.c)
3965	- There was a typo in the OS/2 PM driver.  (gdevpm.c)
3966	- .installpagedevice gets a rangecheck on X Windows because the
3967HWColorMap can change spontaneously.  (gs_setpd.ps)
3968	- The left margin for the DeskJet 500 was wrong.  (gdevdjet.c)
3969	- The two notions of "margin" (offset of 0,0 from physical page
3970corner vs. unprintable area around edges of physical page) were still
3971confused.  We've now fixed this for the H-P monochrome printers, but it's
3972probably still confused for all other printers.  (gdevprn.h, gdevdjet.c)
3973
3974</pre><h3><a name="V3.47_Platforms"></a>Platforms</h3><pre>
3975
3976Fixes bugs:
3977	- The Windows print spooler header file wasn't included when it
3978needed to be, and some other Win32-specific changes were missing.
3979(gsdll32.def, gp_mswin.c)
3980	- Windows DLLs didn't parse "s in the command "arguments" correctly.
3981(gsdll.c)
3982
3983</pre><h3><a name="V3.47_Fonts"></a>Fonts</h3><pre>
3984
3985Fixes bugs:
3986	- FAKEFONTS could get the font directories into inconsistent states.
3987(gs_dps1.ps, gs_fonts.ps)
3988	- The substitutions for Adobe's Myriad and Minion fonts weren't
3989appropriate.  (gs_fonts.ps)
3990
3991</pre><h3><a name="V3.47_Interpreter"></a>Interpreter</h3><pre>
3992
3993Fixes bugs:
3994	- If pathforall got an error computing the user-space points on a
3995path, it could cause an invalid access.  (zpath1.c)
3996	- A 'private' declaration were omitted.  (Why doesn't gcc catch
3997this??)  (zcie.c)
3998	- Setting GS_FONTPATH produced a stackunderflow error.
3999(gs_fonts.ps)
4000	- currentscreen caused a typecheck if the screen had been set by
4001setcolorscreen.  (gs_dps1.ps)
4002	- setcolorrendering tried to cache values computed from the color
4003space even if the current color space wasn't a CIE space.  (zcrd.c)
4004	- Out-of-range numbers like 10E38 caused a floating point exception.
4005(iscannum.c)
4006	- Giving a closed readable file as input for a filter caused an
4007invalidaccess.  (files.h, interp.c, zfilter.c)
4008	- setpagedevice opened the default device even with -dNODISPLAY.
4009(gs_init.ps, gs_setpd.ps)
4010	- realtime returned the same value as usertime.  (gs_lev2.ps,
4011zmisc.c)
4012	- Storing a local value into systemdict caused some redundant code
4013to be executed.  (zdict.c)
4014	- Files with a very long first line could cause a rangecheck error.
4015(gs_init.ps)
4016	- The PageOffset page device parameter was ignored.  (gs_setpd.ps)
4017	- The Orientation page device parameter wasn't handled properly.
4018(gs_setpd.ps, idparam.h, idparam.c, zmedia2.c)
4019	- setpagedevice could set device parameters twice, with an
4020incomplete update the first time.  (gs_setpd.ps)
4021
4022</pre><h3><a name="V3.47_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4023
4024Fixes bugs:
4025	- Readers confused the internal pdfrun procedure with the public
4026runpdf procedure.  (pdf_*.ps)
4027
4028</pre><h3><a name="V3.47_Streams"></a>Streams</h3><pre>
4029
4030Fixes bugs:
4031	- Closed streams had a NULL state pointer, causing problems for some
4032clients.  (stream.c)
4033	- Group 4 decoding could get an ioerror if an end-of-buffer occurred
4034in a horizontal code sequence between a makeup code and the termination
4035code.  (scfd.c)
4036
4037</pre><h3><a name="V3.47_Library"></a>Library</h3><pre>
4038
4039Fixes bugs:
4040	- Some 'private' declarations were omitted.  (Why doesn't gcc catch
4041these??)  (gdevmrop.c, gxht.c)
4042	- Patterns could produce bad output in the band list.  (gxclist.c)
4043	- RasterOp wasn't implemented at all for 2- or 4-bit devices.  (In
4044this release, we implement only a subset, and without handling transparency
4045properly.)  (gdevm2.c, gdevm4.c, gdevmrop.c)
4046	- Drawing operations and text sometimes didn't apply the RasterOp
4047when they should, and vice versa.  (gxdcolor.h, gxdraw.c)
4048	- setcolorrendering tried to cache values computed from the color
4049space even if the current color space wasn't a CIE space.  (gscie.h,
4050gscie.c)
4051	- Some CIE color spaces produced very distorted colors.  (gscie.c)
4052	- setpagedevice opened a window even with -dNODISPLAY.  (gsdevice.c,
4053gsdparam.c)
4054	- realtime returned the same value as usertime.  (gp.h, time_.h,
4055gp_*.c)
4056	- The library level attempted to handle the Orientation page device
4057parameter.  (gxdevice.h, gdevbit.c, gsdevice.c, gsdparam.c, gspath.c)
4058	- Severely non-linear CIE encoding/decoding functions produced
4059seriously skewed colors near the ends of the color value range.  This
4060problem can now be alleviated, at a significant cost in performance, by
4061changing configuration parameters at the beginning of gscie.h.  (gscie.h,
4062gscie.c)
4063	- Files FTP'ed in binary mode weren't being opened properly on VMS.
4064(gp.h, gp_*.c, gsiodev.c)
4065	- A header file had an inconsistent declaration.  (math_.h)
4066
4067Adds a new gp_get_usertime procedure to gp.h.  THIS IS A
4068NON-BACKWARD-COMPATIBLE CHANGE, affecting only platform implementors.  It
4069was necessary to fix the realtime/usertime bug.  (gp.h, time_.h, gp_*.c)
4070
4071Adds a new gp_fopen procedure to gp.h.  THIS IS A NON-BACKWARD-COMPATIBLE
4072CHANGE, affecting only platform implementors.  It was necessary to fix the
4073binary file problem on VMS.  (gp.h, gp_*.c)
4074
4075</pre>
4076
4077<h2><a name="Version3.46"></a>Version 3.46 (limited) (9/4/95)</h2>
4078
4079<p>
4080This is the "serious beta test" release for the next public release.  It
4081finishes implementing RasterOp in the graphics state, and the remaining
4082commonly used parts of setpagedevice.
4083
4084<h3><a name="V3.46_Documentation"></a>Documentation</h3><pre>
4085Documents some possible problems when building with DJGPP v2.0-beta.
4086(make.doc)
4087
4088Adds documentation on using Ghostscript as a PDF interpreter.  (use.doc)
4089
4090Notes linking problems with the Watcom 10.0 environment.  (make.doc)
4091
4092</pre><h3><a name="V3.46_Procedures"></a>Procedures</h3><pre>
4093
4094Fixes bugs:
4095	- The rule for $(ccfonts).dev was wrong.  (gs.mak)
4096
4097Makes some additional filters into 'features'.  (devs.mak, gs.mak)
4098
4099Splits off 2 new makefiles from gs.mak, which had gotten very large: lib.mak
4100(graphics library) and int.mak (interpreters).  (tar_cat, tar_cat.bat,
4101*.mak)
4102
4103Adds a new 'config-clean' target that may be helpful in changing
4104configuration definitions.  (gs.mak)
4105
4106Notes in the relevant makefiles that on Unix and DVX systems, one should not
4107edit 'makefile' or the concatenated makefile, but should edit the individual
4108subfile and run tar_cat.  (ansihead.mak, cc-head.mak, dgc-head.mak,
4109gcc-head.mak, devs.mak)
4110
4111Updates the Watcom makefiles to handle Watcom release 10.5, in which many
4112executables moved to different directories.  (watc.mak, watcwin.mak,
4113wccommon.mak)
4114
4115Adds a pdf2ps shell script.  (pdf2ps, pdf2ps.bat)
4116
4117Adds a -sFONTMAP= switch to specify the name of the Fontmap file.
4118(gs_fonts.ps)
4119
4120Adds a -u&lt;name&gt; switch to undefine a name from systemdict.  (interp.h, gs.c,
4121iinit.c)
4122
4123Adds a -dFIXEDRESOLUTION switch to parallel -dFIXEDMEDIA.  Makes -g set
4124FIXEDMEDIA and -r set FIXEDRESOLUTION.  (gs_init.ps, gs_setpd.ps, gs.c)
4125
4126Changes some build procedures to avoid problems with read-only source files.
4127(gs.mak, int.mak, lib.mak)
4128
4129</pre><h3><a name="V3.46_Utilities"></a>Utilities</h3><pre>
4130
4131Adds a utility for emulating the CIE color mapping algorithms.  (docie.ps)
4132
4133</pre><h3><a name="V3.46_Drivers"></a>Drivers</h3><pre>
4134
4135Changes the x11alpha device so that it uses 32-bit pixels with 8 bits of
4136alpha.  (gdevxalt.c)
4137
4138Updates the Epson Stylus Color driver to Gunther Hess's release 1.17.
4139(devs.mak, unix-end.mak, devices.doc, stcolor.ps, gdevstc.h, gdevstc*.c)
4140
4141Updates the alternate X drivers for the change from PageSize to MediaSize.
4142(gdevxalt.c)
4143
4144Makes Duplex an optional parameter of printer devices rather than of all
4145devices.  (gdevprn.h, gxdevice.h, gsdparam.c, gdevdjet.c, gdevprn.c)
4146
4147</pre><h3><a name="V3.46_Platforms"></a>Platforms</h3><pre>
4148
4149Makes pipes (%pipe% file syntax) a selectable option on Unix platforms,
4150rather than always being included.  (ansihead.mak, cc-head.mak,
4151gcc-head.mak, ugcclib.mak, unixtail.mak)
4152
4153</pre><h3><a name="V3.46_Interpreter"></a>Interpreter</h3><pre>
4154
4155Fixes bugs:
4156	- colorimage, and the dictionary form of image with
4157MultipleDataSources = true, didn't check that all the data sources were of
4158the same type.  (zpaint.c)
4159	- colorimage, and dictionary-type images with MultipleDataSources =
4160true, usually didn't work properly with files.  (zpaint.c)
4161	- grestoreall left a dangling pointer to the transfer function
4162cache.  (gsstate.c)
4163	- Changes made by setpagedevice could get 'lost' and not installed
4164in the current page device dictionary.  (gs_setpd.ps)
4165	- The Install procedure was called before the new page device
4166dictionary had gotten installed.  (gs_setpd.ps)
4167	- If a grestore/grestoreall/restore/setgstate operation switched
4168page devices, the new page device didn't get installed properly.
4169(gs_setpd.ps, opextern.h, zdevice2.c, zdps1.c)
4170	- If the current screen was a Type 1 halftone, currentscreen and
4171currentcolorscreen returned frequency = 60, angle = 0 rather than the
4172Frequency and Angle from the halftone (see Adobe TN 5085).  (gs_dps1.ps,
4173gs_init.ps)
4174	- setscreen with a Type 1 halftone dictionary didn't insert the
4175frequency and angle into the dictionary (see Adobe TN 5085).  (gs_dps1.ps)
4176	- upath didn't include a trailing moveto in the bounding box.
4177(gs_dps1.ps, zpath1.c)
4178	- setpagedevice didn't automatically rotate or scale the image when
4179necessary.  (gs_setpd.ps, zmedia2.c)
4180
4181Moves the RasterOp operators to a separate file.  (iutil.h, iutil.c,
4182zgstate.c, zrop.c)
4183
4184Eliminates the unnecessary "wrapper" around .setdevice.  (zdevice2.c)
4185
4186Establishes the convention that all interpreter callbacks into PostScript
4187code use procedure names that begin with %; documents this in gs_init.ps.
4188Changes Type1BuildChar and Type1BuildGlyph to %Type1BuildChar and
4189%Type1BuildGlyph.  (gs_init.ps, gs_type1.ps, zfont0.c, zfont1.c)
4190
4191Changes image / imagemask / colorimage for the new library API.  (zimage2.c,
4192zpaint.c)
4193
4194Reorganizes font loading to make compiled fonts and Fontmap interact better
4195with each other.  (gs_ccfnt.ps, gs_fonts.ps, gs_init.ps, gs_res.ps)
4196
4197Implements parameter collection for the new CIEBasedDEF[G] color spaces, but
4198doesn't actually implement the color spaces themselves.  (icie.h, zcie.c,
4199zcrd.c)
4200
4201Renames iconfig.c as iconf.c to avoid problems with read-only source files.
4202(iconf.c)
4203
4204</pre><h3><a name="V3.46_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4205
4206Fixes bugs:
4207	- PDF to PostScript conversion didn't work.  (pdf_main.ps)
4208
4209Shifts most of the work in the PDF interpreter from the reader to the
4210ProcSet.  This simplifies the code considerably and also makes it easier to
4211modify.  (gs_pdf.ps, pdf_draw.ps, pdf_font.ps, pdf_main.ps)
4212
4213</pre><h3><a name="V3.46_Library"></a>Library</h3><pre>
4214
4215Fixes bugs:
4216	- 'static' was omitted in a place that some compilers require it.
4217(gxccman.c)
4218	- Some compilers don't allow a variable with the same name as a
4219preprocessor macro with arguments.  (gscie.c)
4220	- Some places did a "return -1" rather than a proper error return.
4221(gsdevice.c, gxclist.c)
4222	- An external declaration had a typo.  (gsrop.h)
4223	- An extra semicolon upset some compilers.  (gzpath.h)
4224	- Printer devices that didn't use the standard macros for generating
4225their procedure vector wound up being considered as non-page devices.
4226(gdevprn.c)
4227	- Some compilers truncated identifiers longer than 31 characters.
4228(gscspace.h, zcie.c, gscie.c)
4229	- upath didn't include a trailing moveto in the bounding box.
4230(gspath.h, gspath1.c)
4231	- RasterOp value 126 returned an incorrect result.  (gsroptab.c)
4232
4233Finishes implementing RasterOp in the graphics state.  (gdevmrop.h, gsrop.h,
4234gsropt.h, gsstate.h, gxbitmap.h, gxcindex.h, gxdcolor.h, gxdevice.h,
4235gzstate.h, gdevmrop.c, gscolor.c, gsdevice.c, gsimage.c, gsimage1.c,
4236gsimage2.c, gsimage3.c, gspcolor.c, gsrop.c, gsstate.c, gxacpath.c,
4237gxccache.c, gxcht.c, gxcmap.c, gxdither.c, gxdraw.c, gxht.c)
4238
4239Changes forwarding devices so they forward get_bits by default.  This
4240probably doesn't affect any existing code.  (gxdevice.h, gsdevice.c)
4241
4242Changes the API for gs_image[mask]_init to pass a structure rather than a
4243very large number of scalars.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE,
4244motivated by the addition of further image parameters to support RasterOp.
4245Since there are no external clients of the library yet, it shouldn't matter.
4246(gsimage.h, gsimage.c, gslib.c, gxccache.c)
4247
4248Redefines the device "page size" as being the size of the actual media,
4249changing the name of the gx_device PageSize member to MediaSize, the name of
4250the PageSize device parameter to .MediaSize (but keeping PageSize as
4251equivalent, for backward compatibility), and the name of the
4252gx_device_set_page_size procedure to gx_device_set_media_size (keeping the
4253old name as a macro).  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  It is
4254necessary to make setpagedevice work, and to avoid confusion about what
4255"page size" means.  It potentially affects any device driver, but almost
4256none of the device drivers distributed with Ghostscript are affected, and
4257those have been updated.  (gsparam.h, gxdevice.h, gsdevice.c, gsdparam.c,
4258gspath.c)
4259
4260Renames gconfig.c as gconf.c to avoid problems with read-only source files.
4261(gconf.c)
4262
4263Adds an API procedure for setting a bitmap pattern.  (gscolor2.h,
4264gspcolor.c)
4265
4266</pre>
4267
4268<h2><a name="Version3.45"></a>Version 3.45 (limited) (8/27/95)</h2>
4269
4270<p>
4271The purpose of this release is to fix some minor bugs reported by commercial
4272licensees, and to add two enhancements: optional RenderTable interpolation
4273for CIE color, and reducing the temporary space used during character
4274caching (also for a licensee).
4275
4276<h3><a name="V3.45_Documentation"></a>Documentation</h3><pre>
4277
4278Notes that the only valid return values from get_alpha_bits are 1, 2, and 4.
4279(drivers.doc)
4280
4281Notes that the get_bits driver procedure will return a pointer to aligned
4282data, but does not require the caller's data area to be aligned.
4283(drivers.doc)
4284
4285</pre><h3><a name="V3.45_Procedures"></a>Procedures</h3><pre>
4286
4287Fixes bugs:
4288	- Many of the printer and file output drivers in devs.mak still
4289included gdevprn.$(OBJ) in their dependencies.  (devs.mak)
4290	- PDEVH was used before it was defined.  (devs.mak)
4291	- GENCONF_XE was used before it was defined.  (unixhead.mak,
4292unix-end.mak)
4293
4294Makes it possible to switch sfile implementations without editing gs.mak.
4295(gs.mak)
4296
4297Makes it possible to specify alternate compiled font tables without editing
4298gs.mak.  (gs.mak)
4299
4300Allows quoted arguments in @-files, e.g.,
4301	-sOutputFile="a file name with spaces"
4302(gs.c)
4303
4304</pre><h3><a name="V3.45_Utilities"></a>Utilities</h3><pre>
4305
4306Fixes bugs:
4307	- The ps2ascii script could fail to delete temporary files in case
4308of an abnormal exit.  (ps2ascii)
4309
4310</pre><h3><a name="V3.45_Drivers"></a>Drivers</h3><pre>
4311
4312Fixes bugs:
4313	- The MS Windows printer capability test was wrong.  (gdevwpr2.c)
4314	- The MS Windows and OS/2/PM displays weren't page devices.
4315(gdevwdib.c, gdevpm.c)
4316
4317Gets rid of all direct references to dev-&gt;PageSize in drivers.  (gdevl256.c,
4318gdevvglb.c)
4319
4320</pre><h3><a name="V3.45_Platforms"></a>Platforms</h3><pre>
4321
4322Fixes bugs:
4323	- The 32-bit MS Windows configuration file for the Borland C++
4324compiler was missing from the fileset.  (bcc32.cfg, tar_gs)
4325
4326Makes the printer devices in the OS/2 implementation capable of outputting
4327directly to the print spooler.  (use.doc, gp_os2.c)
4328
4329Makes printing on Windows NT and Windows 95 use the printer queue.
4330(gp_mswin.c, gswin32.rc)
4331
4332</pre><h3><a name="V3.45_Interpreter"></a>Interpreter</h3><pre>
4333
4334Fixes bugs:
4335	- Copying a null device produced an uninitialized pointer.
4336(gsdevice.c)
4337	- The dictionary returned by deviceinfo wasn't read-only.
4338(gs_lev2.ps)
4339	- If a filter's init code failed, an entry on the operand stack
4340(usually the top) could be smashed.  (files.h, zfile.c, zfilter.c)
4341
4342Adds const in a few places that needed it.  (zwppm.c)
4343
4344Adds interpolation to the CIE RenderTable lookup.  (icie.h, zcie.c, zcrd.c)
4345
4346</pre><h3><a name="V3.45_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4347
4348Allows PDF files with control-character garbage at the end, and up to 250
4349characters of garbage at the beginning.  The latter is only supported by
4350runpdf, not by run.  (pdf_base.ps, pdf_main.ps)
4351
4352</pre><h3><a name="V3.45_Streams"></a>Streams</h3><pre>
4353
4354Fixes bugs:
4355	- A 1-D CCITTFaxDecode stream could give an error if an input buffer
4356boundary fell just before a 0-length termination code.  (scfx.h, scfd.c)
4357
4358</pre><h3><a name="V3.45_Library"></a>Library</h3><pre>
4359
4360Fixes bugs:
4361	- A variable was used before being set, which could cause band
4362devices to become confused when processing colored halftones.  (gxclist.c)
4363	- Some of the color and tile bookkeeping for band lists was wrong
4364(as of 3.44), causing tiled areas to be filled with garbage.  (gxclist.c,
4365gxclread.c)
4366	- Colored Patterns showed up blank on devices whose native
4367representation of `black' was a non-zero value.  The fix removes the
4368'cached' member of the gx_device structure, and requires monobit memory
4369devices to have a palette; this is a NON-BACKWARD-COMPATIBLE CHANGE for
4370anyone who was foolish enough to statically initialize a gx_device structure
4371without using the macros in gxdevice.h or gdevprn.h.  (gdevmem.h,
4372gxdevice.h, gxdevmem.h, gdevm1.c, gdevmrop.c, gsdevice.c, gxcpath.c,
4373gxdither.c)
4374
4375Provides the framework for band devices to implement alpha (anti-aliasing).
4376(gxcldev.h, gdevprn.c, gsdevice.c, gxclist.c, gxclread.c)
4377
4378Implements an efficient API for enumerating paths using device coordinates.
4379(gspath.h, gxpath.h, gzpath.h, gspath1.c, gxpath2.c)
4380
4381Changes the character cache logic so that when rasterizing large
4382anti-aliased characters, it converts the oversampled bits to alpha values on
4383the fly rather than waiting until it has rasterized the entire character.
4384This saves a lot of temporary space, at the expense of some extra time and
4385lower quality results for Type 3 characters that don't use a single fill or
4386imagemask operation to draw the character.  This enhancement requires adding
4387a member to the gx_device structure (max_fill_band), which is a
4388NON-BACKWARD-COMPATIBLE CHANGE for badly written drivers (see above).
4389(gxchar.h, gxdevice.h, gxpaint.h, gdevabuf.c, gschar.c, gspaint.c,
4390gxccache.c, gxccman.c, gxfill.c)
4391
4392Changes the palette member of memory devices from gs_string to
4393gs_const_string.  (gdevmem.h, gxdevmem.h, gdevmem.c, gdevm1.c)
4394
4395Starts to decouple halftoning from the graphics state machinery, so
4396it can be applied after banding rather than before.  (gxdcolor.h,
4397gxdht.h, gxdither.h, gzht.h, gxcmap.c, gxdither.c, gxdraw.c)
4398
4399Starts to decouple path filling from the graphics state machinery, so
4400that we can pass paths through band lists.  (gxpaint.h, gxfill.c)
4401
4402Adds interpolation to the CIE RenderTable lookup.  This is optional, enabled
4403by #define CIE_RENDER_TABLE_INTERPOLATE in gscie.h.  (gscie.h, gxctable.h,
4404gscie.c, gxctable.c)
4405
4406</pre>
4407
4408<h2><a name="Version3.44"></a>Version 3.44 (limited) (8/21/95)</h2>
4409
4410<p>
4411This includes a few bug fixes, but its main purpose is to add two new
4412features: monobit and 8-bit gray-scale RasterOp (at the driver level, not at
4413the gstate level yet), and (compressed) band lists in RAM.  Of course, these
4414new features may have introduced new bugs!
4415
4416<h3><a name="V3.44_Documentation"></a>Documentation</h3><pre>
4417Adds contact information for a user working on NeXT machines.  (README)
4418
4419Notes that Ghostscript runs on FreeBSD.  (README)
4420
4421Adds copy_rop (the RasterOp operation) to the driver interface.
4422(drivers.doc)
4423
4424Adds FONTPATH information for more operating systems.  (use.doc)
4425
4426</pre><h3><a name="V3.44_Procedures"></a>Procedures</h3><pre>
4427
4428Fixes bugs:
4429	- The tar_cat script needed a #!/bin/sh to execute correctly on all
4430platforms.  (tar_cat)
4431	- There were a number of minor errors in the makefiles.  (gs.mak,
4432unixhead.mak)
4433	- Level 2 configurations without command lists had two undefined
4434references.  (gs.mak)
4435	- Some shells required an extra ';' to terminate an 'if' command.
4436(ugcclib.mak, unix-end.mak, unixtail.mak)
4437
4438Updates the JPEG code to the officially released version 6 of the IJG
4439library.  See jpeg.mak for information on where to find this library.
4440(jpeg/*, jpeg.mak, *.mak, modules.lis)
4441
4442Adds a definition of XEAUX to the makefiles to parallel CCAUX, primarily for
4443cross-compilation environments.  All references to &lt;some-program&gt;$(XE) must
4444be replaced by $(&lt;SOME-PROGRAM&gt;_XE), where some-program={$(GS), ansi2knr,
4445echogs, genarch, genconf, geninit}.  This is a NON-BACKWARD-COMPATIBLE
4446CHANGE, required in order for the makefiles to work in cross-compiled
4447environments.  (For non-cross-compiled environments, it currently doesn't
4448matter.)  (gs.mak, *.mak)
4449
4450</pre><h3><a name="V3.44_Utilities"></a>Utilities</h3><pre>
4451
4452Updates ps2ai.ps to version 2.13.  (ps2ai.ps)
4453
4454Changes all the utility shell scripts to include #!/bin/sh, to use exec, and
4455to pass the original arguments using "$@".  (bdftops, font2c, gsbj, gsdj,
4456gslj, gslp, gsnd, wftopfa)
4457
4458</pre><h3><a name="V3.44_Drivers"></a>Drivers</h3><pre>
4459
4460Adds the requirement that all page-oriented devices (i.e., those that use
4461gdevprn.h and implement the print_page procedure) include page.dev in their
4462dependencies and use $(SETPDEV) rather than $(SETDEV) in their makefile rule
4463bodies.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  Without this change, the
4464command list logic (over 25K of unnecessary object code) would have to be
4465included in every configuration.  (gs.mak, devs.mak, echogs.c)
4466
4467Adds a user-contributed driver for the Okidata Microline (IBM compatible)
4468dot matrix printers.  (gdevokii.c)
4469
4470Adds copy_rop (the RasterOp operation) to the driver interface.  Currently,
4471only monobit and 8-bit gray-scale devices implement it.  (gxdevice.h,
4472gsdevice.c)
4473
4474Adds the ability to read back bits from the display to the x11 devices.
4475(x_.h, gdevx.c, gdevxalt.c)
4476
4477</pre><h3><a name="V3.44_Platforms"></a>Platforms</h3><pre>
4478
4479Makes some minor changes to support QNX.  (stat_.h)
4480
4481Removes the mswinprn driver from the 16-bit Windows configuration, because
4482the 64K default data segment overflowed.  (bcwin.mak)
4483
4484</pre><h3><a name="V3.44_Interpreter"></a>Interpreter</h3><pre>
4485
4486Fixes bugs:
4487	- Type 1 fonts didn't accept packed arrays for Subrs or OtherSubrs.
4488(zchar1.c, zfont1.c)
4489	- TBCP-encoded files (yes, I know there isn't supposed to be any
4490such thing) didn't automatically activate TBCP decoding.  (gs_init.ps)
4491	- Fonts with invalid FID entries weren't detected.  (zfont.c)
4492
4493Speeds up dictionary operations slightly by removing redundant checks for
4494nulls.  (zdict.c)
4495
4496Starts adding support for the new CIEBasedDEF and CIEBasedDEFG color spaces.
4497(gs_l2img.ps, gs_lev2.ps, igstate.h, zcrd.c)
4498
4499Adds access operators for RasterOp and transparency in the graphics state.
4500(They don't actually do anything yet.)  (zgstate.c)
4501
4502</pre><h3><a name="V3.44_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4503
4504Fixes bugs:
4505	- PDFDocEncoding was missing characters 24-31.  (gs_pdf_e.ps)
4506
4507Moves the definition of pdfmark from systemdict to userdict so that Adobe
4508PostScript files won't think the interpreter is a distiller.  (gs_pdf.ps)
4509
4510</pre><h3><a name="V3.44_Library"></a>Library</h3><pre>
4511
4512Fixes bugs:
4513	- Some JPEG images had bands of garbage alternating with bands of
4514valid data.  IJG v6 fixed this -- see above.
4515	- With FPU_TYPE = -1, the cosine routine returned incorrect values
4516for angles above 270 degrees.  (gsmisc.c)
4517	- CIE color conversion didn't work on 16-bit systems.  (gscie.h,
4518gscie.c)
4519
4520Partially implements reducing the intermediate space for rasterizing
4521anti-aliased characters by compressing the oversampled representation to an
4522alpha array incrementally.  (gdevmem.h, gxchar.h, gxdevmem.h, gdevabuf.c,
4523gschar.c, gspaint.c, gxccman.c)
4524
4525Starts adding support for the new CIEBasedDEF and CIEBasedDEFG color spaces.
4526(gscie.h, gscspace.h, gscie.c)
4527
4528Completes the implementation of band lists in RAM.  To select this feature,
4529change the definition of cl_impl in gs.mak from clfile to clmem.  (Someday
4530we'll make this easier.)  (gxclmem.h, gxclmem.c)
4531
4532Finishes implementing RasterOp and transparency at the driver level for
4533monobit and 8-bit gray-scale devices, and implements some of the framework
4534for general multiple-bit-per-pixel devices.  See drivers.doc for
4535documentation.  (gsropt.h, gxcldev.h, gxclist.h, gdevm1.c, gdevm8.c,
4536gdevmem.c, gdevmrop.c, gschar.c, gxclist.c, gxclread.c)
4537
4538Implements the ability to include commands applicable to all bands, rather
4539than an individual band, in the band list.  Eventually this will be used for
4540passing halftones through the band list.  (gxcldev.h, gxclist.h, gxclist.c)
4541
4542Adds support for 2-bit-deep 'word' memory devices.  (gdevmem.h, gxdevmem.c,
4543gdevm2.c)
4544
4545Changes the initialization for memory devices so that they determine their
4546polarity from the device for which they are buffering the image (if any).
4547This is a subtle change.  (gdevmem.h, gdevmem.c, gdevm1.c, gsdevmem.c)
4548
4549</pre>
4550
4551<h2><a name="Version3.43"></a>Version 3.43 (limited) (8/10/95)</h2>
4552
4553<p>
4554Fixes a few more minor bugs, and changes FEATURE selection back to
4555essentially the way it was before 3.41.
4556
4557<h3><a name="V3.43_Documentation"></a>Documentation</h3><pre>
4558Fixes bugs:
4559	- A ~ was missing in a URL.  (README)
4560
4561Adds information about an Amiga port of Ghostscript.  (README)
4562
4563Removes a file called gs.1.c, which appears to be an obsolete version of
4564gs.1.
4565
4566Adds DCX documentation to the PCX driver.  (We don't support DCX yet, but we
4567might in the future.)  (gdevpcx.c)
4568
4569Adds information about getting Type 1 fonts from H-P if you have an H-P
4570PostScript printer.  (use.doc)
4571
4572</pre><h3><a name="V3.43_Procedures"></a>Procedures</h3><pre>
4573
4574Fixes bugs:
4575	- The auxiliary programs wouldn't compile with ANSI compilers that
4576don't accept K&amp;R syntax.  (ccgs, gs.mak, ugcclib.mak, *head.mak,
4577unixtail.mak, echogs.c, genarch.c, genconf.c, geninit.c)
4578
4579Reinstates FEATURE_DEVS in the makefiles, getting rid of FEATURE1..10.  THIS
4580IS A NON-BACKWARD-COMPATIBLE CHANGE, but it puts things back the way they
4581were before 3.41, with one exception: compiling the PostScript
4582initialization code into the executable is now a separate macro
4583COMPILE_INITS with a definition of 0 or 1, instead of the ccinit 'feature'.
4584(gs.mak, *.mak, fonts.doc, make.doc)
4585
4586Adds a CCLEAF macro to the makefiles, for optimizing the compilation of
4587modules containing only leaf procedures.  (gs.mak, *.mak)
4588
4589Adds a CONFIG makefile variable that helps in maintaining multiple variants
4590in a single directory.  (gs.mak, *.mak)
4591
4592</pre><h3><a name="V3.43_Platforms"></a>Platforms</h3><pre>
4593
4594Fixes bugs:
4595	- An extern for exit() (in &lt;stdlib.h&gt;) was omitted.  (gp_vms.c)
4596
4597</pre><h3><a name="V3.43_Fonts"></a>Fonts</h3><pre>
4598
4599Reorganizes the compiled font facility so that fonts can be compiled and
4600turned into a library by third parties.  (gs.mak, font2c.ps, gs_ccfnt.ps,
4601ccfont.h, iccfont.c, ccfontab.c)
4602
4603</pre><h3><a name="V3.43_Interpreter"></a>Interpreter</h3><pre>
4604
4605Fixes bugs:
4606	- internaldict was implemented as a dictionary in systemdict and an
4607operator in userdict, rather than as an operator in systemdict.  This caused
4608a noaccess error when loading certain Type 1 fonts.  (gs_init.ps,
4609gs_type1.ps)
4610	- xfonts couldn't handle modified encodings.  (zfont2.c)
4611
4612Changes the build date printout in the help message to YYYY-MM-DD.  (gs.c)
4613
4614Adds native support for Multiple Master fonts (WeightVector).  (zfont1.c)
4615
4616Implements sin and cos more efficiently (by table lookup with linear
4617interpolation) on machines with slow (or no) floating point.  (zmath.c)
4618
4619Separates out the code for 'reading' the .ps initialization files, for the
4620new COMPILE_INITS arrangement.  (imain.h, gconfig.c, gsmain.c, iconfig.c,
4621iccinit0.c, iinit.c)
4622
4623</pre><h3><a name="V3.43_Streams"></a>Streams</h3><pre>
4624
4625Fixes bugs:
4626	- The CCITTFaxDecode filter could read up to 3 bytes beyond EOD.
4627This fix doesn't quite cover all cases, but at least it makes things better.
4628(ghc.h, sbhc.c, scfd.c)
4629
4630</pre><h3><a name="V3.43_Library"></a>Library</h3><pre>
4631
4632Fixes bugs:
4633	- After a nocurrentpoint error from a show operation with a
4634composite font, the bookkeeping was confused and could cause an access
4635error.  (gschar.c)
4636	- xfonts couldn't handle modified encodings.  (gsccode.h, gxchar.h,
4637gxfont.h, gxxfont.h, gschar.c, gxccache.c)
4638
4639Makes .charboxpath able to use cached character information.  (gxchar.h,
4640gschar.c)
4641
4642Adds native support for Multiple Master fonts (OtherSubrs 14-18).
4643(gxfont1.h, gstype1.c)
4644
4645Improves the hashing functions for the character cache.  (gxfcache.h,
4646gxccman.c)
4647
4648Adjusts the character oversampling algorithm to reduce thickening for
4649devices with alpha capability.  (gsbitops.c)
4650
4651Improves the encoding of the band list for certain kinds of small
4652rectangles.  (gxcldev.h, gxclist.c, gxclread.c)
4653
4654Implements sin and cos efficiently on machines with slow (or no) floating
4655point.  (gxfarith.h, gsmatrix.c, gsmisc.c, gspath1.c)
4656
4657</pre>
4658
4659<h2><a name="Version3.42"></a>Version 3.42 (limited) (8/2/95)</h2>
4660
4661<p>
4662Fixes a few significant problems in 3.41, and brings the DLL code up to
4663date.
4664
4665<h3><a name="V3.42_Documentation"></a>Documentation</h3><pre>
4666Fixes bugs:
4667	- language.doc still referred to rectappend rather than .rectappend.
4668(language.doc)
4669
4670Adds documentation on the Macintosh port.  (readme, make.doc)
4671
4672Updates the DLL documentation.  (dll.doc)
4673
4674Documents the BCP and TBCP filters as non-experimental.  (language.doc)
4675
4676</pre><h3><a name="V3.42_Procedures"></a>Procedures</h3><pre>
4677
4678Changes the build date printout to YYYY-MM-DD.  (gs_init.ps)
4679
4680</pre><h3><a name="V3.42_Platforms"></a>Platforms</h3><pre>
4681
4682Fixes bugs:
4683	- The VMS build script had gotten out of sync with the makefiles
4684(again).  (vms.mak, modules.lis)
4685
4686Brings the MS Windows and OS/2 platforms up to date with the rest of the
4687code, including DLL support for OS/2.  (os2.mak, gsdll*.def, gdevswn.c,
4688gdevpm.c, gdevwdib.c, gp_mswin.c, gp_os2.c, gsdll.c, gsmain.c)
4689
4690Adds a new platform-specific routine gp_do_exit, as an alias for the C
4691library `exit' call.  (gp.h, gsdll.c, gsmain.c, gp_*.c)
4692
4693</pre><h3><a name="V3.42_Interpreter"></a>Interpreter</h3><pre>
4694
4695Fixes bugs:
4696	- .forgetsave at the outermost level didn't clear the l_new bit,
4697causing changes to be undone improperly.  (isave.c)
4698	- A 'void' formal parameter list upset some compilers (as it should
4699have).  (gsmain.c)
4700
4701Adds a .charboxpath operator that appends to the current path the bounding
4702boxes of the characters of a string.  (zchar.c, zchar1.c)
4703
4704</pre><h3><a name="V3.42_Streams"></a>Streams</h3><pre>
4705
4706Fixes bugs:
4707	- A procedure was declared private inconsistently.  (siscale.c)
4708
4709</pre><h3><a name="V3.42_Library"></a>Library</h3><pre>
4710
4711Fixes bugs:
4712	- The library test program didn't do a necessary initial gsave.
4713(gslib.c)
4714	- The fix for landscape monobit images in 3.41 could smash memory.
4715(gsimage1.c)
4716	- 1-pixel-wide lines drawn with image or imagemask still disappeared
4717sometimes.  (gsimage.c)
4718
4719Does some more preparatory work for the implementation of command lists in
4720RAM.  (gdevprn.h, gxclio.h, gxclist.h, gxclfile.c, gxclist.c, gxclread.c)
4721
4722Adds a gs_charboxpath procedure that appends to the current path the
4723bounding boxes of the characters of a string.  (gschar.h, gscpm.h,
4724gstype1.h, gxchar.h, gxpath.h, gxtype1.h, gzstate.h, gschar.c, gspaint.c,
4725gstype1.c, gxpath.c)
4726
4727</pre>
4728
4729<h2><a name="Version3.41"></a>Version 3.41 (limited) (7/27/95)</h2>
4730<p>
4731Another incremental release with bug fixes and customer-requested
4732enhancements.  This release was intended to include the full setpagedevice
4733media matching and adjustment algorithm, but we discovered some
4734architectural problems during development, and have postponed it.
4735
4736<h3><a name="V3.41_Documentation"></a>Documentation</h3><pre>
4737
4738Replaces the build instructions for NeXTSTEP with more up-to-date and
4739accurate ones.  (make.doc)
4740
4741Notes that some extra manual steps are required when cross-compiling.
4742(make.doc)
4743
4744Documents how to define new 'features' in the makefile.  (gs.mak)
4745
4746</pre><h3><a name="V3.41_Procedures"></a>Procedures</h3><pre>
4747
4748Fixes bugs:
4749	- The build rule for ccinit.dev was circular.  Fixing this required
4750a small but NON-BACKWARD-COMPATIBLE change in the way that features are
4751selected in the makefiles (FEATURE_DEVS replaced by FEATURE1..10).  (*.mak,
4752fonts.doc, make.doc)
4753
4754Changes the build rule for gconfig.h to be less likely to overrun MS-DOS's
4755command line length limit.  (gs.mak)
4756
4757Adds a -dFIXEDMEDIA switch to indicate that the media size should be
4758considered fixed after initialization.  (gs_init.ps)
4759
4760</pre><h3><a name="V3.41_Utilities"></a>Utilities</h3><pre>
4761
4762Fixes bugs:
4763	- traceimg.ps incorrectly referred to .stdout.  (traceimg.ps)
4764	- prfont.ps didn't display unencoded characters correctly.
4765(prfont.ps)
4766	- ps2epsi didn't give correct bounding box information.  (ps2epsi,
4767ps2epsi.ps)
4768	- ps2epsi produced DSC comments that didn't fully conform to the
4769Adobe standard.  (ps2epsi, ps2epsi.ps)
4770
4771Allows viewpbm.ps to take multiple files on the command line.  (viewpbm.ps)
4772
4773</pre><h3><a name="V3.41_Drivers"></a>Drivers</h3><pre>
4774
4775Adds a preliminary, contributed PNG driver.  THIS IS NOT USABLE YET -- DON'T
4776TRY TO USE IT.  (png.mak, gdevpng.c)
4777
4778Increases the maximum allowable scan line width for the TIFF drivers from
47795183 pixels to 12863 pixels.  (scf.h)
4780
4781</pre><h3><a name="V3.41_Platforms"></a>Platforms</h3><pre>
4782
4783Updates the MS Windows DLL code to export the new, suspendable run_string
4784interface.  (gsdll.h, gsdll.c, dll.doc)
4785
4786</pre><h3><a name="V3.41_Fonts"></a>Fonts</h3><pre>
4787
4788Fixes bugs:
4789	- There were several errors in cfonts.mak.  (cfonts.mak)
4790	- The compiled fonts option didn't offer both free and standard
4791configurations.  (gs.mak)
4792	- A bug in the handling of Encoding resources prevented compiled
4793fonts from working.  (gs_res.ps)
4794
4795Adds a little more support for CID-keyed fonts.  They still aren't anywhere
4796near usable.  (gs_cidfn.ps, gs_type1.ps)
4797
4798Adds a new Fontmap for Solaris 2.3.  (Fontmap.Solaris)
4799
4800Adds support for Type 4 fonts (Type 1 fonts with their own BuildChar
4801procedures), including the CCRun procedure in internaldict.  (gs_fonts.ps,
4802gs_res.ps, gs_type1.ps)
4803
4804</pre><h3><a name="V3.41_Interpreter"></a>Interpreter</h3><pre>
4805
4806Fixes bugs:
4807	- showpage and copypage didn't honor NumCopies in a page device.
4808(gs_setpd.ps, zdevice2.c)
4809	- currentpagedevice returned incorrect information if the current
4810device wasn't a page device.  (gs_setpd.ps)
4811	- currentpagedevice didn't guarantee the presence of InputAttributes
4812and OutputAttributes.  (gs_setpd.ps)
4813	- The l_new bit wasn't set properly when a dictionary changed from
4814packed to unpacked keys, leading to unnecessary saves.  (idict.c)
4815	- Streams requiring intermediate buffering could read ahead too far,
4816causing input data to be skipped.  (zfilter.c)
4817	- cshow didn't reset the font to the base font when calling the
4818procedure.  (zchar2.c)
4819	- The Install procedure in a page device didn't set the default CTM.
4820(gs_setpd.ps, zmatrix.c)
4821	- findlibfile didn't handle special files like %stdin correctly.
4822(zfile.c)
4823	- setpagedevice didn't implement media matching.  (gs_setpd.ps,
4824zdevice2.c, zmedia2.c, zmatrix.c)
4825	- Some floating point numbers didn't print out with enough digits to
4826read back in with the identical value.  (iutil.c)
4827	- Integers that overflowed 31 bits (but not 32 bits) were converted
4828to negative integers rather than correct positive reals.  (iscannum.c)
4829
4830Removes an experimental operator that called the image scaling/interpolation
4831code.  (zimage2.c)
4832
4833Adds a -sSUBSTFONT=&lt;fontname&gt; switch that substitutes the given font for all
4834unknown fonts, bypassing the normal intelligent substitution algorithm.
4835(gs_fonts.ps)
4836
4837Adds the Revision system parameter.  (zmisc2.c)
4838
4839Adds a .knownundef operator that does an undef and returns true iff the key
4840was formerly present.  (zdict.c)
4841
4842Makes the maximum length of names be 256 if EXTEND_NAMES is being used, 16K
4843otherwise.  (inamedef.h, iname.c)
4844
4845Adds internaldict.  (gs_init.ps, iinit.c)
4846
4847Adds support for Type 4 fonts.  (bfont.h, zchar.c, zchar1.c, zfont1.c,
4848zfont2.c)
4849
4850Changes .encodingdict to EncodingDirectory, for compatibility with Adobe
4851interpreters.  (gs_init.ps, gs_kanji.ps, gs_res.ps)
4852
4853Adds superexec, an undocumented operator that is equivalent to exec but
4854suppresses all invalidaccess checks.  NOT COMPLETED YET; currently superexec
4855is equivalent to exec.  (zcontrol.c)
4856
4857</pre><h3><a name="V3.41_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
4858
4859Fixes bugs:
4860	- .stderr was used but is no longer defined.  (pdf_base.ps)
4861
4862</pre><h3><a name="V3.41_Streams"></a>Streams</h3><pre>
4863
4864Fixes bugs:
4865	- Not all streams initialized their state pointer.  (stream.c,
4866sfile.c, sfileno.c)
4867
4868Adds a filter for the smoothed image scaling algorithm.  Eventually this
4869filter will require very little intermediate storage; right now it still
4870needs to buffer the entire intermediate image.  (siscale.h, siscale.c)
4871
4872Increases the maximum allowable scan line width for the CCITTFaxEncode
4873filter from 5183 pixels to 12863 pixels.  (scf.h)
4874
4875</pre><h3><a name="V3.41_Library"></a>Library</h3><pre>
4876
4877Fixes bugs:
4878	- setpagedevice didn't update NumCopies correctly.  (gdevprn.c,
4879gsdparam.c)
4880	- The newly optimized code for monobit bitmaps could cause an
4881out-of-bounds memory access and/or make unaligned references.  (gsimage1.c)
4882	- setpagedevice with unknown keys could cause an /undefined error.
4883(gsdparam.c)
4884	- cshow didn't reset the font to the base font when calling the
4885procedure.  (gschar.h, gschar.c)
4886	- The Install procedure in a page device didn't set the default CTM.
4887(gzstate.h, gschar.c, gscoord.c, gsdevice.c)
4888	- Very non-linear EncodeABC procedures in a color rendering
4889dictionary could produce very inaccurate results.  (gscie.h, gscie.c)
4890	- The line_ptrs pointer in memory devices didn't get relocated if
4891the bitmap was moved during garbage collection, leading to memory smashing.
4892(gdevmem.c)
4893	- setpagedevice didn't implement media matching.  (gsdparam.c,
4894gscoord.c)
4895	- 'word' memory devices weren't recognized as memory devices.
4896(gdevmem.c)
4897	- makeimagedevice allocated, and then didn't free, an unnecessary
4898palette for monobit devices.  (gsdevmem.c)
4899	- The hack for 1-bit-wide images didn't work consistently,
4900particularly in landscape orientation.  (gsimage.c, gsimage0.c)
4901
4902Adds an .IgnoreNumCopies page device parameter that causes #copies and
4903NumCopies to be ignored.  (gxdevice.h, gsdevice.c, gsdparam.c)
4904
4905Removes the .IsPageDevice device parameter.  (gsdparam.c)
4906
4907Converts the image scaling/interpolation code to a filter.  (gximage.h,
4908gsimage.c, gsimage0.c, gsimage3.c)
4909
4910Adds support for Type 4 fonts.  (gxfont.h)
4911
4912Adds a default implementation of parameter lists, designed to be usable
4913easily from C code.  (gsparam.h, gsparam.c)
4914
4915</pre>
4916
4917<h2><a name="Version3.40"></a>Version 3.40 (limited) (6/28/95)</h2>
4918
4919<p>
4920This is another incremental limited release for delivery of a couple of
4921important bug fixes (pixel 'holes' in rotated images, setpagedevice errors
4922on some platforms) and an enhancement (architectural support for band lists
4923in RAM).
4924
4925<h3><a name="V3.40_Documentation"></a>Documentation</h3><pre>
4926Fixes bugs:
4927	- The FTP location of the EMX DLLs was incorrect.  (use.doc)
4928
4929</pre><h3><a name="V3.40_Procedures"></a>Procedures</h3><pre>
4930
4931Fixes bugs:
4932	- A couple of build rules for IJG v6 were omitted.  (jpeg.mak)
4933
4934</pre><h3><a name="V3.40_Utilities"></a>Utilities</h3><pre>
4935
4936Fixes bugs:
4937	- prfont.ps wouldn't print more than 128 unencoded characters.
4938(prfont.ps)
4939
4940</pre><h3><a name="V3.40_Platforms"></a>Platforms</h3><pre>
4941
4942Fixes bugs:
4943	- setpagedevice often caused /undefined errors on MS Windows and
4944OS/2 platforms.  (gdevmswn.c, gdevpm.c)
4945	- The VMS module list had gotten out of sync with the makefiles
4946(again).  (modules.lis)
4947
4948</pre><h3><a name="V3.40_Interpreter"></a>Interpreter</h3><pre>
4949
4950Fixes bugs:
4951	- A couple of casts betwen char * and byte * were omitted.
4952(gsmain.c)
4953	- gs_[main_]run_file_open wasn't exported properly.  (imain.h,
4954main.h, gsmain.c)
4955
4956</pre><h3><a name="V3.40_Streams"></a>Streams</h3><pre>
4957
4958Changes the DCTEncode filter to return an error if it wasn't supplied enough
4959data before being closed.  (sdcte.c)
4960
4961</pre><h3><a name="V3.40_Library"></a>Library</h3><pre>
4962
4963Fixes bugs:
4964	- The coordinate computations for all filling operations were
4965slightly inaccurate, leading to pixel 'holes' in rotated images.  (gxdda.h,
4966gximage.h, gsimage*.c, gxdraw.c, gxfill.c)
4967
4968Undoes an "optimization" (inlining the normal, fast case of a procedure)
4969that actually hurt performance.  (gxclist.c)
4970
4971Refactors the command list code so that it in the future it will be able to
4972store command lists either in RAM or in the file system.  (gdevprn.h,
4973gxcldev.h, gxclio.h, gxclist.h, gdevprn.c, gxclfile.c, gxclist.c,
4974gxclread.c)
4975
4976Changes the interface to the path filling code to take separate X and Y
4977adjustment values.  (gxpaint.h, gspaint.c, gxfill.c)
4978
4979Makes the command list allocate a small tile cache if the device doesn't
4980need halftones.  (gxclist.c)
4981
4982</pre>
4983
4984<hr>
4985
4986<h2><a name="Version3.39"></a>Version 3.39 (limited) (6/24/95)</h2>
4987
4988<p>
4989This is again an incremental release primarily for delivery of enhancements
4990(suspendable string input in particular) to commercial customers, and with a
4991few bug fixes.
4992
4993<h3><a name="V3.39_Documentation"></a>Documentation</h3><pre>
4994Notes that PDF files and repositioning PostScript files do not work if
4995Ghostscript was compiled with VAX C.  (use.doc)
4996
4997Notes the requirement for EOD lookahead in decoding filters.  (strimpl.h)
4998
4999</pre><h3><a name="V3.39_Procedures"></a>Procedures</h3><pre>
5000
5001Fixes bugs:
5002	- There were a number of undefined or used-before-defined variables
5003in the makefiles.  (devs.mak, dvx-head.mak, unixhead.mak, gs.mak)
5004	- Some commands in the makefile exceeded the MS-DOS limit of 120
5005characters.  (gs.mak)
5006
5007Adds a -P and -P- switch to control whether the search path automatically
5008includes `.' as its first element.  Moves the default value of this choice
5009(SEARCH_HERE_FIRST) from gsmain.c to iminst.h.  (iminst.h, gs.c, gsmain.c,
5010use.doc)
5011
5012Makes some makefile changes in anticipation of the IJG v6 release.  (*.mak)
5013
5014</pre><h3><a name="V3.39_Utilities"></a>Utilities</h3><pre>
5015
5016Fixes bugs:
5017	- font2c generated invalid C procedure names from font names that
5018contained non-alphanumerics other then '-'.  (font2c.ps)
5019	- font2c generated a single element of incorrect type for numeric
5020arrays of zero length.  (font2c.ps)
5021
5022</pre><h3><a name="V3.39_Platforms"></a>Platforms</h3><pre>
5023
5024Fixes bugs:
5025	- The VMS build scripts had gotten out of sync (again).  (vms*.mak,
5026modules.lis)
5027
5028</pre><h3><a name="V3.39_Fonts"></a>Fonts</h3><pre>
5029
5030Makes the FONTPATH directory scanner accept fonts that begin with
5031%!PS-AdobeFont or %!FontType1 with no following `-'.  (gs_fonts.ps)
5032
5033</pre><h3><a name="V3.39_Interpreter"></a>Interpreter</h3><pre>
5034
5035Fixes bugs:
5036	- eq and ne on arrays or dictionaries required read access.
5037(zrelbit.c)
5038	- An include was missing.  (zcsindex.c)
5039	- .forgetsave at the outermost level didn't reset the l_new flag in
5040changed slots, leading to an anomalous (although perhaps not harmful) state.
5041(isave.c)
5042	- Dictionary growing or unpacking would both save and free the old
5043keys array, leading to a dangling reference.  (idict.c)
5044
5045Changes gs_interpret so that for .quit with a negative operand &lt;= -100,
5046gs_interpret returns e_Fatal rather than the operand.  THIS IS A
5047NON-BACKWARD-COMPATIBLE CHANGE, but as far as we know, it doesn't affect
5048anyone.  (interp.c)
5049
5050Adds an API to allow feeding string input to the interpreter in pieces.
5051(errors.h, imain.h, main.h, gs.c, gsmain.c, interp.c, zcontrol.c, zfilter.c)
5052
5053Adds new predicates .identeq and .identne that test "pointer equality", even
5054for numbers and strings.  (iutil.h, iutil.c, zrelbit.c)
5055
5056Changes a few uses of return_error to return in places that don't lead
5057directly to a PostScript error.  (idict.c)
5058
5059</pre><h3><a name="V3.39_Streams"></a>Streams</h3><pre>
5060
5061Fixes bugs:
5062	- The logic for skipping up to a 0xff byte when decoding JPEG data
5063could skip too much.  (sdctd.c, sjpegd.c)
5064	- If a buffer boundary fell in the middle of, or just before, an
5065EOD, some decoding filters could stop reading too soon.  (sbcp.c, smtf.c,
5066sstring.c)
5067
5068Makes some minor changes in anticipation of the IJG v6 release.
5069(gsjmorec.h)
5070
5071</pre><h3><a name="V3.39_Library"></a>Library</h3><pre>
5072
5073Fixes bugs:
5074	- A declaration should have been removed.  (gsdll.c)
5075	- The library initialization/termination API wasn't declared.
5076(gslib.h, gsinit.c, gsmain.c)
5077	- A variable and a preprocessor macro with the same name confused
5078VAX C.  (gxclist.c)
5079	- Image devices with depth 2-8 and only gray shades in the palette
5080didn't set color_info correctly.  (gsdevice.c)
5081
5082Speeds up unrotated black-and-white images further by making them render
5083directly into a memory device when possible.  (gxdevmem.h, gsimage1.c)
5084
5085</pre>
5086
5087<h2><a name="Version3.38"></a>Version 3.38 (limited) (6/18/95)</h2>
5088
5089<p>
5090This release incorporates several customer-requested enhancements (cleaner
5091separation of the graphics library from the interpreter, option for &gt;64K
5092names, true garbage collection of names, better handling of halftones on
5093band devices).  It is intended primarily for those customers, but is
5094intended as a dry run for the next public release.
5095
5096<h3><a name="V3.38_Documentation"></a>Documentation</h3><pre>
5097Fixes bugs:
5098	- gx_bitmap had not been updated to gx_tile_bitmap.
5099(drivers.doc)
5100
5101</pre><h3><a name="V3.38_Procedures"></a>Procedures</h3><pre>
5102
5103Fixes bugs:
5104	- The man page extension in the Unix makefiles was still $(manext),
5105not $(man1ext).  (unix-end.mak)
5106	- 'make clean' didn't remove gs_init.c.  (gs.mak)
5107
5108Restructures the makefiles to better separate the language interpreters from
5109the graphics core.  (gs.mak)
5110
5111Adds a -dNOPROMPT switch to suppress the end-of-page prompts (but still wait
5112for the user to type a newline).  This is different from -dNOPAUSE, which
5113suppresses both the prompts and the wait.  (gs_init.ps)
5114
5115</pre><h3><a name="V3.38_Utilities"></a>Utilities</h3><pre>
5116
5117Replaces the mergeini.ps program with an equivalent (actually slightly
5118better) version written in C.  (gs.mak, *.mak, psfiles.doc, use.doc,
5119geninit.c)
5120
5121</pre><h3><a name="V3.38_Drivers"></a>Drivers</h3><pre>
5122
5123Fixes bugs:
5124	- The color DeskJet drivers wouldn't compile with a K&amp;R compiler,
5125because some of the procedure definitions weren't in the restricted syntax
5126that ansi2knr requires.  (gdevcdj.c)
5127	- The color DeskJet drivers wouldn't compile because of a bug in
5128Sun's cc.  (gdevcdj.c)
5129
5130Changes the BJ-10e(x) margins to be identical to those of the BJ-200.
5131(gdevbj10.c)
5132
5133Changes the LaserJet margins in response to a user's request.  (gdevdjet.c)
5134
5135Changes the psmono driver to produce slightly larger files that execute
5136faster on typical Level 1 printers.  (gdevpsim.c)
5137
5138Changes the psmono driver so that it does not scale the image to fit the
5139page size, but instead scales it to be the same physical size on the page.
5140THIS IS A NON BACKWARD COMPATIBLE CHANGE.  However, for full-page images, it
5141will not have any visible effect.  (gdevpsim.c)
5142
5143</pre><h3><a name="V3.38_Platforms"></a>Platforms</h3><pre>
5144
5145Fixes bugs:
5146	- There were some problems associated with printing in 32-bit
5147Windows environments.  (gp_mswin.c)
5148	- The IBM RS/6000 needs both &lt;time.h&gt; and &lt;sys/time.h&gt;.  (time_.h)
5149
5150Adds the PDF interpreter to the standard MS Windows configuration.
5151(bcwin.mak)
5152
5153</pre><h3><a name="V3.38_Fonts"></a>Fonts</h3><pre>
5154
5155Fixes bugs:
5156	- The entry for Courier-BoldItalic in cfonts.mak incorrectly named
5157it as Courier-Italic.  (cfonts.mak)
5158	- The files for Courier-Italic in cfonts.mak were inconsistently
5159named ncrri instead of ncri.  (cfonts.mak)
5160	- The rules in cfonts.mak covered only the fonts distributed with
5161the free versions of Ghostscript, omitting some of the standard set of 35.
5162(cfonts.mak)
5163	- The maximum number of stem hints per character in Type 1 fonts
5164wasn't large enough for complex Asian characters. (gxtype1.h)
5165
5166Adds a -dNOFONTMAP switch to suppress loading the Fontmap file.
5167(gs_init.ps, gs_fonts.ps)
5168
5169</pre><h3><a name="V3.38_Interpreter"></a>Interpreter</h3><pre>
5170
5171Fixes bugs:
5172	- One of the GC marking routines for halftones had a typo,
5173possibly leading to an invalid access.  (zht2.c)
5174	- The GC could store beyond the end of the mark stack,
5175possibly smashing some characters of a string or name.  (igc.c)
5176	- If the allocator allocated a new ref object from a
5177freelist, the bookkeeping for the current ref object could get
5178confused.  (ialloc.c)
5179	- The GC didn't remove names properly from the hash table.
5180(iname.c)
5181	- If a DOS editor added a ^Z to the end of an initialization file,
5182an error occurred during initialization.  (gs_init.ps)
5183	- If an initialization file had any lines longer than 128
5184characters, .skipeof would get an error.  (gs_init.ps)
5185	- makepattern could create structures in global VM pointing to
5186structures in local VM.  (zpcolor.c)
5187	- The default color rendering dictionary didn't specify large enough
5188ranges for some intermediate values.  (gs_lev2.ps)
5189	- Files being freed by a restore weren't unlinked properly, leading
5190to dangling pointers.  (zfile.c)
5191	- The interpreter used strlen without a prototype.  (interp.c)
5192	- Indexed or Separation colors with a CIE base or alternate space
5193didn't work.  (zcie.c)
5194	- The Watcom C 10.0 compiler produced incorrect code for an
5195overlapping structure assignment.  (zcsindex.c)
5196
5197Removes limit of 64K names, if EXTEND_NAMES is defined at compile
5198time.  (*.mak, idebug.h, iminst.h, iname.h, gs.c, gsmain.c, idebug.c,
5199iname.c)
5200
5201Makes the garbage collector really collect names.  (iname.h, inamedef.h,
5202isstate.h, igc.c, iname.c, isave.c)
5203
5204Restructures some files to better separate the language interpreters
5205from their support code.  (gconfig.c, iconfig.c, iinit.c)
5206
5207Restructures some files to better separate the language interpreters
5208from the graphics core.  (iastate.h, iastruct.h, ialloc.c)
5209
5210Allows the operands of cshow to be in either order on the stack.  Adobe
5211interpreters apparently allow this, even though it's not documented.
5212(zchar2.c)
5213
5214Adds a hack in cvs to truncate non-standard operator names, rather than
5215giving a rangecheck, to work around the "max err string" problem in some
5216common error handlers.  (ztype.c)
5217
5218Changes the print string for unregistered operators from operator_0x... to
5219@0x....  (iutil.c)
5220
5221Changes the garbage collector so it tries to allocate a large mark stack, to
5222avoid going into its 'slow' mode if the mark stack overflows.  (igc.c)
5223
5224</pre><h3><a name="V3.38_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
5225
5226Fixes bugs:
5227	- Stroked text used the text matrix, rather than just the
5228CTM, for scaling the line width, which could lead to inappropriately
5229wide lines.  (gs_pdf.ps)
5230	- Fonts based on other than a 1000-unit scale (i.e., with a
5231FontMatrix other than [0.001 0 0 0.001 0 0]) didn't scale Widths to
5232match the font scaling.  (pdf_font.ps)
5233
5234Implements the PDF 1.1 color space extensions, except for Lab space.
5235(gs_pdf.ps, pdf_draw.ps)
5236
5237Implements the Rotate key for pages.  (pdf_main.ps)
5238
5239</pre><h3><a name="V3.38_Streams"></a>Streams</h3><pre>
5240
5241Fixes bugs:
5242	- When the garbage collector closed a file stream, the stream
5243incorrectly attempted to free the buffer.  (stream.c)
5244
5245Separates out some stream implementations to better distinguish the
5246graphics core from the language interpreters.  (smtf.h, sfilter1.c,
5247smtf.c, srld.c, srle.c)
5248
5249</pre><h3><a name="V3.38_Library"></a>Library</h3><pre>
5250
5251Fixes bugs:
5252	- Compressing characters being entered in the cache could cause an
5253invalid memory access.  (gsbitops.c)
5254	- The setbbox bounding box check was slightly inaccurate.
5255(gsdps1.c)
5256	- makepattern could create structures in global VM pointing to
5257structures in local VM.  (gscolor2.h, gspcolor.c)
5258	- Out-of-range values during CIE color conversion led to random
5259results.  (gscie.c)
5260	- On output devices with non-inverted Y axes (such as MS Windows),
5261Interpolated images would smash memory.  (gsimage.c)
5262	- 90 degree rotated zero-width images caused an invalid memory
5263access.  (gsimage1.c)
5264	- If #copies was zero, showpage could create bogus empty output
5265files.  (gdevprn.c)
5266	- PageCount didn't take #copies into account.  (gsdevice.c)
5267	- Indexed or Separation colors with a CIE base or alternate space
5268didn't work.  (gscie.h, gscie.c)
5269
5270Implements triangular line caps and joins, in anticipation of adding
5271a PCL5 interpreter.  (gsline.h, gxstroke.c)
5272
5273Moves some procedures around for better separation of library from
5274interpreter.  (gsinit.c, gslib.c, gsmain.c, gsmisc.c)
5275
5276Moves the standard allocator from the interpreter to the library.
5277(gsalloc.h, gxalloc.h, gxobj.h, gsalloc.c)
5278
5279Starts to change the representation of paths slightly to make it possible to
5280identify arcs.  This change is backward-compatible for all code except
5281callers of gx_path_add_arc.  (gxpath.h, gspath1.c, gxpath.c, gxstroke.c)
5282
5283Adds some framework for keeping track of RasterOp and "transparency" in the
5284graphics state, although these don't actually have any effect yet.
5285(gsrop.h, gsropt.h, gsstate.h, gxcldev.h, gzstate.h, gsrop.c, gsstate.c,
5286gxclist.c, gxclread.c)
5287
5288Adds a compile-time option for using the Adobe RGB&lt;-&gt;CMYK conversion rules.
5289(gxdcconv.c)
5290
5291Adds a driver procedure for identifying band devices.  This change is
5292backward-compatible for all existing devices.  (gdevmem.h, gxdevice.h,
5293gsdevice.c, gxclip2.c, gxclist.c, gxcpath.c)
5294
5295Speeds up gray-scale images on devices requiring banding, and enables
5296further optimizations, by reintroducing the distinction between banded and
5297non-banded devices.  (gxdevice.h, gdevprn.c, gsimage1.c)
5298
5299Reduces the size of the band list for halftoned images by encoding tile
5300indices more compactly.  (gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
5301
5302Extends the band list so it can cache more than 256 halftone tiles, and to
5303make better decisions about tile caching.  (gxcldev.h, gxclist.h, gxclist.c,
5304gxclread.c)
5305
5306</pre>
5307
5308<h2><a name="Version3.37"></a>Version 3.37 (limited) (5/11/95)</h2>
5309
5310<p>
5311Another bug fix release distributed only to customers.
5312
5313<h3><a name="V3.37_Documentation"></a>Documentation</h3><pre>
5314Fixes bugs:
5315	- Some documentation about parameter lists was incorrect.
5316(gsparam.h)
5317	- The documentation did not note that one cannot "pipe" PDF files
5318into the interpreter.  (use.doc)
5319
5320Adds documentation for the BJC-600 to devices.doc.  (devices.doc)
5321
5322</pre><h3><a name="V3.37_Procedures"></a>Procedures</h3><pre>
5323
5324Changes the debugging switch for OS calls from -Z0 to -Ze, and adds -Z0 for
5325high-level GC tracing.  (use.doc, gp_unifs.c, ialloc.c, igc.c)
5326
5327</pre><h3><a name="V3.37_Utilities"></a>Utilities</h3><pre>
5328
5329Fixes bugs:
5330	- The ps2ascii shell script included an erroneous @d.  (ps2ascii)
5331
5332Enhances ps2ascii to output color and rectangle fill/stroke information if
5333COMPLEX is defined.  (ps2ascii.ps)
5334
5335</pre><h3><a name="V3.37_Drivers"></a>Drivers</h3><pre>
5336
5337Fixes bugs:
5338	- the BJC-600 driver didn't handle BitsPerPixel correctly.
5339(gdevcdj.c)
5340
5341</pre><h3><a name="V3.37_Fonts"></a>Fonts</h3><pre>
5342
5343Fixes bugs:
5344	- Some buggy Type 1 fonts confused the Type 1 font reader.
5345(gs_fonts.ps, gs_type1.ps, pdf_font.ps)
5346
5347</pre><h3><a name="V3.37_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
5348
5349Fixes bugs:
5350	- .registerencoding didn't accept mixedarrays, which could cause an
5351error if an encoding was loaded long after initialization.  (zfont2.c)
5352	- If a program did a lot of saves and restores, the garbage
5353collector could get invoked much too often.  (iastate.h, ialloc.c, igc.c,
5354isave.c)
5355
5356Changes the name of the rectappend operator to .rectappend, since it isn't a
5357standard PostScript operator.  (zdps1.c)
5358
5359</pre><h3><a name="V3.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
5360
5361Fixes bugs:
5362	- PDF files didn't interact properly with ps2ascii.  (gs_pdf.ps)
5363	- setdash wouldn't accept a packed array.  (zgstate.c)
5364	- PDF files with incorrect generation numbers in object references
5365produced an error rather than a warning.  (pdf_base.ps)
5366
5367</pre>
5368
5369<h2><a name="Version3.36"></a>Version 3.36 (limited) (5/4/95)</h2>
5370
5371<p>
5372This is a limited-distribution release for distributing bug fixes to a few
5373customers.
5374
5375<h3><a name="V3.36_Documentation"></a>Documentation</h3><pre>
5376Adds some environment variables to the man page.  (gs.1)
5377
5378</pre><h3><a name="V3.36_Procedures"></a>Procedures</h3><pre>
5379
5380Adds the psmono device to all 32-bit configurations.  (*.mak)
5381
5382Moves the psmono and 'bit' devices to DEVICE_DEVS12 to avoid exceeding the
5383120-character maximum length of the DOS command line.  (*.mak)
5384
5385</pre><h3><a name="V3.36_Drivers"></a>Drivers</h3><pre>
5386
5387Changes the pgm[raw] and ppm[raw] drivers so they do *not* automatically
5388switch to pbm or pgm/ppm respectively if this is possible for the particular
5389page being rendered; adds pgnm[raw] and pnm[raw] drivers that *do* do this.
5390THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  However, existing programs will
5391still work; they just won't produce the smallest and simplest possible
5392output.  (devs.mak, gdevpbm.c)
5393
5394</pre><h3><a name="V3.36_Interpreter"></a>Interpreter</h3><pre>
5395
5396Fixes bugs:
5397	- A multi-level restore didn't free gstates allocated by
5398intermediate saves, causing some global VM to be lost until a garbage
5399collection.  (isave.h, isave.c, zvmem.c)
5400
5401Speeds up restore by skipping the scan of the character cache if no new
5402names have been allocated since the save.  (zfont.c)
5403
5404Extends the client API to allow for popping return values off the operand
5405stack.  (imain.h, gs.c, gsmain.c)
5406
5407</pre><h3><a name="V3.36_Library"></a>Library</h3><pre>
5408
5409Modifies the character oversampling algorithms to help prevent dropouts.
5410(gsbitops.c, gschar.c)
5411
5412</pre>
5413
5414<h2><a name="Version3.35"></a>Version 3.35 (internal) (5/2/95)</h2>
5415
5416<p>
5417This is another internal "snapshot" version.
5418
5419<h3><a name="V3.35_Documentation"></a>Documentation</h3><pre>
5420Fixes bugs:
5421	- Some of the file names in the `man' page had gotten out of date.
5422(gs.1)
5423	- Two references to .PageCount hadn't been changed to PageCount.
5424(language.doc, devarch.doc)
5425
5426</pre><h3><a name="V3.35_Procedures"></a>Procedures</h3><pre>
5427
5428Puts writeppmfile back in the standard Unix and DV/X configurations, since
5429gsftopk uses it.  Also puts the PDF reader in all 32-bit configurations.
5430(*.mak)
5431
5432Moves the BMP devices to DEVICE_DEVS11 to avoid exceeding the 120-character
5433maximum length of the DOS command line.  (bcwin.mak, bcwin32.mak, os2.mak)
5434
5435</pre><h3><a name="V3.35_Utilities"></a>Utilities</h3><pre>
5436
5437Fixes bugs:
5438	- unix-lpr.sh didn't handle 32-bit devices.  (unix-lpr.sh)
5439	- unix-lpr.sh still used the name .PageCount rather than PageCount.
5440(unix-lpr.sh)
5441	- font2c gave an error when trying to write general procedures in
5442font dictionaries.  (font2c.ps)
5443
5444Adds a pdf2dsc.ps utility for writing out fake DSC-compliant PostScript code
5445to invoke the PDF reader, for the benefit of viewer programs that aren't
5446PDF-aware.  (unix-end.mak, pdf2dsc.ps)
5447
5448</pre><h3><a name="V3.35_Drivers"></a>Drivers</h3><pre>
5449
5450Fixes bugs:
5451	- The TIFF drivers put out incorrect PageNumber values.
5452(gdevtfax.c)
5453	- Printer (and file output) devices got closed and reopened
5454unnecessarily when changing parameters.  (gdevprn.c)
5455	- Printer (and file output) devices didn't check for invalid formats
5456following a % in OutputFile.  (devs.mak, gdevprn.c)
5457	- 1-bit memory devices were not considered page devices, unlike all
5458other memory devices.  (gsdevice.c)
5459	- The black-and-white H-P printers didn't close the printer
5460properly, causing printing not to happen under MS Windows.  (gdevprn.c)
5461	- Some compilers didn't like initializing a const char * to NULL.
5462(gdevlbp8.c)
5463
5464Changes the X Windows driver so that if Ghostview specifies a bounding box,
5465this also sets ImagingBBox.  (gdevxini.c)
5466
5467At the request of a customer, adds 1-, 4-, 8-, 24-, and 32-bit-deep memory
5468devices that store bits in 32-bit units rather than byte units.  (gdevmem.h,
5469gxdevmem.h, gdevmem.c, gdevm1.c, gdevm2.c, gdevm4.c, gdevm8.c, gdevm16.c,
5470gdevm24.c, gdevm32.c)
5471
5472Adds a new MS Windows printer driver, mswinpr2, that uses a DIB rather than
5473a DDB.  (gdevwpr2.c)
5474
5475</pre><h3><a name="V3.35_Platforms"></a>Platforms</h3><pre>
5476
5477Fixes bugs:
5478	- A routine wouldn't compile because of a bug in the SGI C compiler.
5479(zcsindex.c)
5480	- Some declarations were inconsistent when compiling for segmented
5481environments.  (gscie.c)
5482	- A routine wouldn't compile because of a bug in the VAX C compiler.
5483(gscie.c)
5484
5485Turns on compiler optimization for OS/2; adds PDF support and more devices
5486for Win32 and OS/2.  (bcwin.mak, bcwin32.mak, os2.mak)
5487
5488</pre><h3><a name="V3.35_Fonts"></a>Fonts</h3><pre>
5489
5490Fixes bugs:
5491	- Font loading used 'setglobal' without binding it, which caused
5492some EPS files to signal errors.  (gs_fonts.ps)
5493	- A zero-length string with offset = 0 in a binary object sequence
5494caused an error.  (iscanbin.c)
5495
5496Adds a LOCALFONTS switch that causes Ghostscript to load Type 1 fonts into
5497the current VM, rather than global VM.  According to Adobe, this is what
5498Adobe printers (but not other interpreters, such as DPS and CPSI) do.
5499(gs_init.ps, gs_fonts.ps)
5500
5501</pre><h3><a name="V3.35_Interpreter"></a>Interpreter</h3><pre>
5502
5503Fixes bugs:
5504	- The 'note' page size command caused pages to be clipped
5505improperly.  (gs_statd.ps)
5506
5507Adds "word" image devices.  (gs_init.ps, zdevice.c)
5508
5509Starts converting the interpreter to use an explicit instance pointer.  This
5510is very fragmentary so far and not really supported.  (main.h, gs.c,
5511gsmain.c, iccinit.c)
5512
5513</pre><h3><a name="V3.35_Library"></a>Library</h3><pre>
5514
5515Adds "word" image devices.  (gsdevice.h, gsdevice.c)
5516
5517Removes the requirement that ImagingBBox[0] and [1] be non-negative.  (The
5518Adobe specification requires this, but Ghostscript supports more general
5519initial CTMs than the Adobe spec.)  (gsdparam.c)
5520
5521</pre>
5522
5523<h2><a name="Version3.34"></a>Version 3.34 (internal) (4/18/95)</h2>
5524
5525<p>
5526This is a "snapshot" version made for internal purposes.  It was never
5527released to anyone.
5528
5529<h3><a name="V3.34_Documentation"></a>Documentation</h3><pre>
5530Updates commprod.doc to be fully consistent with the AGFPL.  (commprod.doc)
5531
5532</pre><h3><a name="V3.34_Procedures"></a>Procedures</h3><pre>
5533
5534Fixes bugs:
5535	- tar_x was out of date.  (tar_x)
5536	- tar_gs assumed that if any PC executables were present, gs.exe
5537would exist.  (tar_gs)
5538	- jpeg.mak said the current IJG version was 5b, but the makefiles
5539actually referred to version 5a.  (jpeg.mak)
5540	- The build rule for the LIPS III driver was incorrect.  (devs.mak)
5541	- Some definitions in the makefiles occurred out of order.
5542(ansihead.mak, cc-head.mak, gcc-head.mak, unixhead.mak, unixtail.mak)
5543	- The build rule for dvx-gcc.mak was incorrect.  (unix-end.mak)
5544
5545</pre><h3><a name="V3.34_Interpreter"></a>Interpreter</h3><pre>
5546
5547Restructures the CIE caches to move much more of the computation from color
5548mapping time to cache loading time.  (zcie.c)
5549
5550</pre><h3><a name="V3.34_Library"></a>Library</h3><pre>
5551
5552Fixes bugs:
5553	- Color conversion of 12-bit images was very slightly inaccurate.
5554(gxfrac.h)
5555
5556Changes the transfer function, black generation, and undercolor removal
5557caches so that they sample at 1024 points and don't interpolate, rather than
5558sampling at 256 points and interpolating.  This significantly improves the
5559speed of colored image rendering.  ****** LIMITED TO 256 POINTS BECAUSE OF
5560O-STACK SIZE LIMIT. ****** (gxfmap.h, gxcmap.c)
5561
5562Restructures the CIE caches to move much more of the computation from color
5563mapping time to cache loading time.  (gscie.h, gscie.c)
5564
5565</pre>
5566
5567<h2><a name="Version3.33"></a>Version 3.33 (4/13/95)</h2>
5568
5569<p>
5570A few more last-minute bug fixes.  This is, finally, the first public
5571release since 3.12.
5572
5573<h3><a name="V3.33_Documentation"></a>Documentation</h3><pre>
5574
5575Fixes bugs:
5576	- There was a reference to "VAX with OSF/1", which doesn't exist,
5577and an incorrect reference to VAX with Ultrix.  (make.doc)
5578	- The Unix makefiles incorrectly stated that gsdatadir was only
5579relevant to `make install'.  (ansihead.mak, cc-head.mak, dgc-head.mak,
5580gcc-head.mak)
5581	- Notes that DV/X users should use the zip version of the JPEG
5582library.  (jpeg.mak)
5583
5584</pre><h3><a name="V3.33_Procedures"></a>Procedures</h3><pre>
5585
5586Fixes bugs:
5587	- A command line had gotten too long for the MS-DOS shell.
5588(gs.mak)
5589	- The VMS DEC C script didn't explicitly select DEC C.
5590(vms-decc.mak)
5591	- The VMS MODULES.LIS omitted SPDIFF and ZFPDIFF.  (modules.lis)
5592	- The VMS script had an incorrect entry.  (vms.mak)
5593	- The `if' fix in 3.31 broke some Unix systems with different
5594implementations of sh.  (unix-end.mak)
5595	- The makefile definition of gscspace_h was out of order.  (gs.mak)
5596	- An extra ; got written in gconfig_.h on DV/X platforms.
5597(dvx-tail.mak)
5598	- '.' was incorrectly prepended to the library search list on DV/X
5599platforms.  (dgc-head.mak)
5600	- The build rules for unix*.mak didn't work on DV/X.  (unix-end.mak)
5601
5602Adds a description of the -c quit switch to the help message.  (gs.c)
5603
5604For the DV/X platform, changes /usr/include to /djgpp/include as the place
5605to look for header files.  I'm not sure this is always correct.
5606(dvx-tail.mak)
5607
5608</pre><h3><a name="V3.33_Utilities"></a>Utilities</h3><pre>
5609
5610Fixes bugs:
5611	- ps2ascii would cause an error if given a font that didn't have an
5612'X' character.  (ps2ascii.ps)
5613	- ps2ascii didn't intercept the Level 2 string display operators.
5614(ps2ascii.ps)
5615
5616</pre><h3><a name="V3.33_Drivers"></a>Drivers</h3><pre>
5617
5618Fixes bugs:
5619	- The Stylus Color driver had an incorrect type name.  (gdevstc.c)
5620
5621</pre><h3><a name="V3.33_Platforms"></a>Platforms</h3><pre>
5622
5623Fixes bugs:
5624	- -dBitsPerPixel= didn't work properly for MS Windows or OS/2 PM.
5625(gdevmswn.c, gdevpm.c)
5626	- The Win32 platform didn't compile properly.  (memory_.h)
5627
5628</pre><h3><a name="V3.33_Fonts"></a>Fonts</h3><pre>
5629
5630Improves the font substitution algorithm to take the face name into account
5631in more cases.  (gs_fonts.ps)
5632
5633</pre><h3><a name="V3.33_Library"></a>Library</h3><pre>
5634
5635Fixes bugs:
5636	- Unrotated black-and-white bitmaps with an inverted device X axis
5637were displaced in X.  (gsimage1.c)
5638
5639</pre>
5640
5641<h2><a name="Version3.32"></a>Version 3.32 (4/7/95)</h2>
5642
5643<p>
5644More bug fixes.  This is still not a public release.
5645
5646<h3><a name="V3.32_Documentation"></a>Documentation</h3><pre>
5647Further clarifies the "two-phase commit" algorithm for device put_params
5648procedures.  (drivers.doc, gsparam.h)
5649
5650Adds a note about a compiler bug under Ultrix 4.4.  (make.doc)
5651
5652</pre><h3><a name="V3.32_Procedures"></a>Procedures</h3><pre>
5653
5654Fixes bugs:
5655	- Some installation scripts could fail because some implementations
5656of sh take the status of an `if' condition as the status of the `if'
5657command.  (unix-end.mak)
5658
5659Adds "maintainer-clean" as a synonym for "real-clean".  (gs.mak)
5660
5661Adds a -dORIENT1 switch that defines orientation = 1 as portrait for
5662setpage[params].  (use.doc, gs_init.ps, gs_lev2.ps, gs_statd.ps)
5663
5664</pre><h3><a name="V3.32_Utilities"></a>Utilities</h3><pre>
5665
5666Fixes bugs:
5667	- ps2ascii didn't redirect %stdout completely.  (ps2ascii.ps)
5668	- ps2ascii didn't preserve the local/global VM mode.  (ps2ascii.ps)
5669	- ps2ascii didn't handle fonts with an all-zero or missing bounding
5670box correctly.  (ps2ascii.ps)
5671	- viewpbm didn't scale the image properly.  (viewpbm.ps)
5672
5673</pre><h3><a name="V3.32_Drivers"></a>Drivers</h3><pre>
5674
5675Fixes bugs:
5676	- The CGM driver wrote out an incorrect color precision value.
5677(gdevcgm.c)
5678	- The SGI bitmap driver was named "sgi" rather than "sgirgb".
5679(gdevsgi.c)
5680	- The PCX driver didn't round up an odd line length for gray-scale
5681output.  (gdevpcx.c)
5682	- The PCX driver produced incorrect output for gray-scale or 4- or
56838-bit color.  (gdevpcx.c)
5684
5685</pre><h3><a name="V3.32_Platforms"></a>Platforms</h3><pre>
5686
5687Fixes bugs:
5688	- The VMS MODULES.LIS file had gotten out of sync with the Unix
5689makefiles (again).  (modules.lis)
5690
5691</pre><h3><a name="V3.32_Interpreter"></a>Interpreter</h3><pre>
5692
5693Fixes bugs:
5694	- Some compilers won't accept '\l', even in the false arm of a
5695preprocessor conditional.  (scanchar.h)
5696	- A procedure was declared with an incorrect argument type.
5697(zcsindex.c)
5698	- The scaled font cache didn't copy XUIDs properly.  (bfont.h,
5699zfont.c, zfont2.c)
5700	- status could return true even if the file was closed.  (zfile.c)
5701
5702</pre><h3><a name="V3.32_Streams"></a>Streams</h3><pre>
5703
5704Fixes bugs:
5705	- The LZW filters were factored improperly.  (modules.lis, gs.mak,
5706vms.mak, slzwx.h, slzwc.c, slzwd.c)
5707
5708Changes the DCTDecode filter for compatibility with Adobe implementations:
5709	- Ignore bytes preceding the 0xff that marks the beginning of the
5710JPEG data.  (sdctd.c)
5711	- Set MAX_BLOCKS_IN_MCU to 64.  (jpeg.mak, gsjpglib.h)
5712
5713</pre><h3><a name="V3.32_Library"></a>Library</h3><pre>
5714
5715Fixes bugs:
5716	- The "two-phase commit" for device parameters wasn't fully
5717implemented.  (gsiodev.c)
5718	- Asking for a device color map before the device was opened could
5719cause a crash.  (gsdparam.c)
5720	- The scaled font cache didn't copy XUIDs properly.  (gxfont.h,
5721gsfont.c)
5722	- 90 or 270 degree rotated black-and-white bitmaps (including
5723bitmapped fonts such as downloaded TrueType fonts) with an inverted device Y
5724axis were displaced in Y.  (gsimage1.c)
5725	- On high-resolution devices, parts of regions filled with halftones
5726could fail to be painted.  (gxclist.c)
5727
5728</pre>
5729
5730<h2><a name="Version3.31"></a>Version 3.31 (4/2/95)</h2>
5731
5732<p>
5733A few final bug fixes for the release.  Includes significant speed
5734improvements for CIE color, and a first draft of a low-level CGM driver.
5735
5736<h3><a name="V3.31_Documentation"></a>Documentation</h3><pre>
5737Notes that the BJC600 driver also works for the BJC4000.  (devs.mak)
5738
5739</pre><h3><a name="V3.31_Procedures"></a>Procedures</h3><pre>
5740
5741At the suggestion of a user, changes the default protections for installed
5742files on Unix and DV/X systems from 775/664 to 755/644.  (*head.mak)
5743
5744At the suggestion of a user, adds a -dNOCIE switch to substitute DeviceGray
5745and DeviceRGB color spaces for CIEBasedA and CIEBasedABC spaces
5746respectively.  (gs_init.ps, gs_lev2.ps)
5747
5748</pre><h3><a name="V3.31_Utilities"></a>Utilities</h3><pre>
5749
5750Changes gslp and its relatives to use ISOLatin1Encoding for output, and to
5751send almost all printout to stderr rather than stdout (for use as a filter
5752under Unix).  (gslp.ps)
5753
5754</pre><h3><a name="V3.31_Drivers"></a>Drivers</h3><pre>
5755
5756Fixes bugs:
5757	- The fax/TIFF driver no longer exported gdev_fax_print_page, which
5758the DigiFax driver needs.  (gdevtfax.c)
5759	- The color DeskJet drivers gave an error for BitsPerPixel=3.
5760(gdevcdj.c)
5761	- The "Windows printer" driver was setting its margins in points
5762rather than inches.  (gdevwprn.c)
5763	- The BJ10 and BJ200 drivers calculated vertical skip distances
5764wrong.  (gdevbj10.c)
5765	- The BJ10 and BJ200 drivers output two garbage bytes following the
5766initialization string.  (gdevbj10.c)
5767
5768Adds a preliminary driver that produces low-level CGM output.  (gdevcgml.h,
5769gdevcgmx.h, gdevcgm.c, gdevcgml.c)
5770
5771</pre><h3><a name="V3.31_Platforms"></a>Platforms</h3><pre>
5772
5773Fixes bugs:
5774	- The VMS files had gotten out of sync with the other makefiles
5775(again).  (modules.lis, vms.mak)
5776	- The MS Windows and OS/2-PM drivers hadn't been updated to handle
5777BitsPerPixel as a standard parameter.  (gdevmswn.c, gdevpm.c)
5778
5779Removes the TIFF drivers from the Windows platform, and restores the BMP
5780drivers.  (bcwin.mak)
5781
5782</pre><h3><a name="V3.31_Interpreter"></a>Interpreter</h3><pre>
5783
5784Fixes bugs:
5785	- The CIE color mapping cache could produce anomalous results
5786for the default (all zero values) color if some of the mapping
5787functions were non-linear.  (zcie.c)
5788	- MultiMaster font substitution got confused if substituted
5789fonts had their FontName changed.  (gs_fonts.ps)
5790	- A procedure was declared as private inconsistently.  (zdevcal.c)
5791	- Some pointer relocation procedures didn't work correctly on
5792systems with sizeof(T *) &gt; sizeof(int).  (istack.c)
5793	- The freelist vector wasn't large enough to handle graphics state
5794objects on 64-bit systems, leading to severe memory sandbars.  (iastate.h)
5795	- The debugging messages from the allocator had gotten inconsistent
5796and hard to use.  (ialloc.c)
5797	- Mixing save/restore with allocation could cause the GC never to
5798get run.  (isave.c)
5799
5800Speeds up the mapping of CIE colors.  (zcie.c)
5801
5802Adds a .namestring operator for getting the string of a name without having
5803to copy it.  (zstring.c)
5804
5805</pre><h3><a name="V3.31_Streams"></a>Streams</h3><pre>
5806
5807Fixes bugs:
5808	- The IJG code needed a couple more flags set for IJG v6.
5809(gsjmorec.h)
5810	- Some pointer relocation procedures didn't work correctly on
5811systems with sizeof(T *) &gt; sizeof(int).  (stream.c)
5812
5813</pre><h3><a name="V3.31_Library"></a>Library</h3><pre>
5814
5815Fixes bugs:
5816	- The end-test for the fast case of monobit images was wrong,
5817leading to out-of-range memory accesses.  (gsimage1.c)
5818	- Monobit images rotated by 270 degrees displayed incorrectly.
5819(gsimage1.c)
5820	- If a Type 1 font used hint replacement, some parts of the outline
5821before the hint replacement ignored the old hints.  (gstype1.c)
5822	- Some compilers didn't accept a variable name that was the same as
5823a macro with parameters.  (gxht.c)
5824	- A procedure was declared as private inconsistently.  (gdevm1.c)
5825	- Some pointer relocation procedures didn't work correctly on
5826systems with sizeof(T *) &gt; sizeof(int).  (gdevmem.c, gsstate.c)
5827	- The test on FORCE_HINTS_TO_BIG_PIXELS was backwards.  This bug was
5828supposed to have been fixed in 3.30, but somehow the fix got lost.
5829(gstype1.c)
5830	- 90 degree rotated monobit images could drop some scan lines.
5831(gsimage*.c)
5832
5833Speeds up the mapping of CIE colors.  (gscie.h, gxcmap.h, gscie.c, gxcmap.c)
5834
5835Speeds up color images (non-interpolated, 1-8 bits per component) by adding
5836a cache for mapped color values.  (gximage.h, gsimage.c, gsimage1.c,
5837gsimage2.c)
5838
5839Shrinks the band list file slightly by using only as many bytes as necessary
5840for writing out colors, rather than always using 4 bytes.  (gxclist.c,
5841gxclread.c)
5842
5843</pre>
5844
5845<h2><a name="Version3.30"></a>Version 3.30 (beta) (3/21/95)</h2>
5846
5847<p>
5848More bug fixes.  The garbage collector and PDF interpreter finally appear to
5849work reliably.
5850
5851<h3><a name="V3.30_Documentation"></a>Documentation</h3><pre>
5852Fixes bugs:
5853	- language.doc had gotten out of date.  (language.doc)
5854
5855</pre><h3><a name="V3.30_Utilities"></a>Utilities</h3><pre>
5856
5857Fixes bugs:
5858	- Changes in the handling of %stdout had broken ps2ascii.
5859(gs_dps1.ps, ps2ascii.ps)
5860
5861Improves ps2ascii to skip empty strings and not output redundant font
5862changes.  (ps2ascii.ps)
5863
5864</pre><h3><a name="V3.30_Drivers"></a>Drivers</h3><pre>
5865
5866Fixes bugs:
5867	- The fax and TIFF drivers didn't free all their working storage.
5868(This bug was fixed in 3.27, and the fix somehow got lost.)  (gdevtfax.c)
5869
5870Adds new drivers:
5871	- sgirgb, to produce SGI RGB raster files.  (gdevsgi.c)
5872	- tiffcrle, to produce output in TIFF "CCITT 1-dimensional Huffman
5873RLE" format (Group 3 fax with no EOLs). (gdevtfax.c)
5874	- tifflzw, to produce output in TIFF LZW format (using the existing
5875CCITTFaxEncode filter code). (gdevtfax.c)
5876	- tiffpack, to produce output in TIFF PackBits format. (gdevtfax.c)
5877
5878</pre><h3><a name="V3.30_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
5879
5880Fixes bugs:
5881	- If the current screen was set with a halftone, setcolorscreen
5882wouldn't accept what currentcolorscreen returned.  (gs_dps1.ps)
5883	- debug_print_full_ref didn't print t_oparray objects correctly.
5884(idebug.c)
5885	- The internal data for a font could be allocated in a different VM
5886space from the font dictionary, causing dangling pointers.  (zfont2.c)
5887	- definefont became confused if a program failed to delete the FID
5888from a re-encoded font.  (This is questionable PostScript, but dvips does
5889it.)  (zfont2.c)
5890	- If a BuildChar procedure did a save before the setcachedevice and
5891a restore afterwards, the memory manager would attempt to free the cache
5892device after it had already been freed by the restore, leading to damaged
5893freelists.  (gschar.c)
5894	- setresolution (in statusdict) was ignored.  (gs_lev2.ps,
5895gs_statd.ps)
5896	- If a string containing a string containing a \ was passed to the
5897token operator, the \ was not recognized properly in a Level 2 environment.
5898(iscan.c)
5899	- A couple of default dictionary sizes had become too small.
5900(iinit.c)
5901
5902Makes DOS EOF (control-Z, 0x1a) a self-delimiting token, like left bracket.
5903THIS IS A NON-BACKWARD-COMPATIBLE CHANGE, but it should not have any adverse
5904effects.  (gs_init.ps, iscan.c, iscantab.c)
5905
5906Distinguishes arch_small_memory from arch_ints_are_short, and adds a new
5907-Z. switch to force small-memory table sizes regardless of actual memory
5908size.  (dstack.h, idict.c, zpcolor.c, zvmem2.c)
5909
5910</pre><h3><a name="V3.30_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
5911
5912Fixes bugs:
5913	- A page with no Contents caused an error.  (pdf_main.ps)
5914	- Executing a Form resource caused an error.  (pdf_draw.ps)
5915	- Outlines with open entries caused an error.  (pdf_main.ps)
5916	- Embedded Type 3 fonts caused an error.  (pdf_draw.ps, pdf_font.ps)
5917	- The Widths array of fonts was ignored.  (pdf_font.ps)
5918
5919</pre><h3><a name="V3.30_Library"></a>Library</h3><pre>
5920
5921Fixes bugs:
5922	- Freeing an entry in the pattern cache didn't clear the pointers to
5923the raster data, producing a dangling reference that confused the garbage
5924collector.  (gxpcmap.c)
5925	- The test on FORCE_HINTS_TO_BIG_PIXELS was backwards.  (gstype1.c)
5926	- The pattern cache bookkeeping was incorrect.  (gxpcmap.c)
5927	- Depending on the order in which pointers were relocated, the
5928garbage collector could incorrectly relocate pointers from the character
5929cache.  (gxfcache.h, gsfont.c, gxccache.c, gxccman.c)
5930
5931Changes the fast case of black-and-white images so it aligns scaled images
5932with the device coordinate system, to improve performance.  (gsimage1.c)
5933
5934Extends the coordinate transformation routines to handle absurdly large
5935translation values in the CTM as long as the final device device coordinates
5936are within fixed-point range.  (gxmatrix.h, gxpath.h, gschar.c, gscoord.c,
5937gsmatrix.c, gxhint2.c, gxpath2.c)
5938
5939Distinguishes arch_small_memory from arch_ints_are_short, and adds a new
5940-Z. switch to force small-memory table sizes regardless of actual memory
5941size.  (gdevprn.h, gxpcolor.h, gzht.h, std.h, gsfont.c, gsht1.c, gspaint.c,
5942gsstate.c, gxcht.c, gxht.c, gxpcmap.c)
5943
5944</pre>
5945
5946<hr>
5947
5948<h2><a name="Version3.29"></a>Version 3.29 (internal) (3/8/95)</h2>
5949
5950<p>
5951Another bug-fix release.  This release processes all but 7 of the 500+ files
5952on the Adobe Acrobat Sampler CD-ROM without giving an error.  The garbage
5953collector finally appears to be stable.  This version was created for a
5954customer; it was not released to the general public or even to the beta test
5955list.
5956
5957<h3><a name="V3.29_Documentation"></a>Documentation</h3><pre>
5958Documents the possible need to set LD_RUN_PATH on SVR4 platforms.
5959(make.doc)
5960
5961Expands the description of the device life cycle, and of the constraints on
5962put_params procedures.  (drivers.doc)
5963
5964Adds an explicit copyright notice to the Aladdin Ghostscript Free Public
5965License.  (PUBLIC)
5966
5967Clarifies that the Win32s documentation also applies to Windows NT.
5968(make.doc)
5969
5970</pre><h3><a name="V3.29_Procedures"></a>Procedures</h3><pre>
5971
5972Removes the obsolete writeppmfile operator from the standard configurations.
5973(gs.mak)
5974
5975Changes the Watcom makefiles to work properly with Watcom C/C++ 10.0.
5976(make.doc, msc.mak, watc.mak, watcwin.mak, wccommon.mak)
5977
5978</pre><h3><a name="V3.29_Utilities"></a>Utilities</h3><pre>
5979
5980Adds a wftopfa utility for converting the Wadalab fonts to usable Type 0 and
5981Type 1 form.  (wftopfa)
5982
5983</pre><h3><a name="V3.29_Fonts"></a>Fonts</h3><pre>
5984
5985Fixes bugs:
5986	- Entries added automatically by definefont (FontInfo, ExactSize)
5987could cause a font dictionary to become full.  (gs_fonts.ps, gs_type1.ps)
5988	- wrfont.ps couldn't deal with very long CharStrings.  (wrfont.ps)
5989
5990Makes the name of the Fontmap file an easily editable parameter.
5991(gs_fonts.ps)
5992
5993Adds a utility for converting the Wadalab font to usable Type 0 and Type 1
5994form.  (wrfont.ps, wftopfa.ps)
5995
5996</pre><h3><a name="V3.29_Drivers"></a>Drivers</h3><pre>
5997
5998Fixes bugs:
5999	- The top margin for printer (and fax) devices was computed
6000incorrectly, using the X resolution rather than the Y resolution.
6001(gdevprn.h)
6002	- Changing the page size or resolution of a printer device closed
6003and reopened the device unnecessarily.  (gdevprn.c)
6004	- Changing the page size of the X11 device didn't change the initial
6005matrix, so (0,0) didn't wind up in the lower left corner.  (gdevx.c)
6006	- The bit devices didn't allow changing the number of bits per
6007pixel.  (gdevbit.c)
6008
6009Adds a settable .IsPageDevice boolean device parameter to the X Windows
6010driver.  The default value is true.  (gdevx.h, gdevx.c)
6011
6012Changes the PPM driver so that it chooses between PBM/PGM/PPM on a
6013page-by-page basis, rather retaining the most general format ever required
6014by any page.  (gdevpbm.c)
6015
6016</pre><h3><a name="V3.29_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
6017
6018Fixes bugs:
6019	- The current page device could be null, rather than an empty
6020dictionary.  (igstate.h, zchar.c, zdevice.c, zdevice2.c, zgstate.c)
6021	- The scanner didn't signal an error for names or strings that were
6022too long.  (iscan.c)
6023	- A missing header file upset the VAX compilers.  (ztype.c)
6024	- Some places expecting dictionary operands didn't check the type,
6025because they incorrectly assumed that the dict_check_read/write macro did
6026this.  (idict.h, zdevice2.c, zht2.c, zmisc2.c)
6027	- The definition of quit in systemdict wasn't disabled within
6028encapsulated jobs.  (gs_lev2.ps)
6029	- resetfile gave an error if the file was closed, rather than doing
6030nothing.  (zfileio.c)
6031	- The scanner attempted to free an uninitialized pointer if it
6032reached EOF after a / or //.  (iscan.c)
6033	- A restore in a different file than the corresponding save caused
6034an invalidrestore error.  (gs_init.ps)
6035	- The default value of EndOfData in RunLengthDecode streams was set
6036to false.  (zfilter.c)
6037	- .registerencoding didn't invoke the save machinery correctly,
6038leading to GC problems.  (zfont2.c)
6039	- The facility for overriding .printerror didn't work correctly.
6040(gs_init.ps)
6041	- gs_run_file_open wasn't public.  (gsmain.c)
6042	- The interpreter returned e_undefined for undefined error names,
6043rather than the error code.  (interp.c)
6044	- Allocation in system memory (specifically, adding a block to a
6045stack) couldn't trigger automatic garbage collection.  (interp.c, igc.c,
6046zvmem2.c)
6047	- A restore in a different invocation of gs_run_string than the
6048corresponding save would stop reading the string.  (files.h, gsmain.c,
6049iccinit.c, zfile.c)
6050	- The Type 1 rasterizer state included a pointer into the middle of
6051an object, confusing the garbage collector.  (zchar1.c, zfont1.c)
6052	- When the garbage collector deleted a name, it didn't zero out the
6053string pointer.  (iname.c)
6054	- On platforms where obj_align_mod &gt; 4, the memory manager could
6055access 1 beyond the end of its freelists.  (iastate.h)
6056	- makefont and scalefont didn't check the type of their font operand
6057soon enough.  (zfont.c)
6058	- restore didn't finalize the objects it freed.  (isave.c)
6059	- restore didn't free system VM.  (isave.c)
6060	- Freeing a ref array that occupied an entire chunk didn't free the
6061chunk.  (ialloc.c)
6062
6063Adds a .runexec operator which implements the 'close if error' function of
6064run.  (zfile.c, zfileio.c)
6065
6066Moves the obsolete writeppmfile operator into a separate file.  (zfileio.c,
6067zwppm.c)
6068
6069Makes the statistics returned by the memory manager more accurate.
6070(ialloc.c, zvmem.c)
6071
6072Adds a (read-only) %Calendar% IODevice.  (zdevcal.c)
6073
6074Adds a "hook" in the character operators to allow external code to
6075intervene; this is needed for a customer.  (ichar.h, zchar.c, zchar2.c)
6076
6077Makes control-D (0x04) a self-delimiting token, like left bracket.  THIS IS
6078A NON-BACKWARD-COMPATIBLE CHANGE, but it should not have any adverse
6079effects.  (scanchar.h, iscan.c, iscantab.c)
6080
6081Changes the error stack printout so that it puts line breaks between items
6082iff the items are being printed with ==.  (gs_init.ps)
6083
6084Uses finalization to close streams being freed.  (igc.c, zfile.c, ziodev.c)
6085
6086</pre><h3><a name="V3.29_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
6087
6088Fixes bugs:
6089	- Embedded Type 1 fonts that invoked save and restore while being
6090read caused an error.  (pdf_font.ps)
6091	- Large files that referenced a non-alphabetic font for the first
6092time late in the file could cause an error.  (pdf_main.ps)
6093
6094</pre><h3><a name="V3.29_Streams"></a>Streams</h3><pre>
6095
6096Fixes bugs:
6097	- SubFileDecode streams didn't copy partial matches of the EOD
6098string into their output.  (sfilter1.c)
6099
6100Makes switching between read and write modes a stream procedure.  (stream.h,
6101sfile.c, sfileno.c, stream.c, zfileio.c)
6102
6103Makes file streams close themselves when finalized.  (We can't do this for
6104other streams, because finalization procedures aren't allowed to free
6105storage explicitly.)  (stream.h, sfile.c, sfileno.c, stream.c)
6106
6107</pre><h3><a name="V3.29_Library"></a>Library</h3><pre>
6108
6109Fixes bugs:
6110	- The obsolete files gcdefs.h and gsfile.c were still included in
6111the fileset.
6112	- A number of places didn't deal with null patterns properly (p_tile
6113== 0).  (gxdcolor.h, gspcolor.c, gxpcmap.c)
6114	- The pattern tiling algorithm was numerically unstable, especially
6115if the X/YStep vectors were close to the axes.  (gxcolor2.h, gspcolor.c,
6116gxpcmap.c)
6117	- setdeviceparams checked the values of read-only byte array
6118parameters incorrectly.  (gsdparam.c)
6119	- The statistics macros in gxfill.c didn't use DO_NOTHING when
6120disabled.  (gxfill.c)
6121	- Changing the orientation of a device closed and reopened the
6122device unnecessarily.  (gsdparam.c)
6123	- ioerrors occurring when writing command lists weren't reported
6124properly.  (gxclist.h, gxclist.c)
6125	- Errors from device procedures weren't always propagated up to
6126clients.  (gsimage1.c, gsimage3.c, gxclip2.c, gxclist.c)
6127	- Overflowing the fixed-point translation values in the CTM caused a
6128floating point exception rather than a limitcheck.  (gxmatrix.h, gscoord.c)
6129	- charpath set the current point correctly, but didn't append a
6130moveto element to the path.  (This mostly affected Mathematica output.)
6131(gzpath.h)
6132	- Image devices mapped colors incorrectly.  (gdevmem.c, gdevm16.c)
6133	- On devices with color capability but fewer than 4 bits per pixel,
6134color halftones didn't work (and could cause an arithmetic exception).
6135(gxdither.c)
6136	- Black-on-white memory devices didn't map colors properly.
6137(gdevprn.h, gxdevice.h, gxdevmem.h, gdevmem.c, gdevm1.c, gsdevice.c)
6138	- Memory devices with a non-zero origin in their initial matrix
6139clipped the image improperly.  (gsdevice.c)
6140	- The Type 1 rasterizer state included a pointer into the middle of
6141an object, confusing the garbage collector.  (gstype1.h, gxfont1.h,
6142gxtype1.h, gstype1.c, gxhint2.c)
6143	- The band rasterizer could produce garbled output for images
6144(including characters) on 64-bit architectures.  (gxclread.c)
6145	- Bounding boxes (for pathbbox and setbbox) could be slightly
6146inaccurate.  (gsmatrix.c)
6147	- On 64-bit architectures, halftone tiles less than 16 bits wide
6148were handled incorrectly.  (gxclist.c)
6149
6150Adds an .IsPageDevice boolean device parameter (normally read-only).
6151(gsdparam.c)
6152
6153Removes the library code for implementing the obsolete writeppmfile
6154operator.  (gswppm.c)
6155
6156Makes the default matrix (for initmatrix and defaultmatrix) a settable
6157parameter in the graphics state.  (gscoord.h, gzstate.h, gscoord.c,
6158gsdevice.c, gsdparam.c)
6159
6160Makes the statistics returned by the memory manager more accurate.
6161(gsmemory.h)
6162
6163Adds a compile-time flag to choose whether or not to force Type 1 hints to
6164"big pixel" boundaries when oversampling.  (gstype1.c)
6165
6166Changes the .PageCount device parameter back to PageCount, because the
6167change broke some scripts.  (gsdparam.c)
6168
6169Adds optimization for 90 degree rotated images with pure colors.
6170(gximage.h, gsimage.c, gsimage1.c)
6171
6172Changes the band rasterizer so that replicated halftone tiles are written on
6173the band list in unreplicated form.  (gsbitops.h, gxcldev.h, gsbitops.c,
6174gxclist.c, gxclread.c, gxht.c)
6175
6176Changes the .HWBitsPerPixel device parameter to BitsPerPixel.  (drivers.doc,
6177language.doc, gdevcdj.c, gdevstc.c, gsdparam.c)
6178
6179</pre>
6180
6181<h2><a name="Version3.28"></a>Version 3.28 (beta) (2/13/95)</h2>
6182
6183<p>
6184Another bug-fix beta release.  The number of bugs being fixed in each of
6185these sub-releases does exceed the number of new bugs introduced, but the
6186latter number is discouragingly high.
6187
6188<h3><a name="V3.28_Documentation"></a>Documentation</h3><pre>
6189Adds some information about handling VMS file attributes for files
6190transferred by FTP.  (use.doc)
6191
6192</pre><h3><a name="V3.28_Procedures"></a>Procedures</h3><pre>
6193
6194Fixes bugs:
6195	- unix-gcc.mak said the static linkage switch for SunOS was -Bstatic
6196rather than -static.  (unix-gcc.mak)
6197	- Some dependency lists in gs.mak were out of date.  (gs.mak)
6198
6199</pre><h3><a name="V3.28_Utilities"></a>Utilities</h3><pre>
6200
6201Fixes bugs:
6202	- markhint.ps didn't check for protected fonts.  (markhint.ps)
6203
6204</pre><h3><a name="V3.28_Drivers"></a>Drivers</h3><pre>
6205
6206Fixes bugs:
6207	- The cdj driver had a byte/char agreement problem.  (gdevcdj.c)
6208	- The cdj driver attempted to initialize a dynamic array.
6209(gdevcdj.c)
6210
6211Removes the setting of InputAttributes and OutputAttributes from the H-P
6212drivers, since this causes more problems than it solves.  (gdevdjet.c)
6213
6214</pre><h3><a name="V3.28_Interpreter"></a>Interpreter</h3><pre>
6215
6216Fixes bugs:
6217	- makeoperator assigned incorrect attributes to operators. (bug
6218introduced in 3.27) (opdef.h, iinit.c, iutil.c, zmisc.c)
6219
6220</pre><h3><a name="V3.28_Library"></a>Library</h3><pre>
6221
6222Fixes bugs:
6223	- gs_makeimagedevice didn't set the caller's pointer to the newly
6224created device.  (bug introduced in 3.27) (gsdevice.c)
6225	- There were still some mismatches between char * and byte * values.
6226(gsdparam.c)
6227	- The halftone replication algorithm could produce inappropriately
6228large replicated masks.  (gxht.c)
6229	- stroke usually did the wrong thing for degenerate (single-point)
6230subpaths.  (gxstroke.c)
6231
6232</pre>
6233
6234<h2><a name="Version3.27"></a>Version 3.27 (beta)(withdrawn) (2/8/95)</h2>
6235
6236<p>
6237Yet another bug-fix beta release.  This release had so many serious problems
6238(the most serious being at least one changed file that the release tool
6239failed to include in the fileset) that it was withdrawn less than a day
6240after it was issued.
6241
6242<h3><a name="V3.27_Documentation"></a>Documentation</h3><pre>
6243Fixes bugs:
6244	- The NEWS for 3.26 didn't mention the fact that the stdxxx stream
6245interface used by MS Windows, OS/2, and Macintosh implementations had
6246changed.  (NEWS)
6247	- The file public.doc wasn't distributed with the previous fileset.
6248
6249Brings the NeXTSTEP documentation up to date for NeXTSTEP releases 3.2 and
6250subsequent.  (make.doc)
6251
6252</pre><h3><a name="V3.27_Procedures"></a>Procedures</h3><pre>
6253
6254Fixes bugs:
6255	- Some dependency lists in gs.mak were out of date.  (gs.mak)
6256	- A 'fi;' was missing in the Unix install script.  (unix-end.mak)
6257	- There was no VMS build script for the PDF options.  (vms.mak)
6258	- The VMS script used CC_QUALI instead of CC_QUAL in several places.
6259(vms.mak)
6260
6261</pre><h3><a name="V3.27_Utilities"></a>Utilities</h3><pre>
6262
6263Fixes bugs:
6264	- ps2epsi's usage prompt referred to "pstoepsi".  (ps2epsi)
6265	- ps2epsi set PATH and LOCALPATH unilaterally.  (ps2epsi)
6266
6267Comments out the sample usage line at the end of viewjpeg.ps.  (viewjpeg.ps)
6268
6269</pre><h3><a name="V3.27_Drivers"></a>Drivers</h3><pre>
6270
6271Fixes bugs:
6272	- The fax and tiff drivers didn't free all of their working storage.
6273(gdevtfax.c)
6274
6275Adds user-contributed drivers for the BJC 600 and ESC/P printers.
6276(devs.mak, gdevcdj.c)
6277
6278</pre><h3><a name="V3.27_Platforms"></a>Platforms</h3><pre>
6279
6280Fixes bugs:
6281	- Some necessary casts of string parameters to (const byte *) were
6282omitted.  (gp_mswin.c, gp_os2.c)
6283
6284Adds the psmono and bit* drivers, and removes the p*m drivers, in the OS/2,
628532-bit MS-DOS, and 32-bit Windows configurations.  (bcwin32.mak, os2.mak,
6286watc.mak)
6287
6288</pre><h3><a name="V3.27_Fonts"></a>Fonts</h3><pre>
6289
6290Fixes bugs:
6291	- The Fontmap for Ultrix had somehow become slightly incorrect.
6292(Fontmap.Ult)
6293
6294Removes the font file names from the dependency lists in cfonts.mak.  This
6295makes cfonts.mak readily usable with any set of fonts, but it also means
6296that it will always run font2c, rather than being able to avoid this if the
6297.c file is up to date.  (cfonts.mak)
6298
6299</pre><h3><a name="V3.27_Interpreter"></a>Interpreter</h3><pre>
6300
6301Fixes bugs:
6302	- Some operators could fail if the stdxxx streams weren't currently
6303open.  (files.h, zfileio.c, ziodev.c)
6304	- setpagedevice didn't handle unrecognized keys properly.
6305(gs_setpd.ps)
6306	- The value returned for the HWColorMap device parameter was
6307allocated incorrectly, confusing the garbage collector.  (iparam.c)
6308	- Typing ahead at the &gt;&gt;showpage&lt;&lt; prompt no longer caused all
6309further pages to be processed without stopping.  (gs_init.ps)
6310	- Setting DEVICEWIDTHPOINTS or DEVICEHEIGHTPOINTS on the command
6311line caused a typecheck.  (gs_init.ps)
6312	- The garbage collector didn't handle halftone threshold arrays
6313properly.  (zht2.c)
6314	- setdefaulttimeouts caused an error on Level 2 systems.
6315(gs_lev2.ps)
6316	- cvi and cvr weren't equivalent to token followed by a type check.
6317(iscan.h, iscannum.h, iscan.c, iscannum.c, ztoken.c, ztype.c)
6318	- In Level 2 systems, image and colorimage didn't allow 12 bits per
6319sample.  (zpaint.c)
6320	- If debugging was enabled, the garbage collector printed spurious
6321error messages about the allocator objects not being in a chunk.  (ialloc.c)
6322	- restore didn't reset the count of operator procedures, so the
6323operator procedure table could fill up.  Fixing this required splitting the
6324op_array_table into a global table and a local table.  (opdef.h, iinit.c,
6325iutil.c, zmisc.c)
6326	- .forgetsave could leave a dangling pointer in the memory manager,
6327causing an access error.  (ialloc.c, isave.c)
6328	- Freed objects weren't always marked as freed, which could confuse
6329the memory validator.  (ialloc.c)
6330	- .forgetsave didn't mark inner chunk headers as free, leading to
6331access errors.  (isave.c)
6332
6333Changes the representation of operator procedures so that they point
6334directly to their definition in the op_array_table.  (iref.h, opdef.h,
6335idebug.c, igc.c, igcref.c, interp.c, zmisc.c)
6336
6337Removes .makeglobaloperator.  (zmisc.c)
6338
6339Adds patches to discard some common garbage produced by H-P-oriented
6340applications and drivers.  (gs_init.ps)
6341
6342Changes the &gt;&gt;showpage&lt;&lt; prompt so that if the input reaches EOF, the
6343interpreter still stops after the next &gt;&gt;showpage&lt;&lt;, rather than processing
6344all subsequent pages.  This is a consequence of the bug fix that
6345automatically reopens the stdxxx files.
6346
6347Adds an optional dictionary parameter for the RunLengthEncode/Decode
6348filters, to allow specifying EndOfData.  The default is true.  (zfilter.c)
6349
6350Adds ByteTranslateEncode/Decode filters.  (zfilter2.c)
6351
6352</pre><h3><a name="V3.27_Streams"></a>Streams</h3><pre>
6353
6354Fixes bugs:
6355	- The K &gt; 0 option of the CCITTFaxDecode filter switched back to 2-D
6356encoding if an output buffer boundary fell in the middle of a 1-D line, and
6357signalled an error if an input buffer boundary fell in the middle of an EOL.
6358(scfd.c)
6359
6360Adds an EndOfData flag to the RunLengthEncode/Decode filters.  If true, RLE
6361generates 128 as EOD, and RLD recognizes it; if false, RLE does not mark
6362EOD, and RLD ignores 128.  (srlx.h, gxclist.c, gxclread.c, sfilter1.c)
6363
6364Adds ByteTranslateEncode/Decode streams.  (sbtx.h, sfilter2.c)
6365
6366</pre><h3><a name="V3.27_Library"></a>Library</h3><pre>
6367
6368Fixes bugs:
6369	- There were some mismatches between char * and byte * values.
6370(gsdparam.c)
6371	- Failure to round a scaling coordinate caused one-for-one
6372black-and-white images to render slower than they should.  (gsimage.c)
6373	- Setting PageSize without setting HWResolution could cause an
6374invalid memory access.  (gsdparam.c)
6375	- The garbage collector didn't handle halftone threshold arrays
6376properly.  (gxht.h, gsht.c, gsht1.c)
6377
6378</pre>
6379
6380<h2><a name="Version3.26"></a>Version 3.26 (beta) (2/1/95)</h2>
6381
6382<p>
6383Yet another bug-fix beta release, still not ready for public release.
6384
6385<h3><a name="V3.26_Documentation"></a>Documentation</h3><pre>
6386Fixes bugs:
6387	- The description of device properties had gotten out of sync with
6388the code.  (language.doc)
6389
6390Splits off documentation specific to the Aladdin (non-GNU) release into a
6391separate file.  (readme, public.doc, unix-end.mak)
6392
6393Adds a pointer to a collection of other free fonts (including some Cyrillic
6394ones) available on the net.  (public.doc)
6395
6396</pre><h3><a name="V3.26_Procedures"></a>Procedures</h3><pre>
6397
6398Fixes bugs:
6399	- On VMS systems with both VAX C and DEC C installed, the build script
6400used VAX C rather than DEC C.  (vms.mak)
6401	- zfdecode.c didn't have a build rule.  (gs.mak)
6402	- Several macros in the makefile were used before they were defined.
6403(gs.mak)
6404	- Several macros in the makefile were used without being defined.
6405(gs.mak)
6406
6407Replaces the gssetdev, gssetmod, and gsaddmod scripts with more variants of
6408echogs.  (echogs.c, gs.mak)
6409
6410</pre><h3><a name="V3.26_Utilities"></a>Utilities</h3><pre>
6411
6412Fixes bugs:
6413	- The ps2ascii shell script passed a -f flag to the shell, which not
6414all shells recognize.  (ps2ascii)
6415
6416</pre><h3><a name="V3.26_Drivers"></a>Drivers</h3><pre>
6417
6418Fixes bugs:
6419	- Due to a typo in an initialization string, the H-P printers didn't
6420reset the top margin to zero.  (gdevdjet.c)
6421
6422Adds InputAttributes and OutputAttributes entries to the H-P drivers.  (This
6423should probably be generic to all printers.)  (gdevdjet.c)
6424
6425Replaces the contributed Epson Stylus Color driver with a newer version.
6426(devices.doc, gdevstc.c)
6427
6428</pre><h3><a name="V3.26_Platforms"></a>Platforms</h3><pre>
6429
6430Fixes bugs:
6431	- DEC C complained about 'abs' and 'exit' not being declared.  (x_.h)
6432	- gp_mswin.c and gp_os2.c wouldn't compile.  (gp_mswin.c, gp_os2.c,
6433ziodev.c)
6434
6435</pre><h3><a name="V3.26_Interpreter"></a>Interpreter</h3><pre>
6436
6437Fixes bugs:
6438	- The default CIE rendering dictionary gave everything a magenta tint.
6439(gs_lev2.ps)
6440	- Changing HWResolution and PageSize in the same call of
6441setpagedevice produced an incorrect HWSize.  (gsdparam.c)
6442	- .putdeviceparams didn't accept all the keys that .getdeviceparams
6443returned.  (gsdparam.c)
6444	- The default handler for interrupt and timeout errors didn't push a
6445current object (command) on the stack.  (gs_init.ps)
6446	- The garbage collector didn't handle strings larger than 64K
6447properly.  (iastate.h, ialloc.c, igcstr.c)
6448
6449Adds media matching and Policy consultation to the implementation of
6450setpagedevice.  (gs_setpd.ps)
6451
6452Adds a MaxGlobalVM system parameter.  (zmisc2.c)
6453
6454</pre><h3><a name="V3.26_Streams"></a>Streams</h3><pre>
6455
6456Fixes bugs:
6457	- The CCITTFaxEncode filter could access a byte beyond the end of
6458the allocated area.  (scfe.c)
6459	- The CCITTFaxDecode filter could get an ioerror if a buffer
6460boundary fell in exactly the wrong place.  (scfd.c)
6461
6462</pre><h3><a name="V3.26_Library"></a>Library</h3><pre>
6463
6464Fixes bugs:
6465	- The garbage collector didn't trace colored halftones properly.
6466(gzht.h)
6467	- The garbage collector didn't relocate the bitmap pointers in
6468halftone caches properly.  (gzht.h, gxht.c)
6469
6470Adds the ability to transmit dictionaries through the param_list mechanism
6471(specifically, as device parameters).  This change is
6472non-backward-compatible only for implementors of parameter lists, which only
6473exist within the Ghostscript core.  (gsparam.h, iparam.h, iparam.c)
6474
6475Removes the InitialMatrix device property.  (gsdparam.c)
6476
6477</pre>
6478
6479<h2><a name="Version3.25"></a>Version 3.25 (beta) (1/24/95)</h2>
6480
6481<p>
6482Yet another bug-fix beta release.  There are still at least half a dozen
6483significant known bugs to be fixed before a public release.
6484
6485<h3><a name="V3.25_Documentation"></a>Documentation</h3><pre>
6486Notes that on Unix systems, one should not edit 'makefile', but should edit
6487the individual subfile and run tar_cat.  THIS IS A NON-BACKWARD-COMPATIBLE
6488CHANGE.  (make.doc)
6489
6490Adds information on the Macintosh implementation.  (readme)
6491
6492</pre><h3><a name="V3.25_Procedures"></a>Procedures</h3><pre>
6493Fixes bugs:
6494	- make clean failed on Unix systems where rm -f requires at least one
6495file name.  (gs.mak)
6496	- math_.h was omitted from many dependency lists.  (gs.mak)
6497
6498</pre><h3><a name="V3.25_Drivers"></a>Drivers</h3><pre>
6499
6500Fixes bugs:
6501	- The X Windows and MS Windows draw-line routines couldn't possibly
6502produce sufficiently correct output (since the interface only provides integer
6503coordinates).  (gdevx.c, gdevwddb.c)
6504
6505In response to patent-related actions by Unisys and CompuServe, removes the
6506GIF driver.  (*.mak)
6507
6508Changes dci_std_color (and std_device_std_color_* and prn_device_std_*) so
6509that if the number of bits per pixel is 32, the device is defined as CMYK
6510rather than RGB.  (gxdevice.h)
6511
6512Removes the tseng8 device, which is no longer useful.  (devs.mak, gdevsvga.c)
6513
6514Adds pseudo-alpha support to the SVGA drivers, via the TextAlphaBits and
6515GraphicsAlphaBits device parameters.  (gdevsvga.h, gdevsvga.c)
6516
6517Adds a user-contributed driver for the Epson Stylus Color printer.  (devs.mak,
6518gdevstc.c, devices.doc)
6519
6520</pre><h3><a name="V3.25_Platforms"></a>Platforms</h3><pre>
6521
6522Fixes bugs:
6523	- The VMS build scripts had gotten out of sync (again).  (vms*.mak)
6524
6525</pre><h3><a name="V3.25_Interpreter"></a>Interpreter</h3><pre>
6526
6527Fixes bugs:
6528	- The emulator name array was incorrectly declared const in one place.
6529(gs.c)
6530	- A closed file could incorrectly appear to be 'eq' to another file
6531(open or closed).  (iutil.c)
6532	- If %stdin/%stdout/%stderr was ever closed, it couldn't be
6533reopened.  (gs_btokn.ps, gs_init.ps, files.h, zfile.c, zfileio.c, zfilter.c,
6534zfproc.c, ziodev.c)
6535
6536Changes (almost) all the operator routines to 'static'.  (z*.c)
6537
6538</pre><h3><a name="V3.25_Library"></a>Library</h3><pre>
6539
6540Fixes bugs:
6541	- The raster value for replicated tiles in the halftone cache was
6542incorrect, causing unaligned memory accesses.  (gxht.c)
6543	- stroke and strokepath could produce slightly inaccurate output
6544(leading to slight visible anomalies) as a result of stroke adjustment.
6545(gxstroke.c)
6546	- Attempting to draw an arc with zero radius could cause a numeric
6547exception.  (gspath1.c)
6548	- Setting the Orientation of a device to null resulted in actually
6549setting it to a random value.  (gsdparam.c)
6550	- charpath, stringwidth, and cshow attempted to remap the current
6551color unnecessarily.  (gschar.c)
6552
6553Adds the ability to trace calls on the sqrt function (and possibly other math
6554functions in the future.)  (math_.h, gsmisc.c)
6555
6556Adds additional interrupt checks in the banding code.  (gxclist.c, gxclread.c)
6557
6558</pre>
6559
6560<h2><a name="Version3.24"></a>Version 3.24 (beta) (1/17/95)</h2>
6561
6562<p>
6563This was supposed to be a public release, but too many bugs showed up in 3.23,
6564so this is another bug-fix beta release.  This is the first release with a
6565working PDF reader.
6566
6567<h3><a name="V3.24_Documentation"></a>Documentation</h3><pre>
6568Notes that Solaris requires using installbsd instead of install.  (make.doc)
6569
6570</pre><h3><a name="V3.24_Procedures"></a>Procedures</h3><pre>
6571
6572Changes 'make mostlyclean' so that it doesn't delete the Ghostscript
6573executable (but deletes everything else that 'make clean' does).  (gs.mak)
6574
6575Changes the link list generator so it eliminates duplicate library requests.
6576(genconf.c)
6577
6578Factors the interpreter further so as to include less unnecessary PostScript
6579support in the PDF interpreter.  (gs.mak, zpath.c, zpath1.c)
6580
6581Adds a printout of the available language interpreters to the -h message.
6582(genconf.c, gs.c, iinit.c, gs.mak)
6583
6584</pre><h3><a name="V3.24_Drivers"></a>Drivers</h3><pre>
6585
6586Fixes bugs:
6587	- The alternate X drivers used a cast in an initializer, causing a
6588compilation error on some platforms.  (gdevxalt.c)
6589
6590Adds a driver for the LaserJet IIID, including duplex printing if specified by
6591the Duplex page device parameter.  (gdevdjet.c)
6592
6593Adds Orientation to the bit device.  (gdevbit.c)
6594
6595</pre><h3><a name="V3.24_Platforms"></a>Platforms</h3><pre>
6596
6597Fixes bugs:
6598	- There was an extraneous pfen-&gt; in the NT file system module, causing
6599a compilation error.  (gp_ntfs.c)
6600	- The DLL code referred to an obsolete symbol a_foreign.  (gsdll.c)
6601	- The VMS build scripts omitted the LaserJet 4 driver.  (vms-*.mak)
6602	- The VMS build scripts had several other minor errors.  (vms.mak)
6603
6604</pre><h3><a name="V3.24_Fonts"></a>Fonts</h3><pre>
6605
6606Fixes bugs:
6607	- Defining a font alias in global VM with a name that was a string in
6608local VM caused an error.  (gs_fonts.ps)
6609	- The font compiler referred to an obsolete symbol a_foreign.
6610(font2c.ps)
6611
6612</pre><h3><a name="V3.24_Interpreter"></a>Interpreter</h3><pre>
6613
6614Fixes bugs:
6615	- There was an extraneous '#' before an extern declaration.
6616(gsmain.c)
6617	- The interpreter could (incorrectly) attempt to expand the e-stack.
6618(istack.h, interp.c, istack.c)
6619	- zfproc.c called memcpy but didn't include memory_.h.  (zfproc.c)
6620	- A garbage collection occurring within a 'save' would often smash
6621memory.  (igc.c)
6622	- If the last character returned by the procedure of a procedure-based
6623filter was \r, readline could get an endless loop.  (zfileio.c)
6624	- Saving a change to a ref member of a structure confused the garbage
6625collector.  (isave.h, isave.c, zdict.c)
6626	- The -Zu debugging printout could cause an access error under rare
6627circumstances.  (isave.c)
6628	- Save objects could get allocated in global VM, causing dangling
6629references.  (zvmem.c)
6630	- The vmsave object created by the interpreter for a save didn't get
6631freed properly if the memory manager created an invisible save level, which
6632could cause the next garbage collection to crash.  (zvmem.c)
6633	- 'run' always printed an error message, rather than letting the
6634top-level control loop do it.  (gs.c, gs_init.ps)
6635
6636Adds support for duplex devices.  (gxdevice.h, gsdparam.c, gs_statd.ps,
6637gs_setpd.ps)
6638
6639Adds the beginnings of support for CID-keyed fonts.  (gs_cidfn.ps)
6640
6641Changes the format of the stack dump printed for errors, to make it easier to
6642read.  (gs_init.ps)
6643
6644</pre><h3><a name="V3.24_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
6645
6646Fixes bugs:
6647	- The .local/global allocation operators always allocated in system
6648VM.  (zsysvm.c)
6649	- setpage[params] caused an error.  (gs_lev2.ps)
6650	- If an error occurred during a cshow or (x|y|xy)show, the interpreter
6651freed the enumerator twice.  (zchar.c, zchar2.c)
6652
6653Changes setpageparams so that orientation = 0 means portrait.  This is not
6654compatible with AGFA's convention for roll-feed devices, but it is compatible
6655with the more common cut-sheet printers.  (gs_statd.ps)
6656
6657Adds meaningful values for the Emulator resource.  (gsmain.c, gs_res.ps)
6658
6659Makes -Z? validate the state of memory before and after save and restore.
6660(ialloc.h, igc.h, ialloc.c, igc.c, ilocate.c, zvmem.c)
6661
6662</pre><h3><a name="V3.24_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
6663
6664Fixes bugs:
6665	- The Unix install script didn't install the PDF files if they were
6666present.  (unix-end.mak)
6667	- PDF to PostScript conversion didn't work at all.  (It still doesn't
6668work very well.)  (pdf_2ps.ps, pdf_main.ps)
6669	- Images with an Indexed color space and no Decode entry caused an
6670error.  (pdf_draw.ps)
6671	- The 'Page &lt;n&gt;' messages were printed even if QUIET was set.
6672(pdf_main.ps)
6673
6674Changes the interpreter so that when it encounters an unknown operator, it
6675prints an error message and continues, rather than signalling an error.
6676(pdf_base.ps)
6677
6678Makes F a synonym for f if there is nothing on the operand stack, to
6679compensate for a bug in some Adobe software.  (pdf_base.ps)
6680
6681Changes pdfgetpage so it uses 1-origin rather than 0-origin indexing.  THIS IS
6682A NON-BACKWARD-COMPATIBLE CHANGE.  (pdf_main.ps)
6683
6684</pre><h3><a name="V3.24_Streams"></a>Streams</h3><pre>
6685
6686Fixes bugs:
6687	- The Group 3 2-D and Group 4 encoders produced incorrect output if a
6688scan line beginning with a black pixel was followed by a scan line beginning
6689with a white pixel.  (scfe.c)
6690	- A SubFileDecode filter with a count of 1 and a non-empty EOD string
6691would smash memory.  (sfilter1.c)
6692
6693Updates the DCT filters so they will work with the latest version (5a) of the
6694IJG library.  (*.mak, jpeg.mak, sjpegerr.c)
6695
6696</pre><h3><a name="V3.24_Library"></a>Library</h3><pre>
6697
6698Fixes bugs:
6699	- A call with integer parameters to a procedure with floating point
6700arguments didn't work on non-ANSI compilers.  (gsimage.c)
6701	- Arcs could get turned into polygons if the scaling values in the CTM
6702were very large and the radius was (in user space coordinates) very small.
6703(gspath.c)
6704	- The current point was defined when a BuildChar procedure was called.
6705(This bug was documented as fixed in version 2.2!)  (gschar.c)
6706
6707Adds support for Orientation and Duplex page device parameters, for those
6708devices that support these.  (gdevprn.h, gxdevice.h, gsdevice.c, gsdparam.c)
6709
6710</pre>
6711
6712<h2><a name="Version3.23"></a>Version 3.23 (beta) (1/5/95)</h2>
6713
6714<p>
6715This is almost entirely a bug fix release.  It also includes a largely working
6716PDF reader.  This is intended as the beta test release for the next public
6717release.
6718
6719<h3><a name="V3.23_Documentation"></a>Documentation</h3><pre>
6720Fixes bugs:
6721	- COPYLEFT, COPYING, NEWS, PUBLIC, README, and the standard Fontmap
6722were omitted from the 3.22 fileset.
6723
6724Documents the use of the -oldc switch to work around a compiler crash on
6725the DECstation.
6726
6727Expands and clarifies the documentation for building the DesqView/X version
6728with djgcc.  (make.doc)
6729
6730Adds documentation on the "600x300" H-P inkjet printers, explaining why
6731this alleged higher resolution is not available.  (devices.doc)
6732
6733Adds to the PUBLIC license a warning that it is not a GNU License, and a
6734requirement to include a copy of or a pointer to the License in any written
6735material.  (PUBLIC)
6736
6737Documents the fact that Ghostscript *does* attempt to look up files in the
6738current directory first.  (use.doc)
6739
6740</pre><h3><a name="V3.23_Procedures"></a>Procedures</h3><pre>
6741
6742Fixes bugs:
6743	- In VMS.MAK, .JPEG should have been changed to .JPEG-5 in a few
6744places.  (vms.mak)
6745
6746Adds the pjxl300 driver to all configurations that include the other color
6747DeskJet drivers.  Replaces pjet and pjetxl with pj and pjxl.  (*.mak)
6748
6749Makes 'run' recognize PDF files if the PDF reader is included.
6750(pdf_main.ps)
6751
6752</pre><h3><a name="V3.23_Utilities"></a>Utilities</h3><pre>
6753
6754Fixes bugs:
6755	- viewjpeg.ps needed the test for languagelevel = 2 at the
6756beginning of the file.  (viewjpeg.ps)
6757	- prfont.ps used 'min', which isn't a standard PostScript operator.
6758(prfont.ps)
6759	- prfont.ps created Encoding vectors that weren't 256 elements
6760long.  (prfont.ps)
6761
6762Adds the gsdj500 script to the installation list.  (unix-end.mak)
6763
6764Changes the Unix "line printer" shell scripts to add the date to the page
6765header.  (gsbj, gsdj, gsdj500, gslj)
6766
6767Changes ansi2knr so that it will work properly on systems where the ctype
6768macros don't handle 8-bit characters correctly.  (ansi2knr.c)
6769
6770</pre><h3><a name="V3.23_Drivers"></a>Drivers</h3><pre>
6771
6772Fixes bugs:
6773	- Some compilers don't allow casts in initialization expressions.
6774(gdevx.c, gdevxalt.c)
6775	- The cdj drivers didn't initialize the color_info structure
6776properly.  (gdevcdj.c)
6777
6778Adds another alternate X Windows driver, x11mono, that is a black-and-white
6779device.  (devs.mak, gdevxalt.c)
6780
6781Adds a user-contributed driver for the Apple Imagewriter LQ.  (devs.mak,
6782gdevadmp.c)
6783
6784</pre><h3><a name="V3.23_Platforms"></a>Platforms</h3><pre>
6785
6786Fixes bugs:
6787	- The VMS MODULES.LIS file had gotten out of sync with the makefile
6788(again); GDEVABUF and GSBITOPS were missing.  (modules.lis)
6789	- The VMS script file had gotten out of sync with the makefile
6790(again).  (vms.mak)
6791	- The MS Windows platform code didn't recognize Windows 95 (Windows
67924.0) as equivalent to Windows NT.  (gp_mswin.c)
6793	- File name enumeration didn't work on OS/2 or win32.  (gp_ntfs.c,
6794gp_os2.c)
6795	- -sOutputFile= didn't work under MS Windows.  (gp_mswin.c)
6796
6797Changes the SCO Unix direct frame buffer driver so it generates in-line
6798instructions to access the frame buffer, for a dramatic speed improvement.
6799(gdevpcfb.h, gdevsco.c)
6800
6801</pre><h3><a name="V3.23_Fonts"></a>Fonts</h3><pre>
6802
6803Fixes bugs:
6804	- If a font couldn't be found in the Fontmap, a recursion loop
6805sometimes occurred.  (gs_fonts.ps)
6806	- Aliases for global fonts weren't automatically created as global,
6807possibly leading to a recursion loop.  (gs_dps1.ps, gs_fonts.ps)
6808	- If a font was loaded into global VM within an inner save, the restore
6809deleted it from FontDirectory but not from SharedFontDirectory, causing a
6810possible recursion loop.  (gs_dps1.ps, gs_fonts.ps, idict.h, idict.c, zdict.c)
6811
6812Further improves the algorithm for substituting for unknown fonts.
6813(gs_fonts.ps)
6814
6815</pre><h3><a name="V3.23_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
6816
6817Fixes bugs:
6818	- zcontrol.c had an assignment of const char * to const byte *,
6819which some compilers don't like.  (zcontrol.c)
6820	- Setting an Indexed color space based on a CIE space caused an
6821attempt to free a random block of memory.  (zcsindex.c)
6822	- Some compilers don't like mixing conditionals and casts in
6823initialization expressions.  (iref.h)
6824	- Some calculations of table sizes for string garbage collection
6825didn't work if sizeof(long) != 4, leading to smashed strings.  (iastate.h,
6826ialloc.c, igcstr.c)
6827	- Strings longer than about 7000 bytes smashed their chunk header
6828and confused the garbage collector.  (ialloc.c)
6829	- Some compilers needed iccfont.c to include strimpl.h.
6830(iccfont.c)
6831	- The obsolete file zcspace2.c was still included in the fileset.
6832	- If the command line included any @-files that required searching
6833the library path, a limitcheck would occur.  (zfile.c)
6834	- The insideness testing operators caused a memory access error,
6835because the procedure vector hadn't been updated to provide a default
6836get_alpha_bits procedure.  (zupath.c)
6837	- gcheck didn't check for stack underflow.  (zvmem2.c)
6838	- cleardictstack could fail to clear the dictionary stack if the
6839stack had overflowed into additional blocks.  (zdict.c)
6840	- If the '-' switch was selected, resources weren't released
6841properly on exit.  (gs.c)
6842	- Setting a Pattern color space based on a CIE space caused an
6843invalid memory access.  (zcsindex.c)
6844	- The garbage collector didn't treat refs properly on machines with
6845short ints.  (igcref.c)
6846	- Operators with more than 16 arguments could break the
6847interpreter.  (interp.h, iinit.c, interp.c)
6848	- save/restore didn't restore the setting of the current allocator
6849VM (local/global).  (isstate.h, isave.c)
6850	- stdpre.h declared exit as an extern, instead of letting gsmain.c
6851declare it.  (stdpre.h, gsmain.c)
6852	- gs.c used fputs to print help messages rather than fprintf.
6853(gs.c)
6854	- Interrupts failed to re-execute the operation that was
6855interrupted.  (interp.c)
6856	- Low-resolution CMYK devices didn't use separate screens for each
6857color plane as the default.  (gs_init.ps)
6858	- filterdict wasn't getting undef'ed at the end of initialization.
6859(gs_init.ps)
6860	- gstate operations were broken (bug introduced in 3.02).
6861(zdevice2.c)
6862	- resourceforall didn't remove the resource dictionary from the
6863dictionary stack when calling the client-supplied procedure.  (gs_res.ps)
6864	- currentcolor with an Indexed color space returned a real rather
6865than an integer.  (zcolor2.c)
6866	- setshared / setglobal left the stack in an unobvious state if
6867they were given a non-Boolean argument.  (gs_dps1.ps)
6868	- sethalftone followed by currenthalftone returned an invalid value.
6869(zht2.c)
6870	- Empty strings produced spurious garbage collector error messages.
6871(gsstruct.h, scommon.h, igc.c, igcstr.c, iname.c)
6872	- The garbage collector didn't trace Separation color spaces properly.
6873(gscsepr.c)
6874
6875Changes defineresource so that it does not, by default, make instances
6876read-only.  (gs_res.ps)
6877
6878Adds .{local,global}{array,dict,packedarray,string} operators for creating
6879objects in a specific VM space.  (zsysvm.c, gs_dps1.ps)
6880
6881Adds definitions of setpage and setpageparams to statusdict.  (gs_setpd.ps,
6882gs_statd.ps)
6883
6884Alleviates some performance problems in the garbage collector.  (igc.c)
6885
6886</pre><h3><a name="V3.23_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
6887
6888Fixes bugs:
6889	- PDF files that used filters with parameters caused a typecheck
6890error because the arguments to 'filter' were reversed.  (pdf_base.ps)
6891	- The (undocumented) PDF 1.1 ability to specify link and annotation
6892destinations indirectly was not supported.  (pdf_main.ps)
6893	- The (undocumented) PDF ability to specify a null page in a link
6894destination was not supported.  (pdf_main.ps)
6895	- The PDF encodings weren't loaded properly in a system with both
6896PS Level 2 and PDF features.  (gs_res.ps, gs_init.ps)
6897	- If the next line after a stream keyword was blank, the line
6898wasn't skipped, which matters for binary data.  (pdf_base.ps)
6899	- A Q operator with no matching q operator caused an error.
6900(pdf_draw.ps)
6901	- The text position wasn't preserved across a fill or stroke
6902operator.  (gs_pdf.ps, pdf_draw.ps)
6903	- Embedded Type 3 fonts didn't work.  (pdf_base.ps, pdf_draw.ps,
6904pdf_main.ps)
6905	- Masked images with no Decode value had their polarity inverted.
6906(pdf_draw.ps)
6907	- Embedded Type 1 fonts referenced from within a stream didn't
6908work.  (pdf_font.ps)
6909
6910Changes the PDF code so that it automatically recognizes PDF files as such.
6911(pdf_main.ps)
6912
6913Splits out the PixelDifference filters as a separate "feature".  (gs.mak)
6914
6915</pre><h3><a name="V3.23_Streams"></a>Streams</h3><pre>
6916
6917Fixes bugs:
6918	- Closing the primary input stream caused an invalid memory access.
6919(stream.c)
6920	- Increasing the size of a buffer within a save resulted in a
6921dangling reference after the restore.  (files.h, sfilter.h, zfile.c,
6922zfilter.c)
6923	- The garbage collector didn't properly trace streams that referenced
6924strings directly.  (stream.h, stream.c, ziodev.c)
6925
6926</pre><h3><a name="V3.23_Library"></a>Library</h3><pre>
6927
6928Fixes bugs:
6929	- An extraneous \ upset some compilers.  (gdevabuf.c)
6930	- Uncolored Patterns that completely filled their bounding box
6931caused an invalid memory access.  (gspcolor.c)
6932	- If a color image required clipping, black or white pixels might
6933be rendered with incorrect (random) colors.  (gxcpath.c)
6934	- Reference counts for color spaces were sometimes set too high, so
6935they would only be freed by restore or garbage collection.  (gscolor.c)
6936	- The character cache could get confused if the Encoding for the
6937character wasn't a name.  (gschar.c)
6938	- Character outlines were always rendered with flatness = 0,
6939causing very bad performance for large characters.  (gzstate.h, gschar.c,
6940gsimage.c, gxfill.c, gxstroke.c)
6941	- If a device (presumably uninitialized) had a
6942color_info.num_components of zero, an invalid memory access could occur.
6943(gsdparam.c)
6944	- Intersecting clipping paths that are not both rectangular didn't
6945properly set the outer box of new clipping path, leading to unnecessary
6946computation.  (gxcpath.h, gxacpath.c, gxcpath.c)
6947	- A call passed false instead of NULL.  (gschar.c)
6948	- On machines where sizeof returns a long, genarch.c failed.
6949(genarch.c)
6950	- xfonts were consulted, incorrectly, even for stroked characters.
6951(gxccman.c)
6952	- gstate/currentgstate/setgstate didn't work properly.  (gsline.c,
6953gsstate.c)
6954	- On CMYK devices needing halftoning, colors with C = M = Y were
6955always converted to gray shades.  (gxcmap.c)
6956	- Isolated horizontal lines, or the horizontal edges of rectangles,
6957could get drawn with one or both end pixels missing.  (gxfill.c)
6958
6959Changes the character cache back so it oversamples characters at small
6960sizes.  (gschar.c)
6961
6962Changes all occurrences of (void)x to discard(x), and defines discard in
6963stdpre.h as a cast to void, to make it possible to pacify compilers that
6964don't accept this construct for some kinds of x.  (gpcheck.h, stdpre.h,
6965store.h, gdevmswn.c, gp_mswin.c, gscoord.c, gxclread.c, igc.c, sfile.c,
6966sfileno.c, zcie.c, zht2.c, ziodev.c, zmisc1.c)
6967
6968Increases the size of the halftone cache on large-memory machines from 35K
6969to 100K.  This substantially improves halftoning performance at higher
6970resolutions.  (gxht.c)
6971
6972</pre>
6973
6974<h2><a name="Version3.22"></a>Version 3.22 (beta) (11/30/94)</h2>
6975
6976<p>
6977This is primarily a bug fix release.  It also includes limited anti-aliased
6978graphics capability.  This release was not distributed to the public.
6979
6980<h3><a name="V3.22_Procedures"></a>Procedures</h3><pre>
6981
6982Fixes bugs:
6983	- The definition of ghost_h was misplaced, so changes in it or its
6984antecedents didn't force recompilation of its dependents.  (gs.mak)
6985
6986Actually implements the -Z+ switch, for forcing small stack blocks.
6987(interp.c)
6988
6989Makes the -dSAFER switch disable the %pipe syntax for file names, even for
6990reading.  (gs_init.ps)
6991
6992</pre><h3><a name="V3.22_Drivers"></a>Drivers</h3><pre>
6993
6994Fixes bugs:
6995	- The dfax drivers incorrectly set EncodedByteAlign to false.
6996(gdevdfax.c)
6997	- softwareValue and dateTimeValue were declared as byte rather than
6998char.  (gdevtfax.c)
6999
7000</pre><h3><a name="V3.22_Platforms"></a>Platforms</h3><pre>
7001
7002Fixes bugs:
7003	- The VMS DEC C compilers declare delete in unixio.h, and doesn't
7004declare unlink anywhere.  (stdio_.h)
7005	- The VMS compilers declare malloc and free in stdlib.h, which
7006wasn't being included in malloc_.h.  (malloc_.h)
7007	- The SCO Unix C compiler needs both &lt;sys/time.h&gt; and &lt;time.h&gt;.
7008(time_.h)
7009	- The VMS compilers declare abs in stdlib.h, which wasn't being
7010included anywhere.  (gshtscr.c)
7011	- The definition for A4 paper in VMS-AXP.MAK was incorrect.
7012(vms-axp.mak)
7013
7014Renames VMS-AXP.MAK as VMS-DECC.MAK, with some changes that make it
7015appropriate for DEC C on both VAX and AXP platforms.  (vms-axp.mak =&gt;
7016vms.decc.mak)
7017
7018</pre><h3><a name="V3.22_Fonts"></a>Fonts</h3><pre>
7019
7020Fixes bugs:
7021	- gs_kanji.ps got an invalidaccess error.  (gs_kanji.ps)
7022
7023</pre><h3><a name="V3.22_Interpreter"></a>Interpreter</h3><pre>
7024
7025Fixes bugs:
7026	- An off-by-1 test in the roll operator caused it to smash the
7027stack if the operand stack had overflowed into additional blocks.
7028(zstack.c)
7029	- The default CIE color rendering dictionary didn't assume a
7030reasonable intermediate (XYZ) space.  (gs_lev2.ps)
7031	- CIE color mapping tables weren't traced properly by the garbage
7032collector.  (gscie.h, gscie.c, zcie.c)
7033	- If the very last character of a file was a ^M, the scanner
7034(incorrectly) signaled a syntaxerror.  (iscan.c)
7035	- If an operator could return both a typecheck and a
7036stackunderflow, it always returned a stackunderflow, which doesn't match
7037the behavior of Adobe interpreters.  (opcheck.h, idparam.c, interp.c,
7038iutil.c, z*.c)
7039	- astore, dictstack, and execstack could return a spurious
7040invalidaccess error (or fail to detect an invalid access) if the operand
7041stack had overflowed into additional blocks.  (istack.c)
7042	- The garbage collector didn't relocate pointers to names!  (Bug
7043introduced in 3.20.)  (iname.h)
7044	- If the dictionary stack overflowed into additional blocks, the
7045cached value pointer for a name could get set incorrectly, and also not get
7046relocated by the garbage collector.  (idict.c)
7047	- If the dictionary stack overflowed into additional blocks, the
7048post-GC fixup of cached value pointers in names could cause an addressing
7049error.  (igc.c)
7050	- With the -Z? switch set, the garbage collector could incorrectly
7051report that objects or strings weren't in any chunk.  (igc.c)
7052	- &lt;&lt; /a 1 /a 2 &gt;&gt; /a get gave the value 2 rather than 1.
7053(gs_init.ps)
7054	- Numbers in binary object sequences and encoded number arrays
7055didn't work properly on machines where sizeof(short) != 2 or sizeof(long)
7056!= 4.  (ibnum.c)
7057	- The put operator for dictionaries allowed null as a key.
7058(idict.h, idict.c)
7059	- &gt;&gt; didn't give an error if there were an odd number of values on
7060the stack above the next mark.  (gs_init.ps)
7061	- Operations that explicitly freed ref objects (setting a CIE
7062colorspace, resizing a dictionary, popping a block off a stack) could
7063corrupt storage.  (ialloc.c)
7064	- The -Z@ switch, which fills freed blocks with a recognizable bit
7065pattern, could incorrectly overwrite freed blocks in previous save levels,
7066causing invalid memory accesses.  (ialloc.c)
7067	- Since streams freed by a restore weren't marked as free, they
7068could confuse the garbage collector and lead to invalid memory accesses.
7069(zfile.c)
7070	- If one of the built-in dictionaries overflowed during
7071initialization, no error was reported -- entries were simply discarded.
7072(iinit.c)
7073	- If the level2.dev feature was combined with certain other
7074features, the current languagelevel was 2 when some gs_*.ps files were
7075loaded, causing them to load incorrectly.  (gs_btokn.ps, gs_setpd.ps)
7076	- If readline read a line that ended with only a CR (no LF)
7077followed by an end-of-file, it incorrectly closed the stream.  (zfileio.c)
7078
7079Adds a .cond operator, similar to the Lisp multi-arm conditional.
7080(zcontrol.c)
7081
7082Adds a .makeglobaloperator operator, allowing the definition of operator
7083procedures in local VM that turn into global operators, provided the save
7084level is zero.  (iref.h, opdef.h, iinit.c, interp.c, zmisc.c)
7085
7086Note: the fix for returning typecheck vs. stackunderflow requires that all
7087operators (or other code) that uses return_error(e_typecheck) to indicate
7088an incorrect object type on the operand stack must change this to
7089return_op_typecheck(op), where op points to the operand.  THIS IS A
7090NON-BACKWARD-COMPATIBLE CHANGE.
7091
7092Implements string array and name array parameters for parameter lists.
7093(gsparam.h, iparam.c)
7094
7095Brings filterdict inside the INITIAL_DICTIONARIES conditional.  (iinit.c)
7096
7097Adds a .currentscreenlevels operator that returns the number of
7098distinguishable halftone levels.  (zht.c)
7099
7100</pre><h3><a name="V3.22_Streams"></a>Streams</h3><pre>
7101
7102Fixes bugs:
7103	- The 2-D case of CCITTFaxDecode could get confused by an input
7104data buffer boundary that fell immediately after a horizontal code.
7105(scfd.c)
7106	- The LZW decoder didn't detect invalid data unless DEBUG was
7107selected at build time.  (slzwd.c)
7108
7109</pre><h3><a name="V3.22_Library"></a>Library</h3><pre>
7110
7111Fixes bugs:
7112	- The clipping region accumulator could refer to a clipping
7113rectangle even after it had been freed.  (No effect on execution unless the
7114-Z@ switch was selected.)  (gxacpath.c)
7115	- setbbox expanded the bounding box, but didn't place a limit on
7116further path elements, if the current path wasn't empty.  (gsdps1.c)
7117	- setbbox didn't make sufficient allowance for rounding.
7118(gsdps1.c)
7119
7120Implements the ProcessColorModel parameter (read-only) for all devices.
7121(gsdparam.c)
7122
7123Adds a gs_currentscreenlevels procedure that returns the number of
7124distinguishable halftone levels.  (gsht.c)
7125
7126</pre>
7127
7128<h2><a name="Version3.21"></a>Version 3.21 (beta) (11/17/94)</h2>
7129
7130<p>
7131This is primarily a bug fix release.  It also includes a substantial
7132improvement in the Type 1 font hinting algorithms.  This release was not
7133distributed to the public.
7134
7135<h3><a name="V3.21_Documentation"></a>Documentation</h3><pre>
7136Fixes bugs:
7137	- The `man' page referred to gnu.ghostscript.bug rather than
7138comp.lang.postscript.  (gs.1)
7139
7140Documents the special entries in operator definition tables that allow
7141switching dictionaries.  (opdef.h)
7142
7143</pre><h3><a name="V3.21_Procedures"></a>Procedures</h3><pre>
7144
7145Moves the definition of JSRCDIR to the individual platform makefiles, to
7146make it easier to change on platforms that don't have file links.  (*.mak)
7147
7148</pre><h3><a name="V3.21_Utilities"></a>Utilities</h3><pre>
7149
7150Fixes bugs:
7151	- ansi2knr didn't recognize that a line ending with } couldn't be a
7152function definition.  (ansi2knr.c)
7153	- ps2epsi always returned an empty bounding box.  (ps2epsi,
7154ps2epsi.bat)
7155
7156</pre><h3><a name="V3.21_Drivers"></a>Drivers</h3><pre>
7157
7158Fixes bugs:
7159	- The bitrgb device had an invalid depth of 3.  (gdevbit.c)
7160
7161Replaces the color mapping code in the X driver with a much faster
7162algorithm, courtesy of Tim Theisen.  (gdevx.h, gdevx.c, gdevxini.c)
7163
7164</pre><h3><a name="V3.21_Platforms"></a>Platforms</h3><pre>
7165
7166Fixes bugs:
7167	- Two variable names were misspelled.  (gdevpm.c, gp_mswin.c)
7168	- It wasn't possible to compile a non-DLL configuration under OS/2.
7169(os2.mak)
7170	- Compilation under Microsoft C/C++ 8.0 gave errors.  (gp_mswin.h,
7171gp_mswin.c, gshtscr.c)
7172
7173Adds some more devices to the OS/2 makefile.  (os2.mak)
7174
7175</pre><h3><a name="V3.21_Fonts"></a>Fonts</h3><pre>
7176
7177Fixes bugs:
7178	- wrfont.ps, and hence bdftops, didn't write out the FontType or
7179PaintType.  (Bug introduced since 2.6.1)  (wrfont.ps)
7180	- wrfont.ps omitted a 'begin' and 'end', causing -! or -| to be
7181undefined when the font was loaded.  (Bug introduced since 2.6.1)
7182(wrfont.ps)
7183
7184</pre><h3><a name="V3.21_Interpreter"></a>Interpreter</h3><pre>
7185
7186Fixes bugs:
7187	- make_tasv_old called make_tasv_new with extra arguments.
7188(store.h)
7189	- currentcacheparams only returned 2 values instead of 3.
7190(zfont.c)
7191	- ustroke popped one element too many off the stack if a matrix was
7192supplied.  (zupath.c)
7193	- inu[eo]fill popped one element too many off the stack.
7194(zupath.c)
7195	- The color rendering dictionary was initialized to null rather
7196than a valid dictionary.  (gs_lev2.ps)
7197	- An invalid IODevice resource named "9" got created.  (gs_res.ps)
7198	- bytesavailable often caused an error rather than returning -1.
7199(zfileio.c, stream.c)
7200	- The insideness testing operators always returned true if the
7201aperture was defined by a user path rather than a point.  (zupath.c)
7202	- If INITIAL_DICTIONARIES was defined in the makefile, the
7203definition of the initial_dictionaries array was missing a comma.
7204(iinit.c)
7205	- Even if userdict appeared in INITIAL_DICTIONARIES, gs_init.ps set
7206its maxlength to 200.  (gs_init.ps)
7207	- Setting a CIE color space left a garbage value on the stack.
7208(zcie.c)
7209	- If a file or filter was opened and then closed, opening a file
7210subsequently within a 'save' could lead to a memory access error in the
7211garbage collector.  (zfile.c)
7212	- Setting an Indexed or Separation color space could cause a crash
7213either in the garbage collector or when printing out the e-stack.
7214(icsmap.h, zcsindex.c, zcssepr.c)
7215	- Invoking a filter with an invalid data source or sink could cause
7216a memory access error (bug introduced in 3.20).  (zfilter.c)
7217	- Invoking stringwidth on a font whose BuildChar procedure did a
7218save could cause a memory manager error or infinite loop, because
7219stringwidth attempted to use an inapplicable shortcut.  (gschar.c)
7220	- The bounding box for rendering stroked Type 1 characters didn't
7221take square caps and miter joins into account.  (gs_type1.ps)
7222	- Invoking filter with DCTDecode or DCTEncode could cause an
7223addressing error if no dictionary argument was supplied.  (zfdctd.c,
7224zfdcte.c)
7225	- The Generic resource, the Font resource, and half a dozen
7226resources with no predefined instances all shared the same Instances
7227dictionary.  (gs_res.ps)
7228	- The temporary null device allocated for stringwidth was never
7229freed.  (gschar.h, gschar.c, zchar.c)
7230	- Internal operators, and structures that might be freed on stack
7231unwinding, could "escape" from the e-stack.  (zcontrol.c, ztype.c)
7232	- makefont and scalefont didn't properly handle a font whose
7233Encoding had been changed.  (bfont.h, zfont.c, zfont2.c)
7234	- Type 1 fonts with PaintType = 2 incorrectly checked for an xfont.
7235(gxfont.h, gschar.c, gsfont.c, zchar1.c, zfont1.c, zfont2.c)
7236	- Specifying a string argument with -d...=(...) or -d...=&lt;...&gt;
7237would cause an invalidaccess error.  (gs.c)
7238	- The environment for encapsulated jobs didn't rebind quit to stop
7239in userdict.  (gs_lev2.ps)
7240	- restore didn't deal properly with open files on the e-stack.
7241(zvmem.c)
7242	- Even with the '-' switch, Ghostscript would try to read ahead in
7243the input stream rather than processing input character-by-character.
7244(ziodev.c)
7245	- If an error occurred with a unreadable dictionary on any stack,
7246the standard error printer would get into an error loop and exit the
7247interpreter.  (gs_init.ps)
7248	- The for_roots macro in igc.c used ap rather than mem as its
7249second formal parameter.  (This typo had no effect on the executable
7250program.)  (igc.c)
7251	- If saving the stacks for an error caused a GC request, a value
7252could get stored into an improper variable on the C stack, causing havoc.
7253(interp.c)
7254	- setdash checked to make sure that the distance array had read
7255access; Adobe interpreters don't check this.  (zgstate.c)
7256	- The roots for gs_run_string and gs_interpret weren't registered
7257properly, which could cause a dangling reference in the case of a restore
7258whose save had been done earlier.  (gsmain.c, interp.c)
7259
7260Adds an OpenOutputFile Boolean device parameter for printer devices; if
7261true, the device opens the OutputFile at the time the device is opened,
7262instead of waiting for the first showpage.  This helps with synchronization
7263when the OutputFile is a pipe.  (gdevprn.h, gdevprn.c)
7264
7265Changes the BEGIN/END_OP_DEFS macros to require an explicit { and } at each
7266use.  (gsmain.c, interp.c, z*.c)
7267
7268Arranges things so that the operators that the interpreter handles
7269specially are assigned the first N operator indices [internal change only].
7270(interp.h, iinit.c, interp.c)
7271
7272Changes the operators max and min to .max and .min, to avoid conflicts with
7273PostScript programs that use these names for variables and also use 'bind'.
7274THIS IS A NON-BACKWARD-COMPATIBLE CHANGE from programs that depend on
7275'bind' binding in these operators; however, we have also defined procedures
7276max and min that just call the operators, which should take care of any
7277ordinary code.  (*.ps, zrelbit.c)
7278
7279</pre><h3><a name="V3.21_Streams"></a>Streams</h3><pre>
7280
7281Fixes bugs:
7282	- The pfb_state pointer in the eexecDecode filter state wasn't
7283marked as traceable for the garbage collector.  (sfilter.h)
7284	- The eexec decoding filter could access invalid memory or return
7285garbage under some conditions.  (Bug introduced in 3.12.)  (zmisc1.c)
7286	- The eexec decoding filter would incorrectly ask for more input if
7287the output buffer was full.  (seexec.c)
7288
7289</pre><h3><a name="V3.21_Library"></a>Library</h3><pre>
7290
7291Fixes bugs:
7292	- Some compilers reserve the word 'try'.  (gshtscr.c)
7293	- Some compilers don't like line continuations (\) within a
7294preprocessor macro formal parameter list.  (gdevprn.h, gxdevice.h)
7295	- Memory devices created with an inverted palette (0=white,
72961=black) interchanged white and black in fill operations.  (gdevmem1.c)
7297	- The 'bits' variable in mem_mono_copy_mono was unused on
7298little-endian machines.  (gdevmem1.c)
7299	- Some garbage collector procedures were declared 'private'
7300inconsistently.  (gscie.c)
7301	- The new anti-aliased text capability accidentally caused all
7302characters to be oversampled.  (gschar.c)
7303	- Type 1 fonts with PaintType = 2 and StrokeWidth = 0 came out with
7304many pixels missing because of oversampling.  (gschar.c)
7305	- Type 1 font stem hints were not being processed correctly.
7306(gstype1.h, gxtype1.h, gstype1.c, gxhint2.c, gxhint3.c, gxpath.c)
7307	- The tracing message for 9/7 composite fonts incorrectly
7308identified them as 1/7 fonts.  (gschar0.c)
7309	- If a 1/7 or 9/7 composite font was a child of a non-modal font,
7310the font number of the child font was computed incorrectly.  (gschar0.c)
7311
7312Splits up the various memory devices into one file per depth [internal
7313change only].  (gdevm*.c)
7314
7315</pre>
7316
7317<h2><a name="Version3.20"></a>Version 3.20 (beta) (10/31/94)</h2>
7318
7319<p>
7320This version contains some support for a PDF interpreter; however, the PDF
7321code itself is not ready for release yet.  It also includes anti-aliased text
7322capability.  This release was not distributed to the public.
7323
7324<h3><a name="V3.20_Documentation"></a>Documentation</h3><pre>
7325Notes that the FAQ has moved to smallo.ruhr.de:pub/ghost/gs.faq.  (readme)
7326
7327Documents various implementation limits.  (language.doc)
7328
7329</pre><h3><a name="V3.20_Procedures"></a>Procedures</h3><pre>
7330
7331Fixes bugs:
7332	- bcp.dev wasn't included in the list of dependencies for
7333level1.dev.  (gs.mak)
7334
7335Changes the printout of version numbers so that it is always A.BC,
7336rather than A.B if C is zero.  (gs.c, gs_init.ps)
7337
7338</pre><h3><a name="V3.20_Utilities"></a>Utilities</h3><pre>
7339
7340Fixes bugs:
7341	- font2c didn't correctly handle Metrics or Metrics2 dictionaries
7342whose entries were arrays rather than scalars.  (font2c.ps, ccfont.h,
7343iccfont.c)
7344	- font2c didn't handle CDevProc.  (font2c.ps, ccfont.h, iccfont.c)
7345	- genconf could get a stack overflow on small machines.
7346(genconf.c)
7347
7348Changes mergeini.ps so it can take arguments on the command line specifying
7349the input and output files.  (mergeini.ps)
7350
7351Adds a gsdj500 shell script to parallel gsdj500.bat.  (gsdj500)
7352
7353</pre><h3><a name="V3.20_Drivers"></a>Drivers</h3><pre>
7354
7355Fixes bugs:
7356	- The X driver didn't mask dynamically assigned colors properly, so
7357it could request the same color over and over again.  (gdevx.c)
7358
7359Adds two alternate X Windows drivers, for helping debug drivers with other
7360color models:
7361	- x11alpha, an RGB device with 4-bit alpha capability (for
7362	  copy_alpha only);
7363	- x11cmyk, a 1-bit-per-component CMYK device.
7364(devs.mak, gdevxalt.c)
7365
7366Changes the left margin of the lj4dith driver to 0.26".  (gdevcdj.c)
7367
7368</pre><h3><a name="V3.20_Platforms"></a>Platforms</h3><pre>
7369
7370Fixes bugs:
7371	- If &lt;sys/time.h&gt; didn't exist, time_.h didn't always include
7372&lt;time.h&gt;.  (time_.h)
7373	- The OS/2 platform wouldn't compile.  (gdevpm.c)
7374	- The auxiliary VMS command files sometimes got blank lines
7375inserted when going through EOL conversion.  (vms.mak; delete gs_.com)
7376	- The VMS makefiles didn't include the Level 1 operators in
7377level1.dev.  (vms.mak)
7378	- The VMS gcc makefile didn't handle undefined DEVICE_DEVSn
7379variables properly.  (vms*.mak)
7380	- The VMS makefiles didn't recognize DEVICE_DEVS{1,2,5,7}.
7381(vms.mak)
7382
7383At the request of a Unix expert, changes all the Unix shell scripts to use
7384exec gs ... "$@" rather than gs ... $*.  (gsnd, gsbj, gsdj, gslj, gslp)
7385
7386Modifies the JPEG library so that it uses 4K less of the automatic data
7387segment in 16-bit environments.  (bcwin.mak, jpeg.mak, sjpeg.c, sjpegerr.c)
7388
7389Adds the bmp drivers back into the 16-bit MS Windows executable, since they
7390will fit now.  (bcwin.mak)
7391
7392</pre><h3><a name="V3.20_Fonts"></a>Fonts</h3><pre>
7393
7394Makes the font substitution algorithm recognize the word Roman as calling
7395for a serif font.  (gs_fonts.ps)
7396
7397</pre><h3><a name="V3.20_Interpreters"></a>Interpreters</h3><pre>
7398
7399Fixes bugs:
7400	- The fix in 3.13 for the inexact function values at 0 didn't work.
7401(zcontrol.c)
7402	- Level 1 configurations referenced an undefined procedure
7403gs_currenthalftone.  (gsht.c, gsht1.c)
7404	- Specifying any device properties (including -r and -g) on the
7405command line caused an error.  (gs_init.ps)
7406	- The forward declaration of cfont_name_array_create was
7407incorrect.  (iccfont.c)
7408	- save and restore could get called before the graphics state stack
7409had been initialized properly.  (gs_mex_e.ps)
7410	- Some encodings weren't loaded properly.  (gs.mak, gs_mex_e.ps,
7411gs_mro_e.ps, gs_pdf_e.ps, gs_wan_e.ps)
7412	- Zero-height images were allowed, but zero-width images
7413weren't.  (zpaint.c)
7414	- Neither zero-width nor zero-height images popped their
7415arguments from the operand stack.  (zpaint.c)
7416	- lib_file_fopen overwrote its file name argument, causing havoc
7417with @-files.  (gxiodev.h, gdevpipe.c, gsiodev.c, zfile.c)
7418	- The garbage collector got confused if there were any arrays or
7419dictionaries with 8K or more elements.  (igcref.c)
7420	- &gt;&gt; could leave the stacks in a questionable state if it failed.
7421(gs_init.ps)
7422	- The Category resource category didn't implement undefineresource.
7423(gs_res.ps)
7424	- When the token operator read the last token from a string, it
7425left an unchanged string on the stack instead of an empty string.
7426(stream.c)
7427	- noaccess didn't give an invalidaccess error when applied to the
7428permanent dictionaries.  (dstack.h, idict.c, ztype.c)
7429	- Overflowing the exec stack wasn't handled properly.  (istack.h,
7430istack.c)
7431	- The garbage collector cleared the cached value pointers in names,
7432causing interpretation to slow down substantially.  (idict.c, igc.c,
7433iname.c)
7434	- 0 dict created a dictionary with a maxlength of 1.  (idict.c)
7435
7436Changes the default size of the execution stack from 150 to 250, to match
7437the Adobe "typical" value.  (interp.c)
7438
7439Moves the operator definitions out of the automatic data segment.
7440(opdef.h, iinit.c, z*.c)
7441
7442Adds operators that allow creation of objects in system space:
7443.systemvmstring, .systemvmarray, .systemvmpackedarray, .systemvmdict,
7444.systemvmcheck.  (zsysvm.c)
7445
7446Renames gcdefs.h as gscdefs.h.
7447
7448Allocates names in system space rather than global space.  (gsmain.c)
7449
7450Changes the memory manager so that it allows programs to create objects in
7451system space.  (iref.h, iutil.h, ivmspace.h, ...)
7452
7453Changes the implementation of filters so they appear in their own
7454dictionary named filterdict.  (gs_init.ps, z*.c)
7455
7456Changes the implementation of color spaces so each one has its own
7457setcolorspace procedure, defined in a new dictionary named
7458colorspacedict.  (gs_lev2.ps, z*.c)
7459
7460Adds a new debugging switch, $, that always initializes all fields in a
7461ref, in order to keep Purify happy.  (store.h)
7462
7463</pre><h3><a name="V3.20_Library"></a>Library</h3><pre>
7464
7465Fixes bugs:
7466	- The page size for image devices was always set to (0, 0).
7467(gsdevice.c)
7468	- The PageSize computation in gx_default_put_params could overflow
7469on 16-bit machines.  (gsdparam.c)
7470	- An omitted 'static' on an initialized array caused a compiler
7471error.  (gxccman.c)
7472	- If interpolated image rendering was requested but not
7473actually carried out, gs_image_cleanup could attempt to free a random
7474pointer.  (gsimage.c)
7475	- Some compilers only retain 23 characters of procedure names, but
7476some procedure names weren't unique in the first 23 characters.  (gscie.c,
7477gscolor.c, gscolor1.c, gxcmap.c)
7478	- The garbage collector didn't trace device colors properly.
7479(gxdcolor.h, gzht.h, gsimage1.c, gspcolor.c, gxcht.c, gxcmap.c, gxdraw.c,
7480gxht.c)
7481	- For CMYK devices, the transfer functions were being applied to
7482the CMYK values rather than the complemented RGBW values.  (gxcmap.c)
7483	- Memory devices used their own color mapping procedures rather
7484than those of the target; this could cause incorrect colors for patterns on
7485devices with more than 1 bit per pixel.  (gxdevmem.h, gdevmem1.c, gdevpm.c,
7486gdevprn.c, gdevwdib.c, gschar.c, gsdevice.c, gxccache.c, gxccman.c,
7487gxclip2.c, gxclread.c, gxpcmap.c)
7488	- The garbage collector didn't trace image enumerators properly in
7489the image_render_simple case.  (gsimage.c)
7490	- stroke produced different-looking output for thin (zero-width)
7491lines depending on whether or not clipping was invoked.  (gxstroke.c)
7492	- If a clipping list changed from multiple rectangles to a single
7493rectangle, it could fail to clip properly thereafter.  (gxacpath.c)
7494
7495Adds two new device procedures: alpha_bits and copy_alpha.  This change is
7496backward-compatible for all existing devices.  (gdevmem.h, gxdevice.h,
7497gsdevice.c, gxclip2.c, gxclist.c, gxcpath.c)
7498
7499Changes the implementation of color halftones so that, when appropriate, it
7500generates a single cell and uses the device tile_rectangle procedure.
7501(gzht.h, gsht.c, gxcht.c, gxclist.c, gxclread.c)
7502
7503Adds partial support for the Orientation page device parameter.
7504(gsdevice.c)
7505
7506Adds support for anti-aliased characters using 2 or 4 bits of alpha.
7507(gxfcache.h, gschar.c, gxccache.c)
7508
7509</pre>
7510
7511<hr>
7512
7513<h2><a name="Version3.13"></a>Version 3.13(private) (10/3/94)</h2>
7514
7515<p>
7516This release was created for a customer; it was not distributed to the
7517public.
7518
7519<h3><a name="V3.13_Documentation"></a>Documentation</h3><pre>
7520Notes in make.doc that the file names in the IJG archive distributed with
7521Ghostscript do not include the gsA.BC/ prefix.  (make.doc)
7522
7523Adds a cross-reference to make.doc to the Watcom makefiles.  (watc.mak,
7524watcwin.mak, wccommon.mak)
7525
7526</pre><h3><a name="V3.13_Procedures"></a>Procedures</h3><pre>
7527
7528Fixes bugs:
7529	- The makefile rule for gconfig.h et al had a couple of blank lines
7530in the middle of it.  (gs.mak)
7531
7532</pre><h3><a name="V3.13_Utilities"></a>Utilities</h3><pre>
7533
7534Fixes bugs:
7535	- wrfont.ps didn't add a lenIV entry to the Private dictionary if
7536it was needed.  (wrfont.ps)
7537
7538Adds a packfile.ps utility that allows compressing multiple files into a
7539single file for environments with very little permanent storage.
7540(gs_pfile.ps, packfile.ps, wrfont.ps)
7541
7542</pre><h3><a name="V3.13_Drivers"></a>Drivers</h3><pre>
7543
7544Fixes bugs:
7545	- The {tiff,fax}{g32d,g4} devices could produce incorrect output.
7546See under Streams below.
7547	- The dfax drivers referred to the obsolete structure member
7548EncodedEOLAlign.  (gdevdfax.c)
7549
7550Changes the default bit order for TIFF/F output to little-endian, which is
7551apparently what the majority of TIFF decoders like best.  The bit order for
7552the fax drivers is still big-endian.  (gdevdfax.c, gdevtfax.c)
7553
7554</pre><h3><a name="V3.13_Platforms"></a>Platforms</h3><pre>
7555
7556Fixes bugs:
7557	- The VMS build script used -a rather than -w for creating
7558gconfig_.h.  (vms.mak)
7559	- The VMS build script didn't create gconfigv.h.  (vms.mak)
7560	- The VMS Fontmap had incorrect entries for the Bitstream Charter
7561fonts.  (fontmap.vms)
7562	- The VMS MODULES.LIS file assumed the JPEG library files were in
7563directory JPEG rather than JPEG-5.  (modules.lis)
7564
7565</pre><h3><a name="V3.13_Fonts"></a>Fonts</h3><pre>
7566
7567Fixes bugs:
7568	- Using DISKFONTS resulted in an invalidaccess error.
7569(gs_fonts.ps)
7570
7571</pre><h3><a name="V3.13_Interpreter"></a>Interpreter</h3><pre>
7572
7573Fixes bugs:
7574	- The standard transfer function considered gray values above
7575roughly 0.994 equivalent to white; 0.999 is a better value.  (gs_init.ps)
7576	- The transfer, black generation, and undercolor removal functions
7577gave slightly inexact results for an input value of 0.  (zcolor.c,
7578zcontrol.c)
7579	- setpagedevice gave an /undefined error if it did not recognize a
7580key, rather than ignoring the key.  (zdevice.c, gs_init.ps, gs_lev2.ps,
7581gs_setpd.ps)
7582
7583Changes .putdeviceparams to take an additional argument, a Boolean that
7584says whether or not unrecognized keys should be reported as /undefined
7585errors.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, no user-written
7586code should be calling .putdeviceparams.  (zdevice.c)
7587
7588</pre><h3><a name="V3.13_Streams"></a>Streams</h3><pre>
7589
7590Fixes bugs:
7591	- The Group 3 2-D and Group 4 fax encoders could emit incorrect
7592output.  (scfe.c)
7593	- The algorithm for constructing optimal Huffman codes could
7594produce invalid codes in some rare cases.  (shcgen.c)
7595
7596</pre><h3><a name="V3.13_Library"></a>Library</h3><pre>
7597
7598Fixes bugs:
7599	- Rectangles closed with lineto rather than closepath weren't
7600recognized as rectangles.  (This only affected performance, not
7601functionality.)  (gxpath2.c)
7602	- The xfont lookup_font procedure could get called with a matrix
7603whose translation components had never been initialized.  (gxccman.c)
7604	- Some compilers don't allow \ in the formal argument list of a
7605preprocessor macro.  (gdevprn.h, gxdevice.h)
7606
7607</pre>
7608
7609<h2><a name="Version3.12"></a>Version 3.12 (9/29/94)</h2>
7610
7611<p>
7612This is another bug fix release, the first Level 2 release that we believe
7613is reasonably reliable.
7614
7615<h3><a name="V3.12_Documentation"></a>Documentation</h3><pre>
7616
7617Adds some text warning about making copies of the makefile.  (make.doc)
7618
7619</pre><h3><a name="V3.12_Procedures"></a>Procedures</h3><pre>
7620
7621Fixes bugs:
7622	- There were a number of unnecessary dependencies on $(MAKEFILE) in
7623gs.mak, left over from before the existence of gconfigv.h.  (gs.mak)
7624	- JPEGSRC was defined in gs.mak rather than in jpeg.mak.  (gs.mak,
7625jpeg.mak)
7626
7627Changes the version numbering scheme back to A.BC, since people seem to be
7628adapting to the change, and this allows using the version number directly
7629as a MS-DOS directory name.  (gconfig.c, gdevtfax.c, gs.c, gs_init.ps)
7630
7631Updates the JPEG library to version 5 (official release) of the IJG code.
7632(jpeg/*, jpeg.mak)
7633
7634</pre><h3><a name="V3.12_Drivers"></a>Drivers</h3><pre>
7635
7636Fixes bugs:
7637	- The TIFF/F driver put out invalid PageNumber and Software
7638entries.  (gdevtifs.h, gdevtfax.c)
7639	- The TIFF/F and fax Group 3 2-D drivers used K=3 and K=5 instead
7640of K=2 and K=4.  (gdevtfax.c)
7641	- The TIFF/F and fax Group 3 2-D drivers emitted improperly aligned
7642output.  (See under Streams below.)
7643	- The MS Windows driver didn't resize the window properly in
7644response to changing the device parameters.  (gdevmswn.c)
7645
7646Because of complementary bugs in various C compilers, changes all the
7647non-printer devices to use a different set of macros.  (gdevmem.h,
7648gdevpcfb.h, gdevprn.h, gdevsvga.h, gxdevice.h, gdev{3b1, bgi, herc, l256,
7649pe, pm, sun, vglb, wddb, wdib, wprn, x}.c, gsdevice.c, gxacpath.c,
7650gxclip2.c, gxcpath.c, gxpcmap.c, zupath.c)
7651
7652Changes the X11 driver to ignore the "margins" specified by Ghostview.
7653This is apparently necessary for Ghostview to handle landscape display
7654properly.  (gdevxini.c)
7655
7656Adds a WindowID parameter to the X11 device, to allow setting the window
7657for the output.  (gdevx.h, gdevx.c, gdevxini.c)
7658
7659</pre><h3><a name="V3.12_Platforms"></a>Platforms</h3><pre>
7660
7661Fixes bugs:
7662	- The definition of BEGINFILES in os2.mak occurred too late in the
7663file to have the desired effect.  (os2.mak)
7664
7665</pre><h3><a name="V3.12_Interpreter"></a>Interpreter</h3><pre>
7666
7667Fixes bugs:
7668	- Updating the list of allocated file objects at a restore didn't
7669clear the prev pointer of the new head, which could cause the garbage
7670collector to encounter an invalid pointer.  (Bug introduced by .forgetsave
7671in 3.0.3.)  (zfile.c)
7672
7673</pre><h3><a name="V3.12_Streams"></a>Streams</h3><pre>
7674
7675Fixes bugs:
7676	- The CCITTFaxEncode filter with K &gt; 0 and EncodedByteAlign = true
7677incorrectly aligned the 1-D/2-D bit as the last bit of a byte, rather than
7678the first bit.  (scfx.h, scfe.c)
7679	- eexec could loop indefinitely under certain conditions.
7680(seexec.c)
7681	- eexec's algorithm for recognizing text vs. binary encoding didn't
7682work properly in some cases that don't conform to the Adobe Type 1 Font
7683Format documentation.  (seexec.c)
7684	- Closing a stream didn't clear out the strm and state pointers,
7685which could cause invalid accesses by the garbage collector.  (stream.c)
7686
7687</pre><h3><a name="V3.12_Library"></a>Library</h3><pre>
7688
7689Fixes bugs:
7690	- fill_loop could loop indefinitely under certain conditions.
7691(Introduced by a bug fix in 3.1.)  (gxfill.c)
7692	- fill/eofill sometimes failed to paint parts of a region.
7693(Introduced by a bug fix in 3.1.1.)  (gxfill.c)
7694	- Non-convex clipping paths sometimes omitted thin horizontal
7695slivers of the region.  (Probably introduced by the "thin graphics" fix in
76963.1.)  (gxacpath.c)
7697
7698</pre>
7699
7700<h2><a name="Version3.1.1"></a>Version 3.1.1 (9/25/94)</h2>
7701
7702<p>
7703This is primarily a bug fix release.  It was originally intended for some
7704commercial licensees, but beta testers found too many problems with it.
7705
7706<h3><a name="V3.1.1_Documentation"></a>Documentation</h3><pre>
7707
7708Fixes bugs:
7709	- NEWS didn't indicate that there was a non-backward-compatible
7710change in the gx_device structure -- specifically, that l_margin,
7711b_margin, r_margin, and t_margin were replaced by macros named
7712dev_l_margin(dev), etc.  (news)
7713
7714Describes the two-phase commit requirement for device put_params
7715procedures.  (drivers.doc, gsparam.h)
7716
7717</pre><h3><a name="V3.1.1_Procedures"></a>Procedures</h3><pre>
7718
7719Fixes bugs:
7720	- The new S macro in genarch.c didn't work on compilers that do
7721macro substitution within string constants (which is forbidden by the ANSI
7722standard).  (genarch.c)
7723
7724</pre><h3><a name="V3.1.1_Drivers"></a>Drivers</h3><pre>
7725
7726Fixes bugs:
7727	- Driver put_params implementations didn't observe a "two-phase
7728commit" discipline; this could lead to the current device in the graphics
7729state being closed, and other inconsistencies.  (gsparam.h, gxdevice.h,
7730iparam.h, gdevbit.c, gdevcdj.c, gdevmswn.c, gdevpcfb.c, gdevpm.c,
7731gdevprn.c, gdevx.c, gsdevice.c, gsdparam.c, zdevice.c, ziodev2.c, zmisc2.c)
7732THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, it only affects
7733put_params implementations, of which there are few.
7734
7735NOTE THE NON-BACKWARD-COMPATIBLE CHANGE IN THE gx_device STRUCTURE UNDER
7736'Documentation' ABOVE.  (gdevescp.c, gdevsj48.c, gdevsppr.c, gdevxini.c)
7737
7738</pre><h3><a name="V3.1.1_Platforms"></a>Platforms</h3><pre>
7739
7740Ensures that the Unix makefiles all include all the variants of TIFF/F and
7741fax drivers.  (ansihead.mak, cc-head.mak, gcc-head.mak)
7742
7743</pre><h3><a name="V3.1.1_Interpreter"></a>Interpreter</h3><pre>
7744
7745Fixes bugs:
7746	- Most of the contents of statusdict were missing when
7747running a Level 2 system in Level 1 mode.  (zmisc2.c)
7748
7749</pre>
7750
7751<h2><a name="Version3.1"></a>Version 3.1 (9/20/94)</h2>
7752
7753<p>
7754This release finally includes a usable subset implementation of
7755setpagedevice, including all the machinery needed to address the
7756long-standing "margins" problems.
7757
7758<h3><a name="V3.1_Documentation"></a>Documentation</h3><pre>
7759
7760Fixes bugs:
7761	- t_oparray objects weren't identified as behaving differently
7762depending on whether they were marked executable.  (iref.h)
7763	- drivers.doc had gx_color_value instead of gx_color_index in
7764the description of color mapping.  (drivers.doc)
7765
7766Updates drivers.doc to reflect the change from static_procs to
7767std_procs in the gx_device structure.  (drivers.doc)
7768
7769</pre><h3><a name="V3.1_Procedures"></a>Procedures</h3><pre>
7770
7771Fixes bugs:
7772	- The commands for building the JPEG library used rm instead
7773of rm -f.  (jpeg.mak)
7774
7775</pre><h3><a name="V3.1_Drivers"></a>Drivers</h3><pre>
7776
7777Fixes bugs:
7778	- The X Windows driver hadn't been updated to reflect some
7779name changes in members of the gx_color_info structure.  (gdevx.h,
7780gdevx.c, gdevxini.c)
7781
7782Changes all non-printer drivers so that they use the new std_device_body
7783macros.  (gdev*.c)
7784
7785Adds a print_page_copies procedure for printer drivers, allowing the
7786driver to receive num_copies.  (gdevprn.h, gdevprn.c)
7787
7788</pre><h3><a name="V3.1_Interpreter"></a>Interpreter</h3><pre>
7789
7790Fixes bugs:
7791	- ref_memory_enum/reloc_ptrs were declared inconsistently.
7792(ialloc.c)
7793	- If the operand of restore was invalid, the restore did
7794nothing, instead of giving a typecheck.  (zvmem.c)
7795	- In Level 2, the margins and setmargins compatibility
7796operators were defined incorrectly in terms of current/setpagedevice.
7797(gs_lev2.ps)
7798
7799Enables .makeoperator to make local operators as well as global ones.
7800(opdef.h, iinit.c, zmisc.c, zpacked.c)
7801
7802Finishes implementing the TransferFunction entry in halftone
7803dictionaries.  (zht1.c, zht2.c)
7804
7805Adds .set/currentfilladjust operators for access to the fill
7806adjustment parameter in the graphics state.  (zgstate.h)
7807
7808Removes the deviceinitialmatrix operator.  (zdevice.c)
7809
7810Changes defaultmatrix from a procedure to an operator.  (zmatrix.c)
7811
7812Sets the fill adjustment to 0.5 for high-resolution devices, effectively
7813implementing Adobe's any-part-of-pixel filling rule.  (gs_init.ps)
7814
7815Implements a small but useful subset of setpagedevice.  (gs_lev2.ps)
7816
7817</pre><h3><a name="V3.1_Streams"></a>Streams</h3><pre>
7818
7819Fixes bugs:
7820	- The eexec decoder incorrectly concluded that its data was
7821in hex form if the first data character was whitespace.  (seexec.c)
7822
7823</pre><h3><a name="V3.1_Library"></a>Library</h3><pre>
7824
7825Fixes bugs:
7826	- Thin graphics (e.g., lines or rectangles) with small angles
7827relative to the X axis rendered with many points missing.  (gxdraw.c,
7828gxfill.c)
7829	- The character cache rejected oversampled characters if the
7830scaled-up size was too large, even if the scaled-down size wasn't.
7831(gxchar.h, gschar.c, gxccache.c, gxccman.c)
7832	- A call on sqrt with an integer argument didn't promote it
7833explicitly to double, which is required for non-ANSI compilers.
7834(gshtscr.c)
7835
7836Finishes implementing the TransferFunction entry in halftone
7837dictionaries.  (gsht1.c)
7838
7839Modifies the character oversampler so it can produce gray scale
7840output instead of a 1-bit mask.  We don't actually make use of this
7841ability yet.  (gxccman.c)
7842
7843Adds gs_set/currentfilladjust for access to the fill adjustment
7844parameter in the graphics state.  (gsstate.h, gsstate.c)
7845
7846Changes the names of the last few routines beginning with gz_ to
7847begin with gx_ instead.  (gzdraw.h =&gt; gxdraw.h, gsimage*.c, gxdraw.c,
7848gxfill.c, gxstroke.c)
7849
7850Properly implements the PageSize, Margins, .HWMargins, and ImagingBBox
7851device parameters for all devices.  (gscoord.c, gsdparam.c, gspath2.c)
7852Implements the NumCopies device parameter for printer devices.
7853(gdevprn.c)
7854
7855Implements std_device_body macros to help insulate statically initialized
7856non-printer devices from future changes in the gx_device structure.
7857(gxdevice.h, ... many .c files ...)
7858
7859</pre>
7860
7861<hr>
7862
7863<h2><a name="Version3.0.3"></a>Version 3.0.3 (9/16/94)</h2>
7864
7865<p>
7866This is primarily a bug fix release; it also implements most of the
7867remaining Level 2 loose ends (except for setpagedevice).
7868
7869<h3><a name="V3.0.3_Documentation"></a>Documentation</h3><pre>
7870
7871Changes code that refers to "Ghostscript" to use the correct product
7872name from gs_product.  (gs.mak, gdevpbm.c, gdevsun.c, gswppm.c)
7873
7874Documents the new .forgetsave operator.  (language.doc)
7875
7876Clarifies the distinction between commercial licensing and single-copy
7877end-user sales.  (readme)
7878
7879</pre><h3><a name="V3.0.3_Procedures"></a>Procedures</h3><pre>
7880
7881Fixes bugs:
7882	- The compilation rule for gdevadmp.c was missing from the
7883makefile.  (devs.mak)
7884
7885Changes the version numbering scheme back to A.B.C, since too many
7886people got confused by the change to A.BC.  (gconfig.c, gs.c,
7887gs_init.ps)
7888
7889Adds a -dNOGC switch to prevent the garbage collector from being
7890enabled.  (gs_init.ps)
7891
7892</pre><h3><a name="V3.0.3_Utilities"></a>Utilities</h3><pre>
7893
7894Removes the ps2image utility, since the new psmono driver replaces it.
7895
7896</pre><h3><a name="V3.0.3_Drivers"></a>Drivers</h3><pre>
7897
7898Fixes bugs:
7899	- The TIFF drivers incorrectly assumed that short and ulong
7900were the same size as TIFF_short and TIFF_ulong, causing problems on
790164-bit systems.  (gdevtfax.c)
7902	- The EGA/VGA driver didn't do gray halftones properly if it
7903was configured as a monochrome or 8-color device.  (gdevpcfb.h)
7904	- The comment in gdevevga.c incorrectly identified the file
7905as gdevpcfb.c.  (gdevevga.c)
7906
7907Changes the PC display drivers to save and restore more of the BIOS
7908state.  (gdevpcfb.h, gdevevga.c, gdevpcfb.c, gdevsco.c)
7909
7910Adds a new psmono driver that does the same thing as ps2image, faster
7911and more conveniently.  (gdevpsim.c)
7912
7913Replaces the X11 driver with the one from 3.01, since the color
7914handling rewrite in 3.02 introduced serious bugs.  (gdevx.h, gdevx.c,
7915gdevxini.c)
7916
7917</pre><h3><a name="V3.0.3_Platforms"></a>Platforms</h3><pre>
7918
7919Changes the definition of gx_no_color_index to work around one of the
7920bugs in the SGI Irix compiler.  (gxdcolor.h)
7921
7922Rewrites the installation commands in unix-end.mak so they don't have
7923very long lines.  (unix-end.mak)
7924
7925</pre><h3><a name="V3.0.3_Fonts"></a>Fonts</h3><pre>
7926
7927Fixes bugs:
7928	- Fonts that used 2- or 4-element arrays in the Metrics dictionary
7929interpreted the width and side bearing interchanged with each other.
7930(gs_type1.ps)
7931	- Setting FONTPATH on the command line didn't work.  (gs_fonts.ps)
7932
7933</pre><h3><a name="V3.0.3_Streams"></a>Streams</h3><pre>
7934
7935Fixes bugs:
7936	- The stream position wasn't updated properly if sgets
7937crossed a buffer boundary.  (stream.c)
7938
7939Extends the BoundedHuffman filters so they can encode and decode runs of
7940zeros specially, and so they mark and detect EOD.  (sbhc.h, shc.h, sbhc.c,
7941zfilter2.c)
7942
7943Provides an alternate implementation of file streams which doesn't use
7944stdio buffering and which works around the System V "interrupted system
7945call" problem.  (stream.c, sfile.c, sfileno.c)
7946
7947Increases the maximum LZW output code from 3000 to 4095.  (slzwe.c)
7948
7949</pre><h3><a name="V3.0.3_Interpreter"></a>Interpreter</h3><pre>
7950
7951Fixes bugs:
7952	- Opening a filter on a file of the wrong access type (read
7953vs. write) didn't cause an error.  (stream.h, sbasic.c, zfile.c, zfileio.c)
7954	- save performed an extra, unnecessary gsave.  (zvmem.c)
7955	- sethalftone always gave a /undefined error.  (zht2.c)
7956	- eexec decryption read too much data from the input -- in
7957Level 2, it isn't allowed to read 512 characters ahead.  (sfilter.h,
7958strimpl.h, seexec.c, sstring.c, zfileio.c, zmisc1.c)
7959	- The scanner was too aggressive about allocating additional
7960space for strings on small machines.  (iscan.c)
7961	- The AccurateScreens flag in Type 1 and Type 2 halftone
7962dictionaries was being ignored.  (zht2.c)
7963	- The Level 2 definition of margins in statusdict didn't
7964allow for Margins being undefined in the current page device.
7965(gs_lev2.ps)
7966	- The Interpolate flag was being ignored in image
7967dictionaries.  [implemented in library]
7968	- The TransferFunction option was being ignored in halftone
7969dictionaries.  (zht2.c)
7970	- Type 5 halftones usually didn't work, because they called
7971the wrong (or an invalid) spot function.  (zht2.c)
7972
7973Implements a .forgetsave operator that effectively causes a given save (and
7974all more recent saves) to disappear.  (isave.h, stream.h, isave.c, zfile.c,
7975zvmem.c)
7976
7977</pre><h3><a name="V3.0.3_Library"></a>Library</h3><pre>
7978
7979Fixes bugs:
7980	- In the 1-operand form of the image operator, a Decode value of [1
79810] with 8-bit sample values and a single data source was treated the same
7982as [0 1].  (gsimage1.c)
7983	- Some Monotype fonts put a callsubr between an OtherSubr call and
7984the following 'pop' opcodes (which the Adobe documentation forbids); The
7985Type 1 font interpreter gave an invalidfont error rather than allowing
7986this.  (gxtype1.h, gstype1.c)
7987	- Patterns didn't implement XStep and YStep properly.
7988(gxpcolor.h, gspcolor.c, gxclip2.c)
7989	- Clipping regions were sometimes 1 pixel too small at the edges;
7990this could cause vertical and horizontal lines produced by certain Windows
7991drivers to disappear.  (gzpath.h, gxacpath.c, gxcpath.c, gxfill.c)
7992	- Oversampling cached rotated characters produced very bad
7993results (many dropouts).  (gschar.c)
7994	- Rendering a DeviceGray color on a DeviceCMYK device applied
7995the transfer function to all 4 components, not just to the K
7996component.  (gxcmap.c)
7997	- A screen specified with setcolorscreen didn't take effect
7998properly on CMYK devices.  (gsht.c)
7999
8000Implements the Interpolate option for images.  Currently this is only
8001implemented for portrait-orientation images (no rotation, skewing, or
8002X-reflection).  (gscspace.h, gximage.h, gscie.c, gscolor.c, gscolor1.c,
8003gscolor2.c, gspcolor.c, gxcmap.c, gsimage.c, gsimage2.c, gsimage3.c)
8004
8005Implements AccurateScreens, but only in the form of a larger limit on
8006the size of a halftone super-cell.  (gxht.h, gsht.c, gsht1.c)
8007
8008Starts to implement the TransferFunction option for halftones.
8009(gzht.h, gzstate.h, gsht.c, ...too many others to list...)
8010
8011</pre>
8012
8013<h2><a name="Version3.02"></a>Version 3.02 (8/30/94)</h2>
8014
8015<p>
8016This is another bug fix release.  It was distributed only to a few people,
8017since the new X Windows color mapping code is not reliable yet.
8018
8019<h3><a name="V3.02_Documentation"></a>Documentation</h3><pre>
8020
8021Fixes bugs:
8022	- make.doc, but not unixtail.mak, called for setting PLATFORM=unix_
8023on SVR4 platforms.  (unixtail.mak)
8024	- drivers.doc contained some wording that suggested that
8025Ghostscript always used RGB colors internally.  (drivers.doc)
8026	- The definition of gx_device in drivers.doc had gotten out of sync
8027with gxdevice.h.  (drivers.doc)
8028	- README claimed that Ghostscript is not compatible with the
8029VAX/VMS DEC C compiler, which is no longer true.  (readme)
8030
8031Adds a new section on printer drivers to drivers.doc.  (drivers.doc)
8032
8033Adds a large number of new display boards to the 800x600 SVGA section of
8034use.doc.  (use.doc)
8035
8036Adds a bug report form to the README file.  (readme)
8037
8038Notes that OSF/1 AXP systems require changing the definition of INSTALL
8039from install to installbsd.  (make.doc)
8040
8041</pre><h3><a name="V3.02_Procedures"></a>Procedures</h3><pre>
8042
8043Removes -Wno-uninitialized from the gcc flags, and fixes all the places (in
8044Aladdin's code only) that need to be fixed to pacify gcc after doing this.
8045(gcc-head.mak, gdevgif.c, gdevmem2.c, gdevpcl.c, gs.c, gsht1.c, gsimpath.c,
8046gsutil.c, gxclread.c, gxpcopy.c, gxstroke.c, idict.c, iscannum.c, stream.c,
8047zdevice2.c) (NOT FINISHED YET)
8048
8049Adds a FAKEFONTS switch that makes fake entries in FontDirectory for
8050unloaded fonts, for the benefit of programs that think they can find all
8051the available fonts by scanning FontDirectory.  (gs_fonts.ps, gs_init.ps)
8052
8053</pre><h3><a name="V3.02_Utilities"></a>Utilities</h3><pre>
8054
8055Fixes bugs:
8056	- ps2epsi didn't work, because setdevice now erases the page.
8057(ps2epsi.ps)
8058	- ps2epsi didn't work, because -dNODISPLAY installs a null device
8059with 0 width and height.  The fix -- to remove the -dNODISPLAY -- is not
8060satisfactory, because it opens an unnecessary window.  (ps2epsi)
8061
8062</pre><h3><a name="V3.02_Drivers"></a>Drivers</h3><pre>
8063
8064Fixes bugs:
8065	- gdev_fax_open was incorrectly declared static in gdevtfax.c,
8066causing the extern reference in the dfax drivers not to be resolved.
8067(gdevtfax.c)
8068	- devs.mak included a duplicate definition of gdevmswn_h.
8069(devs.mak)
8070	- The fax drivers didn't link properly in Level 1 systems, because
8071shc.c was omitted from their dependency list.  (gs.mak, devs.mak)
8072	- The TIFF/F drivers didn't set RowsPerStrip properly.
8073(gdevtfax.c)
8074	- The TIFF/F drivers didn't byte-align the EOL properly.  (scfx.h,
8075gdevdfax.c, gdevtfax.c, scfe.c, zfilter2.c)
8076	- The rule for compiling gdevpccm.c incorrectly specified
8077dependency on gs.h rather than gx.h.  (devs.mak)
8078	- The rule for compiling gdevtfax.c didn't include time_.h as a
8079dependency.  (devs.mak)
8080	- The mode 2 compression routine for the DeskJet/LaserJet printers
8081was broken.  (gdevpcl.c)
8082
8083Removes the -O0 from the compilation rule for gdevsco.c, since it was
8084misplaced to begin with.  (devs.mak)
8085
8086Adds a maxDynamicColors X resource to control dynamic allocation in the
8087color map.  Replaces the X color lookup algorithms with completely new
8088ones, for a substantial performance gain.  (gdevx.h, gdevx.c, gdevxini.c)
8089
8090Adds PageNumber, Software, and DateTime entries to the TIFF/F drivers.
8091(gdevtifs.h, gdevtfax.c)
8092
8093Changes the margins for the LaserJet 4 to 0.  (gdevdjet.c)
8094
8095Adds a user-contributed LaserJet 4 driver that does Floyd-Steinberg
8096dithering.  (gdevcdj.c)
8097
8098</pre><h3><a name="V3.02_Platforms"></a>Platforms</h3><pre>
8099
8100Fixes bugs:
8101	- The exit codes for Ghostscript should be different on VMS.
8102(iastate.h, gs.c, gsmain.c, igc.c, igcref.c)
8103	- The VMS DEC C compiler declares malloc and free in stdlib.h, and
8104delete and unlink in stdlib.h.  (malloc_.h, stdio_.h)
8105	- st_prn_device wasn't defined, which upset the VMS linker even
8106though there were no references.  (gdevprn.h)
8107	- stdpre.h didn't bring in the right headers when running gcc on
8108SCO Unix, causing compilation warnings/errors.  (stdpre.h)
8109	- The definition of rename in gp_sysv didn't include const for the
8110arguments.  (gp_sysv.c)
8111	- The definition of gettimeofday in gp_sysv didn't return any
8112value.  (gp_sysv.c)
8113	- time_.h didn't work on MS-DOS systems.  (time_.h)
8114	- math_.h didn't include &lt;math.h&gt; when compiling with gcc on VMS
8115systems.  (math_.h)
8116	- DesqView/X doesn't have a 'cat' command, which caused problems in
8117the linking step.  (dvx-tail.mak)
8118
8119Changes the definitions of popen in gdevpipe.c and gp_unix.c so they don't
8120specify the argument list.  This is an attempt to get around the fact that
8121there is no easy way to detect whether the available header files declare
8122popen correctly (with const arguments), incorrectly (with non-const
8123arguments), or not at all.  (gdevpipe.c, gp_unix.c)
8124
8125Replaces VMS.MAK, VMS-CC.MAK, and VMS-AXP.MAK with new versions provided by
8126a user.  (vms.mak, vms-cc.mak, vms-axp.mak)
8127
8128Changes the 16-bit Borland makefiles so their standard configuration is
8129Level 1 plus color.dev (CMYK color and colorimage).  (bc.mak, bcwin.mak)
8130
8131</pre><h3><a name="V3.02_Fonts"></a>Fonts</h3><pre>
8132
8133Fixes bugs:
8134	- cfonts.mak still referred to some .gsf files that have been
8135replaced by .pfa files.  (cfonts.mak)
8136	- Compiled fonts got entered into FontDirectory, but didn't get
8137registered as resources.  (gs_ccfnt.ps)
8138	- The Cyrillic, Kana, Hershey .gsf, and URW fonts didn't include a
8139necessary systemdict begin/end, which caused them to fail in badly designed
8140environments.  (fonts/f*.gsf, fonts/h*.gsf, fonts/?0*.gsf)
8141
8142Changes the default target directory in cfonts.mak from fonts/c to .;
8143changes the names of the Zapf Chancery compiled font procedures from c* to
8144zc*.  (cfonts.mak)
8145
8146Adds more fonts from the Adobe Type Manager package for MS Windows to
8147Fontmap.ATM.  (fontmap.atm)
8148
8149Adds the entire set of 35 standard fonts to the ccfonts feature in gs.mak;
8150removes all the compilation rules for compiled fonts, since these rules are
8151in cfonts.mak already.  (gs.mak)
8152
8153</pre><h3><a name="V3.02_Interpreter"></a>Interpreter</h3><pre>
8154
8155Fixes bugs:
8156	- kshow executed a null, rather than the correct procedure, between
8157the characters of the string, and got a typecheck error at the end.
8158(zchar.c)
8159	- MultiMaster fonts computed their side bearing and width
8160incorrectly, producing incorrect output.  (zchar1.c)
8161	- There was no structure definition for gs_type1_state, so a GC
8162during the execution of an OtherSubrs procedure could scramble pointers in
8163the saved state.  (zchar1.c, zfont1.c; also affects library, see below)
8164	- kshow didn't work properly if the kerning procedure changed the
8165depth of the operand or dictionary stack.  (zchar.c)
8166	- If the element count for roll was too large by only 1 or 2, the
8167result was a crash rather than a rangecheck.  (zstack.c)
8168	- restore didn't undo currentgstate.  (igstate.h, store.h,
8169gsstate.c, zdevice2.c, zdps1.c, ztype.c)
8170	- The scanner didn't set the local bit properly in a suspended
8171state.  (iscan.c)
8172	- copypage disregarded #copies.  (gs_init.ps)
8173	- An incorrectly declared pointer led to addressing faults on
817416-bit systems.  (zchar1.c)
8175	- The cache for Separation colors was allocated with one element
8176too few.  (zcsindex.c)
8177
8178Changes `executive' so that if an error other than EOF occurs in the
8179reading of the statement, the interpreter prints the error message, but
8180control remains in the executive loop.  (This isn't a very good fix; a
8181better one will require refactoring executive / execute / run.)
8182(gs_init.ps)
8183
8184Changes dictionary undo saving to use the new ref_must_save macro [internal
8185change only].  (idict.c)
8186
8187Moves configuration definitions from iinit.c to gconfig.c.  (gcdefs.h,
8188interp.h, gconfig.c, gs.c, iinit.c, zmisc2.c, gs.mak)
8189
8190Moves =string from systemdict to userdict for Adobe compatibility.
8191(gs_init.ps)
8192
8193Starts to implement the Interpolate flag in image dictionaries.  See under
8194Library below for restrictions.  (zpaint.c, zimage2.c)
8195
8196</pre><h3><a name="V3.02_Streams"></a>Streams</h3><pre>
8197
8198Fixes bugs:
8199	- stream_compact attempted to compact a read-only string being used
8200as the data source of a filter.  (sbasic.c, stream.c)
8201
8202Adds an EncodedEOLAlign flag to the CCITTFaxEncode stream, to allow direct
8203generation of TIFF/F output.  (scfx.h, scfe.c, zfilter2.c)
8204
8205</pre><h3><a name="V3.02_Library"></a>Library</h3><pre>
8206
8207Fixes bugs:
8208	- There was no structure definition for gs_type1_state, so a GC
8209during the execution of an OtherSubrs procedure could scramble pointers in
8210the saved state.  (gxfont1.h, gxtype1.h, gstype1.c, gxhint2.c)
8211	- A couple of calls had to discard const, but didn't include the
8212necessary cast.  (gxpcmap.c)
8213	- makeimagedevice refused to accept an empty image.  (gsdevice.c)
8214	- The extra parentheses around arguments in memory_.h caused some
8215compilers to fail.  (memory_.h)
8216	- Floating point overflows during coordinate conversion terminated
8217Ghostscript.  (gxfarith.h, gxfixed.h, gsmatrix.c, gsmisc.c)
8218	- Accents still weren't getting placed properly on characters
8219created with seac.  (gstype1.c, gxhint2.c)
8220	- The SGI C compiler couldn't handle the (perfectly legal)
8221definitions of dev_init_[open_]misc.  (gxdevice.h)
8222	- string_.h caused some problems with gcc on some versions of
8223Solaris.  (string_.h)
8224	- The halftone levels for color screens were computed incorrectly.
8225(gzht.h, gxdither.c)
8226	- Color screens sometimes had vertical stripes of solid color
8227interspersed.  (gxcht.c)
8228	- Colors could get mapped incorrectly if a compiler aggressively
8229(and incorrectly) reordered the computation of procedure arguments
8230involving the unit_frac macro.  (gxcmap.c)
8231	- setcachedevice[2] insisted that the corners of the bounding box
8232be given in the correct order, i.e., llx &lt; urx and lly &lt; ury.  (gschar.c)
8233	- The image operator gave a limitcheck on unrotated 1-bit-per-pixel
8234images whose width in device coordinates exceeded 65529.  (gsimage.c)
8235	- The garbage collector didn't trace the input data of an
8236in-progress image operator correctly.  (gsimage.c)
8237
8238Changes the max_rgb and dither_rgb members of gx_device_color_info to
8239max_color and dither_colors, since Ghostscript now uses these for CMYK
8240devices as well.  Also changes dither_gray to dither_grays.  (gdevmem.h,
8241gdevprn.h, gxdevice.h, gdevbit.c, gdevcdj.c, gdevprn.c, gdevxini.c,
8242gsdparam.c, gxcht.c, gxcmap.c)
8243
8244Starts to implement the Interpolate option for images.  Currently this is
8245only implemented for image, not imagemask, and only for rotations that are
8246multiples of 90 degrees (possibly with reflection).  (gsimage.h,
8247gsiscale.h, gximage.h, gsimage.c, gsimage1.c, gsiscale.c)
8248
8249Starts to implement XStep and YStep in pattern dictionaries.  (gxdcolor.h,
8250gxpcolor.h, gspcolor.c, gxpcmap.c)
8251
8252</pre>
8253
8254<h2><a name="Version3.01"></a>Version 3.01 (8/14/94)</h2>
8255
8256<p>
8257This is a patch release to fix early problems in release 3.0, and to clean
8258up a few known loose ends.
8259
8260<h3><a name="V3.01_Documentation"></a>Documentation</h3><pre>
8261
8262Fixes bugs:
8263	- language.doc still documented the devicename procedure, which has
8264been withdrawn.  (language.doc)
8265	- drivers.doc didn't specify under what circumstances each
8266procedure could be called.  (drivers.doc)
8267	- current.doc said that setcachedevice and makeimagedevice wouldn't
8268accept packed arrays, but neither of these operators takes any array
8269arguments.  (current.doc)
8270	- current.doc said that definefont didn't interact properly with
8271the resource machinery, which apparently is no longer true.  (current.doc)
8272	- make.doc incorrectly gave the name of the DVX makefile as
8273dvx-djg.mak rather than dvx-gcc.mak.  (make.doc)
8274	- In one place, devices.doc incorrectly used -sBitsPerPixel= rather
8275than -dBitsPerPixel=.  (devices.doc)
8276
8277Notes that a kernel bug in SCO Unix makes Ghostscript not work correctly in
8278some circumstances.  (use.doc)
8279
8280</pre><h3><a name="V3.01_Procedures"></a>Procedures</h3><pre>
8281
8282Fixes bugs:
8283	- devs.mak incorrectly referred to gdevjetp.c instead of
8284gdev3852.c.  (devs.mak)
8285	- The obsolete file gsprops.c was accidentally included in the
8286fileset.
8287
8288Changes the version numbering scheme from A.BCC to A.B[C].  E.g., this
8289release will be 3.01, not 3.001.  (gs_init.ps, gs.c, iinit.c)
8290
8291Adds the LaserJet 4 driver to all makefiles that already include the
8292LaserJet 3 driver.  (*.mak)
8293
8294Adds the BJ-200 driver to all makefiles that already included the BJ-10e
8295driver.  (*.mak)
8296
8297Splits the Unix 'install' target into install-exec and install-data.  Moves
8298the executable scripts from gsdatadir to a new directory scriptdir, which
8299defaults to bindir.  (ansihead.mak, cc-head.mak, gcc-head.mak,
8300unix-end.mak)
8301
8302</pre><h3><a name="V3.01_Utilities"></a>Utilities</h3><pre>
8303
8304Fixes bugs:
8305	- genconf had fixed buffer sizes built into it, which it could
8306overrun its working storage without checking.  (genconf.c)
8307
8308Removes RCS or SCCS headers from two utility files.  (pj-gs.sh,
8309printafm.ps)
8310
8311</pre><h3><a name="V3.01_Drivers"></a>Drivers</h3><pre>
8312
8313Fixes bugs:
8314	- The new dfaxhigh and dfaxlow drivers didn't set
8315state.EncodedByteAlign to false.  (gdevdfax.c)
8316	- The sunview driver assumed that the device would be open before
8317map_rgb_color was called.  (gdevsun.c)
8318	- The CP50 driver incremented page_count itself, rather than
8319letting the core library do it.  (gdevcp50.c)
8320	- The GIF driver(s) could loop indefinitely under certain
8321circumstances.  (gdevgif.c)
8322	- The Group 4 fax drivers incorrectly included end-of-line codes in
8323the output.  (gdevtfax.c, gdevdfax.c)
8324	- The Group 4 fax drivers could put out an EOB in the middle of the
8325data.  (scfe.c)
8326	- The DesignJet 650C driver didn't use the correct compression
8327mode.  (gdevcdj.c)
8328	- The Hercules and EGA/VGA/SVGA drivers computed the page height
8329incorrectly according to the A4 switch.  (gdevherc.c, gdevpcfb.h)
8330
8331Changes the page_count and showpage_count members of the device structure
8332from int to long.  (gxdevice.h, gdevprn.c, gsdparam.c)
8333
8334Changes the faxg3, faxg32d, and faxg4 drivers so that, like the TIFF and
8335dfax drivers, they adjust the page size to one of the three CCITT standard
8336sizes if this is reasonable.  (gdevtfax.c)
8337
8338Splits the bit driver into bit, bitrgb, and bitcmyk.  Adds bitrgb and
8339bitcmyk to all makefiles that included bit.  (*.mak, devs.mak, gdevbit.c)
8340
8341Replaces the atiw16, tseng16, and tvga16 SuperVGA drivers with a single
8342svga16 driver that allows specifying the display mode number.  (devs.mak,
8343gdevpcfb.c)
8344
8345</pre><h3><a name="V3.01_Platforms"></a>Platforms</h3><pre>
8346
8347Fixes bugs:
8348	- The MS Windows and OS/2 drivers allocated their terminal input
8349buffers in a way that could cause the GC to crash.  (gp_mswin.c, gp_os2.c)
8350	- The handling of gettimeofday on SVR4 platforms was incorrect.
8351(time_.h, gp_sysv.c, gp_unix.c)
8352	- On some platforms, function prototypes were not enabled even if
8353__STDC__ was defined.  (stdpre.h)
8354	- The VMS build script referred to an obsolete feature lev2only.
8355(vms.mak)
8356
8357Changes the DVX platform so that stdprn is buffered.  This should improve
8358printing performance dramatically.  (gp_dvx.c)
8359
8360</pre><h3><a name="V3.01_Fonts"></a>Fonts</h3><pre>
8361
8362Fixes bugs:
8363	- Setting DISKFONTS resulted in a reference to FontFileDirectory
8364before it was defined.  (gs_type1.ps, gs_fonts.ps)
8365	- /Font findresource gave an error rather than doing font
8366substitution.  (gs_res.ps)
8367	- FontDirectory wasn't rebound to GlobalFontDirectory when global
8368VM was current.  (gs_res.ps, zdict.c)
8369	- Type 1 fonts weren't loaded into global VM.  (gs_fonts.ps)
8370	- In the standard Fontmap, the Utopia fonts had extension .gsf
8371rather than .pfa.  (fontmap.gs)
8372	- Fonts whose FontBBox was [0 0 0 0] were not displayed, or were
8373displayed as tiny dots.  (gs_type1.ps)
8374
8375</pre><h3><a name="V3.01_Interpreter"></a>Interpreter</h3><pre>
8376
8377Fixes bugs:
8378	- dict_put could read from the variable pvslot before it was used.
8379(This was harmless, since the value was never actually used; it just upset
8380Purify.)  (idict.c)
8381	- Binary object sequences could cause addressing faults.
8382(iscanbin.c)
8383	- The attributes on names were set incorrectly in binary object
8384sequences.  (iscanbin.c)
8385	- gs.c duplicated (in some cases incorrectly) some definitions in
8386interp.h.  (gs.c)
8387	- gs_lib_paths was declared const in one place and non-const in
8388another.  (zfile.c)
8389	- file_restore and font_restore had inconsistent const declarations
8390for their argument.  (isave.c)
8391	- iodev_os_open_file was missing its last formal parameter.
8392(ziodev.c)
8393	- gs.c declared gs_devicename with an incorrect extern.  (gs.c)
8394	- undefinefont didn't interact properly with the resource
8395machinery.  (gs_lev2.ps)
8396	- The declaration for swap_entry used a typedef name as a formal
8397parameter, which upset some compilers.  (zmisc2.c)
8398	- Including the ccinit feature could cause the garbage collector to
8399make an invalid access.  (stream.c)
8400	- The check for t_[a]struct types in ztype.c was incorrect.
8401(ztype.c)
8402	- After the collection of halftone samples, temporary data
8403structures were freed incorrectly.  (gzht.h, gsht1.c, zht.c)
8404	- Images with source width between 489 and 492 crashed the
8405memory manager.  (iastate.h)
8406
8407Makes it possible to define SEARCH_HERE_FIRST (gsmain.c) in the makefile.
8408(gsmain.c)
8409
8410Splits the Level 2 resource machinery into a separate file.  (gs_lev2.ps,
8411gs_res.ps, gs.mak, unix-end.mak, vms.mak).
8412
8413Changes the names of the DiffEncode/Decode filters to
8414PixelDifferenceEncode/Decode, and splits them off into a separate
8415"feature".  (gs.mak, zfilter2.c, zfpdiff.c, spdiff.c, spdiffx.h)
8416
8417Adds experimental code for filtered image scaling.  DON'T USE THIS CODE.
8418(zimage2.c)
8419
8420</pre><h3><a name="V3.01_Streams"></a>Streams</h3><pre>
8421
8422Fixes bugs:
8423	- The CCITTFaxEncode filter could put out an EOB in the middle of
8424the data.  (scfe.c)
8425
8426Splits off the PixelDifferenceEncode/Decode filters into a separate
8427"feature".  (gs.mak)
8428
8429</pre><h3><a name="V3.01_Library"></a>Library</h3><pre>
8430
8431Fixes bugs:
8432	- gs_setcachedevice could return a garbage error code.  (gschar.c)
8433	- joins on stroked lines were incorrect if the device coordinate
8434system mapped +Y to +Y.  (gxstroke.c)
8435	- If gsmisc.c supplied versions of missing library routines, they
8436could clash with the names of the real ones if those were present
8437unexpectedly.  (memory_.h, gsmisc.c)
8438	- The initialization expression for is_open in the
8439dev_init_misc_open macro included a cast, which some compilers don't allow.
8440(gxdevice.h, gsdevice.c, gxclip2.c, gxpcmap.c)
8441	- In Type 1 fonts, character that specified their side bearing and
8442width with sbw rather than hsbw gave an invalidfont error.  (gstype1.c)
8443	- Some procedures were declared inconsistently with regard to const
8444arguments.  (gscie.c, gxpcmap.c, gxacpath.c, gxcmap.c)
8445	- A few places still assumed that pointers occupied 4 bytes.
8446(gxclist.c)
8447	- Rendering a gray halftone on a CMYK device called the device's
8448map_rgb_color procedure instead of map_cmyk_color.  (gxdither.c)
8449
8450Renames gsfile.c as gswppm.c.  (gsfile.c, gswppm.c)
8451
8452Implements the ability to cache arbitrarily transformed characters.  This
8453is currently enabled by a compile-time flag in gschar.c.  (gschar.c)
8454
8455</pre>
8456
8457<h2><a name="Version3.0"></a>Version 3.0 (8/1/94)</h2>
8458
8459<p>
8460This is the first full Level 2 version released to the public.
8461Unfortunately, we were not able to include setpagedevice in this release.
8462
8463<h3><a name="V3.0_Documentation"></a>Documentation</h3><pre>
8464
8465Fixes bugs:
8466	- README didn't mention Aladdin's European distributor.
8467	- psfiles.doc didn't describe some of the newer gs_*.ps files.
8468
8469Notes that gcc -O2 (version 2.5.8 of gcc) generates incorrect code for some
8470modules on the H-P RISC architecture.
8471
8472Notes that on AXP platforms running VMS, DEC C V4.0 is required.
8473
8474</pre><h3><a name="V3.0_Procedures"></a>Procedures</h3><pre>
8475
8476Fixes bugs:
8477	- 'make clean' didn't delete devs.tr or t.tr.
8478	- devs.mak was missing the entry for faxg32d.
8479	- unixansi.mak omitted some drivers that were included in
8480unix-cc.mak and unix-gcc.mak.
8481
8482Updates jpeg.mak to reference version 5beta1 of the IJG JPEG code.
8483
8484Changes the version numbering scheme from A.B.C to A.B[CC].  I.e., the
8485first sub-release after 3.0 will be 3.01 or 3.001, not 3.0.1.
8486
8487</pre><h3><a name="V3.0_Utilities"></a>Utilities</h3><pre>
8488
8489Fixes bugs:
8490	- ps2ascii didn't do a setglobal.
8491
8492Adds an option to ansi2knr to convert ... to va_alist/va_dcl.
8493
8494</pre><h3><a name="V3.0_Drivers"></a>Drivers</h3><pre>
8495
8496Fixes bugs:
8497	- The newly added faxg32d driver didn't have an entry in devs.mak.
8498	- The BMP, GIF, and PCX drivers wrote out an incorrect color
8499palette (the blue values were too small).
8500	- The vgalib driver had some compilation problems.
8501	- The TIFF drivers didn't produce correct multi-page output.
8502
8503Adds faxg32d and tiffg32d drivers.
8504
8505Reinstates the DigiFax drivers, which were withdrawn when the new fax
8506drivers were added.
8507
8508</pre><h3><a name="V3.0_Platforms"></a>Platforms</h3><pre>
8509
8510Fixes bugs:
8511	- gs_btokn.ps and gs_ccfnt.ps weren't installed on Unix platforms.
8512	- The VMS module list omitted SBHC, included a non-existent GXDASH,
8513and had incorrect names for some of the IJG JPEG files.
8514	- The VMS build scripts (vms*.mak) had incorrect "boilerplate".
8515	- The VMS script file gssetmod.com had \r characters in it, as well
8516as \n characters.
8517	- The echogs and genarch utilities didn't return the correct exit
8518codes under VMS.
8519	- The VMS Fontmap had incorrect entries for the Courier and Charter
8520fonts.
8521	- When running under Ghostview, Ghostscript didn't drain the input
8522pipe.  (We fixed this with a temporary patch in gs.c; this isn't a good
8523solution for the longer term.)
8524
8525</pre><h3><a name="V3.0_Fonts"></a>Fonts</h3><pre>
8526
8527Fixes bugs:
8528	- The free AvantGarde, Bookman, and Palatino font families had
8529incorrect FontBBox values.
8530	- The 'f' and 'j' in the free AvantGarde-DemiOblique,
8531Bookman-DemiItalic, Bookman-LightItalic, and Palatino-Italic fonts were
8532chopped off on the right.  (The bitmaps were chopped off in the original
8533BDF fonts from which these fonts were made.)  ****** THIS PROBLEM WAS NOT
8534ACTUALLY FIXED. ******
8535
8536</pre><h3><a name="V3.0_Interpreter"></a>Interpreter</h3><pre>
8537
8538Fixes bugs:
8539	- gs -h and gs -v didn't print the tertiary version number correctly.
8540	- Binary object sequences with no strings or names didn't read in
8541correctly.
8542	- Binary object sequences that crossed an input buffer boundary
8543didn't read in correctly.
8544	- Binary object sequences read in as {[e1 .. en] e1 ... en} instead
8545of {[e1 ... en]}.  (New bug in 2.9.x.)
8546	- setpattern didn't set the current color space correctly if the
8547current color space wasn't a Pattern space.
8548	- If the current color space was an uncolored Pattern space but the
8549current color was a colored Pattern, currentcolor returned extra values on
8550the operands stack.
8551	- .buildfont1 in gs_type1.ps didn't force binding of the old
8552definition, causing ps2ascii to loop endlessly.
8553
8554Adds a facility for writing and reading dictionaries in binary object
8555sequences.  This is experimental and subject to change in the future.
8556
8557</pre><h3><a name="V3.0_Streams"></a>Streams</h3><pre>
8558
8559Fixes bugs:
8560	- gs_run_string and ccinit didn't have any way to mark the string
8561as "foreign", which confused the GC.
8562
8563</pre><h3><a name="V3.0_Library"></a>Library</h3><pre>
8564
8565Fixes bugs:
8566	- gxchar.h had an extra comma after the last element of the
8567show_width_status enum, which upset some compilers.
8568	- stroke and strokepath didn't correctly skip zero-length segments
8569if the line width was less than one pixel, or if there was a closed subpath
8570consisting entirely of zero-length segments.
8571	- strokepath sometimes incorrectly added a moveto at the end of the
8572path.
8573</pre>
8574
8575<!-- [3.0 begin visible trailer] =========================================== -->
8576<hr>
8577
8578<p>
8579<small>Copyright &copy; 1996, 1997, 1998 Aladdin Enterprises.
8580All rights reserved.</small>
8581
8582<p>
8583This software is provided AS-IS with no warranty, either express or
8584implied.
8585
8586This software is distributed under license and may not be copied,
8587modified or distributed except as expressly authorized under the terms
8588of the license contained in the file LICENSE in this distribution.
8589
8590For more information about licensing, please refer to
8591http://www.ghostscript.com/licensing/. For information on
8592commercial licensing, go to http://www.artifex.com/licensing/ or
8593contact Artifex Software, Inc., 101 Lucas Valley Road #110,
8594San Rafael, CA  94903, U.S.A., +1(415)492-9861.
8595
8596<p>
8597<small>Ghostscript version 8.53, 20 October 2005
8598
8599
8600<!-- [3.0 end visible trailer] ============================================= -->
8601
8602</body>
8603</html>
8604