Date: 27 Oct 89 1211 PDT From: Don Knuth Subject: Calling all Grand Wizards Keywords: TeX, new versions I'm hoping to muster as many as possible of TeX's past masters for an important battle charge, as we lead TeX into the 90s! You may have heard rumors that my resistance to change was temporarily worn down during the recent TUG meeting. Well, it's true: I caved in, and decided to make a TeX version 3.0 that differs substantially from the present version 2.991. The new version is upward compatible, nearly as fast, and only about 10K bytes larger if you don't make full use of the new capabilities. During the past few weeks I have hacked the new version together, and it is now ready for beta-testing. I hope it can be spread rapidly to the hundreds of different machine/operatingsystem configurations that currently run yesterday's version. So I desperately need your help. How about it --- won't it be fun to have one last go at TeX and MF, as they enter their truly final stage? I am now convinced that the new version is the natural, ultimate conclusion to the philosophy I adopted in TeX82 and MF84. Major changes were needed to many of the previous programs. I have prepared and tested the following new versions: TeX version 2.992 (will become 3.0 as soon as two months go by without bug reports) MF version 1.8 (will become 2.0, similarly) TANGLE version 4 WEAVE version 4 POOLtype version 3 TFtoPL version 3 PLtoTF version 3 GFtoDVI version 3 MFtype version 2 The changes fall mostly into three categories: (1) Input files are allowed to contain arbitrary 8-bit characters; previously only 7-bit character sets were supported on input. This means in particular that TANGLE now starts its string pool with string number 256, not 128; all programs that use WEB's string pool feature need to be revised, as they will no longer work with the new TANGLE. (Actually I don't know of any such programs except variants of TeX and MF.) (2) The new TeX supports hyphenation in 256 languages simultaneously. These changes were inspired by Michael Ferguson's Multi-lingual TeX, by my implementation is quite different from his. (3) There is a greatly improved ligature mechanism, allowing (for example) letters to change based on their being at the beginning or end of a word. This upward-compatible extension of TFM format allows ligature/kern programs to be up to 32K words long, and it also has a `skip' command for code-sharing to help keep programs compact. Each of these new features affects many hundreds of lines of code. Altogether 218 of TeX's 1377 modules have been changed; dozens of modules have been completely rewritten. I don't think the change files will be severely affected, but the new situation should still be looked at by experts because expertise is needed to do things right. For example, the 8-bit extension to TANGLE looks fairly innocuous, but on my Sun-UNIX system I had to change one of the accompanying C routines (lineread) because the buffer is now an array of 0..255 instead of an array of 0..127; consequently the Berkeley Pascal compiler now uses two bytes for each buffer element! In TANGLE and WEAVE I can afford that extra memory, but not in TeX or MF; so I've made provisions in the latter for optionally adding/subtracting 128 when reading/writing string pool elements. In your change file you only need to redefine two WEB macros to make that happen; but you also need to change one line of the system-dependent calledit function (which reads directly from TeX/MF's string pool). To run the new TRIP test, you need the new PLtoTF; otherwise you won't have a test font with its new ligature mechanisms. To run the new TRAP test, you need the new TFtoPL in order to test MF's new ability to generate such ligature data. Look for the phrase "change file" in the files tex82.bug and mf84.bug for a few hints. Once you have these new systems working, there will be much more to do in order to make best use of the new 8-bit capabilities. But that can be done in a more relaxed way; the big upgrade in the basic systems needs to be done quickly. With your help, this transition should go very smoothly; we should have trouble only when people who use the new facilities try to do so on old versions of TeX and MF. Therefore: THE SOONER WE STAMP OUT THE OLD VERSIONS, THE BETTER. I've put copies of the new sources on the master TeX archive at Stanford. Joe Weening will soon be sending a message to TeXhax announcing the new location and organization of this archive. I've also sent copies of my personal change files, and updated the files that log all the changes. I hope this material will propagate soon to other TeX archives around the world. A complete list of changes to The TeXbook and The METAFONTbook will appear in the next TUGboat, which has just gone to the printer. A new printing of Volume A is now in the bindery and will be available soon in bookstores; this contains all the version 3.0 changes to TeX. (You will be able to identify it by the words "ninth printing" on the copyright page, on the back of the title page.) Unfortunately the publishers had just made a large printing of the paperback version before I decided to make these changes, so it will be a few months before the paperback version of the TeXbook is updated; at that time it will be recognizable by the words "Seventeenth printing". A-W is keeping two independent numbering schemes for printings of the hardback and paperback versions. The finder's fee for bugs in the new code is $10.24. And if you discover a bug in the "old" paats of TeX while you're installing the new version, you win $163.84. ======================================================================== Date: 30 Oct 89 1240 PST From: Don Knuth Subject: New DVItype Keywords: TeX, dvitype As of today, the new TeX sources at Stanford contain DVItype version 3, which differs from the old by having a new mode of output intermediate between "terse" and "verbose". Old codes were 0 (errors only), 1 (terse), 2 (verbose), 3 (theworks); new codes are 0 (errors only), 1 (terse), 2 (mnemonics), 3 (verbose), 4 (works). As before you run the TRIP test with level 2. This will now choose the new mode, which will still validate the TRIP test although it will lead to files that are almost identical in spite of floating point rounding differences. (The old TRIP test could give you a TRIP.TYP file that looked almost totally different from the "definitive" TRIP.TYP, even when the test was passed.)