Date:	  24 Dec 87				Message No:	003

To:	  TeX implementors and distributors

From:	  Barbara Beeton

Subject:  TeX 2.9, DVItype 2.9


I've just received a message from Don Knuth regarding two messages I
forwarded to him from TeXhax; both appeared in issue 103.

Oliver Schoett, Negative column widths in \halign -- bug or feature?

Chris Thompson, re the expansion of \csname...\endcsname to be \relax

The reply:

	Naturally I'm hoping to get the last bug out of TeX before the
	bonus amount doubles next week!

	The "bug or feature" discussed by Oliver Schoett is a feature.
	I don't want to forbid negative widths, even though they
	can be confusing in certain cases. Negative numbers have
	proved to be useful even in accounting, so I hesitate to
	say that they will never be desired.

	On the other hand, Chris Thompson has found a bug; I can't argue
	that the assignment should be global. Ergo, he wins the prize
	and TeX moves to Version 2.9.

Updates from TeX82.BUG, ERRATA.TeX and a list of differences between
TeX.WEB 2.8 and 2.9 are given below.

A point to ponder:  What's the next number after 2.9?

			--------------------

A couple of items need to be cleaned up from earlier messages.

In message 2, the underline _ and assignment := characters were reversed
in item 336 of the extract from TeX82.BUG.  This is an unfortunate result
of my having erred in translating the idiosyncratic SAIL character set by
hand instead of by a nice tested canned procedure.  336 is included in
its correct form in the expanded extract below.  Apologies, and thanks to
Chris Thompson for pointing it out.

The TeX bug fixed in version 2.7 (bug 335) has also been fixed in DVItype
version 2.9.  A difference list between DVItype 2.8 and 2.9 appears below.

			--------------------

Extract from TeX82.BUG

336. If there are no \patterns and some \lccode is 1 (Breitenlohner, 12Dec87)
@x module 952
trie_link(0):=0; trie_char(0):=0; trie_op(0):=0;
@y
trie_link(0):=0; trie_char(0):=0; trie_op(0):=min_quarterword;
@z

337. \csname might encounter undefined_cs in a group (Chris Thompson, 23Dec87)
@x module 372
  begin eqtb[cur_cs]:=eqtb[frozen_relax];
@y
  begin eq_define(cur_cs,relax,256);
@z

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

			--------------------

Extracts from ERRATA.TeX (differences as compared with previous version)

**** FILE PS:<BEETON.BB>ERRATA.NEW.2, 2-3 (1510)
\bugonpage A213, lines 34--35 (12/23/87)

\ninepoint\noindent
text will be a single control sequence token, defined to be like |\relax| if
its meaning is currently undefined.

**** FILE PS:<BEETON.BB>ERRATA.TEX.73, 2-2 (1508)
***************

**** FILE PS:<BEETON.BB>ERRATA.NEW.2, 3-6 (3474)
\bugonpage B2, line 32 (12/23/87)

\ninepoint\noindent\hskip10pt
{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
{\tt This\]is\]TeX,\]Version\]2.9\char'23}\quad
**** FILE PS:<BEETON.BB>ERRATA.TEX.73, 3-6 (3290)
\bugonpage B2, line 32 (11/17/87)

\ninepoint\noindent\hskip10pt
{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
{\tt This\]is\]TeX,\]Version\]2.8\char'23}\quad
***************

**** FILE PS:<BEETON.BB>ERRATA.NEW.2, 3-34 (4391)
\bugonpage B156, line 28 (12/23/87)

\ninepoint\noindent\hskip20pt
{\bf begin }$\\{eq\_define}(\\{cur\_cs},\\{relax},256)$;

\bugonpage B157, mini-index (12/23/87)

\eightpoint\noindent
Delete the entries for `\\{eqtb}' and `\\{frozen\_relax}'; replace them
by the following:
\\{eq\_define}: {\bf procedure}, \S227.\par
$\\{relax}=0$, \S207.\par

**** FILE PS:<BEETON.BB>ERRATA.TEX.73, 3-34 (4207)
***************

**** FILE PS:<BEETON.BB>ERRATA.NEW.2, 3-178 (8959)
\bugonpage B551, both columns (12/23/87)

