summaryrefslogtreecommitdiff
path: root/info/digests/tex-implementors/message.10
blob: f1a6bdf8f8b1249aa8c2196677c66d95da182811 (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
Date:	  15 Dec 88				Message No:	010

To:	  TeX implementors and distributors

From:	  Barbara Beeton

Subject:  retraction of TeX version 2.94


Don Knuth has just sent me several messages dealing with the problems
that arose from the change that led to TeX 2.94 and Metafont 1.6.  He has
actually made the additional changes he alludes to in the message below,
but since making those changes available will involve more hours than I
have today, it seemed best to get this notice out quickly.  (There are
also some changes to some of the CM* fonts; these will also be dealt with
in the next message.)

Here is Don's message.

All right, I guess I capitulate. When I made the change that
led to Version 2.94 (namely, to decide that a terminal input file
could never really close), my reasoning was based on an
argument that was totally convincing to me at the time, but now
I realize it was based on faulty premises.

Namely: I had used TeX for ten years on a computer system that has no such
thing as EOF on the terminal, and I'd NEVER felt the need for that
capability.  Therefore I believed it was possible to live happily with a
system that didn't support EOF on the terminal.

The flaw in my argument was that I also assumed, implicitly, that
any decent operating system would have a standard way to exit
from an arbitrary running program. (The WAITS system, for example, has a
great big key that acts like a super-powerful ^C; this stops
the job you're running and lets you talk to the operating system.)

Later conversations with Tom Rokicki and Joe Weening informed me
that UNIX, for example, has evolved a different style. Still, I thought
the change I made in version 2.94 would be OK because it says, in effect,
"EOF on the terminal doesn't happen, as far as TeX is concerned; therefore
system implementors can do whatever they want in their change files."

The flaw in that argument is that this part of TeX is tricky and
I should provide more guidance to the system implementors. I envisaged
the introduction of a new boolean variable, which would allow operation
in the old style without the problem that made a change mandatory;
but I never explained the idea to anybody.

Now Chris Thompson has sent me another reason for EOF on the terminal.  He
independently came up with the idea of the boolean variable; and he proved
to my satisfaction that I should put that variable into all versions of
TeX (and METAFONT), because it is clean and it makes the issues as easy to
understand as they possibly could be. I was holding back because I dislike
making lots of changes to Volumes B and D at this late date. (Several
hours of work are needed every time I have to deal with it.)  But I cannot
responsibly leave this flaw in programs that I hope to be proud of for the
rest of my life.

Instead of introducing a new boolean variable, I could have solved
the problem in a hoky way by setting job_name negative during the
brief time before the log file is opened. That would have meant
fewer updates to the indexes of Volumes B and D. But it would also
have meant tricky code that would look uglier every time I saw it!

So, I'll be introducing yet a new TeX and METAFONT later today.
This will essentially retract the change made in Version 2.94, replacing
it by another change with two properties: (1) The bug that was fixed
by disallowing EOF on terminal input in 2.94 will be fixed in another
way. (2) The change files that worked for 2.93 should still work
without change in 2.95.


[ end of message 010 ]
-------