summaryrefslogtreecommitdiff
path: root/info/digests/tex-implementors/message.01
blob: 3a8ae258dfd6e9eba58e1f92168aac38c043f79a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
Date:	  25 Nov 87				Message No:	001

To:	  TeX implementors and distributors

From:	  Barbara Beeton

Subject:  First informational message from the early-warning system


Below is an extract from Knuth's TeX82.BUG file dated 17 Nov 87, 15:03.
This includes changes from version 2.2 - 2.7 inclusive.

Note that this file contains only essential changes to program code.
Some trivial code changes and most changes to documentation are not
included in this list.  Most appear in the ERRATA.TeX file, but that is
not the easiest source of information to use when updating a .WEB file.

I have used the TOPS-20 program SRCCOM to generate a differences list
between Knuth's version 2.7 file and a version 2.0 file received on a
distribution tape.  If you would like a copy, let me know; it is about
31Kbytes -- too big to want to include in a general message, but well
able to be sent out on request.

I understand that corrected pages of volumes B, C and D of C&T have been
sent to Addison-Wesley, so revised editions should be appearing in a few
months.  The latest version of Knuth's errata list is dated 18 Nov 87; it
contains only changes since 15 Jun 87, and is about 9Kbytes.  This too
will be sent to anyone requesting it.

Future messages will assume that TeX version 2.7 is the baseline version.

Here is the summary from TeX.WEB describing the nature of the changes.

% Version 2.1 corrects anomalies in discretionary breaks (January 1987).
% Version 2.2 corrects "(Please type...)" with null \endlinechar (April 1987).
% Version 2.3 avoids incomplete page in premature termination (August 1987).
% Version 2.4 fixes \noaligned rules in indented displays (August 1987).
% Version 2.5 saves cur_order when expanding tokens (September 1987).
% Version 2.6 adds 10sp slop when shipping leaders (November 1987).
% Version 2.7 improves rounding of negative-width characters (November 1987).
% A reward of $40.96 will be paid to the first finder of any remaining bug.
% (This amount will double again in 1988.)

************************************************************************

*** Version 2.1 was released on January 26, 1987.

326. Removal of redundant code (found by Pat Monardo, 5 Feb 87)
@x module 1224 [this change need not be made, since it has no effect]
    char_def_code: define(p,char_given,cur_val);
    math_char_def_code: define(p,math_given,cur_val);
@y the cases cannot occur, so we simply don't list them
@z

327. More robustness is needed when debugging (Ronaldo Am\'a, 14 Apr 87)
@x module 174
begin while p>null do
@y maybe mem_min>null (but nodes shouldn't be put in location mem_min exactly)
begin while p>mem_min do
@z
@x module 182
@p procedure show_node_list(@!p:pointer); {prints a node list symbolically}
@y
@p procedure show_node_list(@!p:integer); {prints a node list symbolically}
@z
@x module 182, continued
while p>null do
@y
while p>mem_min do
@z

328. Storage allocation can be more elegant and efficient (4/21/87)
@x module 127
if r=p then if ((rlink(p)<>rover) or (llink(p)<>rover)) then
@y
if r=p then if rlink(p)<>p then
@z

329. Miscalculation of empty-line condition (April 22, 1987)
@x module 360
    begin if limit=start then {previous line was empty}
@y
    begin if (end_line_char<0)or(end_line_char>127) then incr(limit);
    if limit=start then {previous line was empty}
@z

330. A case where we don't have to assume system bookkeeping (April 28, 1987)
@x module 560
done: b_close(tfm_file); read_font_info:=g;
@y [suggested by Jim Sterken]
done: if file_opened then b_close(tfm_file);
read_font_info:=g;
@z [this was not a bug, according to the comment in module 28]

331. jump_out must fix unfinished output (Found by Klaus Gunterman, 3 Aug 87)
@x module 593
doing_leaders:=false; dead_cycles:=0;
@y
doing_leaders:=false; dead_cycles:=0; cur_s:=-1;
@z
@x module 617
cur_s:=-1; ensure_dvi_open;
@y
ensure_dvi_open;
@z
@x module 640
dvi_out(eop); incr(total_pages);
@y
dvi_out(eop); incr(total_pages); cur_s:=-1;
@z
@x module 642
if total_pages=0 then print_nl("No pages of output.")
@y
while cur_s>-1 do
  begin if cur_s>0 then dvi_out(pop)
  else  begin dvi_out(eop); incr(total_pages);
    end;
  decr(cur_s);
  end;
if total_pages=0 then print_nl("No pages of output.")
@z

332. \hangindent=1pt$$\halign{...\cr\noalign{\hrule}}$$ problem (19 Aug 87)
@x module 805
q:=link(head);
@y
q:=link(head); s:=head;
@z
@x module 805, continued
  q:=link(q);
@y
  s:=q; q:=link(q);
@z
@x module 806
if is_running(depth(q)) then depth(q):=depth(p);
@y
if is_running(depth(q)) then depth(q):=depth(p);
if o<>0 then
  begin r:=link(q); link(q):=null; q:=hpack(q,natural);
  shift_amount(q):=o; link(q):=r; link(s):=q;
  end;
@z

333. \hskip 0pt plus 1fil\ifdim problem (found by Alan Guth, 20 Aug 87)
@x module 366
@!cvl_backup,@!radix_backup:small_number; {to save |cur_val_level| and |radix|}
@y
@!cvl_backup,@!radix_backup,@!co_backup:small_number;
  {to save |cur_val_level|, etc.}
@z
@x
backup_backup:=link(backup_head);
@y
co_backup:=cur_order; backup_backup:=link(backup_head);
@z
@x
link(backup_head):=backup_backup;
@y
cur_order:=co_backup; link(backup_head):=backup_backup;
@z

334. leaders too sensitive near exact multiples (M. F. Bridgland, 9 Nov 87)
@x module 626
  begin edge:=cur_h+rule_wd; lx:=0;
@y
  begin rule_wd:=rule_wd+10; {compensate for floating-point rounding}
  edge:=cur_h+rule_wd; lx:=0;
@z
@x ibid
  cur_h:=edge; goto next_p;
@y
  cur_h:=edge-10; goto next_p;
@z
@x module 635
  begin edge:=cur_v+rule_ht; lx:=0;
@y
  begin rule_ht:=rule_ht+10; {compensate for floating-point rounding}
  edge:=cur_v+rule_ht; lx:=0;
@z
@x ibid
  cur_v:=edge; goto next_p;
@y
  cur_v:=edge-10; goto next_p;
@z

335. Glitch in fixed-point multiplication of negatives (W.G. Sullivan, 17Nov87)
@x module 572
begin alpha:=16*z; beta:=16;
while z>=@'40000000 do
  begin z:=z div 2; beta:=beta div 2;
  end;
@y
begin alpha:=16;
while z>=@'40000000 do
  begin z:=z div 2; alpha:=alpha+alpha;
  end;
beta:=256 div alpha; alpha:=alpha*z;
@z

336. (I sincerely hope that there won't be any more)
-------