xref: /plan9/sys/src/cmd/gs/doc/History1.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 1.n</title>
5<!-- $Id: History1.htm,v 1.39 2005/10/20 19:46:23 ray Exp $ -->
6<!-- Originally: history1.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 1.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="#Version1.3">Version 1.3 (6/20/89)</a>
32<ul>
33<li><a href="#V1.3_Interpreter">Interpreter</a>,
34    <a href="#V1.3_Fonts">Fonts</a>,
35    <a href="#V1.3_Library">Library</a>,
36    <a href="#V1.3_Usage_procedures">Usage procedures</a>
37</ul>
38<li><a href="#Version1.2">Version 1.2 (2/22/89)</a>
39<ul>
40<li><a href="#V1.2_Interpreter">Interpreter</a>,
41    <a href="#V1.2_Library">Library</a>,
42    <a href="#V1.2_Usage_procedures">Usage procedures</a>
43</ul>
44<li><a href="#Version1.1">Version 1.1 (2/12/89)</a>
45<ul>
46<li><a href="#V1.1_Interpreter">Interpreter</a>,
47    <a href="#V1.1_Initialization">Initialization (ghost.ps, gfonts.ps)</a>,
48    <a href="#V1.1_Library">Library</a>,
49    <a href="#V1.1_Usage_procedures">Usage procedures</a>
50</ul>
51<li><a href="#Version1.0">Version 1.0 (8/11/88)</a>
52</ul></blockquote>
53
54<!-- [1.2 end table of contents] =========================================== -->
55
56<!-- [1.3 begin hint] ====================================================== -->
57
58<p>
59This document is a history of Ghostscript releases numbered 1.n.  For more
60recent changes, see the the other history documents and, for the latest
61versions, the news:
62
63<blockquote>
64<a href="News.htm">News</a><br>
65<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
66<a href="History3.htm">History of Ghostscript versions 3.n</a><br>
67<a href="History2.htm">History of Ghostscript versions 2.n</a><br>
68History of Ghostscript versions 1.n (this document)<br>
69</blockquote>
70
71<p>For other information, see the <a href="Readme.htm">Ghostscript
72overview</a>.
73
74<!-- [1.3 end hint] ======================================================== -->
75
76<hr>
77
78<!-- [1.0 end visible header] ============================================== -->
79
80
81<h2><a name="Version1.3"></a>Version 1.3 (6/20/89)</h2>
82<pre>
83This release should have had a lot more things in it, but time pressure
84and the already long delay in getting it out made it necessary to push it
85out the door in an incomplete state (e.g., no testing on X systems
86whatsoever).
87
88</pre>
89<h3><a name="V1.3_Interpreter"></a>Interpreter</h3>
90
91<pre>
92Makes -d and -D equivalent on the command line.  Adds a new switch -s / -S
93that defines a name as a string rather than a token.
94
95Arranges things so that if -sLIB=_a_prefix_ is defined on the command
96line, (filename) run will look for _a_prefix_filename before giving up if
97filename isn't the name of an accessible file.
98
99Changes showpage from an operator to a procedure.  The definition of
100showpage in ghost.ps does a copypage, beeps the console, waits for the
101user to type a character (normally a &lt;return&gt;, since line buffering is
102always enabled), and then does an erasepage and an initgraphics.
103
104Adds a new initialization file, gdevs.ps, containing device-dependent
105parameters.  The default window size for X Windows is properly set to 612
106x 792, i.e., 8.5" x 11".
107
108Adds a new optional initialization file, statusd.ps, that provides dummy
109definitions for the names found in statusdict on LaserWriters.
110
111Adds a new operator, getenv, to get information from the shell
112environment.
113
114Adds a new predefined operator, defaultdevicename, that returns either (X)
115or (EGA) according to how the interpreter was built.
116
117Adds a new type, devicetype, and new operators deviceparams, getscanlines,
118makedevice, makeimagedevice, and setdevice.  Changes currentdevice to
119return a device object rather than a set of parameters.
120
121Makes the scanner recognize reals with 'e' exponent notation, and handle
122reals with more than 9 digits.
123
124Fixes a bug that made names starting with digits read incorrectly.
125
126Fixes a bug in the exp operator that made it not pop its first argument
127from the stack.
128
129Fixes a bug in the rand operator that made it return negative values about
130half the time.
131
132Fixes a bug in equality comparison (eq, ne, and several other operators)
133that made unequal operator objects occasionally appear to be equal on DOS
134systems.
135
136Fixes a bug in the bind operator that made it not work on packed arrays.
137
138Changes the internal representation of dictionaries so they can be
139expanded or contracted dynamically.  Adds a new operator, setmaxlength, to
140change the allocated size of a dictionary.
141
142Changes sstorei.h so that non-DOS compilers don't encounter the #pragma
143directive used by Turbo C.
144
145Restores the display mode (on MS-DOS systems) when exiting.
146
147</pre>
148<h3><a name="V1.3_Fonts"></a>Fonts</h3>
149
150<pre>
151Makes undefined characters in the standard font display as tilde rather
152than blank (or causing an error).  Unmapped character codes (those mapped
153to .notdef in the encoding) still display as nothing, per the PostScript
154manual.
155
156</pre>
157<h3><a name="V1.3_Library"></a>Library</h3>
158
159<pre>
160Adds a new header file, gxbitmap.h, with some new documentation describing
161the internal storage format for bitmaps.
162
163Makes numerous internal changes in the character / font cache, affecting
164many of the routines in gxcache.c.
165
166Fixes a bug in gz_draw_line / gz_fill_trapezoid that made nearly
167horizontal lines display wrong.
168
169Fixes a bug in gs_scale that made scaling not work if the coordinate
170system was rotated or skewed.
171
172Extends the font cache so it will handle characters rotated by multiples
173of 90 degrees.
174
175Changes the second argument of gx_path_bbox and gx_path_is_rectangle to be
176a gs_fixed_rect * rather than a fixed [4].
177
178Changes gs_matrix_rotate so it handles multiples of 90 degrees as a
179special case.
180
181Changes the definition of the gx_device structure to accommodate the new
182device operators, and adds corresponding library calls.
183
184Changes the type for a device color index from int to gx_color_index
185(equivalent to unsigned long).  ***NOTE***: this affects existing clients
186and drivers in a non-trivial way on MS-DOS systems.
187
188Changes gs_malloc and gs_free to take a client name string as an argument.
189
190</pre>
191<h3><a name="V1.3_Usage_procedures"></a>Usage procedures</h3>
192
193<pre>
194Changes the compilation rules for Unix systems to not use the -o and -c
195compiler flags together, to be compatible with more versions of cc.
196
197Changes the gcc makefile to use $(GCC) rather than gcc as the compiler
198name.
199
200Moves the -1 flag for the MS-DOS compiler from the cc*.bat files to the
201makefile.
202
203Changes CCDEBUG to CCFLAGS, and adds ASMFLAGS, in DOS makefile.
204
205Adds -DFOR80386 and /DFOR80386 to enable use of 80386 instructions in
206assembly code on DOS systems.
207
208Merges the DEBUG and gs_DEBUG switches.  There is now only a single DEBUG
209switch that affects both the interpreter and the library.
210
211Adds a new compilation switch, -DNOPRIVATE, that makes private (static)
212variables and procedures public for debugging and profiling (only needed
213on DOS systems).
214
215Adds the DOS executable (gs.exe and gs.map) to the distribution fileset.
216
217Adds new platform-specific code files, gp-*.c, for a few things like
218reading the clock.
219
220Adds a new documentation file, drivers.doc, that describes the interface
221between Ghostscript and device drivers.
222
223</pre>
224
225<hr>
226
227<h2><a name="Version1.2"></a>Version 1.2 (2/22/89)</h2>
228
229<h3><a name="V1.2_Interpreter"></a>Interpreter</h3>
230
231<pre>
232Adds the new facilities in version 25 of PostScript: //name for immediate
233lookup, packed arrays (setpacking, currentpacking, packedarray operators),
234and new font cache parameters (setcacheparams, currentcacheparams
235operators).
236
237Adds new operators (setfileposition, currentfileposition) for random
238access to files.
239
240Extends readhexstring to take either a string or a file, just like token.
241
242Fixes a bug that caused the 'for' operator (and a couple of others) to
243randomly smash memory locations on PC platforms.
244
245</pre>
246<h3><a name="V1.2_Library"></a>Library</h3>
247
248<pre>
249Renames the init_device driver procedure as open_device, and adds a
250corresponding close_device.
251
252Adds new procedures to read and set the cache limit values (implementing
253the currentcacheparams and setcacheparams operators).
254
255</pre>
256<h3><a name="V1.2_Usage_procedures"></a>Usage procedures</h3>
257
258<pre>
259Changes the name of the Unix makefile to ux-cc-x.mak, and adds a new Unix
260makefile, ux-gcc-x.mak, for using gcc instead of cc.  (The latter doesn't
261actually work yet.)
262
263Changes the name of the single built-in font from uglyfont.cp to
264ugly10.cp.
265
266</pre>
267
268<hr>
269
270<h2><a name="Version1.1"></a>Version 1.1 (2/12/89)</h2>
271
272<h3><a name="V1.1_Interpreter"></a>Interpreter</h3>
273
274<pre>
275Makes the scanner treat ^Z (ASCII code 26) as whitespace: it erroneously
276treated ^R (ASCII code 22, or octal 26) as whitespace.
277
278Makes the token and readline operators, and the syntax for comments,
279recognize \r (code 13), \n (code 10), and \r\n as equivalent end-of-line
280indicators.  The token and readline operators will skip over any of these
281sequences at the end of a token or line respectively, and a comment will
282read through any of these sequences.  The other file operators (read,
283write, readstring, writestring) do nothing special with these characters.
284
285Changes the debug switch name from -D to -Z.  Adds a -D switch for
286defining names in systemdict from the command line.  Defines -DDEBUG for
287printing out debugging information during initialization, and -DNODISPLAY
288for suppressing display output.
289
290Corrects a bug that prevented the error machinery from working -- in
291version 1.0, errors always dumped the stacks and aborted interpretation.
292
293Corrects a bug that made eq and ne not work for strings.
294
295Makes the atan (arctangent) operator normalize its results according to
296the PostScript convention.
297
298Makes the div operator check for zero divisor.
299
300Makes unimplemented operators (resetfile, echo, save, restore, strokepath,
301reversepath) truly undefined.
302
303Makes the interactive loop exit gracefully on end-of-file: in version 1.0
304this caused an infinite loop.
305
306Implements the status operator.
307
308Corrects a bug that made the 'for' operator deliver garbage values if one
309or more of the operands (start, increment, end) was a real.
310
311Corrects a bug that made the arc and arcn operators not pop their operands
312from the stack.
313
314Corrects a bug that made the kshow operator crash the interpreter.
315
316Corrects a bug that made the print operator fail on machines that don't
317pass structure arguments by simply pushing the contents of the structure.
318
319Adds a new operator, imagecharpath, to convert images to
320addcharpath-compatible outlines.
321
322Changes alloc and alloc_free to use char * rather than byte *, and
323alloc_free to return void rather than int, making them compatible with the
324library's expectations and with malloc/free.
325
326Explicitly casts all expressions of the form (ptr1 - ptr2) used as
327procedure arguments to unsigned, to handle an incompatibility between
328Turbo C versions 1.5 and 2.0.
329
330Changes some of the internal conventions for operators: operators that
331push on the operand stack must check for overflow explicitly, and
332operators that modify the execution stack must return a special code.
333(See oper.h for details.)
334
335</pre>
336<h3><a name="V1.1_Initialization"></a>Initialization (ghost.ps, gfonts.ps)</h3>
337
338<pre>
339Modifies ghost.ps and gfonts.ps so they print debugging information only
340if the name DEBUG is defined.  (Presumably the user will set this from the
341command line with -DDEBUG.)
342
343Changes ghost.ps so it initializes the nominal screen size to 640 x 350 on
344MS-DOS systems as before, but to 612 x 792 on Unix systems, which is an
3458.5" x 11" page at 72 pixels per inch.
346
347</pre>
348<h3><a name="V1.1_Library"></a>Library</h3>
349
350<pre>
351Corrects a bug that made the fill and eofill operators (gs_fill and
352gs_eofill) not perform a newpath afterward.
353
354Corrects the bug that made thin, nearly horizontal lines display wrong (as
355a series of disconnected dots) in the MS-DOS implementation.
356
357Fixes a bug in the EGA driver that often made it fill rectangular regions
358with black around information being displayed in white.
359
360Completely changes the internal representation of outline fonts, and
361changes btoi.ps (a Ghostscript language program for converting bitmaps to
362outlines) to use a new library call, gs_imagecharpath.
363
364Changes the extension for outline font files from .gf to .cp.
365
366Adds a new debugging switch, q, that traces all rectangle fill operations.
367
368Adds a new debugging switch, v, that traces all device-level output calls.
369
370Explicitly casts pointer differences passed as procedure arguments, as in
371the interpreter.
372
373Makes stringwidth work if there is no current point.  In version 1.0, this
374gave a nocurrentpoint error.
375
376</pre>
377<h3><a name="V1.1_Usage_procedures"></a>Usage procedures</h3>
378
379<pre>
380Changes the name of the 'read me' file from READ.ME to README.
381
382Removes a bogus line (invoking the 'mcopy' utility) from the makefile.
383
384Splits up the makefile into a generic part (ghost.mak) and
385platform-specific parts (dos-ega.mak, unix-x11.mak).  The latter are what
386is actually executed.
387
388Puts the definitions of the DEBUG and gs_DEBUG compilation flags into the
389makefile instead of in ghost.h and gx.h respectively.
390
391Changes the names of the documentation files to be a little less cryptic.
392Changes all the file names to lower-case in the documentation.  Adds
393installation information to make.doc.
394
395Changes all function definitions (but not prototype declarations) to ANSI
396syntax, and adds a preprocessing step (ansi2knr) to convert them to K&amp;R
397syntax on Unix systems.
398
399Changes the normal MS-DOS link configuration to not assume the presence of
400an 80x87 coprocessor, and describes how to increase performance if a
401coprocessor is present.
402
403Changes the names of all the interpreter .c files, except stream.c, to
404begin with 'i'.
405
406</pre>
407
408<hr>
409
410<h2><a name="Version1.0"></a>Version 1.0 (8/11/88)</h2>
411
412<pre>
413First version released to the public.
414</pre>
415
416<!-- [3.0 begin visible trailer] =========================================== -->
417<hr>
418
419<p><small>Copyright &copy; 1996, 1997, 1998 Aladdin Enterprises.
420All rights reserved.</small>
421
422<p>This software is provided AS-IS with no warranty, either express or
423<p>implied.
424<p>
425<p>This software is distributed under license and may not be copied,
426<p>modified or distributed except as expressly authorized under the terms
427<p>of the license contained in the file LICENSE in this distribution.
428<p>
429<p>For more information about licensing, please refer to
430<p>http://www.ghostscript.com/licensing/. For information on
431<p>commercial licensing, go to http://www.artifex.com/licensing/ or
432<p>contact Artifex Software, Inc., 101 Lucas Valley Road #110,
433<p>San Rafael, CA  94903, U.S.A., +1(415)492-9861.
434
435<p>
436<small>Ghostscript version 8.53, 20 October 2005
437
438<!-- [3.0 end visible trailer] ============================================= -->
439
440</body>
441</html>
442