(Message inbox:23) Return-Path: Date: Sun 9 Apr 89 14:56:06-EST From: bbeeton Subject: WEB 3.0; TeX change, same version; CM85.BUG To: TeX-implementors@vax01.ams.com Message-ID: <608154966.0.BNB@VAX01.AMS.COM> Mail-System-Version: Date: 10 Apr 89 Message No: 015 To: TeX implementors and distributors From: Barbara Beeton Subject: WEB 3.0; TeX change, same version; CM85.BUG Thanks to Edgar Fuss for the reminder that an ascii-code verification list would be useful. I have "borrowed" the relevant material from the GUTenberg trailer, and it will be attached to all messages from now on. I received the following message from Knuth on March 25. Peter Breitenlohner found a bug in TANGLE and WEAVE, and since their version numbers were up to 2.9 I decided to go to version 3 (also in honor of Wayne Sewell's book on WEB, which will include the source listings). The bug is in input_ln, and it happens only if a line of input is too long (more than 100 characters); so it's not serious, but it might as well be fixed. The fix requires the new line if final_limit>limit then final_limit:=limit; to be added to input_ln just after the line that says "decr(limit)"; ... (Also the version number gets changed, and a line explaining version 3 gets added near the beginning.) ... Breitenlohner also found a very minor glitch in TeX that I'll fix ... (without changing the version number). I just noticed that input_ln is changed in our change files for TANGLE and WEAVE, so the bugfix may require change files to be updated... The glitch has been fixed as of April 8; here is Knuth's commentary: the "glitch" is such that it is transparent to all users except in certain cases that "can't happen". If the latter cases can in fact happen, the users still will see nothing unless they are using a non-production version of TeX in which bounds checking is done, because the relevant TeX code will be something like this: if (x=0) or (mem[x]=0) then causefatalerror where x=0 and mem is an array such that mem[0] doesn't exist. (On almost all implementations mem[0] does exist.) I will be changing that code to something like this: if x=0 then causefatalerror; if mem[x]=0 then causefatalerror. In other words, the change will be simply cosmetic, not necessitating a new version number. I have pointed out to Knuth that, even though the glitch is minor, serious confusion can result when version numbers are not changed (viz. LaTeX). However, his decision is final. In the future, I will refer to this change as version 2.98a to try to avoid confusion. I have updated the cumulative difference list beginning with TeX 2.7 (Nov 87) to include all changes through 2.98a; it previously stopped with version 2.95. I will be happy to send a copy to anyone requesting it. Updates to the errata list to incorporate the change are given below. Also included are some corrections to errors that appeared only in the July 1987 printing of Volume D; check the publication date of your copy carefully before making any changes. One additional error has been posted to the previous errata file (ERRATA.THR); it fixes the section number reference in a change on page D68: \bugonpage D86, second line of section 198 (2/27/87) (The reference had previously been given as section 128.) A "small bug" has been fixed in MFT.WEB; differences are given below. Message #14 contained a change to SYMBOL.MF, but it turns out that this was not the only font change since the beginning of the year; a previous change to the letter m in ROMANL was expanded. The last few additions to CM85.BUG are given below in their entirety. (I have suggested to Knuth that he date the updates to this file, but since nothing has been dated so far, I doubt he will wish to start now.) Finally, Knuth reports that "A new version of GFtoDVI should finally be ready in a week or so." He also mentions that he is planning to "wean himself away" from TeXhax by the end of this year, so that he can devote himself entirely to The Art of Computer Programming. Tentatively I plan to make up a form letter that gives addresses of people to write to for help; Phyllis will send that letter out to whoever writes me concerning TeX, and I won't see any of the letters. I will designate a few people ... who will screen all purported bugs and report them directly to me, so that I can spend an hour or two max each month on residual maintenance. By next year it looks like everything will be stable enough to cast in concrete (I mean silicon?). I hope that his prediction is correct. I will try to make my next message concentrate on TRIP and TRAP; however that will have to wait until I return from an ISO WG8 meeting which will take me out of town from April 14-23. Thanks for your patience. ######################################################################## Changes to TEX.WEB (comparison with ver **** FILE PS:TEX.WEB.14, 1-15177 (656587) begin q:=link(cur_align); if (cur_align=null)or(q=null) then confusion("endv"); @:this can't happen endv}{\quad endv@> **** FILE PS:TEX.WEB.1, 1-15177 (656587) begin if cur_align=null then confusion("endv"); q:=link(cur_align);@+if q=null then confusion("endv"); @:this can't happen endv}{\quad endv@> *************** ######################################################################## Additions to TEX82.BUG 352. Cosmetic change to validate comment in 115 (Breitenlohner, 20 Mar 89) @x begin q:=link(cur_align); if (cur_align=null)or(q=null) then confusion("endv"); @y begin if cur_align=null then confusion("endv"); q:=link(cur_align);@+if q=null then confusion("endv"); @z 353. (I sincerely hope that there won't be any more) ######################################################################## Extracts from ERRATA.TeX (differences as compared with previous version) ;COMPARISON OF PS:ERRATA.TEX.23 AND PS:ERRATA.NEW.3 ;OPTIONS ARE /E /3 **** FILE PS:ERRATA.TEX.23, 3-342 (17239) \bugonpage B338, second-last line (8/19/87) **** FILE PS:ERRATA.NEW.3, 3-342 (17239) \bugonpage B332, lines 11 and 12 from the bottom (4/8/89) \ninepoint \noindent\hskip10pt {\bf begin if\/} $\\{cur\_align}=\\{null}$ {\bf then} \\{confusion}({\tt\char'23endv\char'23});\par\noindent\hskip10pt $q\gets\\{link}(\\{cur\_align})$; \ {\bf if\/} $q=\\{null} {\bf then} \\{confusion}({\tt\char'23endv\char'23}); \bugonpage B338, second-last line (8/19/87) *************** **** FILE PS:ERRATA.TEX.23, 5-36 (26064) \bugonpage D347, new line of code after line 5 (12/14/88) **** FILE PS:ERRATA.NEW.3, 5-36 (26397) \bugonpage D67, in the July 1987 printing (4/7/89) \ninepoint\noindent [Delete line 7, which has a redundant `{\bf if\/} $r=p$ {\bf then}'; move line 8 to the left 10 points for alignment; and restore the following line (which was deleted by mistake after l\noindent\hskip10pt $\\{node\_size}(p)\gets q-p$\quad$\{\,$reset the size in case it grew$\,\}$ \noindent These corrections are needed only in the reprinting made July, 1987.] \bugonpage D228, in the July 1987 printing (4/7/89) \ninepoint\noindent [Delete lines 14--15, which were inserted erroneously from a previous errata list; and restore the following lines (which were deleted by mistake): \noindent\hskip20pt {\bf begin} \\{double}(\\{max\_coef}); \ \\{double}(\\{x0}); \ \\{double}(\\{x1}); \ \\{double}(\\{x2});\par\noindent\hskip20pt \\{double}(\\{y0}); \ \\{double}(\\{y1}); \ \\{double}(\\{y2});\par\noindent\hskip20pt {\bf end} \noindent These corrections are needed only in the reprinting made July, 1987.] \bugonpage D248, in the July 1987 printing (4/7/89) \ninepoint\noindent [Delete line 16, which begins with `$d\gets\\{take\_fraction}'; and restore the following line (which was deleted by mistake after line 22): \noindent\hskip10pt {\bf if\/} $d<\\{alpha}$ {\bf then} $d\gets\\{alpha}$ \noindent These corrections are needed only in the reprinting made July, 1987.] \bugonpage D347, new line of code after line 5 (12/14/88) *************** **** FILE PS:ERRATA.TEX.23, 5-96 (28009) \bugonpage D511, line 11 (12/14/88) **** FILE PS:ERRATA.NEW.3, 5-140 (29751) \bugonpage D510, in the July 1987 printing (4/7/89) \ninepoint\noindent [Move the 7th-to-last line, which begins with `\\{internal}[\\{fontmaking}]', one line down, and indent it to the right by 10 more points. This correction is needed only in the reprinting made July, 1987.] \bugonpage D511, line 11 (12/14/88) *************** ######################################################################## Differences between TANGLE.WEB 2.9 and 3.0 ;COMPARISON OF PS:TANGLE.WEB.5 AND PS:TANGLE.WEB.2 ;OPTIONS ARE /E /3 **** FILE PS:TANGLE.WEB.5, 1-16 (971) % Here is TeX material that gets inserted after \input webmac **** FILE PS:TANGLE.WEB.2, 1-15 (969) % Version 3, for Sewell's book, fixed a long-line bug in input_ln (March, 1989). % Here is TeX material that gets inserted after \input webmac *************** **** FILE PS:TANGLE.WEB.5, 1-33 (1672) \centerline{(Version 2.9)} \vfill} **** FILE PS:TANGLE.WEB.2, 1-34 (1754) \centerline{(Version 3)} \vfill} *************** **** FILE PS:TANGLE.WEB.5, 2-26 (2936) @d banner=='This is TANGLE, Version 2.9' @ The program begins with a fairly normal header, made up of pieces that **** FILE PS:TANGLE.WEB.2, 2-26 (3016) @d banner=='This is TANGLE, Version 3' @ The program begins with a fairly normal header, made up of pieces that *************** **** FILE PS:TANGLE.WEB.5, 4-104 (24505) print_nl('! Input line too long'); loc:=0; error; **** FILE PS:TANGLE.WEB.2, 4-104 (24583) if final_limit>limit then final_limit:=limit; print_nl('! Input line too long'); loc:=0; error; *************** ######################################################################## Differences between WEAVE.WEB 2.9 and 3.0 ;COMPARISON OF PS:WEAVE.WEB.6 AND PS:WEAVE.WEB.7 ;OPTIONS ARE /E /3 **** FILE PS:WEAVE.WEB.6, 1-23 (1403) % Here is TeX material that gets inserted after \input webmac **** FILE PS:WEAVE.WEB.7, 1-22 (1401) % Version 3, for Sewell's book, fixed a long-line bug in input_ln (March, 1989). % Here is TeX material that gets inserted after \input webmac *************** **** FILE PS:WEAVE.WEB.6, 1-42 (2192) \centerline{(Version 2.9)} \vfill} **** FILE PS:WEAVE.WEB.7, 1-43 (2274) \centerline{(Version 3)} \vfill} *************** **** FILE PS:WEAVE.WEB.6, 1-69 (3298) @d banner=='This is WEAVE, Version 2.9' @ The program begins with a fairly normal header, made up of pieces that **** FILE PS:WEAVE.WEB.7, 1-70 (3378) @d banner=='This is WEAVE, Version 3' @ The program begins with a fairly normal header, made up of pieces that *************** **** FILE PS:WEAVE.WEB.6, 1-590 (24677) print_nl('! Input line too long'); loc:=0; error; **** FILE PS:WEAVE.WEB.7, 1-591 (24755) if final_limit>limit then final_limit:=limit; print_nl('! Input line too long'); loc:=0; error; *************** ######################################################################## CM85.BUG -- the last 40 lines (as of 23 Jan 89) @x in ROMANL, the letter m lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; lft x3l=hround(.5w-.5stem); x5-x3=x3-x1; if not monospace: r:=hround(x5+x1)-l; fi % change width for better fit @y lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; % stem, sic lft x3l=hround(.5w-.5mfudged.stem); x5-x3=x3-x1; if not monospace: r:=hround(x5+x1)+r-w; fi % change width for better fit @z @x a new routine for CMBASE, following change_width @y def center_on(expr x) = if not monospace: % change width for symmetric fit r:=r+2x-w; w:=2x; fi enddef; @z @x in SYMBOL, the elementary division operator x3-.5dot_size=hround(.5w-.5dot_size); w:=r:=2x3; @y x3-.5dot_size=hround(.5w-.5dot_size); center_on(x3); @z Similarly, whenever the construction "w:=r:=2x*" appears, change it to "center_on(x*)". This happens in the programs for elementary division operator (as noted above), large triangle, large inverted triangle, lattice top, lattice bottom, dagger mark, double dagger mark, club/diamond/heart/spade suit (all in SYMBOL), plus the diamond operator and universal quantifier in SYM. The following additional change needs to be made in the programs for lattice top and lattice bottom: @x x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=r-x3; @y x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=w-x3; @z @x in SYMBOL, at end of zero-width slash labels(1,2); zero_width; endchar; @y labels(5,6); zero_width; endchar; @z (I sincerely hope there won't be any more!) ######################################################################## Updates to MFT.WEB (differences as compared with previous version) ;COMPARISON OF PS:MFT.WEB.2 AND PS:MFT.WEB.4 ;OPTIONS ARE /3 **** FILE PS:MFT.WEB.2, 1-7 (349) % Here is TeX material that gets inserted after \input webmac **** FILE PS:MFT.WEB.4, 1-6 (347) % Version 0.4 fixed minor bug regarding empty comments (April 8, 1989). % Here is TeX material that gets inserted after \input webmac *************** **** FILE PS:MFT.WEB.2, 1-29 (1204) \centerline{(Version 0.3, August 1985)} \vfill} **** FILE PS:MFT.WEB.4, 1-30 (1277) \centerline{(Version 0.4, April 1989)} \vfill} *************** **** FILE PS:MFT.WEB.2, 1-116 (5413) @d banner=='This is MFT, Version 0.3' @ The program begins with a fairly normal header, made up of pieces that **** FILE PS:MFT.WEB.4, 1-116 (5483) @d banner=='This is MFT, Version 0.4' @ The program begins with a fairly normal header, made up of pieces that *************** **** FILE PS:MFT.WEB.2, 1-1837 (71552) repeat incr(loc); until (loc=limit)or(buffer[loc]="|"); copy(id_first); **** FILE PS:MFT.WEB.4, 1-1828 (71604) while (loc"|") do incr(loc); copy(id_first); *************** ######################################################################## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Character code reference %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Upper case letters: ABCDEFGHIJKLMNOPQRSTUVWXYZ % Lower case letters: abcdefghijklmnopqrstuvwxyz % Digits: 0123456789 % Square, curly, angle braces, parentheses: [] {} <> () % Backslash, slash, vertical bar: \ / | % Punctuation: . ? ! , : ; % Underscore, hyphen, equals sign: _ - = % Quotes--right left double: ' ` " %"at", "number" "dollar", "percent", "and": @ # $ % & % "hat", "star", "plus", "tilde": ^ * + ~ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [ end of message 015 ] -------