summaryrefslogtreecommitdiff
path: root/Master/xemtex/doc/ghostscript/History3.htm
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2005-12-28 00:07:27 +0000
committerKarl Berry <karl@freefriends.org>2005-12-28 00:07:27 +0000
commit30dd9f517c9c093ff3319061647a4555264f7914 (patch)
tree0d7a349bf99be5a42cc9c5a80a30f3b7136c4ccd /Master/xemtex/doc/ghostscript/History3.htm
parent08ab8dce83f53b0f915cb66a37bbc8478b22c307 (diff)
trunk
git-svn-id: svn://tug.org/texlive/trunk@9 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/xemtex/doc/ghostscript/History3.htm')
-rw-r--r--Master/xemtex/doc/ghostscript/History3.htm8597
1 files changed, 8597 insertions, 0 deletions
diff --git a/Master/xemtex/doc/ghostscript/History3.htm b/Master/xemtex/doc/ghostscript/History3.htm
new file mode 100644
index 00000000000..88fdbb934a1
--- /dev/null
+++ b/Master/xemtex/doc/ghostscript/History3.htm
@@ -0,0 +1,8597 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>History of Ghostscript versions 3.n</title>
+<!-- $Id: History3.htm,v 1.13.2.11.2.6 2003/05/17 14:38:59 giles Exp $ -->
+<!-- Originally: history3.txt -->
+<!--
+ WARNING: do not use Pete Kaiser's emacs function "gs-toc" alone to
+ re-create the table of contents here, because it will replace the
+ hand-edited TOC subheads with a separate subhead for each H2 in
+ the body of the file. Or if you do, first look at the original
+ TOC to see how to edit it for visual conciseness.
+-->
+<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
+</head>
+
+<body>
+<!-- [1.0 begin visible header] ============================================ -->
+
+<!-- [1.1 begin headline] ================================================== -->
+
+<h1>History of Ghostscript versions 3.n</h1>
+
+<!-- [1.1 end headline] ==================================================== -->
+
+<!-- [1.2 begin table of contents] ========================================= -->
+
+<h2>Table of contents</h2>
+
+<blockquote><ul>
+<li><a href="#Version3.70p1">Version 3.70 patch 1 (6/24/96)</a>
+<ul>
+<li><a href="#V3.70p1_Procedures">Procedures</a>,
+ <a href="#V3.70p1_Drivers">Drivers</a>
+</ul>
+<li><a href="#Version3.70">Version 3.70 (limited) (6/23/96)</a>
+<ul>
+<li><a href="#V3.70_Documentation">Documentation</a>,
+ <a href="#V3.70_Procedures">Procedures</a>,
+ <a href="#V3.70_Drivers">Drivers</a>,
+ <a href="#V3.70_Platforms">Platforms</a>,
+ <a href="#V3.70_Fonts">Fonts</a>,
+ <a href="#V3.70_Interpreter">Interpreter</a>,
+ <a href="#V3.70_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.70_Streams">Streams</a>,
+ <a href="#V3.70_Library">Library</a>
+</ul>
+<li><a href="#Version3.69">Version 3.69 (limited) (6/14/96)</a>
+<ul>
+<li><a href="#V3.69_Documentation">Documentation</a>,
+ <a href="#V3.69_Procedures">Procedures</a>,
+ <a href="#V3.69_Utilities">Utilities</a>,
+ <a href="#V3.69_Drivers">Drivers</a>,
+ <a href="#V3.69_Platforms">Platforms</a>,
+ <a href="#V3.69_Fonts">Fonts</a>,
+ <a href="#V3.69_Interpreter">Interpreter</a>,
+ <a href="#V3.69_Library">Library</a>
+</ul>
+<li><a href="#Version3.68p4">Version 3.68 patch 4 (5/23/96)</a>
+<ul>
+<li><a href="#V3.68p4_Documentation">Documentation</a>,
+ <a href="#V3.68p4_Procedures">Procedures</a>,
+ <a href="#V3.68p4_Drivers">Drivers</a>,
+ <a href="#V3.68p4_Platforms">Platforms</a>,
+ <a href="#V3.68p4_Fonts">Fonts</a>,
+ <a href="#V3.68p4_Interpreter">Interpreter</a>,
+ <a href="#V3.68p4_Library">Library</a>
+</ul>
+<li><a href="#Version3.68p3">Version 3.68 patch 3 (5/17/96)</a>
+<ul>
+<li><a href="#V3.68p3_Procedures">Procedures</a>,
+ <a href="#V3.68p3_Utilities">Utilities</a>,
+ <a href="#V3.68p3_Drivers">Drivers</a>,
+ <a href="#V3.68p3_Platforms">Platforms</a>,
+ <a href="#V3.68p3_Interpreter">Interpreter</a>,
+ <a href="#V3.68p3_Library">Library</a>
+</ul>
+<li><a href="#Version3.68p2">Version 3.68 patch 2 (5/13/96)</a>
+<ul>
+<li><a href="#V3.68p2_Documentation">Documentation</a>,
+ <a href="#V3.68p2_Procedures">Procedures</a>,
+ <a href="#V3.68p2_Drivers">Drivers</a>,
+ <a href="#V3.68p2_Interpreter">Interpreter</a>,
+ <a href="#V3.68p2_Streams">Streams</a>,
+ <a href="#V3.68p2_Library">Library</a>
+</ul>
+<li><a href="#Version3.68p1">Version 3.68 patch 1 (5/10/96)</a>
+<ul>
+<li><a href="#V3.68p1_Procedures">Procedures</a>
+</ul>
+<li><a href="#Version3.68">Version 3.68 (limited) (5/9/96)</a>
+<ul>
+<li><a href="#V3.68_Documentation">Documentation</a>,
+ <a href="#V3.68_Procedures">Procedures</a>,
+ <a href="#V3.68_Utilities">Utilities</a>,
+ <a href="#V3.68_Drivers">Drivers</a>,
+ <a href="#V3.68_Platforms">Platforms</a>,
+ <a href="#V3.68_Fonts">Fonts</a>,
+ <a href="#V3.68_Interpreter">Interpreter</a>,
+ <a href="#V3.68_Streams">Streams</a>,
+ <a href="#V3.68_Library">Library</a>
+</ul>
+<li><a href="#Version3.67">Version 3.67 (limited) (4/12/96)</a>
+<ul>
+<li><a href="#V3.67_Documentation">Documentation</a>,
+ <a href="#V3.67_Procedures">Procedures</a>,
+ <a href="#V3.67_Platforms">Platforms</a>,
+ <a href="#V3.67_Interpreter">Interpreter</a>,
+ <a href="#V3.67_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.67_Library">Library</a>
+</ul>
+<li><a href="#Version3.66">Version 3.66 (limited) (4/8/96)</a>
+<ul>
+<li><a href="#V3.66_Documentation">Documentation</a>,
+ <a href="#V3.66_Procedures">Procedures</a>,
+ <a href="#V3.66_Utilities">Utilities</a>,
+ <a href="#V3.66_Drivers">Drivers</a>,
+ <a href="#V3.66_Platforms">Platforms</a>,
+ <a href="#V3.66_Fonts">Fonts</a>,
+ <a href="#V3.66_Interpreter">Interpreter</a>,
+ <a href="#V3.66_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.66_Streams">Streams</a>,
+ <a href="#V3.66_Library">Library</a>
+</ul>
+<li><a href="#Version3.65">Version 3.65 (limited) (3/9/96)</a>
+<ul>
+<li><a href="#V3.65_Documentation">Documentation</a>,
+ <a href="#V3.65_Procedures">Procedures</a>,
+ <a href="#V3.65_Utilities">Utilities</a>,
+ <a href="#V3.65_Drivers">Drivers</a>,
+ <a href="#V3.65_Platforms">Platforms</a>,
+ <a href="#V3.65_Interpreter">Interpreter</a>,
+ <a href="#V3.65_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.65_Streams">Streams</a>,
+ <a href="#V3.65_Library">Library</a>
+</ul>
+<li><a href="#Version3.64">Version 3.64 (limited, incremental) (1/27/96)</a>
+<ul>
+<li><a href="#V3.64_Documentation">Documentation</a>,
+ <a href="#V3.64_Procedures">Procedures</a>,
+ <a href="#V3.64_Utilities">Utilities</a>,
+ <a href="#V3.64_Drivers">Drivers</a>,
+ <a href="#V3.64_Platforms">Platforms</a>,
+ <a href="#V3.64_Interpreter">Interpreter</a>,
+ <a href="#V3.64_Streams">Streams</a>,
+ <a href="#V3.64_Library">Library</a>
+</ul>
+<li><a href="#Version3.63">Version 3.63 (limited, incremental) (1/14/96)</a>
+<ul>
+<li><a href="#V3.63_Documentation">Documentation</a>,
+ <a href="#V3.63_Procedures">Procedures</a>,
+ <a href="#V3.63_Utilities">Utilities</a>,
+ <a href="#V3.63_Drivers">Drivers</a>,
+ <a href="#V3.63_Platforms">Platforms</a>,
+ <a href="#V3.63_Interpreter">Interpreter</a>,
+ <a href="#V3.63_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.63_Streams">Streams</a>,
+ <a href="#V3.63_Library">Library</a>
+</ul>
+<li><a href="#Version3.62">Version 3.62 (limited, incremental) (12/26/95)</a>
+<ul>
+<li><a href="#V3.62_Documentation">Documentation</a>,
+ <a href="#V3.62_Procedures">Procedures</a>,
+ <a href="#V3.62_Interpreter">Interpreter</a>,
+ <a href="#V3.62_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.62_Library">Library</a>
+</ul>
+<li><a href="#Version3.61">Version 3.61 (limited) (12/10/95)</a>
+<ul>
+<li><a href="#V3.61_Documentation">Documentation</a>,
+ <a href="#V3.61_Procedures">Procedures</a>,
+ <a href="#V3.61_Utilities">Utilities</a>,
+ <a href="#V3.61_Drivers">Drivers</a>,
+ <a href="#V3.61_Platforms">Platforms</a>,
+ <a href="#V3.61_Fonts">Fonts</a>,
+ <a href="#V3.61_Interpreter">Interpreter</a>,
+ <a href="#V3.61_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.61_Streams">Streams</a>,
+ <a href="#V3.61_Library">Library</a>
+</ul>
+<li><a href="#Version3.60">Version 3.60 (limited) (11/20/95)</a>
+<ul>
+<li><a href="#V3.60_Documentation">Documentation</a>,
+ <a href="#V3.60_Procedures">Procedures</a>,
+ <a href="#V3.60_Utilities">Utilities</a>,
+ <a href="#V3.60_Drivers">Drivers</a>,
+ <a href="#V3.60_Platforms">Platforms</a>,
+ <a href="#V3.60_Fonts">Fonts</a>,
+ <a href="#V3.60_Interpreter">Interpreter</a>,
+ <a href="#V3.60_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.60_Streams">Streams</a>,
+ <a href="#V3.60_Library">Library</a>
+</ul>
+<li><a href="#Version3.53">Version 3.53 (1/10/96)</a>
+<ul>
+<li><a href="#V3.53_Documentation">Documentation</a>,
+ <a href="#V3.53_Procedures">Procedures</a>,
+ <a href="#V3.53_Utilities">Utilities</a>,
+ <a href="#V3.53_Drivers">Drivers</a>,
+ <a href="#V3.53_Platforms">Platforms</a>,
+ <a href="#V3.53_Fonts">Fonts</a>,
+ <a href="#V3.53_Interpreter">Interpreter</a>,
+ <a href="#V3.53_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.53_Streams">Streams</a>,
+ <a href="#V3.53_Library">Library</a>
+</ul>
+<li><a href="#Version3.52">Version 3.52 (limited) (10/6/95)</a>
+<ul>
+<li><a href="#V3.52_Procedures">Procedures</a>,
+ <a href="#V3.52_Interpreter">Interpreter</a>,
+ <a href="#V3.52_Library">Library</a>
+</ul>
+<li><a href="#Version3.51">Version 3.51 (9/27/95)</a>
+<ul>
+<li><a href="#V3.51_Documentation">Documentation</a>,
+ <a href="#V3.51_Procedures">Procedures</a>,
+ <a href="#V3.51_Utilities">Utilities</a>,
+ <a href="#V3.51_Drivers">Drivers</a>,
+ <a href="#V3.51_Platforms">Platforms</a>,
+ <a href="#V3.51_Interpreter">Interpreter</a>,
+ <a href="#V3.51_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.51_Library">Library</a>
+</ul>
+<li><a href="#Version3.50">Version 3.50 (limited) (9/24/95)</a>
+<ul>
+<li><a href="#V3.50_Procedures">Procedures</a>,
+ <a href="#V3.50_Utilities">Utilities</a>,
+ <a href="#V3.50_Drivers">Drivers</a>,
+ <a href="#V3.50_Interpreter">Interpreter</a>,
+ <a href="#V3.50_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.50_Library">Library</a>
+</ul>
+<li><a href="#Version3.49">Version 3.49 (limited) (9/20/95)</a>
+<ul>
+<li><a href="#V3.49_Documentation">Documentation</a>,
+ <a href="#V3.49_Procedures">Procedures</a>,
+ <a href="#V3.49_Drivers">Drivers</a>,
+ <a href="#V3.49_Platforms">Platforms</a>,
+ <a href="#V3.49_Interpreter">Interpreter</a>,
+ <a href="#V3.49_Library">Library</a>
+</ul>
+<li><a href="#Version3.48">Version 3.48 (limited) (9/17/95)</a>
+<ul>
+<li><a href="#V3.48_Documentation">Documentation</a>,
+ <a href="#V3.48_Procedures">Procedures</a>,
+ <a href="#V3.48_Drivers">Drivers</a>,
+ <a href="#V3.48_Platforms">Platforms</a>,
+ <a href="#V3.48_Interpreter">Interpreter</a>,
+ <a href="#V3.48_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.48_Library">Library</a>
+</ul>
+<li><a href="#Version3.47">Version 3.47 (limited) (9/14/95)</a>
+<ul>
+<li><a href="#V3.47_Documentation">Documentation</a>,
+ <a href="#V3.47_Procedures">Procedures</a>,
+ <a href="#V3.47_Utilities">Utilities</a>,
+ <a href="#V3.47_Drivers">Drivers</a>,
+ <a href="#V3.47_Platforms">Platforms</a>,
+ <a href="#V3.47_Fonts">Fonts</a>,
+ <a href="#V3.47_Interpreter">Interpreter</a>,
+ <a href="#V3.47_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.47_Streams">Streams</a>,
+ <a href="#V3.47_Library">Library</a>
+</ul>
+<li><a href="#Version3.46">Version 3.46 (limited) (9/4/95)</a>
+<ul>
+<li><a href="#V3.46_Documentation">Documentation</a>,
+ <a href="#V3.46_Procedures">Procedures</a>,
+ <a href="#V3.46_Utilities">Utilities</a>,
+ <a href="#V3.46_Drivers">Drivers</a>,
+ <a href="#V3.46_Platforms">Platforms</a>,
+ <a href="#V3.46_Interpreter">Interpreter</a>,
+ <a href="#V3.46_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.46_Library">Library</a>
+</ul>
+<li><a href="#Version3.45">Version 3.45 (limited) (8/27/95)</a>
+<ul>
+<li><a href="#V3.45_Documentation">Documentation</a>,
+ <a href="#V3.45_Procedures">Procedures</a>,
+ <a href="#V3.45_Utilities">Utilities</a>,
+ <a href="#V3.45_Drivers">Drivers</a>,
+ <a href="#V3.45_Platforms">Platforms</a>,
+ <a href="#V3.45_Interpreter">Interpreter</a>,
+ <a href="#V3.45_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.45_Streams">Streams</a>,
+ <a href="#V3.45_Library">Library</a>
+</ul>
+<li><a href="#Version3.44">Version 3.44 (limited) (8/21/95)</a>
+<ul>
+<li><a href="#V3.44_Documentation">Documentation</a>,
+ <a href="#V3.44_Procedures">Procedures</a>,
+ <a href="#V3.44_Utilities">Utilities</a>,
+ <a href="#V3.44_Drivers">Drivers</a>,
+ <a href="#V3.44_Platforms">Platforms</a>,
+ <a href="#V3.44_Interpreter">Interpreter</a>,
+ <a href="#V3.44_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.44_Library">Library</a>
+</ul>
+<li><a href="#Version3.43">Version 3.43 (limited) (8/10/95)</a>
+<ul>
+<li><a href="#V3.43_Documentation">Documentation</a>,
+ <a href="#V3.43_Procedures">Procedures</a>,
+ <a href="#V3.43_Platforms">Platforms</a>,
+ <a href="#V3.43_Fonts">Fonts</a>,
+ <a href="#V3.43_Interpreter">Interpreter</a>,
+ <a href="#V3.43_Streams">Streams</a>,
+ <a href="#V3.43_Library">Library</a>
+</ul>
+<li><a href="#Version3.42">Version 3.42 (limited) (8/2/95)</a>
+<ul>
+<li><a href="#V3.42_Documentation">Documentation</a>,
+ <a href="#V3.42_Procedures">Procedures</a>,
+ <a href="#V3.42_Platforms">Platforms</a>,
+ <a href="#V3.42_Interpreter">Interpreter</a>,
+ <a href="#V3.42_Streams">Streams</a>,
+ <a href="#V3.42_Library">Library</a>
+</ul>
+<li><a href="#Version3.41">Version 3.41 (limited) (7/27/95)</a>
+<ul>
+<li><a href="#V3.41_Documentation">Documentation</a>,
+ <a href="#V3.41_Procedures">Procedures</a>,
+ <a href="#V3.41_Utilities">Utilities</a>,
+ <a href="#V3.41_Drivers">Drivers</a>,
+ <a href="#V3.41_Platforms">Platforms</a>,
+ <a href="#V3.41_Fonts">Fonts</a>,
+ <a href="#V3.41_Interpreter">Interpreter</a>,
+ <a href="#V3.41_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.41_Streams">Streams</a>,
+ <a href="#V3.41_Library">Library</a>
+</ul>
+<li><a href="#Version3.40">Version 3.40 (limited) (6/28/95)</a>
+<ul>
+<li><a href="#V3.40_Documentation">Documentation</a>,
+ <a href="#V3.40_Procedures">Procedures</a>,
+ <a href="#V3.40_Utilities">Utilities</a>,
+ <a href="#V3.40_Platforms">Platforms</a>,
+ <a href="#V3.40_Interpreter">Interpreter</a>,
+ <a href="#V3.40_Streams">Streams</a>,
+ <a href="#V3.40_Library">Library</a>
+</ul>
+<li><a href="#Version3.39">Version 3.39 (limited) (6/24/95)</a>
+<ul>
+<li><a href="#V3.39_Documentation">Documentation</a>,
+ <a href="#V3.39_Procedures">Procedures</a>,
+ <a href="#V3.39_Utilities">Utilities</a>,
+ <a href="#V3.39_Platforms">Platforms</a>,
+ <a href="#V3.39_Fonts">Fonts</a>,
+ <a href="#V3.39_Interpreter">Interpreter</a>,
+ <a href="#V3.39_Streams">Streams</a>,
+ <a href="#V3.39_Library">Library</a>
+</ul>
+<li><a href="#Version3.38">Version 3.38 (limited) (6/18/95)</a>
+<ul>
+<li><a href="#V3.38_Documentation">Documentation</a>,
+ <a href="#V3.38_Procedures">Procedures</a>,
+ <a href="#V3.38_Utilities">Utilities</a>,
+ <a href="#V3.38_Drivers">Drivers</a>,
+ <a href="#V3.38_Platforms">Platforms</a>,
+ <a href="#V3.38_Fonts">Fonts</a>,
+ <a href="#V3.38_Interpreter">Interpreter</a>,
+ <a href="#V3.38_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.38_Streams">Streams</a>,
+ <a href="#V3.38_Library">Library</a>
+</ul>
+<li><a href="#Version3.37">Version 3.37 (limited) (5/11/95)</a>
+<ul>
+<li><a href="#V3.37_Documentation">Documentation</a>,
+ <a href="#V3.37_Procedures">Procedures</a>,
+ <a href="#V3.37_Utilities">Utilities</a>,
+ <a href="#V3.37_Drivers">Drivers</a>,
+ <a href="#V3.37_Fonts">Fonts</a>,
+ <a href="#V3.37_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.37_Interpreter_PDF">Interpreter (PDF)</a>
+</ul>
+<li><a href="#Version3.36">Version 3.36 (limited) (5/4/95)</a>
+<ul>
+<li><a href="#V3.36_Documentation">Documentation</a>,
+ <a href="#V3.36_Procedures">Procedures</a>,
+ <a href="#V3.36_Drivers">Drivers</a>,
+ <a href="#V3.36_Interpreter">Interpreter</a>,
+ <a href="#V3.36_Library">Library</a>
+</ul>
+<li><a href="#Version3.35">Version 3.35 (internal) (5/2/95)</a>
+<ul>
+<li><a href="#V3.35_Documentation">Documentation</a>,
+ <a href="#V3.35_Procedures">Procedures</a>,
+ <a href="#V3.35_Utilities">Utilities</a>,
+ <a href="#V3.35_Drivers">Drivers</a>,
+ <a href="#V3.35_Platforms">Platforms</a>,
+ <a href="#V3.35_Fonts">Fonts</a>,
+ <a href="#V3.35_Interpreter">Interpreter</a>,
+ <a href="#V3.35_Library">Library</a>
+</ul>
+<li><a href="#Version3.34">Version 3.34 (internal) (4/18/95)</a>
+<ul>
+<li><a href="#V3.34_Documentation">Documentation</a>,
+ <a href="#V3.34_Procedures">Procedures</a>,
+ <a href="#V3.34_Interpreter">Interpreter</a>,
+ <a href="#V3.34_Library">Library</a>
+</ul>
+<li><a href="#Version3.33">Version 3.33 (4/13/95)</a>
+<ul>
+<li><a href="#V3.33_Documentation">Documentation</a>,
+ <a href="#V3.33_Procedures">Procedures</a>,
+ <a href="#V3.33_Utilities">Utilities</a>,
+ <a href="#V3.33_Drivers">Drivers</a>,
+ <a href="#V3.33_Platforms">Platforms</a>,
+ <a href="#V3.33_Fonts">Fonts</a>,
+ <a href="#V3.33_Library">Library</a>
+</ul>
+<li><a href="#Version3.32">Version 3.32 (4/7/95)</a>
+<ul>
+<li><a href="#V3.32_Documentation">Documentation</a>,
+ <a href="#V3.32_Procedures">Procedures</a>,
+ <a href="#V3.32_Utilities">Utilities</a>,
+ <a href="#V3.32_Drivers">Drivers</a>,
+ <a href="#V3.32_Platforms">Platforms</a>,
+ <a href="#V3.32_Interpreter">Interpreter</a>,
+ <a href="#V3.32_Streams">Streams</a>,
+ <a href="#V3.32_Library">Library</a>
+</ul>
+<li><a href="#Version3.31">Version 3.31 (4/2/95)</a>
+<ul>
+<li><a href="#V3.31_Documentation">Documentation</a>,
+ <a href="#V3.31_Procedures">Procedures</a>,
+ <a href="#V3.31_Utilities">Utilities</a>,
+ <a href="#V3.31_Drivers">Drivers</a>,
+ <a href="#V3.31_Platforms">Platforms</a>,
+ <a href="#V3.31_Interpreter">Interpreter</a>,
+ <a href="#V3.31_Streams">Streams</a>,
+ <a href="#V3.31_Library">Library</a>
+</ul>
+<li><a href="#Version3.30">Version 3.30 (beta) (3/21/95)</a>
+<ul>
+<li><a href="#V3.30_Documentation">Documentation</a>,
+ <a href="#V3.30_Utilities">Utilities</a>,
+ <a href="#V3.30_Drivers">Drivers</a>,
+ <a href="#V3.30_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.30_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.30_Library">Library</a>
+</ul>
+<li><a href="#Version3.29">Version 3.29 (internal) (3/8/95)</a>
+<ul>
+<li><a href="#V3.29_Documentation">Documentation</a>,
+ <a href="#V3.29_Procedures">Procedures</a>,
+ <a href="#V3.29_Utilities">Utilities</a>,
+ <a href="#V3.29_Fonts">Fonts</a>,
+ <a href="#V3.29_Drivers">Drivers</a>,
+ <a href="#V3.29_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.29_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.29_Streams">Streams</a>,
+ <a href="#V3.29_Library">Library</a>
+</ul>
+<li><a href="#Version3.28">Version 3.28 (beta) (2/13/95)</a>
+<ul>
+<li><a href="#V3.28_Documentation">Documentation</a>,
+ <a href="#V3.28_Procedures">Procedures</a>,
+ <a href="#V3.28_Utilities">Utilities</a>,
+ <a href="#V3.28_Drivers">Drivers</a>,
+ <a href="#V3.28_Interpreter">Interpreter</a>,
+ <a href="#V3.28_Library">Library</a>
+</ul>
+<li><a href="#Version3.27">Version 3.27 (beta)(withdrawn) (2/8/95)</a>
+<ul>
+<li><a href="#V3.27_Documentation">Documentation</a>,
+ <a href="#V3.27_Procedures">Procedures</a>,
+ <a href="#V3.27_Utilities">Utilities</a>,
+ <a href="#V3.27_Drivers">Drivers</a>,
+ <a href="#V3.27_Platforms">Platforms</a>,
+ <a href="#V3.27_Fonts">Fonts</a>,
+ <a href="#V3.27_Interpreter">Interpreter</a>,
+ <a href="#V3.27_Streams">Streams</a>,
+ <a href="#V3.27_Library">Library</a>
+</ul>
+<li><a href="#Version3.26">Version 3.26 (beta) (2/1/95)</a>
+<ul>
+<li><a href="#V3.26_Documentation">Documentation</a>,
+ <a href="#V3.26_Procedures">Procedures</a>,
+ <a href="#V3.26_Utilities">Utilities</a>,
+ <a href="#V3.26_Drivers">Drivers</a>,
+ <a href="#V3.26_Platforms">Platforms</a>,
+ <a href="#V3.26_Interpreter">Interpreter</a>,
+ <a href="#V3.26_Streams">Streams</a>,
+ <a href="#V3.26_Library">Library</a>
+</ul>
+<li><a href="#Version3.25">Version 3.25 (beta) (1/24/95)</a>
+<ul>
+<li><a href="#V3.25_Documentation">Documentation</a>,
+ <a href="#V3.25_Procedures">Procedures</a>,
+ <a href="#V3.25_Drivers">Drivers</a>,
+ <a href="#V3.25_Platforms">Platforms</a>,
+ <a href="#V3.25_Interpreter">Interpreter</a>,
+ <a href="#V3.25_Library">Library</a>
+</ul>
+<li><a href="#Version3.24">Version 3.24 (beta) (1/17/95)</a>
+<ul>
+<li><a href="#V3.24_Documentation">Documentation</a>,
+ <a href="#V3.24_Procedures">Procedures</a>,
+ <a href="#V3.24_Drivers">Drivers</a>,
+ <a href="#V3.24_Platforms">Platforms</a>,
+ <a href="#V3.24_Fonts">Fonts</a>,
+ <a href="#V3.24_Interpreter">Interpreter</a>,
+ <a href="#V3.24_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.24_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.24_Streams">Streams</a>,
+ <a href="#V3.24_Library">Library</a>
+</ul>
+<li><a href="#Version3.23">Version 3.23 (beta) (1/5/95)</a>
+<ul>
+<li><a href="#V3.23_Documentation">Documentation</a>,
+ <a href="#V3.23_Procedures">Procedures</a>,
+ <a href="#V3.23_Utilities">Utilities</a>,
+ <a href="#V3.23_Drivers">Drivers</a>,
+ <a href="#V3.23_Platforms">Platforms</a>,
+ <a href="#V3.23_Fonts">Fonts</a>,
+ <a href="#V3.23_Interpreter_PostScript">Interpreter (PostScript)</a>,
+ <a href="#V3.23_Interpreter_PDF">Interpreter (PDF)</a>,
+ <a href="#V3.23_Streams">Streams</a>,
+ <a href="#V3.23_Library">Library</a>
+</ul>
+<li><a href="#Version3.22">Version 3.22 (beta) (11/30/94)</a>
+<ul>
+<li><a href="#V3.22_Procedures">Procedures</a>,
+ <a href="#V3.22_Drivers">Drivers</a>,
+ <a href="#V3.22_Platforms">Platforms</a>,
+ <a href="#V3.22_Fonts">Fonts</a>,
+ <a href="#V3.22_Interpreter">Interpreter</a>,
+ <a href="#V3.22_Streams">Streams</a>,
+ <a href="#V3.22_Library">Library</a>
+</ul>
+<li><a href="#Version3.21">Version 3.21 (beta) (11/17/94)</a>
+<ul>
+<li><a href="#V3.21_Documentation">Documentation</a>,
+ <a href="#V3.21_Procedures">Procedures</a>,
+ <a href="#V3.21_Utilities">Utilities</a>,
+ <a href="#V3.21_Drivers">Drivers</a>,
+ <a href="#V3.21_Platforms">Platforms</a>,
+ <a href="#V3.21_Fonts">Fonts</a>,
+ <a href="#V3.21_Interpreter">Interpreter</a>,
+ <a href="#V3.21_Streams">Streams</a>,
+ <a href="#V3.21_Library">Library</a>
+</ul>
+<li><a href="#Version3.20">Version 3.20 (beta) (10/31/94)</a>
+<ul>
+<li><a href="#V3.20_Documentation">Documentation</a>,
+ <a href="#V3.20_Procedures">Procedures</a>,
+ <a href="#V3.20_Utilities">Utilities</a>,
+ <a href="#V3.20_Drivers">Drivers</a>,
+ <a href="#V3.20_Platforms">Platforms</a>,
+ <a href="#V3.20_Fonts">Fonts</a>,
+ <a href="#V3.20_Interpreters">Interpreters</a>,
+ <a href="#V3.20_Library">Library</a>
+</ul>
+<li><a href="#Version3.13">Version 3.13(private) (10/3/94)</a>
+<ul>
+<li><a href="#V3.13_Documentation">Documentation</a>,
+ <a href="#V3.13_Procedures">Procedures</a>,
+ <a href="#V3.13_Utilities">Utilities</a>,
+ <a href="#V3.13_Drivers">Drivers</a>,
+ <a href="#V3.13_Platforms">Platforms</a>,
+ <a href="#V3.13_Fonts">Fonts</a>,
+ <a href="#V3.13_Interpreter">Interpreter</a>,
+ <a href="#V3.13_Streams">Streams</a>,
+ <a href="#V3.13_Library">Library</a>
+</ul>
+<li><a href="#Version3.12">Version 3.12 (9/29/94)</a>
+<ul>
+<li><a href="#V3.12_Documentation">Documentation</a>,
+ <a href="#V3.12_Procedures">Procedures</a>,
+ <a href="#V3.12_Drivers">Drivers</a>,
+ <a href="#V3.12_Platforms">Platforms</a>,
+ <a href="#V3.12_Interpreter">Interpreter</a>,
+ <a href="#V3.12_Streams">Streams</a>,
+ <a href="#V3.12_Library">Library</a>
+</ul>
+<li><a href="#Version3.1.1">Version 3.1.1 (9/25/94)</a>
+<ul>
+<li><a href="#V3.1.1_Documentation">Documentation</a>,
+ <a href="#V3.1.1_Procedures">Procedures</a>,
+ <a href="#V3.1.1_Drivers">Drivers</a>,
+ <a href="#V3.1.1_Platforms">Platforms</a>,
+ <a href="#V3.1.1_Interpreter">Interpreter</a>
+</ul>
+<li><a href="#Version3.1">Version 3.1 (9/20/94)</a>
+<ul>
+<li><a href="#V3.1_Documentation">Documentation</a>,
+ <a href="#V3.1_Procedures">Procedures</a>,
+ <a href="#V3.1_Drivers">Drivers</a>,
+ <a href="#V3.1_Interpreter">Interpreter</a>,
+ <a href="#V3.1_Streams">Streams</a>,
+ <a href="#V3.1_Library">Library</a>
+</ul>
+<li><a href="#Version3.0.3">Version 3.0.3 (9/16/94)</a>
+<ul>
+<li><a href="#V3.0.3_Documentation">Documentation</a>,
+ <a href="#V3.0.3_Procedures">Procedures</a>,
+ <a href="#V3.0.3_Utilities">Utilities</a>,
+ <a href="#V3.0.3_Drivers">Drivers</a>,
+ <a href="#V3.0.3_Platforms">Platforms</a>,
+ <a href="#V3.0.3_Fonts">Fonts</a>,
+ <a href="#V3.0.3_Streams">Streams</a>,
+ <a href="#V3.0.3_Interpreter">Interpreter</a>,
+ <a href="#V3.0.3_Library">Library</a>
+</ul>
+<li><a href="#Version3.02">Version 3.02 (8/30/94)</a>
+<ul>
+<li><a href="#V3.02_Documentation">Documentation</a>,
+ <a href="#V3.02_Procedures">Procedures</a>,
+ <a href="#V3.02_Utilities">Utilities</a>,
+ <a href="#V3.02_Drivers">Drivers</a>,
+ <a href="#V3.02_Platforms">Platforms</a>,
+ <a href="#V3.02_Fonts">Fonts</a>,
+ <a href="#V3.02_Interpreter">Interpreter</a>,
+ <a href="#V3.02_Streams">Streams</a>,
+ <a href="#V3.02_Library">Library</a>
+</ul>
+<li><a href="#Version3.01">Version 3.01 (8/14/94)</a>
+<ul>
+<li><a href="#V3.01_Documentation">Documentation</a>,
+ <a href="#V3.01_Procedures">Procedures</a>,
+ <a href="#V3.01_Utilities">Utilities</a>,
+ <a href="#V3.01_Drivers">Drivers</a>,
+ <a href="#V3.01_Platforms">Platforms</a>,
+ <a href="#V3.01_Fonts">Fonts</a>,
+ <a href="#V3.01_Interpreter">Interpreter</a>,
+ <a href="#V3.01_Streams">Streams</a>,
+ <a href="#V3.01_Library">Library</a>
+</ul>
+<li><a href="#Version3.0">Version 3.0 (8/1/94)</a>
+<ul>
+<li><a href="#V3.0_Documentation">Documentation</a>,
+ <a href="#V3.0_Procedures">Procedures</a>,
+ <a href="#V3.0_Utilities">Utilities</a>,
+ <a href="#V3.0_Drivers">Drivers</a>,
+ <a href="#V3.0_Platforms">Platforms</a>,
+ <a href="#V3.0_Fonts">Fonts</a>,
+ <a href="#V3.0_Interpreter">Interpreter</a>,
+ <a href="#V3.0_Streams">Streams</a>,
+ <a href="#V3.0_Library">Library</a>
+</ul>
+</ul></blockquote>
+
+<!-- [1.2 end table of contents] =========================================== -->
+
+<!-- [1.3 begin hint] ====================================================== -->
+
+<p>
+This document is a history of Ghostscript releases numbered 3.n. For more
+recent changes, see the the other history documents and, for the latest
+versions, the news:
+
+<blockquote>
+<a href="News.htm">News</a><br>
+<a href="History4.htm">History of Ghostscript versions 4.n</a><br>
+History of Ghostscript versions 3.n (this document)<br>
+<a href="History2.htm">History of Ghostscript versions 2.n</a><br>
+<a href="History1.htm">History of Ghostscript versions 1.n</a>
+</blockquote>
+
+<p>For other information, see the <a href="Readme.htm">Ghostscript
+overview</a>.
+
+<!-- [1.3 end hint] ======================================================== -->
+
+<hr>
+
+<!-- [1.0 end visible header] ============================================== -->
+
+<h2><a name="Version3.70p1"></a>Version 3.70 patch 1 (6/24/96)</h2>
+
+<p>
+This contains a few last-minute patches before the release.
+
+<h3><a name="V3.70p1_Procedures"></a>Procedures</h3><pre>
+Comments out the color inkjet drivers in the cc-based makefile, because a
+bug in Sun's cc prevents them from compiling. (cc-head.mak)
+
+</pre><h3><a name="V3.70p1_Drivers"></a>Drivers</h3><pre>
+Fixes bugs:
+ - The os2prn driver smashed memory. (gdevos2p.c)
+ - Some initialized structures weren't declared 'static'.
+(gdevpdf.c, gdevpdfm.c)
+ - The PNG driver wouldn't compile with some older versions of the
+PNG library. (gdevpng.c)
+
+</pre>
+
+<h2><a name="Version3.70"></a>Version 3.70 (limited) (6/23/96)</h2>
+
+<p>
+This is the candidate fileset for 4.0. Aside from one optimization
+for the PDF writer, the only changes are bug fixes.
+
+<h3><a name="V3.70_Documentation"></a>Documentation</h3><pre>
+
+Renames all the documentation files from *.doc to *.txt, since the .doc
+extension didn't give any information about the format of the file.
+(readme, *.doc, *.txt)
+
+Notes that IJG JPEG library v6[a] is now required. (jpeg.mak)
+
+Brings ps2pdf.1 up to date. (ps2pdf.1)
+
+Adds a new file describing Aladdin's C coding practices. (c-style.txt)
+
+Updates the man pages to refer to version 4.0. (gs.1, pdf2ps.1, ps2ascii.1,
+ps2pdf.1)
+
+</pre><h3><a name="V3.70_Procedures"></a>Procedures</h3><pre>
+
+Changes some file names to fit within the MS-DOS 8.3 limit. (gs.mak)
+
+Adds the PDF writer to the remaining 32-bit configurations (Watcom, OS/2,
+MSC). (watc.mak, watcwin.mak, os2.mak, msc.mak, msvcwint.mak)
+
+Changes the -sFONTMAP= switch so it can take a list of font names, like a
+search path. (use.txt)
+
+</pre><h3><a name="V3.70_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Signed and unsigned values were mixed inconsistently. (gdevcdj.c)
+ - PDF files could contain e-format floating point numbers, which the
+PDF specification doesn't allow. (gdevpdfx.h, gdevpdf*.c)
+ - The PDF writer didn't handle glyphshow properly. (gs_pdfwr.ps)
+ - The PDF writer did the wrong thing with fonts whose FontMatrix had
+a non-zero translation component. (gs_pdfwr.ps, gdevpdft.c)
+ - The stand-alone bounding box device could crash when setting
+parameters. (gdevbbox.c)
+ - The mswinpr2 driver smashed memory. (gdevwpr2.c)
+
+Changes the PDF writer so that if it encounters a re-encoded character, it
+tries to map it to an encoded character in the standard (ISO Latin-1)
+encoding rather than converting the entire string containing it to a bitmap.
+This dramatically improves output file size for files with a few divergently
+encoded characters, but it may cause the text in the PDF file to differ from
+the text in the PostScript input. (gdevpdft.c)
+
+Disallows BitsPerPixel=16 in the MS Windows and OS/2 drivers, since this bit
+depth is not supported by Windows and would require special extra buffering.
+(install.txt, dwtext.h, dwtext.cpp, gdevmswn.c, gdevpm.c, gdevwpr2.c)
+
+</pre><h3><a name="V3.70_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - On the PC platforms, file names weren't changed to reflect the
+value of CONFIG. (gs.mak, bc*.mak, ms*.mak, os2.mak, tc*.mak, watc*.mak,
+wccommon.mak)
+
+Modifies some makefiles for greater reusability. (bclib.mak, watclib.mak)
+
+</pre><h3><a name="V3.70_Fonts"></a>Fonts</h3><pre>
+
+Changes the font searching rules in the following NON-BACKWARD-COMPATIBLE
+way: (gs_fonts.ps, gs_res.ps)
+ - -sFONTMAP=files specifies a list of files containing fontmaps;
+previously, it specified only a single fontmap file.
+ - If -sFONTMAP= is not used, the interpreter reads the Fontmaps from
+*all* directories on the search path, and does so even if FONTPATH or
+GS_FONTPATH is set; previously, it read only the first Fontmap, and only if
+[GS_]FONTPATH was not set.
+ - Fontmap(s) take precedence over [GS_]FONTPATH; previously,
+[GS_]FONTPATH caused Fontmap to be ignored. (You can still force Fontmap to
+be ignored with -dNOFONTMAP.)
+ - Earlier [GS_]FONTPATH entries take precedence over later;
+previously, later entries took precedence over earlier. Note that this is
+different from Fontmap: earlier Fontmaps in the search path take precedence
+over later, but within a single Fontmap, later entries take precedence over
+earlier (for backward compatibility).
+ - [GS_]FONTPATH is consulted only if there is no Fontmap entry for a
+font, or no Fontmap entry leads to successful loading; previously,
+[GS_]FONTPATH was always consulted at startup.
+ - If loading a font fails, the interpreter tries the next Fontmap
+entry; previously, it fell back to font substitution.
+
+</pre><h3><a name="V3.70_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Filters didn't peek ahead for an EOD (see Streams below).
+(zfileio.c, zpaint.c)
+
+Splits up a file to allow internal access to user and system parameters even
+in Level 1. (zmisc2.c, zusparam.c)
+
+Adds LIBPATH as a predefined name in systemdict. Its value is an array of
+strings comprising the library search path. (imain.c)
+
+</pre><h3><a name="V3.70_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - A Dests dictionary entry with an array (rather than a dictionary)
+value caused an error. (pdf_main.ps)
+ - Rotated pages could have incorrect translation and/or clipping.
+(pdf_main.ps)
+
+</pre><h3><a name="V3.70_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - If a buffer boundary fell just before an EOD, and the client read
+exactly as much data as was present before the EOD, filters didn't consume
+the EOD. (This is required as a tricky consequence of the Adobe
+specification.) (stream.h, strimpl.h, stream.c)
+
+</pre><h3><a name="V3.70_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - An extra column of bits could get turned on at the right edge of
+masked or monochrome images. (gximage2.c)
+ - Rasterizing very long curves could cause arithmetic errors or
+floating point overflows. (gxpcopy.c)
+ - Banding with large line widths could truncate curves or introduce
+spurious lines. (gxclpath.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.69"></a>Version 3.69 (limited) (6/14/96)</h2>
+
+<p>
+More bug fixes, plus one irresistible new feature: the ability to use
+TrueType fonts as freely as Type 1 fonts. Also, one new feature (outside
+clipping) that was needed for Aladdin's PCL XL project. We incremented the
+version number because of the change in trapezoid and path filling (see
+under Library below).
+
+<h3><a name="V3.69_Documentation"></a>Documentation</h3><pre>
+Brings documentation about fonts up to date. (fonts.doc)
+
+Updates current.doc to reflect changes since 3.53. (current.doc)
+
+Updates the DLL documentation to reflect recent changes. (dll.doc)
+
+Documents a workaround for the code generation bug in gcc 2.7.x. (make.doc)
+
+Changes the contact information for potential commercial customers in
+Europe. (new-user.doc)
+
+Updates the OS/2 documentation to make it current. (install.doc, make.doc)
+
+Documents -dCOLORSCREEN=0. (use.doc)
+
+</pre><h3><a name="V3.69_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - 'make clean' didn't work in the Watcom environment.
+(wmakebat.bat, gs.mak, msc.mak, msvcwint.mak, os2.mak, tccommon.mak,
+unixhead.mak, wccommon.mak)
+ - The X11 libraries were listed in an incorrect order.
+(ansihead.mak, cc-head.mak, gcc-head.mak, ugcclib.mak, unix-end.mak)
+ - The OS/2 makefile didn't ignore errors from `erase' commands.
+(os2.mak)
+
+Adds the PDF writer to the 32-bit MS Windows configuration. (bcwin32.mak)
+
+Adds the PNG drivers to the 32-bit MS Windows platform, since they now
+compile properly. (bcwin32.mak)
+
+Changes the ttfont feature so that it refers to support for direct usage of
+TrueType fonts; puts support for Type 42 fonts into a separate feature
+(type42). (gs.mak, int.mak)
+
+Adds direct TrueType font support to the Windows platforms. (bcwin.mak,
+bcwin32.mak)
+
+Rewrites vms.mak to be structured more like the other makefiles. (vms.mak,
+modules.lis)
+
+Makes the device lists in vms-*.mak the same as those for the Unix
+configurations. (vms-cc.mak, vms-decc.mak, vms-gcc.mak)
+
+Changes the default X library directory for gcc to /usr/X11/lib.
+(gcc-head.mak)
+
+Adds the list of devices to --help, since HylaFax depends on this.
+(imainarg.c)
+
+Adds -dCOLORSCREEN=0 to indicate use of 4 separate color screens with the
+same frequency and angle. (gs_init.ps)
+
+</pre><h3><a name="V3.69_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - When ps2epsi encountered a blank page, it called the
+(undocumented) .quit operator with only one argument, causing a stack
+underflow. (ps2epsi.ps)
+ - An extraneous file was included in the fileset. (checkacc.ps)
+ - A file was omitted from the fileset. (bench.c)
+ - Images in PostScript files produced by pdf2ps were processed about
+50 times slower than they should have been. (gs_pdf.ps)
+
+</pre><h3><a name="V3.69_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - An #include was omitted. (gdevpdfi.c)
+ - The BJC driver could get into an inconsistent state. (gdevcdj.c)
+ - Braces were omitted around the values for two initialized byte
+arrays. (gdevpcx.c)
+ - A function used 'float' in its argument list, causing problems in
+mixed ANSI/non-ANSI compilation. (gdevcdj.c)
+ - signed and unsigned char pointers were used inconsistently.
+(gdevcdj.c, gdevcgml.c)
+ - Some header files weren't protected against double inclusion.
+(gdevprn.h, gdevtifs.h)
+ - The 24-bit PNG driver included unnecessary copies of the color
+mapping procedures. (gdevpng.c)
+
+Fixes bugs in the PDF writer:
+ - The PDF writer sometimes produced a double // in front of a filter
+name. (gdevpdfi.c)
+ - The PDF writer produced zero-width, zero-height images for
+non-standard fonts. (bug introduced since 3.68) (gdevpdfi.c)
+ - The PDF writer got confused if the input file invoked
+setpagedevice. (gdevpdfp.c)
+ - The PDF writer put annotations on the page after the one they were
+supposed to be on. (gdevpdf.c)
+ - The PDF writer sometimes failed to set the font when needed.
+(gdevpdf.c)
+ - The PDF writer could produce in-line images that were too large.
+(gdevpdfi.c)
+ - The PDF writer didn't scale explicit character and word spacing
+(ashow/widthshow/awidthshow) properly. (gdevpdft.c)
+ - The PDF writer didn't copy named destination or article title
+strings, possibly leading to dangling pointers. (gdevpdf.c, gdevpdfm.c)
+ - The PDF writer produced incorrect output for re-encoded fonts.
+(It now converts any string containing characters in non-standard positions
+to bitmaps; this will be fixed in a later release.) (gs_pdfwr.ps,
+gdevpdfx.h, gdevpdfp.c, gdevpdft.c)
+
+Updates a few drivers for the change in the handling of band device
+procedures. (gdevcp50.c, gdevdjet.c)
+
+Updates the X Windows driver for strip halftones. (gdevx.c)
+
+Adds anti-aliasing capability to the os2pm device. (gdevpm.c)
+
+Increases the sizes of some tables in the PDF writer. (gdevpdfx.h)
+
+</pre><h3><a name="V3.69_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - A patch for the MS Windows platform was accidentally omitted.
+(gp_mswin.c)
+ - A block of code was accidentally duplicated. (dwmain.cpp)
+ - An identifier exceeded VAX VMS C's limit of 31 characters.
+(gscspace.h)
+ - File name enumeration didn't work properly on Unix systems
+(still/again). (gp_unifs.c)
+ - On MS Windows, If you closed Ghostscript with the system menu, you
+only closed the text window; Ghostscript kept running and you had to use the
+task manager to kill it. (dwmain.cpp, dwmainc.cpp, dwtext.cpp)
+ - Some DLL-related typedefs were not consistent. (dwdll.h, gsdll.h,
+dpmainc.c, dwdll.cpp)
+ - Attempts to call the DLL before it was initialized were not
+detected. (gsdll.c)
+ - Bitmap line lengths were rounded up even on 32-bit Windows, which
+doesn't want this. (gdevwdib.c)
+
+Further improves the handling of attempts to use the DLL when it is already
+in use. (dwdll.cpp, gsdll.c)
+
+Adds a DLL-compatible main program for OS/2. (dpmainc.c, gp_os2.c, gsdll.c)
+
+</pre><h3><a name="V3.69_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The WingDings TrueType font wasn't loaded properly. (gs_ttf.ps)
+
+Makes changes so that TrueType fonts can appear in the Fontmap and can be
+loaded directly. (gs_fonts.ps, gs_ttf.ps)
+
+</pre><h3><a name="V3.69_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Executing a .quit with only 1 element on the operand stack caused
+an invalid access. (zcontrol.c)
+ - The usage help message contained incorrect double %%s.
+(imainarg.c)
+ - If an initialization file tried to use any Encodings other than
+the 4 registered ones, it couldn't find them. (gs_init.ps, gs_res.ps)
+ - Places that expected arrays of coordinates (rectangles,
+x/y/xyshow) didn't accept packed arrays. (ibnum.c, zdps1.c)
+ - filterdict was still visible after initialization. (gs_init.ps)
+ - The usage error message wasn't terminated by a newline.
+(imainarg.c)
+ - setcacheparams (or setting the MaxFontCache user parameter) didn't
+actually affect the size of the character cache. (zfont.c, zmisc2.c)
+ - The main interpreter loop declared iref as a ref *, even though it
+may only be a ref_packed *. (iref.h, interp.c)
+
+Changes the character cache so it ignores absurd FontBBox values. Nothing
+in the Adobe spec suggests doing this, but it is necessary for handling
+questionable output produced by PageMaker 5.0 (an Adobe product!).
+(zchar1.c)
+
+Changes some type declarations slightly to reduce the number of 'discarding
+const' compiler warnings. (igc.h, igc.c, igcref.c)
+
+Adds .setclipoutside and .currentclipoutside operators for accessing the new
+outside clipping capability. (zpath.c)
+
+Adds the dictionary stack to the information printed in case of a fatal
+problem. (imain.c)
+
+Adds .set/currentrenderalgorithm operators for testing. (zrop.c)
+
+</pre><h3><a name="V3.69_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The TrueType rasterizer didn't map quadratic to cubic splines
+well, and didn't handle off-curve points at the end of a contour properly.
+(gstype42.c)
+ - An #include was omitted. (gsimage.c, gxclimag.c)
+ - Some compilers complained about statements with no effect, or
+comma operators with no effect on the left. (gschar.c, gxcpath.c, gxfill.c)
+ - TrueType or Type 42 glyphs with a repeat count that crossed a
+contour boundary produced incorrect output. (gstype42.c)
+ - TrueType / Type 42 composite glyphs involving rotation were placed
+incorrectly. (gstype42.c)
+ - Type 42 fonts with an absent or incorrect FontBBox could fail to
+produce output. (gstype42.c)
+ - Some header files weren't protected against double inclusion.
+(gsio.h, gdebug.h)
+ - Decoding filters didn't "look ahead" to detect EOD, so if the last
+read operation before closing the filter ended just before the EOD mark, the
+EOD mark might not be absorbed. (stream.h, stream.c)
+ - Filling paths consisting of multiple subpaths that overlap in Y
+produced slightly inaccurate output. We were unable to find a way to fix
+this without making a NON-BACKWARD-COMPATIBLE change in the interface for
+the recently introduced fill_trapezoid device procedure. (gxdevice.h,
+gdevbbox.c, gdevddrw.c, gdevnfwd.c, gxfill.c)
+ - When banding, get_bits didn't detect calls with out-of-range Y
+values. (gxclread.c)
+ - setcacheparams didn't actually affect the size of the character
+cache. (gsfont.h, gxbcache.h, gxfcache.h, gschar.c, gsfont.c, gxbcache.c,
+gxccman.c, gxclbits.c)
+ - When banding, colored halftones could be mangled. (gxclread.c)
+
+Fixes bugs in the bounding box device:
+ - The bounding box device could give bizarre results if any objects
+crossed the lower edge of the page. (gdevbbox.c)
+ - The bounding box device could get a memory access error when
+processing image data. (gdebbox.c)
+ - The bounding box device ran the default drawing algorithms even if
+it had no target (performance bug only). (gdevbbox.c)
+ - The bounding box device computed an incorrect (too small) box for
+partially clipped bitmap images. (gdevbbox.c)
+ - The bounding box device got confused by files that filled the
+entire page with a background color. (gdevbbox.c)
+ - The bounding box device produced infinite-height boxes for certain
+kinds of data. (gdevbbox.c)
+
+Changes some type declarations slightly to reduce the number of 'discarding
+const' compiler warnings. (gsmemory.h, gsstruct.h)
+
+Adds the capability of clipping to the outside rather than the inside of the
+clipping path. This is required for emulating an obscure feature of the
+Microsoft Windows GDI. (gspath.h, gxclpath.h, gxpath.h, gxcpath.h,
+gzcpath.h, gspath.c, gxacpath.c, gxclpath.c, gxclread.c, gxcpath.c.)
+
+Makes it possible for band devices to select the underlying memory device
+used to accumulate the actual bits. This is required for (at least) PCL5
+emulation. This requires adding a procedure to the gx_device_printer
+structure, which, for devices that initialize the structure without using
+the macros in gdevprn.h or access the printer-specific procedures directly,
+is a NON-BACKWARD-COMPATIBLE change. (gdevprn.h, gxclist.h, gxdevice.h,
+gdevdflt.c, gdevprn.c, gxclread.c)
+
+Speeds up handling of rotated or halftoned masked images. (gximage2.c)
+
+Adds an output_page procedure to the bounding box device, for testing.
+(gdevbbox.c)
+
+Adds a sample device that keeps track of the "render algorithm", for PCL5c
+emulation. (gdevrrgb.c)
+
+</pre>
+
+<h2><a name="Version3.68p4"></a>Version 3.68 patch 4 (5/23/96)</h2>
+
+<p>
+More minor bug fixes, mostly related to the MS Windows implementation.
+
+<h3><a name="V3.68p4_Documentation"></a>Documentation</h3><pre>
+Further updates various doc files to make them more useful to new users.
+(NEWS, README, current.doc, helpers.doc, new-user.doc)
+
+Adds user-contributed documentation for ps2pdf. (ps2pdf.doc, unix-end.mak)
+
+Documents a bug in the Borland C++ 4.52 compiler, and where to find the
+patch for it. (make.doc)
+
+</pre><h3><a name="V3.68p4_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - A command line exceeded the MS-DOS 120 character limit.
+(devs.mak)
+
+A file was accidentally omitted from the fileset. (wmakebat.bat)
+
+</pre><h3><a name="V3.68p4_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Many of the 'show' operators didn't work properly if the PDF
+writer was included in the configuration. (gs_pdfwr.ps)
+ - x_wrap_get_bits was ridiculously slow. (It still is, but not
+quite as ridiculously.) (gxcindex.h, gdevxalt.c)
+ - The PDF writer generated CR instead of CalRGB, which is legal per
+the Adobe spec but not compatible with some Adobe Acrobat products.
+(gdevpdfi.c)
+ - Some signed/unsigned discrepancies caused compilation warnings.
+(gdevpdfm.c, gdevpdfp.c, gdevpdft.c)
+
+Fixes bugs in the Windows driver:
+ - An accidentally opened tiny window didn't get closed.
+(gdevwdib.c)
+ - The name DllInit was misleading, and this procedure wasn't being
+called whtn the DLL was loaded, so the DLL couldn't know the instance
+handle. (gp_mswin.c)
+ - The code didn't recognize Win32s (vs. Windows 95) correctly.
+(dwmain.cpp, gdevwdib.c, gp_mswin.h, gp_mswin.c, gsdll16.rc)
+ - Some compiler warnings needed fixing. (gdevwdib.c)
+ - gsdll16.def and gsdll32.def were different. (gsdll32.def)
+ - A GPF leaving the 16-bit DLL loaded could make the DLL permanently
+unusable. (dwmain.cpp)
+ - Two obsolete files were still included in the fileset.
+(gswin.def, gswin32.def)
+
+Adds a compile-time option to the 'bit' drivers to expand 4-bit pixels to
+32-bit. This was required for tracking down customer problems, because the
+only tools we have available for displaying CMYK images require 32 bits per
+pixel. (gdevbit.c)
+
+</pre><h3><a name="V3.68p4_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - In DEC C, &lt;time.h&gt; does define the timeval struct. (time_.h)
+
+Changes gsdll_init() to take an additional argument, a window handle. This
+is a NON-BACKWARD-COMPATIBLE change. (dll.doc, dwdll.h, gsdll.h, dwdll.cpp,
+dwmain.cpp, dwmainc.cpp, gsdll.c)
+
+</pre><h3><a name="V3.68p4_Fonts"></a>Fonts</h3><pre>
+
+Updates more Fontmaps to include the new URW++ fonts. (Fontmap.OS2,
+Fontmap.ATM)
+
+</pre><h3><a name="V3.68p4_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The default operator array table wasn't big enough. (iinit.c)
+ - Some signed/unsigned discrepancies caused compilation warnings.
+(imain.c, imainarg.c, zfile.c)
+
+Adds encoding vectors for Windows 3.1 Latin 1, Latin 2, and Latin 5
+encodings. None of these are loaded in the standard configuration.
+(gs_wl{1,2,5}_e.ps)
+
+</pre><h3><a name="V3.68p4_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some tracing output was incorrect or missing. (gxdither.c)
+ - Resized objects in the C heap had incorrect bookkeeping
+information (bug introduced in 3.68). (gsmemory.c)
+ - Image pixels that fell exactly on device half-pixel boundaries
+could get discarded. (gximage0.c)
+ - The bounding box device didn't set a variable properly and didn't
+implement end_image, leading to invalid memory accesses. (gdevbbox.c)
+ - Fonts with BuildChar routines written in C didn't work properly
+with kshow or xyshow. (gschar.c)
+
+Adds some additional tracing output for Patterns. (gxpcmap.c)
+
+Adds tracing output for freeing malloc'ed blocks at the end of execution.
+(gsmemory.c)
+
+Adds a gs_dashpath procedure that expands dashes in the same way that
+gs_flattenpath expands curves. (gspath.h, gspath1.c)
+
+</pre>
+
+<h2><a name="Version3.68p3"></a>Version 3.68 patch 3 (5/17/96)</h2>
+
+<p>
+More bug fixes during the beta test period. AccurateScreens now works
+properly.
+
+<h3><a name="V3.68p3_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The help message was too long to fit on a PC screen or standard
+terminal. (imainarg.c)
+ - Failure to run tar_cat wasn't detected. (unix-end.mak,
+unixtail.mak)
+
+</pre><h3><a name="V3.68p3_Utilities"></a>Utilities</h3><pre>
+Fixes bugs:
+ - In the PostScript files produced by pdf2ps, images using ASCII85
+encoding would cause a typecheck error. (gs_pdf.ps)
+ - pdf2ps wrote out strings longer than 200 characters incorrectly.
+(pdf_2ps.ps)
+
+</pre><h3><a name="V3.68p3_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs in gdevcdj.c (according to the author, we have no way to test
+this):
+ - The driver used to use Colors as well as ProcessColorModel to
+define the process color model. (devices.doc, gdevbjc.h, gdevcdj.c)
+ - Incorrect or inconsistent settings of BitsPerPixel and
+ProcessColorModel, or setting one but not the other, could leave the driver
+in an inconsistent state. (gdevcdj.c)
+
+Fixes bugs in the MS Windows driver:
+ - Insufficient memory for the backing bitmap could cause a GPF.
+(gdevmswn.c, gdevwdib.c)
+ - Invalid parameters could cause a crash within the DLL code.
+(gdevwdib.c)
+
+Adds a user-contributed driver for the CalComp Raster Format. (devs.mak,
+gdevccr.c)
+
+Adds an anti-aliasing option for MS Windows. (gdevmswn.c, gdevwdib.c)
+
+</pre><h3><a name="V3.68p3_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs in the Windows platform:
+ - One had to type "quit" twice to exit. (dwdll.h, dwdll.cpp)
+
+</pre><h3><a name="V3.68p3_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Platform fonts didn't work properly if the document's primary
+encoding was the standard MS Windows encoding. (ifont.h, gs_wan_e.ps)
+ - stringwidth with a Type 1 font could give a spurious typecheck
+error (bug introduced in 3.65). (zcharout.c)
+ - If a DOS editor added a ^Z to the end of the Fontmap file, an
+error occurred during initialization. (gs_fonts.ps)
+ - Halftones that didn't specify a value for AccurateScreens
+sometimes ignored the setting of the AccurateScreens user parameter.
+(zht2.c)
+
+</pre><h3><a name="V3.68p3_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gs_join_none was defined, but not implemented. (gxstroke.c)
+ - A bookkeeping list for fonts could get confused, causing invalid
+memory accesses. (gsfont.c)
+ - An I/O error or internal error would cause the band list
+rasterizer to go into an infinite loop. (gxclread.c)
+ - The algorithm for choosing screen angles and frequencies produced
+poor results. (gshtscr.c)
+ - Color screens were broken (bug introduced in 3.68). (gxdht.h,
+gzht.h, gsht.c, gshtscr.c)
+
+</pre>
+
+<h2><a name="Version3.68p2"></a>Version 3.68 patch 2 (5/13/96)</h2>
+
+<p>
+This is another set of patches for the next general release.
+
+<h3><a name="V3.68p2_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Windows NT and Windows 95 implementations were identified as
+"under development" rather than available. (README)
+ - There were several other minor errors in the README file.
+(README)
+ - The claimed current IJG JPEG version was incorrect. (jpeg.mak)
+
+Splits off information for new users into a separate file. (README,
+new-user.doc)
+
+</pre><h3><a name="V3.68p2_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - gettimeofday takes 2 arguments on SVR4 systems more recent than
+SVR4.0. (make.doc, ansihead.mak, cc-head.mak, gcc-head.mak, time_.h)
+
+Changes the default Unix data installation directory from /usr/local/lib to
+/usr/local/share, which seems to be favored by more recent Unix systems
+(except for some GNU/Linux versions, which still use /usr/local/lib, and BSD/OS,
+which puts Ghostscript in /usr/contrib/lib.) (ansihead.mak, cc-head.mak,
+gcc-head.mak, ugcclib.mak)
+
+Changes the unset commands in the Unix script to assignments, because a few
+older Unix shells don't provide unset. (unixtail.mak)
+
+</pre><h3><a name="V3.68p2_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - An #include incorrectly referred directly to a system header.
+(gdevpdft.c)
+ - CMYK devices took an excessive amount of time clearing the page to
+white. (gdevm32.c)
+
+Adds a compile-time option to the 'bit' drivers to remove top and bottom
+whitespace. This change was required in order to track down a customer bug.
+(gdevbit.c)
+
+</pre><h3><a name="V3.68p2_Interpreter"></a>Interpreter</h3><pre>
+
+Updates the interpreter for the split in the gstate API. (igstate.h)
+
+</pre><h3><a name="V3.68p2_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Some compilers don't define NULL widely enough. (spngp.c)
+
+</pre><h3><a name="V3.68p2_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was a minor typo (&amp; for &amp;&amp;) that didn't affect execution.
+(gxccman.c)
+ - There was a trailing comma in an enumeration. (gsiparam.h)
+ - Internal and public interfaces weren't separated properly. THIS
+IS A NON-BACKWARD-COMPATIBLE CHANGE for clients using certain undocumented
+interfaces to the graphics state. (gsstate.h, gxstate.h, gzstate.h,
+gsstate.c)
+ - A 'private' declaration was missing (yet again). (gxclimag.c)
+
+</pre>
+
+<h2><a name="Version3.68p1"></a>Version 3.68 patch 1 (5/10/96)</h2>
+
+<p>
+This is the first bug fix (patch) incremental release for the next
+general release.
+
+<h3><a name="V3.68p1_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - Many Windows-specific files were omitted from the previous
+fileset: dw*.rc, dw*.cpp.
+
+</pre>
+
+<h2><a name="Version3.68"></a>Version 3.68 (limited) (5/9/96)</h2>
+
+<p>
+This release cleans up the new Windows files, mostly implements the
+high-level driver API for bitmap images, and adds practical strip
+(AccurateScreens) halftoning. This is the first "serious beta" fileset for
+the next general release. It still has more problems than I would have
+liked.
+
+<h3><a name="V3.68_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The names of the executable files for MS Windows were out of date.
+(make.doc)
+ - gxcindex.h still referred to "drawing color". (gxcindex.h)
+ - The name of the default font directory for Unix systems was
+incorrect. (make.doc)
+
+Moves the list of files required for installation, and some other
+installation instructions, from make.doc to install.doc. (install.doc,
+make.doc)
+
+Adds a description of the PNGPredictor filters. (language.doc)
+
+Updates the documentation of the higher-level driver procedures to match the
+specification changes. (drivers.doc)
+
+Documents the change in the Watcom build procedure. (make.doc)
+
+Improves the documentation of bitmap IDs. (gxbitmap.h)
+
+Adds documentation for the new strip_tile_rectangle and strip_copy_rop
+driver procedures. (drivers.doc)
+
+Changes the few remaining direct FTP addresses in README to URLs. (README)
+
+Notes that zlib does not compile correctly on IRIX 6.n with optimization.
+(make.doc)
+
+Adds references to PDF and TrueType fonts to language.doc. (language.doc)
+
+Updates fonts.doc to remove references to fonts.mak. (fonts.doc)
+
+Describes how to substitute an LZW compressor for the LZW-compatible
+compressor provided in the standard release. (make.doc)
+
+</pre><h3><a name="V3.68_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Some lines had exceeded the 120-character limit of the
+MS-DOS shell. (int.mak)
+ - The configuration files weren't generated correctly when CONFIG
+wasn't an empty string. (unixhead.mak)
+
+Factors out shared DLL makefile rules into a new file. (bcwin.mak,
+bcwin32.mak, dwcommon.mak)
+
+Makes the cp and rm commands into makefile parameters, allowing automatic
+generation of build scripts even in the MS-DOS and MS Windows environments
+where the shell requires the CALL command for sub-scripts. (*.mak,
+genconf.c)
+
+Adds the PDF writer to the default Unix configurations. (ansihead.mak,
+cc-head.mak, gcc-head.mak)
+
+Adds TrueType support to all Level 2 configurations. (int.mak)
+
+Removes fonts.mak, which is no longer relevant. (fonts.mak)
+
+Brings the font compilation procedures up to date. (cfonts.mak, int.mak)
+
+</pre><h3><a name="V3.68_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - There was an extra 'show' in one file. (align.ps)
+
+</pre><h3><a name="V3.68_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The bit devices were missing the map_color_rgb procedure.
+(gdevbit.c)
+ - The MS Windows driver sent a redundant message. (gdevmswn.c)
+
+Adds a device that keeps track of the page bounding box. This device is not
+included in any standard configuration. (drivers.doc, gdevbbox.h,
+gsmatrix.h, gsstruct.h, gxdevice.h, gdevbbox.c, gdevnfwd.c, gsmatrix.c)
+
+Updates the PDF writer to track the changes in the high-level driver API,
+and to write out images in a reasonable way. NOTE: the current
+implementation doesn't write out CIE color space parameters, so CIE-color
+images won't be colored accurately. (gdevpdf.c, gdevpdfi.c)
+
+Adds a forwarding procedure for tile_rectangle. (gxdevice.h, gdevnfwd.c)
+
+Changes the copyright notices on the PDF writer to be the same as on the
+rest of Ghostscript. (gdevpdf*.[ch])
+
+Updates Gunther Hess's Epson Stylus Color driver from 1.21 to 1.90. (Aladdin
+Enterprises takes no responsibility for this driver: if you have questions,
+contact the author.) (devices.doc, devs.mak, gdevstc*.c, gdevstc.h)
+
+</pre><h3><a name="V3.68_Platforms"></a>Platforms</h3><pre>
+
+Removes some obsolete MS Windows files and #defines. (gp_mswtx.h,
+gp_mswtx.c, gp_mswin.h)
+
+Works around a memory limitation in the Watcom make utility. (wmakebat.bat)
+
+</pre><h3><a name="V3.68_Fonts"></a>Fonts</h3><pre>
+
+Changes the standard Fontmap from using the low-quality fonts converted from
+bitmaps to using high-quality fonts recently contributed by URW++.
+(Fontmap, Fontmap.GS)
+
+</pre><h3><a name="V3.68_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A macro containing an if-else, and a macro generating a compound
+statement, could cause incorrect grouping of 'if' statements. (files.h,
+ostack.h)
+ - .setrasterop didn't pop its operand. (zrop.c)
+ - A rounding inaccuracy could cause bounding box rangecheck errors.
+(gsdps1.c)
+ - CIE-based images in PDF files didn't work. (gs_pdf.ps)
+ - The page parameter .MediaSize didn't get updated when PageSize was
+set. (This is just the most recent manifestation of the setpagedevice
+morass.) (gs_setpd.ps)
+ - %lineedit and %statementedit were limited to 160 characters.
+(zfileio.c, ziodev.c)
+ - Compiled initialization files didn't work properly. (geninit.c,
+gs_l2img.ps)
+ - Attempting to parse a command line with argc = 0 caused a crash.
+(imainarg.c)
+
+Renames some files to allow separating the non-DLL 'main' procedure into a
+separate file, and to make the file naming more consistent:
+ gs.c (except for 'main') =&gt; imainarg.c
+ gsmain.c =&gt; imain.c
+gs.c now consists only of 'main'. The name gs.c is still inconsistent (it
+should be i- something), but at least it's consistent with the name of the
+executable. (*.mak, imain.h, iminst.h, imainarg.h, gs.c, gsmain.c, imain.c,
+imainarg.c)
+
+Adds PNGPredictorEncode/Decode filters, and increases the size of filterdict
+slightly to make room for them. (iinit.c, zfpngp.c)
+
+Makes zwrite external, per a customer request. (opextern.h, zfileio.c)
+
+Updates clients to work with the new API-based bitmap imaging calls.
+(iimage.h, zcolor1.c, zimage2.c, zpaint.c)
+
+Updates clients for the split in gscspace.h. (zcie.c, zcolor1.c, zcolor2.c,
+zcsindex.c, zcssepr.c, zimage2.c, zpaint.c, zpcolor.c)
+
+Updates clients for strip-based halftones. (zpcolor.c)
+
+Updates the initialization code to pass the correct (system) allocator to
+the library initialization. (imain.c)
+
+</pre><h3><a name="V3.68_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - If a filter reached EOD exactly at the end of reading data for
+certain operations, it didn't get closed automatically. (stream.c)
+ - The LZW-compatible encoding filter reset procedure had an
+incorrect return type. (slzwce.c)
+
+Changes the ASCIIHexEncode filter to insert \ns in fewer places, to be
+somewhat more compatible with the Adobe implementation. (sstring.c)
+
+Adds PNGPredictorEncode/Decode filters that implement the pixel prediction
+algorithms in the PNG specification. (We'd like to use the code in the PNG
+library, but it's too deeply embedded in the rest of the PNG machinery, and
+it also doesn't provide for suspendable I/O.) (spngpx.h, spngp.c)
+
+</pre><h3><a name="V3.68_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A test for pure color was backwards, causing garbage output or
+possible address or floating point exceptions. (gxclpath.c)
+ - A macro containing an if-else could cause incorrect grouping of
+'if' statements. (gsrefct.h)
+ - The default implementation of RasterOp didn't handle the device
+depth correctly. (gdevmrop.c)
+ - The memory device implementation of RasterOp truncated 24-bit
+constant source or texture values to 8 bits. (gdevmrop.c)
+ - A typo caused the garbage collector to miss an internal buffer
+used when rendering images. (gximage.h)
+ - gs_debug_out was only defined if DEBUG was set. (gdebug.h)
+ - The raster of horizontally replicated tiles was incorrect.
+(gxht.c)
+ - A data type might not be declared, causing a compilation error.
+(gscoord.h)
+ - Empty TrueType glyphs weren't handled properly. (gstype42.c)
+ - Fonts with a build procedure written in C could cause an invalid
+memory access. (gschar.c)
+ - The initial point of a band list path sometimes didn't get
+written, causing excess or missing filled regions. (gxclpath.c)
+ - Characters between 49 and 56 bits wide were rendered incorrectly
+when banding. (gxclbits.c)
+
+Renames gsimage*.c as gximage*.c, to reflect more accurately the position of
+these files in the architecture. (gsimage*.c, gximage*.c)
+
+Fully implements the high-level bitmap image calls in the driver API. This
+includes some driver API changes; however, this part of the API was clearly
+documented as not stable enough to rely on. (gxdevice.h, gximage.h,
+gdevbbox.c, gdevddrw.c, gdevnfwd.c, gsimage.c, gximage*.c)
+
+Splits the color space header into client and implementation, as with many
+others. (gscspace.h, gxcspace.h, gximage.h, gscie.c, gscolor.c, gscolor1.c,
+gscolor2.c, gscsepr.c, gsimage.c, gspcolor.c, gsstate.c, gxcmap.c,
+gxpcmap.c)
+
+Extends band lists to handle high-level images. NOTE: This facility is
+patched out because there is not yet a way to pass the necessary color
+rendering information through the band list. (gxcldev.h, gxclist.h,
+gxclpath.h, gxclimag.c, gxclist.c, gxclpath.c, gxclread.c)
+
+Implements fixed2float and float2fixed more efficiently on machines with
+slow floating point. (gxfixed.h, gscoord.c, gsmisc.c)
+
+Makes one further NON-BACKWARD-COMPATIBLE change in the existing
+higher-level driver procedures (fill_path, stroke_path, fill_mask): we make
+the imager state pointer an explicit argument, rather than a member of the
+gx_fill/stroke_params structure. We now consider the specification of these
+procedures stable, and have removed the "subject to change" notice from the
+documentation. (gxdevice.h, gxpaint.h, gdevbbox.c, gdevnfwd.c, gxacpath.c,
+gxclpath.c, gxclread.c, gxfill.c, gxpaint.c, gxstroke.c)
+
+Extends halftone bitmaps to include "strip" and "shift" information,
+allowing halftone cells with arbitrary angles to be stored in space
+proportional to the number of bits in the cell rather than the square of the
+number of bits. This requires adding new (optional) strip_tile_rectangle
+and strip_copy_rop driver procedures that are like tile_rectangle and
+copy_rop respectively but accept a strip bitmap rather than an ordinary
+tile; these procedures supersede tile_rectangle and copy_rop (although these
+also remain, defined in terms of the new ones). This also requires making
+small but NON-BACKWARD-COMPATIBLE changes in several internal interfaces.
+(gdevmem.h, gdevprn.h, gsdcolor.h, gxbcache.h, gxbitmap.h, gxcldev.h,
+gxclip2.h, gxclist.h, gxdevice.h, gxdevrop.h, gxdht.h, gxfcache.h,
+gxhttile.h, gxpcolor.h, gzht.h; gdevabuf.c, gdevbbox.c, gdevdflt.c,
+gdevm*.c, gdevmpla.c, gdevmrop.c, gdevnfwd.c, gsht.c, gsht1.c, gshtscr.c,
+gspcolor.c, gsstate.c, gxcht.c, gxclbits.c, gxclip2.c, gxclist.c,
+gxclpath.c, gxclread.c, gxcpath.c, gxdcolor.c, gxdither.c, gxht.c,
+gximage2.c, gxpcmap.c, ...)
+
+Adds "no join" as a line join type. NOTE: this is not actually implemented
+yet. (gslparam.h)
+
+Changes the initialization code so that it passes the system allocator as an
+argument to module initialization procedures. While this is theoretically a
+NON-BACKWARD-COMPATIBLE change, module initialization procedures are not
+documented and presumably are not used by any code outside the
+implementation. (gscdefs.h, gconf.c, gdevmrop.c, gsinit.c, gxclimag.c,
+gxclpath.c)
+
+Splits up gs_lib_init into two procedures, allowing specification of a
+different default allocator for the library. (gslib.h, gsinit.c)
+
+Adds a resize_object operation to the allocator API. (gsmemory.h,
+gsalloc.c, gsmemory.c)
+
+</pre>
+
+<h2><a name="Version3.67"></a>Version 3.67 (limited) (4/12/96)</h2>
+
+<p>
+This release restructures the MS Windows and OS/2 code to be primarily DLL-
+rather than EXE-based. See under Platforms below for more news. This
+release was put out in a hurry in order to get the new DLL code into
+testers' hands; it has more rough edges than usual.
+
+<h3><a name="V3.67_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - A definition &amp; use comment was incorrect. (scanchar.h)
+ - William Bader's e-mail address was wrong. (README)
+
+Adds documentation for the new begin_image, image_data, and end_image
+procedures. THIS INTERFACE IS STILL SUBJECT TO CHANGE. (drivers.doc)
+
+</pre><h3><a name="V3.67_Procedures"></a>Procedures</h3><pre>
+
+Renames all the *core.dev modules as *lib.dev. (int.mak, *lib.mak, vms.mak,
+gdevmrop.c)
+
+Updates all the remaining makefiles to IJG JPEG version 6a. (*.mak)
+
+Moves the configuration parameter definitions from gconf.c to a new file
+gscdefs.c. (bcwin*.mak, *lib.mak, gs.mak, int.mak, lib.mak, unixtail.mak,
+vms.mak, gconf.c, gscdefs.c)
+
+</pre><h3><a name="V3.67_Platforms"></a>Platforms</h3><pre>
+
+Restructures the MS Windows and OS/2 code to be primarily DLL- rather than
+EXE-based. This involves two minor NON-BACKWARD-COMPATIBLE changes to the DLL
+interface, documented near the end of dll.doc:
+
+ - Adding argv and argc as arguments to gsdll_init.
+
+ - Adding a new message type, GSDLL_POLL, to the callback procedure.
+
+(bcwin*.mak, devs.mak, os2.mak, dll.doc, install.doc, dw*.*, gsdll*.*,
+gdevms*.*, gdevpm.c, gdevw*.c, gp_mswin.c, gp_os2.c, gsos2.def, gswin.rc)
+
+Adds the BMP drivers to the Watcom platform. (watc.mak)
+
+</pre><h3><a name="V3.67_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - gs.c assumed the presence of stdio. (gs.c)
+
+Defines a new API entry point that is the equivalent of command line
+invocation. (imain.h, imainarg.h, gs.c)
+
+Changes clients to conform to the changes in gsimage.h. (zimage2.c,
+zpaint.c)
+
+Speeds up the search operator slightly. (zstring.c)
+
+</pre><h3><a name="V3.67_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If the PDF interpreter was present, running a PostScript file
+didn't close the file properly if it caused an error. (pdf_main.ps)
+
+Speeds up embedded font loading by making an internal buffer bigger.
+(pdf_font.ps)
+
+</pre><h3><a name="V3.67_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There could be some non-zero garbage between the width and the
+next multiple of bitmap_align_mod for copy_alpha. (The driver API
+specification explicitly allows this, but it upset one customer.)
+(gxccman.c)
+ - Nibble-swapped alpha values could be displaced in memory by one
+pixel, damaging the output. (gdevabuf.c)
+
+Makes further changes towards adding high-level bitmap image calls to the
+driver API. This includes the following minor NON-BACKWARD-COMPATIBLE
+changes to the interface defined in gsimage.h:
+
+ - changing MultipleDataSources from a member of the gs_image_t
+ structure to an argument of gs_image_init;
+
+ - changing the default image parameter values from constant
+ structures to procedures that initialize the structure.
+
+As far as we know, this doesn't affect any existing client code.
+(gsimage.h, gsiparam.h, gxdevice.h, gdevddrw.c, gdevnfwd.c, gsimage.c,
+gspcolor.c, gxccache.c)
+
+Removes an unnecessary level of call for path filling. (gxpaint.h,
+gxfill.c, gxpaint.c)
+
+</pre>
+
+<h2><a name="Version3.66"></a>Version 3.66 (limited) (4/8/96)</h2>
+
+<p>
+This release adds support for TrueType fonts and Type 42 (encapsulated
+TrueType) PostScript fonts. The MS Windows driver now interacts properly
+with the garbage collector. This release also includes a new, high-quality
+set of free fonts.
+
+<h3><a name="V3.66_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The list of generic makefiles had gotten out of date. (make.doc)
+
+Adds a mention of the bmv program, created by a user and available under the
+GPL. (README)
+
+Notes that a bug in gcc 2.7.x prevents these versions from compiling
+Ghostscript. (make.doc)
+
+Clarifies the meaning of "inverted" masks. (gsimage.h)
+
+Improves the documentation of the stack sizing parameters. (interp.c)
+
+Improves the documentation of the copy_rop driver procedure.
+(drivers.doc)
+
+Notes that all subclasses of gx_device must explicitly include the
+device_finalize finalization procedure. (gxdevice.h)
+
+Updates the documentation of the high-level driver API to reflect the change
+in gx_drawing_color, and the addition of the new polygon and image drawing
+procedures. (drivers.doc)
+
+Updates the documentation for building zlib and libpng. (make.doc)
+
+</pre><h3><a name="V3.66_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The environment space overflowed on some inferior Unix systems.
+(unixtail.mak)
+
+Adds a ttfont.dev "feature" for including the TrueType interpreter and the
+ability to handle Type 42 fonts. A new procedure, .loadttfont, allows
+loading a TrueType font directly (by converting it to a Type 42 on the fly).
+(gs.mak, int.mak, lib.mak)
+
+Updates the makefiles and procedures to libpng 0.88 and zlib 1.0.
+(libpng.mak, zlib.mak)
+
+</pre><h3><a name="V3.66_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - pdf2ps could produce lines longer than 255 characters.
+(pdf_2ps.ps)
+
+Removes some unnecessary and error-inviting code from pdf2dsc. (pdf2dsc.ps)
+
+Updates lines.ps to test the new stroke code more fully. (lines.ps)
+
+Allows omitting the second argument of ps2pdf, as for ps2epsi. (ps2pdf)
+
+</pre><h3><a name="V3.66_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A routine was incorrectly declared "private". (I wish gcc caught
+this!) (gdevpdf.c)
+ - A 'const' was omitted in a parameter list. (gdevpdfp.c)
+ - Some imported procedures didn't have prototypes declared.
+(gdevpdft.c)
+ - The ProcSet list for PDF files didn't include Text when it was
+needed. (gdevpdfx.h, gdevpdf.c, gdevpdft.c)
+ - Text in PDF output ignored the color setting. (gs_pdfwr.ps,
+gdevpdft.c)
+ - Text in PDF output could be positioned incorrectly. (gdevpdft.c)
+ - pdfmarks could produce an error when producing PDF output.
+(gs_pdfwr.ps)
+
+Slightly improves the text output of the PDF writer. (gs_pdfwr.ps,
+gdevpdft.c)
+
+Defines driver procedures for filling trapezoids (with the parallel edges
+parallel to a coordinate axis), parallelograms (with arbitrary orientation),
+triangles (ditto), and minimum-width lines (ditto). (Note that the last of
+these obsoletes the former draw_line procedure.) (gdevmem.h, gdevprn.h,
+gxdevice.h, gxdraw.h (deleted), gdevddrw.c, gdevdflt.c, gdevht.c,
+gdevnfwd.c, gsimage[12345].c, gxacpath.c, gxclist.c, gxclip2.c, gxcpath.c,
+gxdraw.c (deleted), gxfill.c, gxpcmap.c, gxstroke.c)
+
+Adds "sketched" driver procedures for high-level bitmap / pixmap image
+drawing. In this release, the argument lists are incomplete, and the
+procedures are stubs: don't try to use them! [see previous entry]
+
+Changes the screen update strategy for the X Windows driver from a
+compile-time option to a settable run-time variable. (gdevx.c)
+
+Patches around a problem with libpng 0.88 that can't be fixed without
+editing a configuration file. (gdevpng.c)
+
+</pre><h3><a name="V3.66_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - %g formats with sscanf don't work on NeXT systems. (gdevpdft.c,
+iutil.c, zdouble.c)
+ - getenv could be declared inconsistently. (gp_unix.c)
+
+</pre><h3><a name="V3.66_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The Type 1 font interpreter sometimes set the flatness too large.
+(gstype1.c)
+ - Fonts defined by definefont could never be garbage collected.
+(gsstruct.h, gxfcache.h, gxfont.h, gxfont0.h, gxfont1.h, gsfont.c,
+gsfont0.c)
+ - Type 0 fonts weren't garbage collected properly. (gsfont0.c)
+ - Compiled fonts caused a compilation error (bug introduced in
+3.65). (ifont.h)
+ - If a Type 1 font used hint replacement, hints could be applied
+more than once, distorting the character shape. (gxtype1.h, gxhint3.c)
+ - Oversampling wasn't applied to large enough characters.
+(gschar.c)
+
+</pre><h3><a name="V3.66_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The scanner accepted /[, /], /&lt;&lt;, and /&gt;&gt; as literal names (and
+similarly for //). It isn't obvious from the Red Book, but the Adobe
+implementations don't accept these. What a nuisance! (gs_btokn.ps,
+gs_init.ps, pdf_2ps.ps, pdf_base.ps, pdf_main.ps, iscan.c)
+ - A spurious stackoverflow could occur under unusual conditions.
+(istack.c)
+ - The values of OrigFont and ScaleMatrix in scaled fonts reflected
+only the most recent scaling operation, not the original font and the
+combined scaling operation. (zfont.c)
+ - The default size of systemdict had become slightly too small.
+(iinit.c)
+ - Type 1 characters defined by PostScript procedures were called
+incorrectly. (zcharout.c)
+
+Removes the papersize operator from statusdict, since it is not documented
+anywhere in the Adobe literature and didn't interact properly with the
+various ways of setting the page size. (gs_statd.ps)
+
+Changes the one client of sskip to match the changed API. (zpaint.c)
+
+Changes clients to reflect the creation of sstring.h. (iscan.h, zfilter.c)
+
+Adds PSStringEncode as an accessible filter. (zfilter.c)
+
+Adds support for TrueType and Type 42 fonts. (gs_fonts.ps, gs_ttf.ps,
+gs_typ42.ps, bfont.h, icharout.h, ifont.h, zchar1.c, zchar42.c, zcharout.c,
+zfont1.c, zfont2.c, zfont42.c)
+
+Adds a few ANSI sheet sizes (commented out, for documentation only).
+(gs_statd.ps)
+
+</pre><h3><a name="V3.66_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Clients who called pdfopen/close rather than runpdf could get an
+error (PSLevel1 undefined). (pdf_main.ps)
+ - Some masked images were displayed with black and white inverted.
+(gs_pdf.ps)
+ - In Level 1 output produced by pdf2ps, images caused a syntaxerror.
+(gs_pdf.ps)
+ - If a PDF file had multiple xref sections and later sections added
+new objects, an error occurred. (pdf_main.ps)
+ - Some very old Level 1 interpreters couldn't deal with a file
+object embedded in a procedure. (gs_pdf.ps)
+
+</pre><h3><a name="V3.66_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The PSStringEncode filter didn't always produce printable 7-bit
+output. (sstring.c)
+ - The CCITTFaxDecode filter didn't implement DamagedRowsBeforeError.
+(scfx.h, scfd.c)
+ - Interpolated images displayed nothing if the data stream ended
+before the image height was reached. (siscale.h, gsimage5.c, siscale.c)
+
+Changes the sskip stream procedure so that it takes an additional argument
+where it returns the actual number of bytes skipped. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE in the API. However, as far as we know,
+there are no external clients of this procedure. (stream.h, stream.c)
+
+Splits up sfilter.h so that the headers correspond more directly with the
+implementations. (sfilter.h, sstring.h, sstring.c)
+
+</pre><h3><a name="V3.66_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The default device in the library configuration was device 1, not
+device 0. (bclib.mak, ugcclib.mak, watclib.mak, gslib.c)
+ - Patterns could be rendered with small gaps between them.
+(gspcolor.c)
+ - Large characters could render inaccurately because of a numerical
+boundary condition. (gxpcopy.c)
+ - The show_gstate pointer in the graphics state was not managed
+properly, possibly leading to dangling pointers or GC errors. (gsstate.c)
+ - Bitmaps could get shifted to the left if ALPHA_LSB_FIRST was
+selected (bug introduced in 3.53). (gsbitops.c)
+ - The garbage collector could move devices in memory, causing
+problems with command list devices. (gxdevice.h, gsdevice.c)
+
+Continues restructuring the image handling code in preparation for adding a
+high-level driver operation. (gsimage[12345].c)
+
+Starts to implement passing color mapping information (transfer function,
+black generation, undercolor removal, CRD, halftoning) in the band list.
+(gxfmap.h, gscolor.c, gscolor1.c, gsht1.c, gsstate.c)
+
+Speeds up the path filling code a little more. (gxdraw.c)
+
+Removes the workaround for the gcc 2.7.0/1/2 optimizer bug, since this
+turned out to cause more trouble than it was worth. (stdpre.h)
+
+Speeds up stroking dramatically for the case of butt or square caps, bevel
+or beveled miter joins, and no fill adjustment, by filling parallelograms
+and triangles directly rather than constructing and filling paths. This is
+an important common case for CAD drawings. (gxdraw.h, gxdraw.c, gxstroke.c)
+
+Adds support for TrueType and Type 42 fonts. (gxfont.h, gxfont42.h,
+gstype42.c)
+
+Extends the memory manager to allow allocating objects that the garbage
+collector won't move. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for
+implementors of memory managers, but clients aren't supposed to have any of
+these. (gsmemory.h, gsmemory.c, gsalloc.c)
+
+Makes dynamically created instances of registered devices immovable.
+(gsdevice.c)
+
+Unifies gx_drawing_color with (makes it equivalent to) gx_device_color.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE for implementors of the
+higher-level driver procedures (fill_path, stroke_path, fill_mask). We
+regret that this was necessary, but the documentation in drivers.doc does
+warn the reader: "DO NOT ASSUME THESE OPERATIONS WILL REMAIN UNCHANGED IN
+FUTURE RELEASES." These three procedures, at least, should now be stable.
+(gsdcolor.h, gxcindex.h, gxdcolor.h, gxdevice.h, gximage.h, gxpaint.h,
+gxpcolor.h, gdevdflt.c, gdevpdf.c, gdevpdfi.c, gdevxalt.c, gsimage.c,
+gsimage2.c, gspcolor.c, gxacpath.c, gxccache.c, gxcht.c, gxclpath.c,
+gxclread.c, gxdcconv.c, gxdither.c, gxfill.c, gxdraw.c, gxht.c, gxpaint.c,
+gxpcmap.c, gxstroke.c)
+
+</pre>
+
+<h2><a name="Version3.65"></a>Version 3.65 (limited) (3/9/96)</h2>
+
+<p>
+This release adds garbage collection for device instances. ****** NOTE:
+Because of changes in memory management, if you are using the MS Windows
+driver (mswin), you must run with -dNOGC. This is a temporary problem which
+will be fixed before the next beta release.
+
+<h3><a name="V3.65_Documentation"></a>Documentation</h3><pre>
+Documents the C API equivalent of a -d switch for setting a flag like
+NOPAUSE. (imain.h)
+
+Splits off the NEWS entries for versions 3.0 through 3.33 into a new
+file. (history3.doc)
+
+Adds a man page for ps2pdf. (ps2pdf.1)
+
+Documents the new memory management aspects of device drivers, and corrects
+many other aspects of driver documentation that had become inaccurate.
+(drivers.doc)
+
+Updates the documentation for the gs_*.ps files. (psfiles.doc)
+
+Replaces .type1addpath with .type1execchar. (language.doc)
+
+Adds some more documentation on how band lists do read/write switching.
+(gxclist.h)
+
+Adds a reference to the new Genscript program, a free Ghostscript-based
+replacement for enscript. (README)
+
+Notes that no further changes will be accepted for the gdevcdj.c file, which
+has gotten completely out of hand. (gdevcdj.c).
+
+Documents the TextAlphaBits and GraphicsAlphaBits device parameters.
+(language.doc)
+
+</pre><h3><a name="V3.65_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - gs_pdfwr.ps and pdf2ps.1 weren't installed on Unix systems.
+(unix-end.mak)
+ - The pdf2ps shell script didn't accept any options. (pdf2ps)
+ - The rule for srle.$(OBJ) incorrectly specified a dependency on
+srld.c. (lib.mak)
+ - The rule for command lists didn't include stream.$(OBJ).
+(lib.mak)
+ - The stack size for one configuration was set too small.
+(watclib.mak)
+
+Speeds up genconf by eliminating redundant file reading and processing.
+(genconf.c)
+
+Moves the pixel-difference filters from int.mak to lib.mak. (int.mak,
+lib.mak)
+
+Moves the library parts of the HSB color and Level 1 path (arcs, pathbbox,
+path enumeration) options from int.mak to lib.mak, and adds them to the
+library makefiles. (int.mak, lib.mak; bclib.mak. ugcclib.mak, watclib.mak)
+
+</pre><h3><a name="V3.65_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - pdf2ps would fail if it encountered a font with a standard
+encoding. (pdf_2ps.ps)
+
+Adds new switches to pdf2ps:
+ -dPSBinaryOK allows writing binary image data in the output.
+(pdf_2ps.ps)
+ -dPSLevel1 forces Level 1 compatible output. (int.mak,
+unix-end.mak, gs_l2img.ps, gs_pdf.ps, pdf_2ps.ps, pdf_main.ps)
+ -dPSNoProcSet causes the ProcSet to be loaded at run time, not at
+conversion time -- primarily useful for debugging. (pdf_2ps.ps)
+
+Adds a utility for viewing PCX files, so we can preview high-resolution
+output in a reasonable compressed format. (unix-end.mak, viewpcx.ps)
+
+</pre><h3><a name="V3.65_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Some compilers require an extra #include to define structures even
+if they are only referenced by pointers. (int.mak, gdevpdf.c, gdevpdfp.c)
+ - A procedure name was duplicated. (gdevpdfi.c)
+ - A pdfmark between a gsave and a grestore could cause a
+rangecheck error. (gdevpdfp.c)
+ - A pdfmark between a gsave and a grestore could cause the
+grestore to do an inappropriate initgraphics. (gs_pdfwr.ps)
+ - The pdfwrite driver could reinitialize the output file
+unpredictably. (gdevpdfp.c)
+ - The PCX drivers didn't clear padding bytes at the ends of scan
+lines. (gdevpcx.c)
+ - The PCX drivers didn't set the "version" field correctly (this was
+OK in 2.6.1, bug introduced sometime since then). (gdevpcx.c)
+ - Whoever last touched the color inkjet drivers completely broke the
+handling of the BitsPerPixel parameter, again. We were able to half-fix it,
+but the code is impossible to understand, let alone modify safely.
+(gdevcdj.c)
+ - Anti-aliased characters didn't work with banding. (gxclpath.c)
+ - The PGM/PPM drivers didn't recognize black-and-white pages for
+optimization to PBM, only gray or colored. (gdevpbm.c)
+ - The color inkjet drivers initialized the params_size field of the
+static instance incorrectly, resulting in garbage in the last few structure
+members when instances were copied. (gdevcdj.c)
+ - The 24-bit PCX driver didn't pad each scan line to an even number
+of bytes. (gdevpcx.c)
+ - The svga16 driver initialized its procedures incorrectly.
+(gdevpcfb.c)
+
+Adds text writing capability to the PDF writer. In its present form, this
+is a very bad hack: it only works for the 14 built-in fonts with their
+standard encodings. (gdevpdfx.h, gdevpdf.c, gdevpdfp.c, gdevpdft.c)
+
+Adds garbage collection and finalization for device instances (gscdefs.h,
+gsdevice.h, gxdevice.h, gconf.c, gdevmrop.c, gsdevice.c, gslib.c, gsmain.c).
+(See the "Driver instance allocation" section of drivers.doc for more
+details about what is required to make this work.)
+
+ - When an open device is freed (explicitly, by garbage collection,
+or by 'restore'), if the device was allocated dynamically by Ghostscript's
+standard allocator, the device's close procedure will be called. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE for dynamically created devices, which
+formerly were not closed automatically, even when Ghostscript exited.
+
+ - Device instances allocated in GC-able space will be traced
+like other objects, assuming they have proper structure descriptors.
+
+Provides a (very slow but correct) default implementation of copy_alpha.
+(gxcindex.h, gdevdflt.c, gsimage4.c)
+
+Removes the implementation of copy_alpha in gdevpbm.c, since this is now
+implemented (more efficiently) in gdevm24.c. (gdevpbm.c)
+
+Adds TextAlphaBits and GraphicsAlphaBits as readable parameters for all
+devices. (gsdparam.c, gdevpbm.c, gdevsvga.c)
+
+</pre><h3><a name="V3.65_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - There were some attempts to coerce long to short pointers
+on segmented platforms. (gsdparam.c, gstype1.c)
+ - The stack could overflow on the 16-bit MS Windows platform.
+(gxfill.c, gxclread.c)
+ - The DLL callback parameter for window resize events was computed
+incorrectly on 16-bit systems. (gdevwdib.c)
+ - A file included gxdevice.h unnecessarily. (bcwin.mak,
+bcwin32.mak, msvcwint.mak, gp_mswin.c)
+
+</pre><h3><a name="V3.65_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Storing into a read-only dictionary with def or store was
+allowed. (dstack.h)
+ - If the interpreter allocated extra space for a dictionary
+to round its storage size up to a power of 2, it was possible for
+length to exceed maxlength. (idict.c, iinit.c)
+ - The if and ifelse operators didn't check that their
+'procedure' arguments were actually procedures. (interp.c, zcontrol.c)
+ - The undef operator was defined even in Level 1
+configurations. (We need this capability for all configurations, so
+we always define .undef.) (zdict.c, gs_*.ps, pdf_*.ps)
+ - In Level 1 configurations, copying a dictionary should copy the
+access attributes, but it didn't. We have to work around this
+compatibility quirk in a lot of places. (gs_cidfn.ps, gs_cmap.ps,
+gs_dps1.ps, gs_fonts.ps, gs_init.ps, gs_l2img.ps, gs_lev2.ps, gs_pdf.ps,
+gs_pfile.ps, gs_res.ps, gs_setpd.ps, gs_type1.ps, zdict.c)
+ - DSC comments that crossed a buffer boundary didn't call the
+scan_dsc_proc. (iscan.c)
+ - "statusdict /setpage get exec" caused an error. (gs_statd.ps)
+ - The default size of systemdict had become slightly too small.
+(iinit.c)
+ - Doing a showpage or copypage would cause the equivalent of a
+setpagedevice at the next restore or grestore. We aren't entirely sure that
+the fix we made doesn't have bad side-effects. (gs_setpd.ps)
+ - Not all filters accepted (and ignored) an optional dictionary
+parameter on the stack. (ifilter.h, zfbcp.c, zfdecode.c, zfilter.c,
+zfilterx.c, zfzlib.c, zmisc1.c)
+ - The PixelDifference filters required a Columns parameter, rather
+than defaulting it to 1. (spdiffx.h, zfdecode.c)
+ - Contrary to the NEWS entry for release 3.60, the LZW filters did
+not implement pixel differencing. (zfdecode.c, zfilter2.c)
+ - readstring with a 0-length string didn't signal a rangecheck.
+This doesn't make a lot of sense to me, but it's what the Adobe
+documentation specifies. Unfortunately, we have to work around this in a
+number of places that assumed the sensible definition (return () true
+without reading anything). (gs_l2img.ps, pdf_font.ps, zfileio.c)
+ - Encoded number strings didn't work (bug introduced in 3.64).
+(ibnum.c)
+ - The allocator could produce spurious "free large 0x...... chunk
+not found" messages. (These didn't cause any harm, but they were
+disturbing.) (gsalloc.c)
+
+Changes the default transfer function for high-resolution devices so
+that it is the identity function if the device is continuous-tone.
+(gs_init.ps)
+
+Undoes the "subversion" of zgetdevice noted in release 3.61, since it
+is now possible to copy devices safely. (zdevice.c)
+
+Changes the implementation of the garbage collector and restore so that
+object finalization code may safely free objects. (igc.c, isave.c)
+
+Reimplements essentially all of Type 1 BuildChar in C. (gs_init.ps,
+gs_type0.ps (deleted), gs_type1.ps, ifont.h, zchar.c, zchar1.c, zfont.c)
+
+Reimplements DISKFONTS as a separate feature (diskfont.dev), and changes it
+to use Type 4 fonts rather than special machinery. Currently this feature
+is included only in the makefiles for 16-bit architectures. (bc.mak,
+bcwin.mak, int.mak, tc.mak, gs_diskf.ps, gs_fonts.ps, gs_type1.ps)
+
+Converts the library search path from a list of strings to a (PostScript)
+array of strings, one string per directory. (iminst.h, main.h, gs.c,
+gsmain.c, zfile.c)
+
+Adds a hook procedure scan_comment_proc for processing all comments,
+similar to scan_dsc_proc. If both are set, scan_comment_proc is used only
+for non-DSC comments. (iscan.h, iscan.c)
+
+</pre><h3><a name="V3.65_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Encrypted PDF files produced a random error (usually ioerror in
+--token--) rather than a meaningful message. (pdf_main.ps)
+ - Color space setting didn't work. (gs_pdf.ps)
+ - The algorithm for skipping a possible blank line following the
+'stream' keyword wasn't robust enough. (We aren't sure the new algorithm is
+exactly right, either.) (pdf_base.ps)
+
+Gets rid of the special handling of the LZW decoding filter, since the
+filter itself now handles the Predictor facility. (pdf_base.ps)
+
+</pre><h3><a name="V3.65_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Configurations with LZW encoding but not decoding had an
+undefined reference. (lib.mak, slzwc.c, slzwd.c)
+ - The LZW-compatible encoder didn't provide a 'reset' procedure.
+(slzwce.c)
+ - The PixelDifference filters didn't work for most parameter
+combinations in which each pixel took up more than 1 byte. (spdiff.c)
+ - Temporary write streams could cause an infinite loop. (We only
+need such streams for the Predictor = 2 case of LZWEncode: this is why the
+bug never showed up before.) (stream.c)
+
+Adds an optional reinitialization procedure to the stream template. Note
+that this is not the same as the PostScript 'reset' operation or the stream
+resetting operation invoked by sreset: the reinit procedure in the template
+reinitializes any internal state of the encoder or decoder without affecting
+buffered data. (scommon.h, strimpl.h, sbcp.c, sbhc.c, slzwce.c, slzwd.c,
+slzwe.c, smtf.c, spdiff.c, srle.c) ****** NOT DONE YET: sbwbs.c, szlibd.c,
+szlibe.c
+
+Adds a decoding stream for the run-length compression used in PCX.
+(spcxx.h, spcxd.c)
+
+</pre><h3><a name="V3.65_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A recent edit introduced an extraneous right parenthesis.
+(gpcheck.h)
+ - A minor nit in a macro could cause incorrect grouping of 'if'
+statements under implausible conditions. (gsmdebug.h)
+ - The first data plane buffer of an image enumerator didn't get
+marked during garbage collection. (gsimage.c)
+ - The Watcom C compiler required splitting up a declaration.
+(gxcmap.h)
+ - The extern declarations for the tables in gconf.c weren't gathered
+together in one place. (gscdefs.h, gxiodev.h, gconf.c, gsdevice.c, gslib.c,
+gsinit.c, gsiodev.c)
+ - charpath and show produced different output. We fixed this by
+undoing a "bug fix", introduced in version 2.9, which suppressed hinting and
+coordinate rounding for charpath; we aren't sure this won't cause some
+obscure problems to reappear. (gstype1.c)
+ - Clipping with a rectangle usually created a 3-rectangle clipping
+list, slowing down all drawing operations (performance bug only).
+(gxacpath.c)
+ - stroking in a rotated coordinate system sometimes thought lines
+were always thin when they actually weren't. (gxstroke.c)
+ - An unsigned quantity wasn't properly converted to signed, possibly
+causing band path coordinates to get mangled. (gxclread.c)
+ - A bug in the Borland compiler caused an unsigned quantity to be
+interpreted as signed, causing band path coordinates to get mangled.
+(gxclread.c)
+
+Changes structure type pointers on 16-bit segmented systems to full
+32-bit pointers. This will increase time and space requirements very
+slightly on these systems. (gsmemory.h, gxobj.h)
+
+Changes the memory manager so that object finalization code may safely free
+objects. (gsmemory.h, gsstruct.h, gsalloc.c, gsmemory.c)
+
+Refactors the Type 1 CharString interpreter so it can be included in
+the imager library. (gstype1.h, gxtype1.h, gstype1.c)
+
+Starts to refactor the implementation of band lists in memory so that it can
+use any encoding/decoding filter. Currently this choice is made at compile
+time, but it could easily be made dynamic. (gxclmem.h, gxclmem.c)
+
+Starts to refactor image rendering so that, like path filling and stroking,
+it only uses imager state and can be done after banding. (gxcmap.h,
+gxdraw.h, gximage.h, gsimage*.c, gxcmap.c)
+
+Speeds up copy_mono for 2-bit-per-pixel devices a little. (gdevm2.c)
+
+Implements an optimized copy_alpha for 24-bit memory devices. (gdevmem.h,
+gdevm24.c)
+
+Speeds up filling rectangles significantly. (gsbitops.c)
+
+Changes the band list rasterizer to use the memory space of the device
+rather than the C heap: our allocator is considerably faster than malloc.
+(gxclread.c)
+
+Speeds up stroking a little, especially in 90 degree rotated coordinate
+systems. (gxstroke.c)
+
+</pre>
+
+<h2><a name="Version3.64"></a>Version 3.64 (limited, incremental) (1/27/96)</h2>
+
+<p>
+This release fixes a few more bugs, including some serious bugs in band
+lists, and adds pdfmark processing to the PDF writer. The PDF writer is
+still not fit for real use, since it converts all text characters into 720
+dpi bitmaps and turns images into zillions of tiny rectangles (!), but it
+should be producing legal output.
+
+<h3><a name="V3.64_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Frans van Hoesel's e-mail address was incorrect. (gdevdjet.c)
+ - The man page for ansi2knr was out of date. (ansi2knr.1)
+ - The description of a procedure was out of date. (gxdcolor.h)
+
+Notes that several "optional" features are required in order to obtain the
+full PostScript Level 1 functionality at the library level. (lib.doc)
+
+Documents the top-level interpreter API. (imain.h)
+
+Adds details on differences between the imager API and the PostScript
+graphics operators. (lib.doc)
+
+Notes (here, in NEWS) that the change for device prototypes in 3.61 made the
+protection attributes of a device significant for the first time. Only the
+writable attribute is significant so far. (news)
+
+</pre><h3><a name="V3.64_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The .dev rules in the library makefiles didn't list echogs as a
+dependency. (jpeg.mak, libpng.mak, zlib.mak)
+ - The install rule tried to install gs.1.1 etc. rather than gs.1
+etc. (unix-end.mak)
+ - The install rule tried to install some nonexistent *.1 files.
+(unix-end.mak)
+
+Adds 'help' and '?' procedures to assist users who don't read the
+documentation. (gs_init.ps)
+
+Adds -A-, -E-, and -Z-... to turn off debugging flags. (gs.c)
+
+Adds a -dDELAYBIND switch to delay binding operators, to allow special
+packages like pstotext to redefine them. (gs_init.ps)
+
+</pre><h3><a name="V3.64_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - Fonts produced by rollconv.ps left a couple of items on the
+operand stack, and left array packing set to true. (rollconv.ps)
+
+Makes ansi2knr require that the first token after a function header be a
+left brace on the next line, so it can cope with some macros in IJG release
+6a. Also updates it to work better without the GNU configure machinery, and
+on some old compilers. (ansi2knr.c)
+
+Changes align.ps so it can be used directly to determine the margin
+parameters. (align.ps, psfiles.doc)
+
+</pre><h3><a name="V3.64_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The TIFF/F (G3 and G4) drivers were broken (bug introduced in
+3.60). (gdevtfax.c)
+ - The PDF writer produced invalid output for 0-width, 0-height
+images. (gdevpdfi.c)
+ - The PDF writer wasn't a page device. (gdevpdf.c)
+ - The PDF writer assigned the Contents node rather than the Pages
+node as the Parent of each page. (gdevpdfx.h, gdevpdf.c)
+
+Corrects the margin information for the DeskJet printers to be the actual
+values observed on a printer; all of the values in the file were wrong.
+(gdevdjet.c)
+
+Adds pdfmark recognition and conversion to the PDF writer. All documented
+pdfmarks (ANN, ARTICLE, DEST, DOCINFO, DOCVIEW, LNK, OUT, PAGE, PAGES, PS)
+are recognized and converted, but some of them are not converted correctly.
+(gs_pdfwr.ps, gdevpdfx.h, gdevpdf.c, gdevpdfm.c)
+
+Adds recognition of all Distiller parameters, except *ImageDict, to the PDF
+writer. Currently only ASCII85EncodePages actually has any effect.
+(gs_pdfwr.ps, gdevpdfx.h, gdevpdfp.c)
+
+Ensures that PDF output files include at least a default Info dictionary.
+(gdevpdf.c)
+
+Changes the handling of coordinates in PDF output files so that the scale is
+always 72 dpi, and so that each graphics operator is on a line by itself,
+for compatibility with Adobe Illustrator. (gdevpdfx.h, gdevpdf*.c)
+
+Adds a driver for ImageMagick's MIFF format. The driver currently only
+produces 24-bit, direct color, RLE compressed output. (gdevmiff.c)
+
+</pre><h3><a name="V3.64_Platforms"></a>Platforms</h3><pre>
+
+Changes the gp_check_interrupts platform procedure so that instead of just
+returning a Boolean, it can now also return a negative error code. THIS IS
+(THEORETICALLY) A NON-BACKWARD-COMPATIBLE CHANGE. However, since all
+implementations of this procedure should only have been returning 0 or 1 up
+to now, no existing code should need to be changed. (gpcheck.h, gsmisc.c)
+
+</pre><h3><a name="V3.64_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - devicenames was accidentally deleted. (gs_init.ps)
+ - -dFAKEFONTS could cause the memory manager to waste a lot of time.
+(gs_dps1.ps)
+ - Using -r or -dFIXEDMEDIA with a non-page device caused an error.
+(gs_init.ps)
+ - A VMS compiler reserves the word "readonly", which was used as a
+parameter name. (imain.h, gsmain.c)
+ - A garbage collection during the execution of x/y/xyshow with an
+array providing the values could get confused. (ibnum.h, ichar.h, stream.h,
+ibnum.c, iscanbin.c, zchar.c, zchar2.c, zdps1.c, zupath.c)
+ - Errors in encoded number strings produced a typecheck rather than
+a rangecheck error. (ibnum.c, zupath.c)
+
+Updates the DCT filters for IJG release 6a. (zfdctc.c)
+
+Provides an API call for getting the real stdio files. (imain.h,
+gs.c, gsmain.c)
+
+</pre><h3><a name="V3.64_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - If the CCITTFaxEncode stream encountered an output buffer boundary
+while processing the last scan line of input, it could fail to process some
+the scan line. (scfe.c)
+ - A couple of pointers weren't always initialized, possibly
+confusing the garbage collector. (stream.c)
+ - The weighting coefficient structures used for image scaling
+weren't declared properly for the garbage collector. (siscale.h, siscale.c)
+
+</pre><h3><a name="V3.64_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Unrotated patterns always used the bounding box size as the step,
+rather than XStep/YStep. (gspcolor.c)
+ - Alpha computations for graphics could be seriously incorrect (bug
+introduced in 3.6x). (gdevabuf.c)
+ - The length of the next_data_x command for the fill_mask operation
+was incorrect, causing the band list to become confused (bug introduced in
+3.63). (gxclpath.c)
+ - An extern was omitted, causing linker warnings. (gxdevice.h)
+ - RasterOps could cause an invalid access because the palette
+for a memory device wasn't set. (gdevmrop.c)
+ - gximage.h was included unnecessarily. (gspaint.c)
+ - Color screens caused a segmentation fault (bug introduced in
+3.6x). (gxcht.c)
+ - cshow returned the width in an incorrect coordinate system.
+(gscoord.h, gschar.c)
+ - Filling or stroking a path that lay entirely off the page in the
++X or +Y direction could corrupt memory (bug introduced in 3.6x).
+(gxclpath.c)
+ - When banding, painting characters with halftones produced random
+results (bug introduced in 3.6x). (gxclpath.c)
+ - When banding, characters could get clipped when they shouldn't be
+(bug introduced in 3.6x). (gxclpath.c)
+ - The default implementation of fill_mask could discard clipped
+bitmaps (bug introduced in 3.6x). (gdevdflt.c)
+ - Non-halftoned 24-bit colors could get garbled when banding (bug
+introduced in 3.6x). (gxclist.c)
+ - When banding, if a stroked path had subpaths that fell entirely
+outside the current band, the rest of the path was drawn in the wrong place
+(bug introduced in 3.6x). (gxclpath.c)
+
+Speeds up image interpolation on machines with slow floating point.
+(siscale.h, siscale.c)
+
+Speeds up interpolated images when using device color spaces. (gxcvalue.h,
+gxfrac.h, gdevht.c, gxcmap.c, gsimage.c, gsimage3.c)
+
+Speeds up color mapping a little by removing tests and calls in favor of
+code copying. (gxcmap.c)
+
+Implements RasterOp for 24-bit RGB devices. (gdevm8.c, gdevm24.c,
+gdevmrop.c)
+
+</pre>
+
+<h2><a name="Version3.63"></a>Version 3.63 (limited, incremental) (1/14/96)</h2>
+
+<p>
+This release has the usual collection of bug fixes, and two significant
+additions: AccurateScreens, and the first draft of a PostScript-&gt;PDF
+converter ("distiller").
+
+<h3><a name="V3.63_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Some documentation for pstoppm.ps was out of date. (psfiles.doc)
+ - Documentation for acctest.ps, view*.ps, and zeroline.ps was
+missing. (psfiles.doc)
+ - The documentation for rollconv.ps omitted the .CSR file.
+(rollconv.ps)
+
+Removes an inappropriate RCS Id line. (gs.1)
+
+Adds a list of paper sizes to the man page. (gs.1)
+
+Suggests that driver authors use parameterization rather than copying when
+possible. (drivers.doc)
+
+Adds an announcement of Ghostscript support on CompuServe. (README)
+
+Documents the new -dCOLORSCREEN switch and the existing -dDITHERPPI=lpi
+switch. (use.doc)
+
+Notes that the OS/2 implementation now requires EMX/GCC 0.9b rather than
+0.9a. (install.doc)
+
+Adds some new man pages. (pdf2ps.1, ps2ascii.1)
+
+Greatly expands lib.doc. (lib.doc)
+
+</pre><h3><a name="V3.63_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The pg target for Unix platforms didn't include some necessary
+additional X11 libraries. (unix-end.mak)
+ - The Unix library makefile didn't define CCAUX or CCLEAF.
+(ugcclib.mak)
+ - Unix systems didn't `install' some .ps files. (unix-end.mak)
+
+Extends genconf so that features at the library level can have
+initialization procedures. (gconf.c, genconf.c, gsinit.c)
+
+Adds a -dCOLORSCREEN[=false] switch to force enabling or disabling of
+4-color screens. (gs_init.ps, gs_setpd.ps)
+
+</pre><h3><a name="V3.63_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The prfont utility didn't leave enough of a margin on the left.
+(prfont.ps)
+ - The ps2ascii utility still created files _temp_.out and _temp_.err
+even though they are no longer used. (ps2ascii.ps)
+ - The acctest.ps file was empty, rather than including a test
+program. (acctest.ps)
+
+Adds ps2pdf[.bat] scripts for invoking the new pdfwrite driver. (ps2pdf,
+ps2pdf.bat, unix-end.mak)
+
+</pre><h3><a name="V3.63_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The x11alpha driver had a patch that suppressed output in many
+cases. (gdevxalt.c)
+ - The X driver set up a parameter incorrectly in copy_color.
+(gdevx.c)
+ - An explicit cast was needed to handle a 'const' problem.
+(gdevpng.c)
+
+Adds a pdfwrite driver that creates syntactically correct PDF output. The
+output is only reasonable for fill/stroke graphics, not for text or images.
+(iscan.h, sa85x.h, sfilter.h, gdevpdf.c, sfilter2.c, zfdecode.c)
+
+</pre><h3><a name="V3.63_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The test for WinExec failure on Win32 was incorrect. (gp_mswin.c)
+ - getenv was declared redundantly on OS/2. (gp_os2.c)
+ - gs16spl.c was missing &lt;string.h&gt;. (gs16spl.c)
+
+</pre><h3><a name="V3.63_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Images read data in smaller and smaller increments (performance
+bug only). (zpaint.c)
+ - Images with MultipleDataSources=true and two or more DataSources
+referencing the same stream could get confused. (zpaint.c)
+ - Invoking setpagedevice with an undefined key, even with Policy =
+1, caused an error. (gs_setpd.ps)
+ - IEEE floats in binary tokens or encoded number strings were read
+incorrectly on CPUs that use non-IEEE floating point. (ibnum.c)
+
+Adds a 'const' to the second parameter of zimage_setup. (zimage2.c,
+zpaint.c)
+
+Encapsulates the filling of free memory blocks in a macro. (igc.c,
+igcstr.c)
+
+</pre><h3><a name="V3.63_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If the first line of a file began with % but the line was longer
+than 255 characters, an error occurred. (pdf_main.ps)
+ - Masked images didn't set the color before drawing. (gs_pdf.ps)
+ - Extraneous blank lines in the trailer or cross-reference region
+caused an error. (pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.63_Streams"></a>Streams</h3><pre>
+
+Speeds up image interpolation a little. Much more could be still be done.
+(siscale.c)
+
+</pre><h3><a name="V3.63_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - An error in handling a boundary condition could cause a horizontal
+streak of pixels to be turned on or off when it shouldn't be. (gxfill.c)
+ - The new scan-line-based filling loop could write pixels twice.
+(The old trapezoid-based loop still does write pixels twice.) (gxfill.c)
+ - For multi-plane images, gs_image_next only sets *pused for the
+last plane; this wasn't documented. (gsimage.h)
+ - Images with MultipleDataSources=true and two or more DataSources
+referencing the same stream could get confused. (gsimage.h, gsimage0.c)
+ - 12-bit gray images caused an invalid memory access. (gsimage.c)
+ - Nearly-zero-thickness lines didn't get filled, because the hack
+that compensates for this peculiarity of the MS Windows PostScript driver
+accidentally got disabled. (gxfill.c)
+ - Some casts to remove 'const' were omitted. (gxclread.c)
+ - 1-line-high bitmaps could get written in the band list with an
+inconsistent number of bytes, causing errors when reading. (gxcldev.h,
+gxclbits.c, gxclist.c, gxclpath.c, gxclread.c)
+ - Isolated dots produced by round caps usually disappeared. (They
+still disappear sometimes.) (gxstroke.c)
+ - On 16-bit platforms, the computation of t2 and t3 in
+gx_curve_x_at_y could overflow, leading to incorrect output. (gxpcopy.c)
+ - Stroking horizontal or vertical lines could produce variations of
+1 pixel in the line width. (gxstroke.c)
+ - The default clipping region for band rendering was too large,
+leading to wasted work. (gxclread.c)
+ - Guarantees no double pixel writing when necessary, i.e., when a
+non-idempotent RasterOp is selected. (gsropt.h, gxfill.c)
+ - For unrotated black-and-white images, one column of pixels at the
+right edge of the image might be incorrect. (gsimage1.c)
+ - A const pointer was passed inappropriately. (gxistate.h,
+gscoord.c)
+ - CIE color conversion could address 1 element beyond the end of an
+array, with unpredictable results. (gscie.c)
+
+Separates out the higher-level band list facilities, so they can be an
+optional feature. (lib.mak, gxcldev.h, gxclpath.h, gxclbits.c, gxclist.c,
+gxclpath.c, gxclread.c)
+
+Implements bitmap (fill_mask) clipping in the band list. (gxcldev.h,
+gxclpath.h, gxclist.c, gxclpath.c, gxclread.c)
+
+Starts to separate out the RasterOp facility as an optional feature.
+(lib.mak, gxdevice.h, gxdevrop.h, gdevdflt.c, gdevmrop.c)
+
+Encapsulates the filling of free memory blocks in a macro, at the request of
+a licensee. (gdebug.h, gsmdebug.h, gsmemory.h, gs.c, gsalloc.c, gsmemory.c,
+gxbcache.c)
+
+Speeds up fill_rectangle for 32-bit devices. (gdevm32.c)
+
+Speeds up path writing in band lists a little. (gxclpath.c)
+
+Implements AccurateScreens along the lines described in the Adobe
+documentation. The current implementation can produce very large
+super-cells, so it will not always be able to actually increase the screen
+accuracy. (gxdht.h, gsht.c, gshtscr.c)
+
+</pre>
+
+<h2><a name="Version3.62"></a>Version 3.62 (limited, incremental) (12/26/95)</h2>
+
+<p>
+This release makes some licensee-requested improvements in the garbage
+collector and fixes a couple of minor bugs. It also constitutes a
+checkpoint for the forthcoming forked 3.53 release.
+
+<h3><a name="V3.62_Documentation"></a>Documentation</h3><pre>
+Notes that for Win32s, gs16spl.exe must be in the same directory as
+gswin32.exe. (install.doc)
+
+Changes `3.N' to a real version number in the man page. (gs.1)
+
+Adds a reference to dos-psv, another "dumb terminal" user interface for
+Ghostscript intended for MS-DOS users. (README)
+
+</pre><h3><a name="V3.62_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The stack size for some of the PC platforms was set too small.
+(watc.mak, watcwin.mak)
+
+Changes the default value of ORIENT1 from false to true, i.e., assumes that
+a value of 1 for the orientation parameter of setpageparams indicates
+portrait orientation. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. It only
+affects files created for roll-media imagesetters. (gs_init.ps, use.doc)
+
+</pre><h3><a name="V3.62_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The definition of the op_index_op_array_table macro had an
+incorrect trailing semicolon. (opdef.h)
+ - Setting the PageSize policy to 1 and then trying to set the page
+size caused an error if FIXEDMEDIA was selected. (gs_setpd.ps)
+
+Changes the garbage collector marking phase so that instead of just using a
+single block (allocated, free, or default) for the mark stack, it can chain
+all three types of block together. (igc.h, igc.c, igcstr.c, ilocate.c)
+
+Refactors the garbage collector slightly to reduce inter-module
+dependencies. (int.mak, igc.h, igcstr.h, igcstr.c)
+
+Changes the garbage collector to keep track of ranges within each chunk that
+must be scanned if the mark stack overflows. (gxalloc.h, igc.c)
+
+Adds [write]===[only] procedures, which act like == but also print the
+contents of dictionaries, and ppstack, which acts like pstack but uses ===.
+Changes ESTACKPRINT and OSTACKPRINT to use === rather than ==. (gs_init.ps,
+gs_setpd.ps)
+
+</pre><h3><a name="V3.62_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If a PDF file substituted a calibrated color space for the
+DeviceGray or DeviceRGB color space using a ColorSpace resource, the
+PostScript file that pdf2ps produced from that PDF file caused an error.
+(gs_pdf.ps)
+
+</pre><h3><a name="V3.62_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The debugging code for checking the sorting of line lists didn't
+check for an empty list. (gxfill.c)
+
+</pre>
+
+<h2><a name="Version3.61"></a>Version 3.61 (limited) (12/10/95)</h2>
+
+<p>
+This limited release fixes a few bugs (including a couple that significantly
+affected character quality) and also includes some substantial performance
+improvements.
+
+<h3><a name="V3.61_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The directory name for the PNG library was incorrect.
+(libpng.mak)
+ - The analysis of curve monotonocity in gxpcopy.c had an error.
+(gxpcopy.c)
+
+Changes the subdirectory names for zlib and libpng to be consistent.
+(make.doc)
+
+Documents a possible problem with object file format incompatibilities in
+certain versions of GNU/Linux. (make.doc)
+
+Documents the new distinction between devices and device prototypes.
+(language.doc)
+
+Adds a pointer to DEC's free pstotext utility. (README)
+
+</pre><h3><a name="V3.61_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - zlib.mak omitted some files in the encoding module dependencies.
+(zlib.mak)
+ - os2.mak referred to png.mak rather than libpng.mak. (os2.mak)
+ - The png devices didn't include gdevpccm.$(OBJ) as a required file.
+(devs.mak)
+ - Some modules in lib.mak referred to stream.h, which was defined in
+int.mak. (int.mak, lib.mak)
+ - Quite a few dependencies on header files were missing from the
+makefiles. (int.mak, lib.mak, *.mak)
+
+Adds a 'pg' target to the Unix makefiles, for building profiling
+configurations. (unix-end.mak)
+
+</pre><h3><a name="V3.61_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - Type 1 fonts in which some characters are defined by PostScript
+procedures couldn't be compiled. (ccfont.h, iccfont.c, font2c.ps)
+ - pdf2ps didn't write Widths or Encoding in the converted file,
+producing incorrect spacing and incorrect characters. (pdf_2ps.ps)
+ - markhint.ps didn't handle the Type 1 'div' operator, causing
+typecheck errors. (markhint.ps)
+ - markhint.ps ignored the hstem3 and vstem3 hints. (markhint.ps)
+
+Changes the rollconv.ps utility to produce files whose names conform to the
+8.3 length restriction, and to reduce the fixed RAM overhead for Kanji
+fonts. (rollconv.ps)
+
+Adds a utility for detecting compiler problems that affect Ghostscript.
+(bughunt.sh)
+
+</pre><h3><a name="V3.61_Drivers"></a>Drivers</h3><pre>
+
+Adds anti-aliasing capability (-dTextAlphaBits and -dGraphicsAlphaBits) to
+the PGM and PPM drivers. (gdevpbm.c)
+
+Declares the static_procs member of the device structure as const *. This
+should have been done a long time ago! (drivers.doc, gxdevice.h)
+
+</pre><h3><a name="V3.61_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Printing didn't work in 32-bit MS Windows environments.
+(bcwin32.mak, gdevmswn.c, gp_mswin.c)
+ - There were some compatibility problems with IBM C. (os2.mak,
+gsdll.h, gdevpm.c, gp_os2.c)
+
+Adds the PNG drivers to the 32-bit MS Windows and OS/2 makefiles.
+(bcwin32.mak, os2.mak)
+
+Adds a conditional to work around a bug in gcc 2.7.x (it didn't recognize
+that the target of a const T * might still be mutable through aliasing).
+(stdpre.h)
+
+</pre><h3><a name="V3.61_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Rasterizing a character in a Type 1 font with an invalid FontBBox
+left some garbage on the operand stack (bug introduced in 3.52 or 3.60).
+(gs_type1.ps)
+ - The font substitution algorithm could fail or loop. (gs_fonts.ps)
+
+Adds a little more support for CID fonts and CMaps. (gs_cidfn.ps,
+gs_cmap.ps)
+
+</pre><h3><a name="V3.61_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - An #include &lt;memory_.h&gt; was missing. (ziodev.h)
+ - Scanner-detected errors (primarily syntaxerror) didn't report the
+file position. (gs_init.ps)
+ - Rotated characters were rendered incorrectly (bug introduced in
+3.52). (gstype1.c)
+ - Some compilers got upset about the use of 'dict' as a variable
+name. (zdict.c)
+ - Operand stack overflows sometimes didn't set the "requested" field
+correctly. (interp.c)
+ - Using -dBufferSpace= with a non-printer device caused an error.
+(gs_init.ps)
+
+Adds zlibEncode/Decode filters. (int.mak, zfzlib.c)
+
+Separates devices from device prototypes. Prototypes, which lack the
+writable attribute, cannot be installed as the current device or have their
+parameters changed. This change allows Ghostscript to be exited and
+restarted without being reloaded, which solves some problems with DLL
+usage. ****** WE HAD TO SUBVERT THIS CHANGE BECAUSE OF MEMORY MANAGER
+PROBLEMS, by making zgetdevice return a writable reference to the
+prototype. (We finally fixed this in release 3.65.) (gs_init.ps, iref.h,
+opcheck.h, zdevice.c, ztype.c, zwppm.c)
+
+Extends the client API to allow for pushing values onto the operand stack.
+(imain.h, gs.c, gsmain.c)
+
+Defines a .setdefaultscreen procedure that sets the default halftone screen,
+transfer function, and stroke adjustment for the current device. Changes
+selectdevice and setpagedevice so that they call .setdefaultscreen;
+setpagedevice calls .setdefaultscreen before calling the Install procedure,
+so that Install can set different parameters if it wishes. Note that
+setdevice does not do this. (gs_init.ps, gs_setpd.ps)
+
+</pre><h3><a name="V3.61_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Tf set the current text font twice, and interacted with pdf2ps in
+an awkward way. (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
+ - If a font had variant Widths, it could get confused in the cache
+with the underlying font. (pdf_font.ps)
+ - If a character appeared twice in an encoding and the font
+specified different Widths values for the two occurrences, the last Width
+would be used. We patched this to ignore zero Widths, which is not the
+correct solution but which almost always produces correct output.
+(pdf_font.ps)
+ - Arrays containing nulls didn't print out correctly (bug introduced
+in 3.60). (gs_init.ps)
+ - Some PDF files contain very large dictionaries, which caused a
+stackoverflow. (pdf_base.ps)
+
+Speeds up the initial processing of PDF files by caching the map from page
+numbers to page objects, and by not scanning the outlines if we aren't
+producing PostScript output. (pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.61_Streams"></a>Streams</h3><pre>
+
+Adds zlibEncode/Decode filters. (lib.mak, szlibx.h, szlibc.c, szlibd.c,
+szlibe.c)
+
+</pre><h3><a name="V3.61_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - glyphshow displayed a character with code 0 rather than the
+requested character (bug introduced in 3.60.) (gschar.c)
+ - If trimming white space around a character reduced its raster, the
+character was garbled in the cache (bug introduced in 3.60.) (gxccman.c)
+ - colorimage would incorrectly convert white pixels to black if the
+image color space was CMYK, the current color space was not CMYK, and the
+number of bits per pixel was 4 or 8. (gsimage2.c)
+ - One of the clipping tests for images was backwards (bug introduced
+in 3.60). (gsimage.c)
+ - Type 1 fonts that used the Flex feature applied hints to the path
+multiple times, causing dropouts, uneven stems, and other problems (bug
+probably introduced in 3.21). (gstype1.c)
+ - If a Type 1 font used the Flex feature within the accent of an
+accented character defined with seac, the shape of the accent could be
+distorted. (gxtype1.h, gstype1.c)
+ - If a Type 1 font changed hints using the hint replacement facility
+when the last operation was a closepath, the old hints would be applied a
+second time, distorting the shape. (gxhint3.c)
+ - Band lists could read garbage beyond the end of data for a band,
+causing unpredictable errors (bug introduced in 3.60). (gxclread.c)
+ - If the bounding box of the path for fill_path or stroke_path went
+outside the device page boundary when banding, out-of-bounds memory
+references occurred (bug introduced in 3.60). (gxdevice.h, gxclpath.c)
+
+Adds an alternative implementation of the core path filling algorithm that
+is much faster on objects with curves but doesn't handle Y fattening. This
+is the implementation that will normally be used for rasterizing characters.
+This implementation rasterizes curves directly, without flattening them.
+(gxfixed.h, gxpath.h, gzpath.h, gsdps1.c, gxfill.c, gxpcopy.c, gxpdash.c)
+
+Speeds up the flattening of curves substantially by omitting more redundant
+points. (gxpcopy.c)
+
+Speeds up character bitmap compression a little more. (gsbitops.h,
+gdevabuf.c, gsbitops.c, gxccman.c)
+
+Speeds up anti-aliased graphics a bit by computing a bounding box before
+converting from oversampling to alpha values, and by speeding up the
+bounding box computation itself. (gsbitops.h, gdevabuf.c, gsbitops.c,
+gxccman.c)
+
+</pre>
+
+<h2><a name="Version3.60"></a>Version 3.60 (limited) (11/20/95)</h2>
+
+<p>
+(Note: release numbers 3.54 through 3.59 were deliberately skipped.) This
+internal release includes a major redesign of band lists in order to reduce
+their size for embedded implementations, to move towards supporting "vector"
+output formats, and to further separate the imager library from the language
+interpreters.
+
+<h3><a name="V3.60_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - A comment was incorrect. (viewpbm.ps)
+ - The PixelDifference filters were not documented. (language.doc)
+ - The change from currenttime to .currenttime wasn't documented.
+(language.doc)
+ - gs.1 incorrectly stated that the default font directory name
+included the version number. (gs.1)
+ - The -g and -r switches didn't specify that the units for their
+arguments are pixels and pixels per inch respectively. (use.doc)
+ - The PageOffset page device parameter wasn't listed.
+(language.doc)
+
+Changes copy_mono and copy_color to optional procedures. (drivers.doc)
+
+Adds a reference to ps_view.ps, a "dumb terminal" user interface for
+Ghostscript intended for MS-DOS users. (README)
+
+Splits off the documentation on installing Ghostscript into a separate file.
+(readme, install.doc, use.doc)
+
+Adds documentation on the data format produced by the standard LZWEncode
+filter. (readme, lzwce.doc)
+
+Clarifies XLIBDIR vs. XLIBDIRS. (make.doc)
+
+Adds user-contributed documentation on building Ghostscript under QNX.
+(make.doc)
+
+</pre><h3><a name="V3.60_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The rule for building dfaxhigh.dev had a typo. (devs.mak)
+ - The dependencies for gdevpipe.h were missing errno__h and
+string__h. (unixtail.mak)
+ - The geninit program (the implementation of COMPILE_INITS=1) didn't
+parse the command line properly, and didn't check for PostScript files
+properly. (geninit.c)
+ - ccfontab.c was omitted from the fileset. The easiest way to fix
+this was to rename it to icfontab.c. (gs.mak, int.mak, ccfontab.c)
+ - The Unix makefiles installed caption.ls (a typo) rather than
+caption.ps. (unix-end.mak)
+ - XLIBDIR, for dynamic library access, wasn't defined. (*head.mak,
+*tail.mak, ugcclib.mak)
+
+Adds the PNG and ZLIB makefiles to the fileset. (*.mak, png.mak, zlib.mak,
+tar_cat)
+
+Puts the PixelDifference filters in the standard Level 2 set, since the LZW
+filters may invoke them (a post-Red Book addition to the PostScript language
+definition). (int.mak)
+
+Adds -Wcast-qual to the gcc compiler flags. (gcc-head.mak)
+
+Adds the PNG drivers to the standard Unix configurations.
+(ansi/cc-/gcc-head.mak)
+
+Adds a -dNOFONTPATH switch to suppress any consultation of the FONTPATH
+variable or the GS_FONTPATH environment variable. (gs_fonts.ps, gs_init.ps)
+
+</pre><h3><a name="V3.60_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The default scaling for viewing PBM files was computed
+incorrectly. (viewpbm.ps)
+ - ps2ascii left a value on the stack for each unrecognized character
+it processed, eventually causing a stackoverflow. (ps2ascii.ps)
+
+Changes viewpbm.ps so that it simply defines P1 through P6, allowing PBM
+files to be executed with 'run'. (viewpbm.ps)
+
+Adds a small benchmark to crudely measure hardware/system performance. The
+same file can either be compiled as a C program or executed as a PostScript
+program. (bench.c)
+
+Adds a few PPD files to the distribution. There will probably be more as
+time goes on. (tar_gs, unix-end.mak)
+
+Updates the Unix lpr scripts to handle a wider variety of device options.
+(unix-lpr.doc, lprsetup.sh, unix-lpr.sh)
+
+Adds a utility for converting files produced by Macromedia's Rollup program
+to a Type 0 form directly usable by Ghostscript. (rollconv.ps)
+
+</pre><h3><a name="V3.60_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Forwarding devices passed an incorrect first argument when
+forwarding a copy_rop operation. (gsdevice.c)
+ - Because of a typo, the LaserJet drivers had incorrect margins.
+This was probably a new bug in 3.5x. (gdevdjet.c)
+ - A private name was duplicated. (gdevtfax.c)
+ - The x11alpha driver passed invalid colors to the X library.
+(gdevxalt.c)
+ - The x11alpha driver set the blue component of colors incorrectly.
+(gdevxalt.c)
+ - Some `const' declarations were missing. (gdevtifs.c, gdevtfnx.c,
+gdevxxf.c)
+ - The size of A4 paper was slightly inconsistent across drivers.
+(gdevdjet.c, gdevl256.c)
+
+Provides default implementations of copy_mono and copy_color in terms of
+fill_rectangle. (gxdevice.h, gsdevice.c)
+
+Adds forwarders for sync_output and output_page. (gxdevice.h, gsdevice.c)
+
+Adds new optional procedures to the driver interface:
+ - fill_path for filling a path with a color;
+ - stroke_path for stroking a path;
+ - fill_mask for painting a color through a mask.
+The default implementations use the existing rasterizer algorithms. This
+involves a NON-BACKWARD-COMPATIBLE change to the parameters of a few
+internal routines:
+ gs_currentlineparams
+ gx_fill_path, gx_fill_path_only, gx_path_expand_dashes, gx_path_flatten
+and two externally visible routines not part of standard PostScript:
+ gs_setfilladjust, gs_currentfilladjust
+(gdevmem.h, gdevprn.h, gspath.h, gspenum.h, gxcpath.h, gxdevice.h, gxdraw.h,
+gxpaint.h, gxpath.h, gscoord.c, gsdevice.c, gspaint.c, gsstate.c,
+gxacpath.c, gxclist.c, gxclread.c, gxcpath.c, gxdraw.c, gxfill.c, gxpaint.c,
+gxpcmap.c, gxpcopy.c, gxstroke.c)
+
+Makes major changes to the dithering algorithm for the color DeskJet and
+BubbleJet drivers, contributed by a user. (gdevcdj.c)
+
+Adds a contributed 12-bit RGB TIFF driver. (gdevtfnx.c)
+
+</pre><h3><a name="V3.60_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The printjob created by Ghostscript was called "Ghostscirpt"
+instead of "Ghostscript". (gp_os2.c)
+ - An "export" declaration was omitted from DllInit. (gp_mswin.c)
+
+Removes gp_get_clock (its interface was changed from calendar
+days/milliseconds to epoch seconds/nanoseconds in an undocumented,
+NON-BACKWARD-COMPATIBLE change in 3.51), and adds a new gp_get_realtime
+procedure that returns epoch seconds/nanoseconds. This too is a
+NON-BACKWARD-COMPATIBLE change; it is required because we overlooked the
+prior change in a batch of user-contributed code. (gp.h, gp_*.c)
+
+</pre><h3><a name="V3.60_Fonts"></a>Fonts</h3><pre>
+
+Adds Heavy as a synonym for Bold when doing intelligent font substitution.
+(gs_fonts.ps)
+
+</pre><h3><a name="V3.60_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The setup for the CCITTFax filters set the 'raster' element
+redundantly. (zfdecode.c)
+ - currentscreen and currentcolorscreen could give an error if the
+current screen was set with sethalftone (or, for currentscreen,
+setcolorscreen). (gs_dps1.ps)
+ - The font operators didn't work properly if a PostScript file
+redefined certain operator names. (gs_res.ps)
+ - The CCITTFax filters imposed a limit of 9999 Rows or Columns. The
+new limit is 32000. (zfdecode.c)
+ - Streams could get removed from a bookkeeping list prematurely, and
+wind up dangling. (zfile.c)
+ - The garbage collector didn't ask for large enough a mark stack,
+and only used half of what it got. (This was only a performance problem.)
+(igc.c)
+ - Two private names duplicated names in a vendor library. (zbseq.c)
+ - Type 1 fonts didn't enforce the maximum value of BlueScale, which
+caused some faulty fonts produced by Fontographer to produce incorrect
+output. (zfont1.c)
+ - cvs / cvrs / = didn't produce Adobe-compatible output.
+(gs_init.ps, iutil.h, iutil.c, zfileio.c)
+ - Multiple -I switches set the search path incorrectly. (gsmain.c)
+ - Many `const' declarations were missing. (icie.h, idparam.h,
+iref.h, iutil.h, idparam.c, iinit.c, ilocate.c, iname.c, interp.c, iparam.c,
+iutil.c, zcie.c, zfile.c, zgstate.c, ziodev.c, ztype.c)
+ - Fonts could wind up with a pointer to the wrong VM space, causing
+potential GC or save/restore confusion. (zfont2.c)
+ - upath could leave garbage on the stack if it failed. (gs_dps1.ps)
+
+Speeds up rasterizing characters into the cache a little. (gs_type0.ps)
+
+Changes the default limit on the size of cached characters from the maximum
+of (18 points or 5 times the "average" character size) to (18 points or 1%
+of the total cache size). (gs_init.ps)
+
+Adds the DecodedByteAlign parameter to the CCITTFax filters. (zfdecode.c)
+
+Updates some code for compatibility with the new fill_path driver procedure.
+(zupath.c)
+
+Replaces .set/currentfilladjust with .set/currentfilladjust2, and defines
+the former in terms of the latter. (gs_init.ps, zgstate.c)
+
+Extends the make[word]imagedevice operators to accept palette values of 16,
+24, and 32, for creating true-color image devices. (zdevice.c)
+
+Changes realtime to match the definition of gp_get_realtime. (zmisc.c)
+
+Removes the [.]currenttime operator. realtime provides interval timing in
+milliseconds; the %Calendar% IODevice provides calendar times. (zmisc.c)
+
+Extends the LZW filters to handle the PDF Predictor (pixel-differencing)
+option. (zfdecode.c, zfilter2.c, zfpdiff.c (deleted))
+
+</pre><h3><a name="V3.60_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - The length of an image's data was sometimes calculated
+incorrectly, causing an error when converting PDF to PostScript.
+(pdf_draw.ps)
+ - If word spacing and/or text spacing was non-zero, an error could
+occur. (gs_pdf.ps)
+ - Text that was both filled and stroked caused an error.
+(gs_pdf.ps)
+
+</pre><h3><a name="V3.60_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - When closing an encoding filter stream whose target was also a
+filter, the latter could get called incorrectly with last = 1, possibly more
+than once, leading to premature EOD markers. (stream.c)
+ - The LZW-compatible encoder put out an incorrect end-of-data code.
+(slzwce.c)
+ - The LZW-compatible encoder didn't put out a reset code soon
+enough. (slzwce.c)
+ - Some `const' declarations were missing. (siscale.c)
+ - Doing a sgets on a closed stream could call sreadbuf, possibly
+causing an error. (stream.c)
+
+Adds a new (optional) set_defaults procedure to the stream template, which
+sets the stream parameters to default values. We only implement it for a
+few stream types. (scfx.h, scommon.h, slzwx.h, spdiffx.h, srlx.h,
+strimpl.h, scfd.c, scfe.c, slzwce.c, slzwd.c, slzwe.c, spdiff.c, srld.c,
+srle.c)
+
+Adds a new parameter to the CCITTFax filters, DecodedByteAlign. This is an
+integer N, which must be a power of 2 between 1 (2^0) and 16 (2^4), that
+specifies that decoded data scan lines are always a multiple of N bytes.
+The encoding filter skips data in each scan line from Columns to the next
+multiple of N bytes; the decoding filter pads each scan line to a multiple
+of N bytes. Default value: 1. (scfx.h, scfd.c, scfe.c)
+
+Increases the maximum width of a scan line for the CCITTFaxEncode filter to
+32000 pixels. (scf.h)
+
+</pre><h3><a name="V3.60_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Cached characters sometimes had extra blank space on the left,
+leading to some unnecessary bit-shuffling when imaging them. (gxccman.c)
+ - In rare cases, gray halftones called gx_color_load unnecessarily.
+(gxdither.c)
+ - The list of all-bands commands wasn't initialized/reset properly.
+(gxclist.c, gxclread.c)
+ - Rendering an anti-aliased character to a non-anti-aliased device
+didn't free the temporary bitmap, causing memory to be lost. (gxccache.c)
+ - Dash patterns where the offset exactly reached a run of length 0
+skipped over the 0-length run. (gsline.c)
+ - Rectangles closed with both lineto and closepath weren't
+recognized as rectangles. This is only a performance bug. (gxpath2.c)
+ - Because of a typo in a macro formal parameter list, a private name
+was duplicated. (gsstruct.h)
+ - Text display operations didn't update the current character in the
+enumerator structure during the fastest path through the code. This only
+matters to one very unusual commercial client. (gschar.c)
+ - Some `const' declarations were missing. (gsparam.h, gxistate.h,
+stdpre.h; gdevm1.c, gsalloc.c, gsfont.c, gsimage3.c, gsmemory.c, gsmisc.c,
+gspcolor.c, gstype1.c, gxfill.c, gxpcopy.c)
+
+Changes the header files to assume that gcc on Solaris defines
+__svr4__ and that, in this case, &lt;string.h&gt; has the right stuff in it.
+(memory_.h)
+
+Refactors the character cache to share structures with a similar cache
+used by band lists. Eventually the band list may be able to reference
+the character cache directly, saving a lot of copying. (gxbcache.h,
+gxfcache.h, gsfont.c, gxbcache.c, gxccache.c, gxccman.c)
+
+Speeds up getting the side bearing and width of a Type 1 charstring a
+little. (gxtype1.h, gstype1.c)
+
+Redesigns band lists so that they can cache character bitmaps as well as
+halftone bitmaps. Characters may be written for all bands, not just the
+band(s) they appear in, depending on the setting of the CHAR_ALL_BANDS_COUNT
+parameter in gxclbits.c. (gxcldev.h, gxclist.h, gxclbits.c, gxclist.c,
+gxclread.c)
+
+Adds G4 fax compression for band list bitmaps. (gxcldev.h, gxclist.c,
+gxclread.c)
+
+Incorporates the new set_defaults procedure into the memory-based band list
+implementation. (gxclmem.c)
+
+Implements a halftoning device that can be used in a device pipeline.
+(gdevht.h, gzht.h, gdevht.c, gxcht.c)
+
+Factors out imager state from the full graphics state. This division is
+preliminary and subject to change. (gxistate.h, gxop1.h, gzstate.h,
+gsline.c, gsstate.c, gstype1.c, gxhint*.c)
+
+Implements passing fill operations in the band list, except for pattern
+color or colored halftones. (gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
+
+Implements passing stroke operations in the band list, except for pattern
+color or colored halftones. (gsline.h, gslparam.h, gxline.h, gzline.h,
+gsline.c; gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
+
+Implements the ability to represent halftoned characters in the band list.
+(gxccache.c)
+
+Starts to implement the ability to do halftoning during the rendering phase
+rather than before writing the band list (currently for black-and-white
+devices only). Doing this required NON-BACKWARD-COMPATIBLE changes to the
+interfaces of a few internal procedures:
+ gx_check_tile_size, gx_render_device_{color,gray}
+(gxdcolor.h, gxdht.h, gzht.h, gsht.c, gsimage1.c, gsmisc.c, gspcolor.c,
+gsstate.c, gxcht.c, gxclbits.c, gxdither.c, gxht.c)
+
+Implements passing clipping information in the band list. (gzcpath.h,
+gxacpath.c, gxclpath.c, gxclread.c, gxcpath.c)
+
+Removes the gs_state * parameter from the device color fill_rectangle
+procedures and many of their callers, since it is no longer needed. This is
+a non-backward-compatible change to an internal API. (gdevmrop.h,
+gxdcolor.h, gxdraw.h, gxpaint.h, gdevmrop.c, gsimage.c, gspcolor.c, gxcht.c,
+gxclread.c, gxdraw.c, gxfill.c, gxht.c, gxpaint.c, gxstroke.c)
+
+Removes gxdevice.h from gzstate.h, since not all modules requiring access to
+the graphics state need to know the implementation of devices. This entails
+adding gxdevice.h to the include lists for some modules. (gxchar.h,
+gxcpath.h, gxcvalue.h, gxdevice.h, gxtype1.h, gzstate.h; gschar.c,
+gscoord.c, gsdevice.c, gsimage1.c, gsimage2.c, gsimage3.c, gspaint.c,
+gspath.c, gsstate.c, gstype1.c, gxccache.c, gxccman.c, gxhint1.c, gxhint2.c,
+gxhint3.c, gxpaint.c)
+
+Adds a compile-time option, ALPHA_LSB_FIRST, which causes alpha-sampled
+characters to be nibble-reversed in the cache. This was created for a
+specialized application and does not interact well with the rest of the
+code. (gsbitops.c)
+
+Substantially reduces the space required to represent 24- or 32-bit colors
+in the band list, by using more aggressive color differencing. (gxcldev.h,
+gxclist.c, gxclread.c)
+
+Changes the allocation of unique IDs for halftone tiles to use the gray
+level rather than the number of 1-bits as the increment to a base ID; this
+allows more efficient (delta) representation of halftone indices in the band
+list. (gxcldev.h, gxclist.c, gxclread.c, gxht.c)
+
+Substantially speeds up entering anti-aliased characters in the cache, by
+removing white space before compressing rather than vice versa.
+(gsbitops.c, gxccman.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.53"></a>Version 3.53 (1/10/96)</h2>
+
+<p>
+This is an anomalous, out-of-sequence release requested by a commercial
+licensee. It consists of 3.52 plus the following retrofits from 3.60
+through 3.63:
+ - PDF interpreter and pdf2ps;
+ - Type 1 rasterizer fixes;
+ - Type 1 rasterizer and polygon fill performance improvements;
+ - MS Windows and OS/2 fixes;
+ - A few other important fixes.
+It does NOT fix all problems reported since 3.52.
+
+<p>
+The list of changes below indicates which subsequent release was the source
+of each change. In several cases, minor editing of the change was required
+to make it compatible with 3.52.
+
+<h3><a name="V3.53_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ [3.61] The analysis of curve monotonocity in gxpcopy.c had an error.
+(gxpcopy.c)
+
+[3.63] Notes that the OS/2 implementation now requires EMX/GCC 0.9b rather
+than 0.9a. (use.doc)
+
+[3.62] Notes that for Win32s, gs16spl.exe must be in the same directory as
+gswin32.exe. (use.doc)
+
+[3.62] Adds a reference to dos-psv, another "dumb terminal" user interface
+for Ghostscript intended for MS-DOS users. (README)
+
+[3.61] Adds a pointer to DEC's free pstotext utility. (README)
+
+[3.60] Adds a reference to ps_view.ps, a "dumb terminal" user interface for
+Ghostscript intended for MS-DOS users. (README)
+
+</pre><h3><a name="V3.53_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ [3.60] The geninit program (the implementation of COMPILE_INITS=1)
+didn't parse the command line properly, and didn't check for PostScript
+files properly. (geninit.c)
+ [3.60] ccfontab.c was omitted from the fileset. The easiest way to
+fix this was to rename it to icfontab.c. (gs.mak, int.mak, ccfontab.c)
+ [3.60] The definition of pdfread.dev did an ADDMOD, not a SETMOD.
+(int.mak)
+
+[3.60] Adds a -dNOFONTPATH switch to suppress any consultation of the
+FONTPATH variable or the GS_FONTPATH environment variable. (gs_fonts.ps,
+gs_init.ps)
+
+</pre><h3><a name="V3.53_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ [3.61] pdf2ps didn't write Widths or Encoding in the converted file,
+producing incorrect spacing and incorrect characters. (pdf_2ps.ps)
+ [3.60] ps2ascii left a value on the stack for each unrecognized
+character it processed, eventually causing a stackoverflow. (ps2ascii.ps)
+
+[3.61] Changes the rollconv.ps utility to produce files whose names conform
+to the 8.3 length restriction, and to reduce the fixed RAM overhead for
+Kanji fonts. (rollconv.ps)
+
+[3.60] Adds a utility for converting files produced by Macromedia's Rollup
+program to a Type 0 form directly usable by Ghostscript. (rollconv.ps)
+
+</pre><h3><a name="V3.53_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ [3.60] Because of a typo, the LaserJet drivers had incorrect
+margins. This was probably a new bug in 3.5x. (gdevdjet.c)
+ [3.60] A private name was duplicated. (gdevtfax.c)
+ [3.60] The x11alpha driver passed invalid colors to the X library.
+(gdevxalt.c)
+ [3.60] The x11alpha driver set the blue component of colors
+incorrectly. (gdevxalt.c)
+
+</pre><h3><a name="V3.53_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ [3.63] The test for WinExec failure on Win32 was incorrect.
+(gp_mswin.c)
+ [3.63] getenv was declared redundantly on OS/2. (gp_os2.c)
+ [3.63] gs16spl.c was missing &lt;string.h&gt;. (gs16spl.c)
+ [3.61] Printing didn't work in 32-bit MS Windows environments.
+(bcwin32.mak, gdevmswn.c, gp_mswin.c)
+ [3.61] There were some compatibility problems with IBM C. (os2.mak,
+gsdll.h, gdevpm.c, gp_os2.c)
+ [3.60] The printjob created by Ghostscript was called "Ghostscirpt"
+instead of "Ghostscript". (gp_os2.c)
+ [3.60] An "export" declaration was omitted from DllInit.
+(gp_mswin.c)
+
+[3.61] Adds a conditional to work around a bug in gcc 2.7.x (it didn't
+recognize that the target of a const T * might still be mutable through
+aliasing). (stdpre.h)
+
+</pre><h3><a name="V3.53_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ [3.61] Rasterizing a character in a Type 1 font with an invalid
+FontBBox left some garbage on the operand stack (bug introduced in 3.52 or
+3.60). (gs_type1.ps)
+ [3.61] The font substitution algorithm could fail or loop.
+(gs_fonts.ps)
+
+[3.60] Adds Heavy as a synonym for Bold when doing intelligent font
+substitution. (gs_fonts.ps)
+
+</pre><h3><a name="V3.53_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ [3.63] Invoking setpagedevice with an undefined key, even with
+Policy = 1, caused an error. (gs_setpd.ps)
+ [3.62] Setting the PageSize policy to 1 and then trying to set the
+page size caused an error if FIXEDMEDIA was selected. (gs_setpd.ps)
+ [3.61] Rotated characters were rendered incorrectly (bug introduced
+in 3.52). (gstype1.c)
+ [3.60] currentscreen and currentcolorscreen could give an error if
+the current screen was set with sethalftone (or, for currentscreen,
+setcolorscreen). (gs_dps1.ps)
+ [3.60] Streams could get removed from a bookkeeping list
+prematurely, and wind up dangling. (zfile.c)
+ [3.60] Multiple -I switches set the search path incorrectly.
+(gsmain.c)
+ [3.60] Fonts could wind up with a pointer to the wrong VM space,
+causing potential GC or save/restore confusion. (zfont2.c)
+ [3.60] upath could leave garbage on the stack if it failed.
+(gs_dps1.ps)
+
+[3.61] Extends the client API to allow for pushing values onto the operand
+stack. (imain.h, gs.c, gsmain.c)
+
+[3.61] Defines a .setdefaultscreen procedure that sets the default halftone
+screen, transfer function, and stroke adjustment for the current device.
+Changes selectdevice and setpagedevice so that they call .setdefaultscreen;
+setpagedevice calls .setdefaultscreen before calling the Install procedure,
+so that Install can set different parameters if it wishes. Note that
+setdevice does not do this. (gs_init.ps, gs_setpd.ps)
+
+[3.60] Speeds up rasterizing characters into the cache a little.
+(gs_type0.ps)
+
+[3.60] Changes the default limit on the size of cached characters from the
+maximum of (18 points or 5 times the "average" character size) to (18 points
+or 1% of the total cache size). (gs_init.ps)
+
+[3.60] Implements parts of the Type 1 BuildChar callout in C. (gs_type1.ps,
+zchar.c)
+
+</pre><h3><a name="V3.53_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ [3.62] If a PDF file substituted a calibrated color space for the
+DeviceGray or DeviceRGB color space using a ColorSpace resource, the
+PostScript file that pdf2ps produced from that PDF file caused an error.
+(gs_pdf.ps)
+ [3.61] Tf set the current text font twice, and interacted with
+pdf2ps in an awkward way. (gs_pdf.ps, pdf_2ps.ps, pdf_font.ps)
+ [3.61] If a font had variant Widths, it could get confused in the
+cache with the underlying font. (pdf_font.ps)
+ [3.61] If a character appeared twice in an encoding and the font
+specified different Widths values for the two occurrences, the last Width
+would be used. We patched this to ignore zero Widths, which is not the
+correct solution but which almost always produces correct output.
+(pdf_font.ps)
+ [3.61] Arrays containing nulls didn't print out correctly (bug
+introduced in 3.60). (gs_init.ps)
+ [3.61] Some PDF files contain very large dictionaries, which caused
+a stackoverflow. (pdf_base.ps)
+ [3.60] The length of an image's data was sometimes calculated
+incorrectly, causing an error when converting PDF to PostScript.
+(pdf_draw.ps)
+ [3.60] If word spacing and/or text spacing was non-zero, an error
+could occur. (gs_pdf.ps)
+ [3.60] Text that was both filled and stroked caused an error.
+(gs_pdf.ps)
+
+[3.61] Speeds up the initial processing of PDF files by caching the map from
+page numbers to page objects, and by not scanning the outlines if we aren't
+producing PostScript output. (pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.53_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ [3.60] When closing an encoding filter stream whose target was also
+a filter, the latter could get called incorrectly with last = 1, possibly
+more than once, leading to premature EOD markers. (stream.c)
+ [3.60] The LZW-compatible encoder put out an incorrect end-of-data
+code. (slzwce.c)
+ [3.60] The LZW-compatible encoder didn't put out a reset code soon
+enough. (slzwce.c)
+ [3.60] Doing a sgets on a closed stream could call sreadbuf,
+possibly causing an error. (stream.c)
+
+</pre><h3><a name="V3.53_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ [3.63] On 16-bit platforms, the computation of t2 and t3 in
+gx_curve_x_at_y could overflow, leading to incorrect output. (gxpcopy.c)
+ [3.61] glyphshow displayed a character with code 0 rather than the
+requested character (bug introduced in 3.60.) (gschar.c)
+ [3.61] If trimming white space around a character reduced its
+raster, the character was garbled in the cache (bug introduced in 3.60.)
+(gxccman.c)
+ [3.61] colorimage would incorrectly convert white pixels to black if
+the image color space was CMYK, the current color space was not CMYK, and
+the number of bits per pixel was 4 or 8. (gsimage2.c)
+ [3.61] Type 1 fonts that used the Flex feature applied hints to the
+path multiple times, causing dropouts, uneven stems, and other problems (bug
+probably introduced in 3.21). (gstype1.c)
+ [3.61] If a Type 1 font used the Flex feature within the accent of
+an accented character defined with seac, the shape of the accent could be
+distorted. (gxtype1.h, gstype1.c)
+ [3.61] If a Type 1 font changed hints using the hint replacement
+facility when the last operation was a closepath, the old hints would be
+applied a second time, distorting the shape. (gxhint2.c, gxhint3.c)
+ [3.60] Cached characters sometimes had extra blank space on the
+left, leading to some unnecessary bit-shuffling when imaging them.
+(gxccman.c)
+ [3.60] The list of all-bands commands wasn't initialized/reset
+properly. (gxclist.c)
+ [3.60] Because of a typo in a macro formal parameter list, a private
+name was duplicated. (gsstruct.h)
+ [3.60] Text display operations didn't update the current character
+in the enumerator structure during the fastest path through the code. This
+only matters to one very unusual commercial client. (gschar.c)
+
+[3.61] Adds an alternative implementation of the core path filling algorithm
+that is much faster on objects with curves but doesn't handle Y fattening.
+This is the implementation that will normally be used for rasterizing
+characters. This implementation rasterizes curves directly, without
+flattening them. (gxfixed.h, gxpath.h, gzpath.h, gxdraw.c, gxfill.c,
+gxpcopy.c)
+
+[3.61] Speeds up the flattening of curves substantially by omitting more
+redundant points. (gxpcopy.c)
+
+[3.61] Speeds up character bitmap compression a little more. (gsbitops.h,
+gdevabuf.c, gsbitops.c, gxccman.c)
+
+[3.61] Speeds up anti-aliased graphics a bit by computing a bounding box
+before converting from oversampling to alpha values, and by speeding up the
+bounding box computation itself. (gsbitops.h, gdevabuf.c, gsbitops.c,
+gxccman.c)
+
+[3.60] Speeds up getting the side bearing and width of a Type 1 charstring a
+little. (gxtype1.h, gstype1.c)
+
+[3.60] Adds a compile-time option, ALPHA_LSB_FIRST, which causes
+alpha-sampled characters to be nibble-reversed in the cache. This was
+created for a specialized application and does not interact well with the
+rest of the code. (gsbitops.c)
+
+[3.60] Substantially speeds up entering anti-aliased characters in the
+cache, by removing white space before compressing rather than vice versa.
+(gsbitops.c, gxccman.c)
+
+</pre>
+
+<h2><a name="Version3.52"></a>Version 3.52 (limited) (10/6/95)</h2>
+
+<p>
+This is an incremental release to fix a few problems in 3.51. Since it is
+being made in an environment with no network connectivity, it will probably
+not be released to the general public. ****** THE CHANGES MARKED WITH ***
+BELOW WERE LOST IN THE PROCESS OF SHUFFLING FILESETS BETWEEN ENVIRONMENTS.
+THEY ARE INCORPORATED IN 3.60 BUT NOT IN 3.52. ******
+
+<h3><a name="V3.52_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The fileset included a meaningless empty file. (acctest.ps)
+ *** The definition of pdfread.dev did an ADDMOD, not a SETMOD.
+(int.mak)
+
+</pre><h3><a name="V3.52_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The RunLengthEncode filter used with a dictionary argument could
+give a spurious error. (zfilter.c)
+ - The fast form of the 'dup' operator failed to check for stack
+overflow, which could lead to memory smashing. (interp.c)
+ *** Level 1 configurations gave errors during initialization.
+(ialloc.c, iinit.c, ireclaim.c)
+ *** Attempting to look up or insert a noaccess string as a
+dictionary key converted the string to a name rather than giving an error.
+(idict.h, idict.c)
+
+Adds a C implementation of the .dicttomark (&gt;&gt;) procedure. (gs_init.ps,
+zdict.c)
+
+*** Implements parts of the Type 1 BuildChar callout in C. (gs_type1.ps,
+ifont.h, zchar.c, zfont1.c, zfont2.c)
+
+</pre><h3><a name="V3.52_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Braces were missing in an initializer. (gxdcolor.h)
+ - Composite fonts with a non-zero translation in the FontMatrix
+positioned characters incorrectly. (gschar.c)
+ *** gsparam.c wouldn't compile with some versions of the Borland
+compiler. (gsparam.c)
+
+Speeds up the handling of curve segments in Type 1 fonts a little.
+(gstype1.c)
+
+Speeds up displaying very short strings a little. (gschar.c)
+
+*** Implements parts of the Type 1 BuildChar callout in C. (gxfont.h)
+
+</pre>
+
+<h2><a name="Version3.51"></a>Version 3.51 (9/27/95)</h2>
+
+<p>
+This is the first public release since 3.33. Its main features are a
+working setpagedevice, a working PDF interpreter, and a working PDF to PS
+converter.
+
+<h3><a name="V3.51_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - The -dSHORTERRORS switch wasn't documented in enough places.
+(current.doc, use.doc)
+ - The DLL documentation was internally inconsistent. (dll.doc)
+ - The %pipe% file name syntax wasn't documented. (language.doc)
+
+</pre><h3><a name="V3.51_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - caption.ps wasn't installed properly. (unix-end.mak)
+ - geninit depended on $(gconfig_h) in an improper way. (geninit.c,
+int.mak, *.mak)
+ - One script lacked the #!/bin/sh header. (gsdj500)
+
+Adds the 24-bit color TIFF driver to all configurations that support
+black-and-white TIFF. (*.mak)
+
+</pre><h3><a name="V3.51_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - align.ps was omitted from the fileset. (psfiles.doc, align.ps,
+unix-end.mak)
+
+</pre><h3><a name="V3.51_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - A driver had some \s in formal parameter lists. (gdevcdj.c)
+ - A driver had some improper &amp;s. (gdevtifs.c)
+ - The default MS Windows printer driver was very slow. (gdevwpr2.c)
+ - The (newly restructured) TIFF drivers could produce a memory
+access error. (gdevtifs.c)
+ - The CGM drivers referred to an obsolete structure member.
+(gdevcgm.c)
+ - The black-and-white H-P drivers didn't set the margins properly
+(again). (gdevdjet.c)
+ - Several of the most common printer drivers omitted some scan lines
+at the bottom of the page. (gdevprn.h, gdevprn.c)
+
+At the request of the main OS/2 developer, adds a printer device for OS/2.
+(gdevos2p.c, os2.mak)
+
+Makes many changes to the stcolor driver, submitted by the developer just
+before the release. (devices.doc, unix-end.mak, gdevstc.h, gdevstc*.c,
+stcinfo.ps, stcolor.ps, stcinfo.ps)
+
+</pre><h3><a name="V3.51_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - usertime (and realtime) were broken on VMS. (gp_vms.c)
+ - The 32-bit MS Windows DLL control file had a typo. (gsdll32.def)
+
+Removes the color inkjet drivers from the 16-bit Windows executable, because
+they overflow the 64K default data segment; adds PCX, TIFF, and BMP output
+formats. (bcwin.mak)
+
+</pre><h3><a name="V3.51_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A routine was declared 'private' inconsistently. (zcie.c)
+ - -dSHORTERRORS didn't remove enough non-Adobe error output.
+(gs_init.ps)
+
+</pre><h3><a name="V3.51_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - The ProcSet relied on the presence of NullFont. (gs_pdf.ps)
+
+</pre><h3><a name="V3.51_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was an extraneous \ outside a macro. (gsline.c)
+ - Scaling up a black-and-white image could caused many scan lines to
+be inverted. (gsimage1.c)
+ - The initial clipping path did not take Margins into account
+properly. (gxdevice.h, gdevxalt.c, gscoord.c, gsdevice.c, gsdevmem.c,
+gsdparam.c, gspath.c)
+ - If banding was required, characters could come out as solid black
+rectangles. (gxclist.c, gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.50"></a>Version 3.50 (limited) (9/24/95)</h2>
+
+<p>
+This is the last limited bug-fix release during beta test. The color
+DeskJet drivers are broken (they sometimes produce black rectangles instead
+of characters); we will fix this in the next release.
+<p>
+The following issues have been postponed to an unspecified future release:
+<ul>
+<li> - Filling areas often writes pixels twice, causing incorrect
+output
+with certain unusual RasterOp values. [1.814]
+<li> - The tar.gz archives should include a subdirectory like
+gs-3.46/ in
+the file names.
+<li> - The CCITTFaxDecode filter should skip initial junk if
+EndOfLine =
+true. [1844 8/24/95, NRE]
+</ul>
+
+<h3><a name="V3.50_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - The name of the new 24-bit TIFF driver was incorrect in one place.
+(vms.mak)
+
+</pre><h3><a name="V3.50_Utilities"></a>Utilities</h3><pre>
+
+Adds a new utility to put a caption in a box at the bottom of each page.
+(caption.ps)
+
+</pre><h3><a name="V3.50_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The PC display devices weren't page devices. Probably all the
+other display and window system devices should be made page devices too, but
+we aren't going to bother tracking them down. (gdevpcfb.c)
+ - There was a lot of duplicated code in the TIFF drivers.
+(gdevtifs.h, gdevtfax.c, gdevtfnx.c, gdevtifs.c)
+
+Updates the bjc600 / bjc800 drivers with changes from the author.
+(devices.doc, gdevbjc.h, gdevcdj.c)
+
+</pre><h3><a name="V3.50_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Building with COMPILE_INITS=1 produced a stackunderflow error.
+(gs_pdf_e.ps)
+ - An internal operator didn't have a name. (ztoken.c)
+ - Some error and information messages weren't in the Adobe format.
+(gs_fonts.ps, gs_init.ps)
+ - Some common Adobe compatibility operators weren't implemented:
+pagemargin, pageparams, setpagemargin. (gs_statd.ps, gs_lev2.ps)
+ - setpageparams set Margins rather than PageOffset. (gs_lev2.ps)
+ - setpage and setpageparams didn't set Orientation. (gs_lev2.ps)
+ - If the end of an input buffer fell just after the / of a literal
+name, a memory access error could occur. (iscan.c)
+ - When the interpreter returned from gs_[main_]run_string_continue,
+there could be an extra value on the operand stack. (iscan.h, istream.h,
+interp.c, iscan.c, zfileio.c, zfproc.c, zpaint.c, ztoken.c)
+ - If the character cache was disabled, or if a character was too
+large to be cached, returning from a font BuildChar procedure could do an
+erasepage. (zchar.c)
+
+A minor change was required for compatibility with the library change for
+image devices. (zdevice.c)
+
+Adds a -dSHORTERRORS switch that changes some of the common error and
+warning messages for greater Adobe compatibility. (gs_init.ps, gs_fonts.ps)
+
+</pre><h3><a name="V3.50_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - If a CharProc for a Type 3 font did a BT/ET, the graphics state
+could get confused. (gs_pdf.ps)
+ - If a Tf occurred inside a BT/ET, it didn't take effect on
+subsequent BT/ETs. (gs_pdf.ps)
+
+</pre><h3><a name="V3.50_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was no way to control whether an image device was a page
+device. Fixing this required a NON-BACKWARD-COMPATIBLE CHANGE to
+gs_makewordimagedevice and gs_initialize_wordimagedevice to take a Boolean
+page_device argument. Fortunately, this change affects only a few obscure
+library clients. (gsdevice.h, gsdevmem.c)
+
+Adds translation capability to clipping devices. This isn't used anywhere
+yet. (gxcpath.h, gxcpath.c)
+
+Adds procedures for doing unaligned copy_xxx operations. These were added
+for a customer. (gxdevice.h, gsdevice.c)
+
+Changes the (undocumented) return value of gs_setcachedevice[2]: they used
+to return 1 if the current show operation was a non-displaying one
+(stringwidth or cshow), and now return 1 if the cache device was just
+installed. This change was required to fix the BuildChar page clearing bug
+in the interpreter. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE, but as far as
+I know, there aren't any external clients of these routines. (gschar.h,
+gschar.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.49"></a>Version 3.49 (limited) (9/20/95)</h2>
+
+<p>
+This is another bug-fix release during beta test. There are other bugs
+outstanding, but the ones I know about right now are all platform-specific.
+
+<h3><a name="V3.49_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - make.doc didn't mention that the .def files are needed to build a
+MS Windows executable. (make.doc)
+
+</pre><h3><a name="V3.49_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - There were some forward references to macro definitions in the
+makefiles. (int.mak, lib.mak)
+ - The default device for library configurations was the null page
+device, not the first device in DEVICE_DEVS. (ugcclib.mak)
+
+</pre><h3><a name="V3.49_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The BJC600 / BJC800 drivers were missing a header file.
+(gdevbjc.h, gdevcdj.c)
+ - A procedure name was used in two different files. (gdevcdj.c)
+ - The PCX driver didn't return an error code in case of failure.
+(gdevpcx.c)
+ - The X Windows driver produced some confusing warning messages.
+(gdevxini.c)
+ - Some names were duplicated between drivers. (gdevepsc.c)
+ - The X driver maintained its own, peculiar initial matrix even if
+Ghostview wasn't involved. (gdevx.c)
+
+With the permission of the author, changes the 24-bit TIFF license from GNU
+to Aladdin. (gdevtfnx.c)
+
+</pre><h3><a name="V3.49_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build scripts were out of sync with the makefiles (again).
+(modules.lis, vms.mak)
+
+</pre><h3><a name="V3.49_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - When the requested media size matched an available size exactly
+with a 90 degree rotation, Orientation was ignored. (zmedia2.c)
+
+Makes zcurrentdevice extern. (opextern.h, zdevice.c)
+
+</pre><h3><a name="V3.49_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A couple of places used memcpy instead of memmove. (gxclread.c)
+ - If a bitmap image was compressed with RLE compression in a band
+list, it would cause an error on decompression. (gxclread.c)
+ - The representation of colors in the band list was needlessly
+inefficient. (gxcldev.h, gxclist.c, gxclread.c)
+ - When using colored halftones, snowflak.ps crashed with an invalid
+memory access. More generally, any use of halftones could cause the garbage
+collector to make an invalid access. (gsstate.c)
+
+Adds some more code for paths in band lists, but again doesn't activate it.
+(gxcldev.h, gxpath.h, gzline.h, gsline.c, gspath1.c, gxclist.c, gxclread.c,
+gxpath.c)
+
+</pre>
+
+<h2><a name="Version3.48"></a>Version 3.48 (limited) (9/17/95)</h2>
+
+<p>
+This is the second bug-fix release during beta test. Among other things, it
+fixes a bug introduced in 3.47 that caused all PDF files to give an error.
+
+<p>
+******NOTE: the BJC600 and BCJ800 drivers do not work in this release,
+because we didn't get a file from the author in time. They will compile,
+but not run. This will be fixed in the next round.
+
+<h3><a name="V3.48_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Alan Barclay's contact information was wrong. (README)
+
+</pre><h3><a name="V3.48_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The linker path for Watcom C++ 10.5 was wrong. (wccommon.mak)
+ - There was a syntax error in a batch file. (pdf2ps.bat)
+ - The VMS build script didn't have entries for some printers.
+(vms.mak)
+
+Adds the bjc600 and bjc800 devices on all platforms that already include the
+color DeskJet devices. (*.mak)
+
+</pre><h3><a name="V3.48_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The H-P drivers didn't reposition the cursor properly at the
+beginning of pages after the first page, causing the image to be shifted
+down slightly and cut off at the bottom. (gdevdjet.c)
+ - The x11alpha driver was extremely slow. (gdevxalt.c)
+ - The -g switch by itself didn't work for the X Windows driver.
+(gdevxini.c)
+ - .installpagedevice can get a rangecheck on MS Windows because the
+HWColorMap can change spontaneously. (gs_setpd.ps)
+
+Updates the bjc600 and bjc800 drivers with new versions from Yves Arrouye.
+(gdevcdj.c)
+
+Adds a user-contributed driver that writes uncompressed 24-bit RGB TIFF
+images in a format that is standard on NeXT platforms. This driver is
+governed by the GNU license and is therefore separated from the rest of the
+Aladdin distribution. (gdevtfnx.c)
+
+</pre><h3><a name="V3.48_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - There was an undefined reference to clock_gettime on some Unix
+systems. (gp_unix.c)
+ - The new gp_fopen routine had several errors. (gp_vms.c)
+
+</pre><h3><a name="V3.48_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Some routines that should be main-instance-specific weren't.
+(imain.h, main.h, gsmain.c)
+ - sethalftone with a Type 2 or Type 4 halftone didn't work on CMYK
+devices. (zht2.c)
+ - Setting A4 paper as the default in gs_init.ps, or specifying
+-dPAPERSIZE, conflicted with -g. (gs_init.ps)
+ - The maximum value of a single-precision float wasn't correct on
+VAX systems. (math_.h, iscannum.c)
+ - Some integer expressions were passed as floating point arguments.
+(gs.c, zmedia2.c)
+ - Media selection in setpagedevice was broken (again), as of 3.46.
+(gs_setpd.ps, zmedia2.c)
+
+</pre><h3><a name="V3.48_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Substituted color spaces caused an error. (gs_pdf.ps,
+pdf_draw.ps)
+
+</pre><h3><a name="V3.48_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - If a halftone had no non-default components that matched the
+device's primary colors, the result would be a solid color rather than a
+halftone using the default screen. (gsht.c)
+ - sethalftone with a Type 2 or Type 4 halftone didn't work on CMYK
+devices. (gxht.h, gsht.c, gsht1.c)
+ - The new gp_fopen routine wasn't being used. (gsiodev.c)
+ - A mixing of float and fixed values caused a clipping region to be
+possibly incorrect by up to 1 pixel. (gspaint.c)
+ - A function definition was inconsistent with the prototype.
+(gspath1.c)
+
+Adds preliminary code for including paths in band lists, but doesn't
+activate any of it. (lib.mak, gxcldev.h, gxclist.c, gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.47"></a>Version 3.47 (limited) (9/14/95)</h2>
+
+<p>
+This is a bug-fix release during beta test. It is meant to have no new
+functionality, although in the case of setpagedevice that's stretching
+things a little.
+
+<h3><a name="V3.47_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The Mac documentation still referred to IJG JPEG v5a rather than
+v6. (make.doc)
+ - The RasterOp texture device was identified incorrectly.
+(gdevmrop.c)
+ - use.doc and psfiles.doc didn't mention the PDF-related files.
+(psfiles.doc, use.doc)
+ - psview is no longer available. (README)
+ - current.doc didn't document the recognized setpagedevice keys.
+(current.doc)
+
+</pre><h3><a name="V3.47_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Many utility programs weren't included in the Unix 'install' list.
+(unix-end.mak)
+ - It wasn't at all convenient to make configurations without the BCP
+or other non-standard filters. (*.mak, int.mak, modules.lis, zfilter2.c,
+zfilterx.c)
+ - The gconfig.c and iconfig.c files weren't deleted after
+compilation. (int.mak, lib.mak)
+ - unix-end.mak referred to the nonexistent macros INT{1,2}_MAK.
+(unix-end.mak)
+ - The rules for building the dfax drivers were incorrect. (devs.mak)
+ - Omitting filter.dev produced an undefined reference. (int.mak)
+
+Adds a customer-contributed makefile for Microsoft Visual C++ 2.n under
+Windows NT. (msvcwint.mak)
+
+</pre><h3><a name="V3.47_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The JPEG utility didn't support the new progressive JPEG modes,
+and didn't invert Adobe Photoshop output as needed. (viewjpeg.ps)
+ - The printafm utility had a single font name wired in. (printafm,
+printafm.ps)
+ - The CIE lookup simulation had several bugs. (docie.ps)
+ - pdf2ps[.bat] were missing from the fileset.
+ - Files produced by pdf_2ps didn't include the GS_PDF ProcSet.
+(gs_pdf.ps, pdf_2ps.ps, pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.47_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Bits read back from an EGA or VGA device were incorrect.
+(gdevpcfb.c)
+ - The 24-bit PCX run length compressor used a slow algorithm.
+(gdevpcx.c)
+ - gdevstc.c wouldn't compile with the Borland compiler. (gdevstc.c)
+ - There was a typo in the OS/2 PM driver. (gdevpm.c)
+ - .installpagedevice gets a rangecheck on X Windows because the
+HWColorMap can change spontaneously. (gs_setpd.ps)
+ - The left margin for the DeskJet 500 was wrong. (gdevdjet.c)
+ - The two notions of "margin" (offset of 0,0 from physical page
+corner vs. unprintable area around edges of physical page) were still
+confused. We've now fixed this for the H-P monochrome printers, but it's
+probably still confused for all other printers. (gdevprn.h, gdevdjet.c)
+
+</pre><h3><a name="V3.47_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The Windows print spooler header file wasn't included when it
+needed to be, and some other Win32-specific changes were missing.
+(gsdll32.def, gp_mswin.c)
+ - Windows DLLs didn't parse "s in the command "arguments" correctly.
+(gsdll.c)
+
+</pre><h3><a name="V3.47_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - FAKEFONTS could get the font directories into inconsistent states.
+(gs_dps1.ps, gs_fonts.ps)
+ - The substitutions for Adobe's Myriad and Minion fonts weren't
+appropriate. (gs_fonts.ps)
+
+</pre><h3><a name="V3.47_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - If pathforall got an error computing the user-space points on a
+path, it could cause an invalid access. (zpath1.c)
+ - A 'private' declaration were omitted. (Why doesn't gcc catch
+this??) (zcie.c)
+ - Setting GS_FONTPATH produced a stackunderflow error.
+(gs_fonts.ps)
+ - currentscreen caused a typecheck if the screen had been set by
+setcolorscreen. (gs_dps1.ps)
+ - setcolorrendering tried to cache values computed from the color
+space even if the current color space wasn't a CIE space. (zcrd.c)
+ - Out-of-range numbers like 10E38 caused a floating point exception.
+(iscannum.c)
+ - Giving a closed readable file as input for a filter caused an
+invalidaccess. (files.h, interp.c, zfilter.c)
+ - setpagedevice opened the default device even with -dNODISPLAY.
+(gs_init.ps, gs_setpd.ps)
+ - realtime returned the same value as usertime. (gs_lev2.ps,
+zmisc.c)
+ - Storing a local value into systemdict caused some redundant code
+to be executed. (zdict.c)
+ - Files with a very long first line could cause a rangecheck error.
+(gs_init.ps)
+ - The PageOffset page device parameter was ignored. (gs_setpd.ps)
+ - The Orientation page device parameter wasn't handled properly.
+(gs_setpd.ps, idparam.h, idparam.c, zmedia2.c)
+ - setpagedevice could set device parameters twice, with an
+incomplete update the first time. (gs_setpd.ps)
+
+</pre><h3><a name="V3.47_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Readers confused the internal pdfrun procedure with the public
+runpdf procedure. (pdf_*.ps)
+
+</pre><h3><a name="V3.47_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Closed streams had a NULL state pointer, causing problems for some
+clients. (stream.c)
+ - Group 4 decoding could get an ioerror if an end-of-buffer occurred
+in a horizontal code sequence between a makeup code and the termination
+code. (scfd.c)
+
+</pre><h3><a name="V3.47_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some 'private' declarations were omitted. (Why doesn't gcc catch
+these??) (gdevmrop.c, gxht.c)
+ - Patterns could produce bad output in the band list. (gxclist.c)
+ - RasterOp wasn't implemented at all for 2- or 4-bit devices. (In
+this release, we implement only a subset, and without handling transparency
+properly.) (gdevm2.c, gdevm4.c, gdevmrop.c)
+ - Drawing operations and text sometimes didn't apply the RasterOp
+when they should, and vice versa. (gxdcolor.h, gxdraw.c)
+ - setcolorrendering tried to cache values computed from the color
+space even if the current color space wasn't a CIE space. (gscie.h,
+gscie.c)
+ - Some CIE color spaces produced very distorted colors. (gscie.c)
+ - setpagedevice opened a window even with -dNODISPLAY. (gsdevice.c,
+gsdparam.c)
+ - realtime returned the same value as usertime. (gp.h, time_.h,
+gp_*.c)
+ - The library level attempted to handle the Orientation page device
+parameter. (gxdevice.h, gdevbit.c, gsdevice.c, gsdparam.c, gspath.c)
+ - Severely non-linear CIE encoding/decoding functions produced
+seriously skewed colors near the ends of the color value range. This
+problem can now be alleviated, at a significant cost in performance, by
+changing configuration parameters at the beginning of gscie.h. (gscie.h,
+gscie.c)
+ - Files FTP'ed in binary mode weren't being opened properly on VMS.
+(gp.h, gp_*.c, gsiodev.c)
+ - A header file had an inconsistent declaration. (math_.h)
+
+Adds a new gp_get_usertime procedure to gp.h. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE, affecting only platform implementors. It
+was necessary to fix the realtime/usertime bug. (gp.h, time_.h, gp_*.c)
+
+Adds a new gp_fopen procedure to gp.h. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE, affecting only platform implementors. It was necessary to fix the
+binary file problem on VMS. (gp.h, gp_*.c)
+
+</pre>
+
+<h2><a name="Version3.46"></a>Version 3.46 (limited) (9/4/95)</h2>
+
+<p>
+This is the "serious beta test" release for the next public release. It
+finishes implementing RasterOp in the graphics state, and the remaining
+commonly used parts of setpagedevice.
+
+<h3><a name="V3.46_Documentation"></a>Documentation</h3><pre>
+Documents some possible problems when building with DJGPP v2.0-beta.
+(make.doc)
+
+Adds documentation on using Ghostscript as a PDF interpreter. (use.doc)
+
+Notes linking problems with the Watcom 10.0 environment. (make.doc)
+
+</pre><h3><a name="V3.46_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The rule for $(ccfonts).dev was wrong. (gs.mak)
+
+Makes some additional filters into 'features'. (devs.mak, gs.mak)
+
+Splits off 2 new makefiles from gs.mak, which had gotten very large: lib.mak
+(graphics library) and int.mak (interpreters). (tar_cat, tar_cat.bat,
+*.mak)
+
+Adds a new 'config-clean' target that may be helpful in changing
+configuration definitions. (gs.mak)
+
+Notes in the relevant makefiles that on Unix and DVX systems, one should not
+edit 'makefile' or the concatenated makefile, but should edit the individual
+subfile and run tar_cat. (ansihead.mak, cc-head.mak, dgc-head.mak,
+gcc-head.mak, devs.mak)
+
+Updates the Watcom makefiles to handle Watcom release 10.5, in which many
+executables moved to different directories. (watc.mak, watcwin.mak,
+wccommon.mak)
+
+Adds a pdf2ps shell script. (pdf2ps, pdf2ps.bat)
+
+Adds a -sFONTMAP= switch to specify the name of the Fontmap file.
+(gs_fonts.ps)
+
+Adds a -u&lt;name&gt; switch to undefine a name from systemdict. (interp.h, gs.c,
+iinit.c)
+
+Adds a -dFIXEDRESOLUTION switch to parallel -dFIXEDMEDIA. Makes -g set
+FIXEDMEDIA and -r set FIXEDRESOLUTION. (gs_init.ps, gs_setpd.ps, gs.c)
+
+Changes some build procedures to avoid problems with read-only source files.
+(gs.mak, int.mak, lib.mak)
+
+</pre><h3><a name="V3.46_Utilities"></a>Utilities</h3><pre>
+
+Adds a utility for emulating the CIE color mapping algorithms. (docie.ps)
+
+</pre><h3><a name="V3.46_Drivers"></a>Drivers</h3><pre>
+
+Changes the x11alpha device so that it uses 32-bit pixels with 8 bits of
+alpha. (gdevxalt.c)
+
+Updates the Epson Stylus Color driver to Gunther Hess's release 1.17.
+(devs.mak, unix-end.mak, devices.doc, stcolor.ps, gdevstc.h, gdevstc*.c)
+
+Updates the alternate X drivers for the change from PageSize to MediaSize.
+(gdevxalt.c)
+
+Makes Duplex an optional parameter of printer devices rather than of all
+devices. (gdevprn.h, gxdevice.h, gsdparam.c, gdevdjet.c, gdevprn.c)
+
+</pre><h3><a name="V3.46_Platforms"></a>Platforms</h3><pre>
+
+Makes pipes (%pipe% file syntax) a selectable option on Unix platforms,
+rather than always being included. (ansihead.mak, cc-head.mak,
+gcc-head.mak, ugcclib.mak, unixtail.mak)
+
+</pre><h3><a name="V3.46_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - colorimage, and the dictionary form of image with
+MultipleDataSources = true, didn't check that all the data sources were of
+the same type. (zpaint.c)
+ - colorimage, and dictionary-type images with MultipleDataSources =
+true, usually didn't work properly with files. (zpaint.c)
+ - grestoreall left a dangling pointer to the transfer function
+cache. (gsstate.c)
+ - Changes made by setpagedevice could get 'lost' and not installed
+in the current page device dictionary. (gs_setpd.ps)
+ - The Install procedure was called before the new page device
+dictionary had gotten installed. (gs_setpd.ps)
+ - If a grestore/grestoreall/restore/setgstate operation switched
+page devices, the new page device didn't get installed properly.
+(gs_setpd.ps, opextern.h, zdevice2.c, zdps1.c)
+ - If the current screen was a Type 1 halftone, currentscreen and
+currentcolorscreen returned frequency = 60, angle = 0 rather than the
+Frequency and Angle from the halftone (see Adobe TN 5085). (gs_dps1.ps,
+gs_init.ps)
+ - setscreen with a Type 1 halftone dictionary didn't insert the
+frequency and angle into the dictionary (see Adobe TN 5085). (gs_dps1.ps)
+ - upath didn't include a trailing moveto in the bounding box.
+(gs_dps1.ps, zpath1.c)
+ - setpagedevice didn't automatically rotate or scale the image when
+necessary. (gs_setpd.ps, zmedia2.c)
+
+Moves the RasterOp operators to a separate file. (iutil.h, iutil.c,
+zgstate.c, zrop.c)
+
+Eliminates the unnecessary "wrapper" around .setdevice. (zdevice2.c)
+
+Establishes the convention that all interpreter callbacks into PostScript
+code use procedure names that begin with %; documents this in gs_init.ps.
+Changes Type1BuildChar and Type1BuildGlyph to %Type1BuildChar and
+%Type1BuildGlyph. (gs_init.ps, gs_type1.ps, zfont0.c, zfont1.c)
+
+Changes image / imagemask / colorimage for the new library API. (zimage2.c,
+zpaint.c)
+
+Reorganizes font loading to make compiled fonts and Fontmap interact better
+with each other. (gs_ccfnt.ps, gs_fonts.ps, gs_init.ps, gs_res.ps)
+
+Implements parameter collection for the new CIEBasedDEF[G] color spaces, but
+doesn't actually implement the color spaces themselves. (icie.h, zcie.c,
+zcrd.c)
+
+Renames iconfig.c as iconf.c to avoid problems with read-only source files.
+(iconf.c)
+
+</pre><h3><a name="V3.46_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PDF to PostScript conversion didn't work. (pdf_main.ps)
+
+Shifts most of the work in the PDF interpreter from the reader to the
+ProcSet. This simplifies the code considerably and also makes it easier to
+modify. (gs_pdf.ps, pdf_draw.ps, pdf_font.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.46_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - 'static' was omitted in a place that some compilers require it.
+(gxccman.c)
+ - Some compilers don't allow a variable with the same name as a
+preprocessor macro with arguments. (gscie.c)
+ - Some places did a "return -1" rather than a proper error return.
+(gsdevice.c, gxclist.c)
+ - An external declaration had a typo. (gsrop.h)
+ - An extra semicolon upset some compilers. (gzpath.h)
+ - Printer devices that didn't use the standard macros for generating
+their procedure vector wound up being considered as non-page devices.
+(gdevprn.c)
+ - Some compilers truncated identifiers longer than 31 characters.
+(gscspace.h, zcie.c, gscie.c)
+ - upath didn't include a trailing moveto in the bounding box.
+(gspath.h, gspath1.c)
+ - RasterOp value 126 returned an incorrect result. (gsroptab.c)
+
+Finishes implementing RasterOp in the graphics state. (gdevmrop.h, gsrop.h,
+gsropt.h, gsstate.h, gxbitmap.h, gxcindex.h, gxdcolor.h, gxdevice.h,
+gzstate.h, gdevmrop.c, gscolor.c, gsdevice.c, gsimage.c, gsimage1.c,
+gsimage2.c, gsimage3.c, gspcolor.c, gsrop.c, gsstate.c, gxacpath.c,
+gxccache.c, gxcht.c, gxcmap.c, gxdither.c, gxdraw.c, gxht.c)
+
+Changes forwarding devices so they forward get_bits by default. This
+probably doesn't affect any existing code. (gxdevice.h, gsdevice.c)
+
+Changes the API for gs_image[mask]_init to pass a structure rather than a
+very large number of scalars. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE,
+motivated by the addition of further image parameters to support RasterOp.
+Since there are no external clients of the library yet, it shouldn't matter.
+(gsimage.h, gsimage.c, gslib.c, gxccache.c)
+
+Redefines the device "page size" as being the size of the actual media,
+changing the name of the gx_device PageSize member to MediaSize, the name of
+the PageSize device parameter to .MediaSize (but keeping PageSize as
+equivalent, for backward compatibility), and the name of the
+gx_device_set_page_size procedure to gx_device_set_media_size (keeping the
+old name as a macro). THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. It is
+necessary to make setpagedevice work, and to avoid confusion about what
+"page size" means. It potentially affects any device driver, but almost
+none of the device drivers distributed with Ghostscript are affected, and
+those have been updated. (gsparam.h, gxdevice.h, gsdevice.c, gsdparam.c,
+gspath.c)
+
+Renames gconfig.c as gconf.c to avoid problems with read-only source files.
+(gconf.c)
+
+Adds an API procedure for setting a bitmap pattern. (gscolor2.h,
+gspcolor.c)
+
+</pre>
+
+<h2><a name="Version3.45"></a>Version 3.45 (limited) (8/27/95)</h2>
+
+<p>
+The purpose of this release is to fix some minor bugs reported by commercial
+licensees, and to add two enhancements: optional RenderTable interpolation
+for CIE color, and reducing the temporary space used during character
+caching (also for a licensee).
+
+<h3><a name="V3.45_Documentation"></a>Documentation</h3><pre>
+
+Notes that the only valid return values from get_alpha_bits are 1, 2, and 4.
+(drivers.doc)
+
+Notes that the get_bits driver procedure will return a pointer to aligned
+data, but does not require the caller's data area to be aligned.
+(drivers.doc)
+
+</pre><h3><a name="V3.45_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Many of the printer and file output drivers in devs.mak still
+included gdevprn.$(OBJ) in their dependencies. (devs.mak)
+ - PDEVH was used before it was defined. (devs.mak)
+ - GENCONF_XE was used before it was defined. (unixhead.mak,
+unix-end.mak)
+
+Makes it possible to switch sfile implementations without editing gs.mak.
+(gs.mak)
+
+Makes it possible to specify alternate compiled font tables without editing
+gs.mak. (gs.mak)
+
+Allows quoted arguments in @-files, e.g.,
+ -sOutputFile="a file name with spaces"
+(gs.c)
+
+</pre><h3><a name="V3.45_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The ps2ascii script could fail to delete temporary files in case
+of an abnormal exit. (ps2ascii)
+
+</pre><h3><a name="V3.45_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The MS Windows printer capability test was wrong. (gdevwpr2.c)
+ - The MS Windows and OS/2/PM displays weren't page devices.
+(gdevwdib.c, gdevpm.c)
+
+Gets rid of all direct references to dev-&gt;PageSize in drivers. (gdevl256.c,
+gdevvglb.c)
+
+</pre><h3><a name="V3.45_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The 32-bit MS Windows configuration file for the Borland C++
+compiler was missing from the fileset. (bcc32.cfg, tar_gs)
+
+Makes the printer devices in the OS/2 implementation capable of outputting
+directly to the print spooler. (use.doc, gp_os2.c)
+
+Makes printing on Windows NT and Windows 95 use the printer queue.
+(gp_mswin.c, gswin32.rc)
+
+</pre><h3><a name="V3.45_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Copying a null device produced an uninitialized pointer.
+(gsdevice.c)
+ - The dictionary returned by deviceinfo wasn't read-only.
+(gs_lev2.ps)
+ - If a filter's init code failed, an entry on the operand stack
+(usually the top) could be smashed. (files.h, zfile.c, zfilter.c)
+
+Adds const in a few places that needed it. (zwppm.c)
+
+Adds interpolation to the CIE RenderTable lookup. (icie.h, zcie.c, zcrd.c)
+
+</pre><h3><a name="V3.45_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Allows PDF files with control-character garbage at the end, and up to 250
+characters of garbage at the beginning. The latter is only supported by
+runpdf, not by run. (pdf_base.ps, pdf_main.ps)
+
+</pre><h3><a name="V3.45_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - A 1-D CCITTFaxDecode stream could give an error if an input buffer
+boundary fell just before a 0-length termination code. (scfx.h, scfd.c)
+
+</pre><h3><a name="V3.45_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A variable was used before being set, which could cause band
+devices to become confused when processing colored halftones. (gxclist.c)
+ - Some of the color and tile bookkeeping for band lists was wrong
+(as of 3.44), causing tiled areas to be filled with garbage. (gxclist.c,
+gxclread.c)
+ - Colored Patterns showed up blank on devices whose native
+representation of `black' was a non-zero value. The fix removes the
+'cached' member of the gx_device structure, and requires monobit memory
+devices to have a palette; this is a NON-BACKWARD-COMPATIBLE CHANGE for
+anyone who was foolish enough to statically initialize a gx_device structure
+without using the macros in gxdevice.h or gdevprn.h. (gdevmem.h,
+gxdevice.h, gxdevmem.h, gdevm1.c, gdevmrop.c, gsdevice.c, gxcpath.c,
+gxdither.c)
+
+Provides the framework for band devices to implement alpha (anti-aliasing).
+(gxcldev.h, gdevprn.c, gsdevice.c, gxclist.c, gxclread.c)
+
+Implements an efficient API for enumerating paths using device coordinates.
+(gspath.h, gxpath.h, gzpath.h, gspath1.c, gxpath2.c)
+
+Changes the character cache logic so that when rasterizing large
+anti-aliased characters, it converts the oversampled bits to alpha values on
+the fly rather than waiting until it has rasterized the entire character.
+This saves a lot of temporary space, at the expense of some extra time and
+lower quality results for Type 3 characters that don't use a single fill or
+imagemask operation to draw the character. This enhancement requires adding
+a member to the gx_device structure (max_fill_band), which is a
+NON-BACKWARD-COMPATIBLE CHANGE for badly written drivers (see above).
+(gxchar.h, gxdevice.h, gxpaint.h, gdevabuf.c, gschar.c, gspaint.c,
+gxccache.c, gxccman.c, gxfill.c)
+
+Changes the palette member of memory devices from gs_string to
+gs_const_string. (gdevmem.h, gxdevmem.h, gdevmem.c, gdevm1.c)
+
+Starts to decouple halftoning from the graphics state machinery, so
+it can be applied after banding rather than before. (gxdcolor.h,
+gxdht.h, gxdither.h, gzht.h, gxcmap.c, gxdither.c, gxdraw.c)
+
+Starts to decouple path filling from the graphics state machinery, so
+that we can pass paths through band lists. (gxpaint.h, gxfill.c)
+
+Adds interpolation to the CIE RenderTable lookup. This is optional, enabled
+by #define CIE_RENDER_TABLE_INTERPOLATE in gscie.h. (gscie.h, gxctable.h,
+gscie.c, gxctable.c)
+
+</pre>
+
+<h2><a name="Version3.44"></a>Version 3.44 (limited) (8/21/95)</h2>
+
+<p>
+This includes a few bug fixes, but its main purpose is to add two new
+features: monobit and 8-bit gray-scale RasterOp (at the driver level, not at
+the gstate level yet), and (compressed) band lists in RAM. Of course, these
+new features may have introduced new bugs!
+
+<h3><a name="V3.44_Documentation"></a>Documentation</h3><pre>
+Adds contact information for a user working on NeXT machines. (README)
+
+Notes that Ghostscript runs on FreeBSD. (README)
+
+Adds copy_rop (the RasterOp operation) to the driver interface.
+(drivers.doc)
+
+Adds FONTPATH information for more operating systems. (use.doc)
+
+</pre><h3><a name="V3.44_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The tar_cat script needed a #!/bin/sh to execute correctly on all
+platforms. (tar_cat)
+ - There were a number of minor errors in the makefiles. (gs.mak,
+unixhead.mak)
+ - Level 2 configurations without command lists had two undefined
+references. (gs.mak)
+ - Some shells required an extra ';' to terminate an 'if' command.
+(ugcclib.mak, unix-end.mak, unixtail.mak)
+
+Updates the JPEG code to the officially released version 6 of the IJG
+library. See jpeg.mak for information on where to find this library.
+(jpeg/*, jpeg.mak, *.mak, modules.lis)
+
+Adds a definition of XEAUX to the makefiles to parallel CCAUX, primarily for
+cross-compilation environments. All references to &lt;some-program&gt;$(XE) must
+be replaced by $(&lt;SOME-PROGRAM&gt;_XE), where some-program={$(GS), ansi2knr,
+echogs, genarch, genconf, geninit}. This is a NON-BACKWARD-COMPATIBLE
+CHANGE, required in order for the makefiles to work in cross-compiled
+environments. (For non-cross-compiled environments, it currently doesn't
+matter.) (gs.mak, *.mak)
+
+</pre><h3><a name="V3.44_Utilities"></a>Utilities</h3><pre>
+
+Updates ps2ai.ps to version 2.13. (ps2ai.ps)
+
+Changes all the utility shell scripts to include #!/bin/sh, to use exec, and
+to pass the original arguments using "$@". (bdftops, font2c, gsbj, gsdj,
+gslj, gslp, gsnd, wftopfa)
+
+</pre><h3><a name="V3.44_Drivers"></a>Drivers</h3><pre>
+
+Adds the requirement that all page-oriented devices (i.e., those that use
+gdevprn.h and implement the print_page procedure) include page.dev in their
+dependencies and use $(SETPDEV) rather than $(SETDEV) in their makefile rule
+bodies. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. Without this change, the
+command list logic (over 25K of unnecessary object code) would have to be
+included in every configuration. (gs.mak, devs.mak, echogs.c)
+
+Adds a user-contributed driver for the Okidata Microline (IBM compatible)
+dot matrix printers. (gdevokii.c)
+
+Adds copy_rop (the RasterOp operation) to the driver interface. Currently,
+only monobit and 8-bit gray-scale devices implement it. (gxdevice.h,
+gsdevice.c)
+
+Adds the ability to read back bits from the display to the x11 devices.
+(x_.h, gdevx.c, gdevxalt.c)
+
+</pre><h3><a name="V3.44_Platforms"></a>Platforms</h3><pre>
+
+Makes some minor changes to support QNX. (stat_.h)
+
+Removes the mswinprn driver from the 16-bit Windows configuration, because
+the 64K default data segment overflowed. (bcwin.mak)
+
+</pre><h3><a name="V3.44_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Type 1 fonts didn't accept packed arrays for Subrs or OtherSubrs.
+(zchar1.c, zfont1.c)
+ - TBCP-encoded files (yes, I know there isn't supposed to be any
+such thing) didn't automatically activate TBCP decoding. (gs_init.ps)
+ - Fonts with invalid FID entries weren't detected. (zfont.c)
+
+Speeds up dictionary operations slightly by removing redundant checks for
+nulls. (zdict.c)
+
+Starts adding support for the new CIEBasedDEF and CIEBasedDEFG color spaces.
+(gs_l2img.ps, gs_lev2.ps, igstate.h, zcrd.c)
+
+Adds access operators for RasterOp and transparency in the graphics state.
+(They don't actually do anything yet.) (zgstate.c)
+
+</pre><h3><a name="V3.44_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PDFDocEncoding was missing characters 24-31. (gs_pdf_e.ps)
+
+Moves the definition of pdfmark from systemdict to userdict so that Adobe
+PostScript files won't think the interpreter is a distiller. (gs_pdf.ps)
+
+</pre><h3><a name="V3.44_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some JPEG images had bands of garbage alternating with bands of
+valid data. IJG v6 fixed this -- see above.
+ - With FPU_TYPE = -1, the cosine routine returned incorrect values
+for angles above 270 degrees. (gsmisc.c)
+ - CIE color conversion didn't work on 16-bit systems. (gscie.h,
+gscie.c)
+
+Partially implements reducing the intermediate space for rasterizing
+anti-aliased characters by compressing the oversampled representation to an
+alpha array incrementally. (gdevmem.h, gxchar.h, gxdevmem.h, gdevabuf.c,
+gschar.c, gspaint.c, gxccman.c)
+
+Starts adding support for the new CIEBasedDEF and CIEBasedDEFG color spaces.
+(gscie.h, gscspace.h, gscie.c)
+
+Completes the implementation of band lists in RAM. To select this feature,
+change the definition of cl_impl in gs.mak from clfile to clmem. (Someday
+we'll make this easier.) (gxclmem.h, gxclmem.c)
+
+Finishes implementing RasterOp and transparency at the driver level for
+monobit and 8-bit gray-scale devices, and implements some of the framework
+for general multiple-bit-per-pixel devices. See drivers.doc for
+documentation. (gsropt.h, gxcldev.h, gxclist.h, gdevm1.c, gdevm8.c,
+gdevmem.c, gdevmrop.c, gschar.c, gxclist.c, gxclread.c)
+
+Implements the ability to include commands applicable to all bands, rather
+than an individual band, in the band list. Eventually this will be used for
+passing halftones through the band list. (gxcldev.h, gxclist.h, gxclist.c)
+
+Adds support for 2-bit-deep 'word' memory devices. (gdevmem.h, gxdevmem.c,
+gdevm2.c)
+
+Changes the initialization for memory devices so that they determine their
+polarity from the device for which they are buffering the image (if any).
+This is a subtle change. (gdevmem.h, gdevmem.c, gdevm1.c, gsdevmem.c)
+
+</pre>
+
+<h2><a name="Version3.43"></a>Version 3.43 (limited) (8/10/95)</h2>
+
+<p>
+Fixes a few more minor bugs, and changes FEATURE selection back to
+essentially the way it was before 3.41.
+
+<h3><a name="V3.43_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - A ~ was missing in a URL. (README)
+
+Adds information about an Amiga port of Ghostscript. (README)
+
+Removes a file called gs.1.c, which appears to be an obsolete version of
+gs.1.
+
+Adds DCX documentation to the PCX driver. (We don't support DCX yet, but we
+might in the future.) (gdevpcx.c)
+
+Adds information about getting Type 1 fonts from H-P if you have an H-P
+PostScript printer. (use.doc)
+
+</pre><h3><a name="V3.43_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The auxiliary programs wouldn't compile with ANSI compilers that
+don't accept K&amp;R syntax. (ccgs, gs.mak, ugcclib.mak, *head.mak,
+unixtail.mak, echogs.c, genarch.c, genconf.c, geninit.c)
+
+Reinstates FEATURE_DEVS in the makefiles, getting rid of FEATURE1..10. THIS
+IS A NON-BACKWARD-COMPATIBLE CHANGE, but it puts things back the way they
+were before 3.41, with one exception: compiling the PostScript
+initialization code into the executable is now a separate macro
+COMPILE_INITS with a definition of 0 or 1, instead of the ccinit 'feature'.
+(gs.mak, *.mak, fonts.doc, make.doc)
+
+Adds a CCLEAF macro to the makefiles, for optimizing the compilation of
+modules containing only leaf procedures. (gs.mak, *.mak)
+
+Adds a CONFIG makefile variable that helps in maintaining multiple variants
+in a single directory. (gs.mak, *.mak)
+
+</pre><h3><a name="V3.43_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - An extern for exit() (in &lt;stdlib.h&gt;) was omitted. (gp_vms.c)
+
+</pre><h3><a name="V3.43_Fonts"></a>Fonts</h3><pre>
+
+Reorganizes the compiled font facility so that fonts can be compiled and
+turned into a library by third parties. (gs.mak, font2c.ps, gs_ccfnt.ps,
+ccfont.h, iccfont.c, ccfontab.c)
+
+</pre><h3><a name="V3.43_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - internaldict was implemented as a dictionary in systemdict and an
+operator in userdict, rather than as an operator in systemdict. This caused
+a noaccess error when loading certain Type 1 fonts. (gs_init.ps,
+gs_type1.ps)
+ - xfonts couldn't handle modified encodings. (zfont2.c)
+
+Changes the build date printout in the help message to YYYY-MM-DD. (gs.c)
+
+Adds native support for Multiple Master fonts (WeightVector). (zfont1.c)
+
+Implements sin and cos more efficiently (by table lookup with linear
+interpolation) on machines with slow (or no) floating point. (zmath.c)
+
+Separates out the code for 'reading' the .ps initialization files, for the
+new COMPILE_INITS arrangement. (imain.h, gconfig.c, gsmain.c, iconfig.c,
+iccinit0.c, iinit.c)
+
+</pre><h3><a name="V3.43_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxDecode filter could read up to 3 bytes beyond EOD.
+This fix doesn't quite cover all cases, but at least it makes things better.
+(ghc.h, sbhc.c, scfd.c)
+
+</pre><h3><a name="V3.43_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - After a nocurrentpoint error from a show operation with a
+composite font, the bookkeeping was confused and could cause an access
+error. (gschar.c)
+ - xfonts couldn't handle modified encodings. (gsccode.h, gxchar.h,
+gxfont.h, gxxfont.h, gschar.c, gxccache.c)
+
+Makes .charboxpath able to use cached character information. (gxchar.h,
+gschar.c)
+
+Adds native support for Multiple Master fonts (OtherSubrs 14-18).
+(gxfont1.h, gstype1.c)
+
+Improves the hashing functions for the character cache. (gxfcache.h,
+gxccman.c)
+
+Adjusts the character oversampling algorithm to reduce thickening for
+devices with alpha capability. (gsbitops.c)
+
+Improves the encoding of the band list for certain kinds of small
+rectangles. (gxcldev.h, gxclist.c, gxclread.c)
+
+Implements sin and cos efficiently on machines with slow (or no) floating
+point. (gxfarith.h, gsmatrix.c, gsmisc.c, gspath1.c)
+
+</pre>
+
+<h2><a name="Version3.42"></a>Version 3.42 (limited) (8/2/95)</h2>
+
+<p>
+Fixes a few significant problems in 3.41, and brings the DLL code up to
+date.
+
+<h3><a name="V3.42_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - language.doc still referred to rectappend rather than .rectappend.
+(language.doc)
+
+Adds documentation on the Macintosh port. (readme, make.doc)
+
+Updates the DLL documentation. (dll.doc)
+
+Documents the BCP and TBCP filters as non-experimental. (language.doc)
+
+</pre><h3><a name="V3.42_Procedures"></a>Procedures</h3><pre>
+
+Changes the build date printout to YYYY-MM-DD. (gs_init.ps)
+
+</pre><h3><a name="V3.42_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build script had gotten out of sync with the makefiles
+(again). (vms.mak, modules.lis)
+
+Brings the MS Windows and OS/2 platforms up to date with the rest of the
+code, including DLL support for OS/2. (os2.mak, gsdll*.def, gdevswn.c,
+gdevpm.c, gdevwdib.c, gp_mswin.c, gp_os2.c, gsdll.c, gsmain.c)
+
+Adds a new platform-specific routine gp_do_exit, as an alias for the C
+library `exit' call. (gp.h, gsdll.c, gsmain.c, gp_*.c)
+
+</pre><h3><a name="V3.42_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - .forgetsave at the outermost level didn't clear the l_new bit,
+causing changes to be undone improperly. (isave.c)
+ - A 'void' formal parameter list upset some compilers (as it should
+have). (gsmain.c)
+
+Adds a .charboxpath operator that appends to the current path the bounding
+boxes of the characters of a string. (zchar.c, zchar1.c)
+
+</pre><h3><a name="V3.42_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - A procedure was declared private inconsistently. (siscale.c)
+
+</pre><h3><a name="V3.42_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The library test program didn't do a necessary initial gsave.
+(gslib.c)
+ - The fix for landscape monobit images in 3.41 could smash memory.
+(gsimage1.c)
+ - 1-pixel-wide lines drawn with image or imagemask still disappeared
+sometimes. (gsimage.c)
+
+Does some more preparatory work for the implementation of command lists in
+RAM. (gdevprn.h, gxclio.h, gxclist.h, gxclfile.c, gxclist.c, gxclread.c)
+
+Adds a gs_charboxpath procedure that appends to the current path the
+bounding boxes of the characters of a string. (gschar.h, gscpm.h,
+gstype1.h, gxchar.h, gxpath.h, gxtype1.h, gzstate.h, gschar.c, gspaint.c,
+gstype1.c, gxpath.c)
+
+</pre>
+
+<h2><a name="Version3.41"></a>Version 3.41 (limited) (7/27/95)</h2>
+<p>
+Another incremental release with bug fixes and customer-requested
+enhancements. This release was intended to include the full setpagedevice
+media matching and adjustment algorithm, but we discovered some
+architectural problems during development, and have postponed it.
+
+<h3><a name="V3.41_Documentation"></a>Documentation</h3><pre>
+
+Replaces the build instructions for NeXTSTEP with more up-to-date and
+accurate ones. (make.doc)
+
+Notes that some extra manual steps are required when cross-compiling.
+(make.doc)
+
+Documents how to define new 'features' in the makefile. (gs.mak)
+
+</pre><h3><a name="V3.41_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The build rule for ccinit.dev was circular. Fixing this required
+a small but NON-BACKWARD-COMPATIBLE change in the way that features are
+selected in the makefiles (FEATURE_DEVS replaced by FEATURE1..10). (*.mak,
+fonts.doc, make.doc)
+
+Changes the build rule for gconfig.h to be less likely to overrun MS-DOS's
+command line length limit. (gs.mak)
+
+Adds a -dFIXEDMEDIA switch to indicate that the media size should be
+considered fixed after initialization. (gs_init.ps)
+
+</pre><h3><a name="V3.41_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - traceimg.ps incorrectly referred to .stdout. (traceimg.ps)
+ - prfont.ps didn't display unencoded characters correctly.
+(prfont.ps)
+ - ps2epsi didn't give correct bounding box information. (ps2epsi,
+ps2epsi.ps)
+ - ps2epsi produced DSC comments that didn't fully conform to the
+Adobe standard. (ps2epsi, ps2epsi.ps)
+
+Allows viewpbm.ps to take multiple files on the command line. (viewpbm.ps)
+
+</pre><h3><a name="V3.41_Drivers"></a>Drivers</h3><pre>
+
+Adds a preliminary, contributed PNG driver. THIS IS NOT USABLE YET -- DON'T
+TRY TO USE IT. (png.mak, gdevpng.c)
+
+Increases the maximum allowable scan line width for the TIFF drivers from
+5183 pixels to 12863 pixels. (scf.h)
+
+</pre><h3><a name="V3.41_Platforms"></a>Platforms</h3><pre>
+
+Updates the MS Windows DLL code to export the new, suspendable run_string
+interface. (gsdll.h, gsdll.c, dll.doc)
+
+</pre><h3><a name="V3.41_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - There were several errors in cfonts.mak. (cfonts.mak)
+ - The compiled fonts option didn't offer both free and standard
+configurations. (gs.mak)
+ - A bug in the handling of Encoding resources prevented compiled
+fonts from working. (gs_res.ps)
+
+Adds a little more support for CID-keyed fonts. They still aren't anywhere
+near usable. (gs_cidfn.ps, gs_type1.ps)
+
+Adds a new Fontmap for Solaris 2.3. (Fontmap.Solaris)
+
+Adds support for Type 4 fonts (Type 1 fonts with their own BuildChar
+procedures), including the CCRun procedure in internaldict. (gs_fonts.ps,
+gs_res.ps, gs_type1.ps)
+
+</pre><h3><a name="V3.41_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - showpage and copypage didn't honor NumCopies in a page device.
+(gs_setpd.ps, zdevice2.c)
+ - currentpagedevice returned incorrect information if the current
+device wasn't a page device. (gs_setpd.ps)
+ - currentpagedevice didn't guarantee the presence of InputAttributes
+and OutputAttributes. (gs_setpd.ps)
+ - The l_new bit wasn't set properly when a dictionary changed from
+packed to unpacked keys, leading to unnecessary saves. (idict.c)
+ - Streams requiring intermediate buffering could read ahead too far,
+causing input data to be skipped. (zfilter.c)
+ - cshow didn't reset the font to the base font when calling the
+procedure. (zchar2.c)
+ - The Install procedure in a page device didn't set the default CTM.
+(gs_setpd.ps, zmatrix.c)
+ - findlibfile didn't handle special files like %stdin correctly.
+(zfile.c)
+ - setpagedevice didn't implement media matching. (gs_setpd.ps,
+zdevice2.c, zmedia2.c, zmatrix.c)
+ - Some floating point numbers didn't print out with enough digits to
+read back in with the identical value. (iutil.c)
+ - Integers that overflowed 31 bits (but not 32 bits) were converted
+to negative integers rather than correct positive reals. (iscannum.c)
+
+Removes an experimental operator that called the image scaling/interpolation
+code. (zimage2.c)
+
+Adds a -sSUBSTFONT=&lt;fontname&gt; switch that substitutes the given font for all
+unknown fonts, bypassing the normal intelligent substitution algorithm.
+(gs_fonts.ps)
+
+Adds the Revision system parameter. (zmisc2.c)
+
+Adds a .knownundef operator that does an undef and returns true iff the key
+was formerly present. (zdict.c)
+
+Makes the maximum length of names be 256 if EXTEND_NAMES is being used, 16K
+otherwise. (inamedef.h, iname.c)
+
+Adds internaldict. (gs_init.ps, iinit.c)
+
+Adds support for Type 4 fonts. (bfont.h, zchar.c, zchar1.c, zfont1.c,
+zfont2.c)
+
+Changes .encodingdict to EncodingDirectory, for compatibility with Adobe
+interpreters. (gs_init.ps, gs_kanji.ps, gs_res.ps)
+
+Adds superexec, an undocumented operator that is equivalent to exec but
+suppresses all invalidaccess checks. NOT COMPLETED YET; currently superexec
+is equivalent to exec. (zcontrol.c)
+
+</pre><h3><a name="V3.41_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - .stderr was used but is no longer defined. (pdf_base.ps)
+
+</pre><h3><a name="V3.41_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Not all streams initialized their state pointer. (stream.c,
+sfile.c, sfileno.c)
+
+Adds a filter for the smoothed image scaling algorithm. Eventually this
+filter will require very little intermediate storage; right now it still
+needs to buffer the entire intermediate image. (siscale.h, siscale.c)
+
+Increases the maximum allowable scan line width for the CCITTFaxEncode
+filter from 5183 pixels to 12863 pixels. (scf.h)
+
+</pre><h3><a name="V3.41_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - setpagedevice didn't update NumCopies correctly. (gdevprn.c,
+gsdparam.c)
+ - The newly optimized code for monobit bitmaps could cause an
+out-of-bounds memory access and/or make unaligned references. (gsimage1.c)
+ - setpagedevice with unknown keys could cause an /undefined error.
+(gsdparam.c)
+ - cshow didn't reset the font to the base font when calling the
+procedure. (gschar.h, gschar.c)
+ - The Install procedure in a page device didn't set the default CTM.
+(gzstate.h, gschar.c, gscoord.c, gsdevice.c)
+ - Very non-linear EncodeABC procedures in a color rendering
+dictionary could produce very inaccurate results. (gscie.h, gscie.c)
+ - The line_ptrs pointer in memory devices didn't get relocated if
+the bitmap was moved during garbage collection, leading to memory smashing.
+(gdevmem.c)
+ - setpagedevice didn't implement media matching. (gsdparam.c,
+gscoord.c)
+ - 'word' memory devices weren't recognized as memory devices.
+(gdevmem.c)
+ - makeimagedevice allocated, and then didn't free, an unnecessary
+palette for monobit devices. (gsdevmem.c)
+ - The hack for 1-bit-wide images didn't work consistently,
+particularly in landscape orientation. (gsimage.c, gsimage0.c)
+
+Adds an .IgnoreNumCopies page device parameter that causes #copies and
+NumCopies to be ignored. (gxdevice.h, gsdevice.c, gsdparam.c)
+
+Removes the .IsPageDevice device parameter. (gsdparam.c)
+
+Converts the image scaling/interpolation code to a filter. (gximage.h,
+gsimage.c, gsimage0.c, gsimage3.c)
+
+Adds support for Type 4 fonts. (gxfont.h)
+
+Adds a default implementation of parameter lists, designed to be usable
+easily from C code. (gsparam.h, gsparam.c)
+
+</pre>
+
+<h2><a name="Version3.40"></a>Version 3.40 (limited) (6/28/95)</h2>
+
+<p>
+This is another incremental limited release for delivery of a couple of
+important bug fixes (pixel 'holes' in rotated images, setpagedevice errors
+on some platforms) and an enhancement (architectural support for band lists
+in RAM).
+
+<h3><a name="V3.40_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The FTP location of the EMX DLLs was incorrect. (use.doc)
+
+</pre><h3><a name="V3.40_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - A couple of build rules for IJG v6 were omitted. (jpeg.mak)
+
+</pre><h3><a name="V3.40_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - prfont.ps wouldn't print more than 128 unencoded characters.
+(prfont.ps)
+
+</pre><h3><a name="V3.40_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - setpagedevice often caused /undefined errors on MS Windows and
+OS/2 platforms. (gdevmswn.c, gdevpm.c)
+ - The VMS module list had gotten out of sync with the makefiles
+(again). (modules.lis)
+
+</pre><h3><a name="V3.40_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A couple of casts betwen char * and byte * were omitted.
+(gsmain.c)
+ - gs_[main_]run_file_open wasn't exported properly. (imain.h,
+main.h, gsmain.c)
+
+</pre><h3><a name="V3.40_Streams"></a>Streams</h3><pre>
+
+Changes the DCTEncode filter to return an error if it wasn't supplied enough
+data before being closed. (sdcte.c)
+
+</pre><h3><a name="V3.40_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The coordinate computations for all filling operations were
+slightly inaccurate, leading to pixel 'holes' in rotated images. (gxdda.h,
+gximage.h, gsimage*.c, gxdraw.c, gxfill.c)
+
+Undoes an "optimization" (inlining the normal, fast case of a procedure)
+that actually hurt performance. (gxclist.c)
+
+Refactors the command list code so that it in the future it will be able to
+store command lists either in RAM or in the file system. (gdevprn.h,
+gxcldev.h, gxclio.h, gxclist.h, gdevprn.c, gxclfile.c, gxclist.c,
+gxclread.c)
+
+Changes the interface to the path filling code to take separate X and Y
+adjustment values. (gxpaint.h, gspaint.c, gxfill.c)
+
+Makes the command list allocate a small tile cache if the device doesn't
+need halftones. (gxclist.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.39"></a>Version 3.39 (limited) (6/24/95)</h2>
+
+<p>
+This is again an incremental release primarily for delivery of enhancements
+(suspendable string input in particular) to commercial customers, and with a
+few bug fixes.
+
+<h3><a name="V3.39_Documentation"></a>Documentation</h3><pre>
+Notes that PDF files and repositioning PostScript files do not work if
+Ghostscript was compiled with VAX C. (use.doc)
+
+Notes the requirement for EOD lookahead in decoding filters. (strimpl.h)
+
+</pre><h3><a name="V3.39_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - There were a number of undefined or used-before-defined variables
+in the makefiles. (devs.mak, dvx-head.mak, unixhead.mak, gs.mak)
+ - Some commands in the makefile exceeded the MS-DOS limit of 120
+characters. (gs.mak)
+
+Adds a -P and -P- switch to control whether the search path automatically
+includes `.' as its first element. Moves the default value of this choice
+(SEARCH_HERE_FIRST) from gsmain.c to iminst.h. (iminst.h, gs.c, gsmain.c,
+use.doc)
+
+Makes some makefile changes in anticipation of the IJG v6 release. (*.mak)
+
+</pre><h3><a name="V3.39_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - font2c generated invalid C procedure names from font names that
+contained non-alphanumerics other then '-'. (font2c.ps)
+ - font2c generated a single element of incorrect type for numeric
+arrays of zero length. (font2c.ps)
+
+</pre><h3><a name="V3.39_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build scripts had gotten out of sync (again). (vms*.mak,
+modules.lis)
+
+</pre><h3><a name="V3.39_Fonts"></a>Fonts</h3><pre>
+
+Makes the FONTPATH directory scanner accept fonts that begin with
+%!PS-AdobeFont or %!FontType1 with no following `-'. (gs_fonts.ps)
+
+</pre><h3><a name="V3.39_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - eq and ne on arrays or dictionaries required read access.
+(zrelbit.c)
+ - An include was missing. (zcsindex.c)
+ - .forgetsave at the outermost level didn't reset the l_new flag in
+changed slots, leading to an anomalous (although perhaps not harmful) state.
+(isave.c)
+ - Dictionary growing or unpacking would both save and free the old
+keys array, leading to a dangling reference. (idict.c)
+
+Changes gs_interpret so that for .quit with a negative operand &lt;= -100,
+gs_interpret returns e_Fatal rather than the operand. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE, but as far as we know, it doesn't affect
+anyone. (interp.c)
+
+Adds an API to allow feeding string input to the interpreter in pieces.
+(errors.h, imain.h, main.h, gs.c, gsmain.c, interp.c, zcontrol.c, zfilter.c)
+
+Adds new predicates .identeq and .identne that test "pointer equality", even
+for numbers and strings. (iutil.h, iutil.c, zrelbit.c)
+
+Changes a few uses of return_error to return in places that don't lead
+directly to a PostScript error. (idict.c)
+
+</pre><h3><a name="V3.39_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The logic for skipping up to a 0xff byte when decoding JPEG data
+could skip too much. (sdctd.c, sjpegd.c)
+ - If a buffer boundary fell in the middle of, or just before, an
+EOD, some decoding filters could stop reading too soon. (sbcp.c, smtf.c,
+sstring.c)
+
+Makes some minor changes in anticipation of the IJG v6 release.
+(gsjmorec.h)
+
+</pre><h3><a name="V3.39_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A declaration should have been removed. (gsdll.c)
+ - The library initialization/termination API wasn't declared.
+(gslib.h, gsinit.c, gsmain.c)
+ - A variable and a preprocessor macro with the same name confused
+VAX C. (gxclist.c)
+ - Image devices with depth 2-8 and only gray shades in the palette
+didn't set color_info correctly. (gsdevice.c)
+
+Speeds up unrotated black-and-white images further by making them render
+directly into a memory device when possible. (gxdevmem.h, gsimage1.c)
+
+</pre>
+
+<h2><a name="Version3.38"></a>Version 3.38 (limited) (6/18/95)</h2>
+
+<p>
+This release incorporates several customer-requested enhancements (cleaner
+separation of the graphics library from the interpreter, option for &gt;64K
+names, true garbage collection of names, better handling of halftones on
+band devices). It is intended primarily for those customers, but is
+intended as a dry run for the next public release.
+
+<h3><a name="V3.38_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - gx_bitmap had not been updated to gx_tile_bitmap.
+(drivers.doc)
+
+</pre><h3><a name="V3.38_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The man page extension in the Unix makefiles was still $(manext),
+not $(man1ext). (unix-end.mak)
+ - 'make clean' didn't remove gs_init.c. (gs.mak)
+
+Restructures the makefiles to better separate the language interpreters from
+the graphics core. (gs.mak)
+
+Adds a -dNOPROMPT switch to suppress the end-of-page prompts (but still wait
+for the user to type a newline). This is different from -dNOPAUSE, which
+suppresses both the prompts and the wait. (gs_init.ps)
+
+</pre><h3><a name="V3.38_Utilities"></a>Utilities</h3><pre>
+
+Replaces the mergeini.ps program with an equivalent (actually slightly
+better) version written in C. (gs.mak, *.mak, psfiles.doc, use.doc,
+geninit.c)
+
+</pre><h3><a name="V3.38_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The color DeskJet drivers wouldn't compile with a K&amp;R compiler,
+because some of the procedure definitions weren't in the restricted syntax
+that ansi2knr requires. (gdevcdj.c)
+ - The color DeskJet drivers wouldn't compile because of a bug in
+Sun's cc. (gdevcdj.c)
+
+Changes the BJ-10e(x) margins to be identical to those of the BJ-200.
+(gdevbj10.c)
+
+Changes the LaserJet margins in response to a user's request. (gdevdjet.c)
+
+Changes the psmono driver to produce slightly larger files that execute
+faster on typical Level 1 printers. (gdevpsim.c)
+
+Changes the psmono driver so that it does not scale the image to fit the
+page size, but instead scales it to be the same physical size on the page.
+THIS IS A NON BACKWARD COMPATIBLE CHANGE. However, for full-page images, it
+will not have any visible effect. (gdevpsim.c)
+
+</pre><h3><a name="V3.38_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - There were some problems associated with printing in 32-bit
+Windows environments. (gp_mswin.c)
+ - The IBM RS/6000 needs both &lt;time.h&gt; and &lt;sys/time.h&gt;. (time_.h)
+
+Adds the PDF interpreter to the standard MS Windows configuration.
+(bcwin.mak)
+
+</pre><h3><a name="V3.38_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The entry for Courier-BoldItalic in cfonts.mak incorrectly named
+it as Courier-Italic. (cfonts.mak)
+ - The files for Courier-Italic in cfonts.mak were inconsistently
+named ncrri instead of ncri. (cfonts.mak)
+ - The rules in cfonts.mak covered only the fonts distributed with
+the free versions of Ghostscript, omitting some of the standard set of 35.
+(cfonts.mak)
+ - The maximum number of stem hints per character in Type 1 fonts
+wasn't large enough for complex Asian characters. (gxtype1.h)
+
+Adds a -dNOFONTMAP switch to suppress loading the Fontmap file.
+(gs_init.ps, gs_fonts.ps)
+
+</pre><h3><a name="V3.38_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - One of the GC marking routines for halftones had a typo,
+possibly leading to an invalid access. (zht2.c)
+ - The GC could store beyond the end of the mark stack,
+possibly smashing some characters of a string or name. (igc.c)
+ - If the allocator allocated a new ref object from a
+freelist, the bookkeeping for the current ref object could get
+confused. (ialloc.c)
+ - The GC didn't remove names properly from the hash table.
+(iname.c)
+ - If a DOS editor added a ^Z to the end of an initialization file,
+an error occurred during initialization. (gs_init.ps)
+ - If an initialization file had any lines longer than 128
+characters, .skipeof would get an error. (gs_init.ps)
+ - makepattern could create structures in global VM pointing to
+structures in local VM. (zpcolor.c)
+ - The default color rendering dictionary didn't specify large enough
+ranges for some intermediate values. (gs_lev2.ps)
+ - Files being freed by a restore weren't unlinked properly, leading
+to dangling pointers. (zfile.c)
+ - The interpreter used strlen without a prototype. (interp.c)
+ - Indexed or Separation colors with a CIE base or alternate space
+didn't work. (zcie.c)
+ - The Watcom C 10.0 compiler produced incorrect code for an
+overlapping structure assignment. (zcsindex.c)
+
+Removes limit of 64K names, if EXTEND_NAMES is defined at compile
+time. (*.mak, idebug.h, iminst.h, iname.h, gs.c, gsmain.c, idebug.c,
+iname.c)
+
+Makes the garbage collector really collect names. (iname.h, inamedef.h,
+isstate.h, igc.c, iname.c, isave.c)
+
+Restructures some files to better separate the language interpreters
+from their support code. (gconfig.c, iconfig.c, iinit.c)
+
+Restructures some files to better separate the language interpreters
+from the graphics core. (iastate.h, iastruct.h, ialloc.c)
+
+Allows the operands of cshow to be in either order on the stack. Adobe
+interpreters apparently allow this, even though it's not documented.
+(zchar2.c)
+
+Adds a hack in cvs to truncate non-standard operator names, rather than
+giving a rangecheck, to work around the "max err string" problem in some
+common error handlers. (ztype.c)
+
+Changes the print string for unregistered operators from operator_0x... to
+@0x.... (iutil.c)
+
+Changes the garbage collector so it tries to allocate a large mark stack, to
+avoid going into its 'slow' mode if the mark stack overflows. (igc.c)
+
+</pre><h3><a name="V3.38_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Stroked text used the text matrix, rather than just the
+CTM, for scaling the line width, which could lead to inappropriately
+wide lines. (gs_pdf.ps)
+ - Fonts based on other than a 1000-unit scale (i.e., with a
+FontMatrix other than [0.001 0 0 0.001 0 0]) didn't scale Widths to
+match the font scaling. (pdf_font.ps)
+
+Implements the PDF 1.1 color space extensions, except for Lab space.
+(gs_pdf.ps, pdf_draw.ps)
+
+Implements the Rotate key for pages. (pdf_main.ps)
+
+</pre><h3><a name="V3.38_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - When the garbage collector closed a file stream, the stream
+incorrectly attempted to free the buffer. (stream.c)
+
+Separates out some stream implementations to better distinguish the
+graphics core from the language interpreters. (smtf.h, sfilter1.c,
+smtf.c, srld.c, srle.c)
+
+</pre><h3><a name="V3.38_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Compressing characters being entered in the cache could cause an
+invalid memory access. (gsbitops.c)
+ - The setbbox bounding box check was slightly inaccurate.
+(gsdps1.c)
+ - makepattern could create structures in global VM pointing to
+structures in local VM. (gscolor2.h, gspcolor.c)
+ - Out-of-range values during CIE color conversion led to random
+results. (gscie.c)
+ - On output devices with non-inverted Y axes (such as MS Windows),
+Interpolated images would smash memory. (gsimage.c)
+ - 90 degree rotated zero-width images caused an invalid memory
+access. (gsimage1.c)
+ - If #copies was zero, showpage could create bogus empty output
+files. (gdevprn.c)
+ - PageCount didn't take #copies into account. (gsdevice.c)
+ - Indexed or Separation colors with a CIE base or alternate space
+didn't work. (gscie.h, gscie.c)
+
+Implements triangular line caps and joins, in anticipation of adding
+a PCL5 interpreter. (gsline.h, gxstroke.c)
+
+Moves some procedures around for better separation of library from
+interpreter. (gsinit.c, gslib.c, gsmain.c, gsmisc.c)
+
+Moves the standard allocator from the interpreter to the library.
+(gsalloc.h, gxalloc.h, gxobj.h, gsalloc.c)
+
+Starts to change the representation of paths slightly to make it possible to
+identify arcs. This change is backward-compatible for all code except
+callers of gx_path_add_arc. (gxpath.h, gspath1.c, gxpath.c, gxstroke.c)
+
+Adds some framework for keeping track of RasterOp and "transparency" in the
+graphics state, although these don't actually have any effect yet.
+(gsrop.h, gsropt.h, gsstate.h, gxcldev.h, gzstate.h, gsrop.c, gsstate.c,
+gxclist.c, gxclread.c)
+
+Adds a compile-time option for using the Adobe RGB&lt;-&gt;CMYK conversion rules.
+(gxdcconv.c)
+
+Adds a driver procedure for identifying band devices. This change is
+backward-compatible for all existing devices. (gdevmem.h, gxdevice.h,
+gsdevice.c, gxclip2.c, gxclist.c, gxcpath.c)
+
+Speeds up gray-scale images on devices requiring banding, and enables
+further optimizations, by reintroducing the distinction between banded and
+non-banded devices. (gxdevice.h, gdevprn.c, gsimage1.c)
+
+Reduces the size of the band list for halftoned images by encoding tile
+indices more compactly. (gxcldev.h, gxclist.h, gxclist.c, gxclread.c)
+
+Extends the band list so it can cache more than 256 halftone tiles, and to
+make better decisions about tile caching. (gxcldev.h, gxclist.h, gxclist.c,
+gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.37"></a>Version 3.37 (limited) (5/11/95)</h2>
+
+<p>
+Another bug fix release distributed only to customers.
+
+<h3><a name="V3.37_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Some documentation about parameter lists was incorrect.
+(gsparam.h)
+ - The documentation did not note that one cannot "pipe" PDF files
+into the interpreter. (use.doc)
+
+Adds documentation for the BJC-600 to devices.doc. (devices.doc)
+
+</pre><h3><a name="V3.37_Procedures"></a>Procedures</h3><pre>
+
+Changes the debugging switch for OS calls from -Z0 to -Ze, and adds -Z0 for
+high-level GC tracing. (use.doc, gp_unifs.c, ialloc.c, igc.c)
+
+</pre><h3><a name="V3.37_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The ps2ascii shell script included an erroneous @d. (ps2ascii)
+
+Enhances ps2ascii to output color and rectangle fill/stroke information if
+COMPLEX is defined. (ps2ascii.ps)
+
+</pre><h3><a name="V3.37_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - the BJC-600 driver didn't handle BitsPerPixel correctly.
+(gdevcdj.c)
+
+</pre><h3><a name="V3.37_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Some buggy Type 1 fonts confused the Type 1 font reader.
+(gs_fonts.ps, gs_type1.ps, pdf_font.ps)
+
+</pre><h3><a name="V3.37_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - .registerencoding didn't accept mixedarrays, which could cause an
+error if an encoding was loaded long after initialization. (zfont2.c)
+ - If a program did a lot of saves and restores, the garbage
+collector could get invoked much too often. (iastate.h, ialloc.c, igc.c,
+isave.c)
+
+Changes the name of the rectappend operator to .rectappend, since it isn't a
+standard PostScript operator. (zdps1.c)
+
+</pre><h3><a name="V3.37_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PDF files didn't interact properly with ps2ascii. (gs_pdf.ps)
+ - setdash wouldn't accept a packed array. (zgstate.c)
+ - PDF files with incorrect generation numbers in object references
+produced an error rather than a warning. (pdf_base.ps)
+
+</pre>
+
+<h2><a name="Version3.36"></a>Version 3.36 (limited) (5/4/95)</h2>
+
+<p>
+This is a limited-distribution release for distributing bug fixes to a few
+customers.
+
+<h3><a name="V3.36_Documentation"></a>Documentation</h3><pre>
+Adds some environment variables to the man page. (gs.1)
+
+</pre><h3><a name="V3.36_Procedures"></a>Procedures</h3><pre>
+
+Adds the psmono device to all 32-bit configurations. (*.mak)
+
+Moves the psmono and 'bit' devices to DEVICE_DEVS12 to avoid exceeding the
+120-character maximum length of the DOS command line. (*.mak)
+
+</pre><h3><a name="V3.36_Drivers"></a>Drivers</h3><pre>
+
+Changes the pgm[raw] and ppm[raw] drivers so they do *not* automatically
+switch to pbm or pgm/ppm respectively if this is possible for the particular
+page being rendered; adds pgnm[raw] and pnm[raw] drivers that *do* do this.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE. However, existing programs will
+still work; they just won't produce the smallest and simplest possible
+output. (devs.mak, gdevpbm.c)
+
+</pre><h3><a name="V3.36_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - A multi-level restore didn't free gstates allocated by
+intermediate saves, causing some global VM to be lost until a garbage
+collection. (isave.h, isave.c, zvmem.c)
+
+Speeds up restore by skipping the scan of the character cache if no new
+names have been allocated since the save. (zfont.c)
+
+Extends the client API to allow for popping return values off the operand
+stack. (imain.h, gs.c, gsmain.c)
+
+</pre><h3><a name="V3.36_Library"></a>Library</h3><pre>
+
+Modifies the character oversampling algorithms to help prevent dropouts.
+(gsbitops.c, gschar.c)
+
+</pre>
+
+<h2><a name="Version3.35"></a>Version 3.35 (internal) (5/2/95)</h2>
+
+<p>
+This is another internal "snapshot" version.
+
+<h3><a name="V3.35_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - Some of the file names in the `man' page had gotten out of date.
+(gs.1)
+ - Two references to .PageCount hadn't been changed to PageCount.
+(language.doc, devarch.doc)
+
+</pre><h3><a name="V3.35_Procedures"></a>Procedures</h3><pre>
+
+Puts writeppmfile back in the standard Unix and DV/X configurations, since
+gsftopk uses it. Also puts the PDF reader in all 32-bit configurations.
+(*.mak)
+
+Moves the BMP devices to DEVICE_DEVS11 to avoid exceeding the 120-character
+maximum length of the DOS command line. (bcwin.mak, bcwin32.mak, os2.mak)
+
+</pre><h3><a name="V3.35_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - unix-lpr.sh didn't handle 32-bit devices. (unix-lpr.sh)
+ - unix-lpr.sh still used the name .PageCount rather than PageCount.
+(unix-lpr.sh)
+ - font2c gave an error when trying to write general procedures in
+font dictionaries. (font2c.ps)
+
+Adds a pdf2dsc.ps utility for writing out fake DSC-compliant PostScript code
+to invoke the PDF reader, for the benefit of viewer programs that aren't
+PDF-aware. (unix-end.mak, pdf2dsc.ps)
+
+</pre><h3><a name="V3.35_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The TIFF drivers put out incorrect PageNumber values.
+(gdevtfax.c)
+ - Printer (and file output) devices got closed and reopened
+unnecessarily when changing parameters. (gdevprn.c)
+ - Printer (and file output) devices didn't check for invalid formats
+following a % in OutputFile. (devs.mak, gdevprn.c)
+ - 1-bit memory devices were not considered page devices, unlike all
+other memory devices. (gsdevice.c)
+ - The black-and-white H-P printers didn't close the printer
+properly, causing printing not to happen under MS Windows. (gdevprn.c)
+ - Some compilers didn't like initializing a const char * to NULL.
+(gdevlbp8.c)
+
+Changes the X Windows driver so that if Ghostview specifies a bounding box,
+this also sets ImagingBBox. (gdevxini.c)
+
+At the request of a customer, adds 1-, 4-, 8-, 24-, and 32-bit-deep memory
+devices that store bits in 32-bit units rather than byte units. (gdevmem.h,
+gxdevmem.h, gdevmem.c, gdevm1.c, gdevm2.c, gdevm4.c, gdevm8.c, gdevm16.c,
+gdevm24.c, gdevm32.c)
+
+Adds a new MS Windows printer driver, mswinpr2, that uses a DIB rather than
+a DDB. (gdevwpr2.c)
+
+</pre><h3><a name="V3.35_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - A routine wouldn't compile because of a bug in the SGI C compiler.
+(zcsindex.c)
+ - Some declarations were inconsistent when compiling for segmented
+environments. (gscie.c)
+ - A routine wouldn't compile because of a bug in the VAX C compiler.
+(gscie.c)
+
+Turns on compiler optimization for OS/2; adds PDF support and more devices
+for Win32 and OS/2. (bcwin.mak, bcwin32.mak, os2.mak)
+
+</pre><h3><a name="V3.35_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Font loading used 'setglobal' without binding it, which caused
+some EPS files to signal errors. (gs_fonts.ps)
+ - A zero-length string with offset = 0 in a binary object sequence
+caused an error. (iscanbin.c)
+
+Adds a LOCALFONTS switch that causes Ghostscript to load Type 1 fonts into
+the current VM, rather than global VM. According to Adobe, this is what
+Adobe printers (but not other interpreters, such as DPS and CPSI) do.
+(gs_init.ps, gs_fonts.ps)
+
+</pre><h3><a name="V3.35_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The 'note' page size command caused pages to be clipped
+improperly. (gs_statd.ps)
+
+Adds "word" image devices. (gs_init.ps, zdevice.c)
+
+Starts converting the interpreter to use an explicit instance pointer. This
+is very fragmentary so far and not really supported. (main.h, gs.c,
+gsmain.c, iccinit.c)
+
+</pre><h3><a name="V3.35_Library"></a>Library</h3><pre>
+
+Adds "word" image devices. (gsdevice.h, gsdevice.c)
+
+Removes the requirement that ImagingBBox[0] and [1] be non-negative. (The
+Adobe specification requires this, but Ghostscript supports more general
+initial CTMs than the Adobe spec.) (gsdparam.c)
+
+</pre>
+
+<h2><a name="Version3.34"></a>Version 3.34 (internal) (4/18/95)</h2>
+
+<p>
+This is a "snapshot" version made for internal purposes. It was never
+released to anyone.
+
+<h3><a name="V3.34_Documentation"></a>Documentation</h3><pre>
+Updates commprod.doc to be fully consistent with the AGFPL. (commprod.doc)
+
+</pre><h3><a name="V3.34_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - tar_x was out of date. (tar_x)
+ - tar_gs assumed that if any PC executables were present, gs.exe
+would exist. (tar_gs)
+ - jpeg.mak said the current IJG version was 5b, but the makefiles
+actually referred to version 5a. (jpeg.mak)
+ - The build rule for the LIPS III driver was incorrect. (devs.mak)
+ - Some definitions in the makefiles occurred out of order.
+(ansihead.mak, cc-head.mak, gcc-head.mak, unixhead.mak, unixtail.mak)
+ - The build rule for dvx-gcc.mak was incorrect. (unix-end.mak)
+
+</pre><h3><a name="V3.34_Interpreter"></a>Interpreter</h3><pre>
+
+Restructures the CIE caches to move much more of the computation from color
+mapping time to cache loading time. (zcie.c)
+
+</pre><h3><a name="V3.34_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Color conversion of 12-bit images was very slightly inaccurate.
+(gxfrac.h)
+
+Changes the transfer function, black generation, and undercolor removal
+caches so that they sample at 1024 points and don't interpolate, rather than
+sampling at 256 points and interpolating. This significantly improves the
+speed of colored image rendering. ****** LIMITED TO 256 POINTS BECAUSE OF
+O-STACK SIZE LIMIT. ****** (gxfmap.h, gxcmap.c)
+
+Restructures the CIE caches to move much more of the computation from color
+mapping time to cache loading time. (gscie.h, gscie.c)
+
+</pre>
+
+<h2><a name="Version3.33"></a>Version 3.33 (4/13/95)</h2>
+
+<p>
+A few more last-minute bug fixes. This is, finally, the first public
+release since 3.12.
+
+<h3><a name="V3.33_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - There was a reference to "VAX with OSF/1", which doesn't exist,
+and an incorrect reference to VAX with Ultrix. (make.doc)
+ - The Unix makefiles incorrectly stated that gsdatadir was only
+relevant to `make install'. (ansihead.mak, cc-head.mak, dgc-head.mak,
+gcc-head.mak)
+ - Notes that DV/X users should use the zip version of the JPEG
+library. (jpeg.mak)
+
+</pre><h3><a name="V3.33_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - A command line had gotten too long for the MS-DOS shell.
+(gs.mak)
+ - The VMS DEC C script didn't explicitly select DEC C.
+(vms-decc.mak)
+ - The VMS MODULES.LIS omitted SPDIFF and ZFPDIFF. (modules.lis)
+ - The VMS script had an incorrect entry. (vms.mak)
+ - The `if' fix in 3.31 broke some Unix systems with different
+implementations of sh. (unix-end.mak)
+ - The makefile definition of gscspace_h was out of order. (gs.mak)
+ - An extra ; got written in gconfig_.h on DV/X platforms.
+(dvx-tail.mak)
+ - '.' was incorrectly prepended to the library search list on DV/X
+platforms. (dgc-head.mak)
+ - The build rules for unix*.mak didn't work on DV/X. (unix-end.mak)
+
+Adds a description of the -c quit switch to the help message. (gs.c)
+
+For the DV/X platform, changes /usr/include to /djgpp/include as the place
+to look for header files. I'm not sure this is always correct.
+(dvx-tail.mak)
+
+</pre><h3><a name="V3.33_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2ascii would cause an error if given a font that didn't have an
+'X' character. (ps2ascii.ps)
+ - ps2ascii didn't intercept the Level 2 string display operators.
+(ps2ascii.ps)
+
+</pre><h3><a name="V3.33_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The Stylus Color driver had an incorrect type name. (gdevstc.c)
+
+</pre><h3><a name="V3.33_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - -dBitsPerPixel= didn't work properly for MS Windows or OS/2 PM.
+(gdevmswn.c, gdevpm.c)
+ - The Win32 platform didn't compile properly. (memory_.h)
+
+</pre><h3><a name="V3.33_Fonts"></a>Fonts</h3><pre>
+
+Improves the font substitution algorithm to take the face name into account
+in more cases. (gs_fonts.ps)
+
+</pre><h3><a name="V3.33_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Unrotated black-and-white bitmaps with an inverted device X axis
+were displaced in X. (gsimage1.c)
+
+</pre>
+
+<h2><a name="Version3.32"></a>Version 3.32 (4/7/95)</h2>
+
+<p>
+More bug fixes. This is still not a public release.
+
+<h3><a name="V3.32_Documentation"></a>Documentation</h3><pre>
+Further clarifies the "two-phase commit" algorithm for device put_params
+procedures. (drivers.doc, gsparam.h)
+
+Adds a note about a compiler bug under Ultrix 4.4. (make.doc)
+
+</pre><h3><a name="V3.32_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Some installation scripts could fail because some implementations
+of sh take the status of an `if' condition as the status of the `if'
+command. (unix-end.mak)
+
+Adds "maintainer-clean" as a synonym for "real-clean". (gs.mak)
+
+Adds a -dORIENT1 switch that defines orientation = 1 as portrait for
+setpage[params]. (use.doc, gs_init.ps, gs_lev2.ps, gs_statd.ps)
+
+</pre><h3><a name="V3.32_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2ascii didn't redirect %stdout completely. (ps2ascii.ps)
+ - ps2ascii didn't preserve the local/global VM mode. (ps2ascii.ps)
+ - ps2ascii didn't handle fonts with an all-zero or missing bounding
+box correctly. (ps2ascii.ps)
+ - viewpbm didn't scale the image properly. (viewpbm.ps)
+
+</pre><h3><a name="V3.32_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The CGM driver wrote out an incorrect color precision value.
+(gdevcgm.c)
+ - The SGI bitmap driver was named "sgi" rather than "sgirgb".
+(gdevsgi.c)
+ - The PCX driver didn't round up an odd line length for gray-scale
+output. (gdevpcx.c)
+ - The PCX driver produced incorrect output for gray-scale or 4- or
+8-bit color. (gdevpcx.c)
+
+</pre><h3><a name="V3.32_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS MODULES.LIS file had gotten out of sync with the Unix
+makefiles (again). (modules.lis)
+
+</pre><h3><a name="V3.32_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Some compilers won't accept '\l', even in the false arm of a
+preprocessor conditional. (scanchar.h)
+ - A procedure was declared with an incorrect argument type.
+(zcsindex.c)
+ - The scaled font cache didn't copy XUIDs properly. (bfont.h,
+zfont.c, zfont2.c)
+ - status could return true even if the file was closed. (zfile.c)
+
+</pre><h3><a name="V3.32_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The LZW filters were factored improperly. (modules.lis, gs.mak,
+vms.mak, slzwx.h, slzwc.c, slzwd.c)
+
+Changes the DCTDecode filter for compatibility with Adobe implementations:
+ - Ignore bytes preceding the 0xff that marks the beginning of the
+JPEG data. (sdctd.c)
+ - Set MAX_BLOCKS_IN_MCU to 64. (jpeg.mak, gsjpglib.h)
+
+</pre><h3><a name="V3.32_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The "two-phase commit" for device parameters wasn't fully
+implemented. (gsiodev.c)
+ - Asking for a device color map before the device was opened could
+cause a crash. (gsdparam.c)
+ - The scaled font cache didn't copy XUIDs properly. (gxfont.h,
+gsfont.c)
+ - 90 or 270 degree rotated black-and-white bitmaps (including
+bitmapped fonts such as downloaded TrueType fonts) with an inverted device Y
+axis were displaced in Y. (gsimage1.c)
+ - On high-resolution devices, parts of regions filled with halftones
+could fail to be painted. (gxclist.c)
+
+</pre>
+
+<h2><a name="Version3.31"></a>Version 3.31 (4/2/95)</h2>
+
+<p>
+A few final bug fixes for the release. Includes significant speed
+improvements for CIE color, and a first draft of a low-level CGM driver.
+
+<h3><a name="V3.31_Documentation"></a>Documentation</h3><pre>
+Notes that the BJC600 driver also works for the BJC4000. (devs.mak)
+
+</pre><h3><a name="V3.31_Procedures"></a>Procedures</h3><pre>
+
+At the suggestion of a user, changes the default protections for installed
+files on Unix and DV/X systems from 775/664 to 755/644. (*head.mak)
+
+At the suggestion of a user, adds a -dNOCIE switch to substitute DeviceGray
+and DeviceRGB color spaces for CIEBasedA and CIEBasedABC spaces
+respectively. (gs_init.ps, gs_lev2.ps)
+
+</pre><h3><a name="V3.31_Utilities"></a>Utilities</h3><pre>
+
+Changes gslp and its relatives to use ISOLatin1Encoding for output, and to
+send almost all printout to stderr rather than stdout (for use as a filter
+under Unix). (gslp.ps)
+
+</pre><h3><a name="V3.31_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The fax/TIFF driver no longer exported gdev_fax_print_page, which
+the DigiFax driver needs. (gdevtfax.c)
+ - The color DeskJet drivers gave an error for BitsPerPixel=3.
+(gdevcdj.c)
+ - The "Windows printer" driver was setting its margins in points
+rather than inches. (gdevwprn.c)
+ - The BJ10 and BJ200 drivers calculated vertical skip distances
+wrong. (gdevbj10.c)
+ - The BJ10 and BJ200 drivers output two garbage bytes following the
+initialization string. (gdevbj10.c)
+
+Adds a preliminary driver that produces low-level CGM output. (gdevcgml.h,
+gdevcgmx.h, gdevcgm.c, gdevcgml.c)
+
+</pre><h3><a name="V3.31_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS files had gotten out of sync with the other makefiles
+(again). (modules.lis, vms.mak)
+ - The MS Windows and OS/2-PM drivers hadn't been updated to handle
+BitsPerPixel as a standard parameter. (gdevmswn.c, gdevpm.c)
+
+Removes the TIFF drivers from the Windows platform, and restores the BMP
+drivers. (bcwin.mak)
+
+</pre><h3><a name="V3.31_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The CIE color mapping cache could produce anomalous results
+for the default (all zero values) color if some of the mapping
+functions were non-linear. (zcie.c)
+ - MultiMaster font substitution got confused if substituted
+fonts had their FontName changed. (gs_fonts.ps)
+ - A procedure was declared as private inconsistently. (zdevcal.c)
+ - Some pointer relocation procedures didn't work correctly on
+systems with sizeof(T *) &gt; sizeof(int). (istack.c)
+ - The freelist vector wasn't large enough to handle graphics state
+objects on 64-bit systems, leading to severe memory sandbars. (iastate.h)
+ - The debugging messages from the allocator had gotten inconsistent
+and hard to use. (ialloc.c)
+ - Mixing save/restore with allocation could cause the GC never to
+get run. (isave.c)
+
+Speeds up the mapping of CIE colors. (zcie.c)
+
+Adds a .namestring operator for getting the string of a name without having
+to copy it. (zstring.c)
+
+</pre><h3><a name="V3.31_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The IJG code needed a couple more flags set for IJG v6.
+(gsjmorec.h)
+ - Some pointer relocation procedures didn't work correctly on
+systems with sizeof(T *) &gt; sizeof(int). (stream.c)
+
+</pre><h3><a name="V3.31_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The end-test for the fast case of monobit images was wrong,
+leading to out-of-range memory accesses. (gsimage1.c)
+ - Monobit images rotated by 270 degrees displayed incorrectly.
+(gsimage1.c)
+ - If a Type 1 font used hint replacement, some parts of the outline
+before the hint replacement ignored the old hints. (gstype1.c)
+ - Some compilers didn't accept a variable name that was the same as
+a macro with parameters. (gxht.c)
+ - A procedure was declared as private inconsistently. (gdevm1.c)
+ - Some pointer relocation procedures didn't work correctly on
+systems with sizeof(T *) &gt; sizeof(int). (gdevmem.c, gsstate.c)
+ - The test on FORCE_HINTS_TO_BIG_PIXELS was backwards. This bug was
+supposed to have been fixed in 3.30, but somehow the fix got lost.
+(gstype1.c)
+ - 90 degree rotated monobit images could drop some scan lines.
+(gsimage*.c)
+
+Speeds up the mapping of CIE colors. (gscie.h, gxcmap.h, gscie.c, gxcmap.c)
+
+Speeds up color images (non-interpolated, 1-8 bits per component) by adding
+a cache for mapped color values. (gximage.h, gsimage.c, gsimage1.c,
+gsimage2.c)
+
+Shrinks the band list file slightly by using only as many bytes as necessary
+for writing out colors, rather than always using 4 bytes. (gxclist.c,
+gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.30"></a>Version 3.30 (beta) (3/21/95)</h2>
+
+<p>
+More bug fixes. The garbage collector and PDF interpreter finally appear to
+work reliably.
+
+<h3><a name="V3.30_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - language.doc had gotten out of date. (language.doc)
+
+</pre><h3><a name="V3.30_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - Changes in the handling of %stdout had broken ps2ascii.
+(gs_dps1.ps, ps2ascii.ps)
+
+Improves ps2ascii to skip empty strings and not output redundant font
+changes. (ps2ascii.ps)
+
+</pre><h3><a name="V3.30_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The fax and TIFF drivers didn't free all their working storage.
+(This bug was fixed in 3.27, and the fix somehow got lost.) (gdevtfax.c)
+
+Adds new drivers:
+ - sgirgb, to produce SGI RGB raster files. (gdevsgi.c)
+ - tiffcrle, to produce output in TIFF "CCITT 1-dimensional Huffman
+RLE" format (Group 3 fax with no EOLs). (gdevtfax.c)
+ - tifflzw, to produce output in TIFF LZW format (using the existing
+CCITTFaxEncode filter code). (gdevtfax.c)
+ - tiffpack, to produce output in TIFF PackBits format. (gdevtfax.c)
+
+</pre><h3><a name="V3.30_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - If the current screen was set with a halftone, setcolorscreen
+wouldn't accept what currentcolorscreen returned. (gs_dps1.ps)
+ - debug_print_full_ref didn't print t_oparray objects correctly.
+(idebug.c)
+ - The internal data for a font could be allocated in a different VM
+space from the font dictionary, causing dangling pointers. (zfont2.c)
+ - definefont became confused if a program failed to delete the FID
+from a re-encoded font. (This is questionable PostScript, but dvips does
+it.) (zfont2.c)
+ - If a BuildChar procedure did a save before the setcachedevice and
+a restore afterwards, the memory manager would attempt to free the cache
+device after it had already been freed by the restore, leading to damaged
+freelists. (gschar.c)
+ - setresolution (in statusdict) was ignored. (gs_lev2.ps,
+gs_statd.ps)
+ - If a string containing a string containing a \ was passed to the
+token operator, the \ was not recognized properly in a Level 2 environment.
+(iscan.c)
+ - A couple of default dictionary sizes had become too small.
+(iinit.c)
+
+Makes DOS EOF (control-Z, 0x1a) a self-delimiting token, like left bracket.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE, but it should not have any adverse
+effects. (gs_init.ps, iscan.c, iscantab.c)
+
+Distinguishes arch_small_memory from arch_ints_are_short, and adds a new
+-Z. switch to force small-memory table sizes regardless of actual memory
+size. (dstack.h, idict.c, zpcolor.c, zvmem2.c)
+
+</pre><h3><a name="V3.30_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - A page with no Contents caused an error. (pdf_main.ps)
+ - Executing a Form resource caused an error. (pdf_draw.ps)
+ - Outlines with open entries caused an error. (pdf_main.ps)
+ - Embedded Type 3 fonts caused an error. (pdf_draw.ps, pdf_font.ps)
+ - The Widths array of fonts was ignored. (pdf_font.ps)
+
+</pre><h3><a name="V3.30_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Freeing an entry in the pattern cache didn't clear the pointers to
+the raster data, producing a dangling reference that confused the garbage
+collector. (gxpcmap.c)
+ - The test on FORCE_HINTS_TO_BIG_PIXELS was backwards. (gstype1.c)
+ - The pattern cache bookkeeping was incorrect. (gxpcmap.c)
+ - Depending on the order in which pointers were relocated, the
+garbage collector could incorrectly relocate pointers from the character
+cache. (gxfcache.h, gsfont.c, gxccache.c, gxccman.c)
+
+Changes the fast case of black-and-white images so it aligns scaled images
+with the device coordinate system, to improve performance. (gsimage1.c)
+
+Extends the coordinate transformation routines to handle absurdly large
+translation values in the CTM as long as the final device device coordinates
+are within fixed-point range. (gxmatrix.h, gxpath.h, gschar.c, gscoord.c,
+gsmatrix.c, gxhint2.c, gxpath2.c)
+
+Distinguishes arch_small_memory from arch_ints_are_short, and adds a new
+-Z. switch to force small-memory table sizes regardless of actual memory
+size. (gdevprn.h, gxpcolor.h, gzht.h, std.h, gsfont.c, gsht1.c, gspaint.c,
+gsstate.c, gxcht.c, gxht.c, gxpcmap.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.29"></a>Version 3.29 (internal) (3/8/95)</h2>
+
+<p>
+Another bug-fix release. This release processes all but 7 of the 500+ files
+on the Adobe Acrobat Sampler CD-ROM without giving an error. The garbage
+collector finally appears to be stable. This version was created for a
+customer; it was not released to the general public or even to the beta test
+list.
+
+<h3><a name="V3.29_Documentation"></a>Documentation</h3><pre>
+Documents the possible need to set LD_RUN_PATH on SVR4 platforms.
+(make.doc)
+
+Expands the description of the device life cycle, and of the constraints on
+put_params procedures. (drivers.doc)
+
+Adds an explicit copyright notice to the Aladdin Ghostscript Free Public
+License. (PUBLIC)
+
+Clarifies that the Win32s documentation also applies to Windows NT.
+(make.doc)
+
+</pre><h3><a name="V3.29_Procedures"></a>Procedures</h3><pre>
+
+Removes the obsolete writeppmfile operator from the standard configurations.
+(gs.mak)
+
+Changes the Watcom makefiles to work properly with Watcom C/C++ 10.0.
+(make.doc, msc.mak, watc.mak, watcwin.mak, wccommon.mak)
+
+</pre><h3><a name="V3.29_Utilities"></a>Utilities</h3><pre>
+
+Adds a wftopfa utility for converting the Wadalab fonts to usable Type 0 and
+Type 1 form. (wftopfa)
+
+</pre><h3><a name="V3.29_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Entries added automatically by definefont (FontInfo, ExactSize)
+could cause a font dictionary to become full. (gs_fonts.ps, gs_type1.ps)
+ - wrfont.ps couldn't deal with very long CharStrings. (wrfont.ps)
+
+Makes the name of the Fontmap file an easily editable parameter.
+(gs_fonts.ps)
+
+Adds a utility for converting the Wadalab font to usable Type 0 and Type 1
+form. (wrfont.ps, wftopfa.ps)
+
+</pre><h3><a name="V3.29_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The top margin for printer (and fax) devices was computed
+incorrectly, using the X resolution rather than the Y resolution.
+(gdevprn.h)
+ - Changing the page size or resolution of a printer device closed
+and reopened the device unnecessarily. (gdevprn.c)
+ - Changing the page size of the X11 device didn't change the initial
+matrix, so (0,0) didn't wind up in the lower left corner. (gdevx.c)
+ - The bit devices didn't allow changing the number of bits per
+pixel. (gdevbit.c)
+
+Adds a settable .IsPageDevice boolean device parameter to the X Windows
+driver. The default value is true. (gdevx.h, gdevx.c)
+
+Changes the PPM driver so that it chooses between PBM/PGM/PPM on a
+page-by-page basis, rather retaining the most general format ever required
+by any page. (gdevpbm.c)
+
+</pre><h3><a name="V3.29_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - The current page device could be null, rather than an empty
+dictionary. (igstate.h, zchar.c, zdevice.c, zdevice2.c, zgstate.c)
+ - The scanner didn't signal an error for names or strings that were
+too long. (iscan.c)
+ - A missing header file upset the VAX compilers. (ztype.c)
+ - Some places expecting dictionary operands didn't check the type,
+because they incorrectly assumed that the dict_check_read/write macro did
+this. (idict.h, zdevice2.c, zht2.c, zmisc2.c)
+ - The definition of quit in systemdict wasn't disabled within
+encapsulated jobs. (gs_lev2.ps)
+ - resetfile gave an error if the file was closed, rather than doing
+nothing. (zfileio.c)
+ - The scanner attempted to free an uninitialized pointer if it
+reached EOF after a / or //. (iscan.c)
+ - A restore in a different file than the corresponding save caused
+an invalidrestore error. (gs_init.ps)
+ - The default value of EndOfData in RunLengthDecode streams was set
+to false. (zfilter.c)
+ - .registerencoding didn't invoke the save machinery correctly,
+leading to GC problems. (zfont2.c)
+ - The facility for overriding .printerror didn't work correctly.
+(gs_init.ps)
+ - gs_run_file_open wasn't public. (gsmain.c)
+ - The interpreter returned e_undefined for undefined error names,
+rather than the error code. (interp.c)
+ - Allocation in system memory (specifically, adding a block to a
+stack) couldn't trigger automatic garbage collection. (interp.c, igc.c,
+zvmem2.c)
+ - A restore in a different invocation of gs_run_string than the
+corresponding save would stop reading the string. (files.h, gsmain.c,
+iccinit.c, zfile.c)
+ - The Type 1 rasterizer state included a pointer into the middle of
+an object, confusing the garbage collector. (zchar1.c, zfont1.c)
+ - When the garbage collector deleted a name, it didn't zero out the
+string pointer. (iname.c)
+ - On platforms where obj_align_mod &gt; 4, the memory manager could
+access 1 beyond the end of its freelists. (iastate.h)
+ - makefont and scalefont didn't check the type of their font operand
+soon enough. (zfont.c)
+ - restore didn't finalize the objects it freed. (isave.c)
+ - restore didn't free system VM. (isave.c)
+ - Freeing a ref array that occupied an entire chunk didn't free the
+chunk. (ialloc.c)
+
+Adds a .runexec operator which implements the 'close if error' function of
+run. (zfile.c, zfileio.c)
+
+Moves the obsolete writeppmfile operator into a separate file. (zfileio.c,
+zwppm.c)
+
+Makes the statistics returned by the memory manager more accurate.
+(ialloc.c, zvmem.c)
+
+Adds a (read-only) %Calendar% IODevice. (zdevcal.c)
+
+Adds a "hook" in the character operators to allow external code to
+intervene; this is needed for a customer. (ichar.h, zchar.c, zchar2.c)
+
+Makes control-D (0x04) a self-delimiting token, like left bracket. THIS IS
+A NON-BACKWARD-COMPATIBLE CHANGE, but it should not have any adverse
+effects. (scanchar.h, iscan.c, iscantab.c)
+
+Changes the error stack printout so that it puts line breaks between items
+iff the items are being printed with ==. (gs_init.ps)
+
+Uses finalization to close streams being freed. (igc.c, zfile.c, ziodev.c)
+
+</pre><h3><a name="V3.29_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - Embedded Type 1 fonts that invoked save and restore while being
+read caused an error. (pdf_font.ps)
+ - Large files that referenced a non-alphabetic font for the first
+time late in the file could cause an error. (pdf_main.ps)
+
+</pre><h3><a name="V3.29_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - SubFileDecode streams didn't copy partial matches of the EOD
+string into their output. (sfilter1.c)
+
+Makes switching between read and write modes a stream procedure. (stream.h,
+sfile.c, sfileno.c, stream.c, zfileio.c)
+
+Makes file streams close themselves when finalized. (We can't do this for
+other streams, because finalization procedures aren't allowed to free
+storage explicitly.) (stream.h, sfile.c, sfileno.c, stream.c)
+
+</pre><h3><a name="V3.29_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The obsolete files gcdefs.h and gsfile.c were still included in
+the fileset.
+ - A number of places didn't deal with null patterns properly (p_tile
+== 0). (gxdcolor.h, gspcolor.c, gxpcmap.c)
+ - The pattern tiling algorithm was numerically unstable, especially
+if the X/YStep vectors were close to the axes. (gxcolor2.h, gspcolor.c,
+gxpcmap.c)
+ - setdeviceparams checked the values of read-only byte array
+parameters incorrectly. (gsdparam.c)
+ - The statistics macros in gxfill.c didn't use DO_NOTHING when
+disabled. (gxfill.c)
+ - Changing the orientation of a device closed and reopened the
+device unnecessarily. (gsdparam.c)
+ - ioerrors occurring when writing command lists weren't reported
+properly. (gxclist.h, gxclist.c)
+ - Errors from device procedures weren't always propagated up to
+clients. (gsimage1.c, gsimage3.c, gxclip2.c, gxclist.c)
+ - Overflowing the fixed-point translation values in the CTM caused a
+floating point exception rather than a limitcheck. (gxmatrix.h, gscoord.c)
+ - charpath set the current point correctly, but didn't append a
+moveto element to the path. (This mostly affected Mathematica output.)
+(gzpath.h)
+ - Image devices mapped colors incorrectly. (gdevmem.c, gdevm16.c)
+ - On devices with color capability but fewer than 4 bits per pixel,
+color halftones didn't work (and could cause an arithmetic exception).
+(gxdither.c)
+ - Black-on-white memory devices didn't map colors properly.
+(gdevprn.h, gxdevice.h, gxdevmem.h, gdevmem.c, gdevm1.c, gsdevice.c)
+ - Memory devices with a non-zero origin in their initial matrix
+clipped the image improperly. (gsdevice.c)
+ - The Type 1 rasterizer state included a pointer into the middle of
+an object, confusing the garbage collector. (gstype1.h, gxfont1.h,
+gxtype1.h, gstype1.c, gxhint2.c)
+ - The band rasterizer could produce garbled output for images
+(including characters) on 64-bit architectures. (gxclread.c)
+ - Bounding boxes (for pathbbox and setbbox) could be slightly
+inaccurate. (gsmatrix.c)
+ - On 64-bit architectures, halftone tiles less than 16 bits wide
+were handled incorrectly. (gxclist.c)
+
+Adds an .IsPageDevice boolean device parameter (normally read-only).
+(gsdparam.c)
+
+Removes the library code for implementing the obsolete writeppmfile
+operator. (gswppm.c)
+
+Makes the default matrix (for initmatrix and defaultmatrix) a settable
+parameter in the graphics state. (gscoord.h, gzstate.h, gscoord.c,
+gsdevice.c, gsdparam.c)
+
+Makes the statistics returned by the memory manager more accurate.
+(gsmemory.h)
+
+Adds a compile-time flag to choose whether or not to force Type 1 hints to
+"big pixel" boundaries when oversampling. (gstype1.c)
+
+Changes the .PageCount device parameter back to PageCount, because the
+change broke some scripts. (gsdparam.c)
+
+Adds optimization for 90 degree rotated images with pure colors.
+(gximage.h, gsimage.c, gsimage1.c)
+
+Changes the band rasterizer so that replicated halftone tiles are written on
+the band list in unreplicated form. (gsbitops.h, gxcldev.h, gsbitops.c,
+gxclist.c, gxclread.c, gxht.c)
+
+Changes the .HWBitsPerPixel device parameter to BitsPerPixel. (drivers.doc,
+language.doc, gdevcdj.c, gdevstc.c, gsdparam.c)
+
+</pre>
+
+<h2><a name="Version3.28"></a>Version 3.28 (beta) (2/13/95)</h2>
+
+<p>
+Another bug-fix beta release. The number of bugs being fixed in each of
+these sub-releases does exceed the number of new bugs introduced, but the
+latter number is discouragingly high.
+
+<h3><a name="V3.28_Documentation"></a>Documentation</h3><pre>
+Adds some information about handling VMS file attributes for files
+transferred by FTP. (use.doc)
+
+</pre><h3><a name="V3.28_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - unix-gcc.mak said the static linkage switch for SunOS was -Bstatic
+rather than -static. (unix-gcc.mak)
+ - Some dependency lists in gs.mak were out of date. (gs.mak)
+
+</pre><h3><a name="V3.28_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - markhint.ps didn't check for protected fonts. (markhint.ps)
+
+</pre><h3><a name="V3.28_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The cdj driver had a byte/char agreement problem. (gdevcdj.c)
+ - The cdj driver attempted to initialize a dynamic array.
+(gdevcdj.c)
+
+Removes the setting of InputAttributes and OutputAttributes from the H-P
+drivers, since this causes more problems than it solves. (gdevdjet.c)
+
+</pre><h3><a name="V3.28_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - makeoperator assigned incorrect attributes to operators. (bug
+introduced in 3.27) (opdef.h, iinit.c, iutil.c, zmisc.c)
+
+</pre><h3><a name="V3.28_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gs_makeimagedevice didn't set the caller's pointer to the newly
+created device. (bug introduced in 3.27) (gsdevice.c)
+ - There were still some mismatches between char * and byte * values.
+(gsdparam.c)
+ - The halftone replication algorithm could produce inappropriately
+large replicated masks. (gxht.c)
+ - stroke usually did the wrong thing for degenerate (single-point)
+subpaths. (gxstroke.c)
+
+</pre>
+
+<h2><a name="Version3.27"></a>Version 3.27 (beta)(withdrawn) (2/8/95)</h2>
+
+<p>
+Yet another bug-fix beta release. This release had so many serious problems
+(the most serious being at least one changed file that the release tool
+failed to include in the fileset) that it was withdrawn less than a day
+after it was issued.
+
+<h3><a name="V3.27_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The NEWS for 3.26 didn't mention the fact that the stdxxx stream
+interface used by MS Windows, OS/2, and Macintosh implementations had
+changed. (NEWS)
+ - The file public.doc wasn't distributed with the previous fileset.
+
+Brings the NeXTSTEP documentation up to date for NeXTSTEP releases 3.2 and
+subsequent. (make.doc)
+
+</pre><h3><a name="V3.27_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - Some dependency lists in gs.mak were out of date. (gs.mak)
+ - A 'fi;' was missing in the Unix install script. (unix-end.mak)
+ - There was no VMS build script for the PDF options. (vms.mak)
+ - The VMS script used CC_QUALI instead of CC_QUAL in several places.
+(vms.mak)
+
+</pre><h3><a name="V3.27_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2epsi's usage prompt referred to "pstoepsi". (ps2epsi)
+ - ps2epsi set PATH and LOCALPATH unilaterally. (ps2epsi)
+
+Comments out the sample usage line at the end of viewjpeg.ps. (viewjpeg.ps)
+
+</pre><h3><a name="V3.27_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The fax and tiff drivers didn't free all of their working storage.
+(gdevtfax.c)
+
+Adds user-contributed drivers for the BJC 600 and ESC/P printers.
+(devs.mak, gdevcdj.c)
+
+</pre><h3><a name="V3.27_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Some necessary casts of string parameters to (const byte *) were
+omitted. (gp_mswin.c, gp_os2.c)
+
+Adds the psmono and bit* drivers, and removes the p*m drivers, in the OS/2,
+32-bit MS-DOS, and 32-bit Windows configurations. (bcwin32.mak, os2.mak,
+watc.mak)
+
+</pre><h3><a name="V3.27_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The Fontmap for Ultrix had somehow become slightly incorrect.
+(Fontmap.Ult)
+
+Removes the font file names from the dependency lists in cfonts.mak. This
+makes cfonts.mak readily usable with any set of fonts, but it also means
+that it will always run font2c, rather than being able to avoid this if the
+.c file is up to date. (cfonts.mak)
+
+</pre><h3><a name="V3.27_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Some operators could fail if the stdxxx streams weren't currently
+open. (files.h, zfileio.c, ziodev.c)
+ - setpagedevice didn't handle unrecognized keys properly.
+(gs_setpd.ps)
+ - The value returned for the HWColorMap device parameter was
+allocated incorrectly, confusing the garbage collector. (iparam.c)
+ - Typing ahead at the &gt;&gt;showpage&lt;&lt; prompt no longer caused all
+further pages to be processed without stopping. (gs_init.ps)
+ - Setting DEVICEWIDTHPOINTS or DEVICEHEIGHTPOINTS on the command
+line caused a typecheck. (gs_init.ps)
+ - The garbage collector didn't handle halftone threshold arrays
+properly. (zht2.c)
+ - setdefaulttimeouts caused an error on Level 2 systems.
+(gs_lev2.ps)
+ - cvi and cvr weren't equivalent to token followed by a type check.
+(iscan.h, iscannum.h, iscan.c, iscannum.c, ztoken.c, ztype.c)
+ - In Level 2 systems, image and colorimage didn't allow 12 bits per
+sample. (zpaint.c)
+ - If debugging was enabled, the garbage collector printed spurious
+error messages about the allocator objects not being in a chunk. (ialloc.c)
+ - restore didn't reset the count of operator procedures, so the
+operator procedure table could fill up. Fixing this required splitting the
+op_array_table into a global table and a local table. (opdef.h, iinit.c,
+iutil.c, zmisc.c)
+ - .forgetsave could leave a dangling pointer in the memory manager,
+causing an access error. (ialloc.c, isave.c)
+ - Freed objects weren't always marked as freed, which could confuse
+the memory validator. (ialloc.c)
+ - .forgetsave didn't mark inner chunk headers as free, leading to
+access errors. (isave.c)
+
+Changes the representation of operator procedures so that they point
+directly to their definition in the op_array_table. (iref.h, opdef.h,
+idebug.c, igc.c, igcref.c, interp.c, zmisc.c)
+
+Removes .makeglobaloperator. (zmisc.c)
+
+Adds patches to discard some common garbage produced by H-P-oriented
+applications and drivers. (gs_init.ps)
+
+Changes the &gt;&gt;showpage&lt;&lt; prompt so that if the input reaches EOF, the
+interpreter still stops after the next &gt;&gt;showpage&lt;&lt;, rather than processing
+all subsequent pages. This is a consequence of the bug fix that
+automatically reopens the stdxxx files.
+
+Adds an optional dictionary parameter for the RunLengthEncode/Decode
+filters, to allow specifying EndOfData. The default is true. (zfilter.c)
+
+Adds ByteTranslateEncode/Decode filters. (zfilter2.c)
+
+</pre><h3><a name="V3.27_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The K &gt; 0 option of the CCITTFaxDecode filter switched back to 2-D
+encoding if an output buffer boundary fell in the middle of a 1-D line, and
+signalled an error if an input buffer boundary fell in the middle of an EOL.
+(scfd.c)
+
+Adds an EndOfData flag to the RunLengthEncode/Decode filters. If true, RLE
+generates 128 as EOD, and RLD recognizes it; if false, RLE does not mark
+EOD, and RLD ignores 128. (srlx.h, gxclist.c, gxclread.c, sfilter1.c)
+
+Adds ByteTranslateEncode/Decode streams. (sbtx.h, sfilter2.c)
+
+</pre><h3><a name="V3.27_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There were some mismatches between char * and byte * values.
+(gsdparam.c)
+ - Failure to round a scaling coordinate caused one-for-one
+black-and-white images to render slower than they should. (gsimage.c)
+ - Setting PageSize without setting HWResolution could cause an
+invalid memory access. (gsdparam.c)
+ - The garbage collector didn't handle halftone threshold arrays
+properly. (gxht.h, gsht.c, gsht1.c)
+
+</pre>
+
+<h2><a name="Version3.26"></a>Version 3.26 (beta) (2/1/95)</h2>
+
+<p>
+Yet another bug-fix beta release, still not ready for public release.
+
+<h3><a name="V3.26_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The description of device properties had gotten out of sync with
+the code. (language.doc)
+
+Splits off documentation specific to the Aladdin (non-GNU) release into a
+separate file. (readme, public.doc, unix-end.mak)
+
+Adds a pointer to a collection of other free fonts (including some Cyrillic
+ones) available on the net. (public.doc)
+
+</pre><h3><a name="V3.26_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - On VMS systems with both VAX C and DEC C installed, the build script
+used VAX C rather than DEC C. (vms.mak)
+ - zfdecode.c didn't have a build rule. (gs.mak)
+ - Several macros in the makefile were used before they were defined.
+(gs.mak)
+ - Several macros in the makefile were used without being defined.
+(gs.mak)
+
+Replaces the gssetdev, gssetmod, and gsaddmod scripts with more variants of
+echogs. (echogs.c, gs.mak)
+
+</pre><h3><a name="V3.26_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - The ps2ascii shell script passed a -f flag to the shell, which not
+all shells recognize. (ps2ascii)
+
+</pre><h3><a name="V3.26_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Due to a typo in an initialization string, the H-P printers didn't
+reset the top margin to zero. (gdevdjet.c)
+
+Adds InputAttributes and OutputAttributes entries to the H-P drivers. (This
+should probably be generic to all printers.) (gdevdjet.c)
+
+Replaces the contributed Epson Stylus Color driver with a newer version.
+(devices.doc, gdevstc.c)
+
+</pre><h3><a name="V3.26_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - DEC C complained about 'abs' and 'exit' not being declared. (x_.h)
+ - gp_mswin.c and gp_os2.c wouldn't compile. (gp_mswin.c, gp_os2.c,
+ziodev.c)
+
+</pre><h3><a name="V3.26_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The default CIE rendering dictionary gave everything a magenta tint.
+(gs_lev2.ps)
+ - Changing HWResolution and PageSize in the same call of
+setpagedevice produced an incorrect HWSize. (gsdparam.c)
+ - .putdeviceparams didn't accept all the keys that .getdeviceparams
+returned. (gsdparam.c)
+ - The default handler for interrupt and timeout errors didn't push a
+current object (command) on the stack. (gs_init.ps)
+ - The garbage collector didn't handle strings larger than 64K
+properly. (iastate.h, ialloc.c, igcstr.c)
+
+Adds media matching and Policy consultation to the implementation of
+setpagedevice. (gs_setpd.ps)
+
+Adds a MaxGlobalVM system parameter. (zmisc2.c)
+
+</pre><h3><a name="V3.26_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxEncode filter could access a byte beyond the end of
+the allocated area. (scfe.c)
+ - The CCITTFaxDecode filter could get an ioerror if a buffer
+boundary fell in exactly the wrong place. (scfd.c)
+
+</pre><h3><a name="V3.26_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The garbage collector didn't trace colored halftones properly.
+(gzht.h)
+ - The garbage collector didn't relocate the bitmap pointers in
+halftone caches properly. (gzht.h, gxht.c)
+
+Adds the ability to transmit dictionaries through the param_list mechanism
+(specifically, as device parameters). This change is
+non-backward-compatible only for implementors of parameter lists, which only
+exist within the Ghostscript core. (gsparam.h, iparam.h, iparam.c)
+
+Removes the InitialMatrix device property. (gsdparam.c)
+
+</pre>
+
+<h2><a name="Version3.25"></a>Version 3.25 (beta) (1/24/95)</h2>
+
+<p>
+Yet another bug-fix beta release. There are still at least half a dozen
+significant known bugs to be fixed before a public release.
+
+<h3><a name="V3.25_Documentation"></a>Documentation</h3><pre>
+Notes that on Unix systems, one should not edit 'makefile', but should edit
+the individual subfile and run tar_cat. THIS IS A NON-BACKWARD-COMPATIBLE
+CHANGE. (make.doc)
+
+Adds information on the Macintosh implementation. (readme)
+
+</pre><h3><a name="V3.25_Procedures"></a>Procedures</h3><pre>
+Fixes bugs:
+ - make clean failed on Unix systems where rm -f requires at least one
+file name. (gs.mak)
+ - math_.h was omitted from many dependency lists. (gs.mak)
+
+</pre><h3><a name="V3.25_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The X Windows and MS Windows draw-line routines couldn't possibly
+produce sufficiently correct output (since the interface only provides integer
+coordinates). (gdevx.c, gdevwddb.c)
+
+In response to patent-related actions by Unisys and CompuServe, removes the
+GIF driver. (*.mak)
+
+Changes dci_std_color (and std_device_std_color_* and prn_device_std_*) so
+that if the number of bits per pixel is 32, the device is defined as CMYK
+rather than RGB. (gxdevice.h)
+
+Removes the tseng8 device, which is no longer useful. (devs.mak, gdevsvga.c)
+
+Adds pseudo-alpha support to the SVGA drivers, via the TextAlphaBits and
+GraphicsAlphaBits device parameters. (gdevsvga.h, gdevsvga.c)
+
+Adds a user-contributed driver for the Epson Stylus Color printer. (devs.mak,
+gdevstc.c, devices.doc)
+
+</pre><h3><a name="V3.25_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build scripts had gotten out of sync (again). (vms*.mak)
+
+</pre><h3><a name="V3.25_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The emulator name array was incorrectly declared const in one place.
+(gs.c)
+ - A closed file could incorrectly appear to be 'eq' to another file
+(open or closed). (iutil.c)
+ - If %stdin/%stdout/%stderr was ever closed, it couldn't be
+reopened. (gs_btokn.ps, gs_init.ps, files.h, zfile.c, zfileio.c, zfilter.c,
+zfproc.c, ziodev.c)
+
+Changes (almost) all the operator routines to 'static'. (z*.c)
+
+</pre><h3><a name="V3.25_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The raster value for replicated tiles in the halftone cache was
+incorrect, causing unaligned memory accesses. (gxht.c)
+ - stroke and strokepath could produce slightly inaccurate output
+(leading to slight visible anomalies) as a result of stroke adjustment.
+(gxstroke.c)
+ - Attempting to draw an arc with zero radius could cause a numeric
+exception. (gspath1.c)
+ - Setting the Orientation of a device to null resulted in actually
+setting it to a random value. (gsdparam.c)
+ - charpath, stringwidth, and cshow attempted to remap the current
+color unnecessarily. (gschar.c)
+
+Adds the ability to trace calls on the sqrt function (and possibly other math
+functions in the future.) (math_.h, gsmisc.c)
+
+Adds additional interrupt checks in the banding code. (gxclist.c, gxclread.c)
+
+</pre>
+
+<h2><a name="Version3.24"></a>Version 3.24 (beta) (1/17/95)</h2>
+
+<p>
+This was supposed to be a public release, but too many bugs showed up in 3.23,
+so this is another bug-fix beta release. This is the first release with a
+working PDF reader.
+
+<h3><a name="V3.24_Documentation"></a>Documentation</h3><pre>
+Notes that Solaris requires using installbsd instead of install. (make.doc)
+
+</pre><h3><a name="V3.24_Procedures"></a>Procedures</h3><pre>
+
+Changes 'make mostlyclean' so that it doesn't delete the Ghostscript
+executable (but deletes everything else that 'make clean' does). (gs.mak)
+
+Changes the link list generator so it eliminates duplicate library requests.
+(genconf.c)
+
+Factors the interpreter further so as to include less unnecessary PostScript
+support in the PDF interpreter. (gs.mak, zpath.c, zpath1.c)
+
+Adds a printout of the available language interpreters to the -h message.
+(genconf.c, gs.c, iinit.c, gs.mak)
+
+</pre><h3><a name="V3.24_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The alternate X drivers used a cast in an initializer, causing a
+compilation error on some platforms. (gdevxalt.c)
+
+Adds a driver for the LaserJet IIID, including duplex printing if specified by
+the Duplex page device parameter. (gdevdjet.c)
+
+Adds Orientation to the bit device. (gdevbit.c)
+
+</pre><h3><a name="V3.24_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - There was an extraneous pfen-&gt; in the NT file system module, causing
+a compilation error. (gp_ntfs.c)
+ - The DLL code referred to an obsolete symbol a_foreign. (gsdll.c)
+ - The VMS build scripts omitted the LaserJet 4 driver. (vms-*.mak)
+ - The VMS build scripts had several other minor errors. (vms.mak)
+
+</pre><h3><a name="V3.24_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Defining a font alias in global VM with a name that was a string in
+local VM caused an error. (gs_fonts.ps)
+ - The font compiler referred to an obsolete symbol a_foreign.
+(font2c.ps)
+
+</pre><h3><a name="V3.24_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - There was an extraneous '#' before an extern declaration.
+(gsmain.c)
+ - The interpreter could (incorrectly) attempt to expand the e-stack.
+(istack.h, interp.c, istack.c)
+ - zfproc.c called memcpy but didn't include memory_.h. (zfproc.c)
+ - A garbage collection occurring within a 'save' would often smash
+memory. (igc.c)
+ - If the last character returned by the procedure of a procedure-based
+filter was \r, readline could get an endless loop. (zfileio.c)
+ - Saving a change to a ref member of a structure confused the garbage
+collector. (isave.h, isave.c, zdict.c)
+ - The -Zu debugging printout could cause an access error under rare
+circumstances. (isave.c)
+ - Save objects could get allocated in global VM, causing dangling
+references. (zvmem.c)
+ - The vmsave object created by the interpreter for a save didn't get
+freed properly if the memory manager created an invisible save level, which
+could cause the next garbage collection to crash. (zvmem.c)
+ - 'run' always printed an error message, rather than letting the
+top-level control loop do it. (gs.c, gs_init.ps)
+
+Adds support for duplex devices. (gxdevice.h, gsdparam.c, gs_statd.ps,
+gs_setpd.ps)
+
+Adds the beginnings of support for CID-keyed fonts. (gs_cidfn.ps)
+
+Changes the format of the stack dump printed for errors, to make it easier to
+read. (gs_init.ps)
+
+</pre><h3><a name="V3.24_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - The .local/global allocation operators always allocated in system
+VM. (zsysvm.c)
+ - setpage[params] caused an error. (gs_lev2.ps)
+ - If an error occurred during a cshow or (x|y|xy)show, the interpreter
+freed the enumerator twice. (zchar.c, zchar2.c)
+
+Changes setpageparams so that orientation = 0 means portrait. This is not
+compatible with AGFA's convention for roll-feed devices, but it is compatible
+with the more common cut-sheet printers. (gs_statd.ps)
+
+Adds meaningful values for the Emulator resource. (gsmain.c, gs_res.ps)
+
+Makes -Z? validate the state of memory before and after save and restore.
+(ialloc.h, igc.h, ialloc.c, igc.c, ilocate.c, zvmem.c)
+
+</pre><h3><a name="V3.24_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - The Unix install script didn't install the PDF files if they were
+present. (unix-end.mak)
+ - PDF to PostScript conversion didn't work at all. (It still doesn't
+work very well.) (pdf_2ps.ps, pdf_main.ps)
+ - Images with an Indexed color space and no Decode entry caused an
+error. (pdf_draw.ps)
+ - The 'Page &lt;n&gt;' messages were printed even if QUIET was set.
+(pdf_main.ps)
+
+Changes the interpreter so that when it encounters an unknown operator, it
+prints an error message and continues, rather than signalling an error.
+(pdf_base.ps)
+
+Makes F a synonym for f if there is nothing on the operand stack, to
+compensate for a bug in some Adobe software. (pdf_base.ps)
+
+Changes pdfgetpage so it uses 1-origin rather than 0-origin indexing. THIS IS
+A NON-BACKWARD-COMPATIBLE CHANGE. (pdf_main.ps)
+
+</pre><h3><a name="V3.24_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The Group 3 2-D and Group 4 encoders produced incorrect output if a
+scan line beginning with a black pixel was followed by a scan line beginning
+with a white pixel. (scfe.c)
+ - A SubFileDecode filter with a count of 1 and a non-empty EOD string
+would smash memory. (sfilter1.c)
+
+Updates the DCT filters so they will work with the latest version (5a) of the
+IJG library. (*.mak, jpeg.mak, sjpegerr.c)
+
+</pre><h3><a name="V3.24_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - A call with integer parameters to a procedure with floating point
+arguments didn't work on non-ANSI compilers. (gsimage.c)
+ - Arcs could get turned into polygons if the scaling values in the CTM
+were very large and the radius was (in user space coordinates) very small.
+(gspath.c)
+ - The current point was defined when a BuildChar procedure was called.
+(This bug was documented as fixed in version 2.2!) (gschar.c)
+
+Adds support for Orientation and Duplex page device parameters, for those
+devices that support these. (gdevprn.h, gxdevice.h, gsdevice.c, gsdparam.c)
+
+</pre>
+
+<h2><a name="Version3.23"></a>Version 3.23 (beta) (1/5/95)</h2>
+
+<p>
+This is almost entirely a bug fix release. It also includes a largely working
+PDF reader. This is intended as the beta test release for the next public
+release.
+
+<h3><a name="V3.23_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - COPYLEFT, COPYING, NEWS, PUBLIC, README, and the standard Fontmap
+were omitted from the 3.22 fileset.
+
+Documents the use of the -oldc switch to work around a compiler crash on
+the DECstation.
+
+Expands and clarifies the documentation for building the DesqView/X version
+with djgcc. (make.doc)
+
+Adds documentation on the "600x300" H-P inkjet printers, explaining why
+this alleged higher resolution is not available. (devices.doc)
+
+Adds to the PUBLIC license a warning that it is not a GNU License, and a
+requirement to include a copy of or a pointer to the License in any written
+material. (PUBLIC)
+
+Documents the fact that Ghostscript *does* attempt to look up files in the
+current directory first. (use.doc)
+
+</pre><h3><a name="V3.23_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - In VMS.MAK, .JPEG should have been changed to .JPEG-5 in a few
+places. (vms.mak)
+
+Adds the pjxl300 driver to all configurations that include the other color
+DeskJet drivers. Replaces pjet and pjetxl with pj and pjxl. (*.mak)
+
+Makes 'run' recognize PDF files if the PDF reader is included.
+(pdf_main.ps)
+
+</pre><h3><a name="V3.23_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - viewjpeg.ps needed the test for languagelevel = 2 at the
+beginning of the file. (viewjpeg.ps)
+ - prfont.ps used 'min', which isn't a standard PostScript operator.
+(prfont.ps)
+ - prfont.ps created Encoding vectors that weren't 256 elements
+long. (prfont.ps)
+
+Adds the gsdj500 script to the installation list. (unix-end.mak)
+
+Changes the Unix "line printer" shell scripts to add the date to the page
+header. (gsbj, gsdj, gsdj500, gslj)
+
+Changes ansi2knr so that it will work properly on systems where the ctype
+macros don't handle 8-bit characters correctly. (ansi2knr.c)
+
+</pre><h3><a name="V3.23_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Some compilers don't allow casts in initialization expressions.
+(gdevx.c, gdevxalt.c)
+ - The cdj drivers didn't initialize the color_info structure
+properly. (gdevcdj.c)
+
+Adds another alternate X Windows driver, x11mono, that is a black-and-white
+device. (devs.mak, gdevxalt.c)
+
+Adds a user-contributed driver for the Apple Imagewriter LQ. (devs.mak,
+gdevadmp.c)
+
+</pre><h3><a name="V3.23_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS MODULES.LIS file had gotten out of sync with the makefile
+(again); GDEVABUF and GSBITOPS were missing. (modules.lis)
+ - The VMS script file had gotten out of sync with the makefile
+(again). (vms.mak)
+ - The MS Windows platform code didn't recognize Windows 95 (Windows
+4.0) as equivalent to Windows NT. (gp_mswin.c)
+ - File name enumeration didn't work on OS/2 or win32. (gp_ntfs.c,
+gp_os2.c)
+ - -sOutputFile= didn't work under MS Windows. (gp_mswin.c)
+
+Changes the SCO Unix direct frame buffer driver so it generates in-line
+instructions to access the frame buffer, for a dramatic speed improvement.
+(gdevpcfb.h, gdevsco.c)
+
+</pre><h3><a name="V3.23_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - If a font couldn't be found in the Fontmap, a recursion loop
+sometimes occurred. (gs_fonts.ps)
+ - Aliases for global fonts weren't automatically created as global,
+possibly leading to a recursion loop. (gs_dps1.ps, gs_fonts.ps)
+ - If a font was loaded into global VM within an inner save, the restore
+deleted it from FontDirectory but not from SharedFontDirectory, causing a
+possible recursion loop. (gs_dps1.ps, gs_fonts.ps, idict.h, idict.c, zdict.c)
+
+Further improves the algorithm for substituting for unknown fonts.
+(gs_fonts.ps)
+
+</pre><h3><a name="V3.23_Interpreter_PostScript"></a>Interpreter (PostScript)</h3><pre>
+
+Fixes bugs:
+ - zcontrol.c had an assignment of const char * to const byte *,
+which some compilers don't like. (zcontrol.c)
+ - Setting an Indexed color space based on a CIE space caused an
+attempt to free a random block of memory. (zcsindex.c)
+ - Some compilers don't like mixing conditionals and casts in
+initialization expressions. (iref.h)
+ - Some calculations of table sizes for string garbage collection
+didn't work if sizeof(long) != 4, leading to smashed strings. (iastate.h,
+ialloc.c, igcstr.c)
+ - Strings longer than about 7000 bytes smashed their chunk header
+and confused the garbage collector. (ialloc.c)
+ - Some compilers needed iccfont.c to include strimpl.h.
+(iccfont.c)
+ - The obsolete file zcspace2.c was still included in the fileset.
+ - If the command line included any @-files that required searching
+the library path, a limitcheck would occur. (zfile.c)
+ - The insideness testing operators caused a memory access error,
+because the procedure vector hadn't been updated to provide a default
+get_alpha_bits procedure. (zupath.c)
+ - gcheck didn't check for stack underflow. (zvmem2.c)
+ - cleardictstack could fail to clear the dictionary stack if the
+stack had overflowed into additional blocks. (zdict.c)
+ - If the '-' switch was selected, resources weren't released
+properly on exit. (gs.c)
+ - Setting a Pattern color space based on a CIE space caused an
+invalid memory access. (zcsindex.c)
+ - The garbage collector didn't treat refs properly on machines with
+short ints. (igcref.c)
+ - Operators with more than 16 arguments could break the
+interpreter. (interp.h, iinit.c, interp.c)
+ - save/restore didn't restore the setting of the current allocator
+VM (local/global). (isstate.h, isave.c)
+ - stdpre.h declared exit as an extern, instead of letting gsmain.c
+declare it. (stdpre.h, gsmain.c)
+ - gs.c used fputs to print help messages rather than fprintf.
+(gs.c)
+ - Interrupts failed to re-execute the operation that was
+interrupted. (interp.c)
+ - Low-resolution CMYK devices didn't use separate screens for each
+color plane as the default. (gs_init.ps)
+ - filterdict wasn't getting undef'ed at the end of initialization.
+(gs_init.ps)
+ - gstate operations were broken (bug introduced in 3.02).
+(zdevice2.c)
+ - resourceforall didn't remove the resource dictionary from the
+dictionary stack when calling the client-supplied procedure. (gs_res.ps)
+ - currentcolor with an Indexed color space returned a real rather
+than an integer. (zcolor2.c)
+ - setshared / setglobal left the stack in an unobvious state if
+they were given a non-Boolean argument. (gs_dps1.ps)
+ - sethalftone followed by currenthalftone returned an invalid value.
+(zht2.c)
+ - Empty strings produced spurious garbage collector error messages.
+(gsstruct.h, scommon.h, igc.c, igcstr.c, iname.c)
+ - The garbage collector didn't trace Separation color spaces properly.
+(gscsepr.c)
+
+Changes defineresource so that it does not, by default, make instances
+read-only. (gs_res.ps)
+
+Adds .{local,global}{array,dict,packedarray,string} operators for creating
+objects in a specific VM space. (zsysvm.c, gs_dps1.ps)
+
+Adds definitions of setpage and setpageparams to statusdict. (gs_setpd.ps,
+gs_statd.ps)
+
+Alleviates some performance problems in the garbage collector. (igc.c)
+
+</pre><h3><a name="V3.23_Interpreter_PDF"></a>Interpreter (PDF)</h3><pre>
+
+Fixes bugs:
+ - PDF files that used filters with parameters caused a typecheck
+error because the arguments to 'filter' were reversed. (pdf_base.ps)
+ - The (undocumented) PDF 1.1 ability to specify link and annotation
+destinations indirectly was not supported. (pdf_main.ps)
+ - The (undocumented) PDF ability to specify a null page in a link
+destination was not supported. (pdf_main.ps)
+ - The PDF encodings weren't loaded properly in a system with both
+PS Level 2 and PDF features. (gs_res.ps, gs_init.ps)
+ - If the next line after a stream keyword was blank, the line
+wasn't skipped, which matters for binary data. (pdf_base.ps)
+ - A Q operator with no matching q operator caused an error.
+(pdf_draw.ps)
+ - The text position wasn't preserved across a fill or stroke
+operator. (gs_pdf.ps, pdf_draw.ps)
+ - Embedded Type 3 fonts didn't work. (pdf_base.ps, pdf_draw.ps,
+pdf_main.ps)
+ - Masked images with no Decode value had their polarity inverted.
+(pdf_draw.ps)
+ - Embedded Type 1 fonts referenced from within a stream didn't
+work. (pdf_font.ps)
+
+Changes the PDF code so that it automatically recognizes PDF files as such.
+(pdf_main.ps)
+
+Splits out the PixelDifference filters as a separate "feature". (gs.mak)
+
+</pre><h3><a name="V3.23_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - Closing the primary input stream caused an invalid memory access.
+(stream.c)
+ - Increasing the size of a buffer within a save resulted in a
+dangling reference after the restore. (files.h, sfilter.h, zfile.c,
+zfilter.c)
+ - The garbage collector didn't properly trace streams that referenced
+strings directly. (stream.h, stream.c, ziodev.c)
+
+</pre><h3><a name="V3.23_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - An extraneous \ upset some compilers. (gdevabuf.c)
+ - Uncolored Patterns that completely filled their bounding box
+caused an invalid memory access. (gspcolor.c)
+ - If a color image required clipping, black or white pixels might
+be rendered with incorrect (random) colors. (gxcpath.c)
+ - Reference counts for color spaces were sometimes set too high, so
+they would only be freed by restore or garbage collection. (gscolor.c)
+ - The character cache could get confused if the Encoding for the
+character wasn't a name. (gschar.c)
+ - Character outlines were always rendered with flatness = 0,
+causing very bad performance for large characters. (gzstate.h, gschar.c,
+gsimage.c, gxfill.c, gxstroke.c)
+ - If a device (presumably uninitialized) had a
+color_info.num_components of zero, an invalid memory access could occur.
+(gsdparam.c)
+ - Intersecting clipping paths that are not both rectangular didn't
+properly set the outer box of new clipping path, leading to unnecessary
+computation. (gxcpath.h, gxacpath.c, gxcpath.c)
+ - A call passed false instead of NULL. (gschar.c)
+ - On machines where sizeof returns a long, genarch.c failed.
+(genarch.c)
+ - xfonts were consulted, incorrectly, even for stroked characters.
+(gxccman.c)
+ - gstate/currentgstate/setgstate didn't work properly. (gsline.c,
+gsstate.c)
+ - On CMYK devices needing halftoning, colors with C = M = Y were
+always converted to gray shades. (gxcmap.c)
+ - Isolated horizontal lines, or the horizontal edges of rectangles,
+could get drawn with one or both end pixels missing. (gxfill.c)
+
+Changes the character cache back so it oversamples characters at small
+sizes. (gschar.c)
+
+Changes all occurrences of (void)x to discard(x), and defines discard in
+stdpre.h as a cast to void, to make it possible to pacify compilers that
+don't accept this construct for some kinds of x. (gpcheck.h, stdpre.h,
+store.h, gdevmswn.c, gp_mswin.c, gscoord.c, gxclread.c, igc.c, sfile.c,
+sfileno.c, zcie.c, zht2.c, ziodev.c, zmisc1.c)
+
+Increases the size of the halftone cache on large-memory machines from 35K
+to 100K. This substantially improves halftoning performance at higher
+resolutions. (gxht.c)
+
+</pre>
+
+<h2><a name="Version3.22"></a>Version 3.22 (beta) (11/30/94)</h2>
+
+<p>
+This is primarily a bug fix release. It also includes limited anti-aliased
+graphics capability. This release was not distributed to the public.
+
+<h3><a name="V3.22_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The definition of ghost_h was misplaced, so changes in it or its
+antecedents didn't force recompilation of its dependents. (gs.mak)
+
+Actually implements the -Z+ switch, for forcing small stack blocks.
+(interp.c)
+
+Makes the -dSAFER switch disable the %pipe syntax for file names, even for
+reading. (gs_init.ps)
+
+</pre><h3><a name="V3.22_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The dfax drivers incorrectly set EncodedByteAlign to false.
+(gdevdfax.c)
+ - softwareValue and dateTimeValue were declared as byte rather than
+char. (gdevtfax.c)
+
+</pre><h3><a name="V3.22_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS DEC C compilers declare delete in unixio.h, and doesn't
+declare unlink anywhere. (stdio_.h)
+ - The VMS compilers declare malloc and free in stdlib.h, which
+wasn't being included in malloc_.h. (malloc_.h)
+ - The SCO Unix C compiler needs both &lt;sys/time.h&gt; and &lt;time.h&gt;.
+(time_.h)
+ - The VMS compilers declare abs in stdlib.h, which wasn't being
+included anywhere. (gshtscr.c)
+ - The definition for A4 paper in VMS-AXP.MAK was incorrect.
+(vms-axp.mak)
+
+Renames VMS-AXP.MAK as VMS-DECC.MAK, with some changes that make it
+appropriate for DEC C on both VAX and AXP platforms. (vms-axp.mak =&gt;
+vms.decc.mak)
+
+</pre><h3><a name="V3.22_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - gs_kanji.ps got an invalidaccess error. (gs_kanji.ps)
+
+</pre><h3><a name="V3.22_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - An off-by-1 test in the roll operator caused it to smash the
+stack if the operand stack had overflowed into additional blocks.
+(zstack.c)
+ - The default CIE color rendering dictionary didn't assume a
+reasonable intermediate (XYZ) space. (gs_lev2.ps)
+ - CIE color mapping tables weren't traced properly by the garbage
+collector. (gscie.h, gscie.c, zcie.c)
+ - If the very last character of a file was a ^M, the scanner
+(incorrectly) signaled a syntaxerror. (iscan.c)
+ - If an operator could return both a typecheck and a
+stackunderflow, it always returned a stackunderflow, which doesn't match
+the behavior of Adobe interpreters. (opcheck.h, idparam.c, interp.c,
+iutil.c, z*.c)
+ - astore, dictstack, and execstack could return a spurious
+invalidaccess error (or fail to detect an invalid access) if the operand
+stack had overflowed into additional blocks. (istack.c)
+ - The garbage collector didn't relocate pointers to names! (Bug
+introduced in 3.20.) (iname.h)
+ - If the dictionary stack overflowed into additional blocks, the
+cached value pointer for a name could get set incorrectly, and also not get
+relocated by the garbage collector. (idict.c)
+ - If the dictionary stack overflowed into additional blocks, the
+post-GC fixup of cached value pointers in names could cause an addressing
+error. (igc.c)
+ - With the -Z? switch set, the garbage collector could incorrectly
+report that objects or strings weren't in any chunk. (igc.c)
+ - &lt;&lt; /a 1 /a 2 &gt;&gt; /a get gave the value 2 rather than 1.
+(gs_init.ps)
+ - Numbers in binary object sequences and encoded number arrays
+didn't work properly on machines where sizeof(short) != 2 or sizeof(long)
+!= 4. (ibnum.c)
+ - The put operator for dictionaries allowed null as a key.
+(idict.h, idict.c)
+ - &gt;&gt; didn't give an error if there were an odd number of values on
+the stack above the next mark. (gs_init.ps)
+ - Operations that explicitly freed ref objects (setting a CIE
+colorspace, resizing a dictionary, popping a block off a stack) could
+corrupt storage. (ialloc.c)
+ - The -Z@ switch, which fills freed blocks with a recognizable bit
+pattern, could incorrectly overwrite freed blocks in previous save levels,
+causing invalid memory accesses. (ialloc.c)
+ - Since streams freed by a restore weren't marked as free, they
+could confuse the garbage collector and lead to invalid memory accesses.
+(zfile.c)
+ - If one of the built-in dictionaries overflowed during
+initialization, no error was reported -- entries were simply discarded.
+(iinit.c)
+ - If the level2.dev feature was combined with certain other
+features, the current languagelevel was 2 when some gs_*.ps files were
+loaded, causing them to load incorrectly. (gs_btokn.ps, gs_setpd.ps)
+ - If readline read a line that ended with only a CR (no LF)
+followed by an end-of-file, it incorrectly closed the stream. (zfileio.c)
+
+Adds a .cond operator, similar to the Lisp multi-arm conditional.
+(zcontrol.c)
+
+Adds a .makeglobaloperator operator, allowing the definition of operator
+procedures in local VM that turn into global operators, provided the save
+level is zero. (iref.h, opdef.h, iinit.c, interp.c, zmisc.c)
+
+Note: the fix for returning typecheck vs. stackunderflow requires that all
+operators (or other code) that uses return_error(e_typecheck) to indicate
+an incorrect object type on the operand stack must change this to
+return_op_typecheck(op), where op points to the operand. THIS IS A
+NON-BACKWARD-COMPATIBLE CHANGE.
+
+Implements string array and name array parameters for parameter lists.
+(gsparam.h, iparam.c)
+
+Brings filterdict inside the INITIAL_DICTIONARIES conditional. (iinit.c)
+
+Adds a .currentscreenlevels operator that returns the number of
+distinguishable halftone levels. (zht.c)
+
+</pre><h3><a name="V3.22_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The 2-D case of CCITTFaxDecode could get confused by an input
+data buffer boundary that fell immediately after a horizontal code.
+(scfd.c)
+ - The LZW decoder didn't detect invalid data unless DEBUG was
+selected at build time. (slzwd.c)
+
+</pre><h3><a name="V3.22_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The clipping region accumulator could refer to a clipping
+rectangle even after it had been freed. (No effect on execution unless the
+-Z@ switch was selected.) (gxacpath.c)
+ - setbbox expanded the bounding box, but didn't place a limit on
+further path elements, if the current path wasn't empty. (gsdps1.c)
+ - setbbox didn't make sufficient allowance for rounding.
+(gsdps1.c)
+
+Implements the ProcessColorModel parameter (read-only) for all devices.
+(gsdparam.c)
+
+Adds a gs_currentscreenlevels procedure that returns the number of
+distinguishable halftone levels. (gsht.c)
+
+</pre>
+
+<h2><a name="Version3.21"></a>Version 3.21 (beta) (11/17/94)</h2>
+
+<p>
+This is primarily a bug fix release. It also includes a substantial
+improvement in the Type 1 font hinting algorithms. This release was not
+distributed to the public.
+
+<h3><a name="V3.21_Documentation"></a>Documentation</h3><pre>
+Fixes bugs:
+ - The `man' page referred to gnu.ghostscript.bug rather than
+comp.lang.postscript. (gs.1)
+
+Documents the special entries in operator definition tables that allow
+switching dictionaries. (opdef.h)
+
+</pre><h3><a name="V3.21_Procedures"></a>Procedures</h3><pre>
+
+Moves the definition of JSRCDIR to the individual platform makefiles, to
+make it easier to change on platforms that don't have file links. (*.mak)
+
+</pre><h3><a name="V3.21_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ansi2knr didn't recognize that a line ending with } couldn't be a
+function definition. (ansi2knr.c)
+ - ps2epsi always returned an empty bounding box. (ps2epsi,
+ps2epsi.bat)
+
+</pre><h3><a name="V3.21_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The bitrgb device had an invalid depth of 3. (gdevbit.c)
+
+Replaces the color mapping code in the X driver with a much faster
+algorithm, courtesy of Tim Theisen. (gdevx.h, gdevx.c, gdevxini.c)
+
+</pre><h3><a name="V3.21_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - Two variable names were misspelled. (gdevpm.c, gp_mswin.c)
+ - It wasn't possible to compile a non-DLL configuration under OS/2.
+(os2.mak)
+ - Compilation under Microsoft C/C++ 8.0 gave errors. (gp_mswin.h,
+gp_mswin.c, gshtscr.c)
+
+Adds some more devices to the OS/2 makefile. (os2.mak)
+
+</pre><h3><a name="V3.21_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - wrfont.ps, and hence bdftops, didn't write out the FontType or
+PaintType. (Bug introduced since 2.6.1) (wrfont.ps)
+ - wrfont.ps omitted a 'begin' and 'end', causing -! or -| to be
+undefined when the font was loaded. (Bug introduced since 2.6.1)
+(wrfont.ps)
+
+</pre><h3><a name="V3.21_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - make_tasv_old called make_tasv_new with extra arguments.
+(store.h)
+ - currentcacheparams only returned 2 values instead of 3.
+(zfont.c)
+ - ustroke popped one element too many off the stack if a matrix was
+supplied. (zupath.c)
+ - inu[eo]fill popped one element too many off the stack.
+(zupath.c)
+ - The color rendering dictionary was initialized to null rather
+than a valid dictionary. (gs_lev2.ps)
+ - An invalid IODevice resource named "9" got created. (gs_res.ps)
+ - bytesavailable often caused an error rather than returning -1.
+(zfileio.c, stream.c)
+ - The insideness testing operators always returned true if the
+aperture was defined by a user path rather than a point. (zupath.c)
+ - If INITIAL_DICTIONARIES was defined in the makefile, the
+definition of the initial_dictionaries array was missing a comma.
+(iinit.c)
+ - Even if userdict appeared in INITIAL_DICTIONARIES, gs_init.ps set
+its maxlength to 200. (gs_init.ps)
+ - Setting a CIE color space left a garbage value on the stack.
+(zcie.c)
+ - If a file or filter was opened and then closed, opening a file
+subsequently within a 'save' could lead to a memory access error in the
+garbage collector. (zfile.c)
+ - Setting an Indexed or Separation color space could cause a crash
+either in the garbage collector or when printing out the e-stack.
+(icsmap.h, zcsindex.c, zcssepr.c)
+ - Invoking a filter with an invalid data source or sink could cause
+a memory access error (bug introduced in 3.20). (zfilter.c)
+ - Invoking stringwidth on a font whose BuildChar procedure did a
+save could cause a memory manager error or infinite loop, because
+stringwidth attempted to use an inapplicable shortcut. (gschar.c)
+ - The bounding box for rendering stroked Type 1 characters didn't
+take square caps and miter joins into account. (gs_type1.ps)
+ - Invoking filter with DCTDecode or DCTEncode could cause an
+addressing error if no dictionary argument was supplied. (zfdctd.c,
+zfdcte.c)
+ - The Generic resource, the Font resource, and half a dozen
+resources with no predefined instances all shared the same Instances
+dictionary. (gs_res.ps)
+ - The temporary null device allocated for stringwidth was never
+freed. (gschar.h, gschar.c, zchar.c)
+ - Internal operators, and structures that might be freed on stack
+unwinding, could "escape" from the e-stack. (zcontrol.c, ztype.c)
+ - makefont and scalefont didn't properly handle a font whose
+Encoding had been changed. (bfont.h, zfont.c, zfont2.c)
+ - Type 1 fonts with PaintType = 2 incorrectly checked for an xfont.
+(gxfont.h, gschar.c, gsfont.c, zchar1.c, zfont1.c, zfont2.c)
+ - Specifying a string argument with -d...=(...) or -d...=&lt;...&gt;
+would cause an invalidaccess error. (gs.c)
+ - The environment for encapsulated jobs didn't rebind quit to stop
+in userdict. (gs_lev2.ps)
+ - restore didn't deal properly with open files on the e-stack.
+(zvmem.c)
+ - Even with the '-' switch, Ghostscript would try to read ahead in
+the input stream rather than processing input character-by-character.
+(ziodev.c)
+ - If an error occurred with a unreadable dictionary on any stack,
+the standard error printer would get into an error loop and exit the
+interpreter. (gs_init.ps)
+ - The for_roots macro in igc.c used ap rather than mem as its
+second formal parameter. (This typo had no effect on the executable
+program.) (igc.c)
+ - If saving the stacks for an error caused a GC request, a value
+could get stored into an improper variable on the C stack, causing havoc.
+(interp.c)
+ - setdash checked to make sure that the distance array had read
+access; Adobe interpreters don't check this. (zgstate.c)
+ - The roots for gs_run_string and gs_interpret weren't registered
+properly, which could cause a dangling reference in the case of a restore
+whose save had been done earlier. (gsmain.c, interp.c)
+
+Adds an OpenOutputFile Boolean device parameter for printer devices; if
+true, the device opens the OutputFile at the time the device is opened,
+instead of waiting for the first showpage. This helps with synchronization
+when the OutputFile is a pipe. (gdevprn.h, gdevprn.c)
+
+Changes the BEGIN/END_OP_DEFS macros to require an explicit { and } at each
+use. (gsmain.c, interp.c, z*.c)
+
+Arranges things so that the operators that the interpreter handles
+specially are assigned the first N operator indices [internal change only].
+(interp.h, iinit.c, interp.c)
+
+Changes the operators max and min to .max and .min, to avoid conflicts with
+PostScript programs that use these names for variables and also use 'bind'.
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE from programs that depend on
+'bind' binding in these operators; however, we have also defined procedures
+max and min that just call the operators, which should take care of any
+ordinary code. (*.ps, zrelbit.c)
+
+</pre><h3><a name="V3.21_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The pfb_state pointer in the eexecDecode filter state wasn't
+marked as traceable for the garbage collector. (sfilter.h)
+ - The eexec decoding filter could access invalid memory or return
+garbage under some conditions. (Bug introduced in 3.12.) (zmisc1.c)
+ - The eexec decoding filter would incorrectly ask for more input if
+the output buffer was full. (seexec.c)
+
+</pre><h3><a name="V3.21_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Some compilers reserve the word 'try'. (gshtscr.c)
+ - Some compilers don't like line continuations (\) within a
+preprocessor macro formal parameter list. (gdevprn.h, gxdevice.h)
+ - Memory devices created with an inverted palette (0=white,
+1=black) interchanged white and black in fill operations. (gdevmem1.c)
+ - The 'bits' variable in mem_mono_copy_mono was unused on
+little-endian machines. (gdevmem1.c)
+ - Some garbage collector procedures were declared 'private'
+inconsistently. (gscie.c)
+ - The new anti-aliased text capability accidentally caused all
+characters to be oversampled. (gschar.c)
+ - Type 1 fonts with PaintType = 2 and StrokeWidth = 0 came out with
+many pixels missing because of oversampling. (gschar.c)
+ - Type 1 font stem hints were not being processed correctly.
+(gstype1.h, gxtype1.h, gstype1.c, gxhint2.c, gxhint3.c, gxpath.c)
+ - The tracing message for 9/7 composite fonts incorrectly
+identified them as 1/7 fonts. (gschar0.c)
+ - If a 1/7 or 9/7 composite font was a child of a non-modal font,
+the font number of the child font was computed incorrectly. (gschar0.c)
+
+Splits up the various memory devices into one file per depth [internal
+change only]. (gdevm*.c)
+
+</pre>
+
+<h2><a name="Version3.20"></a>Version 3.20 (beta) (10/31/94)</h2>
+
+<p>
+This version contains some support for a PDF interpreter; however, the PDF
+code itself is not ready for release yet. It also includes anti-aliased text
+capability. This release was not distributed to the public.
+
+<h3><a name="V3.20_Documentation"></a>Documentation</h3><pre>
+Notes that the FAQ has moved to smallo.ruhr.de:pub/ghost/gs.faq. (readme)
+
+Documents various implementation limits. (language.doc)
+
+</pre><h3><a name="V3.20_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - bcp.dev wasn't included in the list of dependencies for
+level1.dev. (gs.mak)
+
+Changes the printout of version numbers so that it is always A.BC,
+rather than A.B if C is zero. (gs.c, gs_init.ps)
+
+</pre><h3><a name="V3.20_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - font2c didn't correctly handle Metrics or Metrics2 dictionaries
+whose entries were arrays rather than scalars. (font2c.ps, ccfont.h,
+iccfont.c)
+ - font2c didn't handle CDevProc. (font2c.ps, ccfont.h, iccfont.c)
+ - genconf could get a stack overflow on small machines.
+(genconf.c)
+
+Changes mergeini.ps so it can take arguments on the command line specifying
+the input and output files. (mergeini.ps)
+
+Adds a gsdj500 shell script to parallel gsdj500.bat. (gsdj500)
+
+</pre><h3><a name="V3.20_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The X driver didn't mask dynamically assigned colors properly, so
+it could request the same color over and over again. (gdevx.c)
+
+Adds two alternate X Windows drivers, for helping debug drivers with other
+color models:
+ - x11alpha, an RGB device with 4-bit alpha capability (for
+ copy_alpha only);
+ - x11cmyk, a 1-bit-per-component CMYK device.
+(devs.mak, gdevxalt.c)
+
+Changes the left margin of the lj4dith driver to 0.26". (gdevcdj.c)
+
+</pre><h3><a name="V3.20_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - If &lt;sys/time.h&gt; didn't exist, time_.h didn't always include
+&lt;time.h&gt;. (time_.h)
+ - The OS/2 platform wouldn't compile. (gdevpm.c)
+ - The auxiliary VMS command files sometimes got blank lines
+inserted when going through EOL conversion. (vms.mak; delete gs_.com)
+ - The VMS makefiles didn't include the Level 1 operators in
+level1.dev. (vms.mak)
+ - The VMS gcc makefile didn't handle undefined DEVICE_DEVSn
+variables properly. (vms*.mak)
+ - The VMS makefiles didn't recognize DEVICE_DEVS{1,2,5,7}.
+(vms.mak)
+
+At the request of a Unix expert, changes all the Unix shell scripts to use
+exec gs ... "$@" rather than gs ... $*. (gsnd, gsbj, gsdj, gslj, gslp)
+
+Modifies the JPEG library so that it uses 4K less of the automatic data
+segment in 16-bit environments. (bcwin.mak, jpeg.mak, sjpeg.c, sjpegerr.c)
+
+Adds the bmp drivers back into the 16-bit MS Windows executable, since they
+will fit now. (bcwin.mak)
+
+</pre><h3><a name="V3.20_Fonts"></a>Fonts</h3><pre>
+
+Makes the font substitution algorithm recognize the word Roman as calling
+for a serif font. (gs_fonts.ps)
+
+</pre><h3><a name="V3.20_Interpreters"></a>Interpreters</h3><pre>
+
+Fixes bugs:
+ - The fix in 3.13 for the inexact function values at 0 didn't work.
+(zcontrol.c)
+ - Level 1 configurations referenced an undefined procedure
+gs_currenthalftone. (gsht.c, gsht1.c)
+ - Specifying any device properties (including -r and -g) on the
+command line caused an error. (gs_init.ps)
+ - The forward declaration of cfont_name_array_create was
+incorrect. (iccfont.c)
+ - save and restore could get called before the graphics state stack
+had been initialized properly. (gs_mex_e.ps)
+ - Some encodings weren't loaded properly. (gs.mak, gs_mex_e.ps,
+gs_mro_e.ps, gs_pdf_e.ps, gs_wan_e.ps)
+ - Zero-height images were allowed, but zero-width images
+weren't. (zpaint.c)
+ - Neither zero-width nor zero-height images popped their
+arguments from the operand stack. (zpaint.c)
+ - lib_file_fopen overwrote its file name argument, causing havoc
+with @-files. (gxiodev.h, gdevpipe.c, gsiodev.c, zfile.c)
+ - The garbage collector got confused if there were any arrays or
+dictionaries with 8K or more elements. (igcref.c)
+ - &gt;&gt; could leave the stacks in a questionable state if it failed.
+(gs_init.ps)
+ - The Category resource category didn't implement undefineresource.
+(gs_res.ps)
+ - When the token operator read the last token from a string, it
+left an unchanged string on the stack instead of an empty string.
+(stream.c)
+ - noaccess didn't give an invalidaccess error when applied to the
+permanent dictionaries. (dstack.h, idict.c, ztype.c)
+ - Overflowing the exec stack wasn't handled properly. (istack.h,
+istack.c)
+ - The garbage collector cleared the cached value pointers in names,
+causing interpretation to slow down substantially. (idict.c, igc.c,
+iname.c)
+ - 0 dict created a dictionary with a maxlength of 1. (idict.c)
+
+Changes the default size of the execution stack from 150 to 250, to match
+the Adobe "typical" value. (interp.c)
+
+Moves the operator definitions out of the automatic data segment.
+(opdef.h, iinit.c, z*.c)
+
+Adds operators that allow creation of objects in system space:
+.systemvmstring, .systemvmarray, .systemvmpackedarray, .systemvmdict,
+.systemvmcheck. (zsysvm.c)
+
+Renames gcdefs.h as gscdefs.h.
+
+Allocates names in system space rather than global space. (gsmain.c)
+
+Changes the memory manager so that it allows programs to create objects in
+system space. (iref.h, iutil.h, ivmspace.h, ...)
+
+Changes the implementation of filters so they appear in their own
+dictionary named filterdict. (gs_init.ps, z*.c)
+
+Changes the implementation of color spaces so each one has its own
+setcolorspace procedure, defined in a new dictionary named
+colorspacedict. (gs_lev2.ps, z*.c)
+
+Adds a new debugging switch, $, that always initializes all fields in a
+ref, in order to keep Purify happy. (store.h)
+
+</pre><h3><a name="V3.20_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - The page size for image devices was always set to (0, 0).
+(gsdevice.c)
+ - The PageSize computation in gx_default_put_params could overflow
+on 16-bit machines. (gsdparam.c)
+ - An omitted 'static' on an initialized array caused a compiler
+error. (gxccman.c)
+ - If interpolated image rendering was requested but not
+actually carried out, gs_image_cleanup could attempt to free a random
+pointer. (gsimage.c)
+ - Some compilers only retain 23 characters of procedure names, but
+some procedure names weren't unique in the first 23 characters. (gscie.c,
+gscolor.c, gscolor1.c, gxcmap.c)
+ - The garbage collector didn't trace device colors properly.
+(gxdcolor.h, gzht.h, gsimage1.c, gspcolor.c, gxcht.c, gxcmap.c, gxdraw.c,
+gxht.c)
+ - For CMYK devices, the transfer functions were being applied to
+the CMYK values rather than the complemented RGBW values. (gxcmap.c)
+ - Memory devices used their own color mapping procedures rather
+than those of the target; this could cause incorrect colors for patterns on
+devices with more than 1 bit per pixel. (gxdevmem.h, gdevmem1.c, gdevpm.c,
+gdevprn.c, gdevwdib.c, gschar.c, gsdevice.c, gxccache.c, gxccman.c,
+gxclip2.c, gxclread.c, gxpcmap.c)
+ - The garbage collector didn't trace image enumerators properly in
+the image_render_simple case. (gsimage.c)
+ - stroke produced different-looking output for thin (zero-width)
+lines depending on whether or not clipping was invoked. (gxstroke.c)
+ - If a clipping list changed from multiple rectangles to a single
+rectangle, it could fail to clip properly thereafter. (gxacpath.c)
+
+Adds two new device procedures: alpha_bits and copy_alpha. This change is
+backward-compatible for all existing devices. (gdevmem.h, gxdevice.h,
+gsdevice.c, gxclip2.c, gxclist.c, gxcpath.c)
+
+Changes the implementation of color halftones so that, when appropriate, it
+generates a single cell and uses the device tile_rectangle procedure.
+(gzht.h, gsht.c, gxcht.c, gxclist.c, gxclread.c)
+
+Adds partial support for the Orientation page device parameter.
+(gsdevice.c)
+
+Adds support for anti-aliased characters using 2 or 4 bits of alpha.
+(gxfcache.h, gschar.c, gxccache.c)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.13"></a>Version 3.13(private) (10/3/94)</h2>
+
+<p>
+This release was created for a customer; it was not distributed to the
+public.
+
+<h3><a name="V3.13_Documentation"></a>Documentation</h3><pre>
+Notes in make.doc that the file names in the IJG archive distributed with
+Ghostscript do not include the gsA.BC/ prefix. (make.doc)
+
+Adds a cross-reference to make.doc to the Watcom makefiles. (watc.mak,
+watcwin.mak, wccommon.mak)
+
+</pre><h3><a name="V3.13_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The makefile rule for gconfig.h et al had a couple of blank lines
+in the middle of it. (gs.mak)
+
+</pre><h3><a name="V3.13_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - wrfont.ps didn't add a lenIV entry to the Private dictionary if
+it was needed. (wrfont.ps)
+
+Adds a packfile.ps utility that allows compressing multiple files into a
+single file for environments with very little permanent storage.
+(gs_pfile.ps, packfile.ps, wrfont.ps)
+
+</pre><h3><a name="V3.13_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The {tiff,fax}{g32d,g4} devices could produce incorrect output.
+See under Streams below.
+ - The dfax drivers referred to the obsolete structure member
+EncodedEOLAlign. (gdevdfax.c)
+
+Changes the default bit order for TIFF/F output to little-endian, which is
+apparently what the majority of TIFF decoders like best. The bit order for
+the fax drivers is still big-endian. (gdevdfax.c, gdevtfax.c)
+
+</pre><h3><a name="V3.13_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The VMS build script used -a rather than -w for creating
+gconfig_.h. (vms.mak)
+ - The VMS build script didn't create gconfigv.h. (vms.mak)
+ - The VMS Fontmap had incorrect entries for the Bitstream Charter
+fonts. (fontmap.vms)
+ - The VMS MODULES.LIS file assumed the JPEG library files were in
+directory JPEG rather than JPEG-5. (modules.lis)
+
+</pre><h3><a name="V3.13_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Using DISKFONTS resulted in an invalidaccess error.
+(gs_fonts.ps)
+
+</pre><h3><a name="V3.13_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - The standard transfer function considered gray values above
+roughly 0.994 equivalent to white; 0.999 is a better value. (gs_init.ps)
+ - The transfer, black generation, and undercolor removal functions
+gave slightly inexact results for an input value of 0. (zcolor.c,
+zcontrol.c)
+ - setpagedevice gave an /undefined error if it did not recognize a
+key, rather than ignoring the key. (zdevice.c, gs_init.ps, gs_lev2.ps,
+gs_setpd.ps)
+
+Changes .putdeviceparams to take an additional argument, a Boolean that
+says whether or not unrecognized keys should be reported as /undefined
+errors. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, no user-written
+code should be calling .putdeviceparams. (zdevice.c)
+
+</pre><h3><a name="V3.13_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The Group 3 2-D and Group 4 fax encoders could emit incorrect
+output. (scfe.c)
+ - The algorithm for constructing optimal Huffman codes could
+produce invalid codes in some rare cases. (shcgen.c)
+
+</pre><h3><a name="V3.13_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Rectangles closed with lineto rather than closepath weren't
+recognized as rectangles. (This only affected performance, not
+functionality.) (gxpath2.c)
+ - The xfont lookup_font procedure could get called with a matrix
+whose translation components had never been initialized. (gxccman.c)
+ - Some compilers don't allow \ in the formal argument list of a
+preprocessor macro. (gdevprn.h, gxdevice.h)
+
+</pre>
+
+<h2><a name="Version3.12"></a>Version 3.12 (9/29/94)</h2>
+
+<p>
+This is another bug fix release, the first Level 2 release that we believe
+is reasonably reliable.
+
+<h3><a name="V3.12_Documentation"></a>Documentation</h3><pre>
+
+Adds some text warning about making copies of the makefile. (make.doc)
+
+</pre><h3><a name="V3.12_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - There were a number of unnecessary dependencies on $(MAKEFILE) in
+gs.mak, left over from before the existence of gconfigv.h. (gs.mak)
+ - JPEGSRC was defined in gs.mak rather than in jpeg.mak. (gs.mak,
+jpeg.mak)
+
+Changes the version numbering scheme back to A.BC, since people seem to be
+adapting to the change, and this allows using the version number directly
+as a MS-DOS directory name. (gconfig.c, gdevtfax.c, gs.c, gs_init.ps)
+
+Updates the JPEG library to version 5 (official release) of the IJG code.
+(jpeg/*, jpeg.mak)
+
+</pre><h3><a name="V3.12_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The TIFF/F driver put out invalid PageNumber and Software
+entries. (gdevtifs.h, gdevtfax.c)
+ - The TIFF/F and fax Group 3 2-D drivers used K=3 and K=5 instead
+of K=2 and K=4. (gdevtfax.c)
+ - The TIFF/F and fax Group 3 2-D drivers emitted improperly aligned
+output. (See under Streams below.)
+ - The MS Windows driver didn't resize the window properly in
+response to changing the device parameters. (gdevmswn.c)
+
+Because of complementary bugs in various C compilers, changes all the
+non-printer devices to use a different set of macros. (gdevmem.h,
+gdevpcfb.h, gdevprn.h, gdevsvga.h, gxdevice.h, gdev{3b1, bgi, herc, l256,
+pe, pm, sun, vglb, wddb, wdib, wprn, x}.c, gsdevice.c, gxacpath.c,
+gxclip2.c, gxcpath.c, gxpcmap.c, zupath.c)
+
+Changes the X11 driver to ignore the "margins" specified by Ghostview.
+This is apparently necessary for Ghostview to handle landscape display
+properly. (gdevxini.c)
+
+Adds a WindowID parameter to the X11 device, to allow setting the window
+for the output. (gdevx.h, gdevx.c, gdevxini.c)
+
+</pre><h3><a name="V3.12_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The definition of BEGINFILES in os2.mak occurred too late in the
+file to have the desired effect. (os2.mak)
+
+</pre><h3><a name="V3.12_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Updating the list of allocated file objects at a restore didn't
+clear the prev pointer of the new head, which could cause the garbage
+collector to encounter an invalid pointer. (Bug introduced by .forgetsave
+in 3.0.3.) (zfile.c)
+
+</pre><h3><a name="V3.12_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxEncode filter with K &gt; 0 and EncodedByteAlign = true
+incorrectly aligned the 1-D/2-D bit as the last bit of a byte, rather than
+the first bit. (scfx.h, scfe.c)
+ - eexec could loop indefinitely under certain conditions.
+(seexec.c)
+ - eexec's algorithm for recognizing text vs. binary encoding didn't
+work properly in some cases that don't conform to the Adobe Type 1 Font
+Format documentation. (seexec.c)
+ - Closing a stream didn't clear out the strm and state pointers,
+which could cause invalid accesses by the garbage collector. (stream.c)
+
+</pre><h3><a name="V3.12_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - fill_loop could loop indefinitely under certain conditions.
+(Introduced by a bug fix in 3.1.) (gxfill.c)
+ - fill/eofill sometimes failed to paint parts of a region.
+(Introduced by a bug fix in 3.1.1.) (gxfill.c)
+ - Non-convex clipping paths sometimes omitted thin horizontal
+slivers of the region. (Probably introduced by the "thin graphics" fix in
+3.1.) (gxacpath.c)
+
+</pre>
+
+<h2><a name="Version3.1.1"></a>Version 3.1.1 (9/25/94)</h2>
+
+<p>
+This is primarily a bug fix release. It was originally intended for some
+commercial licensees, but beta testers found too many problems with it.
+
+<h3><a name="V3.1.1_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - NEWS didn't indicate that there was a non-backward-compatible
+change in the gx_device structure -- specifically, that l_margin,
+b_margin, r_margin, and t_margin were replaced by macros named
+dev_l_margin(dev), etc. (news)
+
+Describes the two-phase commit requirement for device put_params
+procedures. (drivers.doc, gsparam.h)
+
+</pre><h3><a name="V3.1.1_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The new S macro in genarch.c didn't work on compilers that do
+macro substitution within string constants (which is forbidden by the ANSI
+standard). (genarch.c)
+
+</pre><h3><a name="V3.1.1_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - Driver put_params implementations didn't observe a "two-phase
+commit" discipline; this could lead to the current device in the graphics
+state being closed, and other inconsistencies. (gsparam.h, gxdevice.h,
+iparam.h, gdevbit.c, gdevcdj.c, gdevmswn.c, gdevpcfb.c, gdevpm.c,
+gdevprn.c, gdevx.c, gsdevice.c, gsdparam.c, zdevice.c, ziodev2.c, zmisc2.c)
+THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, it only affects
+put_params implementations, of which there are few.
+
+NOTE THE NON-BACKWARD-COMPATIBLE CHANGE IN THE gx_device STRUCTURE UNDER
+'Documentation' ABOVE. (gdevescp.c, gdevsj48.c, gdevsppr.c, gdevxini.c)
+
+</pre><h3><a name="V3.1.1_Platforms"></a>Platforms</h3><pre>
+
+Ensures that the Unix makefiles all include all the variants of TIFF/F and
+fax drivers. (ansihead.mak, cc-head.mak, gcc-head.mak)
+
+</pre><h3><a name="V3.1.1_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Most of the contents of statusdict were missing when
+running a Level 2 system in Level 1 mode. (zmisc2.c)
+
+</pre>
+
+<h2><a name="Version3.1"></a>Version 3.1 (9/20/94)</h2>
+
+<p>
+This release finally includes a usable subset implementation of
+setpagedevice, including all the machinery needed to address the
+long-standing "margins" problems.
+
+<h3><a name="V3.1_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - t_oparray objects weren't identified as behaving differently
+depending on whether they were marked executable. (iref.h)
+ - drivers.doc had gx_color_value instead of gx_color_index in
+the description of color mapping. (drivers.doc)
+
+Updates drivers.doc to reflect the change from static_procs to
+std_procs in the gx_device structure. (drivers.doc)
+
+</pre><h3><a name="V3.1_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The commands for building the JPEG library used rm instead
+of rm -f. (jpeg.mak)
+
+</pre><h3><a name="V3.1_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The X Windows driver hadn't been updated to reflect some
+name changes in members of the gx_color_info structure. (gdevx.h,
+gdevx.c, gdevxini.c)
+
+Changes all non-printer drivers so that they use the new std_device_body
+macros. (gdev*.c)
+
+Adds a print_page_copies procedure for printer drivers, allowing the
+driver to receive num_copies. (gdevprn.h, gdevprn.c)
+
+</pre><h3><a name="V3.1_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - ref_memory_enum/reloc_ptrs were declared inconsistently.
+(ialloc.c)
+ - If the operand of restore was invalid, the restore did
+nothing, instead of giving a typecheck. (zvmem.c)
+ - In Level 2, the margins and setmargins compatibility
+operators were defined incorrectly in terms of current/setpagedevice.
+(gs_lev2.ps)
+
+Enables .makeoperator to make local operators as well as global ones.
+(opdef.h, iinit.c, zmisc.c, zpacked.c)
+
+Finishes implementing the TransferFunction entry in halftone
+dictionaries. (zht1.c, zht2.c)
+
+Adds .set/currentfilladjust operators for access to the fill
+adjustment parameter in the graphics state. (zgstate.h)
+
+Removes the deviceinitialmatrix operator. (zdevice.c)
+
+Changes defaultmatrix from a procedure to an operator. (zmatrix.c)
+
+Sets the fill adjustment to 0.5 for high-resolution devices, effectively
+implementing Adobe's any-part-of-pixel filling rule. (gs_init.ps)
+
+Implements a small but useful subset of setpagedevice. (gs_lev2.ps)
+
+</pre><h3><a name="V3.1_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The eexec decoder incorrectly concluded that its data was
+in hex form if the first data character was whitespace. (seexec.c)
+
+</pre><h3><a name="V3.1_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - Thin graphics (e.g., lines or rectangles) with small angles
+relative to the X axis rendered with many points missing. (gxdraw.c,
+gxfill.c)
+ - The character cache rejected oversampled characters if the
+scaled-up size was too large, even if the scaled-down size wasn't.
+(gxchar.h, gschar.c, gxccache.c, gxccman.c)
+ - A call on sqrt with an integer argument didn't promote it
+explicitly to double, which is required for non-ANSI compilers.
+(gshtscr.c)
+
+Finishes implementing the TransferFunction entry in halftone
+dictionaries. (gsht1.c)
+
+Modifies the character oversampler so it can produce gray scale
+output instead of a 1-bit mask. We don't actually make use of this
+ability yet. (gxccman.c)
+
+Adds gs_set/currentfilladjust for access to the fill adjustment
+parameter in the graphics state. (gsstate.h, gsstate.c)
+
+Changes the names of the last few routines beginning with gz_ to
+begin with gx_ instead. (gzdraw.h =&gt; gxdraw.h, gsimage*.c, gxdraw.c,
+gxfill.c, gxstroke.c)
+
+Properly implements the PageSize, Margins, .HWMargins, and ImagingBBox
+device parameters for all devices. (gscoord.c, gsdparam.c, gspath2.c)
+Implements the NumCopies device parameter for printer devices.
+(gdevprn.c)
+
+Implements std_device_body macros to help insulate statically initialized
+non-printer devices from future changes in the gx_device structure.
+(gxdevice.h, ... many .c files ...)
+
+</pre>
+
+<hr>
+
+<h2><a name="Version3.0.3"></a>Version 3.0.3 (9/16/94)</h2>
+
+<p>
+This is primarily a bug fix release; it also implements most of the
+remaining Level 2 loose ends (except for setpagedevice).
+
+<h3><a name="V3.0.3_Documentation"></a>Documentation</h3><pre>
+
+Changes code that refers to "Ghostscript" to use the correct product
+name from gs_product. (gs.mak, gdevpbm.c, gdevsun.c, gswppm.c)
+
+Documents the new .forgetsave operator. (language.doc)
+
+Clarifies the distinction between commercial licensing and single-copy
+end-user sales. (readme)
+
+</pre><h3><a name="V3.0.3_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - The compilation rule for gdevadmp.c was missing from the
+makefile. (devs.mak)
+
+Changes the version numbering scheme back to A.B.C, since too many
+people got confused by the change to A.BC. (gconfig.c, gs.c,
+gs_init.ps)
+
+Adds a -dNOGC switch to prevent the garbage collector from being
+enabled. (gs_init.ps)
+
+</pre><h3><a name="V3.0.3_Utilities"></a>Utilities</h3><pre>
+
+Removes the ps2image utility, since the new psmono driver replaces it.
+
+</pre><h3><a name="V3.0.3_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The TIFF drivers incorrectly assumed that short and ulong
+were the same size as TIFF_short and TIFF_ulong, causing problems on
+64-bit systems. (gdevtfax.c)
+ - The EGA/VGA driver didn't do gray halftones properly if it
+was configured as a monochrome or 8-color device. (gdevpcfb.h)
+ - The comment in gdevevga.c incorrectly identified the file
+as gdevpcfb.c. (gdevevga.c)
+
+Changes the PC display drivers to save and restore more of the BIOS
+state. (gdevpcfb.h, gdevevga.c, gdevpcfb.c, gdevsco.c)
+
+Adds a new psmono driver that does the same thing as ps2image, faster
+and more conveniently. (gdevpsim.c)
+
+Replaces the X11 driver with the one from 3.01, since the color
+handling rewrite in 3.02 introduced serious bugs. (gdevx.h, gdevx.c,
+gdevxini.c)
+
+</pre><h3><a name="V3.0.3_Platforms"></a>Platforms</h3><pre>
+
+Changes the definition of gx_no_color_index to work around one of the
+bugs in the SGI Irix compiler. (gxdcolor.h)
+
+Rewrites the installation commands in unix-end.mak so they don't have
+very long lines. (unix-end.mak)
+
+</pre><h3><a name="V3.0.3_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Fonts that used 2- or 4-element arrays in the Metrics dictionary
+interpreted the width and side bearing interchanged with each other.
+(gs_type1.ps)
+ - Setting FONTPATH on the command line didn't work. (gs_fonts.ps)
+
+</pre><h3><a name="V3.0.3_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The stream position wasn't updated properly if sgets
+crossed a buffer boundary. (stream.c)
+
+Extends the BoundedHuffman filters so they can encode and decode runs of
+zeros specially, and so they mark and detect EOD. (sbhc.h, shc.h, sbhc.c,
+zfilter2.c)
+
+Provides an alternate implementation of file streams which doesn't use
+stdio buffering and which works around the System V "interrupted system
+call" problem. (stream.c, sfile.c, sfileno.c)
+
+Increases the maximum LZW output code from 3000 to 4095. (slzwe.c)
+
+</pre><h3><a name="V3.0.3_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - Opening a filter on a file of the wrong access type (read
+vs. write) didn't cause an error. (stream.h, sbasic.c, zfile.c, zfileio.c)
+ - save performed an extra, unnecessary gsave. (zvmem.c)
+ - sethalftone always gave a /undefined error. (zht2.c)
+ - eexec decryption read too much data from the input -- in
+Level 2, it isn't allowed to read 512 characters ahead. (sfilter.h,
+strimpl.h, seexec.c, sstring.c, zfileio.c, zmisc1.c)
+ - The scanner was too aggressive about allocating additional
+space for strings on small machines. (iscan.c)
+ - The AccurateScreens flag in Type 1 and Type 2 halftone
+dictionaries was being ignored. (zht2.c)
+ - The Level 2 definition of margins in statusdict didn't
+allow for Margins being undefined in the current page device.
+(gs_lev2.ps)
+ - The Interpolate flag was being ignored in image
+dictionaries. [implemented in library]
+ - The TransferFunction option was being ignored in halftone
+dictionaries. (zht2.c)
+ - Type 5 halftones usually didn't work, because they called
+the wrong (or an invalid) spot function. (zht2.c)
+
+Implements a .forgetsave operator that effectively causes a given save (and
+all more recent saves) to disappear. (isave.h, stream.h, isave.c, zfile.c,
+zvmem.c)
+
+</pre><h3><a name="V3.0.3_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - In the 1-operand form of the image operator, a Decode value of [1
+0] with 8-bit sample values and a single data source was treated the same
+as [0 1]. (gsimage1.c)
+ - Some Monotype fonts put a callsubr between an OtherSubr call and
+the following 'pop' opcodes (which the Adobe documentation forbids); The
+Type 1 font interpreter gave an invalidfont error rather than allowing
+this. (gxtype1.h, gstype1.c)
+ - Patterns didn't implement XStep and YStep properly.
+(gxpcolor.h, gspcolor.c, gxclip2.c)
+ - Clipping regions were sometimes 1 pixel too small at the edges;
+this could cause vertical and horizontal lines produced by certain Windows
+drivers to disappear. (gzpath.h, gxacpath.c, gxcpath.c, gxfill.c)
+ - Oversampling cached rotated characters produced very bad
+results (many dropouts). (gschar.c)
+ - Rendering a DeviceGray color on a DeviceCMYK device applied
+the transfer function to all 4 components, not just to the K
+component. (gxcmap.c)
+ - A screen specified with setcolorscreen didn't take effect
+properly on CMYK devices. (gsht.c)
+
+Implements the Interpolate option for images. Currently this is only
+implemented for portrait-orientation images (no rotation, skewing, or
+X-reflection). (gscspace.h, gximage.h, gscie.c, gscolor.c, gscolor1.c,
+gscolor2.c, gspcolor.c, gxcmap.c, gsimage.c, gsimage2.c, gsimage3.c)
+
+Implements AccurateScreens, but only in the form of a larger limit on
+the size of a halftone super-cell. (gxht.h, gsht.c, gsht1.c)
+
+Starts to implement the TransferFunction option for halftones.
+(gzht.h, gzstate.h, gsht.c, ...too many others to list...)
+
+</pre>
+
+<h2><a name="Version3.02"></a>Version 3.02 (8/30/94)</h2>
+
+<p>
+This is another bug fix release. It was distributed only to a few people,
+since the new X Windows color mapping code is not reliable yet.
+
+<h3><a name="V3.02_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - make.doc, but not unixtail.mak, called for setting PLATFORM=unix_
+on SVR4 platforms. (unixtail.mak)
+ - drivers.doc contained some wording that suggested that
+Ghostscript always used RGB colors internally. (drivers.doc)
+ - The definition of gx_device in drivers.doc had gotten out of sync
+with gxdevice.h. (drivers.doc)
+ - README claimed that Ghostscript is not compatible with the
+VAX/VMS DEC C compiler, which is no longer true. (readme)
+
+Adds a new section on printer drivers to drivers.doc. (drivers.doc)
+
+Adds a large number of new display boards to the 800x600 SVGA section of
+use.doc. (use.doc)
+
+Adds a bug report form to the README file. (readme)
+
+Notes that OSF/1 AXP systems require changing the definition of INSTALL
+from install to installbsd. (make.doc)
+
+</pre><h3><a name="V3.02_Procedures"></a>Procedures</h3><pre>
+
+Removes -Wno-uninitialized from the gcc flags, and fixes all the places (in
+Aladdin's code only) that need to be fixed to pacify gcc after doing this.
+(gcc-head.mak, gdevgif.c, gdevmem2.c, gdevpcl.c, gs.c, gsht1.c, gsimpath.c,
+gsutil.c, gxclread.c, gxpcopy.c, gxstroke.c, idict.c, iscannum.c, stream.c,
+zdevice2.c) (NOT FINISHED YET)
+
+Adds a FAKEFONTS switch that makes fake entries in FontDirectory for
+unloaded fonts, for the benefit of programs that think they can find all
+the available fonts by scanning FontDirectory. (gs_fonts.ps, gs_init.ps)
+
+</pre><h3><a name="V3.02_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2epsi didn't work, because setdevice now erases the page.
+(ps2epsi.ps)
+ - ps2epsi didn't work, because -dNODISPLAY installs a null device
+with 0 width and height. The fix -- to remove the -dNODISPLAY -- is not
+satisfactory, because it opens an unnecessary window. (ps2epsi)
+
+</pre><h3><a name="V3.02_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - gdev_fax_open was incorrectly declared static in gdevtfax.c,
+causing the extern reference in the dfax drivers not to be resolved.
+(gdevtfax.c)
+ - devs.mak included a duplicate definition of gdevmswn_h.
+(devs.mak)
+ - The fax drivers didn't link properly in Level 1 systems, because
+shc.c was omitted from their dependency list. (gs.mak, devs.mak)
+ - The TIFF/F drivers didn't set RowsPerStrip properly.
+(gdevtfax.c)
+ - The TIFF/F drivers didn't byte-align the EOL properly. (scfx.h,
+gdevdfax.c, gdevtfax.c, scfe.c, zfilter2.c)
+ - The rule for compiling gdevpccm.c incorrectly specified
+dependency on gs.h rather than gx.h. (devs.mak)
+ - The rule for compiling gdevtfax.c didn't include time_.h as a
+dependency. (devs.mak)
+ - The mode 2 compression routine for the DeskJet/LaserJet printers
+was broken. (gdevpcl.c)
+
+Removes the -O0 from the compilation rule for gdevsco.c, since it was
+misplaced to begin with. (devs.mak)
+
+Adds a maxDynamicColors X resource to control dynamic allocation in the
+color map. Replaces the X color lookup algorithms with completely new
+ones, for a substantial performance gain. (gdevx.h, gdevx.c, gdevxini.c)
+
+Adds PageNumber, Software, and DateTime entries to the TIFF/F drivers.
+(gdevtifs.h, gdevtfax.c)
+
+Changes the margins for the LaserJet 4 to 0. (gdevdjet.c)
+
+Adds a user-contributed LaserJet 4 driver that does Floyd-Steinberg
+dithering. (gdevcdj.c)
+
+</pre><h3><a name="V3.02_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The exit codes for Ghostscript should be different on VMS.
+(iastate.h, gs.c, gsmain.c, igc.c, igcref.c)
+ - The VMS DEC C compiler declares malloc and free in stdlib.h, and
+delete and unlink in stdlib.h. (malloc_.h, stdio_.h)
+ - st_prn_device wasn't defined, which upset the VMS linker even
+though there were no references. (gdevprn.h)
+ - stdpre.h didn't bring in the right headers when running gcc on
+SCO Unix, causing compilation warnings/errors. (stdpre.h)
+ - The definition of rename in gp_sysv didn't include const for the
+arguments. (gp_sysv.c)
+ - The definition of gettimeofday in gp_sysv didn't return any
+value. (gp_sysv.c)
+ - time_.h didn't work on MS-DOS systems. (time_.h)
+ - math_.h didn't include &lt;math.h&gt; when compiling with gcc on VMS
+systems. (math_.h)
+ - DesqView/X doesn't have a 'cat' command, which caused problems in
+the linking step. (dvx-tail.mak)
+
+Changes the definitions of popen in gdevpipe.c and gp_unix.c so they don't
+specify the argument list. This is an attempt to get around the fact that
+there is no easy way to detect whether the available header files declare
+popen correctly (with const arguments), incorrectly (with non-const
+arguments), or not at all. (gdevpipe.c, gp_unix.c)
+
+Replaces VMS.MAK, VMS-CC.MAK, and VMS-AXP.MAK with new versions provided by
+a user. (vms.mak, vms-cc.mak, vms-axp.mak)
+
+Changes the 16-bit Borland makefiles so their standard configuration is
+Level 1 plus color.dev (CMYK color and colorimage). (bc.mak, bcwin.mak)
+
+</pre><h3><a name="V3.02_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - cfonts.mak still referred to some .gsf files that have been
+replaced by .pfa files. (cfonts.mak)
+ - Compiled fonts got entered into FontDirectory, but didn't get
+registered as resources. (gs_ccfnt.ps)
+ - The Cyrillic, Kana, Hershey .gsf, and URW fonts didn't include a
+necessary systemdict begin/end, which caused them to fail in badly designed
+environments. (fonts/f*.gsf, fonts/h*.gsf, fonts/?0*.gsf)
+
+Changes the default target directory in cfonts.mak from fonts/c to .;
+changes the names of the Zapf Chancery compiled font procedures from c* to
+zc*. (cfonts.mak)
+
+Adds more fonts from the Adobe Type Manager package for MS Windows to
+Fontmap.ATM. (fontmap.atm)
+
+Adds the entire set of 35 standard fonts to the ccfonts feature in gs.mak;
+removes all the compilation rules for compiled fonts, since these rules are
+in cfonts.mak already. (gs.mak)
+
+</pre><h3><a name="V3.02_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - kshow executed a null, rather than the correct procedure, between
+the characters of the string, and got a typecheck error at the end.
+(zchar.c)
+ - MultiMaster fonts computed their side bearing and width
+incorrectly, producing incorrect output. (zchar1.c)
+ - There was no structure definition for gs_type1_state, so a GC
+during the execution of an OtherSubrs procedure could scramble pointers in
+the saved state. (zchar1.c, zfont1.c; also affects library, see below)
+ - kshow didn't work properly if the kerning procedure changed the
+depth of the operand or dictionary stack. (zchar.c)
+ - If the element count for roll was too large by only 1 or 2, the
+result was a crash rather than a rangecheck. (zstack.c)
+ - restore didn't undo currentgstate. (igstate.h, store.h,
+gsstate.c, zdevice2.c, zdps1.c, ztype.c)
+ - The scanner didn't set the local bit properly in a suspended
+state. (iscan.c)
+ - copypage disregarded #copies. (gs_init.ps)
+ - An incorrectly declared pointer led to addressing faults on
+16-bit systems. (zchar1.c)
+ - The cache for Separation colors was allocated with one element
+too few. (zcsindex.c)
+
+Changes `executive' so that if an error other than EOF occurs in the
+reading of the statement, the interpreter prints the error message, but
+control remains in the executive loop. (This isn't a very good fix; a
+better one will require refactoring executive / execute / run.)
+(gs_init.ps)
+
+Changes dictionary undo saving to use the new ref_must_save macro [internal
+change only]. (idict.c)
+
+Moves configuration definitions from iinit.c to gconfig.c. (gcdefs.h,
+interp.h, gconfig.c, gs.c, iinit.c, zmisc2.c, gs.mak)
+
+Moves =string from systemdict to userdict for Adobe compatibility.
+(gs_init.ps)
+
+Starts to implement the Interpolate flag in image dictionaries. See under
+Library below for restrictions. (zpaint.c, zimage2.c)
+
+</pre><h3><a name="V3.02_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - stream_compact attempted to compact a read-only string being used
+as the data source of a filter. (sbasic.c, stream.c)
+
+Adds an EncodedEOLAlign flag to the CCITTFaxEncode stream, to allow direct
+generation of TIFF/F output. (scfx.h, scfe.c, zfilter2.c)
+
+</pre><h3><a name="V3.02_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - There was no structure definition for gs_type1_state, so a GC
+during the execution of an OtherSubrs procedure could scramble pointers in
+the saved state. (gxfont1.h, gxtype1.h, gstype1.c, gxhint2.c)
+ - A couple of calls had to discard const, but didn't include the
+necessary cast. (gxpcmap.c)
+ - makeimagedevice refused to accept an empty image. (gsdevice.c)
+ - The extra parentheses around arguments in memory_.h caused some
+compilers to fail. (memory_.h)
+ - Floating point overflows during coordinate conversion terminated
+Ghostscript. (gxfarith.h, gxfixed.h, gsmatrix.c, gsmisc.c)
+ - Accents still weren't getting placed properly on characters
+created with seac. (gstype1.c, gxhint2.c)
+ - The SGI C compiler couldn't handle the (perfectly legal)
+definitions of dev_init_[open_]misc. (gxdevice.h)
+ - string_.h caused some problems with gcc on some versions of
+Solaris. (string_.h)
+ - The halftone levels for color screens were computed incorrectly.
+(gzht.h, gxdither.c)
+ - Color screens sometimes had vertical stripes of solid color
+interspersed. (gxcht.c)
+ - Colors could get mapped incorrectly if a compiler aggressively
+(and incorrectly) reordered the computation of procedure arguments
+involving the unit_frac macro. (gxcmap.c)
+ - setcachedevice[2] insisted that the corners of the bounding box
+be given in the correct order, i.e., llx &lt; urx and lly &lt; ury. (gschar.c)
+ - The image operator gave a limitcheck on unrotated 1-bit-per-pixel
+images whose width in device coordinates exceeded 65529. (gsimage.c)
+ - The garbage collector didn't trace the input data of an
+in-progress image operator correctly. (gsimage.c)
+
+Changes the max_rgb and dither_rgb members of gx_device_color_info to
+max_color and dither_colors, since Ghostscript now uses these for CMYK
+devices as well. Also changes dither_gray to dither_grays. (gdevmem.h,
+gdevprn.h, gxdevice.h, gdevbit.c, gdevcdj.c, gdevprn.c, gdevxini.c,
+gsdparam.c, gxcht.c, gxcmap.c)
+
+Starts to implement the Interpolate option for images. Currently this is
+only implemented for image, not imagemask, and only for rotations that are
+multiples of 90 degrees (possibly with reflection). (gsimage.h,
+gsiscale.h, gximage.h, gsimage.c, gsimage1.c, gsiscale.c)
+
+Starts to implement XStep and YStep in pattern dictionaries. (gxdcolor.h,
+gxpcolor.h, gspcolor.c, gxpcmap.c)
+
+</pre>
+
+<h2><a name="Version3.01"></a>Version 3.01 (8/14/94)</h2>
+
+<p>
+This is a patch release to fix early problems in release 3.0, and to clean
+up a few known loose ends.
+
+<h3><a name="V3.01_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - language.doc still documented the devicename procedure, which has
+been withdrawn. (language.doc)
+ - drivers.doc didn't specify under what circumstances each
+procedure could be called. (drivers.doc)
+ - current.doc said that setcachedevice and makeimagedevice wouldn't
+accept packed arrays, but neither of these operators takes any array
+arguments. (current.doc)
+ - current.doc said that definefont didn't interact properly with
+the resource machinery, which apparently is no longer true. (current.doc)
+ - make.doc incorrectly gave the name of the DVX makefile as
+dvx-djg.mak rather than dvx-gcc.mak. (make.doc)
+ - In one place, devices.doc incorrectly used -sBitsPerPixel= rather
+than -dBitsPerPixel=. (devices.doc)
+
+Notes that a kernel bug in SCO Unix makes Ghostscript not work correctly in
+some circumstances. (use.doc)
+
+</pre><h3><a name="V3.01_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - devs.mak incorrectly referred to gdevjetp.c instead of
+gdev3852.c. (devs.mak)
+ - The obsolete file gsprops.c was accidentally included in the
+fileset.
+
+Changes the version numbering scheme from A.BCC to A.B[C]. E.g., this
+release will be 3.01, not 3.001. (gs_init.ps, gs.c, iinit.c)
+
+Adds the LaserJet 4 driver to all makefiles that already include the
+LaserJet 3 driver. (*.mak)
+
+Adds the BJ-200 driver to all makefiles that already included the BJ-10e
+driver. (*.mak)
+
+Splits the Unix 'install' target into install-exec and install-data. Moves
+the executable scripts from gsdatadir to a new directory scriptdir, which
+defaults to bindir. (ansihead.mak, cc-head.mak, gcc-head.mak,
+unix-end.mak)
+
+</pre><h3><a name="V3.01_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - genconf had fixed buffer sizes built into it, which it could
+overrun its working storage without checking. (genconf.c)
+
+Removes RCS or SCCS headers from two utility files. (pj-gs.sh,
+printafm.ps)
+
+</pre><h3><a name="V3.01_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The new dfaxhigh and dfaxlow drivers didn't set
+state.EncodedByteAlign to false. (gdevdfax.c)
+ - The sunview driver assumed that the device would be open before
+map_rgb_color was called. (gdevsun.c)
+ - The CP50 driver incremented page_count itself, rather than
+letting the core library do it. (gdevcp50.c)
+ - The GIF driver(s) could loop indefinitely under certain
+circumstances. (gdevgif.c)
+ - The Group 4 fax drivers incorrectly included end-of-line codes in
+the output. (gdevtfax.c, gdevdfax.c)
+ - The Group 4 fax drivers could put out an EOB in the middle of the
+data. (scfe.c)
+ - The DesignJet 650C driver didn't use the correct compression
+mode. (gdevcdj.c)
+ - The Hercules and EGA/VGA/SVGA drivers computed the page height
+incorrectly according to the A4 switch. (gdevherc.c, gdevpcfb.h)
+
+Changes the page_count and showpage_count members of the device structure
+from int to long. (gxdevice.h, gdevprn.c, gsdparam.c)
+
+Changes the faxg3, faxg32d, and faxg4 drivers so that, like the TIFF and
+dfax drivers, they adjust the page size to one of the three CCITT standard
+sizes if this is reasonable. (gdevtfax.c)
+
+Splits the bit driver into bit, bitrgb, and bitcmyk. Adds bitrgb and
+bitcmyk to all makefiles that included bit. (*.mak, devs.mak, gdevbit.c)
+
+Replaces the atiw16, tseng16, and tvga16 SuperVGA drivers with a single
+svga16 driver that allows specifying the display mode number. (devs.mak,
+gdevpcfb.c)
+
+</pre><h3><a name="V3.01_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - The MS Windows and OS/2 drivers allocated their terminal input
+buffers in a way that could cause the GC to crash. (gp_mswin.c, gp_os2.c)
+ - The handling of gettimeofday on SVR4 platforms was incorrect.
+(time_.h, gp_sysv.c, gp_unix.c)
+ - On some platforms, function prototypes were not enabled even if
+__STDC__ was defined. (stdpre.h)
+ - The VMS build script referred to an obsolete feature lev2only.
+(vms.mak)
+
+Changes the DVX platform so that stdprn is buffered. This should improve
+printing performance dramatically. (gp_dvx.c)
+
+</pre><h3><a name="V3.01_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - Setting DISKFONTS resulted in a reference to FontFileDirectory
+before it was defined. (gs_type1.ps, gs_fonts.ps)
+ - /Font findresource gave an error rather than doing font
+substitution. (gs_res.ps)
+ - FontDirectory wasn't rebound to GlobalFontDirectory when global
+VM was current. (gs_res.ps, zdict.c)
+ - Type 1 fonts weren't loaded into global VM. (gs_fonts.ps)
+ - In the standard Fontmap, the Utopia fonts had extension .gsf
+rather than .pfa. (fontmap.gs)
+ - Fonts whose FontBBox was [0 0 0 0] were not displayed, or were
+displayed as tiny dots. (gs_type1.ps)
+
+</pre><h3><a name="V3.01_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - dict_put could read from the variable pvslot before it was used.
+(This was harmless, since the value was never actually used; it just upset
+Purify.) (idict.c)
+ - Binary object sequences could cause addressing faults.
+(iscanbin.c)
+ - The attributes on names were set incorrectly in binary object
+sequences. (iscanbin.c)
+ - gs.c duplicated (in some cases incorrectly) some definitions in
+interp.h. (gs.c)
+ - gs_lib_paths was declared const in one place and non-const in
+another. (zfile.c)
+ - file_restore and font_restore had inconsistent const declarations
+for their argument. (isave.c)
+ - iodev_os_open_file was missing its last formal parameter.
+(ziodev.c)
+ - gs.c declared gs_devicename with an incorrect extern. (gs.c)
+ - undefinefont didn't interact properly with the resource
+machinery. (gs_lev2.ps)
+ - The declaration for swap_entry used a typedef name as a formal
+parameter, which upset some compilers. (zmisc2.c)
+ - Including the ccinit feature could cause the garbage collector to
+make an invalid access. (stream.c)
+ - The check for t_[a]struct types in ztype.c was incorrect.
+(ztype.c)
+ - After the collection of halftone samples, temporary data
+structures were freed incorrectly. (gzht.h, gsht1.c, zht.c)
+ - Images with source width between 489 and 492 crashed the
+memory manager. (iastate.h)
+
+Makes it possible to define SEARCH_HERE_FIRST (gsmain.c) in the makefile.
+(gsmain.c)
+
+Splits the Level 2 resource machinery into a separate file. (gs_lev2.ps,
+gs_res.ps, gs.mak, unix-end.mak, vms.mak).
+
+Changes the names of the DiffEncode/Decode filters to
+PixelDifferenceEncode/Decode, and splits them off into a separate
+"feature". (gs.mak, zfilter2.c, zfpdiff.c, spdiff.c, spdiffx.h)
+
+Adds experimental code for filtered image scaling. DON'T USE THIS CODE.
+(zimage2.c)
+
+</pre><h3><a name="V3.01_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - The CCITTFaxEncode filter could put out an EOB in the middle of
+the data. (scfe.c)
+
+Splits off the PixelDifferenceEncode/Decode filters into a separate
+"feature". (gs.mak)
+
+</pre><h3><a name="V3.01_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gs_setcachedevice could return a garbage error code. (gschar.c)
+ - joins on stroked lines were incorrect if the device coordinate
+system mapped +Y to +Y. (gxstroke.c)
+ - If gsmisc.c supplied versions of missing library routines, they
+could clash with the names of the real ones if those were present
+unexpectedly. (memory_.h, gsmisc.c)
+ - The initialization expression for is_open in the
+dev_init_misc_open macro included a cast, which some compilers don't allow.
+(gxdevice.h, gsdevice.c, gxclip2.c, gxpcmap.c)
+ - In Type 1 fonts, character that specified their side bearing and
+width with sbw rather than hsbw gave an invalidfont error. (gstype1.c)
+ - Some procedures were declared inconsistently with regard to const
+arguments. (gscie.c, gxpcmap.c, gxacpath.c, gxcmap.c)
+ - A few places still assumed that pointers occupied 4 bytes.
+(gxclist.c)
+ - Rendering a gray halftone on a CMYK device called the device's
+map_rgb_color procedure instead of map_cmyk_color. (gxdither.c)
+
+Renames gsfile.c as gswppm.c. (gsfile.c, gswppm.c)
+
+Implements the ability to cache arbitrarily transformed characters. This
+is currently enabled by a compile-time flag in gschar.c. (gschar.c)
+
+</pre>
+
+<h2><a name="Version3.0"></a>Version 3.0 (8/1/94)</h2>
+
+<p>
+This is the first full Level 2 version released to the public.
+Unfortunately, we were not able to include setpagedevice in this release.
+
+<h3><a name="V3.0_Documentation"></a>Documentation</h3><pre>
+
+Fixes bugs:
+ - README didn't mention Aladdin's European distributor.
+ - psfiles.doc didn't describe some of the newer gs_*.ps files.
+
+Notes that gcc -O2 (version 2.5.8 of gcc) generates incorrect code for some
+modules on the H-P RISC architecture.
+
+Notes that on AXP platforms running VMS, DEC C V4.0 is required.
+
+</pre><h3><a name="V3.0_Procedures"></a>Procedures</h3><pre>
+
+Fixes bugs:
+ - 'make clean' didn't delete devs.tr or t.tr.
+ - devs.mak was missing the entry for faxg32d.
+ - unixansi.mak omitted some drivers that were included in
+unix-cc.mak and unix-gcc.mak.
+
+Updates jpeg.mak to reference version 5beta1 of the IJG JPEG code.
+
+Changes the version numbering scheme from A.B.C to A.B[CC]. I.e., the
+first sub-release after 3.0 will be 3.01 or 3.001, not 3.0.1.
+
+</pre><h3><a name="V3.0_Utilities"></a>Utilities</h3><pre>
+
+Fixes bugs:
+ - ps2ascii didn't do a setglobal.
+
+Adds an option to ansi2knr to convert ... to va_alist/va_dcl.
+
+</pre><h3><a name="V3.0_Drivers"></a>Drivers</h3><pre>
+
+Fixes bugs:
+ - The newly added faxg32d driver didn't have an entry in devs.mak.
+ - The BMP, GIF, and PCX drivers wrote out an incorrect color
+palette (the blue values were too small).
+ - The vgalib driver had some compilation problems.
+ - The TIFF drivers didn't produce correct multi-page output.
+
+Adds faxg32d and tiffg32d drivers.
+
+Reinstates the DigiFax drivers, which were withdrawn when the new fax
+drivers were added.
+
+</pre><h3><a name="V3.0_Platforms"></a>Platforms</h3><pre>
+
+Fixes bugs:
+ - gs_btokn.ps and gs_ccfnt.ps weren't installed on Unix platforms.
+ - The VMS module list omitted SBHC, included a non-existent GXDASH,
+and had incorrect names for some of the IJG JPEG files.
+ - The VMS build scripts (vms*.mak) had incorrect "boilerplate".
+ - The VMS script file gssetmod.com had \r characters in it, as well
+as \n characters.
+ - The echogs and genarch utilities didn't return the correct exit
+codes under VMS.
+ - The VMS Fontmap had incorrect entries for the Courier and Charter
+fonts.
+ - When running under Ghostview, Ghostscript didn't drain the input
+pipe. (We fixed this with a temporary patch in gs.c; this isn't a good
+solution for the longer term.)
+
+</pre><h3><a name="V3.0_Fonts"></a>Fonts</h3><pre>
+
+Fixes bugs:
+ - The free AvantGarde, Bookman, and Palatino font families had
+incorrect FontBBox values.
+ - The 'f' and 'j' in the free AvantGarde-DemiOblique,
+Bookman-DemiItalic, Bookman-LightItalic, and Palatino-Italic fonts were
+chopped off on the right. (The bitmaps were chopped off in the original
+BDF fonts from which these fonts were made.) ****** THIS PROBLEM WAS NOT
+ACTUALLY FIXED. ******
+
+</pre><h3><a name="V3.0_Interpreter"></a>Interpreter</h3><pre>
+
+Fixes bugs:
+ - gs -h and gs -v didn't print the tertiary version number correctly.
+ - Binary object sequences with no strings or names didn't read in
+correctly.
+ - Binary object sequences that crossed an input buffer boundary
+didn't read in correctly.
+ - Binary object sequences read in as {[e1 .. en] e1 ... en} instead
+of {[e1 ... en]}. (New bug in 2.9.x.)
+ - setpattern didn't set the current color space correctly if the
+current color space wasn't a Pattern space.
+ - If the current color space was an uncolored Pattern space but the
+current color was a colored Pattern, currentcolor returned extra values on
+the operands stack.
+ - .buildfont1 in gs_type1.ps didn't force binding of the old
+definition, causing ps2ascii to loop endlessly.
+
+Adds a facility for writing and reading dictionaries in binary object
+sequences. This is experimental and subject to change in the future.
+
+</pre><h3><a name="V3.0_Streams"></a>Streams</h3><pre>
+
+Fixes bugs:
+ - gs_run_string and ccinit didn't have any way to mark the string
+as "foreign", which confused the GC.
+
+</pre><h3><a name="V3.0_Library"></a>Library</h3><pre>
+
+Fixes bugs:
+ - gxchar.h had an extra comma after the last element of the
+show_width_status enum, which upset some compilers.
+ - stroke and strokepath didn't correctly skip zero-length segments
+if the line width was less than one pixel, or if there was a closed subpath
+consisting entirely of zero-length segments.
+ - strokepath sometimes incorrectly added a moveto at the end of the
+path.
+</pre>
+
+<!-- [3.0 begin visible trailer] =========================================== -->
+<hr>
+
+<p>
+<small>Copyright &copy; 1996, 1997, 1998 Aladdin Enterprises.
+All rights reserved.</small>
+
+<p>
+This software is provided AS-IS with no warranty, either express or
+implied.
+
+This software is distributed under license and may not be copied,
+modified or distributed except as expressly authorized under the terms
+of the license contained in the file LICENSE in this distribution.
+
+<p>
+<small>Ghostscript version 7.07, 17 May 2003
+
+
+<!-- [3.0 end visible trailer] ============================================= -->
+
+</body>
+</html>