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 ] -------