\eightpoint[Remove `372' from \\{eqtb} and put it into \\{eq\_define}.]

\bugonpage B554, left column (12/23/87)

\eightpoint[Remove `372' from \\{frozen\_relax}.]

**** FILE PS:<BEETON.BB>ERRATA.TEX.73, 3-164 (8413)
***************

**** FILE PS:<BEETON.BB>ERRATA.NEW.2, 3-195 (9393)
\bugonpage B567, left column (12/23/87)

\eightpoint[Insert `372' into \\{relax}.]

**** FILE PS:<BEETON.BB>ERRATA.TEX.73, 4-1 (8633)
***************

			--------------------

Differences between TeX.WEB versions 2.9 and 2.8

**** FILE PS:<1SCRATCH>TEX.WEB.3, 1-26 (1735)
% Version 2.9 makes \csname\endcsname's "relax" local (December 1987).
% A reward of $40.96 will be paid to the first finder of any remaining bug.
**** FILE PS:<TEX.WEB>TEX.WEB.3, 1-27 (1737)
% A reward of $40.96 will be paid to the first finder of any remaining bug.
***************

**** FILE PS:<1SCRATCH>TEX.WEB.3, 2-93 (9066)
@d banner=='This is TeX, Version 2.9' {printed when \TeX\ starts}
@ Different \PASCAL s have slightly different conventions, and the present
**** FILE PS:<TEX.WEB>TEX.WEB.3, 1-166 (8922)
@d banner=='This is TeX, Version 2.8' {printed when \TeX\ starts}
@ Different \PASCAL s have slightly different conventions, and the present
***************

**** FILE PS:<1SCRATCH>TEX.WEB.3, 26-119 (332316)
  begin eq_define(cur_cs,relax,256);
  end; {the control sequence will now match `\.{\\relax}'}
**** FILE PS:<TEX.WEB>TEX.WEB.3, 1-7543 (332196)
  begin eqtb[cur_cs]:=eqtb[frozen_relax];
  end; {the control sequence will now match `\.{\\relax}'}
***************

			--------------------

Differences between DVItype.WEB versions 2.9 and 2.8

**** FILE TX:<BNB.WORK>DVITYPE.WEB.1, 1-14 (823)
% Version 2.9 changes negative scaling as in TeX version 2.7 (November, 1987).
% Here is TeX material that gets inserted after \input webmac
**** FILE TX:<TEX82.SOURCES>DVITYPE.WEB.7, 1-15 (825)
% Here is TeX material that gets inserted after \input webmac
***************

**** FILE TX:<BNB.WORK>DVITYPE.WEB.1, 1-33 (1532)
  \centerline{(Version 2.9, November 1987)}
  \vfill}
**** FILE TX:<TEX82.SOURCES>DVITYPE.WEB.7, 1-32 (1452)
  \centerline{(Version 2.8, August 1984)}
  \vfill}
***************

**** FILE TX:<BNB.WORK>DVITYPE.WEB.1, 1-81 (4122)
@d banner=='This is DVItype, Version 2.9' {printed when the program starts}
@ This program is written in standard \PASCAL, except where it is necessary
**** FILE TX:<TEX82.SOURCES>DVITYPE.WEB.7, 1-80 (4040)
@d banner=='This is DVItype, Version 2.8' {printed when the program starts}
@ This program is written in standard \PASCAL, except where it is necessary
***************

**** FILE TX:<BNB.WORK>DVITYPE.WEB.1, 1-1143 (52850)
integer~|z|, which is known to be less than $2^{27}$.
If $|z|<2^{23}$, the individual multiplications $b\cdot z$, $c\cdot z$,
**** FILE TX:<TEX82.SOURCES>DVITYPE.WEB.7, 1-1142 (52768)
integer~|z|, which is known to be less than $2^{27}$. Let $\alpha=16z$.
If $|z|<2^{23}$, the individual multiplications $b\cdot z$, $c\cdot z$,
***************

**** FILE TX:<BNB.WORK>DVITYPE.WEB.1, 1-1150 (53311)
or the same quantity minus $\alpha=2^{4+e}z^\prime$ if $a=255$.
This calculation must be
done exactly, for the reasons stated above; the following program does the
**** FILE TX:<TEX82.SOURCES>DVITYPE.WEB.7, 1-1149 (53247)
or the same quantity minus $\alpha$ if $a=255$.  This calculation must be
done exactly, for the reasons stated above; the following program does the
***************

**** FILE TX:<BNB.WORK>DVITYPE.WEB.1, 1-1166 (53927)
begin alpha:=16;
while z>=@'40000000 do
  begin z:=z div 2; alpha:=alpha+alpha;
  end;
beta:=256 div alpha; alpha:=alpha*z;
end
**** FILE TX:<TEX82.SOURCES>DVITYPE.WEB.7, 1-1164 (53847)
begin alpha:=16*z; beta:=16;
while z>=@'40000000 do
  begin z:=z div 2; beta:=beta div 2;
  end;
end
***************


[ end of message 003 ]
-------