summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
Diffstat (limited to 'Build')
-rw-r--r--Build/source/texk/web2c/ChangeLog97
-rw-r--r--Build/source/texk/web2c/Makefile.am27
-rw-r--r--Build/source/texk/web2c/Makefile.in26
-rw-r--r--Build/source/texk/web2c/NEWS4
-rw-r--r--Build/source/texk/web2c/alephdir/alephextra.h2
-rw-r--r--Build/source/texk/web2c/alephdir/com16bit.ch72
-rw-r--r--Build/source/texk/web2c/alephdir/eobase.ch15
-rw-r--r--Build/source/texk/web2c/alephdir/eocprt.ch2
-rw-r--r--Build/source/texk/web2c/alephdir/eoext.ch4
-rw-r--r--Build/source/texk/web2c/alephdir/eover.ch6
-rw-r--r--Build/source/texk/web2c/alephdir/om16bit.ch11
-rw-r--r--Build/source/texk/web2c/alephdir/omfont.ch6
-rw-r--r--Build/source/texk/web2c/alephdir/omstr.ch14
-rw-r--r--Build/source/texk/web2c/dvitype.web6
-rw-r--r--Build/source/texk/web2c/eptexdir/eptex.ech2
-rw-r--r--Build/source/texk/web2c/eptexdir/eptexextra.h2
-rw-r--r--Build/source/texk/web2c/eptexdir/eptrip/eptrip.diffs1110
-rw-r--r--Build/source/texk/web2c/etexdir/etex.ch23
-rw-r--r--Build/source/texk/web2c/etexdir/etexextra.h2
-rw-r--r--Build/source/texk/web2c/etexdir/etrip/etrip.diffs334
-rw-r--r--Build/source/texk/web2c/etexdir/etrip/etrip.tex8
-rw-r--r--Build/source/texk/web2c/etexdir/tex.ch04
-rw-r--r--Build/source/texk/web2c/etexdir/tex.ech6
-rw-r--r--Build/source/texk/web2c/euptexdir/euptex.ch02
-rw-r--r--Build/source/texk/web2c/euptexdir/euptexextra.h2
-rw-r--r--Build/source/texk/web2c/euptexdir/euptrip/euptrip.diffs1163
-rw-r--r--Build/source/texk/web2c/gftodvi.web4
-rw-r--r--Build/source/texk/web2c/gftopk.web18
-rw-r--r--Build/source/texk/web2c/gftype.web4
-rw-r--r--Build/source/texk/web2c/lib/texmfmp.c4
-rw-r--r--Build/source/texk/web2c/mf-binpool.ch4
-rw-r--r--Build/source/texk/web2c/mf.ch49
-rw-r--r--Build/source/texk/web2c/mf.web140
-rw-r--r--Build/source/texk/web2c/mfluadir/mf-lua.ch10
-rw-r--r--Build/source/texk/web2c/mfluadir/mflua_version.h2
-rw-r--r--Build/source/texk/web2c/mfluadir/mfluaextra.h2
-rw-r--r--Build/source/texk/web2c/mfluadir/mfluatrap/mfluatrap.diffs330
-rw-r--r--Build/source/texk/web2c/mfluajitdir/mf-luajit.ch2
-rw-r--r--Build/source/texk/web2c/mfluajitdir/mfluajitextra.h4
-rw-r--r--Build/source/texk/web2c/mfluajitdir/mfluajittrap/mfluajittrap.diffs332
-rw-r--r--Build/source/texk/web2c/mft.ch11
-rw-r--r--Build/source/texk/web2c/mft.web22
-rwxr-xr-xBuild/source/texk/web2c/mftraptest.test4
-rw-r--r--Build/source/texk/web2c/pdftexdir/pdftex.web213
-rw-r--r--Build/source/texk/web2c/pdftexdir/pdftexextra.h2
-rw-r--r--Build/source/texk/web2c/pdftexdir/tex.ch04
-rw-r--r--Build/source/texk/web2c/pltotf.web12
-rw-r--r--Build/source/texk/web2c/pooltype.web8
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex-base.ch36
-rw-r--r--Build/source/texk/web2c/ptexdir/ptexextra.h2
-rw-r--r--Build/source/texk/web2c/ptexdir/ptrip/ptrip.diffs479
-rw-r--r--Build/source/texk/web2c/tangle.ch14
-rw-r--r--Build/source/texk/web2c/tangle.web35
-rw-r--r--Build/source/texk/web2c/tangleboot.pin20
-rw-r--r--Build/source/texk/web2c/tex.ch82
-rw-r--r--Build/source/texk/web2c/tex.web222
-rw-r--r--Build/source/texk/web2c/tftopl.web4
-rwxr-xr-xBuild/source/texk/web2c/triptest.test4
-rwxr-xr-xBuild/source/texk/web2c/triptrap-sh14
-rw-r--r--Build/source/texk/web2c/triptrap/README22
-rw-r--r--Build/source/texk/web2c/triptrap/mftrap.diffs251
-rw-r--r--Build/source/texk/web2c/triptrap/mftrap.fot4
-rw-r--r--Build/source/texk/web2c/triptrap/mftrap.log90
-rw-r--r--Build/source/texk/web2c/triptrap/mftrapin.log8
-rw-r--r--Build/source/texk/web2c/triptrap/mptrap.diffs94
-rw-r--r--Build/source/texk/web2c/triptrap/trap.typ2
-rw-r--r--Build/source/texk/web2c/triptrap/trip.diffs168
-rw-r--r--Build/source/texk/web2c/triptrap/trip.fot2
-rw-r--r--Build/source/texk/web2c/triptrap/trip.log15
-rw-r--r--Build/source/texk/web2c/triptrap/trip.tex2
-rw-r--r--Build/source/texk/web2c/triptrap/trip.typ2
-rw-r--r--Build/source/texk/web2c/triptrap/tripin.log6
-rw-r--r--Build/source/texk/web2c/uptexdir/uptex-m.ch2
-rw-r--r--Build/source/texk/web2c/uptexdir/uptexextra.h2
-rw-r--r--Build/source/texk/web2c/uptexdir/uptrip/uptrip.diffs501
-rw-r--r--Build/source/texk/web2c/vftovp.web12
-rw-r--r--Build/source/texk/web2c/vptovf.web12
-rw-r--r--Build/source/texk/web2c/weave.ch7
-rw-r--r--Build/source/texk/web2c/weave.web29
-rw-r--r--Build/source/texk/web2c/xetexdir/xetex.web208
-rw-r--r--Build/source/texk/web2c/xetexdir/xetexextra.h2
81 files changed, 4498 insertions, 1986 deletions
diff --git a/Build/source/texk/web2c/ChangeLog b/Build/source/texk/web2c/ChangeLog
index 63ce7656d4c..fff0c1e135c 100644
--- a/Build/source/texk/web2c/ChangeLog
+++ b/Build/source/texk/web2c/ChangeLog
@@ -1,3 +1,100 @@
+2021-01-29 Karl Berry <karl@freefriends.org>
+
+ * NEWS: mention tuneup.
+
+ * alephdir/alephextra.h,
+ * alephdir/com16bit.ch,
+ * alephdir/eobase.ch,
+ * alephdir/eocprt.ch,
+ * alephdir/eoext.ch,
+ * alephdir/eover.ch,
+ * alephdir/om16bit.ch,
+ * alephdir/omfont.ch,
+ * alephdir/omstr.ch,
+ * eptexdir/eptex.ech,
+ * eptexdir/eptexextra.h,
+ * etexdir/etex.ch,
+ * etexdir/etexextra.h,
+ * etexdir/tex.ch0,
+ * etexdir/tex.ech,
+ * euptexdir/euptex.ch0,
+ * euptexdir/euptexextra.h,
+ * lib/texmfmp.c,
+ * mf-binpool.ch,
+ * mf.ch,
+ * mfluadir/mf-lua.ch,
+ * mfluadir/mflua_version.h,
+ * mfluadir/mfluaextra.h,
+ * mfluajitdir/mf-luajit.ch,
+ * mfluajitdir/mfluajitextra.h,
+ * mft.ch,
+ * pdftexdir/pdftexextra.h,
+ * pdftexdir/tex.ch0,
+ * ptexdir/ptex-base.ch,
+ * ptexdir/ptexextra.h,
+ * tangle.ch,
+ * tangleboot.pin,
+ * tex.ch,
+ * uptexdir/uptex-m.ch,
+ * uptexdir/uptexextra.h,
+ * weave.ch,
+ * xetexdir/xetexextra.h: updates for 2021 tuneup.
+
+ * mftraptest.test,
+ * triptest.test,
+ * triptrap-sh,
+ * mfluadir/mfluatrap/mfluatrap.diffs,
+ * etexdir/etrip/etrip.diffs,
+ * triptrap/trip.diffs,
+ * triptrap/mftrap.diffs,
+ * triptrap/mptrap.diffs,
+ * eptexdir/eptrip/eptrip.diffs,
+ * uptexdir/uptrip/uptrip.diffs,
+ * euptexdir/euptrip/euptrip.diffs,
+ * mfluajitdir/mfluajittrap/mfluajittrap.diffs,
+ * ptexdir/ptrip/ptrip.diffs: trip/trap updates for 2021 tuneup.
+
+ * tangleboot.pin: update bootstrap file.
+
+ * triptrap/README,
+ * Makefile.am: doc for running triptrap.
+
+2021-01-29 Donald Knuth <tex-k@tug.org>
+
+ 2021 tuneup update. Overview:
+ https://tug.org/TUGboat/tb42-1/tb130knuth-tuneup21.pdf
+ Bug reporting info:
+ https://tug.org/texmfbug/
+ New TeX version is 3.141592653, MF 2.71828182.
+
+ * dvitype.web,
+ * gftodvi.web,
+ * gftopk.web,
+ * gftype.web,
+ * mf.web,
+ * mft.web,
+ * pltotf.web,
+ * pooltype.web,
+ * tangle.web,
+ * tex.web,
+ * tftopl.web,
+ * vftovp.web,
+ * vptovf.web,
+ * weave.web: new versions. BTW, these are all of the web
+ files which DEK maintains. The rest are maintained by other people:
+ bibtex.web (Oren), patgen.web and dvicopy.web (here),
+ pktype.web and pktogf.web (Tom Rokicki).
+
+ * triptrap/mftrap.fot,
+ * triptrap/mftrap.log,
+ * triptrap/mftrapin.log,
+ * triptrap/trap.typ,
+ * triptrap/trip.fot,
+ * triptrap/trip.log,
+ * triptrap/trip.tex,
+ * triptrap/trip.typ,
+ * triptrap/tripin.log: trip and trap test updates.
+
2020-10-27 Karl Berry <karl@freefriends.org>
* pktogf.web: TFM widths are 2^20 times the ratio, not 2^24.
diff --git a/Build/source/texk/web2c/Makefile.am b/Build/source/texk/web2c/Makefile.am
index 5042f9177f1..aaee85a7d1c 100644
--- a/Build/source/texk/web2c/Makefile.am
+++ b/Build/source/texk/web2c/Makefile.am
@@ -1,7 +1,7 @@
## $Id$
## Makefile.am for the TeX Live subdirectory texk/web2c/.
##
-## Copyright 2017-2020 Karl Berry <tex-live@tug.org>
+## Copyright 2017-2021 Karl Berry <tex-live@tug.org>
## Copyright 2009-2015 Peter Breitenlohner <tex-live@tug.org>
## You may freely use, modify and/or distribute this file.
##
@@ -157,6 +157,31 @@ AM_TESTS_ENVIRONMENT += DIFFFLAGS='$(DIFFFLAGS)'; export DIFFFLAGS;
AM_TESTS_ENVIRONMENT += LN_S='$(LN_S)'; export LN_S;
AM_TESTS_ENVIRONMENT += KPSEWHICH='$(KPSEWHICH)'; export KPSEWHICH;
+# To run, e.g., just the original trip test, in the build directory:
+# make -C $ww TRIPTRAP=trip.diffs triptrap
+# where $ww is the web2c build directory.
+#
+# This will run the triptrap-sh script
+# which then runs make TEST=triptest.test check-am,
+# which then runs the (srcdir file) triptest.test script;
+# its output will be in (builddir file) trip.diffs,
+# and triptest.out if the test failed,
+# plus various created files in the tripdir/ subdirectory.
+# The triptest.diffs file will have the actual abs_srcdir value replaced
+# with the constant string "SRCDIR" to minimize differences, and "../"
+# replaced with "./" to match the canonical output. Confusing. For the
+# real output, see triptest.log.
+#
+# To build only tex, make -C $ww tex (i.e., in builddir) should do it.
+# Unfortunately the check-am target depends on all-am, so all engines
+# are built before any tests are run. If this is a problem, just have to
+# edit the generated Makefile in builddir to remove the dependency.
+#
+# Other per-engine invocations (see triptrap-sh for complete list):
+# make -C $ww mf && make -C $ww TRIPTRAP=mftrap.diffs triptrap
+# make -C $ww etex && make -C $ww TRIPTRAP=etrip.diffs triptrap
+# make -C $ww ptex && make -C $ww TRIPTRAP=ptrip.diffs triptrap
+#
triptrap_diffs = $(AM_V_GEN)srcdir=$(srcdir) abs_srcdir=$(abs_srcdir) MAKE=$(MAKE) $(SHELL) $(srcdir)/triptrap-sh
.PHONY: triptrap
diff --git a/Build/source/texk/web2c/Makefile.in b/Build/source/texk/web2c/Makefile.in
index a67714018ef..56317a3cb30 100644
--- a/Build/source/texk/web2c/Makefile.in
+++ b/Build/source/texk/web2c/Makefile.in
@@ -3680,6 +3680,32 @@ AM_TESTS_ENVIRONMENT = abs_srcdir=$(abs_srcdir); export abs_srcdir; \
DIFF='$(DIFF)'; export DIFF; DIFFFLAGS='$(DIFFFLAGS)'; export \
DIFFFLAGS; LN_S='$(LN_S)'; export LN_S; \
KPSEWHICH='$(KPSEWHICH)'; export KPSEWHICH;
+
+# To run, e.g., just the original trip test, in the build directory:
+# make -C $ww TRIPTRAP=trip.diffs triptrap
+# where $ww is the web2c build directory.
+#
+# This will run the triptrap-sh script
+# which then runs make TEST=triptest.test check-am,
+# which then runs the (srcdir file) triptest.test script;
+# its output will be in (builddir file) trip.diffs,
+# and triptest.out if the test failed,
+# plus various created files in the tripdir/ subdirectory.
+# The triptest.diffs file will have the actual abs_srcdir value replaced
+# with the constant string "SRCDIR" to minimize differences, and "../"
+# replaced with "./" to match the canonical output. Confusing. For the
+# real output, see triptest.log.
+#
+# To build only tex, make -C $ww tex (i.e., in builddir) should do it.
+# Unfortunately the check-am target depends on all-am, so all engines
+# are built before any tests are run. If this is a problem, just have to
+# edit the generated Makefile in builddir to remove the dependency.
+#
+# Other per-engine invocations (see triptrap-sh for complete list):
+# make -C $ww mf && make -C $ww TRIPTRAP=mftrap.diffs triptrap
+# make -C $ww etex && make -C $ww TRIPTRAP=etrip.diffs triptrap
+# make -C $ww ptex && make -C $ww TRIPTRAP=ptrip.diffs triptrap
+#
triptrap_diffs = $(AM_V_GEN)srcdir=$(srcdir) abs_srcdir=$(abs_srcdir) MAKE=$(MAKE) $(SHELL) $(srcdir)/triptrap-sh
# The environment for making dumps.
diff --git a/Build/source/texk/web2c/NEWS b/Build/source/texk/web2c/NEWS
index 1e7b70cfd82..6ddb6a35364 100644
--- a/Build/source/texk/web2c/NEWS
+++ b/Build/source/texk/web2c/NEWS
@@ -1,5 +1,9 @@
This file records noteworthy changes. (Public domain.)
+* Knuth 2021 tune-up, with fixes to all of his *.web files. Overview:
+https://tug.org/TUGboat/42-1/tb130knuth-tuneup21.pdf
+New TeX version is 3.141592653, MF 2.71828182.
+
* pdftex, xetex, e(u)ptex: if \tracinglostchars >= 3,
make missing characters an error (not just a log message),
and always report the character code in hex.
diff --git a/Build/source/texk/web2c/alephdir/alephextra.h b/Build/source/texk/web2c/alephdir/alephextra.h
index 3a997f0a926..786ed44d0bf 100644
--- a/Build/source/texk/web2c/alephdir/alephextra.h
+++ b/Build/source/texk/web2c/alephdir/alephextra.h
@@ -23,7 +23,7 @@ along with Aleph; if not, write to the Free Software Foundation, Inc.,
*/
-#define BANNER "This is Aleph, Version 3.14159265-1.15-2.1-0.1"
+#define BANNER "This is Aleph, Version 3.141592653-1.15-2.1-0.1"
#define COPYRIGHT_HOLDER "Aleph task force"
#define AUTHOR NULL
#define PROGRAM_HELP ALEPHHELP
diff --git a/Build/source/texk/web2c/alephdir/com16bit.ch b/Build/source/texk/web2c/alephdir/com16bit.ch
index 3ac2ffce5ac..78a7047adb2 100644
--- a/Build/source/texk/web2c/alephdir/com16bit.ch
+++ b/Build/source/texk/web2c/alephdir/com16bit.ch
@@ -40,9 +40,9 @@
@z
@x
-@d banner=='This is Aleph, Version 3.14159265-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.141592653-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
@y
-@d banner=='This is Aleph, Version 3.14159265-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.141592653-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
@d banner_k==banner {Web2C announces itself}
@z
@@ -740,13 +740,14 @@ end;
% selector from 16 to 15 in term_input, due to the lack of this check in
% a recursive error() call.
%
-@x [6.83] l.1893 - avoid wrong interaction
-loop@+begin continue: clear_for_error_prompt; prompt_input("? ");
-@y
-loop@+begin continue:
-if interaction<>error_stop_mode then return;
-clear_for_error_prompt; prompt_input("? ");
-@z
+%@x [6.83] l.1893 - avoid wrong interaction
+%applied in 3.141592653
+%loop@+begin continue: clear_for_error_prompt; prompt_input("? ");
+%@y
+%loop@+begin continue:
+%if interaction<>error_stop_mode then return;
+%clear_for_error_prompt; prompt_input("? ");
+%@z
@x [6.84] l.1904 - Implement the switch-to-editor option.
line ready to be edited. But such an extension requires some system
@@ -774,14 +775,14 @@ been commented~out.
@z
@x [6.84] l.1903 - Implement the switch-to-editor option.
-"E": if base_ptr>0 then
+"E": if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
begin print_nl("You want to edit file ");
@.You want to edit file x@>
slow_print(input_stack[base_ptr].name_field);
print(" at line "); print_int(line);
interaction:=scroll_mode; jump_out;
@y
-"E": if base_ptr>0 then
+"E": if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
begin edit_name_start:=str_start(edit_file.name_field);
edit_name_length:=str_start(edit_file.name_field+1) -
str_start(edit_file.name_field);
@@ -950,23 +951,24 @@ page_depth:=0; page_max_depth:=0;
input and output, establishes the initial values of the date and time.
@^system dependencies@>
Since standard \PASCAL\ cannot provide such information, something special
-is needed. The program here simply specifies July 4, 1776, at noon; but
-users probably want a better approximation to the truth.
+is needed. The program here simply assumes that suitable values appear in
+the global variables \\{sys\_time}, \\{sys\_day}, \\{sys\_month}, and
+\\{sys\_year} (which are initialized to noon on 4 July 1776,
+in case the implementor is careless).
@p procedure fix_date_and_time;
-begin time:=12*60; {minutes since midnight}
-day:=4; {fourth day of the month}
-month:=7; {seventh month of the year}
-year:=1776; {Anno Domini}
+begin sys_time:=12*60;
+sys_day:=4; sys_month:=7; sys_year:=1776; {self-evident truths}
+time:=sys_time; {minutes since midnight}
+day:=sys_day; {day of the month}
+month:=sys_month; {month of the year}
+year:=sys_year; {Anno Domini}
end;
@y
@ The following procedure, which is called just before \TeX\ initializes its
input and output, establishes the initial values of the date and time.
-It calls a macro-defined |date_and_time| routine. |date_and_time|
-in turn is a C macro, which calls |get_date_and_time|, passing
-it the addresses of the day, month, etc., so they can be set by the
-routine. |get_date_and_time| also sets up interrupt catching if that
-is conditionally compiled in the C code.
+It calls an externally defined |date_and_time|, which also sets up
+interrupt catching. See more comments in \.{tex.ch}.
@^system dependencies@>
@d fix_date_and_time==o_date_and_time(int_base+time_code,
@@ -1624,7 +1626,7 @@ if name=str_ptr-1 then {we can try to conserve string pool space now}
@z
@x [29.537] l.10359 - start_input: don't return filename to string pool.
-if name=str_ptr-1 then {we can conserve string pool space now}
+if name=str_ptr-1 then {conserve string pool space (but see note above)}
begin flush_string; name:=cur_name;
end;
@y
@@ -2009,9 +2011,9 @@ not_found:
@z
@x [43.943] l.18346 - web2c can't parse negative lower bounds in arrays. Sorry.
-@!init@! trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
+@!init @!trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
@y
-@!init@! trie_op_hash:array[neg_trie_op_size..trie_op_size] of 0..trie_op_size;
+@!init @!trie_op_hash:array[neg_trie_op_size..trie_op_size] of 0..trie_op_size;
@z
@x [43.944] l.18365 - web2c can't parse negative lower bounds in arrays. Sorry
@@ -2057,7 +2059,7 @@ tini
@z
@x [43.590] l.18524 - Dynamically allocate & larger tries.
-@!init@!trie_taken:packed array[1..trie_size] of boolean;
+@!init @!trie_taken:packed array[1..trie_size] of boolean;
{does a family start here?}
@t\hskip10pt@>@!trie_min:array[ASCII_code] of trie_pointer;
{the first possible slot for each character}
@@ -2065,7 +2067,7 @@ tini
@t\hskip10pt@>@!trie_not_ready:boolean; {is the trie still in linked form?}
tini
@y
-@!init@!trie_taken: ^boolean;
+@!init @!trie_taken: ^boolean;
{does a family start here?}
@t\hskip10pt@>@!trie_min:^trie_pointer;
{the first possible slot for each character}
@@ -2616,6 +2618,12 @@ final_end: do_final_end;
end {|main_body|};
@z
+@x
+begin @<Finish the extensions@>; new_line_char:=-1;
+@y
+begin @<Finish the extensions@>; set_new_eqtb_int(int_base+new_line_char_code,-1);
+@z
+
@x [51.1333] l.24254 - Print new line before termination; switch to editor if necessary.
slow_print(log_name); print_char(".");
end;
@@ -2634,6 +2642,12 @@ if (edit_name_start<>0) and (interaction>batch_mode) then
@y
@z
+@x
+begin c:=cur_chr; if c<>1 then new_line_char:=-1;
+@y
+begin c:=cur_chr; if c<>1 then set_new_eqtb_int(int_base+new_line_char_code,-1);
+@z
+
@x [51.1335] l.24335 - Only do dump if ini.
begin @!init for c:=top_mark_code to split_bot_mark_code do
if cur_mark[c]<>null then delete_token_ref(cur_mark[c]);
@@ -2687,8 +2701,8 @@ if trie_not_ready then begin {initex without format loaded}
% running. The best approximation is to do a core dump, then run the
% debugger on it later.
@x [52.1338] l.24411 - Core-dump in debugging mode on 0 input.
- begin goto breakpoint;@\ {go to every label at least once}
- breakpoint: m:=0; @{'BREAKPOINT'@}@\
+ begin goto breakpoint;@/ {go to every declared label at least once}
+ breakpoint: m:=0; @{'BREAKPOINT'@}@/
end
@y
dump_core {do something to cause a core dump}
diff --git a/Build/source/texk/web2c/alephdir/eobase.ch b/Build/source/texk/web2c/alephdir/eobase.ch
index a0d7d0ab007..080b99c50fc 100644
--- a/Build/source/texk/web2c/alephdir/eobase.ch
+++ b/Build/source/texk/web2c/alephdir/eobase.ch
@@ -39,8 +39,9 @@
@x limbo l.1 - this is e-TeX
%
% This program is copyright (C) 1982 by D. E. Knuth; all rights are reserved.
-% Copying of this file is authorized only if (1) you are D. E. Knuth, or if
-% (2) you make absolutely no changes to your copy. (The WEB system provides
+% Unlimited copying and redistribution of this file are permitted as long
+% as this file is not modified. Modifications are permitted, but only if
+% the resulting file is not named tex.web. (The WEB system provides
% for alterations via an auxiliary file; the master file should stay intact.)
% See Appendix H of the WEB manual for hints on how to install this program.
% And see Appendix A of the TRIP manual for details about how to validate it.
@@ -182,11 +183,11 @@ to be known as `\Aleph'.
@z
%---------------------------------------
@x [1] m.2 l.187 - e-TeX basic
-@d banner=='This is Omega, Version 3.14159265--1.15' {printed when \TeX\ starts}
+@d banner=='This is Omega, Version 3.141592653--1.15' {printed when \TeX\ starts}
@y
-@d banner=='This is Aleph, Version 3.14159265--1.15--2.1' {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.141592653--1.15--2.1' {printed when \TeX\ starts}
@#
-@d eTeX_version_string=='3.14159265--1.15--2.1' {current \eTeX\ version}
+@d eTeX_version_string=='3.141592653--1.15--2.1' {current \eTeX\ version}
@d eTeX_version=2 { \.{\\eTeXversion} }
@d eTeX_revision==".1" { \.{\\eTeXrevision} }
@#
@@ -2361,9 +2362,9 @@ set_shape: begin q:=cur_chr; scan_optional_equals; scan_int; n:=cur_val;
@z
%---------------------------------------
@x [49] m.1292 l.23581 - e-TeX show_groups
- show_lists:print_esc("showlists");
+ show_lists_code:print_esc("showlists");
@y
- show_lists:print_esc("showlists");
+ show_lists_code:print_esc("showlists");
@<Cases of |xray| for |print_cmd_chr|@>@;@/
@z
%---------------------------------------
diff --git a/Build/source/texk/web2c/alephdir/eocprt.ch b/Build/source/texk/web2c/alephdir/eocprt.ch
index 738115289a9..0e2705a3a2d 100644
--- a/Build/source/texk/web2c/alephdir/eocprt.ch
+++ b/Build/source/texk/web2c/alephdir/eocprt.ch
@@ -7,6 +7,6 @@ wterm_ln('Copyright (c) 1994--2000 John Plaice and Yannis Haralambous');
print_nl("Copyright (c) 1994--2000 John Plaice and Yannis Haralambous");
@y
print_nl("Copyright (C) 1994--2000 John Plaice and Yannis Haralambous");
-print_nl("Copyright (C) 2002--2009 Aleph task force");
+print_nl("Copyright (C) 2002--2021 Aleph task force");
@z
diff --git a/Build/source/texk/web2c/alephdir/eoext.ch b/Build/source/texk/web2c/alephdir/eoext.ch
index 08432788270..4fd45003f22 100644
--- a/Build/source/texk/web2c/alephdir/eoext.ch
+++ b/Build/source/texk/web2c/alephdir/eoext.ch
@@ -62,9 +62,9 @@ print_err("Aleph capacity exceeded, sorry [");
@z
%----------------------------------------
@x
- print("Omega output, Version 3.14159265--1.15, ");
+ print("Omega output, Version 3.141592653--1.15, ");
@y
- print("Aleph output, Version 3.14159265--1.15--2.1, ");
+ print("Aleph output, Version 3.141592653--1.15--2.1, ");
@z
%----------------------------------------
@x
diff --git a/Build/source/texk/web2c/alephdir/eover.ch b/Build/source/texk/web2c/alephdir/eover.ch
index 0384368969d..1d9ed63a903 100644
--- a/Build/source/texk/web2c/alephdir/eover.ch
+++ b/Build/source/texk/web2c/alephdir/eover.ch
@@ -5,9 +5,9 @@
% * we add both \eTeX-like and \OMEGA-like
% commands to display the version
@x
-@d banner=='This is Aleph, Version 3.14159265--1.15--2.1' {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.141592653--1.15--2.1' {printed when \TeX\ starts}
@#
-@d eTeX_version_string=='3.14159265--1.15--2.1' {current \eTeX\ version}
+@d eTeX_version_string=='3.141592653--1.15--2.1' {current \eTeX\ version}
@d eTeX_version=2 { \.{\\eTeXversion} }
@d eTeX_revision==".1" { \.{\\eTeXrevision} }
@#
@@ -30,7 +30,7 @@
@d Omega_revision==".15" { \.{\\Omegarevision} }
@d Aleph_revision==".0" { \.{\\Alephrevision} }
@#
-@d banner=='This is Aleph, Version 3.14159265-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
+@d banner=='This is Aleph, Version 3.141592653-',Omega_version_banner,'-',eTeX_version_banner,'-',Aleph_version_banner {printed when \TeX\ starts}
@d eTeX_banner==banner
{printed when \eTeX\ starts}
@z
diff --git a/Build/source/texk/web2c/alephdir/om16bit.ch b/Build/source/texk/web2c/alephdir/om16bit.ch
index 41f711372e5..352c8903e20 100644
--- a/Build/source/texk/web2c/alephdir/om16bit.ch
+++ b/Build/source/texk/web2c/alephdir/om16bit.ch
@@ -74,9 +74,9 @@ author' in the documentation are to D. E. Knuth.
@z
%---------------------------------------
@x [1] m.2 l.187 - Omega
-@d banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@y
-@d banner=='This is Omega, Version 3.14159265--1.15' {printed when \TeX\ starts}
+@d banner=='This is Omega, Version 3.141592653--1.15' {printed when \TeX\ starts}
@z
%---------------------------------------
@x [1] m.4 l.243
@@ -1558,6 +1558,7 @@ text(frozen_cr):="cr"; eqtb[frozen_cr]:=eqtb[cur_val];@/
primitive("crcr",car_ret,cr_cr_code);
@!@:cr_cr_}{\.{\\crcr} primitive@>
text(frozen_end_template):="endtemplate"; text(frozen_endv):="endtemplate";
+@.endtemplate@>
eq_type(frozen_endv):=endv; equiv(frozen_endv):=null_list;
eq_level(frozen_endv):=level_one;@/
eqtb[frozen_end_template]:=eqtb[frozen_endv];
@@ -1616,7 +1617,8 @@ be between 0 and |biggest_char|, otherwise hyphenation will not be attempted.
%---------------------------------------
@x [40] m.892 l.17469 - Omega
@!hc:array[0..65] of 0..256; {word to be hyphenated}
-@!hn:small_number; {the number of positions occupied in |hc|}
+@!hn:0..64; {the number of positions occupied in |hc|;
+ not always a |small_number|}
@!ha,@!hb:pointer; {nodes |ha..hb| should be replaced by the hyphenated result}
@!hf:internal_font_number; {font number of the letters in |hc|}
@!hu:array[0..63] of 0..256; {like |hc|, before conversion to lowercase}
@@ -1626,7 +1628,8 @@ be between 0 and |biggest_char|, otherwise hyphenation will not be attempted.
@!hyf_bchar:halfword; {boundary character after $c_n$}
@y
@!hc:array[0..65] of 0..too_big_char; {word to be hyphenated}
-@!hn:small_number; {the number of positions occupied in |hc|}
+@!hn:0..64; {the number of positions occupied in |hc|;
+ not always a |small_number|}
@!ha,@!hb:pointer; {nodes |ha..hb| should be replaced by the hyphenated result}
@!hf:internal_font_number; {font number of the letters in |hc|}
@!hu:array[0..63] of 0..too_big_char;
diff --git a/Build/source/texk/web2c/alephdir/omfont.ch b/Build/source/texk/web2c/alephdir/omfont.ch
index eb718688508..35453b353ce 100644
--- a/Build/source/texk/web2c/alephdir/omfont.ch
+++ b/Build/source/texk/web2c/alephdir/omfont.ch
@@ -279,7 +279,7 @@ These bytes are the character codes of individual pieces used to
{start of |lig_kern| program for left boundary character,
|non_address| if there is none}
@!font_bchar:array[internal_font_number] of min_quarterword..non_char;
- {right boundary character, |non_char| if there is none}
+ {boundary character, |non_char| if there is none}
@!font_false_bchar:array[internal_font_number] of min_quarterword..non_char;
{|font_bchar| if it doesn't exist in the font, otherwise |non_char|}
@y
@@ -619,9 +619,9 @@ that do not do local optimization.
@z
%---------------------------------------
@x [30] m.560 l.10888 - Omega
-@!bchar:0..256; {right boundary character, or 256}
+@!bchar:0..256; {boundary character, or 256}
@y
-@!bchar:0..too_big_char; {right boundary character, or |too_big_char|}
+@!bchar:0..too_big_char; {boundary character, or |too_big_char|}
@!first_two:integer;
@z
%---------------------------------------
diff --git a/Build/source/texk/web2c/alephdir/omstr.ch b/Build/source/texk/web2c/alephdir/omstr.ch
index 702e6f778c5..cbfd28fb2c4 100644
--- a/Build/source/texk/web2c/alephdir/omstr.ch
+++ b/Build/source/texk/web2c/alephdir/omstr.ch
@@ -758,17 +758,21 @@ else begin for k:=1 to name_length do append_char(name_of_file[k]);
@x [29] m.536 l.10324 - Omega
begin wlog(banner);
slow_print(format_ident); print(" ");
-print_int(day); print_char(" ");
+print_int(sys_day); print_char(" ");
months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
-for k:=3*month-2 to 3*month do wlog(months[k]);
-print_char(" "); print_int(year); print_char(" ");
-print_two(time div 60); print_char(":"); print_two(time mod 60);
+for k:=3*sys_month-2 to 3*sys_month do wlog(months[k]);
+print_char(" "); print_int(sys_year); print_char(" ");
+print_two(sys_time div 60); print_char(":"); print_two(sys_time mod 60);
end
@y
begin wlog(banner);
slow_print(format_ident); print_nl("");
print_int(day); print_char(" ");
months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
+{don't output garbage if nefarious user sets invalid month value;
+ this error message never actually shows up, the program just aborts,
+ but it doesn't matter in practice.}
+if (month < 1) or (month > 12) then fatal_error("month out of range 1..12");
for k:=3*month-2 to 3*month do wlog(months[k]);
print_char(" "); print_int(year); print_char(" ");
print_two(time div 60); print_char(":"); print_two(time mod 60);
@@ -785,7 +789,7 @@ end
@x [32] m.617 l.12262 - Omega
print(" TeX output "); print_int(year); print_char(".");
@y
- print("Omega output, Version 3.14159265--1.15, ");
+ print("Omega output, Version 3.141592653--1.15, ");
print_int(year); print_char(".");
@z
%---------------------------------------
diff --git a/Build/source/texk/web2c/dvitype.web b/Build/source/texk/web2c/dvitype.web
index a0c5dba2c77..687736dc87a 100644
--- a/Build/source/texk/web2c/dvitype.web
+++ b/Build/source/texk/web2c/dvitype.web
@@ -32,7 +32,7 @@
\def\title{DVI$\,$\lowercase{type}}
\def\contentspagenumber{401}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont DVItype} processor}
@@ -1245,7 +1245,7 @@ if wp>0 then for k:=width_ptr to wp-1 do
options that the user must specify: The |out_mode| level is set to one of
five values (|errors_only|, |terse|, |mnemonics_only|,
|verbose|, |the_works|), giving
-different degrees of output; and the typeout can be confined to a
+different degrees of output; and the listing can be confined to a
restricted subset of the pages by specifying the desired starting page and
the maximum number of pages. Furthermore there is an option to specify the
resolution of an assumed discrete output device, so that pixel-oriented
@@ -2266,7 +2266,7 @@ if k<>post then bad_dvi('byte ',q:1,' is not post');
post_loc:=q; first_backpointer:=signed_quad
@ Note that the last steps of the above code save the locations of the
-the |post| byte and the final |bop|. We had better declare these global
+|post| byte and the final |bop|. We had better declare these global
variables, together with two more that we will need shortly.
@<Glob...@>=
diff --git a/Build/source/texk/web2c/eptexdir/eptex.ech b/Build/source/texk/web2c/eptexdir/eptex.ech
index c9d94603d1d..b3157b15e76 100644
--- a/Build/source/texk/web2c/eptexdir/eptex.ech
+++ b/Build/source/texk/web2c/eptexdir/eptex.ech
@@ -36,7 +36,7 @@
{printed when \pTeX\ starts}
@#
@d epTeX_version==pTeX_version_string,epTeX_version_string,eTeX_version_string
-@d epTeX_banner=='This is e-pTeX, Version 3.14159265',epTeX_version
+@d epTeX_banner=='This is e-pTeX, Version 3.141592653',epTeX_version
@d epTeX_banner_k==epTeX_banner
{printed when \epTeX\ starts}
@z
diff --git a/Build/source/texk/web2c/eptexdir/eptexextra.h b/Build/source/texk/web2c/eptexdir/eptexextra.h
index fdf2027e7cc..e6eb442b50a 100644
--- a/Build/source/texk/web2c/eptexdir/eptexextra.h
+++ b/Build/source/texk/web2c/eptexdir/eptexextra.h
@@ -7,7 +7,7 @@
#include <eptexdir/eptex_version.h> /* for EPTEX_VERSION */
#include <ptexdir/ptex_version.h> /* for PTEX_VERSION */
-#define BANNER "This is e-pTeX, Version 3.14159265-" PTEX_VERSION "-" EPTEX_VERSION "-" ETEX_VERSION
+#define BANNER "This is e-pTeX, Version 3.141592653-" PTEX_VERSION "-" EPTEX_VERSION "-" ETEX_VERSION
#define COPYRIGHT_HOLDER "D.E. Knuth"
#define AUTHOR "Peter Breitenlohner"
#define PROGRAM_HELP EPTEXHELP
diff --git a/Build/source/texk/web2c/eptexdir/eptrip/eptrip.diffs b/Build/source/texk/web2c/eptexdir/eptrip/eptrip.diffs
index d1da9ae8eff..3891bb9d422 100644
--- a/Build/source/texk/web2c/eptexdir/eptrip/eptrip.diffs
+++ b/Build/source/texk/web2c/eptexdir/eptrip/eptrip.diffs
@@ -1,266 +1,492 @@
+#! /bin/sh -vx
+# $Id: eptriptest.test 48633 2018-09-09 17:56:55Z karl $
+# Copyright 2017-2018 Karl Berry <tex-live@tug.org>
+# Copyright 2011-2014 Peter Breitenlohner <tex-live@tug.org>
+# Copyright 2010 Hironori Kitagawa <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
++ LC_ALL=C
++ export LC_ALL
++ LANGUAGE=C
++ export LANGUAGE
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+etestdir=$abs_srcdir/etexdir/etrip
++ etestdir=SRCDIR/etexdir/etrip
+eptestdir=$abs_srcdir/eptexdir/eptrip
++ eptestdir=SRCDIR/eptexdir/eptrip
+
+TEXMFCNF=$eptestdir; export TEXMFCNF
++ TEXMFCNF=SRCDIR/eptexdir/eptrip
++ export TEXMFCNF
+
+rm -rf eptripdir
++ rm -rf eptripdir
+mkdir eptripdir
++ mkdir eptripdir
+cd eptripdir
++ cd eptripdir
+
+dvitype_args="-output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*'"
++ dvitype_args='-output-level=2 -dpi=72.27 -page-start='\''*.*.*.*.*.*.*.*.*.*'\'''
+
+echo ">>> Running e-TRIP test for e-pTeX." >&2
++ echo '>>> Running e-TRIP test for e-pTeX.'
>>> Running e-TRIP test for e-pTeX.
+echo ">>> See $eptestdir/eptrip.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/eptexdir/eptrip/eptrip.diffs for example of acceptable diffs.'
>>> See SRCDIR/eptexdir/eptrip/eptrip.diffs for example of acceptable diffs.
+
+# pTeX outputs direction of boxes.
+P_SED1='s/, yoko direction//;s/yoko direction, //'
++ P_SED1='s/, yoko direction//;s/yoko direction, //'
+P_SED2='s/yoko(math) direction, //'
++ P_SED2='s/yoko(math) direction, //'
+
+is_OK=:
++ is_OK=:
+
+set -x
++ set -x
+
+echo "*** TRIP test for e-pTeX in compatibility mode ***."
+ echo '*** TRIP test for e-pTeX in compatibility mode ***.'
*** TRIP test for e-pTeX in compatibility mode ***.
+
+./pltotf $testdir/trip.pl trip.tfm || exit 1
+ ./pltotf SRCDIR/triptrap/trip.pl trip.tfm
+
+./tftopl ./trip.tfm trip.pl || exit 1
+ ./tftopl ./trip.tfm trip.pl
+
+diff $testdir/trip.pl trip.pl || is_OK=false
+ diff SRCDIR/triptrap/trip.pl trip.pl
+
+# get same filename in log
+$LN_S $testdir/trip.tex .
+ ln -s SRCDIR/triptrap/trip.tex .
+
+rm -f trip.log
+ rm -f trip.log
+./eptex --progname=epinitex --ini <$testdir/trip1.in >cptripin.fot
+ ./eptex --progname=epinitex --ini
+if test ! -s trip.fmt; then
+ echo "*** trip.fmt not created by trip1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trip.fmt
+sed "$P_SED1" trip.log > cptripin.log || exit 1
+ sed 's/, yoko direction//;s/yoko direction, //' trip.log
+diff $testdir/tripin.log cptripin.log
+ diff SRCDIR/triptrap/tripin.log cptripin.log
1c1
-< This is TeX, Version 3.14159265 (INITEX) 7 JAN 2014 09:09
+< This is TeX, Version 3.141592653 (INITEX) 4 JUL 1776 12:00
---
-> This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (INITEX) 12 APR 2015 16:22
+> This is e-pTeX, Version 3.141592653-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:03
3c3
< (trip.tex
---
> (./trip.tex
-9c9
-< A character number must be between 0 and 255.
----
-> A character number must be between 0 and 255, or KANJI code.
91c91,92
< ### horizontal mode entered at line 77 (language255:hyphenmin1,63)
---
> ### horizontal mode entered at line 77 (language255:hyph
> enmin1,63)
-450,453c451,454
-< (preloaded format=trip 2014.1.7)
-< 1326 strings of total length 23646
+93a95
+> \displace 0.0
+95a98
+> \displace 0.0
+368a372
+> ....\displace 0.0
+370a375
+> ....\displace 0.0
+437,438d441
+< ....\rip 6 (ligature )
+< ....\rip 7 (ligature )
+450,453c453,456
+< (preloaded format=trip 1776.7.4)
+< 1326 strings of total length 23633
< 471 memory locations dumped; current usage is 96&278
< 341 multiletter control sequences
---
-> (preloaded format=trip 2015.4.12)
-> 1616 strings of total length 27981
-> 489 memory locations dumped; current usage is 110&278
-> 387 multiletter control sequences
-461c462
+> (preloaded format=trip 2021.1.27)
+> 1673 strings of total length 29297
+> 491 memory locations dumped; current usage is 112&278
+> 400 multiletter control sequences
+461c464
< Hyphenation trie of length 273 has 9 ops out of 500
---
> Hyphenation trie of length 273 has 9 ops out of 35111
+
+# May as well test non-ini second time through.
+rm -f trip.log
+ rm -f trip.log
+./eptex --progname=eptex <$testdir/trip2.in >cptrip.fot
+ ./eptex --progname=eptex
+sed "$P_SED1;$P_SED2" trip.log > cptrip.log
+ sed 's/, yoko direction//;s/yoko direction, //;s/yoko(math) direction, //' trip.log
+diff $testdir/trip.fot cptrip.fot
+ diff SRCDIR/triptrap/trip.fot cptrip.fot
1,3c1,2
-< This is TeX, Version 3.14159265 (INITEX)
+< This is TeX, Version 3.141592653 (INITEX)
< ** &trip trip
< (trip.tex ##
---
-> This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=eptex)
+> This is e-pTeX, Version 3.141592653-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2021/dev) (preloaded format=eptex)
> **(./trip.tex ##
17c16
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 194&313; after: 118&278; still untouched: 2109
+> Memory usage before: 196&313; after: 120&278; still untouched: 2109
75c74
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 456&431; after: 394&418; still untouched: 483
+> Memory usage before: 462&431; after: 400&418; still untouched: 240
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $testdir/trip.log cptrip.log
+ diff SRCDIR/triptrap/trip.log cptrip.log
1c1
-< This is TeX, Version 3.14159265 (preloaded format=trip 2014.1.7) 7 JAN 2014 09:59
+< This is TeX, Version 3.141592653 (preloaded format=trip 1776.7.4) 4 JUL 1776 12:00
---
-> This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=trip 2015.4.12) 12 APR 2015 16:22
+> This is e-pTeX, Version 3.141592653-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2021/dev) (preloaded format=trip 2021.1.27) 27 JAN 2021 18:03
3c3
< (trip.tex ##
---
> (./trip.tex ##
-58a59,62
-> \openout0 = `8terminal.tex'.
->
-> \openout10 = `tripos.tex'.
->
-73c77
+73c73
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 194&313; after: 118&278; still untouched: 2109
-385,386c389,390
+> Memory usage before: 196&313; after: 120&278; still untouched: 2109
+113a114
+> .\displace 0.0
+198a200
+> .\displace 0.0
+253a256
+> .\displace 0.0
+308a312
+> .\displace 0.0
+349a354
+> .\displace 0.0
+385,386c390,391
< \insert100, natural size 803.09999; split(1.0 plus 43.0,-2.0); float cos
< t 100
---
> \insert100Y, natural size 803.09999; split(1.0 plus 43.0,-2.0); float co
> st 100
-426c430
+406a412
+> ....\displace 0.0
+409a416
+> ....\displace 0.0
+412a420
+> ....\displace 0.0
+420a429
+> .\displace 0.0
+426c435
< \insert200, natural size 400.0; split(0.0,-2.0); float cost 100
---
> \insert200Y, natural size 400.0; split(0.0,-2.0); float cost 100
-441c445
+435a445
+> .\displace 0.0
+441c451
< \insert200, natural size 400.0; split(1.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(1.0,-1.0); float cost 100
-456c460
+450a461
+> .\displace 0.0
+456c467
< \insert200, natural size 400.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(2.0,-1.0); float cost 100
-483,484c487,488
+466a478
+> .\displace 0.0
+483,484c495,496
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-642c646
+588a601
+> .....\displace 0.0
+591a605
+> .....\displace 0.0
+594a609
+> .....\displace 0.0
+630a646
+> ......\displace 0.0
+633a650
+> ......\displace 0.0
+636a654
+> ......\displace 0.0
+642c660
< Memory usage before: 747&484; after: 581&481; still untouched: 1492
---
-> Memory usage before: 1090&483; after: 842&480; still untouched: 1989
-647c651,652
+> Memory usage before: 1118&483; after: 864&480; still untouched: 1989
+647c665,666
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-693,694c698,699
+650a670
+> .\displace 0.0
+660a681
+> .\displace 0.0
+670a692
+> .\displace 0.0
+681a704
+> .\displace 0.0
+693,694c716,717
< \insert100, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 10
< 0
---
> \insert100Y, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 1
> 00
-701c706
+701c724
< \insert200, natural size 2.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 2.0; split(2.0,-1.0); float cost 100
-714,715c719,720
+714,715c737,738
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-815c820
+815c838
< Memory usage before: 475&470; after: 290&466; still untouched: 1473
---
-> Memory usage before: 694&469; after: 410&465; still untouched: 1970
-820c825,826
+> Memory usage before: 710&469; after: 418&465; still untouched: 1970
+820c843,844
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-915c921
+915c939
< Memory usage before: 218&459; after: 149&458; still untouched: 1473
---
> Memory usage before: 308&458; after: 198&457; still untouched: 1970
-920c926,927
+920c944,945
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-1070c1077
+1070c1095
< Memory usage before: 118&328; after: 102&328; still untouched: 1473
---
> Memory usage before: 150&327; after: 126&327; still untouched: 1970
-1405c1412
+1405c1430
< \vbox(16383.99998+0.0)x1000.0, glue set 16342.0fil
---
> \vbox(16383.99998+0.0)x1000.0, glue set 16341.99998fil
-1504a1512
+1493a1519
> ..\displace 0.0
-1511c1519
+1503a1530
+> ..\displace 0.0
+1504a1532
+> ..\displace 0.0
+1511c1539
< Memory usage before: 990&376; after: 584&370; still untouched: 735
---
-> Memory usage before: 1490&375; after: 842&369; still untouched: 1970
-1954c1962
+> Memory usage before: 1498&375; after: 846&369; still untouched: 1970
+1887c1915
+< .\rip A
+---
+> .\displace 0.0
+1923c1951
+< .\hbox(0.0+0.0)x120.0 []
+---
+> .\hbox(0.0+0.0)x120.0, yoko(math) direction []
+1954c1982
< (tripos.tex
---
> (./tripos.tex
-2018c2026
+2018c2046
< \vbox(16383.99998+1.0)x100.0, glue set 16239.0fil
---
> \vbox(16383.99998+1.0)x100.0, glue set 16238.99998fil
-2189c2197
+2022a2051
+> ..\displace 0.0
+2058a2088
+> ..\displace 0.0
+2071a2102
+> ..\displace 0.0
+2092a2124
+> ..\displace 0.0
+2113a2146
+> ..\displace 0.0
+2123a2157
+> ..\displace 0.0
+2142a2177
+> ..\displace 0.0
+2150a2186
+> ..\displace 0.0
+2171c2207,2208
+< ..\hbox(0.0+0.0)x120.0
+---
+> ..\hbox(0.0+0.0)x120.0, yoko(math) direction
+> ...\displace 0.0
+2189c2226
< Memory usage before: 950&531; after: 546&448; still untouched: 706
---
-> Memory usage before: 1458&530; after: 808&447; still untouched: 1941
-2397c2405
+> Memory usage before: 1494&530; after: 826&447; still untouched: 1941
+2397c2434
< ! Improper alphabetic constant.
---
> ! Improper alphabetic or KANJI constant.
-2405,2406c2413,2421
-< {the character -}
-< {the character 1}
----
-> ! Extended delimiter code used as delcode.
-> <to be read again>
-> \relax
-> l.249 ...mber\the\delcode`\relax
-> \over{{{}}}}\pagestretch=-1\p...
-> A numeric delimiter code must be between 0 and 2^{27}-1.
-> I changed this one to zero.
->
-> {the character 0}
-2434d2448
-< \\mathord []
-2533c2547
+2533c2570
< \vbox(16383.99998+0.0)x20.0, glue set 16331.0fil
---
> \vbox(16383.99998+0.0)x20.0, glue set 16330.99998fil
-2575c2589
+2544a2582
+> ..\displace 0.0
+2570c2608,2609
+< .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0
+---
+> .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0, yoko(math) direction
+>
+2572c2611
+< ..\hbox(0.0+0.0)x0.0
+---
+> ..\hbox(0.0+0.0)x0.0, yoko(math) direction
+2575c2614
< Memory usage before: 339&413; after: 236&405; still untouched: 706
---
-> Memory usage before: 493&411; after: 327&403; still untouched: 1941
-2830c2844
+> Memory usage before: 497&411; after: 329&403; still untouched: 1941
+2650,2651c2689,2690
+< Dimensions can be in units of em, ex, in, pt, pc,
+< cm, mm, dd, cc, bp, or sp; but yours is a new one!
+---
+> Dimensions can be in units of em, ex, zw, zh, in, pt, pc,
+> cm, mm, dd, cc, bp, H, Q, or sp; but yours is a new one!
+2830c2869
< Since I expected to read a number between 0 and 15,
---
> Since I expected to read a number between 0 and 255,
-3051c3065
+3038c3077,3078
+< ^\hbox(7.0+1.0)x2.0
+---
+> ^\hbox(7.0+1.0)x2.0, yoko(math) direction
+> ^.\displace 0.0
+3051c3091
< \insert0, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
---
> \insert0Y, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
-3054c3068
+3054c3094
< .\fam0 ^^c8
---
> .\fam0 È
-3143a3158
+3056c3096
+< .\vbox(-2.0+0.0)x0.0
+---
+> .\vbox(-2.0+0.0)x0.0, yoko(math) direction
+3060c3100,3101
+< ^.\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ^.\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> ^..\displace 0.0
+3140a3182
+> .....\displace 0.0
+3142a3185
+> ....|\displace 0.0
+3143a3187
> ....\displace 0.0
-3235c3250
+3151a3196
+> .\displace 0.0
+3235c3280
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-3326c3341
+3286c3331
+< .\vbox(6.0+-8.0)x0.0
+---
+> .\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3326c3371
< \vbox(10000.0+2.0)x28.0, glue set 9737.58789fil
---
> \vbox(10000.0+2.0)x28.0, glue set 9737.58742fil
-3547a3563
+3329a3375
+> ..\displace 0.0
+3374c3420
+< ..\vbox(6.0+-8.0)x0.0
+---
+> ..\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3385c3431,3432
+< ......\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ......\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> .......\displace 0.0
+3544a3592
+> ..........\displace 0.0
+3546a3595
+> .........|\displace 0.0
+3547a3597
> .........\displace 0.0
-3616c3632
+3564c3614,3615
+< ...\hbox(7.0+1.0)x1.99
+---
+> ...\hbox(7.0+1.0)x1.99, yoko(math) direction
+> ....\displace 0.0
+3616c3667
< Memory usage before: 2170&521; after: 1181&459; still untouched: 175
---
-> Memory usage before: 3263&519; after: 1743&457; still untouched: 483
-3864c3880
+> Memory usage before: 3283&519; after: 1753&457; still untouched: 240
+3864c3915
< \vbox(16383.99998+2.0)x100.0, glue set 16318.0fil
---
> \vbox(16383.99998+2.0)x100.0, glue set 16317.99997fil
-3951c3967
+3919,3920c3970,3972
+< ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247
+< ....\vbox(-0.00002+0.0)x0.0
+---
+> ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247, yoko(math) directi
+> on
+> ....\vbox(-0.00002+0.0)x0.0, yoko(math) direction
+3951c4003
< Memory usage before: 640&415; after: 397&410; still untouched: 175
---
-> Memory usage before: 959&413; after: 573&408; still untouched: 483
-4034c4050
+> Memory usage before: 959&413; after: 573&408; still untouched: 240
+4034c4086
< \vbox(16383.99998+0.0)x8236.0, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x8236.0, glue set 16343.99998fil
-4053c4069
+4053c4105
< Memory usage before: 235&401; after: 178&399; still untouched: 175
---
-> Memory usage before: 342&399; after: 248&397; still untouched: 483
-4420c4436
+> Memory usage before: 342&399; after: 248&397; still untouched: 240
+4420c4472
< \vbox(16383.99998+0.0)x100.0, glue set 16332.0fil
---
> \vbox(16383.99998+0.0)x100.0, glue set 16331.99998fil
-4506c4522
+4425a4478
+> ...\displace 0.0
+4447a4501
+> ...\displace 0.0
+4475a4530
+> ...\displace 0.0
+4492a4548
+> ...\displace 0.0
+4506c4562
< Memory usage before: 651&432; after: 417&418; still untouched: 175
---
-> Memory usage before: 992&431; after: 598&417; still untouched: 483
-4742c4758,4759
+> Memory usage before: 1008&431; after: 606&417; still untouched: 240
+4742c4798,4799
< \vbox(16383.99998+0.0)x205.12613, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x205.12613, glue set 16343.99998fil, yoko directio
> n
-4828c4845
+4746a4804
+> ...\displace 0.0
+4762a4821
+> .....\displace 0.0
+4777a4837
+> ......\displace 0.0
+4828c4888
< Memory usage before: 776&458; after: 464&452; still untouched: 175
---
-> Memory usage before: 1174&457; after: 676&451; still untouched: 483
-4881,4888d4897
+> Memory usage before: 1186&457; after: 682&451; still untouched: 240
+4881,4888d4940
< ! Bad number (16).
< <to be read again>
< =
@@ -269,55 +495,97 @@
< Since I expected to read a number between 0 and 15,
< I changed this one to zero.
<
-5700c5709
+5701c5753
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-6380c6389
+6381c6433
< (tripos.tex
---
> (./tripos.tex
-6501c6510
+6502c6554
< l.429 ...^^M=13 \def^^M{\relax}#
---
> l.429 ...^^M=13 \defqqM{\relax}#
-6595c6604
+6596c6648
< Memory usage before: 819&428; after: 720&426; still untouched: 175
---
-> Memory usage before: 1220&428; after: 1070&426; still untouched: 483
-7155c7164
+> Memory usage before: 1232&428; after: 1078&426; still untouched: 240
+6853c6905
+< .|vbox(0.0+0.0)x0.0
+---
+> .|vbox(0.0+0.0)x0.0, yoko(math) direction
+6876a6929
+> ..|displace 0.0
+6891a6945
+> ..|displace 0.0
+6926a6981
+> .|displace 0.0
+6959a7015
+> .|displace 0.0
+6961c7017,7018
+< .|hbox(0.0+0.0)x0.0
+---
+> .|hbox(0.0+0.0)x0.0, yoko(math) direction
+> ..|displace 0.0
+6991a7049
+> .|displace 0.0
+7103a7162
+> ...|displace 0.0
+7108d7166
+< ...|ip A (ligature BB)
+7116a7175
+> ...|displace 0.0
+7125d7183
+< ...|kern2.0
+7126a7185
+> .|displace 0.0
+7136c7195
+< ...|vbox(0.0+0.0)x0.0
+---
+> ...|vbox(0.0+0.0)x0.0, yoko(math) direction
+7156c7215
< Memory usage before: 895&439; after: 290&420; still untouched: 175
---
-> Memory usage before: 1336&439; after: 392&420; still untouched: 483
-7288c7297
+> Memory usage before: 1350&439; after: 398&420; still untouched: 240
+7289c7348
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 456&431; after: 394&418; still untouched: 483
-7296,7299c7305,7308
+> Memory usage before: 462&431; after: 400&418; still untouched: 240
+7297,7300c7356,7359
< 47 strings out of 1674
-< 253 string characters out of 8354
+< 253 string characters out of 8367
< 2825 words of memory out of 3000
< 372 multiletter control sequences out of 2100
---
-> 44 strings out of 1684
-> 261 string characters out of 8019
-> 4017 words of memory out of 4500
-> 418 multiletter control sequences out of 15000+0
-7301c7310
+> 44 strings out of 1627
+> 261 string characters out of 10703
+> 4260 words of memory out of 4500
+> 431 multiletter control sequences out of 15000+0
+7302c7361
< 2 hyphenation exceptions out of 307
---
> 1 hyphenation exception out of 659
+
+mv tripos.tex cptripos.tex
++ mv tripos.tex cptripos.tex
+diff $testdir/tripos.tex cptripos.tex
++ diff SRCDIR/triptrap/tripos.tex cptripos.tex
+
+eval ./dvitype $dvitype_args trip.dvi >cptrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' trip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' trip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' trip.dvi
+$DIFF $DIFFFLAGS $testdir/trip.typ cptrip.typ
+ diff SRCDIR/triptrap/trip.typ cptrip.typ
1c1
< This is DVItype, Version 3.6
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
-< ' TeX output 2014.01.07:0959'
+< ' TeX output 1776.07.04:1200'
---
-> ' TeX output 2015.04.12:1622'
+> ' TeX output 2021.01.27:1803'
419c419
< 1121: down4 639342208
---
@@ -328,27 +596,38 @@
---
> 2535: y4 203921756
> 2540: y0 203921756
+
+mv trip.fmt ctrip.fmt
+ mv trip.fmt ctrip.fmt
+
+# =================================
+
+echo "*** TRIP test for e-pTeX in extended mode ***."
+ echo '*** TRIP test for e-pTeX in extended mode ***.'
*** TRIP test for e-pTeX in extended mode ***.
+
+rm -f trip.log
+ rm -f trip.log
+./eptex --progname=epinitex --ini <$etestdir/etrip1.in >xptripin.fot
+ ./eptex --progname=epinitex --ini
+if test ! -s trip.fmt; then
+ echo "*** trip.fmt not created by etrip1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trip.fmt
+sed "$P_SED1" trip.log > xptripin.log || exit 1
+ sed 's/, yoko direction//;s/yoko direction, //' trip.log
+diff $testdir/tripin.log xptripin.log
+ diff SRCDIR/triptrap/tripin.log xptripin.log
1,3c1,4
-< This is TeX, Version 3.14159265 (INITEX) 7 JAN 2014 09:09
+< This is TeX, Version 3.141592653 (INITEX) 4 JUL 1776 12:00
< **\input trip
< (trip.tex
---
-> This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (INITEX) 12 APR 2015 16:22
+> This is e-pTeX, Version 3.141592653-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:03
> entering extended mode
> ***\input trip
> (./trip.tex
-9c10
-< A character number must be between 0 and 255.
----
-> A character number must be between 0 and 255, or KANJI code.
36,41d36
< ! Bad register code (256).
< l.29 ...{1} \toksdef\tokens=256
@@ -361,306 +640,461 @@
---
> ### horizontal mode entered at line 77 (language255:hyph
> enmin1,63)
-450,453c446,449
-< (preloaded format=trip 2014.1.7)
-< 1326 strings of total length 23646
+93a90
+> \displace 0.0
+95a93
+> \displace 0.0
+368a367
+> ....\displace 0.0
+370a370
+> ....\displace 0.0
+437,438d436
+< ....\rip 6 (ligature )
+< ....\rip 7 (ligature )
+450,453c448,451
+< (preloaded format=trip 1776.7.4)
+< 1326 strings of total length 23633
< 471 memory locations dumped; current usage is 96&278
< 341 multiletter control sequences
---
-> (preloaded format=trip 2015.4.12)
-> 1616 strings of total length 27981
-> 536 memory locations dumped; current usage is 157&278
-> 465 multiletter control sequences
-461c457
+> (preloaded format=trip 2021.1.27)
+> 1673 strings of total length 29297
+> 538 memory locations dumped; current usage is 159&278
+> 494 multiletter control sequences
+461c459
< Hyphenation trie of length 273 has 9 ops out of 500
---
> Hyphenation trie of length 273 has 9 ops out of 35111
+
+# May as well test non-ini second time through.
+rm -f trip.log
+ rm -f trip.log
+./eptex --progname=eptex <$etestdir/trip2.in >xptrip.fot
+ ./eptex --progname=eptex
+sed "$P_SED1;$P_SED2" trip.log > xptrip.log
+ sed 's/, yoko direction//;s/yoko direction, //;s/yoko(math) direction, //' trip.log
+diff $testdir/trip.fot xptrip.fot
+ diff SRCDIR/triptrap/trip.fot xptrip.fot
1,3c1,3
-< This is TeX, Version 3.14159265 (INITEX)
+< This is TeX, Version 3.141592653 (INITEX)
< ** &trip trip
< (trip.tex ##
---
-> This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=eptex)
+> This is e-pTeX, Version 3.141592653-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2021/dev) (preloaded format=eptex)
> **entering extended mode
> ## (./trip.tex
17c17
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 194&313; after: 118&278; still untouched: 2109
+> Memory usage before: 196&313; after: 120&278; still untouched: 2109
75c75
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 456&431; after: 394&418; still untouched: 483
+> Memory usage before: 462&431; after: 400&418; still untouched: 240
77a78,80
>
> ### semi simple group (level 1) entered at line 429 (begingroup)
> ### bottom level
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $testdir/trip.log xptrip.log
+ diff SRCDIR/triptrap/trip.log xptrip.log
1,3c1,4
-< This is TeX, Version 3.14159265 (preloaded format=trip 2014.1.7) 7 JAN 2014 09:59
+< This is TeX, Version 3.141592653 (preloaded format=trip 1776.7.4) 4 JUL 1776 12:00
< ** &trip trip
< (trip.tex ##
---
-> This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=trip 2015.4.12) 12 APR 2015 16:22
+> This is e-pTeX, Version 3.141592653-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2021/dev) (preloaded format=trip 2021.1.27) 27 JAN 2021 18:03
> entering extended mode
> **&trip \toksdef\tokens=0 \input trip
> (./trip.tex
-58a60,63
-> \openout0 = `8terminal.tex'.
->
-> \openout10 = `tripos.tex'.
->
-73c78
+73c74
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 194&313; after: 118&278; still untouched: 2109
-385,386c390,391
+> Memory usage before: 196&313; after: 120&278; still untouched: 2109
+113a115
+> .\displace 0.0
+198a201
+> .\displace 0.0
+253a257
+> .\displace 0.0
+308a313
+> .\displace 0.0
+349a355
+> .\displace 0.0
+385,386c391,392
< \insert100, natural size 803.09999; split(1.0 plus 43.0,-2.0); float cos
< t 100
---
> \insert100Y, natural size 803.09999; split(1.0 plus 43.0,-2.0); float co
> st 100
-426c431
+406a413
+> ....\displace 0.0
+409a417
+> ....\displace 0.0
+412a421
+> ....\displace 0.0
+420a430
+> .\displace 0.0
+426c436
< \insert200, natural size 400.0; split(0.0,-2.0); float cost 100
---
> \insert200Y, natural size 400.0; split(0.0,-2.0); float cost 100
-441c446
+435a446
+> .\displace 0.0
+441c452
< \insert200, natural size 400.0; split(1.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(1.0,-1.0); float cost 100
-456c461
+450a462
+> .\displace 0.0
+456c468
< \insert200, natural size 400.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(2.0,-1.0); float cost 100
-483,484c488,489
+466a479
+> .\displace 0.0
+483,484c496,497
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-642c647
+588a602
+> .....\displace 0.0
+591a606
+> .....\displace 0.0
+594a610
+> .....\displace 0.0
+630a647
+> ......\displace 0.0
+633a651
+> ......\displace 0.0
+636a655
+> ......\displace 0.0
+642c661
< Memory usage before: 747&484; after: 581&481; still untouched: 1492
---
-> Memory usage before: 1090&483; after: 842&480; still untouched: 1989
-647c652,653
+> Memory usage before: 1118&483; after: 864&480; still untouched: 1989
+647c666,667
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-693,694c699,700
+650a671
+> .\displace 0.0
+660a682
+> .\displace 0.0
+670a693
+> .\displace 0.0
+681a705
+> .\displace 0.0
+693,694c717,718
< \insert100, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 10
< 0
---
> \insert100Y, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 1
> 00
-701c707
+701c725
< \insert200, natural size 2.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 2.0; split(2.0,-1.0); float cost 100
-714,715c720,721
+714,715c738,739
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-815c821
+815c839
< Memory usage before: 475&470; after: 290&466; still untouched: 1473
---
-> Memory usage before: 694&469; after: 410&465; still untouched: 1970
-820c826,827
+> Memory usage before: 710&469; after: 418&465; still untouched: 1970
+820c844,845
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-915c922
+915c940
< Memory usage before: 218&459; after: 149&458; still untouched: 1473
---
> Memory usage before: 308&458; after: 198&457; still untouched: 1970
-920c927,928
+920c945,946
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-1070c1078
+1070c1096
< Memory usage before: 118&328; after: 102&328; still untouched: 1473
---
> Memory usage before: 150&327; after: 126&327; still untouched: 1970
-1405c1413
+1405c1431
< \vbox(16383.99998+0.0)x1000.0, glue set 16342.0fil
---
> \vbox(16383.99998+0.0)x1000.0, glue set 16341.99998fil
-1504a1513
+1493a1520
+> ..\displace 0.0
+1503a1531
> ..\displace 0.0
-1511c1520
+1504a1533
+> ..\displace 0.0
+1511c1540
< Memory usage before: 990&376; after: 584&370; still untouched: 735
---
-> Memory usage before: 1490&375; after: 842&369; still untouched: 1970
-1769d1777
+> Memory usage before: 1498&375; after: 846&369; still untouched: 1970
+1769d1797
< {restoring \fam=-1}
-1779d1786
+1779d1806
< {restoring \displayindent=0.0pt}
-1833d1839
+1833d1859
< {restoring \fam=-1}
-1954c1960
+1887c1913
+< .\rip A
+---
+> .\displace 0.0
+1923c1949
+< .\hbox(0.0+0.0)x120.0 []
+---
+> .\hbox(0.0+0.0)x120.0, yoko(math) direction []
+1954c1980
< (tripos.tex
---
> (./tripos.tex
-2018c2024
+2018c2044
< \vbox(16383.99998+1.0)x100.0, glue set 16239.0fil
---
> \vbox(16383.99998+1.0)x100.0, glue set 16238.99998fil
-2135c2141
+2022a2049
+> ..\displace 0.0
+2058a2086
+> ..\displace 0.0
+2071a2100
+> ..\displace 0.0
+2092a2122
+> ..\displace 0.0
+2113a2144
+> ..\displace 0.0
+2123a2155
+> ..\displace 0.0
+2135c2167
< .\hbox(0.0+0.0)x0.0, shifted 50.0
---
> .\hbox(0.0+0.0)x0.0, shifted 50.0, display
-2138c2144
+2138c2170
< .\hbox(0.0+0.0)x0.0, shifted 100.0
---
> .\hbox(0.0+0.0)x0.0, shifted 100.0, display
-2189c2195
+2142a2175
+> ..\displace 0.0
+2150a2184
+> ..\displace 0.0
+2171c2205,2206
+< ..\hbox(0.0+0.0)x120.0
+---
+> ..\hbox(0.0+0.0)x120.0, yoko(math) direction
+> ...\displace 0.0
+2189c2224
< Memory usage before: 950&531; after: 546&448; still untouched: 706
---
-> Memory usage before: 1458&530; after: 808&447; still untouched: 1941
-2397c2403
+> Memory usage before: 1494&530; after: 826&447; still untouched: 1941
+2397c2432
< ! Improper alphabetic constant.
---
> ! Improper alphabetic or KANJI constant.
-2405,2406c2411,2419
-< {the character -}
-< {the character 1}
----
-> ! Extended delimiter code used as delcode.
-> <to be read again>
-> \relax
-> l.249 ...mber\the\delcode`\relax
-> \over{{{}}}}\pagestretch=-1\p...
-> A numeric delimiter code must be between 0 and 2^{27}-1.
-> I changed this one to zero.
->
-> {the character 0}
-2434d2446
-< \\mathord []
-2533c2545
+2533c2568
< \vbox(16383.99998+0.0)x20.0, glue set 16331.0fil
---
> \vbox(16383.99998+0.0)x20.0, glue set 16330.99998fil
-2570c2582,2583
+2544a2580
+> ..\displace 0.0
+2570c2606,2607
< .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0
---
-> .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0, display, yoko direct
-> ion
-2575c2588
+> .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0, display, yoko(math)
+> direction
+2572c2609
+< ..\hbox(0.0+0.0)x0.0
+---
+> ..\hbox(0.0+0.0)x0.0, yoko(math) direction
+2575c2612
< Memory usage before: 339&413; after: 236&405; still untouched: 706
---
-> Memory usage before: 493&411; after: 327&403; still untouched: 1941
-2830c2843
+> Memory usage before: 497&411; after: 329&403; still untouched: 1941
+2650,2651c2687,2688
+< Dimensions can be in units of em, ex, in, pt, pc,
+< cm, mm, dd, cc, bp, or sp; but yours is a new one!
+---
+> Dimensions can be in units of em, ex, zw, zh, in, pt, pc,
+> cm, mm, dd, cc, bp, H, Q, or sp; but yours is a new one!
+2830c2867
< Since I expected to read a number between 0 and 15,
---
> Since I expected to read a number between 0 and 255,
-2835d2847
+2835d2871
< {restoring current font=\ip}
-3051c3063
+3038c3074,3075
+< ^\hbox(7.0+1.0)x2.0
+---
+> ^\hbox(7.0+1.0)x2.0, yoko(math) direction
+> ^.\displace 0.0
+3051c3088
< \insert0, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
---
> \insert0Y, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
-3054c3066
+3054c3091
< .\fam0 ^^c8
---
> .\fam0 È
-3143a3156
+3056c3093
+< .\vbox(-2.0+0.0)x0.0
+---
+> .\vbox(-2.0+0.0)x0.0, yoko(math) direction
+3060c3097,3098
+< ^.\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ^.\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> ^..\displace 0.0
+3140a3179
+> .....\displace 0.0
+3142a3182
+> ....|\displace 0.0
+3143a3184
> ....\displace 0.0
-3223d3235
+3151a3193
+> .\displace 0.0
+3223d3264
< {restoring \fam=-1}
-3235c3247
+3235c3276
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-3326c3338
+3286c3327
+< .\vbox(6.0+-8.0)x0.0
+---
+> .\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3326c3367
< \vbox(10000.0+2.0)x28.0, glue set 9737.58789fil
---
> \vbox(10000.0+2.0)x28.0, glue set 9737.58742fil
-3372c3384
+3329a3371
+> ..\displace 0.0
+3372c3414
< .\hbox(68.26251+98.15005)x19.0, glue set - 1.0, shifted 9.0
---
> .\hbox(68.26251+98.15005)x19.0, glue set - 1.0, shifted 9.0, display
-3547a3560
+3374c3416
+< ..\vbox(6.0+-8.0)x0.0
+---
+> ..\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3385c3427,3428
+< ......\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ......\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> .......\displace 0.0
+3544a3588
+> ..........\displace 0.0
+3546a3591
+> .........|\displace 0.0
+3547a3593
> .........\displace 0.0
-3557c3570
+3557c3603
< .\hbox(20.5+50.80002)x8.27895, shifted 19.72105
---
> .\hbox(20.5+50.80002)x8.27895, shifted 19.72105, display
-3616c3629
+3564c3610,3611
+< ...\hbox(7.0+1.0)x1.99
+---
+> ...\hbox(7.0+1.0)x1.99, yoko(math) direction
+> ....\displace 0.0
+3616c3663
< Memory usage before: 2170&521; after: 1181&459; still untouched: 175
---
-> Memory usage before: 3263&519; after: 1743&457; still untouched: 483
-3766d3778
+> Memory usage before: 3283&519; after: 1753&457; still untouched: 240
+3766d3812
< {restoring \fam=-1}
-3839d3850
+3839d3884
< {restoring \fam=-1}
-3864c3875
+3864c3909
< \vbox(16383.99998+2.0)x100.0, glue set 16318.0fil
---
> \vbox(16383.99998+2.0)x100.0, glue set 16317.99997fil
-3895c3906
+3895c3940
< ..\hbox(12.0+4.0)x8.1778
---
> ..\hbox(12.0+4.0)x8.1778, display
-3917c3928
+3917c3962
< ..\hbox(0.0+13.00002)x-0.1778, glue set - 57.67767fil
---
> ..\hbox(0.0+13.00002)x-0.1778, glue set - 57.67767fil, display
-3925c3936
+3919,3920c3964,3966
+< ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247
+< ....\vbox(-0.00002+0.0)x0.0
+---
+> ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247, yoko(math) directi
+> on
+> ....\vbox(-0.00002+0.0)x0.0, yoko(math) direction
+3925c3971
< ....\hbox(7.0+1.0)x5.0, shifted 47.5
---
> ....\hbox(7.0+1.0)x5.0, shifted 47.5, display
-3951c3962
+3951c3997
< Memory usage before: 640&415; after: 397&410; still untouched: 175
---
-> Memory usage before: 959&413; after: 573&408; still untouched: 483
-4011d4021
+> Memory usage before: 959&413; after: 573&408; still untouched: 240
+4011d4056
< {restoring \fam=-1}
-4034c4044
+4034c4079
< \vbox(16383.99998+0.0)x8236.0, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x8236.0, glue set 16343.99998fil
-4047c4057
+4047c4092
< .\hbox(0.0+0.0)x1009.0, shifted 7227.0
---
> .\hbox(0.0+0.0)x1009.0, shifted 7227.0, display
-4051c4061
+4051c4096
< .\hbox(0.0+0.0)x-7127.0, shifted 7227.0
---
> .\hbox(0.0+0.0)x-7127.0, shifted 7227.0, display
-4053c4063
+4053c4098
< Memory usage before: 235&401; after: 178&399; still untouched: 175
---
-> Memory usage before: 342&399; after: 248&397; still untouched: 483
-4420c4430
+> Memory usage before: 342&399; after: 248&397; still untouched: 240
+4420c4465
< \vbox(16383.99998+0.0)x100.0, glue set 16332.0fil
---
> \vbox(16383.99998+0.0)x100.0, glue set 16331.99998fil
-4506c4516
+4425a4471
+> ...\displace 0.0
+4447a4494
+> ...\displace 0.0
+4475a4523
+> ...\displace 0.0
+4492a4541
+> ...\displace 0.0
+4506c4555
< Memory usage before: 651&432; after: 417&418; still untouched: 175
---
-> Memory usage before: 992&431; after: 598&417; still untouched: 483
-4742c4752,4753
+> Memory usage before: 1008&431; after: 606&417; still untouched: 240
+4742c4791,4792
< \vbox(16383.99998+0.0)x205.12613, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x205.12613, glue set 16343.99998fil, yoko directio
> n
-4828c4839
+4746a4797
+> ...\displace 0.0
+4762a4814
+> .....\displace 0.0
+4777a4830
+> ......\displace 0.0
+4828c4881
< Memory usage before: 776&458; after: 464&452; still untouched: 175
---
-> Memory usage before: 1174&457; after: 676&451; still untouched: 483
-4845c4856
+> Memory usage before: 1186&457; after: 682&451; still untouched: 240
+4845c4898
< I'll pretend you didn't say \long or \outer or \global.
---
> I'll pretend you didn't say \long or \outer or \global or \protected.
-4881,4888d4891
+4881,4888d4933
< ! Bad number (16).
< <to be read again>
< =
@@ -669,61 +1103,103 @@
< Since I expected to read a number between 0 and 15,
< I changed this one to zero.
<
-5700c5703
+5701c5746
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-6380c6383
+6381c6426
< (tripos.tex
---
> (./tripos.tex
-6501c6504
+6502c6547
< l.429 ...^^M=13 \def^^M{\relax}#
---
> l.429 ...^^M=13 \defqqM{\relax}#
-6595c6598
+6596c6641
< Memory usage before: 819&428; after: 720&426; still untouched: 175
---
-> Memory usage before: 1220&428; after: 1070&426; still untouched: 483
-7155c7158
+> Memory usage before: 1232&428; after: 1078&426; still untouched: 240
+6853c6898
+< .|vbox(0.0+0.0)x0.0
+---
+> .|vbox(0.0+0.0)x0.0, yoko(math) direction
+6876a6922
+> ..|displace 0.0
+6891a6938
+> ..|displace 0.0
+6926a6974
+> .|displace 0.0
+6959a7008
+> .|displace 0.0
+6961c7010,7011
+< .|hbox(0.0+0.0)x0.0
+---
+> .|hbox(0.0+0.0)x0.0, yoko(math) direction
+> ..|displace 0.0
+6991a7042
+> .|displace 0.0
+7103a7155
+> ...|displace 0.0
+7108d7159
+< ...|ip A (ligature BB)
+7116a7168
+> ...|displace 0.0
+7125d7176
+< ...|kern2.0
+7126a7178
+> .|displace 0.0
+7136c7188
+< ...|vbox(0.0+0.0)x0.0
+---
+> ...|vbox(0.0+0.0)x0.0, yoko(math) direction
+7156c7208
< Memory usage before: 895&439; after: 290&420; still untouched: 175
---
-> Memory usage before: 1336&439; after: 392&420; still untouched: 483
-7288c7291
+> Memory usage before: 1350&439; after: 398&420; still untouched: 240
+7289c7341
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 456&431; after: 394&418; still untouched: 483
-7291a7295,7297
+> Memory usage before: 462&431; after: 400&418; still untouched: 240
+7292a7345,7347
>
> ### semi simple group (level 1) entered at line 429 (begingroup)
> ### bottom level
-7296,7299c7302,7305
+7297,7300c7352,7355
< 47 strings out of 1674
-< 253 string characters out of 8354
+< 253 string characters out of 8367
< 2825 words of memory out of 3000
< 372 multiletter control sequences out of 2100
---
-> 44 strings out of 1684
-> 261 string characters out of 8019
-> 4017 words of memory out of 4500
-> 496 multiletter control sequences out of 15000+0
-7301,7302c7307,7308
+> 44 strings out of 1627
+> 261 string characters out of 10703
+> 4260 words of memory out of 4500
+> 525 multiletter control sequences out of 15000+0
+7302,7303c7357,7358
< 2 hyphenation exceptions out of 307
< 7i,7n,9p,113b,38s stack positions out of 200i,40n,60p,500b,600s
---
> 1 hyphenation exception out of 659
> 7i,7n,9p,136b,40s stack positions out of 200i,40n,60p,500b,600s
+
+mv tripos.tex xptripos.tex
++ mv tripos.tex xptripos.tex
+diff $testdir/tripos.tex xptripos.tex
++ diff SRCDIR/triptrap/tripos.tex xptripos.tex
+
+eval ./dvitype $dvitype_args trip.dvi >xptrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' trip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' trip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' trip.dvi
+$DIFF $DIFFFLAGS $testdir/trip.typ xptrip.typ
+ diff SRCDIR/triptrap/trip.typ xptrip.typ
1c1
< This is DVItype, Version 3.6
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
-< ' TeX output 2014.01.07:0959'
+< ' TeX output 1776.07.04:1200'
---
-> ' TeX output 2015.04.12:1622'
+> ' TeX output 2021.01.27:1803'
419c419
< 1121: down4 639342208
---
@@ -734,63 +1210,177 @@
---
> 2535: y4 203921756
> 2540: y0 203921756
+
+mv trip.fmt xtrip.fmt
+ mv trip.fmt xtrip.fmt
+
+# =================================
+
+echo "*** e-TeX specific part of e-TRIP test for e-pTeX ***."
+ echo '*** e-TeX specific part of e-TRIP test for e-pTeX ***.'
*** e-TeX specific part of e-TRIP test for e-pTeX ***.
+
+./pltotf $etestdir/etrip.pl etrip.tfm || exit 1
+ ./pltotf SRCDIR/etexdir/etrip/etrip.pl etrip.tfm
+
+./tftopl ./etrip.tfm etrip.pl || exit 1
+ ./tftopl ./etrip.tfm etrip.pl
+
+diff $etestdir/etrip.pl etrip.pl || is_OK=false
+ diff SRCDIR/etexdir/etrip/etrip.pl etrip.pl
+
+# get same filename in log
+$LN_S $eptestdir/eptrip.tex etrip.tex
+ ln -s SRCDIR/eptexdir/eptrip/eptrip.tex etrip.tex
+
+./eptex --progname=epinitex --ini <$etestdir/etrip2.in >eptripin.fot
+ ./eptex --progname=epinitex --ini
+if test ! -s etrip.fmt; then
+ echo "*** etrip.fmt not created by etrip2.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s etrip.fmt
+sed "$P_SED1" etrip.log > eptripin.log || exit 1
+ sed 's/, yoko direction//;s/yoko direction, //' etrip.log
+diff $etestdir/etripin.log eptripin.log
+ diff SRCDIR/etexdir/etrip/etripin.log eptripin.log
1c1
< This is e-TeX, Version 3.14159265-2.6 (TeX Live 2014) (INITEX) 22 JAN 2014 11:25
---
-> This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (INITEX) 12 APR 2015 16:22
+> This is e-pTeX, Version 3.141592653-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:03
26,29c26,29
< (preloaded format=etrip 2014.1.22)
< 1491 strings of total length 26258
< 281 memory locations dumped; current usage is 36&167
< 408 multiletter control sequences
---
-> (preloaded format=etrip 2015.4.12)
-> 1617 strings of total length 28012
+> (preloaded format=etrip 2021.1.27)
+> 1674 strings of total length 29328
> 284 memory locations dumped; current usage is 40&167
-> 465 multiletter control sequences
+> 494 multiletter control sequences
+
+# May as well test non-ini second time through.
+./eptex --progname=eptex <$etestdir/etrip3.in >eptrip.fot
+ ./eptex --progname=eptex
+sed "$P_SED1;$P_SED2" etrip.log > eptrip.log
+ sed 's/, yoko direction//;s/yoko direction, //;s/yoko(math) direction, //' etrip.log
+diff $etestdir/etrip.fot eptrip.fot
+ diff SRCDIR/etexdir/etrip/etrip.fot eptrip.fot
1c1
< This is e-TeX, Version 3.14159265-2.6 (TeX Live 2014) (preloaded format=etex)
---
-> This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=eptex)
+> This is e-pTeX, Version 3.141592653-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2021/dev) (preloaded format=eptex)
+45,46d44
+<
+< \openout1 = `etrip.out'.
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $eptestdir/eptrip.log eptrip.log
+ diff SRCDIR/eptexdir/eptrip/eptrip.log eptrip.log
1c1
< This is e-pTeX, Version 3.14159265-p3.4-130605-2.6 (utf8.euc) (TeX Live 2014) (preloaded format=etrip 2014.1.22) 22 JAN 2014 11:25
---
-> This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=etrip 2015.4.12) 12 APR 2015 16:22
-4421,4422c4421,4422
+> This is e-pTeX, Version 3.141592653-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2021/dev) (preloaded format=etrip 2021.1.27) 27 JAN 2021 18:03
+57a58
+> .\displace 0.0
+104a106
+> .\displace 0.0
+133a136
+> .\displace 0.0
+193a197
+> .\displace 0.0
+205a210
+> ..\displace 0.0
+253a259
+> ..\displace 0.0
+283a290
+> ..\displace 0.0
+303a311
+> ..\displace 0.0
+692,693d699
+< \openout1 = `etrip.out'.
+<
+1426c1432
+< this will be denominator of:
+---
+> this will begin denominator of:
+1450c1456
+< this will be denominator of:
+---
+> this will begin denominator of:
+1497c1503
+< this will be denominator of:
+---
+> this will begin denominator of:
+1545c1551
+< this will be denominator of:
+---
+> this will begin denominator of:
+1662a1669
+> \displace 0.0
+1873a1881
+> \displace 0.0
+1881c1889
+< .\hbox(0.0+0.0)x0.0, shifted -16.5
+---
+> .\hbox(0.0+0.0)x0.0, shifted -16.5, yoko(math) direction
+1901a1910
+> \displace 0.0
+1906c1915
+< .\hbox(0.0+0.0)x0.0, shifted 3.0
+---
+> .\hbox(0.0+0.0)x0.0, shifted 3.0, yoko(math) direction
+2207c2216
+< A character number must be between 0 and 255, or KANJI code.
+---
+> A character number must be between 0 and 255.
+2213c2222
+< A character number must be between 0 and 255, or KANJI code.
+---
+> A character number must be between 0 and 255.
+4025a4035
+> ..\displace 0.0
+4033a4044
+> ..\displace 0.0
+4300a4312
+> .\displace 0.0
+4421,4422c4433,4434
< 19 strings out of 1692
< 145 string characters out of 8157
---
-> 19 strings out of 1683
-> 145 string characters out of 7988
-4424c4424
+> 19 strings out of 1626
+> 145 string characters out of 10672
+4424c4436
< 463 multiletter control sequences out of 15000+0
---
-> 466 multiletter control sequences out of 15000+0
+> 495 multiletter control sequences out of 15000+0
+
+mv etrip.out eptrip.out
++ mv etrip.out eptrip.out
+diff $etestdir/etrip.out eptrip.out
++ diff SRCDIR/etexdir/etrip/etrip.out eptrip.out
+
+eval ./dvitype $dvitype_args etrip.dvi >eptrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' etrip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' etrip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' etrip.dvi
+$DIFF $DIFFFLAGS $etestdir/etrip.typ eptrip.typ
+ diff SRCDIR/etexdir/etrip/etrip.typ eptrip.typ
1c1
< This is DVItype, Version 3.6 (TeX Live 2014)
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
< ' TeX output 2014.01.22:1125'
---
-> ' TeX output 2015.04.12:1622'
+> ' TeX output 2021.01.27:1803'
+
+$is_OK || {
+ echo ">>> There were some errors." >&2
+ exit 1
+}
+ :
-PASS: eptexdir/eptriptest
+
+PASS eptexdir/eptriptest.test (exit status: 0)
+PASS: eptexdir/eptriptest.test
diff --git a/Build/source/texk/web2c/etexdir/etex.ch b/Build/source/texk/web2c/etexdir/etex.ch
index 742cbec47ab..cf0d56c6479 100644
--- a/Build/source/texk/web2c/etexdir/etex.ch
+++ b/Build/source/texk/web2c/etexdir/etex.ch
@@ -20,8 +20,9 @@
@x limbo l.1 - this is e-TeX
% This program is copyright (C) 1982 by D. E. Knuth; all rights are reserved.
-% Copying of this file is authorized only if (1) you are D. E. Knuth, or if
-% (2) you make absolutely no changes to your copy. (The WEB system provides
+% Unlimited copying and redistribution of this file are permitted as long
+% as this file is not modified. Modifications are permitted, but only if
+% the resulting file is not named tex.web. (The WEB system provides
% for alterations via an auxiliary file; the master file should stay intact.)
% See Appendix H of the WEB manual for hints on how to install this program.
% And see Appendix A of the TRIP manual for details about how to validate it.
@@ -189,16 +190,16 @@ known as `\eTeX'.
@z
%---------------------------------------
@x [1] m.2 l.190 - e-TeX basic
-@d banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@y
@d eTeX_version=2 { \.{\\eTeXversion} }
@d eTeX_revision==".6" { \.{\\eTeXrevision} }
@d eTeX_version_string=='-2.6' {current \eTeX\ version}
@#
-@d eTeX_banner=='This is e-TeX, Version 3.14159265',eTeX_version_string
+@d eTeX_banner=='This is e-TeX, Version 3.141592653',eTeX_version_string
{printed when \eTeX\ starts}
@#
-@d TeX_banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d TeX_banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@#
@d banner==eTeX_banner
@#
@@ -1490,9 +1491,9 @@ end
@z
%---------------------------------------
@x [29] m.536 l.10348 - e-TeX basic
-print_two(time div 60); print_char(":"); print_two(time mod 60);
+print_two(sys_time div 60); print_char(":"); print_two(sys_time mod 60);
@y
-print_two(time div 60); print_char(":"); print_two(time mod 60);
+print_two(sys_time div 60); print_char(":"); print_two(sys_time mod 60);
if eTeX_ex then
begin; wlog_cr; wlog('entering extended mode');
end;
@@ -1947,9 +1948,9 @@ LR_save:=LR_ptr;
@z
%---------------------------------------
@x [39] m.879 l.17293 - e-TeX TeXXeT
- r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node| or |penalty_node|}
+ r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node|, or |penalty_node|}
@y
- r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node| or |penalty_node|}
+ r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node|, or |penalty_node|}
if type(q)=math_node then if TeXXeT_en then
@<Adjust \(t)the LR stack for the |post_line_break| routine@>;
@z
@@ -3019,9 +3020,9 @@ common_ending: define(u,set_font,f); eqtb[font_id_base+f]:=eqtb[u]; font_id_text
@z
%---------------------------------------
@x [49] m.1292 l.23633 - e-TeX show_groups
- show_lists:print_esc("showlists");
+ show_lists_code:print_esc("showlists");
@y
- show_lists:print_esc("showlists");
+ show_lists_code:print_esc("showlists");
@<Cases of |xray| for |print_cmd_chr|@>@;@/
@z
%---------------------------------------
diff --git a/Build/source/texk/web2c/etexdir/etexextra.h b/Build/source/texk/web2c/etexdir/etexextra.h
index 1ed4a35d67d..77a2a9d4246 100644
--- a/Build/source/texk/web2c/etexdir/etexextra.h
+++ b/Build/source/texk/web2c/etexdir/etexextra.h
@@ -20,7 +20,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <etexdir/etex_version.h> /* for ETEX_VERSION */
-#define BANNER "This is e-TeX, Version 3.14159265-" ETEX_VERSION
+#define BANNER "This is e-TeX, Version 3.141592653-" ETEX_VERSION
#define COPYRIGHT_HOLDER "Peter Breitenlohner et al"
#define AUTHOR NULL
#define PROGRAM_HELP ETEXHELP
diff --git a/Build/source/texk/web2c/etexdir/etrip/etrip.diffs b/Build/source/texk/web2c/etexdir/etrip/etrip.diffs
index adf22fe7978..0c635a9e6b2 100644
--- a/Build/source/texk/web2c/etexdir/etrip/etrip.diffs
+++ b/Build/source/texk/web2c/etexdir/etrip/etrip.diffs
@@ -1,46 +1,105 @@
+#! /bin/sh -vx
+# $Id: etriptest.test 45809 2017-11-15 00:36:56Z karl $
+# Copyright 2017 Karl Berry <tex-live@tug.org>
+# Copyright 2009-2014 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+etestdir=$abs_srcdir/etexdir/etrip
++ etestdir=SRCDIR/etexdir/etrip
+
+TEXMFCNF=$etestdir; export TEXMFCNF
++ TEXMFCNF=SRCDIR/etexdir/etrip
++ export TEXMFCNF
+
+rm -rf etripdir
++ rm -rf etripdir
+mkdir etripdir
++ mkdir etripdir
+cd etripdir
++ cd etripdir
+
+dvitype_args="-output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*'"
++ dvitype_args='-output-level=2 -dpi=72.27 -page-start='\''*.*.*.*.*.*.*.*.*.*'\'''
+
+echo ">>> Running e-TRIP test for e-TeX." >&2
++ echo '>>> Running e-TRIP test for e-TeX.'
>>> Running e-TRIP test for e-TeX.
+echo ">>> See $etestdir/etrip.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/etexdir/etrip/etrip.diffs for example of acceptable diffs.'
>>> See SRCDIR/etexdir/etrip/etrip.diffs for example of acceptable diffs.
+
+is_OK=:
++ is_OK=:
+
+set -x
++ set -x
+
+echo "*** TRIP test for e-TeX in compatibility mode ***."
+ echo '*** TRIP test for e-TeX in compatibility mode ***.'
*** TRIP test for e-TeX in compatibility mode ***.
+
+./pltotf $testdir/trip.pl trip.tfm || exit 1
+ ./pltotf SRCDIR/triptrap/trip.pl trip.tfm
+
+./tftopl ./trip.tfm trip.pl || exit 1
+ ./tftopl ./trip.tfm trip.pl
+
+diff $testdir/trip.pl trip.pl || is_OK=false
+ diff SRCDIR/triptrap/trip.pl trip.pl
+
+# get same filename in log
+$LN_S $testdir/trip.tex .
+ ln -s SRCDIR/triptrap/trip.tex .
+
+./etex --progname=einitex --ini <$testdir/trip1.in >ctripin.fot
+ ./etex --progname=einitex --ini
+if test ! -s trip.fmt; then
+ echo "*** trip.fmt not created by trip1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trip.fmt
+mv trip.log ctripin.log || exit 1
+ mv trip.log ctripin.log
+diff $testdir/tripin.log ctripin.log
+ diff SRCDIR/triptrap/tripin.log ctripin.log
1c1
-< This is TeX, Version 3.14159265 (INITEX) 7 JAN 2014 09:09
+< This is TeX, Version 3.141592653 (INITEX) 4 JUL 1776 12:00
---
-> This is e-TeX, Version 3.14159265-2.6 (TeX Live 2015) (INITEX) 12 APR 2015 16:23
+> This is e-TeX, Version 3.141592653-2.6 (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:01
3c3
< (trip.tex
---
> (./trip.tex
450,453c450,453
-< (preloaded format=trip 2014.1.7)
-< 1326 strings of total length 23646
+< (preloaded format=trip 1776.7.4)
+< 1326 strings of total length 23633
< 471 memory locations dumped; current usage is 96&278
< 341 multiletter control sequences
---
-> (preloaded format=trip 2015.4.12)
-> 1490 strings of total length 26227
+> (preloaded format=trip 2021.1.27)
+> 1491 strings of total length 26266
> 479 memory locations dumped; current usage is 104&278
> 342 multiletter control sequences
461c461
< Hyphenation trie of length 273 has 9 ops out of 500
---
> Hyphenation trie of length 273 has 9 ops out of 35111
+
+# May as well test non-ini second time through.
+./etex --progname=etex <$testdir/trip2.in >ctrip.fot
+ ./etex --progname=etex
+mv trip.log ctrip.log
+ mv trip.log ctrip.log
+diff $testdir/trip.fot ctrip.fot
+ diff SRCDIR/triptrap/trip.fot ctrip.fot
1,3c1,2
-< This is TeX, Version 3.14159265 (INITEX)
+< This is TeX, Version 3.141592653 (INITEX)
< ** &trip trip
< (trip.tex ##
---
-> This is e-TeX, Version 3.14159265-2.6 (TeX Live 2015) (preloaded format=etex)
+> This is e-TeX, Version 3.141592653-2.6 (TeX Live 2021/dev) (preloaded format=etex)
> **(./trip.tex ##
17c16
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
@@ -50,149 +109,157 @@
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
> Memory usage before: 434&431; after: 376&418; still untouched: 178
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $testdir/trip.log ctrip.log
+ diff SRCDIR/triptrap/trip.log ctrip.log
1c1
-< This is TeX, Version 3.14159265 (preloaded format=trip 2014.1.7) 7 JAN 2014 09:59
+< This is TeX, Version 3.141592653 (preloaded format=trip 1776.7.4) 4 JUL 1776 12:00
---
-> This is e-TeX, Version 3.14159265-2.6 (TeX Live 2015) (preloaded format=trip 2015.4.12) 12 APR 2015 16:23
+> This is e-TeX, Version 3.141592653-2.6 (TeX Live 2021/dev) (preloaded format=trip 2021.1.27) 27 JAN 2021 18:01
3c3
< (trip.tex ##
---
> (./trip.tex ##
-58a59,62
-> \openout0 = `8terminal.tex'.
->
-> \openout10 = `tripos.tex'.
->
-73c77
+73c73
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
> Memory usage before: 185&313; after: 112&278; still untouched: 2612
-642c646
+642c642
< Memory usage before: 747&484; after: 581&481; still untouched: 1492
---
> Memory usage before: 1027&484; after: 795&481; still untouched: 1491
-815c819
+815c815
< Memory usage before: 475&470; after: 290&466; still untouched: 1473
---
> Memory usage before: 653&470; after: 384&466; still untouched: 1472
-915c919
+915c915
< Memory usage before: 218&459; after: 149&458; still untouched: 1473
---
> Memory usage before: 286&459; after: 181&458; still untouched: 1472
-1070c1074
+1070c1070
< Memory usage before: 118&328; after: 102&328; still untouched: 1473
---
> Memory usage before: 132&328; after: 110&328; still untouched: 1472
-1405c1409
+1405c1405
< \vbox(16383.99998+0.0)x1000.0, glue set 16342.0fil
---
> \vbox(16383.99998+0.0)x1000.0, glue set 16341.99998fil
-1511c1515
+1511c1511
< Memory usage before: 990&376; after: 584&370; still untouched: 735
---
> Memory usage before: 1396&376; after: 788&370; still untouched: 1472
-1954c1958
+1954c1954
< (tripos.tex
---
> (./tripos.tex
-2018c2022
+2018c2018
< \vbox(16383.99998+1.0)x100.0, glue set 16239.0fil
---
> \vbox(16383.99998+1.0)x100.0, glue set 16238.99998fil
-2189c2193
+2189c2189
< Memory usage before: 950&531; after: 546&448; still untouched: 706
---
> Memory usage before: 1400&531; after: 772&448; still untouched: 1443
-2533c2537
+2533c2533
< \vbox(16383.99998+0.0)x20.0, glue set 16331.0fil
---
> \vbox(16383.99998+0.0)x20.0, glue set 16330.99998fil
-2575c2579
+2575c2575
< Memory usage before: 339&413; after: 236&405; still untouched: 706
---
> Memory usage before: 455&413; after: 296&405; still untouched: 1443
-3326c3330
+3326c3326
< \vbox(10000.0+2.0)x28.0, glue set 9737.58789fil
---
> \vbox(10000.0+2.0)x28.0, glue set 9737.58742fil
-3616c3620
+3616c3616
< Memory usage before: 2170&521; after: 1181&459; still untouched: 175
---
> Memory usage before: 3016&521; after: 1607&459; still untouched: 178
-3864c3868
+3864c3864
< \vbox(16383.99998+2.0)x100.0, glue set 16318.0fil
---
> \vbox(16383.99998+2.0)x100.0, glue set 16317.99997fil
-3951c3955
+3951c3951
< Memory usage before: 640&415; after: 397&410; still untouched: 175
---
> Memory usage before: 888&415; after: 525&410; still untouched: 178
-4034c4038
+4034c4034
< \vbox(16383.99998+0.0)x8236.0, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x8236.0, glue set 16343.99998fil
-4053c4057
+4053c4053
< Memory usage before: 235&401; after: 178&399; still untouched: 175
---
> Memory usage before: 307&401; after: 218&399; still untouched: 178
-4420c4424
+4420c4420
< \vbox(16383.99998+0.0)x100.0, glue set 16332.0fil
---
> \vbox(16383.99998+0.0)x100.0, glue set 16331.99998fil
-4506c4510
+4506c4506
< Memory usage before: 651&432; after: 417&418; still untouched: 175
---
> Memory usage before: 941&432; after: 565&418; still untouched: 178
-4742c4746
+4742c4742
< \vbox(16383.99998+0.0)x205.12613, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x205.12613, glue set 16343.99998fil
-4828c4832
+4828c4828
< Memory usage before: 776&458; after: 464&452; still untouched: 175
---
> Memory usage before: 1098&458; after: 630&452; still untouched: 178
-6380c6384
+6381c6381
< (tripos.tex
---
> (./tripos.tex
-6595c6599
+6596c6596
< Memory usage before: 819&428; after: 720&426; still untouched: 175
---
> Memory usage before: 1155&428; after: 1016&426; still untouched: 178
-7155c7159
+7156c7156
< Memory usage before: 895&439; after: 290&420; still untouched: 175
---
> Memory usage before: 1269&439; after: 374&420; still untouched: 178
-7288c7292
+7289c7289
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
> Memory usage before: 434&431; after: 376&418; still untouched: 178
-7296,7299c7300,7303
+7297,7300c7297,7300
< 47 strings out of 1674
-< 253 string characters out of 8354
+< 253 string characters out of 8367
< 2825 words of memory out of 3000
< 372 multiletter control sequences out of 2100
---
-> 44 strings out of 1810
-> 261 string characters out of 7773
+> 44 strings out of 1809
+> 261 string characters out of 7734
> 3821 words of memory out of 3999
> 373 multiletter control sequences out of 15000+0
-7301c7305
+7302c7302
< 2 hyphenation exceptions out of 307
---
> 1 hyphenation exception out of 659
+
+mv tripos.tex ctripos.tex
++ mv tripos.tex ctripos.tex
+diff $testdir/tripos.tex ctripos.tex
++ diff SRCDIR/triptrap/tripos.tex ctripos.tex
+
+eval ./dvitype $dvitype_args trip.dvi >ctrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' trip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' trip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' trip.dvi
+$DIFF $DIFFFLAGS $testdir/trip.typ ctrip.typ
+ diff SRCDIR/triptrap/trip.typ ctrip.typ
1c1
< This is DVItype, Version 3.6
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
-< ' TeX output 2014.01.07:0959'
+< ' TeX output 1776.07.04:1200'
---
-> ' TeX output 2015.04.12:1623'
+> ' TeX output 2021.01.27:1801'
419c419
< 1121: down4 639342208
---
@@ -203,12 +270,26 @@
---
> 2535: y4 203921756
> 2540: y0 203921756
+
+mv trip.fmt ctrip.fmt
+ mv trip.fmt ctrip.fmt
+
+# ==============================
+
+echo "*** TRIP test for e-TeX in extended mode ***."
+ echo '*** TRIP test for e-TeX in extended mode ***.'
*** TRIP test for e-TeX in extended mode ***.
+
+./etex --progname=einitex --ini <$etestdir/etrip1.in >xtripin.fot
+ ./etex --progname=einitex --ini
+if test ! -s trip.fmt; then
+ echo "*** trip.fmt not created by etrip1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trip.fmt
+mv trip.log xtripin.log || exit 1
+ mv trip.log xtripin.log
+diff ctripin.log xtripin.log
+ diff ctripin.log xtripin.log
2c2,3
< **\input trip
@@ -228,8 +309,13 @@
---
> 517 memory locations dumped; current usage is 142&278
> 408 multiletter control sequences
+
+# May as well test non-ini second time through.
+./etex --progname=etex <$etestdir/trip2.in >xtrip.fot
+ ./etex --progname=etex
+mv trip.log xtrip.log
+ mv trip.log xtrip.log
+diff ctrip.fot xtrip.fot
+ diff ctrip.fot xtrip.fot
2c2,3
< **(./trip.tex ##
@@ -244,6 +330,10 @@
>
> ### semi simple group (level 1) entered at line 429 (begingroup)
> ### bottom level
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS ctrip.log xtrip.log
+ diff ctrip.log xtrip.log
2,3c2,4
< ** &trip trip
@@ -252,125 +342,209 @@
> entering extended mode
> **&trip \toksdef\tokens=0 \input trip
> (./trip.tex
-77c78
+73c74
< Memory usage before: 185&313; after: 112&278; still untouched: 2612
---
> Memory usage before: 185&313; after: 112&278; still untouched: 1612
-1773d1773
+1769d1769
< {restoring \fam=-1}
-1783d1782
+1779d1778
< {restoring \displayindent=0.0pt}
-1837d1835
+1833d1831
< {restoring \fam=-1}
-2139c2137
+2135c2133
< .\hbox(0.0+0.0)x0.0, shifted 50.0
---
> .\hbox(0.0+0.0)x0.0, shifted 50.0, display
-2142c2140
+2138c2136
< .\hbox(0.0+0.0)x0.0, shifted 100.0
---
> .\hbox(0.0+0.0)x0.0, shifted 100.0, display
-2574c2572
+2570c2568
< .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0
---
> .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0, display
-2839d2836
+2835d2832
< {restoring current font=\ip}
-3227d3223
+3223d3219
< {restoring \fam=-1}
-3376c3372
+3372c3368
< .\hbox(68.26251+98.15005)x19.0, glue set - 1.0, shifted 9.0
---
> .\hbox(68.26251+98.15005)x19.0, glue set - 1.0, shifted 9.0, display
-3561c3557
+3557c3553
< .\hbox(20.5+50.80002)x8.27895, shifted 19.72105
---
> .\hbox(20.5+50.80002)x8.27895, shifted 19.72105, display
-3770d3765
+3766d3761
< {restoring \fam=-1}
-3843d3837
+3839d3833
< {restoring \fam=-1}
-3899c3893
+3895c3889
< ..\hbox(12.0+4.0)x8.1778
---
> ..\hbox(12.0+4.0)x8.1778, display
-3921c3915
+3917c3911
< ..\hbox(0.0+13.00002)x-0.1778, glue set - 57.67767fil
---
> ..\hbox(0.0+13.00002)x-0.1778, glue set - 57.67767fil, display
-3929c3923
+3925c3919
< ....\hbox(7.0+1.0)x5.0, shifted 47.5
---
> ....\hbox(7.0+1.0)x5.0, shifted 47.5, display
-4015d4008
+4011d4004
< {restoring \fam=-1}
-4051c4044
+4047c4040
< .\hbox(0.0+0.0)x1009.0, shifted 7227.0
---
> .\hbox(0.0+0.0)x1009.0, shifted 7227.0, display
-4055c4048
+4051c4044
< .\hbox(0.0+0.0)x-7127.0, shifted 7227.0
---
> .\hbox(0.0+0.0)x-7127.0, shifted 7227.0, display
-4849c4842
+4845c4838
< I'll pretend you didn't say \long or \outer or \global.
---
> I'll pretend you didn't say \long or \outer or \global or \protected.
-7295a7289,7291
+7292a7286,7288
>
> ### semi simple group (level 1) entered at line 429 (begingroup)
> ### bottom level
-7303c7299
+7300c7296
< 373 multiletter control sequences out of 15000+0
---
> 439 multiletter control sequences out of 15000+0
-7306c7302
+7303c7299
< 7i,7n,9p,113b,38s stack positions out of 200i,40n,60p,500b,600s
---
> 7i,7n,9p,136b,40s stack positions out of 200i,40n,60p,500b,600s
+
+mv tripos.tex xtripos.tex
++ mv tripos.tex xtripos.tex
+diff $testdir/tripos.tex xtripos.tex
++ diff SRCDIR/triptrap/tripos.tex xtripos.tex
+
+eval ./dvitype $dvitype_args trip.dvi >xtrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' trip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' trip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' trip.dvi
+$DIFF $DIFFFLAGS ctrip.typ xtrip.typ
+ diff ctrip.typ xtrip.typ
+
+mv trip.fmt xtrip.fmt
+ mv trip.fmt xtrip.fmt
+
+# ==============================
+
+echo "*** e-TeX specific part of e-TRIP test ***."
+ echo '*** e-TeX specific part of e-TRIP test ***.'
*** e-TeX specific part of e-TRIP test ***.
+
+./pltotf $etestdir/etrip.pl etrip.tfm || exit 1
+ ./pltotf SRCDIR/etexdir/etrip/etrip.pl etrip.tfm
+
+./tftopl ./etrip.tfm etrip.pl || exit 1
+ ./tftopl ./etrip.tfm etrip.pl
+
+diff $etestdir/etrip.pl etrip.pl || is_OK=false
+ diff SRCDIR/etexdir/etrip/etrip.pl etrip.pl
+
+# get same filename in log
+$LN_S $etestdir/etrip.tex .
+ ln -s SRCDIR/etexdir/etrip/etrip.tex .
+
+./etex --progname=einitex --ini <$etestdir/etrip2.in >etripin.fot
+ ./etex --progname=einitex --ini
+if test ! -s etrip.fmt; then
+ echo "*** etrip.fmt not created by etrip2.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s etrip.fmt
+mv etrip.log etripin.log || exit 1
+ mv etrip.log etripin.log
+diff $etestdir/etripin.log etripin.log
+ diff SRCDIR/etexdir/etrip/etripin.log etripin.log
1c1
< This is e-TeX, Version 3.14159265-2.6 (TeX Live 2014) (INITEX) 22 JAN 2014 11:25
---
-> This is e-TeX, Version 3.14159265-2.6 (TeX Live 2015) (INITEX) 12 APR 2015 16:23
-26c26
+> This is e-TeX, Version 3.141592653-2.6 (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:01
+26,27c26,27
< (preloaded format=etrip 2014.1.22)
+< 1491 strings of total length 26258
---
-> (preloaded format=etrip 2015.4.12)
+> (preloaded format=etrip 2021.1.27)
+> 1492 strings of total length 26297
+
+# May as well test non-ini second time through.
+./etex --progname=etex <$etestdir/etrip3.in >etrip.fot
+ ./etex --progname=etex
+diff $etestdir/etrip.fot etrip.fot
+ diff SRCDIR/etexdir/etrip/etrip.fot etrip.fot
1c1
< This is e-TeX, Version 3.14159265-2.6 (TeX Live 2014) (preloaded format=etex)
---
-> This is e-TeX, Version 3.14159265-2.6 (TeX Live 2015) (preloaded format=etex)
+> This is e-TeX, Version 3.141592653-2.6 (TeX Live 2021/dev) (preloaded format=etex)
+45,46d44
+<
+< \openout1 = `etrip.out'.
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $etestdir/etrip.log etrip.log
+ diff SRCDIR/etexdir/etrip/etrip.log etrip.log
1c1
< This is e-TeX, Version 3.14159265-2.6 (TeX Live 2014) (preloaded format=etrip 2014.1.22) 22 JAN 2014 11:25
---
-> This is e-TeX, Version 3.14159265-2.6 (TeX Live 2015) (preloaded format=etrip 2015.4.12) 12 APR 2015 16:23
+> This is e-TeX, Version 3.141592653-2.6 (TeX Live 2021/dev) (preloaded format=etrip 2021.1.27) 27 JAN 2021 18:01
+692,693d691
+< \openout1 = `etrip.out'.
+<
+1426c1424
+< this will be denominator of:
+---
+> this will begin denominator of:
+1450c1448
+< this will be denominator of:
+---
+> this will begin denominator of:
+1497c1495
+< this will be denominator of:
+---
+> this will begin denominator of:
+1545c1543
+< this will be denominator of:
+---
+> this will begin denominator of:
+4421,4422c4419,4420
+< 19 strings out of 1809
+< 145 string characters out of 7742
+---
+> 19 strings out of 1808
+> 145 string characters out of 7703
+
+diff $etestdir/etrip.out etrip.out
++ diff SRCDIR/etexdir/etrip/etrip.out etrip.out
+
+eval ./dvitype $dvitype_args etrip.dvi >etrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' etrip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' etrip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' etrip.dvi
+$DIFF $DIFFFLAGS $etestdir/etrip.typ etrip.typ
+ diff SRCDIR/etexdir/etrip/etrip.typ etrip.typ
1c1
< This is DVItype, Version 3.6 (TeX Live 2014)
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
< ' TeX output 2014.01.22:1125'
---
-> ' TeX output 2015.04.12:1623'
+> ' TeX output 2021.01.27:1801'
+
+$is_OK || {
+ echo ">>> There were some errors." >&2
+ exit 1
+}
+ :
-PASS: etexdir/etriptest
+
+PASS etexdir/etriptest.test (exit status: 0)
+PASS: etexdir/etriptest.test
diff --git a/Build/source/texk/web2c/etexdir/etrip/etrip.tex b/Build/source/texk/web2c/etexdir/etrip/etrip.tex
index 1ab15f7a708..bb688740f82 100644
--- a/Build/source/texk/web2c/etexdir/etrip/etrip.tex
+++ b/Build/source/texk/web2c/etexdir/etrip/etrip.tex
@@ -1,16 +1,16 @@
-%%; This is `etrip.tex' for e-TeX v3.14159265-2.6 as of Jan 22, 2014.
+%%; This is `etrip.tex' for e-TeX v3.141592653-2.6 as of Jan 28, 2021.
%%;
%%; This is a diabolical test file for e-TeX, an extension of TeX82.
%%; It is not as diabolical as `trip.tex', Knuth's torture test for TeX.
%%;
-%%; ==>> Do not use this TeX code and its macros as an example <<==
+%%; ==>> Do not use this TeX code and macros as an example of <<==
%%; ==>> how you can make use of the new e-TeX features! It is <<==
%%; ==>> meant to test these extensions and often uses slightly <<==
%%; ==>> wrong e-TeX input to produce errors and warnings. <<==
%%;
\catcode`\{=1\catcode`\}=2\catcode`\#=6 \let\bgroup={ \let\egroup=}
-\def\etripdate {2014-01-22}
-\def\texversion {3.14159265}
+\def\etripdate {2021-01-28}
+\def\texversion {3.141592653}
\def\etripversion{2.6}
%
\message{This is the e-Trip test [\etripdate] for
diff --git a/Build/source/texk/web2c/etexdir/tex.ch0 b/Build/source/texk/web2c/etexdir/tex.ch0
index 775e75259f8..43370703dd4 100644
--- a/Build/source/texk/web2c/etexdir/tex.ch0
+++ b/Build/source/texk/web2c/etexdir/tex.ch0
@@ -4,11 +4,11 @@
% Public domain.
@x [1.2] l.188
-@d TeX_banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d TeX_banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@#
@d banner==eTeX_banner
@y
-@d banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@z
@x [17.236] l.4960 - first web2c, then e-TeX additional integer parameters
diff --git a/Build/source/texk/web2c/etexdir/tex.ech b/Build/source/texk/web2c/etexdir/tex.ech
index feaea51e9a4..9fa445db42c 100644
--- a/Build/source/texk/web2c/etexdir/tex.ech
+++ b/Build/source/texk/web2c/etexdir/tex.ech
@@ -35,10 +35,10 @@
% Consequently, changes in all these files have to be coordinated.
@x [1] m.2 l.188 - Web2C: extensions imply we're not e-TeX
-@d eTeX_banner=='This is e-TeX, Version 3.14159265',eTeX_version_string
+@d eTeX_banner=='This is e-TeX, Version 3.141592653',eTeX_version_string
@y
-@d eTeX_banner_k=='This is e-TeXk, Version 3.14159265',eTeX_version_string
-@d eTeX_banner=='This is e-TeX, Version 3.14159265',eTeX_version_string
+@d eTeX_banner_k=='This is e-TeXk, Version 3.141592653',eTeX_version_string
+@d eTeX_banner=='This is e-TeX, Version 3.141592653',eTeX_version_string
@z
@x [16.215] - e-TeX last_node_type
diff --git a/Build/source/texk/web2c/euptexdir/euptex.ch0 b/Build/source/texk/web2c/euptexdir/euptex.ch0
index cc9c0285d34..3aa7a23de73 100644
--- a/Build/source/texk/web2c/euptexdir/euptex.ch0
+++ b/Build/source/texk/web2c/euptexdir/euptex.ch0
@@ -11,7 +11,7 @@
{printed when u\pTeX\ starts}
@#
@d eupTeX_version==pTeX_version_string,upTeX_version_string,epTeX_version_string,eTeX_version_string
-@d eupTeX_banner=='This is e-upTeX, Version 3.14159265',eupTeX_version
+@d eupTeX_banner=='This is e-upTeX, Version 3.141592653',eupTeX_version
@d eupTeX_banner_k==eupTeX_banner
{printed when \eupTeX\ starts}
@z
diff --git a/Build/source/texk/web2c/euptexdir/euptexextra.h b/Build/source/texk/web2c/euptexdir/euptexextra.h
index b24e5c6ac15..18a080d0bb7 100644
--- a/Build/source/texk/web2c/euptexdir/euptexextra.h
+++ b/Build/source/texk/web2c/euptexdir/euptexextra.h
@@ -8,7 +8,7 @@
#include <ptexdir/ptex_version.h> /* for PTEX_VERSION */
#include <uptexdir/uptex_version.h> /* for UPTEX_VERSION */
-#define BANNER "This is e-upTeX, Version 3.14159265-" PTEX_VERSION "-" UPTEX_VERSION "-" EPTEX_VERSION "-" ETEX_VERSION
+#define BANNER "This is e-upTeX, Version 3.141592653-" PTEX_VERSION "-" UPTEX_VERSION "-" EPTEX_VERSION "-" ETEX_VERSION
#define COPYRIGHT_HOLDER "D.E. Knuth"
#define AUTHOR "Peter Breitenlohner"
#define PROGRAM_HELP EUPTEXHELP
diff --git a/Build/source/texk/web2c/euptexdir/euptrip/euptrip.diffs b/Build/source/texk/web2c/euptexdir/euptrip/euptrip.diffs
index f8ef75d4b7d..648911bb89f 100644
--- a/Build/source/texk/web2c/euptexdir/euptrip/euptrip.diffs
+++ b/Build/source/texk/web2c/euptexdir/euptrip/euptrip.diffs
@@ -1,300 +1,524 @@
+#! /bin/sh -vx
+# $Id: euptriptest.test 48633 2018-09-09 17:56:55Z karl $
+# Copyright 2017-2018 Karl Berry <tex-live@tug.org>
+# Copyright 2011-2014 Peter Breitenlohner <tex-live@tug.org>
+# Copyright 2010 Hironori Kitagawa <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
++ LC_ALL=C
++ export LC_ALL
++ LANGUAGE=C
++ export LANGUAGE
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+etestdir=$abs_srcdir/etexdir/etrip
++ etestdir=SRCDIR/etexdir/etrip
+eptestdir=$abs_srcdir/eptexdir/eptrip
++ eptestdir=SRCDIR/eptexdir/eptrip
+euptestdir=$abs_srcdir/euptexdir/euptrip
++ euptestdir=SRCDIR/euptexdir/euptrip
+
+TEXMFCNF=$euptestdir; export TEXMFCNF
++ TEXMFCNF=SRCDIR/euptexdir/euptrip
++ export TEXMFCNF
+
+rm -rf euptripdir
++ rm -rf euptripdir
+mkdir euptripdir
++ mkdir euptripdir
+cd euptripdir
++ cd euptripdir
+
+dvitype_args="-output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*'"
++ dvitype_args='-output-level=2 -dpi=72.27 -page-start='\''*.*.*.*.*.*.*.*.*.*'\'''
+
+echo ">>> Running e-TRIP test for e-upTeX." >&2
++ echo '>>> Running e-TRIP test for e-upTeX.'
>>> Running e-TRIP test for e-upTeX.
+echo ">>> See $euptestdir/euptrip.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/euptexdir/euptrip/euptrip.diffs for example of acceptable diffs.'
>>> See SRCDIR/euptexdir/euptrip/euptrip.diffs for example of acceptable diffs.
+
+# upTeX outputs direction of boxes.
+P_SED1='s/, yoko direction//;s/yoko direction, //'
++ P_SED1='s/, yoko direction//;s/yoko direction, //'
+P_SED2='s/yoko(math) direction, //'
++ P_SED2='s/yoko(math) direction, //'
+
+is_OK=:
++ is_OK=:
+
+set -x
++ set -x
+
+echo "*** TRIP test for e-upTeX in compatibility mode ***."
+ echo '*** TRIP test for e-upTeX in compatibility mode ***.'
*** TRIP test for e-upTeX in compatibility mode ***.
+
+./pltotf $testdir/trip.pl trip.tfm || exit 1
+ ./pltotf SRCDIR/triptrap/trip.pl trip.tfm
+
+./tftopl ./trip.tfm trip.pl || exit 1
+ ./tftopl ./trip.tfm trip.pl
+
+diff $testdir/trip.pl trip.pl || is_OK=false
+ diff SRCDIR/triptrap/trip.pl trip.pl
+
+# get same filename in log
+$LN_S $testdir/trip.tex .
+ ln -s SRCDIR/triptrap/trip.tex .
+
+rm -f trip.log
+ rm -f trip.log
+./euptex --progname=eupinitex --ini <$testdir/trip1.in >cuptripin.fot
+ ./euptex --progname=eupinitex --ini
+if test ! -s trip.fmt; then
+ echo "*** trip.fmt not created by trip1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trip.fmt
+sed "$P_SED1" trip.log > cuptripin.log || exit 1
+ sed 's/, yoko direction//;s/yoko direction, //' trip.log
+diff $testdir/tripin.log cuptripin.log
+ diff SRCDIR/triptrap/tripin.log cuptripin.log
1c1
-< This is TeX, Version 3.14159265 (INITEX) 7 JAN 2014 09:09
+< This is TeX, Version 3.141592653 (INITEX) 4 JUL 1776 12:00
---
-> This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015) (INITEX) 12 APR 2015 16:22
-3,11c3
+> This is e-upTeX, Version 3.141592653-p3.8.3-u1.27-191112-2.6 (utf8.uptex) (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:03
+3c3
< (trip.tex
-< ! Bad character code (256).
-< <to be read again>
-< -
-< l.26 \nonstopmode\lccode256-
-< 0\mathchardef\a="8000\def\a{ SC...
-< A character number must be between 0 and 255.
-< I changed this one to zero.
-<
---
> (./trip.tex
-91c83,84
+91c91,92
< ### horizontal mode entered at line 77 (language255:hyphenmin1,63)
---
> ### horizontal mode entered at line 77 (language255:hyph
> enmin1,63)
-450,453c443,446
-< (preloaded format=trip 2014.1.7)
-< 1326 strings of total length 23646
+93a95
+> \displace 0.0
+95a98
+> \displace 0.0
+368a372
+> ....\displace 0.0
+370a375
+> ....\displace 0.0
+437,438d441
+< ....\rip 6 (ligature )
+< ....\rip 7 (ligature )
+450,453c453,456
+< (preloaded format=trip 1776.7.4)
+< 1326 strings of total length 23633
< 471 memory locations dumped; current usage is 96&278
< 341 multiletter control sequences
---
-> (preloaded format=trip 2015.4.12)
-> 1627 strings of total length 28005
-> 489 memory locations dumped; current usage is 110&278
-> 393 multiletter control sequences
-461c454
+> (preloaded format=trip 2021.1.27)
+> 1690 strings of total length 29502
+> 491 memory locations dumped; current usage is 112&278
+> 408 multiletter control sequences
+461c464
< Hyphenation trie of length 273 has 9 ops out of 500
---
> Hyphenation trie of length 273 has 9 ops out of 35111
+
+# May as well test non-ini second time through.
+rm -f trip.log
+ rm -f trip.log
+./euptex --progname=euptex <$testdir/trip2.in >cuptrip.fot
+ ./euptex --progname=euptex
+sed "$P_SED1;$P_SED2" trip.log > cuptrip.log
+ sed 's/, yoko direction//;s/yoko direction, //;s/yoko(math) direction, //' trip.log
+diff $testdir/trip.fot cuptrip.fot
+ diff SRCDIR/triptrap/trip.fot cuptrip.fot
1,3c1,2
-< This is TeX, Version 3.14159265 (INITEX)
+< This is TeX, Version 3.141592653 (INITEX)
< ** &trip trip
< (trip.tex ##
---
-> This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015) (preloaded format=euptex)
+> This is e-upTeX, Version 3.141592653-p3.8.3-u1.27-191112-2.6 (utf8.uptex) (TeX Live 2021/dev) (preloaded format=euptex)
> **(./trip.tex ##
17c16
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 194&313; after: 118&278; still untouched: 2109
+> Memory usage before: 196&313; after: 120&278; still untouched: 2109
75c74
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 456&431; after: 394&418; still untouched: 483
+> Memory usage before: 462&431; after: 400&418; still untouched: 240
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $testdir/trip.log cuptrip.log
+ diff SRCDIR/triptrap/trip.log cuptrip.log
1c1
-< This is TeX, Version 3.14159265 (preloaded format=trip 2014.1.7) 7 JAN 2014 09:59
+< This is TeX, Version 3.141592653 (preloaded format=trip 1776.7.4) 4 JUL 1776 12:00
---
-> This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015) (preloaded format=trip 2015.4.12) 12 APR 2015 16:22
+> This is e-upTeX, Version 3.141592653-p3.8.3-u1.27-191112-2.6 (utf8.uptex) (TeX Live 2021/dev) (preloaded format=trip 2021.1.27) 27 JAN 2021 18:03
3c3
< (trip.tex ##
---
> (./trip.tex ##
-58a59,62
-> \openout0 = `8terminal.tex'.
->
-> \openout10 = `tripos.tex'.
->
-73c77
+73c73
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 194&313; after: 118&278; still untouched: 2109
-385,386c389,390
+> Memory usage before: 196&313; after: 120&278; still untouched: 2109
+113a114
+> .\displace 0.0
+198a200
+> .\displace 0.0
+253a256
+> .\displace 0.0
+308a312
+> .\displace 0.0
+349a354
+> .\displace 0.0
+385,386c390,391
< \insert100, natural size 803.09999; split(1.0 plus 43.0,-2.0); float cos
< t 100
---
> \insert100Y, natural size 803.09999; split(1.0 plus 43.0,-2.0); float co
> st 100
-426c430
+406a412
+> ....\displace 0.0
+409a416
+> ....\displace 0.0
+412a420
+> ....\displace 0.0
+420a429
+> .\displace 0.0
+426c435
< \insert200, natural size 400.0; split(0.0,-2.0); float cost 100
---
> \insert200Y, natural size 400.0; split(0.0,-2.0); float cost 100
-441c445
+435a445
+> .\displace 0.0
+441c451
< \insert200, natural size 400.0; split(1.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(1.0,-1.0); float cost 100
-456c460
+450a461
+> .\displace 0.0
+456c467
< \insert200, natural size 400.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(2.0,-1.0); float cost 100
-474c478
+466a478
+> .\displace 0.0
+474c486
< \special{^^80-1000.0pt}
---
> \special{€-1000.0pt}
-483,484c487,488
+483,484c495,496
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-642c646
+588a601
+> .....\displace 0.0
+591a605
+> .....\displace 0.0
+594a609
+> .....\displace 0.0
+630a646
+> ......\displace 0.0
+633a650
+> ......\displace 0.0
+636a654
+> ......\displace 0.0
+642c660
< Memory usage before: 747&484; after: 581&481; still untouched: 1492
---
-> Memory usage before: 1090&483; after: 842&480; still untouched: 1989
-647c651,652
+> Memory usage before: 1118&483; after: 864&480; still untouched: 1989
+647c665,666
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-689c694
+650a670
+> .\displace 0.0
+660a681
+> .\displace 0.0
+670a692
+> .\displace 0.0
+681a704
+> .\displace 0.0
+689c712
< \special{^^80-1000.0pt}
---
> \special{€-1000.0pt}
-693,694c698,699
+693,694c716,717
< \insert100, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 10
< 0
---
> \insert100Y, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 1
> 00
-701c706
+701c724
< \insert200, natural size 2.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 2.0; split(2.0,-1.0); float cost 100
-714,715c719,720
+714,715c737,738
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-815c820
+815c838
< Memory usage before: 475&470; after: 290&466; still untouched: 1473
---
-> Memory usage before: 694&469; after: 410&465; still untouched: 1970
-820c825,826
+> Memory usage before: 710&469; after: 418&465; still untouched: 1970
+820c843,844
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-915c921
+915c939
< Memory usage before: 218&459; after: 149&458; still untouched: 1473
---
> Memory usage before: 308&458; after: 198&457; still untouched: 1970
-920c926,927
+920c944,945
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-1070c1077
+1070c1095
< Memory usage before: 118&328; after: 102&328; still untouched: 1473
---
> Memory usage before: 150&327; after: 126&327; still untouched: 1970
-1405c1412
+1405c1430
< \vbox(16383.99998+0.0)x1000.0, glue set 16342.0fil
---
> \vbox(16383.99998+0.0)x1000.0, glue set 16341.99998fil
-1504a1512
+1493a1519
+> ..\displace 0.0
+1503a1530
+> ..\displace 0.0
+1504a1532
> ..\displace 0.0
-1511c1519
+1511c1539
< Memory usage before: 990&376; after: 584&370; still untouched: 735
---
-> Memory usage before: 1490&375; after: 842&369; still untouched: 1970
-1954c1962
+> Memory usage before: 1498&375; after: 846&369; still untouched: 1970
+1887c1915
+< .\rip A
+---
+> .\displace 0.0
+1923c1951
+< .\hbox(0.0+0.0)x120.0 []
+---
+> .\hbox(0.0+0.0)x120.0, yoko(math) direction []
+1954c1982
< (tripos.tex
---
> (./tripos.tex
-2018c2026
+2018c2046
< \vbox(16383.99998+1.0)x100.0, glue set 16239.0fil
---
> \vbox(16383.99998+1.0)x100.0, glue set 16238.99998fil
-2048,2049c2056,2057
+2022a2051
+> ..\displace 0.0
+2048,2049c2077,2078
< ..\rip ^^82 (ligature CA)
< ..\rip ^^82 (ligature CA)
---
> ..\rip ‚ (ligature CA)
> ..\rip ‚ (ligature CA)
-2189c2197
+2058a2088
+> ..\displace 0.0
+2071a2102
+> ..\displace 0.0
+2092a2124
+> ..\displace 0.0
+2113a2146
+> ..\displace 0.0
+2123a2157
+> ..\displace 0.0
+2142a2177
+> ..\displace 0.0
+2150a2186
+> ..\displace 0.0
+2171c2207,2208
+< ..\hbox(0.0+0.0)x120.0
+---
+> ..\hbox(0.0+0.0)x120.0, yoko(math) direction
+> ...\displace 0.0
+2189c2226
< Memory usage before: 950&531; after: 546&448; still untouched: 706
---
-> Memory usage before: 1458&530; after: 808&447; still untouched: 1941
-2397c2405
+> Memory usage before: 1494&530; after: 826&447; still untouched: 1941
+2397c2434
< ! Improper alphabetic constant.
---
> ! Improper alphabetic or KANJI constant.
-2405,2406c2413,2421
-< {the character -}
-< {the character 1}
----
-> ! Extended delimiter code used as delcode.
-> <to be read again>
-> \relax
-> l.249 ...mber\the\delcode`\relax
-> \over{{{}}}}\pagestretch=-1\p...
-> A numeric delimiter code must be between 0 and 2^{27}-1.
-> I changed this one to zero.
->
-> {the character 0}
-2434d2448
-< \\mathord []
-2533c2547
+2533c2570
< \vbox(16383.99998+0.0)x20.0, glue set 16331.0fil
---
> \vbox(16383.99998+0.0)x20.0, glue set 16330.99998fil
-2575c2589
+2544a2582
+> ..\displace 0.0
+2570c2608,2609
+< .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0
+---
+> .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0, yoko(math) direction
+>
+2572c2611
+< ..\hbox(0.0+0.0)x0.0
+---
+> ..\hbox(0.0+0.0)x0.0, yoko(math) direction
+2575c2614
< Memory usage before: 339&413; after: 236&405; still untouched: 706
---
-> Memory usage before: 493&411; after: 327&403; still untouched: 1941
-2830c2844
+> Memory usage before: 497&411; after: 329&403; still untouched: 1941
+2650,2651c2689,2690
+< Dimensions can be in units of em, ex, in, pt, pc,
+< cm, mm, dd, cc, bp, or sp; but yours is a new one!
+---
+> Dimensions can be in units of em, ex, zw, zh, in, pt, pc,
+> cm, mm, dd, cc, bp, H, Q, or sp; but yours is a new one!
+2830c2869
< Since I expected to read a number between 0 and 15,
---
> Since I expected to read a number between 0 and 255,
-3051c3065
+3038c3077,3078
+< ^\hbox(7.0+1.0)x2.0
+---
+> ^\hbox(7.0+1.0)x2.0, yoko(math) direction
+> ^.\displace 0.0
+3051c3091
< \insert0, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
---
> \insert0Y, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
-3054c3068
+3054c3094
< .\fam0 ^^c8
---
> .\fam0 È
-3143a3158
+3056c3096
+< .\vbox(-2.0+0.0)x0.0
+---
+> .\vbox(-2.0+0.0)x0.0, yoko(math) direction
+3060c3100,3101
+< ^.\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ^.\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> ^..\displace 0.0
+3140a3182
+> .....\displace 0.0
+3142a3185
+> ....|\displace 0.0
+3143a3187
> ....\displace 0.0
-3235c3250
+3151a3196
+> .\displace 0.0
+3235c3280
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-3326c3341
+3286c3331
+< .\vbox(6.0+-8.0)x0.0
+---
+> .\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3326c3371
< \vbox(10000.0+2.0)x28.0, glue set 9737.58789fil
---
> \vbox(10000.0+2.0)x28.0, glue set 9737.58742fil
-3411c3426
+3329a3375
+> ..\displace 0.0
+3374c3420
+< ..\vbox(6.0+-8.0)x0.0
+---
+> ..\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3385c3431,3432
+< ......\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ......\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> .......\displace 0.0
+3411c3458
< p ^^82
---
> p ‚
-3547a3563
+3544a3592
+> ..........\displace 0.0
+3546a3595
+> .........|\displace 0.0
+3547a3597
> .........\displace 0.0
-3616c3632
+3564c3614,3615
+< ...\hbox(7.0+1.0)x1.99
+---
+> ...\hbox(7.0+1.0)x1.99, yoko(math) direction
+> ....\displace 0.0
+3616c3667
< Memory usage before: 2170&521; after: 1181&459; still untouched: 175
---
-> Memory usage before: 3263&519; after: 1743&457; still untouched: 483
-3864c3880
+> Memory usage before: 3283&519; after: 1753&457; still untouched: 240
+3864c3915
< \vbox(16383.99998+2.0)x100.0, glue set 16318.0fil
---
> \vbox(16383.99998+2.0)x100.0, glue set 16317.99997fil
-3951c3967
+3919,3920c3970,3972
+< ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247
+< ....\vbox(-0.00002+0.0)x0.0
+---
+> ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247, yoko(math) directi
+> on
+> ....\vbox(-0.00002+0.0)x0.0, yoko(math) direction
+3951c4003
< Memory usage before: 640&415; after: 397&410; still untouched: 175
---
-> Memory usage before: 959&413; after: 573&408; still untouched: 483
-3985c4001
+> Memory usage before: 959&413; after: 573&408; still untouched: 240
+3985c4037
< ^^82
---
> ‚
-3991c4007
+3991c4043
< []\ip A ^^82
---
> []\ip A ‚
-4034c4050
+4034c4086
< \vbox(16383.99998+0.0)x8236.0, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x8236.0, glue set 16343.99998fil
-4041c4057
+4041c4093
< ..\ip ^^82
---
> ..\ip ‚
-4053c4069
+4053c4105
< Memory usage before: 235&401; after: 178&399; still untouched: 175
---
-> Memory usage before: 342&399; after: 248&397; still untouched: 483
-4420c4436
+> Memory usage before: 342&399; after: 248&397; still untouched: 240
+4420c4472
< \vbox(16383.99998+0.0)x100.0, glue set 16332.0fil
---
> \vbox(16383.99998+0.0)x100.0, glue set 16331.99998fil
-4506c4522
+4425a4478
+> ...\displace 0.0
+4447a4501
+> ...\displace 0.0
+4475a4530
+> ...\displace 0.0
+4492a4548
+> ...\displace 0.0
+4506c4562
< Memory usage before: 651&432; after: 417&418; still untouched: 175
---
-> Memory usage before: 992&431; after: 598&417; still untouched: 483
-4742c4758,4759
+> Memory usage before: 1008&431; after: 606&417; still untouched: 240
+4742c4798,4799
< \vbox(16383.99998+0.0)x205.12613, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x205.12613, glue set 16343.99998fil, yoko directio
> n
-4828c4845
+4746a4804
+> ...\displace 0.0
+4762a4821
+> .....\displace 0.0
+4777a4837
+> ......\displace 0.0
+4828c4888
< Memory usage before: 776&458; after: 464&452; still untouched: 175
---
-> Memory usage before: 1174&457; after: 676&451; still untouched: 483
-4881,4888d4897
+> Memory usage before: 1186&457; after: 682&451; still untouched: 240
+4881,4888d4940
< ! Bad number (16).
< <to be read again>
< =
@@ -303,55 +527,97 @@
< Since I expected to read a number between 0 and 15,
< I changed this one to zero.
<
-5700c5709
+5701c5753
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-6380c6389
+6381c6433
< (tripos.tex
---
> (./tripos.tex
-6501c6510
+6502c6554
< l.429 ...^^M=13 \def^^M{\relax}#
---
> l.429 ...^^M=13 \defqqM{\relax}#
-6595c6604
+6596c6648
< Memory usage before: 819&428; after: 720&426; still untouched: 175
---
-> Memory usage before: 1220&428; after: 1070&426; still untouched: 483
-7155c7164
+> Memory usage before: 1232&428; after: 1078&426; still untouched: 240
+6853c6905
+< .|vbox(0.0+0.0)x0.0
+---
+> .|vbox(0.0+0.0)x0.0, yoko(math) direction
+6876a6929
+> ..|displace 0.0
+6891a6945
+> ..|displace 0.0
+6926a6981
+> .|displace 0.0
+6959a7015
+> .|displace 0.0
+6961c7017,7018
+< .|hbox(0.0+0.0)x0.0
+---
+> .|hbox(0.0+0.0)x0.0, yoko(math) direction
+> ..|displace 0.0
+6991a7049
+> .|displace 0.0
+7103a7162
+> ...|displace 0.0
+7108d7166
+< ...|ip A (ligature BB)
+7116a7175
+> ...|displace 0.0
+7125d7183
+< ...|kern2.0
+7126a7185
+> .|displace 0.0
+7136c7195
+< ...|vbox(0.0+0.0)x0.0
+---
+> ...|vbox(0.0+0.0)x0.0, yoko(math) direction
+7156c7215
< Memory usage before: 895&439; after: 290&420; still untouched: 175
---
-> Memory usage before: 1336&439; after: 392&420; still untouched: 483
-7288c7297
+> Memory usage before: 1350&439; after: 398&420; still untouched: 240
+7289c7348
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 456&431; after: 394&418; still untouched: 483
-7296,7299c7305,7308
+> Memory usage before: 462&431; after: 400&418; still untouched: 240
+7297,7300c7356,7359
< 47 strings out of 1674
-< 253 string characters out of 8354
+< 253 string characters out of 8367
< 2825 words of memory out of 3000
< 372 multiletter control sequences out of 2100
---
-> 44 strings out of 1673
-> 261 string characters out of 7995
-> 4017 words of memory out of 4500
-> 424 multiletter control sequences out of 15000+0
-7301c7310
+> 44 strings out of 1610
+> 261 string characters out of 10498
+> 4260 words of memory out of 4500
+> 439 multiletter control sequences out of 15000+0
+7302c7361
< 2 hyphenation exceptions out of 307
---
> 1 hyphenation exception out of 659
+
+mv tripos.tex cuptripos.tex
++ mv tripos.tex cuptripos.tex
+diff $testdir/tripos.tex cuptripos.tex
++ diff SRCDIR/triptrap/tripos.tex cuptripos.tex
+
+eval ./dvitype $dvitype_args trip.dvi >cuptrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' trip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' trip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' trip.dvi
+$DIFF $DIFFFLAGS $testdir/trip.typ cuptrip.typ
+ diff SRCDIR/triptrap/trip.typ cuptrip.typ
1c1
< This is DVItype, Version 3.6
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
-< ' TeX output 2014.01.07:0959'
+< ' TeX output 1776.07.04:1200'
---
-> ' TeX output 2015.04.12:1622'
+> ' TeX output 2021.01.27:1803'
419c419
< 1121: down4 639342208
---
@@ -362,373 +628,535 @@
---
> 2535: y4 203921756
> 2540: y0 203921756
+
+mv trip.fmt ctrip.fmt
+ mv trip.fmt ctrip.fmt
+
+# =================================
+
+echo "*** TRIP test for e-upTeX in extended mode ***."
+ echo '*** TRIP test for e-upTeX in extended mode ***.'
*** TRIP test for e-upTeX in extended mode ***.
+
+rm -f trip.log
+ rm -f trip.log
+./euptex --progname=eupinitex --ini <$etestdir/etrip1.in >xuptripin.fot
+ ./euptex --progname=eupinitex --ini
+if test ! -s trip.fmt; then
+ echo "*** trip.fmt not created by etrip1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trip.fmt
+sed "$P_SED1" trip.log > xuptripin.log || exit 1
+ sed 's/, yoko direction//;s/yoko direction, //' trip.log
+diff $testdir/tripin.log xuptripin.log
+ diff SRCDIR/triptrap/tripin.log xuptripin.log
-1,11c1,4
-< This is TeX, Version 3.14159265 (INITEX) 7 JAN 2014 09:09
+1,3c1,4
+< This is TeX, Version 3.141592653 (INITEX) 4 JUL 1776 12:00
< **\input trip
< (trip.tex
-< ! Bad character code (256).
-< <to be read again>
-< -
-< l.26 \nonstopmode\lccode256-
-< 0\mathchardef\a="8000\def\a{ SC...
-< A character number must be between 0 and 255.
-< I changed this one to zero.
-<
---
-> This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015) (INITEX) 12 APR 2015 16:22
+> This is e-upTeX, Version 3.141592653-p3.8.3-u1.27-191112-2.6 (utf8.uptex) (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:03
> entering extended mode
> ***\input trip
> (./trip.tex
-36,41d28
+36,41d36
< ! Bad register code (256).
< l.29 ...{1} \toksdef\tokens=256
< \show\errorstopmode
< A register number must be between 0 and 255.
< I changed this one to zero.
<
-91c78,79
+91c86,87
< ### horizontal mode entered at line 77 (language255:hyphenmin1,63)
---
> ### horizontal mode entered at line 77 (language255:hyph
> enmin1,63)
-450,453c438,441
-< (preloaded format=trip 2014.1.7)
-< 1326 strings of total length 23646
+93a90
+> \displace 0.0
+95a93
+> \displace 0.0
+368a367
+> ....\displace 0.0
+370a370
+> ....\displace 0.0
+437,438d436
+< ....\rip 6 (ligature )
+< ....\rip 7 (ligature )
+450,453c448,451
+< (preloaded format=trip 1776.7.4)
+< 1326 strings of total length 23633
< 471 memory locations dumped; current usage is 96&278
< 341 multiletter control sequences
---
-> (preloaded format=trip 2015.4.12)
-> 1627 strings of total length 28005
-> 536 memory locations dumped; current usage is 157&278
-> 471 multiletter control sequences
-461c449
+> (preloaded format=trip 2021.1.27)
+> 1690 strings of total length 29502
+> 538 memory locations dumped; current usage is 159&278
+> 503 multiletter control sequences
+461c459
< Hyphenation trie of length 273 has 9 ops out of 500
---
> Hyphenation trie of length 273 has 9 ops out of 35111
+
+# May as well test non-ini second time through.
+rm -f trip.log
+ rm -f trip.log
+./euptex --progname=euptex <$etestdir/trip2.in >xuptrip.fot
+ ./euptex --progname=euptex
+sed "$P_SED1;$P_SED2" trip.log > xuptrip.log
+ sed 's/, yoko direction//;s/yoko direction, //;s/yoko(math) direction, //' trip.log
+diff $testdir/trip.fot xuptrip.fot
+ diff SRCDIR/triptrap/trip.fot xuptrip.fot
1,3c1,3
-< This is TeX, Version 3.14159265 (INITEX)
+< This is TeX, Version 3.141592653 (INITEX)
< ** &trip trip
< (trip.tex ##
---
-> This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015) (preloaded format=euptex)
+> This is e-upTeX, Version 3.141592653-p3.8.3-u1.27-191112-2.6 (utf8.uptex) (TeX Live 2021/dev) (preloaded format=euptex)
> **entering extended mode
> ## (./trip.tex
17c17
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 194&313; after: 118&278; still untouched: 2109
+> Memory usage before: 196&313; after: 120&278; still untouched: 2109
75c75
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 456&431; after: 394&418; still untouched: 483
+> Memory usage before: 462&431; after: 400&418; still untouched: 240
77a78,80
>
> ### semi simple group (level 1) entered at line 429 (begingroup)
> ### bottom level
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $testdir/trip.log xuptrip.log
+ diff SRCDIR/triptrap/trip.log xuptrip.log
1,3c1,4
-< This is TeX, Version 3.14159265 (preloaded format=trip 2014.1.7) 7 JAN 2014 09:59
+< This is TeX, Version 3.141592653 (preloaded format=trip 1776.7.4) 4 JUL 1776 12:00
< ** &trip trip
< (trip.tex ##
---
-> This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015) (preloaded format=trip 2015.4.12) 12 APR 2015 16:22
+> This is e-upTeX, Version 3.141592653-p3.8.3-u1.27-191112-2.6 (utf8.uptex) (TeX Live 2021/dev) (preloaded format=trip 2021.1.27) 27 JAN 2021 18:03
> entering extended mode
> **&trip \toksdef\tokens=0 \input trip
> (./trip.tex
-58a60,63
-> \openout0 = `8terminal.tex'.
->
-> \openout10 = `tripos.tex'.
->
-73c78
+73c74
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 194&313; after: 118&278; still untouched: 2109
-385,386c390,391
+> Memory usage before: 196&313; after: 120&278; still untouched: 2109
+113a115
+> .\displace 0.0
+198a201
+> .\displace 0.0
+253a257
+> .\displace 0.0
+308a313
+> .\displace 0.0
+349a355
+> .\displace 0.0
+385,386c391,392
< \insert100, natural size 803.09999; split(1.0 plus 43.0,-2.0); float cos
< t 100
---
> \insert100Y, natural size 803.09999; split(1.0 plus 43.0,-2.0); float co
> st 100
-426c431
+406a413
+> ....\displace 0.0
+409a417
+> ....\displace 0.0
+412a421
+> ....\displace 0.0
+420a430
+> .\displace 0.0
+426c436
< \insert200, natural size 400.0; split(0.0,-2.0); float cost 100
---
> \insert200Y, natural size 400.0; split(0.0,-2.0); float cost 100
-441c446
+435a446
+> .\displace 0.0
+441c452
< \insert200, natural size 400.0; split(1.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(1.0,-1.0); float cost 100
-456c461
+450a462
+> .\displace 0.0
+456c468
< \insert200, natural size 400.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(2.0,-1.0); float cost 100
-474c479
+466a479
+> .\displace 0.0
+474c487
< \special{^^80-1000.0pt}
---
> \special{€-1000.0pt}
-483,484c488,489
+483,484c496,497
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-642c647
+588a602
+> .....\displace 0.0
+591a606
+> .....\displace 0.0
+594a610
+> .....\displace 0.0
+630a647
+> ......\displace 0.0
+633a651
+> ......\displace 0.0
+636a655
+> ......\displace 0.0
+642c661
< Memory usage before: 747&484; after: 581&481; still untouched: 1492
---
-> Memory usage before: 1090&483; after: 842&480; still untouched: 1989
-647c652,653
+> Memory usage before: 1118&483; after: 864&480; still untouched: 1989
+647c666,667
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-689c695
+650a671
+> .\displace 0.0
+660a682
+> .\displace 0.0
+670a693
+> .\displace 0.0
+681a705
+> .\displace 0.0
+689c713
< \special{^^80-1000.0pt}
---
> \special{€-1000.0pt}
-693,694c699,700
+693,694c717,718
< \insert100, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 10
< 0
---
> \insert100Y, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 1
> 00
-701c707
+701c725
< \insert200, natural size 2.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 2.0; split(2.0,-1.0); float cost 100
-714,715c720,721
+714,715c738,739
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-815c821
+815c839
< Memory usage before: 475&470; after: 290&466; still untouched: 1473
---
-> Memory usage before: 694&469; after: 410&465; still untouched: 1970
-820c826,827
+> Memory usage before: 710&469; after: 418&465; still untouched: 1970
+820c844,845
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-915c922
+915c940
< Memory usage before: 218&459; after: 149&458; still untouched: 1473
---
> Memory usage before: 308&458; after: 198&457; still untouched: 1970
-920c927,928
+920c945,946
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-1070c1078
+1070c1096
< Memory usage before: 118&328; after: 102&328; still untouched: 1473
---
> Memory usage before: 150&327; after: 126&327; still untouched: 1970
-1405c1413
+1405c1431
< \vbox(16383.99998+0.0)x1000.0, glue set 16342.0fil
---
> \vbox(16383.99998+0.0)x1000.0, glue set 16341.99998fil
-1504a1513
+1493a1520
+> ..\displace 0.0
+1503a1531
+> ..\displace 0.0
+1504a1533
> ..\displace 0.0
-1511c1520
+1511c1540
< Memory usage before: 990&376; after: 584&370; still untouched: 735
---
-> Memory usage before: 1490&375; after: 842&369; still untouched: 1970
-1769d1777
+> Memory usage before: 1498&375; after: 846&369; still untouched: 1970
+1769d1797
< {restoring \fam=-1}
-1779d1786
+1779d1806
< {restoring \displayindent=0.0pt}
-1833d1839
+1833d1859
< {restoring \fam=-1}
-1954c1960
+1887c1913
+< .\rip A
+---
+> .\displace 0.0
+1923c1949
+< .\hbox(0.0+0.0)x120.0 []
+---
+> .\hbox(0.0+0.0)x120.0, yoko(math) direction []
+1954c1980
< (tripos.tex
---
> (./tripos.tex
-2018c2024
+2018c2044
< \vbox(16383.99998+1.0)x100.0, glue set 16239.0fil
---
> \vbox(16383.99998+1.0)x100.0, glue set 16238.99998fil
-2048,2049c2054,2055
+2022a2049
+> ..\displace 0.0
+2048,2049c2075,2076
< ..\rip ^^82 (ligature CA)
< ..\rip ^^82 (ligature CA)
---
> ..\rip ‚ (ligature CA)
> ..\rip ‚ (ligature CA)
-2135c2141
+2058a2086
+> ..\displace 0.0
+2071a2100
+> ..\displace 0.0
+2092a2122
+> ..\displace 0.0
+2113a2144
+> ..\displace 0.0
+2123a2155
+> ..\displace 0.0
+2135c2167
< .\hbox(0.0+0.0)x0.0, shifted 50.0
---
> .\hbox(0.0+0.0)x0.0, shifted 50.0, display
-2138c2144
+2138c2170
< .\hbox(0.0+0.0)x0.0, shifted 100.0
---
> .\hbox(0.0+0.0)x0.0, shifted 100.0, display
-2189c2195
+2142a2175
+> ..\displace 0.0
+2150a2184
+> ..\displace 0.0
+2171c2205,2206
+< ..\hbox(0.0+0.0)x120.0
+---
+> ..\hbox(0.0+0.0)x120.0, yoko(math) direction
+> ...\displace 0.0
+2189c2224
< Memory usage before: 950&531; after: 546&448; still untouched: 706
---
-> Memory usage before: 1458&530; after: 808&447; still untouched: 1941
-2397c2403
+> Memory usage before: 1494&530; after: 826&447; still untouched: 1941
+2397c2432
< ! Improper alphabetic constant.
---
> ! Improper alphabetic or KANJI constant.
-2405,2406c2411,2419
-< {the character -}
-< {the character 1}
----
-> ! Extended delimiter code used as delcode.
-> <to be read again>
-> \relax
-> l.249 ...mber\the\delcode`\relax
-> \over{{{}}}}\pagestretch=-1\p...
-> A numeric delimiter code must be between 0 and 2^{27}-1.
-> I changed this one to zero.
->
-> {the character 0}
-2434d2446
-< \\mathord []
-2533c2545
+2533c2568
< \vbox(16383.99998+0.0)x20.0, glue set 16331.0fil
---
> \vbox(16383.99998+0.0)x20.0, glue set 16330.99998fil
-2570c2582,2583
+2544a2580
+> ..\displace 0.0
+2570c2606,2607
< .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0
---
-> .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0, display, yoko direct
-> ion
-2575c2588
+> .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0, display, yoko(math)
+> direction
+2572c2609
+< ..\hbox(0.0+0.0)x0.0
+---
+> ..\hbox(0.0+0.0)x0.0, yoko(math) direction
+2575c2612
< Memory usage before: 339&413; after: 236&405; still untouched: 706
---
-> Memory usage before: 493&411; after: 327&403; still untouched: 1941
-2830c2843
+> Memory usage before: 497&411; after: 329&403; still untouched: 1941
+2650,2651c2687,2688
+< Dimensions can be in units of em, ex, in, pt, pc,
+< cm, mm, dd, cc, bp, or sp; but yours is a new one!
+---
+> Dimensions can be in units of em, ex, zw, zh, in, pt, pc,
+> cm, mm, dd, cc, bp, H, Q, or sp; but yours is a new one!
+2830c2867
< Since I expected to read a number between 0 and 15,
---
> Since I expected to read a number between 0 and 255,
-2835d2847
+2835d2871
< {restoring current font=\ip}
-3051c3063
+3038c3074,3075
+< ^\hbox(7.0+1.0)x2.0
+---
+> ^\hbox(7.0+1.0)x2.0, yoko(math) direction
+> ^.\displace 0.0
+3051c3088
< \insert0, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
---
> \insert0Y, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
-3054c3066
+3054c3091
< .\fam0 ^^c8
---
> .\fam0 È
-3143a3156
+3056c3093
+< .\vbox(-2.0+0.0)x0.0
+---
+> .\vbox(-2.0+0.0)x0.0, yoko(math) direction
+3060c3097,3098
+< ^.\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ^.\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> ^..\displace 0.0
+3140a3179
+> .....\displace 0.0
+3142a3182
+> ....|\displace 0.0
+3143a3184
> ....\displace 0.0
-3223d3235
+3151a3193
+> .\displace 0.0
+3223d3264
< {restoring \fam=-1}
-3235c3247
+3235c3276
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-3326c3338
+3286c3327
+< .\vbox(6.0+-8.0)x0.0
+---
+> .\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3326c3367
< \vbox(10000.0+2.0)x28.0, glue set 9737.58789fil
---
> \vbox(10000.0+2.0)x28.0, glue set 9737.58742fil
-3372c3384
+3329a3371
+> ..\displace 0.0
+3372c3414
< .\hbox(68.26251+98.15005)x19.0, glue set - 1.0, shifted 9.0
---
> .\hbox(68.26251+98.15005)x19.0, glue set - 1.0, shifted 9.0, display
-3411c3423
+3374c3416
+< ..\vbox(6.0+-8.0)x0.0
+---
+> ..\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3385c3427,3428
+< ......\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ......\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> .......\displace 0.0
+3411c3454
< p ^^82
---
> p ‚
-3547a3560
+3544a3588
+> ..........\displace 0.0
+3546a3591
+> .........|\displace 0.0
+3547a3593
> .........\displace 0.0
-3557c3570
+3557c3603
< .\hbox(20.5+50.80002)x8.27895, shifted 19.72105
---
> .\hbox(20.5+50.80002)x8.27895, shifted 19.72105, display
-3616c3629
+3564c3610,3611
+< ...\hbox(7.0+1.0)x1.99
+---
+> ...\hbox(7.0+1.0)x1.99, yoko(math) direction
+> ....\displace 0.0
+3616c3663
< Memory usage before: 2170&521; after: 1181&459; still untouched: 175
---
-> Memory usage before: 3263&519; after: 1743&457; still untouched: 483
-3766d3778
+> Memory usage before: 3283&519; after: 1753&457; still untouched: 240
+3766d3812
< {restoring \fam=-1}
-3839d3850
+3839d3884
< {restoring \fam=-1}
-3864c3875
+3864c3909
< \vbox(16383.99998+2.0)x100.0, glue set 16318.0fil
---
> \vbox(16383.99998+2.0)x100.0, glue set 16317.99997fil
-3895c3906
+3895c3940
< ..\hbox(12.0+4.0)x8.1778
---
> ..\hbox(12.0+4.0)x8.1778, display
-3917c3928
+3917c3962
< ..\hbox(0.0+13.00002)x-0.1778, glue set - 57.67767fil
---
> ..\hbox(0.0+13.00002)x-0.1778, glue set - 57.67767fil, display
-3925c3936
+3919,3920c3964,3966
+< ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247
+< ....\vbox(-0.00002+0.0)x0.0
+---
+> ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247, yoko(math) directi
+> on
+> ....\vbox(-0.00002+0.0)x0.0, yoko(math) direction
+3925c3971
< ....\hbox(7.0+1.0)x5.0, shifted 47.5
---
> ....\hbox(7.0+1.0)x5.0, shifted 47.5, display
-3951c3962
+3951c3997
< Memory usage before: 640&415; after: 397&410; still untouched: 175
---
-> Memory usage before: 959&413; after: 573&408; still untouched: 483
-3985c3996
+> Memory usage before: 959&413; after: 573&408; still untouched: 240
+3985c4031
< ^^82
---
> ‚
-3991c4002
+3991c4037
< []\ip A ^^82
---
> []\ip A ‚
-4011d4021
+4011d4056
< {restoring \fam=-1}
-4034c4044
+4034c4079
< \vbox(16383.99998+0.0)x8236.0, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x8236.0, glue set 16343.99998fil
-4041c4051
+4041c4086
< ..\ip ^^82
---
> ..\ip ‚
-4047c4057
+4047c4092
< .\hbox(0.0+0.0)x1009.0, shifted 7227.0
---
> .\hbox(0.0+0.0)x1009.0, shifted 7227.0, display
-4051c4061
+4051c4096
< .\hbox(0.0+0.0)x-7127.0, shifted 7227.0
---
> .\hbox(0.0+0.0)x-7127.0, shifted 7227.0, display
-4053c4063
+4053c4098
< Memory usage before: 235&401; after: 178&399; still untouched: 175
---
-> Memory usage before: 342&399; after: 248&397; still untouched: 483
-4420c4430
+> Memory usage before: 342&399; after: 248&397; still untouched: 240
+4420c4465
< \vbox(16383.99998+0.0)x100.0, glue set 16332.0fil
---
> \vbox(16383.99998+0.0)x100.0, glue set 16331.99998fil
-4506c4516
+4425a4471
+> ...\displace 0.0
+4447a4494
+> ...\displace 0.0
+4475a4523
+> ...\displace 0.0
+4492a4541
+> ...\displace 0.0
+4506c4555
< Memory usage before: 651&432; after: 417&418; still untouched: 175
---
-> Memory usage before: 992&431; after: 598&417; still untouched: 483
-4742c4752,4753
+> Memory usage before: 1008&431; after: 606&417; still untouched: 240
+4742c4791,4792
< \vbox(16383.99998+0.0)x205.12613, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x205.12613, glue set 16343.99998fil, yoko directio
> n
-4828c4839
+4746a4797
+> ...\displace 0.0
+4762a4814
+> .....\displace 0.0
+4777a4830
+> ......\displace 0.0
+4828c4881
< Memory usage before: 776&458; after: 464&452; still untouched: 175
---
-> Memory usage before: 1174&457; after: 676&451; still untouched: 483
-4845c4856
+> Memory usage before: 1186&457; after: 682&451; still untouched: 240
+4845c4898
< I'll pretend you didn't say \long or \outer or \global.
---
> I'll pretend you didn't say \long or \outer or \global or \protected.
-4881,4888d4891
+4881,4888d4933
< ! Bad number (16).
< <to be read again>
< =
@@ -737,61 +1165,103 @@
< Since I expected to read a number between 0 and 15,
< I changed this one to zero.
<
-5700c5703
+5701c5746
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-6380c6383
+6381c6426
< (tripos.tex
---
> (./tripos.tex
-6501c6504
+6502c6547
< l.429 ...^^M=13 \def^^M{\relax}#
---
> l.429 ...^^M=13 \defqqM{\relax}#
-6595c6598
+6596c6641
< Memory usage before: 819&428; after: 720&426; still untouched: 175
---
-> Memory usage before: 1220&428; after: 1070&426; still untouched: 483
-7155c7158
+> Memory usage before: 1232&428; after: 1078&426; still untouched: 240
+6853c6898
+< .|vbox(0.0+0.0)x0.0
+---
+> .|vbox(0.0+0.0)x0.0, yoko(math) direction
+6876a6922
+> ..|displace 0.0
+6891a6938
+> ..|displace 0.0
+6926a6974
+> .|displace 0.0
+6959a7008
+> .|displace 0.0
+6961c7010,7011
+< .|hbox(0.0+0.0)x0.0
+---
+> .|hbox(0.0+0.0)x0.0, yoko(math) direction
+> ..|displace 0.0
+6991a7042
+> .|displace 0.0
+7103a7155
+> ...|displace 0.0
+7108d7159
+< ...|ip A (ligature BB)
+7116a7168
+> ...|displace 0.0
+7125d7176
+< ...|kern2.0
+7126a7178
+> .|displace 0.0
+7136c7188
+< ...|vbox(0.0+0.0)x0.0
+---
+> ...|vbox(0.0+0.0)x0.0, yoko(math) direction
+7156c7208
< Memory usage before: 895&439; after: 290&420; still untouched: 175
---
-> Memory usage before: 1336&439; after: 392&420; still untouched: 483
-7288c7291
+> Memory usage before: 1350&439; after: 398&420; still untouched: 240
+7289c7341
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 456&431; after: 394&418; still untouched: 483
-7291a7295,7297
+> Memory usage before: 462&431; after: 400&418; still untouched: 240
+7292a7345,7347
>
> ### semi simple group (level 1) entered at line 429 (begingroup)
> ### bottom level
-7296,7299c7302,7305
+7297,7300c7352,7355
< 47 strings out of 1674
-< 253 string characters out of 8354
+< 253 string characters out of 8367
< 2825 words of memory out of 3000
< 372 multiletter control sequences out of 2100
---
-> 44 strings out of 1673
-> 261 string characters out of 7995
-> 4017 words of memory out of 4500
-> 502 multiletter control sequences out of 15000+0
-7301,7302c7307,7308
+> 44 strings out of 1610
+> 261 string characters out of 10498
+> 4260 words of memory out of 4500
+> 534 multiletter control sequences out of 15000+0
+7302,7303c7357,7358
< 2 hyphenation exceptions out of 307
< 7i,7n,9p,113b,38s stack positions out of 200i,40n,60p,500b,600s
---
> 1 hyphenation exception out of 659
> 7i,7n,9p,136b,40s stack positions out of 200i,40n,60p,500b,600s
+
+mv tripos.tex xuptripos.tex
++ mv tripos.tex xuptripos.tex
+diff $testdir/tripos.tex xuptripos.tex
++ diff SRCDIR/triptrap/tripos.tex xuptripos.tex
+
+eval ./dvitype $dvitype_args trip.dvi >xuptrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' trip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' trip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' trip.dvi
+$DIFF $DIFFFLAGS $testdir/trip.typ xuptrip.typ
+ diff SRCDIR/triptrap/trip.typ xuptrip.typ
1c1
< This is DVItype, Version 3.6
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
-< ' TeX output 2014.01.07:0959'
+< ' TeX output 1776.07.04:1200'
---
-> ' TeX output 2015.04.12:1622'
+> ' TeX output 2021.01.27:1803'
419c419
< 1121: down4 639342208
---
@@ -802,70 +1272,177 @@
---
> 2535: y4 203921756
> 2540: y0 203921756
+
+mv trip.fmt xtrip.fmt
+ mv trip.fmt xtrip.fmt
+
+# =================================
+
+echo "*** e-TeX specific part of e-TRIP test for e-upTeX ***."
+ echo '*** e-TeX specific part of e-TRIP test for e-upTeX ***.'
*** e-TeX specific part of e-TRIP test for e-upTeX ***.
+
+./pltotf $etestdir/etrip.pl etrip.tfm || exit 1
+ ./pltotf SRCDIR/etexdir/etrip/etrip.pl etrip.tfm
+
+./tftopl ./etrip.tfm etrip.pl || exit 1
+ ./tftopl ./etrip.tfm etrip.pl
+
+diff $etestdir/etrip.pl etrip.pl || is_OK=false
+ diff SRCDIR/etexdir/etrip/etrip.pl etrip.pl
+
+# get same filename in log
+$LN_S $eptestdir/eptrip.tex etrip.tex
+ ln -s SRCDIR/eptexdir/eptrip/eptrip.tex etrip.tex
+
+./euptex --progname=eupinitex --ini <$etestdir/etrip2.in >euptripin.fot
+ ./euptex --progname=eupinitex --ini
+if test ! -s etrip.fmt; then
+ echo "*** etrip.fmt not created by etrip2.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s etrip.fmt
+sed "$P_SED1" etrip.log > euptripin.log || exit 1
+ sed 's/, yoko direction//;s/yoko direction, //' etrip.log
+diff $etestdir/etripin.log euptripin.log
+ diff SRCDIR/etexdir/etrip/etripin.log euptripin.log
1c1
< This is e-TeX, Version 3.14159265-2.6 (TeX Live 2014) (INITEX) 22 JAN 2014 11:25
---
-> This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015) (INITEX) 12 APR 2015 16:22
+> This is e-upTeX, Version 3.141592653-p3.8.3-u1.27-191112-2.6 (utf8.uptex) (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:03
26,29c26,29
< (preloaded format=etrip 2014.1.22)
< 1491 strings of total length 26258
< 281 memory locations dumped; current usage is 36&167
< 408 multiletter control sequences
---
-> (preloaded format=etrip 2015.4.12)
-> 1628 strings of total length 28036
+> (preloaded format=etrip 2021.1.27)
+> 1691 strings of total length 29533
> 284 memory locations dumped; current usage is 40&167
-> 471 multiletter control sequences
+> 503 multiletter control sequences
+
+# May as well test non-ini second time through.
+./euptex --progname=euptex <$etestdir/etrip3.in >euptrip.fot
+ ./euptex --progname=euptex
+sed "$P_SED1;$P_SED2" etrip.log > euptrip.log
+ sed 's/, yoko direction//;s/yoko direction, //;s/yoko(math) direction, //' etrip.log
+diff $etestdir/etrip.fot euptrip.fot
+ diff SRCDIR/etexdir/etrip/etrip.fot euptrip.fot
1c1
< This is e-TeX, Version 3.14159265-2.6 (TeX Live 2014) (preloaded format=etex)
---
-> This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015) (preloaded format=euptex)
+> This is e-upTeX, Version 3.141592653-p3.8.3-u1.27-191112-2.6 (utf8.uptex) (TeX Live 2021/dev) (preloaded format=euptex)
+45,46d44
+<
+< \openout1 = `etrip.out'.
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $eptestdir/eptrip.log euptrip.log
+ diff SRCDIR/eptexdir/eptrip/eptrip.log euptrip.log
1c1
< This is e-pTeX, Version 3.14159265-p3.4-130605-2.6 (utf8.euc) (TeX Live 2014) (preloaded format=etrip 2014.1.22) 22 JAN 2014 11:25
---
-> This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015) (preloaded format=etrip 2015.4.12) 12 APR 2015 16:22
-2210,2215d2209
-< ! Bad character code (256).
-< l.676 \iffontchar\font 256
-< \else \fi % <== bad character...
-< A character number must be between 0 and 255, or KANJI code.
-< I changed this one to zero.
+> This is e-upTeX, Version 3.141592653-p3.8.3-u1.27-191112-2.6 (utf8.uptex) (TeX Live 2021/dev) (preloaded format=etrip 2021.1.27) 27 JAN 2021 18:03
+57a58
+> .\displace 0.0
+104a106
+> .\displace 0.0
+133a136
+> .\displace 0.0
+193a197
+> .\displace 0.0
+205a210
+> ..\displace 0.0
+253a259
+> ..\displace 0.0
+283a290
+> ..\displace 0.0
+303a311
+> ..\displace 0.0
+692,693d699
+< \openout1 = `etrip.out'.
<
-4421,4422c4415,4416
+1426c1432
+< this will be denominator of:
+---
+> this will begin denominator of:
+1450c1456
+< this will be denominator of:
+---
+> this will begin denominator of:
+1497c1503
+< this will be denominator of:
+---
+> this will begin denominator of:
+1545c1551
+< this will be denominator of:
+---
+> this will begin denominator of:
+1662a1669
+> \displace 0.0
+1873a1881
+> \displace 0.0
+1881c1889
+< .\hbox(0.0+0.0)x0.0, shifted -16.5
+---
+> .\hbox(0.0+0.0)x0.0, shifted -16.5, yoko(math) direction
+1901a1910
+> \displace 0.0
+1906c1915
+< .\hbox(0.0+0.0)x0.0, shifted 3.0
+---
+> .\hbox(0.0+0.0)x0.0, shifted 3.0, yoko(math) direction
+2207c2216
+< A character number must be between 0 and 255, or KANJI code.
+---
+> A character number must be between 0 and 255.
+2213c2222
+< A character number must be between 0 and 255, or KANJI code.
+---
+> A character number must be between 0 and 255.
+4025a4035
+> ..\displace 0.0
+4033a4044
+> ..\displace 0.0
+4300a4312
+> .\displace 0.0
+4421,4422c4433,4434
< 19 strings out of 1692
< 145 string characters out of 8157
---
-> 19 strings out of 1672
-> 145 string characters out of 7964
-4424c4418
+> 19 strings out of 1609
+> 145 string characters out of 10467
+4424c4436
< 463 multiletter control sequences out of 15000+0
---
-> 472 multiletter control sequences out of 15000+0
+> 504 multiletter control sequences out of 15000+0
+
+mv etrip.out euptrip.out
++ mv etrip.out euptrip.out
+diff $etestdir/etrip.out euptrip.out
++ diff SRCDIR/etexdir/etrip/etrip.out euptrip.out
+
+eval ./dvitype $dvitype_args etrip.dvi >euptrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' etrip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' etrip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' etrip.dvi
+$DIFF $DIFFFLAGS $etestdir/etrip.typ euptrip.typ
+ diff SRCDIR/etexdir/etrip/etrip.typ euptrip.typ
1c1
< This is DVItype, Version 3.6 (TeX Live 2014)
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
< ' TeX output 2014.01.22:1125'
---
-> ' TeX output 2015.04.12:1622'
+> ' TeX output 2021.01.27:1803'
+
+$is_OK || {
+ echo ">>> There were some errors." >&2
+ exit 1
+}
+ :
-PASS: euptexdir/euptriptest
+
+PASS euptexdir/euptriptest.test (exit status: 0)
+PASS: euptexdir/euptriptest.test
diff --git a/Build/source/texk/web2c/gftodvi.web b/Build/source/texk/web2c/gftodvi.web
index 3540b500f1b..9fb263a7e35 100644
--- a/Build/source/texk/web2c/gftodvi.web
+++ b/Build/source/texk/web2c/gftodvi.web
@@ -32,7 +32,7 @@
\def\title{GF$\,$\lowercase{to}$\,$DVI}
\def\contentspagenumber{301}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont GFtoDVI} processor}
@@ -1128,7 +1128,7 @@ should be zero, but other document file formats allow nonzero vertical
escapement.
The character width~|w| duplicates the information in the \.{TFM} file; it
-is $2^{24}$ times the ratio of the true width to the font's design size.
+is $2^{20}$ times the ratio of the true width to the font's design size.
The backpointer |p| points to the character's |boc|, or to the first of
a sequence of consecutive \\{xxx} or |yyy| or |no_op| commands that
diff --git a/Build/source/texk/web2c/gftopk.web b/Build/source/texk/web2c/gftopk.web
index ab9ba104656..d7012a277ac 100644
--- a/Build/source/texk/web2c/gftopk.web
+++ b/Build/source/texk/web2c/gftopk.web
@@ -44,7 +44,7 @@
\def\title{GFtoPK}
\def\contentspagenumber{201}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont GFtoPK} processor}
@@ -681,7 +681,7 @@ definitions are called flag bytes, and various fields within the byte indicate
various things about how the character definition is encoded. Command bytes
have zero or more parameters, and can never appear within a character
definition or between parameters of another command, where they would be
-interpeted as data.
+interpreted as data.
A \.{PK} file consists of a preamble, followed by a sequence of one or more
character definitions, followed by a postamble. The preamble command must
@@ -722,7 +722,7 @@ of a keyword followed by possible parameters relevant to that keyword.
length exceeds~255.
\yskip\hang\\{pk\_xxx4} 243 |k[4]| |x[k]|. Like |pk_xxx1|, but |k| can be
-ridiculously large; |k| musn't be negative.
+ridiculously large; |k| mustn't be negative.
\yskip\hang|pk_yyy| 244 |y[4]|. This command is undefined in general; it
functions as a five-byte \\{no\_op} unless special \.{PK} reading programs
@@ -1281,7 +1281,7 @@ end ;
@* Plan of attack.
It would seem at first that converting a \.{GF} file to \.{PK} format should
be relatively easy, since they both use a form of run-encoding. Unfortunately,
-several idiosyncracies of the \.{GF} format make this conversion slightly
+several idiosyncrasies of the \.{GF} format make this conversion slightly
cumbersome.
The \.{GF} format separates the raster information from the escapement values
and \.{TFM} widths; the \.{PK} format combines all information about a single
@@ -1458,7 +1458,7 @@ end
@<Glob...@>=
@!gf_ch : integer ; {the character we are working with}
-@!gf_ch_mod_256 : integer ; {locater pointer}
+@!gf_ch_mod_256 : integer ; {locator pointer}
@!pred_pk_loc : integer ; {where we predict the end of the character to be.}
@!max_n, @!min_n : integer ; {the maximum and minimum horizontal rows}
@!max_m, @!min_m : integer ; {the maximum and minimum vertical rows}
@@ -1705,7 +1705,7 @@ end else begin
end
@ We must convert the run-count array from a row orientation to a glyph
-orientation, with repeat counts for repeated rows. We seperate this task
+orientation, with repeat counts for repeated rows. We separate this task
into two smaller tasks, on a per row basis. But first, we define a new
macro to help us fill up this new array. Here, we have no fear that we will
run out of space, as the glyph representation is provably smaller than the
@@ -2152,10 +2152,10 @@ pk_byte(pk_post) ;
while (pk_loc mod 4 <> 0) do pk_byte(pk_no_op)
@ Once we are finished with the \.{GF} file, we check the status of each
-character to insure that each character that had a locater also had raster
+character to insure that each character that had a locator also had raster
information.
-@<Check for un-rasterized locaters@>=
+@<Check for unrasterized locators@>=
for i := 0 to 255 do
if status[i] = located then
print_ln('Character ',i:1,' missing raster information!')
@@ -2166,7 +2166,7 @@ for i := 0 to 255 do
@p begin
initialize ;
convert_gf_file ;
- @<Check for un-rasterized locaters@> ;
+ @<Check for unrasterized locators@> ;
print_ln(gf_len:1,' bytes packed to ',pk_loc:1,' bytes.') ;
final_end : end .
diff --git a/Build/source/texk/web2c/gftype.web b/Build/source/texk/web2c/gftype.web
index ef6feeefef4..df530672b0d 100644
--- a/Build/source/texk/web2c/gftype.web
+++ b/Build/source/texk/web2c/gftype.web
@@ -30,7 +30,7 @@
\def\title{GFtype}
\def\contentspagenumber{101}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont GFtype} processor}
@@ -572,7 +572,7 @@ should be zero, but other document file formats allow nonzero vertical
escapement.
The character width~|w| duplicates the information in the \.{TFM} file; it
-is $2^{24}$ times the ratio of the true width to the font's design size.
+is $2^{20}$ times the ratio of the true width to the font's design size.
The backpointer |p| points to the character's |boc|, or to the first of
a sequence of consecutive \\{xxx} or |yyy| or |no_op| commands that
diff --git a/Build/source/texk/web2c/lib/texmfmp.c b/Build/source/texk/web2c/lib/texmfmp.c
index 983d44bd903..8b898176e8a 100644
--- a/Build/source/texk/web2c/lib/texmfmp.c
+++ b/Build/source/texk/web2c/lib/texmfmp.c
@@ -74,7 +74,7 @@
#define IS_upTeX 1
#include <euptexdir/euptexextra.h>
#else
-#define BANNER "This is TeX, Version 3.14159265"
+#define BANNER "This is TeX, Version 3.141592653"
#define COPYRIGHT_HOLDER "D.E. Knuth"
#define AUTHOR NULL
#define PROGRAM_HELP TEXHELP
@@ -95,7 +95,7 @@
#elif defined(MFLuaJIT)
#include <mfluajitdir/mfluajitextra.h>
#else
-#define BANNER "This is Metafont, Version 2.7182818"
+#define BANNER "This is Metafont, Version 2.71828182"
#define COPYRIGHT_HOLDER "D.E. Knuth"
#define AUTHOR NULL
#define PROGRAM_HELP MFHELP
diff --git a/Build/source/texk/web2c/mf-binpool.ch b/Build/source/texk/web2c/mf-binpool.ch
index b9dea85b85e..a406cd8ea44 100644
--- a/Build/source/texk/web2c/mf-binpool.ch
+++ b/Build/source/texk/web2c/mf-binpool.ch
@@ -3,11 +3,11 @@
%
@x
@!m,@!n:text_char; {characters input from |pool_file|}
-@!g:str_number; {garbage}
+@!g:str_number; {the string just created}
@!a:integer; {accumulator for check sum}
@!c:boolean; {check sum has been checked}
@y
-@!g:str_number; {garbage}
+@!g:str_number; {the string just created}
@z
@x
@ @d bad_pool(#)==begin wake_up_terminal; write_ln(term_out,#);
diff --git a/Build/source/texk/web2c/mf.ch b/Build/source/texk/web2c/mf.ch
index 411ec092ccd..1e817753dde 100644
--- a/Build/source/texk/web2c/mf.ch
+++ b/Build/source/texk/web2c/mf.ch
@@ -704,14 +704,14 @@ not been commented out.
@d edit_file==input_stack[file_ptr]
@z
@x
-"E": if file_ptr>0 then
+"E": if file_ptr>0 then if input_stack[file_ptr].name_field>=256 then
begin print_nl("You want to edit file ");
@.You want to edit file x@>
slow_print(input_stack[file_ptr].name_field);
print(" at line "); print_int(line);@/
interaction:=scroll_mode; jump_out;
@y
-"E": if file_ptr>0 then
+"E": if file_ptr>0 then if input_stack[file_ptr].name_field>=256 then
begin
edit_name_start:=str_start[edit_file.name_field];
edit_name_length:=str_start[edit_file.name_field+1] -
@@ -1009,37 +1009,29 @@ repeat if (p>=lo_mem_max) then clobbered:=true
input and output, establishes the initial values of the date and time.
@^system dependencies@>
Since standard \PASCAL\ cannot provide such information, something special
-is needed. The program here simply specifies July 4, 1776, at noon; but
-users probably want a better approximation to the truth.
+is needed. The program here simply assumes that suitable values appear in
+the global variables \\{sys\_time}, \\{sys\_day}, \\{sys\_month}, and
+\\{sys\_year} (which are initialized to noon on 4 July 1776,
+in case the implementor is careless).
Note that the values are |scaled| integers. Hence \MF\ can no longer
be used after the year 32767.
@p procedure fix_date_and_time;
-begin internal[time]:=12*60*unity; {minutes since midnight}
-internal[day]:=4*unity; {fourth day of the month}
-internal[month]:=7*unity; {seventh month of the year}
-internal[year]:=1776*unity; {Anno Domini}
-end;
+begin sys_time:=12*60;
+sys_day:=4; sys_month:=7; sys_year:=1776; {self-evident truths}
@y
@ The following procedure, which is called just before \MF\ initializes its
input and output, establishes the initial values of the date and time.
-It is calls an externally defined |date_and_time|, even though it could
-be done from Pascal.
-The external procedure also sets up interrupt catching.
+It calls an externally defined |date_and_time|, which also sets up
+interrupt catching. See more comments in \.{tex.ch}.
@^system dependencies@>
Note that the values are |scaled| integers. Hence \MF\ can no longer
be used after the year 32767.
@p procedure fix_date_and_time;
-begin
- date_and_time(internal[time],internal[day],internal[month],internal[year]);
- internal[time] := internal[time] * unity;
- internal[day] := internal[day] * unity;
- internal[month] := internal[month] * unity;
- internal[year] := internal[year] * unity;
-end;
+begin date_and_time(sys_time,sys_day,sys_month,sys_year);
@z
@x [12.198] Change class to c_class to avoid C++ keyword.
@@ -1176,7 +1168,7 @@ end;
@!n:screen_col);
var @!k:screen_col; {an index into |a|}
@!c:screen_col; {an index into |screen_pixel|}
-begin @{ k:=0; c:=a[0];
+begin @{@+k:=0; c:=a[0];
repeat incr(k);
repeat screen_pixel[r,c]:=b; incr(c);
until c=a[k];
@@ -1535,16 +1527,9 @@ recorder_change_filename(stringcast(name_of_file+1));
pack_job_name(".log");
@z
-@x [38.790]
-begin wlog(banner);
-slow_print(base_ident); print(" ");
-print_int(round_unscaled(internal[day])); print_char(" ");
+@x [38.790] leading character for C string
months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
@y
-begin wlog(banner);
-wlog (version_string);
-slow_print(base_ident); print(" ");
-print_int(round_unscaled(internal[day])); print_char(" ");
months := ' JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
@z
@@ -1592,7 +1577,7 @@ loop@+begin
@z
@x [38.793] Can't return name to string pool because of editor option?
-if name=str_ptr-1 then {we can conserve string pool space now}
+if name=str_ptr-1 then {conserve string pool space (but see note above)}
begin flush_string(name); name:=cur_name;
end;
@y
@@ -1969,6 +1954,12 @@ if (edit_name_start<>0) and (interaction>batch_mode) then
@!init if ini_version then begin store_base_file; return;end;@+tini@/
@z
+@x
+fix_date_and_time; init_randoms(sys_time+sys_day);@/
+@y
+fix_date_and_time; init_randoms(internal[time]+internal[day]);@/
+@z
+
%@x [49.1211] l.23002 - Handle %&base line.
%if (base_ident=0)or(buffer[loc]="&") then
%@y
diff --git a/Build/source/texk/web2c/mf.web b/Build/source/texk/web2c/mf.web
index ca3cb2518d8..9bd87b3141d 100644
--- a/Build/source/texk/web2c/mf.web
+++ b/Build/source/texk/web2c/mf.web
@@ -1,6 +1,7 @@
% This program is copyright (C) 1984 by D. E. Knuth; all rights are reserved.
-% Copying of this file is authorized only if (1) you are D. E. Knuth, or if
-% (2) you make absolutely no changes to your copy. (The WEB system provides
+% Unlimited copying and redistribution of this file are permitted as long
+% as this file is not modified. Modifications are permitted, but only if
+% the resulting file is not named mf.web. (The WEB system provides
% for alterations via an auxiliary file; the master file should stay intact.)
% In other words, METAFONT is under essentially the same ground rules as TeX.
@@ -26,6 +27,7 @@
% Version 2.71828 suppressed autorounding in dangerous cases (June 2003).
% Version 2.718281 was a general cleanup with minor fixes (February 2008).
% Version 2.7182818 was similar (January 2014).
+% Version 2.71828182 was similar (January 2021).
% A reward of $327.68 will be paid to the first finder of any remaining bug.
@@ -155,7 +157,7 @@ helping to determine whether an implementation deserves to be
known as `\MF\kern.5pt' [cf.~Stanford Computer Science report CS1095,
January 1986].
-@d banner=='This is METAFONT, Version 2.7182818' {printed when \MF\ starts}
+@d banner=='This is METAFONT, Version 2.71828182' {printed when \MF\ starts}
@ Different \PASCAL s have slightly different conventions, and the present
@!@:PASCAL H}{\ph@>
@@ -166,7 +168,7 @@ reader see how to make an appropriate interface for other systems
if necessary. (\ph\ is Charles Hedrick's modification of a compiler
@^Hedrick, Charles Locke@>
for the DECsystem-10 that was originally developed at the University of
-Hamburg; cf.\ {\sl SOFTWARE---Practice \AM\ Experience \bf6} (1976),
+Hamburg; cf.\ {\sl Software---Practice and Experience \bf6} (1976),
29--42. The \MF\ program below is intended to be adaptable, without
extensive changes, to most other versions of \PASCAL, so it does not fully
use the admirable features of \ph. Indeed, a conscious effort has been
@@ -830,7 +832,7 @@ representing the beginning and ending of a line of text.
@!max_buf_stack:0..buf_size; {largest index used in |buffer|}
@ The |input_ln| function brings the next line of input from the specified
-field into available positions of the buffer array and returns the value
+file into available positions of the buffer array and returns the value
|true|, unless the file has already been entirely read, in which case it
returns |false| and sets |last:=first|. In general, the |ASCII_code|
numbers that represent the next line of the file are input into
@@ -1218,7 +1220,7 @@ on the information that \.{WEB} has output while processing \MF.
label done,exit;
var @!k,@!l:0..255; {small indices or counters}
@!m,@!n:text_char; {characters input from |pool_file|}
-@!g:str_number; {garbage}
+@!g:str_number; {the string just created}
@!a:integer; {accumulator for check sum}
@!c:boolean; {check sum has been checked}
begin pool_ptr:=0; str_ptr:=0; max_pool_ptr:=0; max_str_ptr:=0; str_start[0]:=0;
@@ -1499,9 +1501,9 @@ end;
@ Here is the very first thing that \MF\ prints: a headline that identifies
the version number and base name. The |term_offset| variable is temporarily
-incorrect, but the discrepancy is not serious since we assume that the banner
-and base identifier together will occupy at most |max_print_line|
-character positions.
+incorrect, but the discrepancy is not serious since we assume that this
+part of the program is system dependent.
+@^system dependencies@>
@<Initialize the output...@>=
wterm(banner);
@@ -1538,7 +1540,7 @@ by all \PASCAL\ compilers.
@<Basic print...@>=
procedure print_int(@!n:integer); {prints an integer in decimal form}
-var k:0..23; {index to current digit; we assume that $|n|<10^{23}$}
+var k:0..23; {index to current digit; we assume that $\vert n\vert<10^{23}$}
@!m:integer; {used to negate |n| in possibly dangerous cases}
begin k:=0;
if n<0 then
@@ -1758,7 +1760,8 @@ if error_count=100 then
exit:end;
@ @<Get user's advice...@>=
-loop@+begin continue: clear_for_error_prompt; prompt_input("? ");
+loop@+begin continue: if interaction<>error_stop_mode then return;
+ clear_for_error_prompt; prompt_input("? ");
@.?\relax@>
if last=first then return;
c:=buffer[first];
@@ -1783,7 +1786,7 @@ case c of
"0","1","2","3","4","5","6","7","8","9": if deletions_allowed then
@<Delete |c-"0"| tokens and |goto continue|@>;
@t\4\4@>@;@+@!debug "D":begin debug_help;goto continue;@+end;@+gubed@/
-"E": if file_ptr>0 then
+"E": if file_ptr>0 then if input_stack[file_ptr].name_field>=256 then
begin print_nl("You want to edit file ");
@.You want to edit file x@>
slow_print(input_stack[file_ptr].name_field);
@@ -1804,7 +1807,8 @@ begin print("Type <return> to proceed, S to scroll future error messages,");@/
@.Type <return> to proceed...@>
print_nl("R to run without stopping, Q to run quietly,");@/
print_nl("I to insert something, ");
-if file_ptr>0 then print("E to edit your file,");
+if file_ptr>0 then if input_stack[file_ptr].name_field>=256 then
+ print("E to edit your file,");
if deletions_allowed then
print_nl("1 or ... or 9 to ignore the next 1 to 9 tokens of input,");
print_nl("H for help, X to quit.");
@@ -1999,7 +2003,7 @@ begin if OK_to_interrupt then
print_err("Interruption");
@.Interruption@>
help3("You rang?")@/
- ("Try to insert some instructions for me (e.g.,`I show x'),")@/
+ ("Try to insert an instruction for me (e.g., `I show x;'),")@/
("unless you just want to quit by typing `X'.");
deletions_allowed:=false; error; deletions_allowed:=true;
interrupt:=0;
@@ -2200,7 +2204,7 @@ sets |arith_error:=true|. Most of \MF's internal computations have
been designed to avoid this sort of error.
Notice that if 64-bit integer arithmetic were available,
-we could simply compute |(@t$(2^{29}$@>*p+q)div (2*q)|.
+we could simply compute |@t$(2^{29}$@>*p+q)div (2*q)|.
But when we are restricted to \PASCAL's 32-bit arithmetic we
must either resort to multiple-precision maneuvering
or use a simple but slow iteration. The multiple-precision technique
@@ -4111,7 +4115,7 @@ fuss with. Every such parameter has an identifying code number, defined here.
@d fillin=38 {extra darkness of diagonal lines}
@d turning_check=39 {controls reorientation of clockwise paths}
@d warning_check=40 {controls error message when variable value is large}
-@d boundary_char=41 {the right boundary character for ligatures}
+@d boundary_char=41 {the boundary character for ligatures}
@d max_given_internal=41
@<Glob...@>=
@@ -4265,17 +4269,21 @@ int_name[boundary_char]:="boundarychar";
input and output, establishes the initial values of the date and time.
@^system dependencies@>
Since standard \PASCAL\ cannot provide such information, something special
-is needed. The program here simply specifies July 4, 1776, at noon; but
-users probably want a better approximation to the truth.
+is needed. The program here simply assumes that suitable values appear in
+the global variables \\{sys\_time}, \\{sys\_day}, \\{sys\_month}, and
+\\{sys\_year} (which are initialized to noon on 4 July 1776,
+in case the implementor is careless).
Note that the values are |scaled| integers. Hence \MF\ can no longer
be used after the year 32767.
@p procedure fix_date_and_time;
-begin internal[time]:=12*60*unity; {minutes since midnight}
-internal[day]:=4*unity; {fourth day of the month}
-internal[month]:=7*unity; {seventh month of the year}
-internal[year]:=1776*unity; {Anno Domini}
+begin sys_time:=12*60;
+sys_day:=4; sys_month:=7; sys_year:=1776; {self-evident truths}
+internal[time]:=sys_time*unity; {minutes since midnight}
+internal[day]:=sys_day*unity; {day of the month}
+internal[month]:=sys_month*unity; {month of the year}
+internal[year]:=sys_year*unity; {Anno Domini}
end;
@ \MF\ is occasionally supposed to print diagnostic information that
@@ -4299,11 +4307,14 @@ if blank_line then print_ln;
selector:=old_setting;
end;
-@ Of course we had better declare another global variable, if the previous
+@ Of course we had better declare a few more global variables, if the previous
routines are going to work.
@<Glob...@>=
@!old_setting:0..max_selector;
+@!sys_time,@!sys_day,@!sys_month,@!sys_year:integer;
+ {date and time supplied by external system}
+@^system dependencies@>
@ We will occasionally use |begin_diagnostic| in connection with line-number
printing, as follows. (The parameter |s| is typically |"Path"| or
@@ -4874,7 +4885,7 @@ else begin print_scaled(v); c:=digit_class;
end
@ Strictly speaking, a genuine token will never have |info(p)=0|.
-But we will see later (in the |print_variable_name| routine) that
+But we will see later (in the definition of attribute nodes) that
it is convenient to let |info(p)=0| stand for `\.{[]}'.
@<Display a collective subscript@>=
@@ -5584,7 +5595,7 @@ The global variable |save_ptr| points to the top item on the save stack.
@ @<Set init...@>=save_ptr:=null;
@ The |save_variable| routine is given a hash address |q|; it salts this
-address in the save stack, together with its current equivalent,
+address away in the save stack, together with its current equivalent,
then makes token~|q| behave as though it were brand new.
Nothing is stacked when |save_ptr=null|, however; there's no way to remove
@@ -7036,9 +7047,9 @@ $$a_k'=a_k+\delta\k-\delta_k;\qquad
Here $a\ll b$ means that $a\L b-2$, and $a\gg b$ means that $a\G b+2$.
The smoothing operation is symmetric in the sense that, if $a_0\ldots a_n$
-smoothes to $a_0'\ldots a_n'$, then the reverse sequence $a_n\ldots a_0$
-smoothes to $a_n'\ldots a_0'$; also the complementary sequence
-$(m-a_0)\ldots(m-a_n)$ smoothes to $(m-a_0')\ldots(m-a_n')$.
+smooths to $a_0'\ldots a_n'$, then the reverse sequence $a_n\ldots a_0$
+smooths to $a_n'\ldots a_0'$; also the complementary sequence
+$(m-a_0)\ldots(m-a_n)$ smooths to $(m-a_0')\ldots(m-a_n')$.
We have $a_0'+\cdots+a_n'=a_0+\cdots+a_n$ because $\delta_0=\delta_{n+1}=0$.
@p procedure smooth_moves(@!b,@!t:integer);
@@ -7073,7 +7084,7 @@ represents only the nonzero edge weights, since most of the edges are
weightless; in this way, the data storage requirements grow only linearly
with respect to the number of pixels per point, even though two-dimensional
data is being represented. (Well, the actual dependence on the underlying
-resolution is order $n\log n$, but the the $\log n$ factor is buried in our
+resolution is order $n\log n$, but the $\log n$ factor is buried in our
implicit restriction on the maximum raster size.) The sum of all edge
weights in each row should be zero.
@@ -10870,7 +10881,7 @@ right_type(q):=endpoint
k:=0; w:=link(h); ww:=knil(w);
mm0:=floor_unscaled(x_coord(p)+x_coord(w)-xy_corr[octant]);
mm1:=floor_unscaled(x_coord(q)+x_coord(ww)-xy_corr[octant]);
-for n:=0 to n1-n0 do env_move[n]:=mm0;
+for n:=0 to n1-n0-1 do env_move[n]:=mm0;
env_move[n1-n0]:=mm1; move_ptr:=0; m:=mm0
@ At this point |n| holds the value of |move_ptr| that was current
@@ -11074,7 +11085,7 @@ the results essentially independent of where the path falls on the raster.
For example, the exact envelope with respect to a pen of diameter~1
blackens a pixel if and only if the path intersects a circle of diameter~1
inscribed in that pixel; the resulting pattern has ``blots'' when the path
-is travelling diagonally in unfortunate raster positions. A much better
+is traveling diagonally in unfortunate raster positions. A much better
result is obtained when pixels are blackened only when the path intersects
an inscribed {\sl diamond\/} of diameter~1. Such a diamond is precisely
the polygon that \MF\ uses in the special case of a circle whose diameter is~1.
@@ -11417,7 +11428,7 @@ if d<alpha then d:=alpha
@ At this point there's a line of length |<=delta| from vertex~|p|
to vertex~|q|, orthogonal to direction $\bigl($|right_u(p),left_v(q)|$\bigr)$;
-and there's a line of length |>=delta| from vertex~|q| to
+and there's a line of length |>=delta| from vertex~|q|
to vertex~|r|, orthogonal to direction $\bigl($|right_u(q),left_v(r)|$\bigr)$.
The best line to direction $(u,v)$ should replace the line from
|p| to~|q|; this new line will have the same length as the old.
@@ -12111,7 +12122,7 @@ pretending to declare a screen buffer called |screen_pixel|. This code
is actually commented out, but it does specify the intended effects.
@<Glob...@>=
-@{@!screen_pixel:array[screen_row,screen_col] of pixel_color;@+@}
+@{@+@!screen_pixel:array[screen_row,screen_col] of pixel_color@t; @>@}
@ The |blank_rectangle| routine simply whitens all pixels that lie in
columns |left_col| through |right_col-1|, inclusive, of rows
@@ -12156,7 +12167,7 @@ program (see the commented-out code below).
@!n:screen_col);
var @!k:screen_col; {an index into |a|}
@!c:screen_col; {an index into |screen_pixel|}
-begin @{ k:=0; c:=a[0];
+begin @{@+k:=0; c:=a[0];
repeat incr(k);
repeat screen_pixel[r,c]:=b; incr(c);
until c=a[k];
@@ -13384,7 +13395,7 @@ list involved.
discussion above, is a code number that explains what kind of token list
is being scanned.
-\yskip\hang|name| points to the |eqtb| address of the control sequence
+\yskip\hang|name| points to the |eqtb| address of the macro
being expanded, if the current token list is a macro not defined by
\&{vardef}. Macros defined by \&{vardef} have |name=null|; their name
can be deduced by looking at their first two parameters.
@@ -13405,7 +13416,7 @@ a \&{for} or \&{forsuffixes} loop;
\indent|parameter|, if a \&{text} or \&{suffix} parameter is being scanned;
\indent|backed_up|, if the token list being scanned has been inserted as
-`to be read again'.
+`to be read again';
\indent|inserted|, if the token list being scanned has been inserted as
part of error recovery;
@@ -14674,7 +14685,7 @@ if cur_exp=true_code then
else if cur_cmd<>semicolon then
begin missing_err(";");@/
@.Missing `;'@>
- help2("After `exitif <boolean exp>' I expect to see a semicolon.")@/
+ help2("After `exitif <boolean expr>' I expect to see a semicolon.")@/
("I shall pretend that one was there."); back_error;
end;
end
@@ -14790,7 +14801,7 @@ input stack, so that |get_next| will proceed to read it next.
@t\4@>@<Declare the procedure called |print_arg|@>@;
@t\4@>@<Declare the procedure called |scan_text_arg|@>@;
procedure macro_call(@!def_ref,@!arg_list,@!macro_name:pointer);
- {invokes a user-defined control sequence}
+ {invokes a user-defined sequence of commands}
label found;
var @!r:pointer; {current node in the macro's token list}
@!p,@!q:pointer; {for list manipulation}
@@ -15126,7 +15137,7 @@ if_test,fi_or_else: case m of
endcases;
@ Here is a procedure that ignores text until coming to an \&{elseif},
-\&{else}, or \&{fi} at level zero of $\&{if}\ldots\&{fi}$
+\&{else}, or \&{fi} at the current level of $\&{if}\ldots\&{fi}$
nesting. After it has acted, |cur_mod| will indicate the token that
was found.
@@ -15369,8 +15380,8 @@ if cur_cmd<>colon then
`\&{endfor}' at the end of the loop. This will come through \MF's scanner
at the proper time to cause the loop to be repeated.
-(If the user tries some shenanigan like `\&{for} $\ldots$ \&{let} \&{endfor}',
-he will be foiled by the |get_symbol| routine, which keeps frozen
+(A user who tries some shenanigan like `\&{for} $\ldots$ \&{let} \&{endfor}'
+will be foiled by the |get_symbol| routine, which keeps frozen
tokens unchanged. Furthermore the |frozen_repeat_loop| is an \&{outer}
token, so it won't be lost accidentally.)
@@ -15910,13 +15921,11 @@ end
@ @<Print the banner...@>=
begin wlog(banner);
slow_print(base_ident); print(" ");
-print_int(round_unscaled(internal[day])); print_char(" ");
+print_int(sys_day); print_char(" ");
months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
-m:=round_unscaled(internal[month]);
-for k:=3*m-2 to 3*m do wlog(months[k]);
-print_char(" "); print_int(round_unscaled(internal[year])); print_char(" ");
-m:=round_unscaled(internal[time]);
-print_dd(m div 60); print_char(":"); print_dd(m mod 60);
+for k:=3*sys_month-2 to 3*sys_month do wlog(months[k]);
+print_char(" "); print_int(sys_year); print_char(" ");
+print_dd(sys_time div 60); print_char(":"); print_dd(sys_time mod 60);
end
@ Here's an example of how these file-name-parsing routines work in practice.
@@ -15939,6 +15948,9 @@ crank up the output file.
@ Let's turn now to the procedure that is used to initiate file reading
when an `\.{input}' command is being processed.
+Beware: For historic reasons, this code foolishly conserves a tiny bit
+of string pool space; but that can confuse the interactive `\.E' option.
+@^system dependencies@>
@p procedure start_input; {\MF\ will \.{input} something}
label done;
@@ -15962,7 +15974,7 @@ if job_name=0 then
if term_offset+length(name)>max_print_line-2 then print_ln
else if (term_offset>0)or(file_offset>0) then print_char(" ");
print_char("("); incr(open_parens); slow_print(name); update_terminal;
-if name=str_ptr-1 then {we can conserve string pool space now}
+if name=str_ptr-1 then {conserve string pool space (but see note above)}
begin flush_string(name); name:=cur_name;
end;
@<Read the first line of the new file@>;
@@ -16066,7 +16078,7 @@ knot list. The |future_pen| option occurs only as an output of |scan_primary|
and |scan_secondary|, not as an output of |scan_tertiary| or |scan_expression|.
\smallskip\hang
-|cur_type=path_type| means that |cur_exp| points to a the first node of
+|cur_type=path_type| means that |cur_exp| points to the first node of
a path; nobody else points to this particular path. The control points of
the path will have been chosen.
@@ -16106,7 +16118,7 @@ dependency list.
\smallskip\hang
|cur_type=proto_dependent| means that |cur_exp| points to a |proto_dependent|
-capsule node . The |dep_list| field in this capsule
+capsule node. The |dep_list| field in this capsule
points to the associated dependency list.
\smallskip\hang
@@ -20847,11 +20859,11 @@ deleted if $c=0$; then we pass over $a$~characters to reach the next
current character (which may have a ligature/kerning program of its own).
If the very first instruction of the |lig_kern| array has |skip_byte=255|,
-the |next_char| byte is the so-called right boundary character of this font;
+the |next_char| byte is the so-called boundary character of this font;
the value of |next_char| need not lie between |bc| and~|ec|.
If the very last instruction of the |lig_kern| array has |skip_byte=255|,
-there is a special ligature/kerning program for a left boundary character,
-beginning at location |256*op_byte+remainder|.
+there is a special ligature/kerning program for a boundary character at the
+left, beginning at location |256*op_byte+remainder|.
The interpretation is that \TeX\ puts implicit boundary characters
before and after each consecutive string of characters from the same font.
These implicit characters do not appear in the output, but they can affect
@@ -20868,7 +20880,7 @@ the condition
$$\hbox{|256*op_byte+remainder<nl|.}$$
If such an instruction is encountered during
normal program execution, it denotes an unconditional halt; no ligature
-command is performed.
+or kerning command is performed.
@d stop_flag=128+min_quarterword
{value indicating `\.{STOP}' in a lig/kern program}
@@ -20968,8 +20980,8 @@ is kept in additional arrays called |header_byte|, |lig_kern|,
@!nk:0..max_kerns; {the number of distinct kerns so far}
@!exten:array[eight_bits] of four_quarters; {extensible character recipes}
@!ne:0..256; {the number of extensible characters so far}
-@!param:array[1..max_font_dimen] of scaled; {\&{fontinfo} parameters}
-@!np:0..max_font_dimen; {the largest \&{fontinfo} parameter specified so far}
+@!param:array[1..max_font_dimen] of scaled; {\&{fontdimen} parameters}
+@!np:0..max_font_dimen; {the largest \&{fontdimen} parameter specified so far}
@!nw,@!nh,@!nd,@!ni:0..256; {sizes of \.{TFM} subtables}
@!skip_table:array[eight_bits] of 0..lig_table_size; {local label status}
@!lk_started:boolean; {has there been a lig/kern step in this command yet?}
@@ -21128,7 +21140,7 @@ header_byte_code, font_dimen_code: begin c:=cur_mod; get_x_next;
if cur_cmd<>colon then
begin missing_err(":");
@.Missing `:'@>
- help1("A colon should follow a headerbyte or fontinfo location.");
+ help1("A colon should follow a headerbyte or fontdimen location.");
back_error;
end;
if c=header_byte_code then @<Store a list of header bytes@>
@@ -22582,6 +22594,8 @@ macros to dump words of different types:
@ The inverse macros are slightly more complicated, since we need to check
the range of the values we are reading in. We say `|undump(a)(b)(x)|' to
read an integer value |x| that is supposed to be in the range |a<=x<=b|.
+System error messages should be suppressed when undumping.
+@^system dependencies@>
@d undump_wd(#)==begin get(base_file); #:=base_file^;@+end
@d undump_int(#)==begin get(base_file); #:=base_file^.int;@+end
@@ -22881,7 +22895,8 @@ cannot produce error messages. For example, it would be a mistake to call
might lead to an infinite loop.
@^system dependencies@>
-This program doesn't bother to close the input files that may still be open.
+If |final_cleanup| is bypassed, this program doesn't bother to close
+the input files that may still be open.
@<Last-minute...@>=
procedure close_files_and_terminate;
@@ -23038,7 +23053,7 @@ if (base_ident=0)or(buffer[loc]="&") then
while (loc<limit)and(buffer[loc]=" ") do incr(loc);
end;
buffer[limit]:="%";@/
-fix_date_and_time; init_randoms((internal[time] div unity)+internal[day]);@/
+fix_date_and_time; init_randoms(sys_time+sys_day);@/
@<Initialize the print |selector|...@>;
if loc<limit then if buffer[loc]<>"\" then start_input; {\&{input} assumed}
end
@@ -23070,14 +23085,15 @@ program below. (If |m=13|, there is an additional argument, |l|.)
@!debug procedure debug_help; {routine to display various things}
label breakpoint,exit;
var @!k,@!l,@!m,@!n:integer;
-begin loop begin wake_up_terminal;
+begin clear_terminal;
+ loop begin wake_up_terminal;
print_nl("debug # (-1 to exit):"); update_terminal;
@.debug \#@>
read(term_in,m);
if m<0 then return
else if m=0 then
- begin goto breakpoint;@\ {go to every label at least once}
- breakpoint: m:=0; @{'BREAKPOINT'@}@\
+ begin goto breakpoint;@/ {go to every declared label at least once}
+ breakpoint: m:=0; @{'BREAKPOINT'@}@/
end
else begin read(term_in,n);
case m of
diff --git a/Build/source/texk/web2c/mfluadir/mf-lua.ch b/Build/source/texk/web2c/mfluadir/mf-lua.ch
index 7cc5b5a25bd..4cb2d72e9ab 100644
--- a/Build/source/texk/web2c/mfluadir/mf-lua.ch
+++ b/Build/source/texk/web2c/mfluadir/mf-lua.ch
@@ -1,8 +1,8 @@
@x [0] MFLua
% This program is copyright (C) 1984 by D. E. Knuth; all rights are reserved.
@y
-% This program is MFLua, strictly based on the METAFONT 2.7182818 source code.
-% What follow are the original comments of METAFONT 2.7182818.
+% This program is MFLua, strictly based on the METAFONT 2.71828182 source code.
+% What follow are the original comments of METAFONT 2.71828182.
% This program is copyright (C) 1984 by D. E. Knuth; all rights are reserved.
@z
@@ -15,13 +15,13 @@
@z
@x [1.2] MFLua
-@d banner=='This is METAFONT, Version 2.7182818' {printed when \MF\ starts}
+@d banner=='This is METAFONT, Version 2.71828182' {printed when \MF\ starts}
@y
-@d METAFONT_banner=='This is METAFONT, Version 2.7182818' {printed when \MF\ starts}
+@d METAFONT_banner=='This is METAFONT, Version 2.71828182' {printed when \MF\ starts}
@#
@d MFLua_version_string=='-1.0.0-alpha'
@#
-@d MFLua_banner=='This is MFLua, Version 2.7182818', MFLua_version_string
+@d MFLua_banner=='This is MFLua, Version 2.71828182', MFLua_version_string
{printed when MFLua starts}
@#
@d banner==MFLua_banner
diff --git a/Build/source/texk/web2c/mfluadir/mflua_version.h b/Build/source/texk/web2c/mfluadir/mflua_version.h
index abf736f6eaa..45244c96c3b 100644
--- a/Build/source/texk/web2c/mfluadir/mflua_version.h
+++ b/Build/source/texk/web2c/mfluadir/mflua_version.h
@@ -1,2 +1,2 @@
#define MFLUA_VERSION "1.0.0-alpha"
-#define BANNER "This is MFLua, Version 2.7182818-" MFLUA_VERSION \ No newline at end of file
+#define BANNER "This is MFLua, Version 2.71828182-" MFLUA_VERSION
diff --git a/Build/source/texk/web2c/mfluadir/mfluaextra.h b/Build/source/texk/web2c/mfluadir/mfluaextra.h
index 4e5fb50aa2e..636c01d5d2f 100644
--- a/Build/source/texk/web2c/mfluadir/mfluaextra.h
+++ b/Build/source/texk/web2c/mfluadir/mfluaextra.h
@@ -5,7 +5,7 @@
#include <mfluadir/mflua_version.h> /* for MFLUA_VERSION and BANNER */
-/*#define BANNER "This is MFLua, Version 2.7182818-" MFLUA_VERSION*/
+/*#define BANNER "This is MFLua, Version 2.71828182-" MFLUA_VERSION*/
#define COPYRIGHT_HOLDER "L. Scarso"
#define AUTHOR NULL
#define PROGRAM_HELP MFLUAHELP
diff --git a/Build/source/texk/web2c/mfluadir/mfluatrap/mfluatrap.diffs b/Build/source/texk/web2c/mfluadir/mfluatrap/mfluatrap.diffs
index a8176a88ce7..6dcf5fcb85a 100644
--- a/Build/source/texk/web2c/mfluadir/mfluatrap/mfluatrap.diffs
+++ b/Build/source/texk/web2c/mfluadir/mfluatrap/mfluatrap.diffs
@@ -1,48 +1,213 @@
+#! /bin/sh -vx
+# Copyright 2017 Karl Berry <tex-live@tug.org>
+# Copyright 2015 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+ltestdir=$abs_srcdir/mfluadir/mfluatrap
++ ltestdir=SRCDIR/mfluadir/mfluatrap
+
+TEXMFCNF=$ltestdir
++ TEXMFCNF=SRCDIR/mfluadir/mfluatrap
+LUAINPUTS=$ltestdir
++ LUAINPUTS=SRCDIR/mfluadir/mfluatrap
+export TEXMFCNF LUAINPUTS
++ export TEXMFCNF LUAINPUTS
+
+rm -rf mfluatrapdir
++ rm -rf mfluatrapdir
+mkdir mfluatrapdir
++ mkdir mfluatrapdir
+cd mfluatrapdir
++ cd mfluatrapdir
+
+echo ">>> Running TRAP test for MFLua." >&2
++ echo '>>> Running TRAP test for MFLua.'
>>> Running TRAP test for MFLua.
+echo ">>> See $ltestdir/mfluatrap.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/mfluadir/mfluatrap/mfluatrap.diffs for example of acceptable diffs.'
>>> See SRCDIR/mfluadir/mfluatrap/mfluatrap.diffs for example of acceptable diffs.
+
+is_OK=:
++ is_OK=:
+
+set -x
++ set -x
+
+# get same filename in log
+$LN_S $testdir/trap.mf .
+ ln -s SRCDIR/triptrap/trap.mf .
+
+./mflua --progname=inimflua <$testdir/mftrap1.in >mftrapin.fot
+ ./mflua --progname=inimflua
+if test ! -s trap.base; then
+ echo "*** trap.base not created by mftrap1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trap.base
+mv trap.log mftrapin.log || exit 1
+ mv trap.log mftrapin.log
+diff $testdir/mftrapin.log mftrapin.log
+ diff SRCDIR/triptrap/mftrapin.log mftrapin.log
1c1
-< This is METAFONT, Version 2.7182818 (INIMF) 7 JAN 2014 17:51
+< This is METAFONT, Version 2.71828182 (INIMF) 4 JUL 1776 12:00
---
-> This is MFLua, Version 2.7182818-0.5 (TeX Live 2015) (INIMF) 17 APR 2015 11:16
+> This is MFLua, Version 2.71828182-1.0.0-alpha (INIMF) 27 JAN 2021 18:03
150c150
-< String usage 26&83 (891&11438 still untouched)
+< String usage 26&83 (892&11481 still untouched)
---
-> String usage 30&98 (6384&979377 still untouched)
+> String usage 30&98 (1047458&9979376 still untouched)
176,177c176,177
-< (preloaded base=trap 2014.1.7)
-< 1117 strings of total length 20614
+< (preloaded base=trap 1776.7.4)
+< 1116 strings of total length 20570
---
-> (preloaded base=trap 2015.4.17)
-> 1125 strings of total length 20684
+> (preloaded base=trap 2021.1.27)
+> 1125 strings of total length 20685
179c179
< 265 symbolic tokens
---
> 266 symbolic tokens
+
+./mflua --progname=inimflua <$testdir/mftrap2.in >mftrap.fot
+ ./mflua --progname=inimflua
+mv trap.log mftrap.log || exit 1
+ mv trap.log mftrap.log
+mv trap.tfm mftrap.tfm || exit 1
+ mv trap.tfm mftrap.tfm
+diff $testdir/mftrap.fot mftrap.fot
+ diff SRCDIR/triptrap/mftrap.fot mftrap.fot
-1,3c1,2
-< This is METAFONT, Version 2.7182818 (INIMF)
+1,3c1,4
+< This is METAFONT, Version 2.71828182 (INIMF)
< ** &trap trap
< (trap.mf
---
-> This is MFLua, Version 2.7182818-0.5 (TeX Live 2015) (INIMF)
+> MFLua version: 1.0.0-alpha
+> MFLua banner: This is MFLua, Version 2.71828182-1.0.0-alpha
+> This is MFLua, Version 2.71828182-1.0.0-alpha (TeX Live 2021/dev) (INIMF)
> **(trap.mf
-39c38
-< String usage 41&161 (815&7634 still untouched)
+22a24,99
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+27a105,136
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+39c148
+< String usage 41&161 (816&7678 still untouched)
---
-> String usage 50&202 (6298&975523 still untouched)
+> String usage 50&202 (1047372&9975522 still untouched)
+59a169
+> Warning: end_program.lua not found
+diff $testdir/mftrap.log mftrap.log
+ diff SRCDIR/triptrap/mftrap.log mftrap.log
1c1
-< This is METAFONT, Version 2.7182818 (preloaded base=trap 2014.1.7) 7 JAN 2014 18:11
+< This is METAFONT, Version 2.71828182 (preloaded base=trap 1776.7.4) 4 JUL 1776 12:00
---
-> This is MFLua, Version 2.7182818-0.5 (TeX Live 2015) (preloaded base=trap 2015.4.17) 17 APR 2015 11:16
+> This is MFLua, Version 2.71828182-1.0.0-alpha (preloaded base=trap 2021.1.27) 27 JAN 2021 18:03
133,134c133,134
< <scantokens> pair
< p[],';^^ff
@@ -68,115 +233,19 @@
> <scantokens> or <runscript> ...f
>
1825c1825
-< String usage 24&92 (858&11309 still untouched)
----
-> String usage 30&119 (6344&979191 still untouched)
-3693,3695c3693,3695
-< xpart %CAPSULE1359=xx
-< %CAPSULE1367=2yy-2
-< %CAPSULE1375 = 3.3333xx+3.3333
----
-> xpart %CAPSULE1370=xx
-> %CAPSULE1378=2yy-2
-> %CAPSULE1386 = 3.3333xx+3.3333
-3755,3757c3755,3757
-< xpart %CAPSULE1049 = 8000o2-4000o1+1000o3+9
-< xpart %CAPSULE1383=xpart '
-< ypart %CAPSULE1383=ypart '
----
-> xpart %CAPSULE604 = 8000o2-4000o1+1000o3+9
-> xpart %CAPSULE1394=xpart '
-> ypart %CAPSULE1394=ypart '
-3760,3761c3760,3761
-< ### 4000o1 = -xpart %CAPSULE1049+8000o2+1000o3+9
-< ### -4.87383o2 = -oo-0.0004xpart %CAPSULE1049+0.39673o3-17.99643
----
-> ### 4000o1 = -xpart %CAPSULE604+8000o2+1000o3+9
-> ### -4.87383o2 = -oo-0.0004xpart %CAPSULE604+0.39673o3-17.99643
-3768c3768
-< ### -alfa=-xpart %CAPSULE1494
----
-> ### -alfa=-xpart %CAPSULE368
-3770,3771c3770,3771
-< {xpart((xpart %CAPSULE1494,0))}
-< ### -xpart %CAPSULE17=-%CAPSULE1176
----
-> {xpart((xpart %CAPSULE368,0))}
-> ### -xpart %CAPSULE17=-%CAPSULE1376
-3773,3775c3773,3775
-< {(%CAPSULE382)+(%CAPSULE1176)}
-< ### -%CAPSULE382=-%CAPSULE1893+%CAPSULE1176
-< ### -%CAPSULE1893=-ypart %CAPSULE1049
----
-> {(%CAPSULE382)+(%CAPSULE1376)}
-> ### -%CAPSULE382=-%CAPSULE1364+%CAPSULE1376
-> ### -%CAPSULE1364=-ypart %CAPSULE604
-3780c3780
-< ### p$=-ypart %CAPSULE604+1
----
-> ### p$=-ypart %CAPSULE1360+1
-3782,3793c3782,3793
-< {(2/3)*((-ypart %CAPSULE604+1,ypart %CAPSULE604))}
-< ### ypart %CAPSULE604=-xpart %CAPSULE604+1
-< ### -0.66667xpart %CAPSULE604=-xpart %CAPSULE1889
-< {-((xpart %CAPSULE1889,-xpart %CAPSULE1889+0.66667))}
-< ### xpart %CAPSULE1889=-xpart %CAPSULE1172
-< {((xpart %CAPSULE1049,ypart %CAPSULE1049))=((xpart %CAPSULE1172,-xpart %
-< CAPSULE1172-0.66667))}
-< ## xpart %CAPSULE1172=-ypart %CAPSULE1049-0.66667
-< ## ypart %CAPSULE1049=-xpart %CAPSULE1049-0.66667
-< ### -xpart %CAPSULE1049=-xpart %CAPSULE1172
-< {((xpart ',ypart '))=((xpart %CAPSULE1172,-xpart %CAPSULE1172-0.66667))}
-< ## xpart %CAPSULE1172=-ypart '-0.66667
----
-> {(2/3)*((-ypart %CAPSULE1360+1,ypart %CAPSULE1360))}
-> ### ypart %CAPSULE1360=-xpart %CAPSULE1360+1
-> ### -0.66667xpart %CAPSULE1360=-xpart %CAPSULE1744
-> {-((xpart %CAPSULE1744,-xpart %CAPSULE1744+0.66667))}
-> ### xpart %CAPSULE1744=-xpart %CAPSULE1675
-> {((xpart %CAPSULE604,ypart %CAPSULE604))=((xpart %CAPSULE1675,-xpart %CA
-> PSULE1675-0.66667))}
-> ## xpart %CAPSULE1675=-ypart %CAPSULE604-0.66667
-> ## ypart %CAPSULE604=-xpart %CAPSULE604-0.66667
-> ### -xpart %CAPSULE604=-xpart %CAPSULE1675
-> {((xpart ',ypart '))=((xpart %CAPSULE1675,-xpart %CAPSULE1675-0.66667))}
-> ## xpart %CAPSULE1675=-ypart '-0.66667
-3799c3799
-< ### -ooo=-%CAPSULE1494
----
-> ### -ooo=-%CAPSULE1051
-3801,3810c3801,3810
-< {(%CAPSULE1494)+(1)}
-< ### -%CAPSULE1494=-%CAPSULE1350+1
-< {(1/2)*(%CAPSULE1350)}
-< ### -0.5%CAPSULE1350=-%CAPSULE1367
-< {-(%CAPSULE1367)}
-< ### %CAPSULE1367=-%CAPSULE1893
-< {(2)*(%CAPSULE1893)}
-< ### -2%CAPSULE1893=-%CAPSULE1885
-< {(-0.5%CAPSULE1885-0.5)=(%CAPSULE1885)}
-< ## %CAPSULE1885=-0.33333
----
-> {(%CAPSULE1051)+(1)}
-> ### -%CAPSULE1051=-%CAPSULE1378+1
-> {(1/2)*(%CAPSULE1378)}
-> ### -0.5%CAPSULE1378=-%CAPSULE1370
-> {-(%CAPSULE1370)}
-> ### %CAPSULE1370=-%CAPSULE1362
-> {(2)*(%CAPSULE1362)}
-> ### -2%CAPSULE1362=-%CAPSULE1354
-> {(-0.5%CAPSULE1354-0.5)=(%CAPSULE1354)}
-> ## %CAPSULE1354=-0.33333
+< String usage 24&92 (859&11353 still untouched)
+---
+> String usage 30&119 (1047418&9979190 still untouched)
4235c4235
-< String usage 41&161 (815&7634 still untouched)
+< String usage 41&161 (816&7678 still untouched)
---
-> String usage 50&202 (6298&975523 still untouched)
+> String usage 50&202 (1047372&9975522 still untouched)
4251,4252c4251,4252
-< 68 strings out of 883
-< 3752 string characters out of 11386
+< 68 strings out of 884
+< 3752 string characters out of 11430
---
-> 77 strings out of 6375
-> 3793 string characters out of 979316
+> 77 strings out of 1047449
+> 3793 string characters out of 9979315
4254,4255c4254,4255
< 289 symbolic tokens out of 2100
< 8i,43n,14r,8p,167b stack positions out of 30i,100n,300r,150p,500b
@@ -187,17 +256,30 @@
< out of 256w,16h,16d,64i,5000l,500k,256e,50p)
---
> out of 256w,16h,16d,64i,15000l,2500k,256e,60p)
+
+./tftopl ./mftrap.tfm mftrap.pl || exit 1
+ ./tftopl ./mftrap.tfm mftrap.pl
+diff $testdir/mftrap.pl mftrap.pl || is_OK=false
+ diff SRCDIR/triptrap/mftrap.pl mftrap.pl
+
+./gftype -m -i ./trap.72270gf >trap.typ || exit 1
+ ./gftype -m -i ./trap.72270gf
+diff $testdir/trap.typ trap.typ
+ diff SRCDIR/triptrap/trap.typ trap.typ
1c1
< This is GFtype, Version 3.1
---
-> This is GFtype, Version 3.1 (TeX Live 2015)
+> This is GFtype, Version 3.1 (TeX Live 2021/dev)
3c3
< ' METAFONT output 2014.01.07:1811'
---
-> ' METAFONT output 2015.04.17:1116'
+> ' METAFONT output 2021.01.27:1803'
+
+$is_OK || {
+ echo ">>> There were some errors." >&2
+ exit 1
+}
+ :
-PASS: mfluadir/mfluatraptest
+
+PASS mfluadir/mfluatraptest.test (exit status: 0)
+PASS: mfluadir/mfluatraptest.test
diff --git a/Build/source/texk/web2c/mfluajitdir/mf-luajit.ch b/Build/source/texk/web2c/mfluajitdir/mf-luajit.ch
index af718650d8a..9794ef69eb2 100644
--- a/Build/source/texk/web2c/mfluajitdir/mf-luajit.ch
+++ b/Build/source/texk/web2c/mfluajitdir/mf-luajit.ch
@@ -1,7 +1,7 @@
@x [1.2] - this is MFLuaJIT
@d banner==MFLua_banner
@y
-@d MFLuaJITbanner=='This is MFLuaJIT, Version 2.7182818', MFLua_version_string
+@d MFLuaJITbanner=='This is MFLuaJIT, Version 2.71828182', MFLua_version_string
{printed when MFLuaJIT starts}
@#
@d banner==MFLuaJITbanner
diff --git a/Build/source/texk/web2c/mfluajitdir/mfluajitextra.h b/Build/source/texk/web2c/mfluajitdir/mfluajitextra.h
index 18543e946b5..6e6f59d2efe 100644
--- a/Build/source/texk/web2c/mfluajitdir/mfluajitextra.h
+++ b/Build/source/texk/web2c/mfluajitdir/mfluajitextra.h
@@ -6,7 +6,7 @@
#include <mfluadir/mflua_version.h> /* for MFLUA_VERSION */
#ifdef BANNER
#undef BANNER
-#define BANNER "This is MFLuaJIT, Version 2.7182818-" MFLUA_VERSION
+#define BANNER "This is MFLuaJIT, Version 2.71828182-" MFLUA_VERSION
#endif
#define COPYRIGHT_HOLDER "L. Scarso"
#define AUTHOR NULL
@@ -23,4 +23,4 @@
#define INPUT_FORMAT kpse_mf_format
#define INI_PROGRAM "inimfluajit"
#define VIR_PROGRAM "virmfluajit"
-#define MFLuaJIT \ No newline at end of file
+#define MFLuaJIT
diff --git a/Build/source/texk/web2c/mfluajitdir/mfluajittrap/mfluajittrap.diffs b/Build/source/texk/web2c/mfluajitdir/mfluajittrap/mfluajittrap.diffs
index a12ee7d11cc..0bfaf1af6ee 100644
--- a/Build/source/texk/web2c/mfluajitdir/mfluajittrap/mfluajittrap.diffs
+++ b/Build/source/texk/web2c/mfluajitdir/mfluajittrap/mfluajittrap.diffs
@@ -1,48 +1,215 @@
+#! /bin/sh -vx
+# Copyright 2017 Karl Berry <tex-live@tug.org>
+# Copyright 2015 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+ltestdir=$abs_srcdir/mfluadir/mfluatrap
++ ltestdir=SRCDIR/mfluadir/mfluatrap
+jtestdir=$abs_srcdir/mfluajitdir/mfluajittrap
++ jtestdir=SRCDIR/mfluajitdir/mfluajittrap
+
+TEXMFCNF=$ltestdir
++ TEXMFCNF=SRCDIR/mfluadir/mfluatrap
+LUAINPUTS=$ltestdir
++ LUAINPUTS=SRCDIR/mfluadir/mfluatrap
+export TEXMFCNF LUAINPUTS
++ export TEXMFCNF LUAINPUTS
+
+rm -rf mfluajittrapdir
++ rm -rf mfluajittrapdir
+mkdir mfluajittrapdir
++ mkdir mfluajittrapdir
+cd mfluajittrapdir
++ cd mfluajittrapdir
+
+echo ">>> Running TRAP test for MFLuaJIT." >&2
++ echo '>>> Running TRAP test for MFLuaJIT.'
>>> Running TRAP test for MFLuaJIT.
+echo ">>> See $jtestdir/mfluajittrap.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/mfluajitdir/mfluajittrap/mfluajittrap.diffs for example of acceptable diffs.'
>>> See SRCDIR/mfluajitdir/mfluajittrap/mfluajittrap.diffs for example of acceptable diffs.
+
+is_OK=:
++ is_OK=:
+
+set -x
++ set -x
+
+# get same filename in log
+$LN_S $testdir/trap.mf .
+ ln -s SRCDIR/triptrap/trap.mf .
+
+./mfluajit --progname=inimfluajit <$testdir/mftrap1.in >mftrapin.fot
+ ./mfluajit --progname=inimfluajit
+if test ! -s trap.base; then
+ echo "*** trap.base not created by mftrap1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trap.base
+mv trap.log mftrapin.log || exit 1
+ mv trap.log mftrapin.log
+diff $testdir/mftrapin.log mftrapin.log
+ diff SRCDIR/triptrap/mftrapin.log mftrapin.log
1c1
-< This is METAFONT, Version 2.7182818 (INIMF) 7 JAN 2014 17:51
+< This is METAFONT, Version 2.71828182 (INIMF) 4 JUL 1776 12:00
---
-> This is MFLuaJIT, Version 2.7182818-0.5 (TeX Live 2015) (INIMF) 17 APR 2015 11:16
+> This is MFLuaJIT, Version 2.71828182-1.0.0-alpha (INIMF) 27 JAN 2021 18:03
150c150
-< String usage 26&83 (891&11438 still untouched)
+< String usage 26&83 (892&11481 still untouched)
---
-> String usage 30&98 (6384&979377 still untouched)
+> String usage 30&98 (1047458&9979376 still untouched)
176,177c176,177
-< (preloaded base=trap 2014.1.7)
-< 1117 strings of total length 20614
+< (preloaded base=trap 1776.7.4)
+< 1116 strings of total length 20570
---
-> (preloaded base=trap 2015.4.17)
-> 1125 strings of total length 20684
+> (preloaded base=trap 2021.1.27)
+> 1125 strings of total length 20685
179c179
< 265 symbolic tokens
---
> 266 symbolic tokens
+
+./mfluajit --progname=inimfluajit <$testdir/mftrap2.in >mftrap.fot
+ ./mfluajit --progname=inimfluajit
+mv trap.log mftrap.log || exit 1
+ mv trap.log mftrap.log
+mv trap.tfm mftrap.tfm || exit 1
+ mv trap.tfm mftrap.tfm
+diff $testdir/mftrap.fot mftrap.fot
+ diff SRCDIR/triptrap/mftrap.fot mftrap.fot
-1,3c1,2
-< This is METAFONT, Version 2.7182818 (INIMF)
+1,3c1,4
+< This is METAFONT, Version 2.71828182 (INIMF)
< ** &trap trap
< (trap.mf
---
-> This is MFLuaJIT, Version 2.7182818-0.5 (TeX Live 2015) (INIMF)
+> MFLua version: 1.0.0-alpha
+> MFLua banner: This is MFLua, Version 2.71828182-1.0.0-alpha
+> This is MFLuaJIT, Version 2.71828182-1.0.0-alpha (TeX Live 2021/dev) (INIMF)
> **(trap.mf
-39c38
-< String usage 41&161 (815&7634 still untouched)
+22a24,99
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+27a105,136
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+> Warning: print_scale called with nil argument.
+>
+39c148
+< String usage 41&161 (816&7678 still untouched)
---
-> String usage 50&202 (6298&975523 still untouched)
+> String usage 50&202 (1047372&9975522 still untouched)
+59a169
+> Warning: end_program.lua not found
+diff $testdir/mftrap.log mftrap.log
+ diff SRCDIR/triptrap/mftrap.log mftrap.log
1c1
-< This is METAFONT, Version 2.7182818 (preloaded base=trap 2014.1.7) 7 JAN 2014 18:11
+< This is METAFONT, Version 2.71828182 (preloaded base=trap 1776.7.4) 4 JUL 1776 12:00
---
-> This is MFLuaJIT, Version 2.7182818-0.5 (TeX Live 2015) (preloaded base=trap 2015.4.17) 17 APR 2015 11:16
+> This is MFLuaJIT, Version 2.71828182-1.0.0-alpha (preloaded base=trap 2021.1.27) 27 JAN 2021 18:03
133,134c133,134
< <scantokens> pair
< p[],';^^ff
@@ -68,115 +235,19 @@
> <scantokens> or <runscript> ...f
>
1825c1825
-< String usage 24&92 (858&11309 still untouched)
----
-> String usage 30&119 (6344&979191 still untouched)
-3693,3695c3693,3695
-< xpart %CAPSULE1359=xx
-< %CAPSULE1367=2yy-2
-< %CAPSULE1375 = 3.3333xx+3.3333
----
-> xpart %CAPSULE1370=xx
-> %CAPSULE1378=2yy-2
-> %CAPSULE1386 = 3.3333xx+3.3333
-3755,3757c3755,3757
-< xpart %CAPSULE1049 = 8000o2-4000o1+1000o3+9
-< xpart %CAPSULE1383=xpart '
-< ypart %CAPSULE1383=ypart '
----
-> xpart %CAPSULE604 = 8000o2-4000o1+1000o3+9
-> xpart %CAPSULE1394=xpart '
-> ypart %CAPSULE1394=ypart '
-3760,3761c3760,3761
-< ### 4000o1 = -xpart %CAPSULE1049+8000o2+1000o3+9
-< ### -4.87383o2 = -oo-0.0004xpart %CAPSULE1049+0.39673o3-17.99643
----
-> ### 4000o1 = -xpart %CAPSULE604+8000o2+1000o3+9
-> ### -4.87383o2 = -oo-0.0004xpart %CAPSULE604+0.39673o3-17.99643
-3768c3768
-< ### -alfa=-xpart %CAPSULE1494
----
-> ### -alfa=-xpart %CAPSULE368
-3770,3771c3770,3771
-< {xpart((xpart %CAPSULE1494,0))}
-< ### -xpart %CAPSULE17=-%CAPSULE1176
----
-> {xpart((xpart %CAPSULE368,0))}
-> ### -xpart %CAPSULE17=-%CAPSULE1376
-3773,3775c3773,3775
-< {(%CAPSULE382)+(%CAPSULE1176)}
-< ### -%CAPSULE382=-%CAPSULE1893+%CAPSULE1176
-< ### -%CAPSULE1893=-ypart %CAPSULE1049
----
-> {(%CAPSULE382)+(%CAPSULE1376)}
-> ### -%CAPSULE382=-%CAPSULE1364+%CAPSULE1376
-> ### -%CAPSULE1364=-ypart %CAPSULE604
-3780c3780
-< ### p$=-ypart %CAPSULE604+1
----
-> ### p$=-ypart %CAPSULE1360+1
-3782,3793c3782,3793
-< {(2/3)*((-ypart %CAPSULE604+1,ypart %CAPSULE604))}
-< ### ypart %CAPSULE604=-xpart %CAPSULE604+1
-< ### -0.66667xpart %CAPSULE604=-xpart %CAPSULE1889
-< {-((xpart %CAPSULE1889,-xpart %CAPSULE1889+0.66667))}
-< ### xpart %CAPSULE1889=-xpart %CAPSULE1172
-< {((xpart %CAPSULE1049,ypart %CAPSULE1049))=((xpart %CAPSULE1172,-xpart %
-< CAPSULE1172-0.66667))}
-< ## xpart %CAPSULE1172=-ypart %CAPSULE1049-0.66667
-< ## ypart %CAPSULE1049=-xpart %CAPSULE1049-0.66667
-< ### -xpart %CAPSULE1049=-xpart %CAPSULE1172
-< {((xpart ',ypart '))=((xpart %CAPSULE1172,-xpart %CAPSULE1172-0.66667))}
-< ## xpart %CAPSULE1172=-ypart '-0.66667
----
-> {(2/3)*((-ypart %CAPSULE1360+1,ypart %CAPSULE1360))}
-> ### ypart %CAPSULE1360=-xpart %CAPSULE1360+1
-> ### -0.66667xpart %CAPSULE1360=-xpart %CAPSULE1744
-> {-((xpart %CAPSULE1744,-xpart %CAPSULE1744+0.66667))}
-> ### xpart %CAPSULE1744=-xpart %CAPSULE1675
-> {((xpart %CAPSULE604,ypart %CAPSULE604))=((xpart %CAPSULE1675,-xpart %CA
-> PSULE1675-0.66667))}
-> ## xpart %CAPSULE1675=-ypart %CAPSULE604-0.66667
-> ## ypart %CAPSULE604=-xpart %CAPSULE604-0.66667
-> ### -xpart %CAPSULE604=-xpart %CAPSULE1675
-> {((xpart ',ypart '))=((xpart %CAPSULE1675,-xpart %CAPSULE1675-0.66667))}
-> ## xpart %CAPSULE1675=-ypart '-0.66667
-3799c3799
-< ### -ooo=-%CAPSULE1494
----
-> ### -ooo=-%CAPSULE1051
-3801,3810c3801,3810
-< {(%CAPSULE1494)+(1)}
-< ### -%CAPSULE1494=-%CAPSULE1350+1
-< {(1/2)*(%CAPSULE1350)}
-< ### -0.5%CAPSULE1350=-%CAPSULE1367
-< {-(%CAPSULE1367)}
-< ### %CAPSULE1367=-%CAPSULE1893
-< {(2)*(%CAPSULE1893)}
-< ### -2%CAPSULE1893=-%CAPSULE1885
-< {(-0.5%CAPSULE1885-0.5)=(%CAPSULE1885)}
-< ## %CAPSULE1885=-0.33333
----
-> {(%CAPSULE1051)+(1)}
-> ### -%CAPSULE1051=-%CAPSULE1378+1
-> {(1/2)*(%CAPSULE1378)}
-> ### -0.5%CAPSULE1378=-%CAPSULE1370
-> {-(%CAPSULE1370)}
-> ### %CAPSULE1370=-%CAPSULE1362
-> {(2)*(%CAPSULE1362)}
-> ### -2%CAPSULE1362=-%CAPSULE1354
-> {(-0.5%CAPSULE1354-0.5)=(%CAPSULE1354)}
-> ## %CAPSULE1354=-0.33333
+< String usage 24&92 (859&11353 still untouched)
+---
+> String usage 30&119 (1047418&9979190 still untouched)
4235c4235
-< String usage 41&161 (815&7634 still untouched)
+< String usage 41&161 (816&7678 still untouched)
---
-> String usage 50&202 (6298&975523 still untouched)
+> String usage 50&202 (1047372&9975522 still untouched)
4251,4252c4251,4252
-< 68 strings out of 883
-< 3752 string characters out of 11386
+< 68 strings out of 884
+< 3752 string characters out of 11430
---
-> 77 strings out of 6375
-> 3793 string characters out of 979316
+> 77 strings out of 1047449
+> 3793 string characters out of 9979315
4254,4255c4254,4255
< 289 symbolic tokens out of 2100
< 8i,43n,14r,8p,167b stack positions out of 30i,100n,300r,150p,500b
@@ -187,17 +258,30 @@
< out of 256w,16h,16d,64i,5000l,500k,256e,50p)
---
> out of 256w,16h,16d,64i,15000l,2500k,256e,60p)
+
+./tftopl ./mftrap.tfm mftrap.pl || exit 1
+ ./tftopl ./mftrap.tfm mftrap.pl
+diff $testdir/mftrap.pl mftrap.pl || is_OK=false
+ diff SRCDIR/triptrap/mftrap.pl mftrap.pl
+
+./gftype -m -i ./trap.72270gf >trap.typ || exit 1
+ ./gftype -m -i ./trap.72270gf
+diff $testdir/trap.typ trap.typ
+ diff SRCDIR/triptrap/trap.typ trap.typ
1c1
< This is GFtype, Version 3.1
---
-> This is GFtype, Version 3.1 (TeX Live 2015)
+> This is GFtype, Version 3.1 (TeX Live 2021/dev)
3c3
< ' METAFONT output 2014.01.07:1811'
---
-> ' METAFONT output 2015.04.17:1116'
+> ' METAFONT output 2021.01.27:1803'
+
+$is_OK || {
+ echo ">>> There were some errors." >&2
+ exit 1
+}
+ :
-PASS: mfluajitdir/mfluajittraptest
+
+PASS mfluajitdir/mfluajittraptest.test (exit status: 0)
+PASS: mfluajitdir/mfluajittraptest.test
diff --git a/Build/source/texk/web2c/mft.ch b/Build/source/texk/web2c/mft.ch
index 8213bd31543..1ad6c621d41 100644
--- a/Build/source/texk/web2c/mft.ch
+++ b/Build/source/texk/web2c/mft.ch
@@ -37,10 +37,10 @@ Changes for \MP\ by W.~Bzyl in July, 2001.
@z
@x [2] Define my_name
-@d banner=='This is MFT, Version 2.0'
+@d banner=='This is MFT, Version 2.1'
@y
@d my_name=='mft'
-@d banner=='This is MFT, Version 2.0'
+@d banner=='This is MFT, Version 2.1'
@z
% [3] No need for the final label in C.
@@ -463,6 +463,8 @@ pr12("t")("r")("a")("c")("i")("n")("g")
("s")("t")("a")("t")("s")(internal);@/
pr13("t")("r")("a")("c")("i")("n")("g")
("o")("n")("l")("i")("n")("e")(internal);@/
+pr15("t")("r")("a")("c")("i")("n")("g")
+ ("r")("e")("s")("t")("o")("r")("e")("s")(internal);@/
@ @<Store all the primitives@>=
pr4("y")("e")("a")("r")(internal);@/
@@ -470,7 +472,7 @@ pr5("m")("o")("n")("t")("h")(internal);@/
pr3("d")("a")("y")(internal);@/
pr4("t")("i")("m")("e")(internal);@/
pr8("c")("h")("a")("r")("c")("o")("d")("e")(internal);@/
-pr7("c")("h")("a")("r")("f")("a")("m")(internal);@/
+pr7("c")("h")("a")("r")("e")("x")("t")(internal);@/
pr6("c")("h")("a")("r")("w")("d")(internal);@/
pr6("c")("h")("a")("r")("h")("t")(internal);@/
pr6("c")("h")("a")("r")("d")("p")(internal);@/
@@ -735,6 +737,8 @@ pr12("t")("r")("a")("c")("i")("n")("g")
("s")("t")("a")("t")("s")(internal);@/
pr13("t")("r")("a")("c")("i")("n")("g")
("o")("n")("l")("i")("n")("e")(internal);@/
+pr15("t")("r")("a")("c")("i")("n")("g")
+ ("r")("e")("s")("t")("o")("r")("e")("s")(internal);@/
@ @<Store all the primitives@>=
pr4("y")("e")("a")("r")(internal);@/
@@ -742,6 +746,7 @@ pr5("m")("o")("n")("t")("h")(internal);@/
pr3("d")("a")("y")(internal);@/
pr4("t")("i")("m")("e")(internal);@/
pr8("c")("h")("a")("r")("c")("o")("d")("e")(internal);@/
+pr7("c")("h")("a")("r")("e")("x")("t")(internal);@/
pr6("c")("h")("a")("r")("w")("d")(internal);@/
pr6("c")("h")("a")("r")("h")("t")(internal);@/
pr6("c")("h")("a")("r")("d")("p")(internal);@/
diff --git a/Build/source/texk/web2c/mft.web b/Build/source/texk/web2c/mft.web
index 18a949b1e95..617369f8782 100644
--- a/Build/source/texk/web2c/mft.web
+++ b/Build/source/texk/web2c/mft.web
@@ -7,6 +7,7 @@
% Version 1.0 was tuned up for the METAFONTware report (April 16, 1989).
% Version 1.1 ditto, with input handled by Hosek's idea (April 27, 1989).
% Version 2 has the new primitives of METAFONT 2.0 (October 16, 1989).
+% Version 2.1 corrects two of those primitives (January 20, 2021).
% Here is TeX material that gets inserted after \input webmac
\def\hang{\hangindent 3em\indent\ignorespaces}
@@ -21,17 +22,16 @@
\mathchardef\RA="3221 % right arrow
\mathchardef\BA="3224 % double arrow
\def\({} % kludge for alphabetizing certain module names
-\chardef\V=`\| % vertical line in a string
\def\title{MFT}
\def\contentspagenumber{401}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont MFT} processor}
\vskip 15pt
- \centerline{(Version 2.0, October 1989)}
+ \centerline{(Version 2.1, January 2021)}
\vfill}
\def\botofcontents{\vfill
\centerline{\hsize 5in\baselineskip9pt
@@ -83,7 +83,7 @@ a reformatting command even to get parentheses to act like delimiters!)
\MF\ comments, which follow a single \.\% sign, should be valid \TeX\
input. But \MF\ material can be included in \pb\ within a comment; this
will be translated by \.{MFT} as if it were not in a comment. For example,
-a phrase like `\.{make} \.{\V x2r\V} \.{zero}' will be translated into
+a phrase like `\.{make} \.{\v x2r\v} \.{zero}' will be translated into
`\.{make \$x\_\{2r\}\$ zero}'.
The rules just stated apply to lines that contain one, two, or three \.\% signs
@@ -128,7 +128,7 @@ dependencies' in the index below.
The ``banner line'' defined here should be changed whenever \.{MFT}
is modified.
-@d banner=='This is MFT, Version 2.0'
+@d banner=='This is MFT, Version 2.1'
@ The program begins with a fairly normal header, made up of pieces that
@^system dependencies@>
@@ -802,9 +802,7 @@ end;
@ @<Read from |mf_file|...@>=
begin incr(line);
if not input_ln(mf_file) then input_has_ended:=true
-else if limit=change_limit then
- if buffer[0]=change_buffer[0] then
- if change_limit>0 then check_change;
+else if change_limit>0 then check_change;
end
@ @<Read from |style_file|...@>=
@@ -840,7 +838,7 @@ had a line that didn't match any relevant line in |mf_file|.
@<Check that all changes have been read@>=
if change_limit<>0 then {|changing| is false}
- begin for loc:=0 to change_limit do buffer[loc]:=change_buffer[loc];
+ begin for loc:=0 to change_limit-1 do buffer[loc]:=change_buffer[loc];
limit:=change_limit; changing:=true; line:=other_line; loc:=change_limit;
err_print('! Change file entry did not match');
@.Change file entry did not match@>
@@ -936,7 +934,7 @@ lookup:=p;
end;
@ A simple hash code is used: If the sequence of
-ASCII codes is $c_1c_2\ldots c_m$, its hash value will be
+ASCII codes is $c_1c_2\ldots c_n$, its hash value will be
$$(2^{n-1}c_1+2^{n-2}c_2+\cdots+c_n)\,\bmod\,|hash_size|.$$
@<Compute the hash...@>=
@@ -1226,6 +1224,8 @@ pr12("t")("r")("a")("c")("i")("n")("g")
("s")("t")("a")("t")("s")(internal);@/
pr13("t")("r")("a")("c")("i")("n")("g")
("o")("n")("l")("i")("n")("e")(internal);@/
+pr15("t")("r")("a")("c")("i")("n")("g")
+ ("r")("e")("s")("t")("o")("r")("e")("s")(internal);@/
@ @<Store all the primitives@>=
pr4("y")("e")("a")("r")(internal);@/
@@ -1233,7 +1233,7 @@ pr5("m")("o")("n")("t")("h")(internal);@/
pr3("d")("a")("y")(internal);@/
pr4("t")("i")("m")("e")(internal);@/
pr8("c")("h")("a")("r")("c")("o")("d")("e")(internal);@/
-pr7("c")("h")("a")("r")("f")("a")("m")(internal);@/
+pr7("c")("h")("a")("r")("e")("x")("t")(internal);@/
pr6("c")("h")("a")("r")("w")("d")(internal);@/
pr6("c")("h")("a")("r")("h")("t")(internal);@/
pr6("c")("h")("a")("r")("d")("p")(internal);@/
diff --git a/Build/source/texk/web2c/mftraptest.test b/Build/source/texk/web2c/mftraptest.test
index d50909e61ad..29393f24a3d 100755
--- a/Build/source/texk/web2c/mftraptest.test
+++ b/Build/source/texk/web2c/mftraptest.test
@@ -1,6 +1,6 @@
#! /bin/sh -vx
# $Id$
-# Copyright 2017-2019 Karl Berry <tex-live@tug.org>
+# Copyright 2017-2021 Karl Berry <tex-live@tug.org>
# Copyright 2009-2014 Peter Breitenlohner <tex-live@tug.org>
# You may freely use, modify and/or distribute this file.
@@ -31,7 +31,7 @@ cat >filter <<-\_EOF
s/tokens out of [1-9][0-9]*/tokens out of YYYY/
s/out of [1-9][0-9]*i,[0-9nrpb,]*/out of YYi,YYYn,YYYr,YYYp,YYYb/
s/out of [1-9][0-9]*w,[0-9hdilkep,]*)/out of YYYw,YYh,YYd,YYi,YYYYl,YYYk,YYYe,YYp)/
- s/METAFONT output 20..\...\...:..../METAFONT output 20YY.MM.DD:hhmm/
+ s/METAFONT output ....\...\...:..../METAFONT output YYYY.MM.DD:hhmm/
_EOF
# Capsule numbers
diff --git a/Build/source/texk/web2c/pdftexdir/pdftex.web b/Build/source/texk/web2c/pdftexdir/pdftex.web
index 33ac3c914b2..373dfd0dcf9 100644
--- a/Build/source/texk/web2c/pdftexdir/pdftex.web
+++ b/Build/source/texk/web2c/pdftexdir/pdftex.web
@@ -70,6 +70,7 @@
% Version 3.141592 fixed \xleaders, glueset, weird alignments (December 2002).
% Version 3.1415926 was a general cleanup with minor fixes (February 2008).
% Version 3.14159265 was similar (January 2014).
+% Version 3.141592653 was similar but more extensive (January 2021).
% A preliminary version of TeX--XeT was released in April 1992.
% TeX--XeT version 1.0 was released in June 1992,
@@ -302,17 +303,17 @@ known as `\eTeX'.
@d eTeX_revision==".6" { \.{\\eTeXrevision} }
@d eTeX_version_string=='-2.6' {current \eTeX\ version}
@#
-@d eTeX_banner=='This is e-TeX, Version 3.14159265',eTeX_version_string
+@d eTeX_banner=='This is e-TeX, Version 3.141592653',eTeX_version_string
{printed when \eTeX\ starts}
@#
@d pdftex_version==140 { \.{\\pdftexversion} }
@d pdftex_revision=="21" { \.{\\pdftexrevision} }
@d pdftex_version_string=='-1.40.21' {current \pdfTeX\ version}
@#
-@d pdfTeX_banner=='This is pdfTeX, Version 3.14159265',eTeX_version_string,pdftex_version_string
+@d pdfTeX_banner=='This is pdfTeX, Version 3.141592653',eTeX_version_string,pdftex_version_string
{printed when \pdfTeX\ starts}
@#
-@d TeX_banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d TeX_banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@#
@d banner==pdfTeX_banner
@#
@@ -331,7 +332,7 @@ reader see how to make an appropriate interface for other systems
if necessary. (\ph\ is Charles Hedrick's modification of a compiler
@^Hedrick, Charles Locke@>
for the DECsystem-10 that was originally developed at the University of
-Hamburg; cf.\ {\sl SOFTWARE---Practice \AM\ Experience \bf6} (1976),
+Hamburg; cf.\ {\sl Software---Practice and Experience \bf6} (1976),
29--42. The \TeX\ program below is intended to be adaptable, without
extensive changes, to most other versions of \PASCAL, so it does not fully
use the admirable features of \ph. Indeed, a conscious effort has been
@@ -428,8 +429,8 @@ to people who wish to preserve the purity of English.
Similarly, there is some conditional code delimited by
`$|stat|\ldots|tats|$' that is intended for use when statistics are to be
kept about \TeX's memory usage. The |stat| $\ldots$ |tats| code also
-implements diagnostic information for \.{\\tracingparagraphs} and
-\.{\\tracingpages}.
+implements diagnostic information for \.{\\tracingparagraphs},
+\.{\\tracingpages}, and \.{\\tracingrestores}.
@^debugging@>
@d debug==@{ {change this to `$\\{debug}\equiv\null$' when debugging}
@@ -1440,7 +1441,7 @@ example, be `|k in [0,@'10..@'12,@'14,@'15,@'33,@'177..@'377]|'.
If character |k| cannot be printed, and |k<@'200|, then character |k+@'100| or
|k-@'100| must be printable; moreover, ASCII codes |[@'41..@'46,
@'60..@'71, @'136, @'141..@'146, @'160..@'171]| must be printable.
-Thus, at least 81 printable characters are needed.
+Thus, at least 80 printable characters are needed.
@:TeXbook}{\sl The \TeX book@>
@^character set dependencies@>
@^system dependencies@>
@@ -1701,9 +1702,9 @@ end;
@ Here is the very first thing that \TeX\ prints: a headline that identifies
the version number and format package. The |term_offset| variable is temporarily
-incorrect, but the discrepancy is not serious since we assume that the banner
-and format identifier together will occupy at most |max_print_line|
-character positions.
+incorrect, but the discrepancy is not serious since we assume that this
+part of the program is system dependent.
+@^system dependencies@>
@<Initialize the output...@>=
wterm(banner);
@@ -1753,7 +1754,7 @@ by all \PASCAL\ compilers.
@<Basic print...@>=
procedure print_int(@!n:longinteger); {prints an integer in decimal form}
-var k:0..23; {index to current digit; we assume that $|n|<10^{23}$}
+var k:0..23; {index to current digit; we assume that $\vert n\vert<10^{23}$}
@!m:longinteger; {used to negate |n| in possibly dangerous cases}
begin k:=0;
if n<0 then
@@ -1901,7 +1902,8 @@ error messages are
\hang|term_only| (when |interaction>batch_mode| and |log_file| not yet open);
-\hang|log_only| (when |interaction=batch_mode| and |log_file| is open);
+\hang|log_only| (when |interaction=batch_mode| and |log_file| is open,
+ or when tracing paragraphs);
\hang|term_and_log| (when |interaction>batch_mode| and |log_file| is open).
@@ -2017,7 +2019,8 @@ var c:ASCII_code; {what the user types}
{used to save global variables when deleting tokens}
begin if history<error_message_issued then history:=error_message_issued;
print_char("."); show_context;
-if interaction=error_stop_mode then @<Get user's advice and |return|@>;
+if interaction=error_stop_mode then if selector<>log_only then
+ @<Get user's advice and |return|@>;
incr(error_count);
if error_count=100 then
begin print_nl("(That makes 100 errors; please try again.)");
@@ -2028,7 +2031,8 @@ if error_count=100 then
exit:end;
@ @<Get user's advice...@>=
-loop@+begin continue: clear_for_error_prompt; prompt_input("? ");
+loop@+begin continue: if interaction<>error_stop_mode then return;
+ clear_for_error_prompt; prompt_input("? ");
@.?\relax@>
if last=first then return;
c:=buffer[first];
@@ -2053,7 +2057,7 @@ case c of
"0","1","2","3","4","5","6","7","8","9": if deletions_allowed then
@<Delete \(c)|c-"0"| tokens and |goto continue|@>;
@t\4\4@>@;@+@!debug "D": begin debug_help; goto continue;@+end;@+gubed@/
-"E": if base_ptr>0 then
+"E": if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
begin print_nl("You want to edit file ");
@.You want to edit file x@>
slow_print(input_stack[base_ptr].name_field);
@@ -2074,7 +2078,8 @@ begin print("Type <return> to proceed, S to scroll future error messages,");@/
@.Type <return> to proceed...@>
print_nl("R to run without stopping, Q to run quietly,");@/
print_nl("I to insert something, ");
-if base_ptr>0 then print("E to edit your file,");
+if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
+ print("E to edit your file,");
if deletions_allowed then
print_nl("1 or ... or 9 to ignore the next 1 to 9 tokens of input,");
print_nl("H for help, X to quit.");
@@ -2266,7 +2271,7 @@ begin if OK_to_interrupt then
print_err("Interruption");
@.Interruption@>
help3("You rang?")@/
- ("Try to insert some instructions for me (e.g.,`I\showlists'),")@/
+ ("Try to insert an instruction for me (e.g., `I\showlists'),")@/
("unless you just want to quit by typing `X'.");
deletions_allowed:=false; error; deletions_allowed:=true;
interrupt:=0;
@@ -3415,8 +3420,8 @@ In \eTeX\ the |subtype| field records the box direction mode |box_lr|.
@ The |new_null_box| function returns a pointer to an |hlist_node| in
which all subfields have the values corresponding to `\.{\\hbox\{\}}'.
-The |subtype| field is set to |min_quarterword|, since that's the desired
-|span_count| value if this |hlist_node| is changed to an |unset_node|.
+(The |subtype| field is set to |min_quarterword|, for historic reasons
+that are no longer relevant.)
@p function new_null_box:pointer; {creates a new box node}
var p:pointer; {the new node}
@@ -4716,7 +4721,7 @@ expanded by `\.{\\the}'.
@d hskip=26 {horizontal glue ( \.{\\hskip}, \.{\\hfil}, etc.~)}
@d vskip=27 {vertical glue ( \.{\\vskip}, \.{\\vfil}, etc.~)}
@d mskip=28 {math glue ( \.{\\mskip} )}
-@d kern=29 {fixed space ( \.{\\kern})}
+@d kern=29 {fixed space ( \.{\\kern} )}
@d mkern=30 {math kern ( \.{\\mkern} )}
@d leader_ship=31 {use a box ( \.{\\shipout}, \.{\\leaders}, etc.~)}
@d halign=32 {horizontal table alignment ( \.{\\halign} )}
@@ -4865,7 +4870,7 @@ At each level of processing we are in one of six modes:
\hang|-mmode| stands for math formula mode (not displayed).
\yskip\noindent The mode is temporarily set to zero while processing \.{\\write}
-texts in the |ship_out| routine.
+texts.
Numeric values are assigned to |vmode|, |hmode|, and |mmode| so that
\TeX's ``big semantic switch'' can select the appropriate thing to
@@ -5074,7 +5079,7 @@ case abs(m) div (max_command+1) of
end;
end;
2: if a.int<>null then
- begin print("this will be denominator of:"); show_box(a.int);@+
+ begin print("this will begin denominator of:"); show_box(a.int);@+
end;
end {there are no other cases}
@@ -5645,7 +5650,7 @@ that will be defined later.
@d output_penalty_code=39 {penalty found at current page break}
@d max_dead_cycles_code=40 {bound on consecutive dead cycles of output}
@d hang_after_code=41 {hanging indentation changes after this many lines}
-@d floating_penalty_code=42 {penalty for insertions heldover after a split}
+@d floating_penalty_code=42 {penalty for insertions held over after a split}
@d global_defs_code=43 {override \.{\\global} specifications}
@d cur_fam_code=44 {current family}
@d escape_char_code=45 {escape character for token output}
@@ -6136,14 +6141,18 @@ del_code("."):=0; {this null delimiter is used in error recovery}
input and output, establishes the initial values of the date and time.
@^system dependencies@>
Since standard \PASCAL\ cannot provide such information, something special
-is needed. The program here simply specifies July 4, 1776, at noon; but
-users probably want a better approximation to the truth.
+is needed. The program here simply assumes that suitable values appear in
+the global variables \\{sys\_time}, \\{sys\_day}, \\{sys\_month}, and
+\\{sys\_year} (which are initialized to noon on 4 July 1776,
+in case the implementor is careless).
@p procedure fix_date_and_time;
-begin time:=12*60; {minutes since midnight}
-day:=4; {fourth day of the month}
-month:=7; {seventh month of the year}
-year:=1776; {Anno Domini}
+begin sys_time:=12*60;
+sys_day:=4; sys_month:=7; sys_year:=1776; {self-evident truths}
+time:=sys_time; {minutes since midnight}
+day:=sys_day; {day of the month}
+month:=sys_month; {month of the year}
+year:=sys_year; {Anno Domini}
end;
@ @<Show equivalent |n|, in region 5@>=
@@ -6179,11 +6188,13 @@ if blank_line then print_ln;
selector:=old_setting;
end;
-@ Of course we had better declare another global variable, if the previous
+@ Of course we had better declare a few more global variables, if the previous
routines are going to work.
@<Glob...@>=
@!old_setting:0..max_selector;
+@!sys_time,@!sys_day,@!sys_month,@!sys_year:integer;
+ {date and time supplied by external system}
@ The final region of |eqtb| contains the dimension parameters defined
here, and the 256 \.{\\dimen} registers.
@@ -6958,7 +6969,7 @@ should replace the corresponding entry in |xeq_level|.
\yskip\hangg 2) If |save_type(p)=restore_zero|, then |save_index(p)|
is a location in |eqtb| whose current value should be destroyed at the end
of the current group, when it should be
-replaced by the current value of |eqtb[undefined_control_sequence]|.
+replaced by the value of |eqtb[undefined_control_sequence]|.
\yskip\hangg 3) If |save_type(p)=insert_token|, then |save_index(p)|
is a token that should be inserted into \TeX's input when the current
@@ -7372,8 +7383,8 @@ when |m=out_param|, it means that \TeX\ should insert parameter
number |c| into the text at this point.
The enclosing \.{\char'173} and \.{\char'175} characters of a macro
-definition are omitted, but the final right brace of an output routine
-is included at the end of its token list.
+definition are omitted, but an output routine
+will be enclosed in braces.
Here is an example macro definition that illustrates these conventions.
After \TeX\ processes the text
@@ -7859,7 +7870,7 @@ template is being scanned;
template is being scanned;
\hang|backed_up|, if the token list being scanned has been inserted as
-`to be read again'.
+`to be read again';
\hang|inserted|, if the token list being scanned has been inserted as
the text expansion of a \.{\\count} or similar variable;
@@ -8420,7 +8431,8 @@ end
@ The recovery procedure can't be fully understood without knowing more
about the \TeX\ routines that should be aborted, but we can sketch the
-ideas here: For a runaway definition we will insert a right brace; for a
+ideas here: For a runaway definition or a runaway balanced text
+we will insert a right brace; for a
runaway preamble, we will insert a special \.{\\cr} token and a right
brace; and for a runaway argument, we will set |long_state| to
|outer_call| and insert \.{\\par}.
@@ -9160,7 +9172,7 @@ done: if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr
else cur_tok:=cs_token_flag+cur_cs;
end;
-@ The |get_x_token| procedure is equivalent to two consecutive
+@ The |get_x_token| procedure is essentially equivalent to two consecutive
procedure calls: |get_next; x_token|.
@p procedure x_token; {|get_x_token| without the initial |get_next|}
@@ -9489,7 +9501,7 @@ end
strip off the enclosing braces. That's why |rbrace_ptr| was introduced.
@<Tidy up the parameter just scanned, and tuck it away@>=
-begin if (m=1)and(info(p)<right_brace_limit)and(p<>temp_head) then
+begin if (m=1)and(info(p)<right_brace_limit) then
begin link(rbrace_ptr):=null; free_avail(p);
p:=link(temp_head); pstack[n]:=link(p); free_avail(p);
end
@@ -10680,7 +10692,7 @@ at the value |p| that is returned. (If |p=temp_head|, the list is empty.)
@p @t\4@>@<Declare \eTeX\ procedures for token lists@>@;@/
function str_toks(@!b:pool_pointer):pointer;
- {changes the string |str_pool[b..pool_ptr]| to a token list}
+ {converts |str_pool[b..pool_ptr-1]| to a token list}
var p:pointer; {tail of the token list}
@!q:pointer; {new node being added to the token list via |store_new_token|}
@!t:halfword; {token being appended}
@@ -11407,7 +11419,7 @@ address of the control sequence to display in ``runaway'' error
messages.
@p function scan_toks(@!macro_def,@!xpand:boolean):pointer;
-label found,done,done1,done2;
+label found,continue,done,done1,done2;
var t:halfword; {token representing the highest parameter number}
@!s:halfword; {saved token}
@!p:pointer; {tail of the token list being built}
@@ -11427,7 +11439,7 @@ scan_toks:=p;
end;
@ @<Scan and build the parameter part...@>=
-begin loop begin get_token; {set |cur_cmd|, |cur_chr|, |cur_tok|}
+begin loop begin continue: get_token; {set |cur_cmd|, |cur_chr|, |cur_tok|}
if cur_tok<right_brace_limit then goto done1;
if cur_cmd=mac_param then
@<If the next character is a parameter number, make |cur_tok|
@@ -11449,7 +11461,7 @@ end
@ @<If the next character is a parameter number...@>=
begin s:=match_token+cur_chr; get_token;
-if cur_cmd=left_brace then
+if cur_tok<left_brace_limit then
begin hash_brace:=cur_tok;
store_new_token(cur_tok); store_new_token(end_match_token);
goto done;
@@ -11457,7 +11469,8 @@ if cur_cmd=left_brace then
if t=zero_token+9 then
begin print_err("You already have nine parameters");
@.You already have nine...@>
- help1("I'm going to ignore the # sign you just used."); error;
+ help2("I'm going to ignore the # sign you just used,")@/
+ ("as well as the token that followed it."); error; goto continue;
end
else begin incr(t);
if cur_tok<>t then
@@ -11612,7 +11625,7 @@ begin if not input_ln(read_file[m],true) then
print_err("File ended within "); print_esc("read");
@.File ended within \\read@>
help1("This \read has unbalanced braces.");
- align_state:=1000000; error;
+ align_state:=1000000; limit:=0; error;
end;
end;
end
@@ -11757,7 +11770,7 @@ where skipping began, for use in error messages.
@!skip_line:integer; {skipping began here}
@ Here is a procedure that ignores text until coming to an \.{\\or},
-\.{\\else}, or \.{\\fi} at level zero of $\.{\\if}\ldots\.{\\fi}$
+\.{\\else}, or \.{\\fi} at the current level of $\.{\\if}\ldots\.{\\fi}$
nesting. After it has acted, |cur_chr| will indicate the token that
was found, but |cur_tok| will not be set (because this makes the
procedure run faster).
@@ -12486,11 +12499,11 @@ end
@ @<Print the banner...@>=
begin wlog(banner);
slow_print(format_ident); print(" ");
-print_int(day); print_char(" ");
+print_int(sys_day); print_char(" ");
months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
-for k:=3*month-2 to 3*month do wlog(months[k]);
-print_char(" "); print_int(year); print_char(" ");
-print_two(time div 60); print_char(":"); print_two(time mod 60);
+for k:=3*sys_month-2 to 3*sys_month do wlog(months[k]);
+print_char(" "); print_int(sys_year); print_char(" ");
+print_two(sys_time div 60); print_char(":"); print_two(sys_time mod 60);
if eTeX_ex then
begin; wlog_cr; wlog('entering extended mode');
end;
@@ -12498,6 +12511,9 @@ end
@ Let's turn now to the procedure that is used to initiate file reading
when an `\.{\\input}' command is being processed.
+Beware: For historic reasons, this code foolishly conserves a tiny bit
+of string pool space; but that can confuse the interactive `\.E' option.
+@^system dependencies@>
@p procedure start_input; {\TeX\ will \.{\\input} something}
label done;
@@ -12522,7 +12538,7 @@ if term_offset+length(name)>max_print_line-2 then print_ln
else if (term_offset>0)or(file_offset>0) then print_char(" ");
print_char("("); incr(open_parens); slow_print(name); update_terminal;
state:=new_line;
-if name=str_ptr-1 then {we can conserve string pool space now}
+if name=str_ptr-1 then {conserve string pool space (but see note above)}
begin flush_string; name:=cur_name;
end;
@<Read the first line of the new file@>;
@@ -12736,11 +12752,11 @@ deleted if $c=0$; then we pass over $a$~characters to reach the next
current character (which may have a ligature/kerning program of its own).
If the very first instruction of the |lig_kern| array has |skip_byte=255|,
-the |next_char| byte is the so-called right boundary character of this font;
+the |next_char| byte is the so-called boundary character of this font;
the value of |next_char| need not lie between |bc| and~|ec|.
If the very last instruction of the |lig_kern| array has |skip_byte=255|,
-there is a special ligature/kerning program for a left boundary character,
-beginning at location |256*op_byte+remainder|.
+there is a special ligature/kerning program for a boundary character at the
+left, beginning at location |256*op_byte+remainder|.
The interpretation is that \TeX\ puts implicit boundary characters
before and after each consecutive string of characters from the same font.
These implicit characters do not appear in the output, but they can affect
@@ -12872,7 +12888,7 @@ the font.
{start of |lig_kern| program for left boundary character,
|non_address| if there is none}
@!font_bchar:array[internal_font_number] of min_quarterword..non_char;
- {right boundary character, |non_char| if there is none}
+ {boundary character, |non_char| if there is none}
@!font_false_bchar:array[internal_font_number] of min_quarterword..non_char;
{|font_bchar| if it doesn't exist in the font, otherwise |non_char|}
@@ -13051,7 +13067,7 @@ var k:font_index; {index into |font_info|}
@!a,@!b,@!c,@!d:eight_bits; {byte variables}
@!qw:four_quarters;@!sw:scaled; {accumulators}
@!bch_label:integer; {left boundary start location, or infinity}
-@!bchar:0..256; {right boundary character, or 256}
+@!bchar:0..256; {boundary character, or 256}
@!z:scaled; {the design size or the ``at'' size}
@!alpha:integer;@!beta:1..16;
{auxiliary quantities used in fixed-point multiplication}
@@ -13684,13 +13700,13 @@ stack were empty at the time of a |pop| command.
The parameter is a signed number in two's complement notation, |-128<=b<128|;
if |b<0|, the reference point moves left.
-\yskip\hang|right2| 144 |b[2]|. Same as |right1|, except that |b| is a
+\yskip\hang|@!right2| 144 |b[2]|. Same as |right1|, except that |b| is a
two-byte quantity in the range |-32768<=b<32768|.
-\yskip\hang|right3| 145 |b[3]|. Same as |right1|, except that |b| is a
+\yskip\hang|@!right3| 145 |b[3]|. Same as |right1|, except that |b| is a
three-byte quantity in the range |@t$-2^{23}$@><=b<@t$2^{23}$@>|.
-\yskip\hang|right4| 146 |b[4]|. Same as |right1|, except that |b| is a
+\yskip\hang|@!right4| 146 |b[4]|. Same as |right1|, except that |b| is a
four-byte quantity in the range |@t$-2^{31}$@><=b<@t$2^{31}$@>|.
\yskip\hang|w0| 147. Set |h:=h+w|; i.e., move right |w| units. With luck,
@@ -20400,7 +20416,7 @@ also removes all occurrences of |ins_node|, |mark_node|, and |adjust_node|
items and appends the resulting material onto the list that ends at
location |adjust_tail|.
-@< Glob...@>=
+@<Glob...@>=
@!adjust_tail:pointer; {tail of adjustment list}
@ @<Set init...@>=adjust_tail:=null; last_badness:=0;
@@ -21348,8 +21364,8 @@ programming.
@d sub_mlist=3 {|math_type| when the attribute is a formula}
@d math_text_char=4 {|math_type| when italic correction is dubious}
-@ Each portion of a formula is classified as Ord, Op, Bin, Rel, Ope,
-Clo, Pun, or Inn, for purposes of spacing and line breaking. An
+@ Each portion of a formula is classified as Ord, Op, Bin, Rel, Open,
+Close, Punct, or Inner, for purposes of spacing and line breaking. An
|ord_noad|, |op_noad|, |bin_noad|, |rel_noad|, |open_noad|, |close_noad|,
|punct_noad|, or |inner_noad| is used to represent portions of the various
types. For example, an `\.=' sign in a formula leads to the creation of a
@@ -21371,10 +21387,10 @@ limits has been overridden for this operator.
@d op_noad=ord_noad+1 {|type| of a noad classified Op}
@d bin_noad=ord_noad+2 {|type| of a noad classified Bin}
@d rel_noad=ord_noad+3 {|type| of a noad classified Rel}
-@d open_noad=ord_noad+4 {|type| of a noad classified Ope}
-@d close_noad=ord_noad+5 {|type| of a noad classified Clo}
-@d punct_noad=ord_noad+6 {|type| of a noad classified Pun}
-@d inner_noad=ord_noad+7 {|type| of a noad classified Inn}
+@d open_noad=ord_noad+4 {|type| of a noad classified Open}
+@d close_noad=ord_noad+5 {|type| of a noad classified Close}
+@d punct_noad=ord_noad+6 {|type| of a noad classified Punct}
+@d inner_noad=ord_noad+7 {|type| of a noad classified Inner}
@d limits=1 {|subtype| of |op_noad| whose scripts are to be above, below}
@d no_limits=2 {|subtype| of |op_noad| whose scripts are to be normal}
@@ -22155,7 +22171,7 @@ else begin if (qo(cur_c)>=font_bc[cur_f])and(qo(cur_c)<=font_ec[cur_f]) then
else cur_i:=null_character;
if not(char_exists(cur_i)) then
begin char_warning(cur_f,qo(cur_c));
- math_type(a):=empty;
+ math_type(a):=empty; cur_i:=null_character;
end;
end;
end;
@@ -22545,7 +22561,7 @@ else begin shift_down:=denom2(cur_size);
@ The numerator and denominator must be separated by a certain minimum
clearance, called |clr| in the following program. The difference between
-|clr| and the actual clearance is |2delta|.
+|clr| and the actual clearance is twice |delta|.
@<Adjust \(s)|shift_up| and |shift_down| for the case of no fraction line@>=
begin if cur_style<text_style then clr:=7*default_rule_thickness
@@ -22929,8 +22945,7 @@ rel_noad: begin t:=rel_noad; pen:=rel_penalty;
ord_noad,vcenter_noad,over_noad,under_noad: do_nothing;
radical_noad: s:=radical_noad_size;
accent_noad: s:=accent_noad_size;
-fraction_noad: begin t:=inner_noad; s:=fraction_noad_size;
- end;
+fraction_noad: s:=fraction_noad_size;
left_noad,right_noad: t:=make_left_right(q,style,max_d,max_h);
style_node: @<Change the current style and |goto delete_q|@>;
whatsit_node,penalty_node,rule_node,disc_node,adjust_node,ins_node,mark_node,
@@ -22969,7 +22984,7 @@ begin cur_style:=subtype(q); s:=style_node_size;
goto delete_q;
end
-@ The inter-element spacing in math formulas depends on a $8\times8$ table that
+@ The inter-element spacing in math formulas depends on an $8\times8$ table that
\TeX\ preloads as a 64-digit string. The elements of this string have the
following significance:
$$\vbox{\halign{#\hfil\cr
@@ -23355,6 +23370,7 @@ text(frozen_cr):="cr"; eqtb[frozen_cr]:=eqtb[cur_val];@/
primitive("crcr",car_ret,cr_cr_code);
@!@:cr_cr_}{\.{\\crcr} primitive@>
text(frozen_end_template):="endtemplate"; text(frozen_endv):="endtemplate";
+@.endtemplate@>
eq_type(frozen_endv):=endv; equiv(frozen_endv):=null_list;
eq_level(frozen_endv):=level_one;@/
eqtb[frozen_end_template]:=eqtb[frozen_endv];
@@ -23587,6 +23603,7 @@ info(p):=end_span; width(p):=null_flag; cur_loop:=link(cur_loop);
@<Copy the templates from node |cur_loop| into node |p|@>;
cur_loop:=link(cur_loop);
link(p):=new_glue(glue_ptr(cur_loop));
+subtype(link(p)):=tab_skip_code+1;
end
@ @<Copy the templates from node |cur_loop| into node |p|@>=
@@ -23958,8 +23975,8 @@ The method used here is based on an approach devised by Michael F. Plass and
@^Plass, Michael Frederick@>
@^Knuth, Donald Ervin@>
the author in 1977, subsequently generalized and improved by the same two
-people in 1980. A detailed discussion appears in {\sl SOFTWARE---Practice
-\AM\ Experience \bf11} (1981), 1119--1184, where it is shown that the
+people in 1980. A detailed discussion appears in {\sl Software---Practice
+and Experience \bf11} (1981), 1119--1184, where it is shown that the
line-breaking problem can be regarded as a special case of the problem of
computing the shortest path in an acyclic network. The cited paper includes
numerous examples and describes the history of line breaking as it has been
@@ -25645,7 +25662,7 @@ loop@+ begin q:=link(r);
if is_char_node(q) then goto done1;
if non_discardable(q) then goto done1;
if type(q)=kern_node then if subtype(q)<>explicit then goto done1;
- r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node| or |penalty_node|}
+ r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node|, or |penalty_node|}
if type(q)=math_node then if TeXXeT_en then
@<Adjust \(t)the LR stack for the |post_line_break| routine@>;
end;
@@ -25959,7 +25976,8 @@ nodes $p_{a-1}$ and~$p_b$ in the description above are placed into variables
@<Glob...@>=
@!hc:array[0..65] of 0..256; {word to be hyphenated}
-@!hn:small_number; {the number of positions occupied in |hc|}
+@!hn:0..64; {the number of positions occupied in |hc|;
+ not always a |small_number|}
@!ha,@!hb:pointer; {nodes |ha..hb| should be replaced by the hyphenated result}
@!hf:internal_font_number; {font number of the letters in |hc|}
@!hu:array[0..63] of 0..256; {like |hc|, before conversion to lowercase}
@@ -26106,7 +26124,7 @@ forgetting what |ha| and |hb|, etc., are all about.
@ @<Local variables for hyphenation@>=
@!i,@!j,@!l:0..65; {indices into |hc| or |hu|}
@!q,@!r,@!s:pointer; {temporary registers for list manipulation}
-@!bchar:halfword; {right boundary character of hyphenated word, or |non_char|}
+@!bchar:halfword; {boundary character of hyphenated word, or |non_char|}
@ \TeX\ will never insert a hyphen that has fewer than
\.{\\lefthyphenmin} letters before it or fewer than
@@ -26847,7 +26865,7 @@ The hash table is called |trie_op_hash|, and the number of entries it contains
is |trie_op_ptr|.
@<Glob...@>=
-@!init@! trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
+@!init @!trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
{trie op codes for quadruples}
@!trie_used:array[ASCII_code] of quarterword;
{largest opcode used so far for this language}
@@ -27025,7 +27043,7 @@ entries.
@d trie_back(#)==trie[#].lh {backward links in |trie| holes}
@<Glob...@>=
-@!init@!trie_taken:packed array[1..trie_size] of boolean;
+@!init @!trie_taken:packed array[1..trie_size] of boolean;
{does a family start here?}
@t\hskip10pt@>@!trie_min:array[ASCII_code] of trie_pointer;
{the first possible slot for each character}
@@ -27721,7 +27739,8 @@ all split and floating insertions.
@!last_penalty:integer; {used to implement \.{\\lastpenalty}}
@!last_kern:scaled; {used to implement \.{\\lastkern}}
@!last_node_type:integer; {used to implement \.{\\lastnodetype}}
-@!insert_penalties:integer; {sum of the penalties for held-over insertions}
+@!insert_penalties:integer; {sum of the penalties for insertions
+ that were held over}
@ @<Put each...@>=
primitive("pagegoal",set_page_dimen,0);
@@ -28610,7 +28629,7 @@ Several additional global variables are needed.
@!main_k:font_index; {index into |font_info|}
@!main_p:pointer; {temporary register for list manipulation}
@!main_s:integer; {space factor value}
-@!bchar:halfword; {right boundary character of current font, or |non_char|}
+@!bchar:halfword; {boundary character of current font, or |non_char|}
@!false_bchar:halfword; {nonexistent character matching |bchar|, or |non_char|}
@!cancel_boundary:boolean; {should the left boundary be ignored?}
@!ins_disc:boolean; {should we insert a discretionary node?}
@@ -29178,7 +29197,7 @@ end;
@ Many of the actions related to box-making are triggered by the appearance
of braces in the input. For example, when the user says `\.{\\hbox}
-\.{to} \.{100pt\{$\langle\,\hbox{hlist}\,\rangle$\}}' in vertical mode,
+\.{to} \.{100pt\{$\langle\,\hbox{\rm hlist}\,\rangle$\}}' in vertical mode,
the information about the box size (100pt, |exactly|) is put onto |save_stack|
with a level boundary word just above it, and |cur_group:=adjusted_hbox_group|;
\TeX\ enters restricted horizontal mode to process the hlist. The right
@@ -31480,6 +31499,7 @@ end;
@ @<Initialize table entries...@>=
text(frozen_protection):="inaccessible";
+@.inaccessible@>
@ Here's an example of the way many of the following routines operate.
(Unfortunately, they aren't all as simple as this.)
@@ -32417,7 +32437,7 @@ any_mode(xray): show_whatever;
@ @d show_code=0 { \.{\\show} }
@d show_box_code=1 { \.{\\showbox} }
@d show_the_code=2 { \.{\\showthe} }
-@d show_lists=3 { \.{\\showlists} }
+@d show_lists_code=3 { \.{\\showlists} }
@<Put each...@>=
primitive("show",xray,show_code);
@@ -32426,14 +32446,14 @@ primitive("showbox",xray,show_box_code);
@!@:show_box_}{\.{\\showbox} primitive@>
primitive("showthe",xray,show_the_code);
@!@:show_the_}{\.{\\showthe} primitive@>
-primitive("showlists",xray,show_lists);
-@!@:show_lists_}{\.{\\showlists} primitive@>
+primitive("showlists",xray,show_lists_code);
+@!@:show_lists_code_}{\.{\\showlists} primitive@>
@ @<Cases of |print_cmd_chr|...@>=
xray: case chr_code of
show_box_code:print_esc("showbox");
show_the_code:print_esc("showthe");
- show_lists:print_esc("showlists");
+ show_lists_code:print_esc("showlists");
@<Cases of |xray| for |print_cmd_chr|@>@;@/
othercases print_esc("show")
endcases;
@@ -32447,7 +32467,7 @@ var p:pointer; {tail of a token list to show}
@!l:integer; {line where that conditional began}
@!n:integer; {level of \.{\\if...\\fi} nesting}
begin case cur_chr of
-show_lists: begin begin_diagnostic; show_activities;
+show_lists_code: begin begin_diagnostic; show_activities;
end;
show_box_code: @<Show the current contents of a box@>;
show_code: @<Show the current meaning of a token, then |goto common_ending|@>;
@@ -32530,8 +32550,8 @@ so that the inverse relation between them is clear.
The global variable |format_ident| is a string that is printed right
after the |banner| line when \TeX\ is ready to start. For \.{INITEX} this
-string says simply `\.{(INITEX)}'; for other versions of \TeX\ it says,
-for example, `\.{(preloaded format=plain 1982.11.19)}', showing the year,
+string says simply `\.{ (INITEX)}'; for other versions of \TeX\ it says,
+for example, `\.{ (preloaded format=plain 1982.11.19)}', showing the year,
month, and day that the format file was created. We have |format_ident=0|
before \TeX's tables are loaded.
@@ -32625,6 +32645,8 @@ macros to dump words of different types:
@ The inverse macros are slightly more complicated, since we need to check
the range of the values we are reading in. We say `|undump(a)(b)(x)|' to
read an integer value |x| that is supposed to be in the range |a<=x<=b|.
+System error messages should be suppressed when undumping.
+@^system dependencies@>
@d undump_wd(#)==begin get(fmt_file); #:=fmt_file^;@+end
@d undump_int(#)==begin get(fmt_file); #:=fmt_file^.int;@+end
@@ -33182,12 +33204,12 @@ cannot produce error messages. For example, it would be a mistake to call
|str_room| or |make_string| at this time, because a call on |overflow|
might lead to an infinite loop.
@^system dependencies@>
-
-Actually there's one way to get error messages, via |prepare_mag|;
-but that can't cause infinite recursion.
+(Actually there's one way to get error messages, via |prepare_mag|;
+but that can't cause infinite recursion.)
@^recursion@>
-This program doesn't bother to close the input files that may still be open.
+If |final_cleanup| is bypassed, this program doesn't bother to close
+the input files that may still be open.
@<Last-minute...@>=
procedure close_files_and_terminate;
@@ -33197,7 +33219,7 @@ var a, b, c, i, j, k, l: integer; {all-purpose index}
is_names: boolean; {flag for name tree output: is it Names or Kids?}
root, outlines, threads, names_tree, dests: integer;
xref_offset_width, names_head, names_tail: integer;
-begin @<Finish the extensions@>;
+begin @<Finish the extensions@>; new_line_char:=-1;
@!stat if tracing_stats>0 then @<Output statistics about this job@>;@;@+tats@/
wake_up_terminal;
if not fixed_pdfoutput_set then
@@ -33284,7 +33306,7 @@ been scanned and |its_all_over|\kern-2pt.
procedure final_cleanup;
label exit;
var c:small_number; {0 for \.{\\end}, 1 for \.{\\dump}}
-begin c:=cur_chr;
+begin c:=cur_chr; if c<>1 then new_line_char:=-1;
if job_name=0 then open_log_file;
while input_ptr>0 do
if state=token_list then end_token_list@+else end_file_reading;
@@ -33400,14 +33422,15 @@ program below. (If |m=13|, there is an additional argument, |l|.)
@!debug procedure debug_help; {routine to display various things}
label breakpoint,exit;
var k,@!l,@!m,@!n:integer;
-begin loop begin wake_up_terminal;
+begin clear_terminal;
+ loop begin wake_up_terminal;
print_nl("debug # (-1 to exit):"); update_terminal;
@.debug \#@>
read(term_in,m);
if m<0 then return
else if m=0 then
- begin goto breakpoint;@\ {go to every label at least once}
- breakpoint: m:=0; @{'BREAKPOINT'@}@\
+ begin goto breakpoint;@/ {go to every declared label at least once}
+ breakpoint: m:=0; @{'BREAKPOINT'@}@/
end
else begin read(term_in,n);
case m of
diff --git a/Build/source/texk/web2c/pdftexdir/pdftexextra.h b/Build/source/texk/web2c/pdftexdir/pdftexextra.h
index 3335b058807..5fcfe964f11 100644
--- a/Build/source/texk/web2c/pdftexdir/pdftexextra.h
+++ b/Build/source/texk/web2c/pdftexdir/pdftexextra.h
@@ -25,7 +25,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <pdftexdir/pdftex_version.h> /* for PDFTEX_VERSION */
#include <pdftexdir/etex_version.h> /* for ETEX_VERSION */
-#define BANNER "This is pdfTeX, Version 3.14159265-" ETEX_VERSION "-" PDFTEX_VERSION
+#define BANNER "This is pdfTeX, Version 3.141592653-" ETEX_VERSION "-" PDFTEX_VERSION
#define COPYRIGHT_HOLDER "Han The Thanh (pdfTeX) et al"
#define AUTHOR NULL
#define PROGRAM_HELP PDFTEXHELP
diff --git a/Build/source/texk/web2c/pdftexdir/tex.ch0 b/Build/source/texk/web2c/pdftexdir/tex.ch0
index 73f1a49a1c3..012f6b31f42 100644
--- a/Build/source/texk/web2c/pdftexdir/tex.ch0
+++ b/Build/source/texk/web2c/pdftexdir/tex.ch0
@@ -20,11 +20,11 @@
% pdfetex.web and tex.ch
@x [1.2] l.188
-@d TeX_banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d TeX_banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@#
@d banner==pdfTeX_banner
@y
-@d banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@z
@x [17.236] l.4960 - first web2c, then pdfTeX, then e-TeX additional integer parameters
diff --git a/Build/source/texk/web2c/pltotf.web b/Build/source/texk/web2c/pltotf.web
index 0aad14f2f04..74f0e2073e0 100644
--- a/Build/source/texk/web2c/pltotf.web
+++ b/Build/source/texk/web2c/pltotf.web
@@ -16,7 +16,7 @@
% Version 3.2 (December 1989) improved `shorten', increased max_letters.
% Version 3.3 (September 1990) fixed `nonexistent char 0' (John Gourlay).
% Version 3.4 (March 1991) has more robust `out_scaled' (Wayne Sullivan).
-% Version 3.5 (March 1995) initialized lk_step_ended (Armin K\"ollner).
+% Version 3.5 (March 1995) initialized lk_step_ended (Armin K\"ollner).
% Version 3.6 (January 2014) corrected possible end-of-line glitch (Ken Nakano),
% and get_fix now treats -- as + (Peter Breitenlohner).
@@ -34,7 +34,7 @@
\def\title{PL\lowercase{to}TF}
\def\contentspagenumber{301}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont PLtoTF} processor}
@@ -393,7 +393,7 @@ both be used within the same \.{CHARACTER} list.
\yskip\noindent
The elements of a \.{VARCHAR} property list are either \.{TOP}, \.{MID},
-\.{BOT} or \.{REP}; the values are integers, which must be zero or the number
+\.{BOT}, or \.{REP}; the values are integers, which must be zero or the number
of a character in the font. A zero value for \.{TOP}, \.{MID}, or \.{BOT} means
that the corresponding piece of the extensible character is absent. A nonzero
value, or a \.{REP} value of zero, denotes the character code used to make
@@ -428,8 +428,8 @@ The slashes specify retention of the left or right original character; the
\yskip\hang\.{KRN} (a one-byte value and a real value). The instruction
`\.{(KRN} $c$ $r$\.)' means, ``If the next character is $c$, then insert
-a blank space of width $r$ between the current character character and $c$;
-otherwise go on to the next intruction.'' The value of $r$, which is in
+a blank space of width $r$ between the current character and $c$;
+otherwise go on to the next instruction.'' The value of $r$, which is in
design units, is often negative. Character code $c$ must exist
in the font.
@@ -2013,7 +2013,7 @@ where it is explained further.
@!lig_z:array[0..hash_size] of 0..257;
@!hash_ptr:0..hash_size; {the number of nonzero entries in |hash|}
@!hash_list:array[0..hash_size] of 0..hash_size; {list of those nonzero entries}
-@!h,@!hh:0..hash_size; {indices into the hash table}
+@!h:0..hash_size; {index into the hash table}
@!tt:indx; {temporary register}
@!x_lig_cycle,@!y_lig_cycle:0..256; {problematic ligature pair}
diff --git a/Build/source/texk/web2c/pooltype.web b/Build/source/texk/web2c/pooltype.web
index a7f7617abfb..605063459c9 100644
--- a/Build/source/texk/web2c/pooltype.web
+++ b/Build/source/texk/web2c/pooltype.web
@@ -16,7 +16,7 @@
\def\title{POOL\lowercase{type}}
\def\contentspagenumber{101}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont POOLtype} processor}
@@ -69,7 +69,7 @@ procedure initialize; {this procedure gets things started properly}
(The following material is copied verbatim from \TeX82.
Thus, the same system-dependent changes should be made to both programs.)
-In order to make \TeX\ readily portable between a wide variety of
+In order to make \TeX\ readily portable to a wide variety of
computers, all of its input text is converted to an internal eight-bit
code that includes standard ASCII, the ``American Standard Code for
Information Interchange.'' This conversion is done immediately when each
@@ -87,7 +87,7 @@ know what the real position is; the program that does the actual printing from
a particular font encoding.
@^ASCII code@>
-\TeX's internal code is relevant also with respect to constants
+\TeX's internal code also defines the value of constants
that begin with a reverse apostrophe; and it provides an index to the
\.{\\catcode}, \.{\\mathcode}, \.{\\uccode}, \.{\\lccode}, and \.{\\delcode}
tables.
@@ -367,7 +367,7 @@ extended character set recommended in {\sl The \TeX book\/} would, for
example, be `|k in [0,@'10..@'12,@'14,@'15,@'33,@'177..@'377]|'.
If character |k| cannot be printed, and |k<@'200|, then character |k+@'100| or
|k-@'100| must be printable; moreover, ASCII codes |[@'41..@'46,
-@'60..@'71, @'141..@'146, @'160..@'171]| must be printable.
+@'60..@'71, @'136, @'141..@'146, @'160..@'171]| must be printable.
Thus, at least 80 printable characters are needed.
@:TeXbook}{\sl The \TeX book@>
@^character set dependencies@>
diff --git a/Build/source/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch
index 401efff0700..c50d70db518 100644
--- a/Build/source/texk/web2c/ptexdir/ptex-base.ch
+++ b/Build/source/texk/web2c/ptexdir/ptex-base.ch
@@ -79,7 +79,7 @@
@d pTeX_revision==".3"
@d pTeX_version_string=='-p3.8.3' {current \pTeX\ version}
@#
-@d pTeX_banner=='This is pTeX, Version 3.14159265',pTeX_version_string
+@d pTeX_banner=='This is pTeX, Version 3.141592653',pTeX_version_string
@d pTeX_banner_k==pTeX_banner
{printed when \pTeX\ starts}
@#
@@ -793,7 +793,7 @@ kern_node,math_node,penalty_node: begin r:=get_node(small_node_size);
@d hskip=26 {horizontal glue ( \.{\\hskip}, \.{\\hfil}, etc.~)}
@d vskip=27 {vertical glue ( \.{\\vskip}, \.{\\vfil}, etc.~)}
@d mskip=28 {math glue ( \.{\\mskip} )}
-@d kern=29 {fixed space ( \.{\\kern})}
+@d kern=29 {fixed space ( \.{\\kern} )}
@d mkern=30 {math kern ( \.{\\mkern} )}
@d leader_ship=31 {use a box ( \.{\\shipout}, \.{\\leaders}, etc.~)}
@d halign=32 {horizontal table alignment ( \.{\\halign} )}
@@ -804,7 +804,7 @@ kern_node,math_node,penalty_node: begin r:=get_node(small_node_size);
@d hskip=remove_item+1 {horizontal glue ( \.{\\hskip}, \.{\\hfil}, etc.~)}
@d vskip=hskip+1 {vertical glue ( \.{\\vskip}, \.{\\vfil}, etc.~)}
@d mskip=vskip+1 {math glue ( \.{\\mskip} )}
-@d kern=mskip+1 {fixed space ( \.{\\kern})}
+@d kern=mskip+1 {fixed space ( \.{\\kern} )}
@d mkern=kern+1 {math kern ( \.{\\mkern} )}
@d leader_ship=mkern+1 {use a box ( \.{\\shipout}, \.{\\leaders}, etc.~)}
@d halign=leader_ship+1 {horizontal table alignment ( \.{\\halign} )}
@@ -3357,10 +3357,20 @@ endcases;
@z
@x [33.647] l.13515 - pTeX: cur_kanji_skip, cur_xkanji_skip, last_disp
-@< Glob...@>=
+@ If the global variable |adjust_tail| is non-null, the |hpack| routine
+also removes all occurrences of |ins_node|, |mark_node|, and |adjust_node|
+items and appends the resulting material onto the list that ends at
+location |adjust_tail|.
+
+@<Glob...@>=
@!adjust_tail:pointer; {tail of adjustment list}
@y
-@< Glob...@>=
+@ If the global variable |adjust_tail| is non-null, the |hpack| routine
+also removes all occurrences of |ins_node|, |mark_node|, and |adjust_node|
+items and appends the resulting material onto the list that ends at
+location |adjust_tail|.
+
+@<Glob...@>=
@!adjust_tail:pointer; {tail of adjustment list}
@!last_disp:scaled; {displacement at end of list}
@!cur_kanji_skip:pointer;
@@ -3754,7 +3764,7 @@ else begin if (qo(cur_c)>=font_bc[cur_f])and(qo(cur_c)<=font_ec[cur_f]) then
else cur_i:=null_character;
if not(char_exists(cur_i)) then
begin char_warning(cur_f,qo(cur_c));
- math_type(a):=empty;
+ math_type(a):=empty; cur_i:=null_character;
end;
end;
@y
@@ -3765,7 +3775,7 @@ else begin if font_dir[cur_f]<>dir_default then
else cur_i:=null_character;
if not(char_exists(cur_i)) then
begin char_warning(cur_f,qo(cur_c));
- math_type(a):=empty;
+ math_type(a):=empty; cur_i:=null_character;
end;
end;
@z
@@ -6186,18 +6196,18 @@ if (t<cs_token_flag+single_base)and(not check_kanji(t)) then
@z
@x [49.1291] l.24467 - pTeX: show_mode
-@d show_lists=3 { \.{\\showlists} }
+@d show_lists_code=3 { \.{\\showlists} }
@y
-@d show_lists=3 { \.{\\showlists} }
+@d show_lists_code=3 { \.{\\showlists} }
@d show_mode=4 { \.{\\showmode} }
@z
@x [49.1291] l.24476 - pTeX: show_mode
-primitive("showlists",xray,show_lists);
-@!@:show_lists_}{\.{\\showlists} primitive@>
+primitive("showlists",xray,show_lists_code);
+@!@:show_lists_code_}{\.{\\showlists} primitive@>
@y
-primitive("showlists",xray,show_lists);
-@!@:show_lists_}{\.{\\showlists} primitive@>
+primitive("showlists",xray,show_lists_code);
+@!@:show_lists_code_}{\.{\\showlists} primitive@>
primitive("showmode",xray,show_mode);
@!@:show_mode_}{\.{\\showmode} primitive@>
@z
diff --git a/Build/source/texk/web2c/ptexdir/ptexextra.h b/Build/source/texk/web2c/ptexdir/ptexextra.h
index 63539c55666..9dd5be78e24 100644
--- a/Build/source/texk/web2c/ptexdir/ptexextra.h
+++ b/Build/source/texk/web2c/ptexdir/ptexextra.h
@@ -5,7 +5,7 @@
#include <ptexdir/ptex_version.h> /* for PTEX_VERSION */
-#define BANNER "This is pTeX, Version 3.14159265-" PTEX_VERSION
+#define BANNER "This is pTeX, Version 3.141592653-" PTEX_VERSION
#define COPYRIGHT_HOLDER "D.E. Knuth"
#define AUTHOR NULL
#define PROGRAM_HELP PTEXHELP
diff --git a/Build/source/texk/web2c/ptexdir/ptrip/ptrip.diffs b/Build/source/texk/web2c/ptexdir/ptrip/ptrip.diffs
index a94d85a869e..b38622a92cd 100644
--- a/Build/source/texk/web2c/ptexdir/ptrip/ptrip.diffs
+++ b/Build/source/texk/web2c/ptexdir/ptrip/ptrip.diffs
@@ -1,295 +1,575 @@
+#! /bin/sh -vx
+# $Id: ptriptest.test 48633 2018-09-09 17:56:55Z karl $
+# Copyright 2017-2018 Karl Berry <tex-live@tug.org>
+# Copyright 2010-2014 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
++ LC_ALL=C
++ export LC_ALL
++ LANGUAGE=C
++ export LANGUAGE
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+ptestdir=$abs_srcdir/ptexdir/ptrip
++ ptestdir=SRCDIR/ptexdir/ptrip
+
+TEXMFCNF=$ptestdir; export TEXMFCNF
++ TEXMFCNF=SRCDIR/ptexdir/ptrip
++ export TEXMFCNF
+
+rm -rf ptripdir
++ rm -rf ptripdir
+mkdir ptripdir
++ mkdir ptripdir
+cd ptripdir
++ cd ptripdir
+
+dvitype_args="-output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*'"
++ dvitype_args='-output-level=2 -dpi=72.27 -page-start='\''*.*.*.*.*.*.*.*.*.*'\'''
+
+echo ">>> Running TRIP test for pTeX." >&2
++ echo '>>> Running TRIP test for pTeX.'
>>> Running TRIP test for pTeX.
+echo ">>> See $ptestdir/ptrip.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/ptexdir/ptrip/ptrip.diffs for example of acceptable diffs.'
>>> See SRCDIR/ptexdir/ptrip/ptrip.diffs for example of acceptable diffs.
+
+# pTeX outputs direction of boxes.
+P_SED1='s/, yoko direction//;s/yoko direction, //'
++ P_SED1='s/, yoko direction//;s/yoko direction, //'
+P_SED2='s/yoko(math) direction, //'
++ P_SED2='s/yoko(math) direction, //'
+
+is_OK=:
++ is_OK=:
+
+set -x
++ set -x
+
+echo "*** TRIP test for pTeX ***."
+ echo '*** TRIP test for pTeX ***.'
*** TRIP test for pTeX ***.
+
+./pltotf $testdir/trip.pl trip.tfm || exit 1
+ ./pltotf SRCDIR/triptrap/trip.pl trip.tfm
+
+./tftopl ./trip.tfm trip.pl || exit 1
+ ./tftopl ./trip.tfm trip.pl
+
+diff $testdir/trip.pl trip.pl || is_OK=false
+ diff SRCDIR/triptrap/trip.pl trip.pl
+
+# get same filename in log
+$LN_S $testdir/trip.tex .
+ ln -s SRCDIR/triptrap/trip.tex .
+
+rm -f trip.log
+ rm -f trip.log
+./ptex --progname=pinitex --ini <$testdir/trip1.in >ptripin.fot
+ ./ptex --progname=pinitex --ini
+if test ! -s trip.fmt; then
+ echo "*** trip.fmt not created by trip1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trip.fmt
+sed "$P_SED1" trip.log > ptripin.log || exit 1
+ sed 's/, yoko direction//;s/yoko direction, //' trip.log
+diff $testdir/tripin.log ptripin.log
+ diff SRCDIR/triptrap/tripin.log ptripin.log
1c1
-< This is TeX, Version 3.14159265 (INITEX) 7 JAN 2014 09:09
+< This is TeX, Version 3.141592653 (INITEX) 4 JUL 1776 12:00
---
-> This is pTeX, Version 3.14159265-p3.6 (utf8.euc) (TeX Live 2015) (INITEX) 12 APR 2015 16:22
+> This is pTeX, Version 3.141592653-p3.8.3 (utf8.euc) (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:03
3c3
< (trip.tex
---
> (./trip.tex
-9c9
-< A character number must be between 0 and 255.
----
-> A character number must be between 0 and 255, or KANJI code.
91c91,92
< ### horizontal mode entered at line 77 (language255:hyphenmin1,63)
---
> ### horizontal mode entered at line 77 (language255:hyph
> enmin1,63)
-450,453c451,454
-< (preloaded format=trip 2014.1.7)
-< 1326 strings of total length 23646
+93a95
+> \displace 0.0
+95a98
+> \displace 0.0
+368a372
+> ....\displace 0.0
+370a375
+> ....\displace 0.0
+437,438d441
+< ....\rip 6 (ligature )
+< ....\rip 7 (ligature )
+450,453c453,456
+< (preloaded format=trip 1776.7.4)
+< 1326 strings of total length 23633
< 471 memory locations dumped; current usage is 96&278
< 341 multiletter control sequences
---
-> (preloaded format=trip 2015.4.12)
-> 1451 strings of total length 25481
-> 485 memory locations dumped; current usage is 106&278
-> 377 multiletter control sequences
-461c462
+> (preloaded format=trip 2021.1.27)
+> 1476 strings of total length 26143
+> 487 memory locations dumped; current usage is 108&278
+> 387 multiletter control sequences
+461c464
< Hyphenation trie of length 273 has 9 ops out of 500
---
> Hyphenation trie of length 273 has 9 ops out of 35111
+
+# May as well test non-ini second time through.
+rm -f trip.log
+ rm -f trip.log
+./ptex --progname=ptex <$testdir/trip2.in >ptrip.fot
+ ./ptex --progname=ptex
+sed "$P_SED1;$P_SED2" trip.log > ptrip.log
+ sed 's/, yoko direction//;s/yoko direction, //;s/yoko(math) direction, //' trip.log
+diff $testdir/trip.fot ptrip.fot
+ diff SRCDIR/triptrap/trip.fot ptrip.fot
1,3c1,2
-< This is TeX, Version 3.14159265 (INITEX)
+< This is TeX, Version 3.141592653 (INITEX)
< ** &trip trip
< (trip.tex ##
---
-> This is pTeX, Version 3.14159265-p3.6 (utf8.euc) (TeX Live 2015) (preloaded format=ptex)
+> This is pTeX, Version 3.141592653-p3.8.3 (utf8.euc) (TeX Live 2021/dev) (preloaded format=ptex)
> **(./trip.tex ##
17c16
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 190&313; after: 114&278; still untouched: 3113
+> Memory usage before: 192&313; after: 116&278; still untouched: 3113
75c74
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 452&431; after: 390&418; still untouched: 241
+> Memory usage before: 458&431; after: 396&418; still untouched: 484
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $testdir/trip.log ptrip.log
+ diff SRCDIR/triptrap/trip.log ptrip.log
1c1
-< This is TeX, Version 3.14159265 (preloaded format=trip 2014.1.7) 7 JAN 2014 09:59
+< This is TeX, Version 3.141592653 (preloaded format=trip 1776.7.4) 4 JUL 1776 12:00
---
-> This is pTeX, Version 3.14159265-p3.6 (utf8.euc) (TeX Live 2015) (preloaded format=trip 2015.4.12) 12 APR 2015 16:22
+> This is pTeX, Version 3.141592653-p3.8.3 (utf8.euc) (TeX Live 2021/dev) (preloaded format=trip 2021.1.27) 27 JAN 2021 18:03
3c3
< (trip.tex ##
---
> (./trip.tex ##
-58a59,62
-> \openout0 = `8terminal.tex'.
->
-> \openout10 = `tripos.tex'.
->
-73c77
+73c73
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 190&313; after: 114&278; still untouched: 3113
-385,386c389,390
+> Memory usage before: 192&313; after: 116&278; still untouched: 3113
+113a114
+> .\displace 0.0
+198a200
+> .\displace 0.0
+253a256
+> .\displace 0.0
+308a312
+> .\displace 0.0
+349a354
+> .\displace 0.0
+385,386c390,391
< \insert100, natural size 803.09999; split(1.0 plus 43.0,-2.0); float cos
< t 100
---
> \insert100Y, natural size 803.09999; split(1.0 plus 43.0,-2.0); float co
> st 100
-426c430
+406a412
+> ....\displace 0.0
+409a416
+> ....\displace 0.0
+412a420
+> ....\displace 0.0
+420a429
+> .\displace 0.0
+426c435
< \insert200, natural size 400.0; split(0.0,-2.0); float cost 100
---
> \insert200Y, natural size 400.0; split(0.0,-2.0); float cost 100
-441c445
+435a445
+> .\displace 0.0
+441c451
< \insert200, natural size 400.0; split(1.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(1.0,-1.0); float cost 100
-456c460
+450a461
+> .\displace 0.0
+456c467
< \insert200, natural size 400.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(2.0,-1.0); float cost 100
-483,484c487,488
+466a478
+> .\displace 0.0
+483,484c495,496
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-642c646
+588a601
+> .....\displace 0.0
+591a605
+> .....\displace 0.0
+594a609
+> .....\displace 0.0
+630a646
+> ......\displace 0.0
+633a650
+> ......\displace 0.0
+636a654
+> ......\displace 0.0
+642c660
< Memory usage before: 747&484; after: 581&481; still untouched: 1492
---
-> Memory usage before: 1086&483; after: 838&480; still untouched: 1993
-647c651,652
+> Memory usage before: 1114&483; after: 860&480; still untouched: 1993
+647c665,666
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-693,694c698,699
+650a670
+> .\displace 0.0
+660a681
+> .\displace 0.0
+670a692
+> .\displace 0.0
+681a704
+> .\displace 0.0
+693,694c716,717
< \insert100, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 10
< 0
---
> \insert100Y, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 1
> 00
-701c706
+701c724
< \insert200, natural size 2.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 2.0; split(2.0,-1.0); float cost 100
-714,715c719,720
+714,715c737,738
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-815c820
+815c838
< Memory usage before: 475&470; after: 290&466; still untouched: 1473
---
-> Memory usage before: 690&469; after: 406&465; still untouched: 1974
-820c825,826
+> Memory usage before: 706&469; after: 414&465; still untouched: 1974
+820c843,844
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-915c921
+915c939
< Memory usage before: 218&459; after: 149&458; still untouched: 1473
---
> Memory usage before: 304&458; after: 194&457; still untouched: 1974
-920c926,927
+920c944,945
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-1070c1077
+1070c1095
< Memory usage before: 118&328; after: 102&328; still untouched: 1473
---
> Memory usage before: 146&327; after: 122&327; still untouched: 1974
-1405c1412
+1405c1430
< \vbox(16383.99998+0.0)x1000.0, glue set 16342.0fil
---
> \vbox(16383.99998+0.0)x1000.0, glue set 16341.99998fil
-1504a1512
+1493a1519
+> ..\displace 0.0
+1503a1530
> ..\displace 0.0
-1511c1519
+1504a1532
+> ..\displace 0.0
+1511c1539
< Memory usage before: 990&376; after: 584&370; still untouched: 735
---
-> Memory usage before: 1486&375; after: 838&369; still untouched: 1974
-1954c1962
+> Memory usage before: 1494&375; after: 842&369; still untouched: 1974
+1887c1915
+< .\rip A
+---
+> .\displace 0.0
+1923c1951
+< .\hbox(0.0+0.0)x120.0 []
+---
+> .\hbox(0.0+0.0)x120.0, yoko(math) direction []
+1954c1982
< (tripos.tex
---
> (./tripos.tex
-2018c2026
+2018c2046
< \vbox(16383.99998+1.0)x100.0, glue set 16239.0fil
---
> \vbox(16383.99998+1.0)x100.0, glue set 16238.99998fil
-2189c2197
+2022a2051
+> ..\displace 0.0
+2058a2088
+> ..\displace 0.0
+2071a2102
+> ..\displace 0.0
+2092a2124
+> ..\displace 0.0
+2113a2146
+> ..\displace 0.0
+2123a2157
+> ..\displace 0.0
+2142a2177
+> ..\displace 0.0
+2150a2186
+> ..\displace 0.0
+2171c2207,2208
+< ..\hbox(0.0+0.0)x120.0
+---
+> ..\hbox(0.0+0.0)x120.0, yoko(math) direction
+> ...\displace 0.0
+2189c2226
< Memory usage before: 950&531; after: 546&448; still untouched: 706
---
-> Memory usage before: 1454&530; after: 804&447; still untouched: 1945
-2397c2405
+> Memory usage before: 1490&530; after: 822&447; still untouched: 1945
+2397c2434
< ! Improper alphabetic constant.
---
> ! Improper alphabetic or KANJI constant.
-2533c2541
+2533c2570
< \vbox(16383.99998+0.0)x20.0, glue set 16331.0fil
---
> \vbox(16383.99998+0.0)x20.0, glue set 16330.99998fil
-2575c2583
+2544a2582
+> ..\displace 0.0
+2570c2608,2609
+< .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0
+---
+> .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0, yoko(math) direction
+>
+2572c2611
+< ..\hbox(0.0+0.0)x0.0
+---
+> ..\hbox(0.0+0.0)x0.0, yoko(math) direction
+2575c2614
< Memory usage before: 339&413; after: 236&405; still untouched: 706
---
-> Memory usage before: 489&411; after: 323&403; still untouched: 1945
-3051c3059
+> Memory usage before: 493&411; after: 325&403; still untouched: 1945
+2650,2651c2689,2690
+< Dimensions can be in units of em, ex, in, pt, pc,
+< cm, mm, dd, cc, bp, or sp; but yours is a new one!
+---
+> Dimensions can be in units of em, ex, zw, zh, in, pt, pc,
+> cm, mm, dd, cc, bp, H, Q, or sp; but yours is a new one!
+3038c3077,3078
+< ^\hbox(7.0+1.0)x2.0
+---
+> ^\hbox(7.0+1.0)x2.0, yoko(math) direction
+> ^.\displace 0.0
+3051c3091
< \insert0, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
---
> \insert0Y, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
-3054c3062
+3054c3094
< .\fam0 ^^c8
---
> .\fam0 È
-3143a3152
+3056c3096
+< .\vbox(-2.0+0.0)x0.0
+---
+> .\vbox(-2.0+0.0)x0.0, yoko(math) direction
+3060c3100,3101
+< ^.\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ^.\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> ^..\displace 0.0
+3140a3182
+> .....\displace 0.0
+3142a3185
+> ....|\displace 0.0
+3143a3187
> ....\displace 0.0
-3235c3244
+3151a3196
+> .\displace 0.0
+3235c3280
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-3326c3335
+3286c3331
+< .\vbox(6.0+-8.0)x0.0
+---
+> .\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3326c3371
< \vbox(10000.0+2.0)x28.0, glue set 9737.58789fil
---
> \vbox(10000.0+2.0)x28.0, glue set 9737.58742fil
-3547a3557
+3329a3375
+> ..\displace 0.0
+3374c3420
+< ..\vbox(6.0+-8.0)x0.0
+---
+> ..\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3385c3431,3432
+< ......\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ......\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> .......\displace 0.0
+3544a3592
+> ..........\displace 0.0
+3546a3595
+> .........|\displace 0.0
+3547a3597
> .........\displace 0.0
-3616c3626
+3564c3614,3615
+< ...\hbox(7.0+1.0)x1.99
+---
+> ...\hbox(7.0+1.0)x1.99, yoko(math) direction
+> ....\displace 0.0
+3616c3667
< Memory usage before: 2170&521; after: 1181&459; still untouched: 175
---
-> Memory usage before: 3259&519; after: 1739&457; still untouched: 241
-3864c3874
+> Memory usage before: 3279&519; after: 1749&457; still untouched: 484
+3864c3915
< \vbox(16383.99998+2.0)x100.0, glue set 16318.0fil
---
> \vbox(16383.99998+2.0)x100.0, glue set 16317.99997fil
-3951c3961
+3919,3920c3970,3972
+< ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247
+< ....\vbox(-0.00002+0.0)x0.0
+---
+> ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247, yoko(math) directi
+> on
+> ....\vbox(-0.00002+0.0)x0.0, yoko(math) direction
+3951c4003
< Memory usage before: 640&415; after: 397&410; still untouched: 175
---
-> Memory usage before: 955&413; after: 569&408; still untouched: 241
-4034c4044
+> Memory usage before: 955&413; after: 569&408; still untouched: 484
+4034c4086
< \vbox(16383.99998+0.0)x8236.0, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x8236.0, glue set 16343.99998fil
-4053c4063
+4053c4105
< Memory usage before: 235&401; after: 178&399; still untouched: 175
---
-> Memory usage before: 338&399; after: 244&397; still untouched: 241
-4420c4430
+> Memory usage before: 338&399; after: 244&397; still untouched: 484
+4420c4472
< \vbox(16383.99998+0.0)x100.0, glue set 16332.0fil
---
> \vbox(16383.99998+0.0)x100.0, glue set 16331.99998fil
-4506c4516
+4425a4478
+> ...\displace 0.0
+4447a4501
+> ...\displace 0.0
+4475a4530
+> ...\displace 0.0
+4492a4548
+> ...\displace 0.0
+4506c4562
< Memory usage before: 651&432; after: 417&418; still untouched: 175
---
-> Memory usage before: 988&431; after: 594&417; still untouched: 241
-4742c4752,4753
+> Memory usage before: 1004&431; after: 602&417; still untouched: 484
+4742c4798,4799
< \vbox(16383.99998+0.0)x205.12613, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x205.12613, glue set 16343.99998fil, yoko directio
> n
-4828c4839
+4746a4804
+> ...\displace 0.0
+4762a4821
+> .....\displace 0.0
+4777a4837
+> ......\displace 0.0
+4828c4888
< Memory usage before: 776&458; after: 464&452; still untouched: 175
---
-> Memory usage before: 1170&457; after: 672&451; still untouched: 241
-5700c5711
+> Memory usage before: 1182&457; after: 678&451; still untouched: 484
+5701c5761
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-6380c6391
+6381c6441
< (tripos.tex
---
> (./tripos.tex
-6501c6512
+6502c6562
< l.429 ...^^M=13 \def^^M{\relax}#
---
> l.429 ...^^M=13 \defqqM{\relax}#
-6595c6606
+6596c6656
< Memory usage before: 819&428; after: 720&426; still untouched: 175
---
-> Memory usage before: 1216&428; after: 1066&426; still untouched: 241
-7155c7166
+> Memory usage before: 1228&428; after: 1074&426; still untouched: 484
+6853c6913
+< .|vbox(0.0+0.0)x0.0
+---
+> .|vbox(0.0+0.0)x0.0, yoko(math) direction
+6876a6937
+> ..|displace 0.0
+6891a6953
+> ..|displace 0.0
+6926a6989
+> .|displace 0.0
+6959a7023
+> .|displace 0.0
+6961c7025,7026
+< .|hbox(0.0+0.0)x0.0
+---
+> .|hbox(0.0+0.0)x0.0, yoko(math) direction
+> ..|displace 0.0
+6991a7057
+> .|displace 0.0
+7103a7170
+> ...|displace 0.0
+7108d7174
+< ...|ip A (ligature BB)
+7116a7183
+> ...|displace 0.0
+7125d7191
+< ...|kern2.0
+7126a7193
+> .|displace 0.0
+7136c7203
+< ...|vbox(0.0+0.0)x0.0
+---
+> ...|vbox(0.0+0.0)x0.0, yoko(math) direction
+7156c7223
< Memory usage before: 895&439; after: 290&420; still untouched: 175
---
-> Memory usage before: 1332&439; after: 388&420; still untouched: 241
-7288c7299
+> Memory usage before: 1346&439; after: 394&420; still untouched: 484
+7289c7356
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 452&431; after: 390&418; still untouched: 241
-7296,7299c7307,7310
+> Memory usage before: 458&431; after: 396&418; still untouched: 484
+7297,7300c7364,7367
< 47 strings out of 1674
-< 253 string characters out of 8354
+< 253 string characters out of 8367
< 2825 words of memory out of 3000
< 372 multiletter control sequences out of 2100
---
-> 44 strings out of 1549
-> 261 string characters out of 14519
-> 4259 words of memory out of 4500
-> 408 multiletter control sequences out of 15000+0
-7301c7312
+> 44 strings out of 1524
+> 261 string characters out of 13857
+> 4016 words of memory out of 4500
+> 418 multiletter control sequences out of 15000+0
+7302c7369
< 2 hyphenation exceptions out of 307
---
> 1 hyphenation exception out of 659
+
+mv tripos.tex ptripos.tex
++ mv tripos.tex ptripos.tex
+diff $testdir/tripos.tex ptripos.tex || is_OK=false
++ diff SRCDIR/triptrap/tripos.tex ptripos.tex
+
+eval ./dvitype $dvitype_args trip.dvi >ptrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' trip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' trip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' trip.dvi
+$DIFF $DIFFFLAGS $testdir/trip.typ ptrip.typ
+ diff SRCDIR/triptrap/trip.typ ptrip.typ
1c1
< This is DVItype, Version 3.6
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
-< ' TeX output 2014.01.07:0959'
+< ' TeX output 1776.07.04:1200'
---
-> ' TeX output 2015.04.12:1622'
+> ' TeX output 2021.01.27:1803'
419c419
< 1121: down4 639342208
---
@@ -300,5 +580,12 @@
---
> 2535: y4 203921756
> 2540: y0 203921756
+
+$is_OK || {
+ echo ">>> There were some errors." >&2
+ exit 1
+}
+ :
-PASS: ptexdir/ptriptest
+
+PASS ptexdir/ptriptest.test (exit status: 0)
+PASS: ptexdir/ptriptest.test
diff --git a/Build/source/texk/web2c/tangle.ch b/Build/source/texk/web2c/tangle.ch
index 34c187129cf..2cc624136c2 100644
--- a/Build/source/texk/web2c/tangle.ch
+++ b/Build/source/texk/web2c/tangle.ch
@@ -45,10 +45,10 @@
@z
@x [1] Define my_name
-@d banner=='This is TANGLE, Version 4.5'
+@d banner=='This is TANGLE, Version 4.6'
@y
@d my_name=='tangle'
-@d banner=='This is TANGLE, Version 4.5'
+@d banner=='This is TANGLE, Version 4.6'
@z
@x [2] Eliminate the |end_of_TANGLE| label.
@@ -85,7 +85,7 @@ procedure initialize;
@x
@!max_bytes=45000; {|1/ww| times the number of bytes in identifiers,
strings, and module names; must be less than 65536}
-@!max_toks=50000; {|1/zz| times the number of bytes in compressed \PASCAL\ code;
+@!max_toks=65000; {|1/zz| times the number of bytes in compressed \PASCAL\ code;
must be less than 65536}
@!max_names=4000; {number of identifiers, strings, module names;
must be less than 10240}
@@ -551,15 +551,15 @@ equiv[p]:=accumulator+@'10000000000; {name |p| now is defined to equal |accumula
@z
@x [173] Add parametric2 macros (macros that use [] to delimit arguments).
- else @<If the next text is `|(#)==|', call |define_macro|
+ else @<If the next text is `\.{(\#)==}', call |define_macro|
and |goto continue|@>;
@y
- else @<If the next text is `|(#)==|' or |[#]==|, call |define_macro|
+ else @<If the next text is `\.{(\#)==}' or `\.{[\#]==}', call |define_macro|
and |goto continue|@>;
@z
@x [174] Add parametric2 macros (macros that use [] to delimit arguments).
-@ @<If the next text is `|(#)==|'...@>=
+@ @<If the next text is `\.{(\#)==}'...@>=
if next_control="(" then
begin next_control:=get_next;
if next_control="#" then
@@ -578,7 +578,7 @@ if next_control="(" then
end;
end;
@y
-@ @<If the next text is `|(#)==|'...@>=
+@ @<If the next text is `\.{(\#)==}'...@>=
if next_control="(" then
begin next_control:=get_next;
if next_control="#" then
diff --git a/Build/source/texk/web2c/tangle.web b/Build/source/texk/web2c/tangle.web
index 8fa1c395f06..d20bbd85928 100644
--- a/Build/source/texk/web2c/tangle.web
+++ b/Build/source/texk/web2c/tangle.web
@@ -19,6 +19,7 @@
% Version 4.3 fixes @@ bug in verbatim, catches extra } (September, 1991).
% Version 4.4 activates debug_help on errors as advertised (February, 1993).
% Version 4.5 prevents modno-comments from being split across lines (Dec 2002).
+% Version 4.6 fixes archaic @@z logic; is again big enough for TeX (Jan 2021).
% Here is TeX material that gets inserted after \input webmac
\def\hang{\hangindent 3em\indent\ignorespaces}
@@ -31,13 +32,13 @@
\def\({} % kludge for alphabetizing certain module names
\def\title{TANGLE}
-\def\contentspagenumber{123} % should be odd
+\def\contentspagenumber{125} % should be odd
\def\topofcontents{\null\vfill
\titlefalse % include headline on the contents page
\def\rheader{\mainfont Appendix E\hfil \contentspagenumber}
\centerline{\titlefont The {\ttitlefont TANGLE} processor}
\vskip 15pt
- \centerline{(Version 4.5)}
+ \centerline{(Version 4.6)}
\vfill}
\pageno=\contentspagenumber \advance\pageno by 1
@@ -66,7 +67,7 @@ dependencies' in the index below.
The ``banner line'' defined here should be changed whenever \.{TANGLE}
is modified.
-@d banner=='This is TANGLE, Version 4.5'
+@d banner=='This is TANGLE, Version 4.6'
@ The program begins with a fairly normal header, made up of pieces that
@^system dependencies@>
@@ -182,7 +183,7 @@ should be sufficient for most applications of \.{TANGLE}.
@!buf_size=100; {maximum length of input line}
@!max_bytes=45000; {|1/ww| times the number of bytes in identifiers,
strings, and module names; must be less than 65536}
-@!max_toks=50000; {|1/zz| times the number of bytes in compressed \PASCAL\ code;
+@!max_toks=65000; {|1/zz| times the number of bytes in compressed \PASCAL\ code;
must be less than 65536}
@!max_names=4000; {number of identifiers, strings, module names;
must be less than 10240}
@@ -732,7 +733,7 @@ there are programs that need more than 65536 tokens, and some programs
even need more than 65536 bytes; \TeX\ is one of these. To get around
this problem, a slight complication has been added to the data structures:
|byte_mem| and |tok_mem| are two-dimensional arrays, whose first index is
-either 0 or 1. (For generality, the first index is actually allowed to run
+either 0 or 1 or 2. (For generality, the first index is actually allowed to run
between 0 and |ww-1| in |byte_mem|, or between 0 and |zz-1| in |tok_mem|,
where |ww| and |zz| are set to 2 and~3; the program will work for any
positive values of |ww| and |zz|, and it can be simplified in obvious ways
@@ -875,7 +876,7 @@ like simple identifiers, their |equiv| value points to the replacement text.
@ The names of modules are stored in |byte_mem| together
with the identifier names, but a hash table is not used for them because
\.{TANGLE} needs to be able to recognize a module name when given a prefix of
-that name. A conventional binary seach tree is used to retrieve module names,
+that name. A conventional binary search tree is used to retrieve module names,
with fields called |llink| and |rlink| in place of |link| and |ilk|. The
root of this tree is |rlink[0]|. If |p| is a pointer to a module name,
|equiv[p]| points to its replacement text, just as in simple and parametric
@@ -977,7 +978,7 @@ id_lookup:=p;
end;
@ A simple hash code is used: If the sequence of
-ASCII codes is $c_1c_2\ldots c_m$, its hash value will be
+ASCII codes is $c_1c_2\ldots c_n$, its hash value will be
$$(2^{n-1}c_1+2^{n-2}c_2+\cdots+c_n)\,\bmod\,|hash_size|.$$
@<Compute the hash...@>=
@@ -1311,7 +1312,7 @@ space or line breaks allowed between them (the \.{@@\&} operation of \.{WEB}).
\hang |double_dot| denotes `\.{..}' in \PASCAL.
\hang |verbatim| denotes the \.{@@=} that begins a verbatim \PASCAL\ string.
-It is also used for the end of the string.
+The \.{@@>} at the end of such a string is also denoted by |verbatim|.
\hang |force_line| denotes the \.{@@\\} that forces a new line in the
\PASCAL\ output.
@@ -1758,11 +1759,11 @@ output&|out_buf|&|out_state|&|out_sign|&|out_val|&|out_app|&|last_sign|\cr
(&\.(&|misc|\cr
x&\.{(x}&|num_or_id|\cr
-&\.{(x}&|sign|&&&$-1$&$-1$\cr
-15&\.{(x}&|sign_val|&\.{"+"}&$-15$&&$-15$\cr
+15&\.{(x}&|sign_val|&\.{"+"}&$-15$&&$-1$\cr
+&\.{(x}&|sign_val_sign|&\.{"+"}&$-15$&$+1$&$+1$\cr
19&\.{(x}&|sign_val_val|&\.{"+"}&$-15$&$+19$&$+1$\cr
-&\.{(x}&|sign_val_sign|&\.{"+"}&$+4$&$-1$&$-1$\cr
-2&\.{(x}&|sign_val_val|&\.{"+"}&$+4$&$-2$&$-2$\cr
+2&\.{(x}&|sign_val_val|&\.{"+"}&$+4$&$-2$&$-1$\cr
)&\.{(x+2)}&|misc|\cr}}$$
At each stage we have put as much into the buffer as possible without
knowing what is coming next. Examples like `\.{x-0.1}' indicate why
@@ -2474,9 +2475,7 @@ end;
@ @<Read from |web_file|...@>=
begin incr(line);
if not input_ln(web_file) then input_has_ended:=true
-else if limit=change_limit then
- if buffer[0]=change_buffer[0] then
- if change_limit>0 then check_change;
+else if change_limit>0 then check_change;
end
@ @<Read from |change_file|...@>=
@@ -2505,7 +2504,7 @@ had a line that didn't match any relevant line in |web_file|.
@<Check that all changes have been read@>=
if change_limit<>0 then {|changing| is false}
- begin for ii:=0 to change_limit do buffer[ii]:=change_buffer[ii];
+ begin for ii:=0 to change_limit-1 do buffer[ii]:=change_buffer[ii];
limit:=change_limit; changing:=true; line:=other_line; loc:=change_limit;
err_print('! Change file entry did not match');
@.Change file entry did not match@>
@@ -2606,7 +2605,7 @@ exit:end;
@ @<Do special things when |c="@@"...@>=
if c="@@" then
begin c:=buffer[loc];
- if (c<>" ")and(c<>tab_mark)and(c<>"*")and(c<>"z")and(c<>"Z") then incr(loc)
+ if (c<>" ")and(c<>tab_mark)and(c<>"*") then incr(loc)
else begin err_print('! Section ended in mid-comment');
@.Section ended in mid-comment@>
decr(loc); return;
@@ -2827,7 +2826,7 @@ if k>=longest_name-2 then
@* Scanning a numeric definition.
When \.{TANGLE} looks at the \PASCAL\ text following the `\.=' of a numeric
-macro definition, it calls on the precedure |scan_numeric(p)|, where |p|
+macro definition, it calls on the procedure |scan_numeric(p)|, where |p|
points to the name that is to be defined. This procedure evaluates the
right-hand side, which must consist entirely of integer constants and
defined numeric macros connected with \.+ and \.- signs (no parentheses).
@@ -3105,14 +3104,14 @@ loop@+ begin continue: while next_control<=format do
else if next_control=equivalence_sign then
begin define_macro(simple); goto continue;
end
- else @<If the next text is `|(#)==|', call |define_macro|
+ else @<If the next text is `\.{(\#)==}', call |define_macro|
and |goto continue|@>;
err_print('! Definition flushed since it starts badly');
@.Definition flushed...@>
end;
done:
-@ @<If the next text is `|(#)==|'...@>=
+@ @<If the next text is `\.{(\#)==}'...@>=
if next_control="(" then
begin next_control:=get_next;
if next_control="#" then
diff --git a/Build/source/texk/web2c/tangleboot.pin b/Build/source/texk/web2c/tangleboot.pin
index 10a4dc1ddee..36e7da9de93 100644
--- a/Build/source/texk/web2c/tangleboot.pin
+++ b/Build/source/texk/web2c/tangleboot.pin
@@ -102,7 +102,7 @@ end else if getoptreturnval=63 then begin usage('tangle');
end else if(strcmp(longoptions[optionindex].name,'help')=0)then begin
usagehelp(TANGLEHELP,nil);
end else if(strcmp(longoptions[optionindex].name,'version')=0)then begin
-printversionandexit('This is TANGLE, Version 4.5',nil,'D.E. Knuth',nil);
+printversionandexit('This is TANGLE, Version 4.6',nil,'D.E. Knuth',nil);
end else if(strcmp(longoptions[optionindex].name,'mixedcase')=0)then
begin forceuppercase:=false;forcelowercase:=false;
end else if(strcmp(longoptions[optionindex].name,'uppercase')=0)then
@@ -590,9 +590,8 @@ end;end else if buffer[1]=122 then begin primethechangebuffer;
changing:=not changing;templine:=otherline;otherline:=line;
line:=templine;end;end;end{:137};
if not changing then begin{136:}begin line:=line+1;
-if not inputln(webfile)then inputhasended:=true else if limit=
-changelimit then if buffer[0]=changebuffer[0]then if changelimit>0 then
-checkchange;end{:136};if changing then goto 20;end;loc:=0;
+if not inputln(webfile)then inputhasended:=true else if changelimit>0
+then checkchange;end{:136};if changing then goto 20;end;loc:=0;
buffer[limit]:=32;end;
{:135}{139:}function controlcode(c:ASCIIcode):eightbits;
begin case c of 64:controlcode:=64;39:controlcode:=12;
@@ -614,10 +613,9 @@ while true do begin if loc>limit then begin getline;
if inputhasended then begin begin writeln(stdout);
write(stdout,'! Input ended in mid-comment');error;end;goto 10;end;end;
c:=buffer[loc];loc:=loc+1;{142:}if c=64 then begin c:=buffer[loc];
-if(c<>32)and(c<>9)and(c<>42)and(c<>122)and(c<>90)then loc:=loc+1 else
-begin begin writeln(stdout);
-write(stdout,'! Section ended in mid-comment');error;end;loc:=loc-1;
-goto 10;
+if(c<>32)and(c<>9)and(c<>42)then loc:=loc+1 else begin begin writeln(
+stdout);write(stdout,'! Section ended in mid-comment');error;end;
+loc:=loc-1;goto 10;
end end else if(c=92)and(buffer[loc]<>64)then loc:=loc+1 else if c=123
then bal:=bal+1 else if c=125 then begin if bal=0 then goto 10;
bal:=bal-1;end{:142};end;10:end;{:141}{145:}function getnext:eightbits;
@@ -853,12 +851,12 @@ others:write(stdout,'?')end;end;end;10:end;}
changing:=true;primethechangebuffer;changing:=not changing;
templine:=otherline;otherline:=line;line:=templine;limit:=0;loc:=1;
buffer[0]:=32;inputhasended:=false;{:134};
-write(stdout,'This is TANGLE, Version 4.5');
+write(stdout,'This is TANGLE, Version 4.6');
writeln(stdout,versionstring);{183:}phaseone:=true;modulecount:=0;
repeat nextcontrol:=skipahead;until nextcontrol=136;
while not inputhasended do scanmodule;
-{138:}if changelimit<>0 then begin for ii:=0 to changelimit do buffer[ii
-]:=changebuffer[ii];limit:=changelimit;changing:=true;line:=otherline;
+{138:}if changelimit<>0 then begin for ii:=0 to changelimit-1 do buffer[
+ii]:=changebuffer[ii];limit:=changelimit;changing:=true;line:=otherline;
loc:=changelimit;begin writeln(stdout);
write(stdout,'! Change file entry did not match');error;end;end{:138};
phaseone:=false;{:183};{for ii:=0 to 4 do maxtokptr[ii]:=tokptr[ii];}
diff --git a/Build/source/texk/web2c/tex.ch b/Build/source/texk/web2c/tex.ch
index c07f9948e9e..124c79ad40c 100644
--- a/Build/source/texk/web2c/tex.ch
+++ b/Build/source/texk/web2c/tex.ch
@@ -72,10 +72,10 @@ a modified \TeX{} version.
@z
@x [1.2] l.188
-@d banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@y
-@d TeX_banner_k=='This is TeXk, Version 3.14159265' {printed when \TeX\ starts}
-@d TeX_banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d TeX_banner_k=='This is TeXk, Version 3.141592653' {printed when \TeX\ starts}
+@d TeX_banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@#
@d banner==TeX_banner
@d banner_k==TeX_banner_k
@@ -871,25 +871,6 @@ if (halt_on_error_p) then begin
end;
@z
-% Original reports:
-% https://tex.stackexchange.com/questions/551313/
-% https://tug.org/pipermail/tex-live/2020-June/045876.html
-%
-% This will probably be fixed by DEK in the 2021 tuneup in a different
-% way (so we'll have to remove or alter this change), but the interaction
-% sequence in the reports above causes a segmentation fault in web2c -
-% writing to the closed \write15 stream because we wrongly decrement
-% selector from 16 to 15 in term_input, due to the lack of this check in
-% a recursive error() call.
-%
-@x [6.83] l.1893 - avoid wrong interaction
-loop@+begin continue: clear_for_error_prompt; prompt_input("? ");
-@y
-loop@+begin continue:
-if interaction<>error_stop_mode then return;
-clear_for_error_prompt; prompt_input("? ");
-@z
-
@x [6.84] l.1904 - Implement the switch-to-editor option.
line ready to be edited. But such an extension requires some system
wizardry, so the present implementation simply types out the name of the
@@ -916,14 +897,14 @@ been commented~out.
@z
@x [6.84] l.1903 - Implement the switch-to-editor option.
-"E": if base_ptr>0 then
+"E": if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
begin print_nl("You want to edit file ");
@.You want to edit file x@>
slow_print(input_stack[base_ptr].name_field);
print(" at line "); print_int(line);
interaction:=scroll_mode; jump_out;
@y
-"E": if base_ptr>0 then
+"E": if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
begin edit_name_start:=str_start[edit_file.name_field];
edit_name_length:=str_start[edit_file.name_field+1] -
str_start[edit_file.name_field];
@@ -1315,26 +1296,29 @@ char_sub_def_min:=256; char_sub_def_max:=-1;
input and output, establishes the initial values of the date and time.
@^system dependencies@>
Since standard \PASCAL\ cannot provide such information, something special
-is needed. The program here simply specifies July 4, 1776, at noon; but
-users probably want a better approximation to the truth.
+is needed. The program here simply assumes that suitable values appear in
+the global variables \\{sys\_time}, \\{sys\_day}, \\{sys\_month}, and
+\\{sys\_year} (which are initialized to noon on 4 July 1776,
+in case the implementor is careless).
@p procedure fix_date_and_time;
-begin time:=12*60; {minutes since midnight}
-day:=4; {fourth day of the month}
-month:=7; {seventh month of the year}
-year:=1776; {Anno Domini}
-end;
-@y
-@ The following procedure, which is called just before \TeX\ initializes its
-input and output, establishes the initial values of the date and time.
-It calls a macro-defined |date_and_time| routine. |date_and_time|
-in turn is a C macro, which calls |get_date_and_time|, passing
-it the addresses of the day, month, etc., so they can be set by the
-routine. |get_date_and_time| also sets up interrupt catching if that
-is conditionally compiled in the C code.
+begin sys_time:=12*60;
+sys_day:=4; sys_month:=7; sys_year:=1776; {self-evident truths}
+@y
+@ The following procedure, which is called just before \TeX\ initializes
+its input and output, establishes the initial values of the date and
+time. It calls a |date_and_time| C macro (a.k.a.\ |dateandtime|), which
+calls the C function |get_date_and_time|, passing it the addresses of
+|sys_time|, etc., so they can be set by the routine. |get_date_and_time|
+also sets up interrupt catching if that is conditionally compiled in the
+C code.
+
+We have to initialize the |sys_| variables because that is what gets
+output on the first line of the log file. (New in 2021.)
@^system dependencies@>
-@d fix_date_and_time==date_and_time(time,day,month,year)
+@p procedure fix_date_and_time;
+begin date_and_time(sys_time,sys_day,sys_month,sys_year);
@z
@x [17.252] l.5420 - hash_extra
@@ -2141,7 +2125,7 @@ slow_print(full_source_filename_stack[in_open]); update_terminal;
@z
@x [29.537] l.10360 - start_input: don't return filename to string pool.
-if name=str_ptr-1 then {we can conserve string pool space now}
+if name=str_ptr-1 then {conserve string pool space (but see note above)}
begin flush_string; name:=cur_name;
end;
@y
@@ -2184,7 +2168,7 @@ if name=str_ptr-1 then {we can conserve string pool space now}
{start of |lig_kern| program for left boundary character,
|non_address| if there is none}
@!font_bchar:array[internal_font_number] of min_quarterword..non_char;
- {right boundary character, |non_char| if there is none}
+ {boundary character, |non_char| if there is none}
@!font_false_bchar:array[internal_font_number] of min_quarterword..non_char;
{|font_bchar| if it doesn't exist in the font, otherwise |non_char|}
@y
@@ -2215,7 +2199,7 @@ if name=str_ptr-1 then {we can conserve string pool space now}
{start of |lig_kern| program for left boundary character,
|non_address| if there is none}
@!font_bchar: ^nine_bits;
- {right boundary character, |non_char| if there is none}
+ {boundary character, |non_char| if there is none}
@!font_false_bchar: ^nine_bits;
{|font_bchar| if it doesn't exist in the font, otherwise |non_char|}
@z
@@ -2967,9 +2951,9 @@ $$\hbox{|@t$v^\prime$@>:=new_trie_op(0,1,min_trie_op)|,\qquad
@z
@x [43.943] l.18346 - web2c can't parse negative lower bounds in arrays. Sorry.
-@!init@! trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
+@!init @!trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
@y
-@!init@! trie_op_hash:array[neg_trie_op_size..trie_op_size] of 0..trie_op_size;
+@!init @!trie_op_hash:array[neg_trie_op_size..trie_op_size] of 0..trie_op_size;
@z
@x [43.943] l.18348 - bigtrie: Larger hyphenation tries.
@@ -3085,7 +3069,7 @@ tini
@z
@x [43.590] l.18524 - Dynamically allocate & larger tries.
-@!init@!trie_taken:packed array[1..trie_size] of boolean;
+@!init @!trie_taken:packed array[1..trie_size] of boolean;
{does a family start here?}
@t\hskip10pt@>@!trie_min:array[ASCII_code] of trie_pointer;
{the first possible slot for each character}
@@ -3093,7 +3077,7 @@ tini
@t\hskip10pt@>@!trie_not_ready:boolean; {is the trie still in linked form?}
tini
@y
-@!init@!trie_taken: ^boolean;
+@!init @!trie_taken: ^boolean;
{does a family start here?}
@t\hskip10pt@>@!trie_min:array[ASCII_code] of trie_pointer;
{the first possible slot for each character}
@@ -4309,8 +4293,8 @@ if trie_not_ready then begin {initex without format loaded}
% running. The best approximation is to do a core dump, then run the
% debugger on it later.
@x [52.1338] l.24411 - Core-dump in debugging mode on 0 input.
- begin goto breakpoint;@\ {go to every label at least once}
- breakpoint: m:=0; @{'BREAKPOINT'@}@\
+ begin goto breakpoint;@/ {go to every declared label at least once}
+ breakpoint: m:=0; @{'BREAKPOINT'@}@/
end
@y
dump_core {do something to cause a core dump}
diff --git a/Build/source/texk/web2c/tex.web b/Build/source/texk/web2c/tex.web
index 92b0cc53b9c..65d0279f827 100644
--- a/Build/source/texk/web2c/tex.web
+++ b/Build/source/texk/web2c/tex.web
@@ -1,6 +1,7 @@
% This program is copyright (C) 1982 by D. E. Knuth; all rights are reserved.
-% Copying of this file is authorized only if (1) you are D. E. Knuth, or if
-% (2) you make absolutely no changes to your copy. (The WEB system provides
+% Unlimited copying and redistribution of this file are permitted as long
+% as this file is not modified. Modifications are permitted, but only if
+% the resulting file is not named tex.web. (The WEB system provides
% for alterations via an auxiliary file; the master file should stay intact.)
% See Appendix H of the WEB manual for hints on how to install this program.
% And see Appendix A of the TRIP manual for details about how to validate it.
@@ -46,6 +47,7 @@
% Version 3.141592 fixed \xleaders, glueset, weird alignments (December 2002).
% Version 3.1415926 was a general cleanup with minor fixes (February 2008).
% Version 3.14159265 was similar (January 2014).
+% Version 3.141592653 was similar but more extensive (January 2021).
% A reward of $327.68 will be paid to the first finder of any remaining bug.
@@ -188,7 +190,7 @@ helping to determine whether a particular implementation deserves to be
known as `\TeX' [cf.~Stanford Computer Science report CS1027,
November 1984].
-@d banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@ Different \PASCAL s have slightly different conventions, and the present
@!@:PASCAL H}{\ph@>
@@ -199,7 +201,7 @@ reader see how to make an appropriate interface for other systems
if necessary. (\ph\ is Charles Hedrick's modification of a compiler
@^Hedrick, Charles Locke@>
for the DECsystem-10 that was originally developed at the University of
-Hamburg; cf.\ {\sl SOFTWARE---Practice \AM\ Experience \bf6} (1976),
+Hamburg; cf.\ {\sl Software---Practice and Experience \bf6} (1976),
29--42. The \TeX\ program below is intended to be adaptable, without
extensive changes, to most other versions of \PASCAL, so it does not fully
use the admirable features of \ph. Indeed, a conscious effort has been
@@ -295,8 +297,8 @@ to people who wish to preserve the purity of English.
Similarly, there is some conditional code delimited by
`$|stat|\ldots|tats|$' that is intended for use when statistics are to be
kept about \TeX's memory usage. The |stat| $\ldots$ |tats| code also
-implements diagnostic information for \.{\\tracingparagraphs} and
-\.{\\tracingpages}.
+implements diagnostic information for \.{\\tracingparagraphs},
+\.{\\tracingpages}, and \.{\\tracingrestores}.
@^debugging@>
@d debug==@{ {change this to `$\\{debug}\equiv\null$' when debugging}
@@ -1303,7 +1305,7 @@ example, be `|k in [0,@'10..@'12,@'14,@'15,@'33,@'177..@'377]|'.
If character |k| cannot be printed, and |k<@'200|, then character |k+@'100| or
|k-@'100| must be printable; moreover, ASCII codes |[@'41..@'46,
@'60..@'71, @'136, @'141..@'146, @'160..@'171]| must be printable.
-Thus, at least 81 printable characters are needed.
+Thus, at least 80 printable characters are needed.
@:TeXbook}{\sl The \TeX book@>
@^character set dependencies@>
@^system dependencies@>
@@ -1564,9 +1566,9 @@ end;
@ Here is the very first thing that \TeX\ prints: a headline that identifies
the version number and format package. The |term_offset| variable is temporarily
-incorrect, but the discrepancy is not serious since we assume that the banner
-and format identifier together will occupy at most |max_print_line|
-character positions.
+incorrect, but the discrepancy is not serious since we assume that this
+part of the program is system dependent.
+@^system dependencies@>
@<Initialize the output...@>=
wterm(banner);
@@ -1616,7 +1618,7 @@ by all \PASCAL\ compilers.
@<Basic print...@>=
procedure print_int(@!n:integer); {prints an integer in decimal form}
-var k:0..23; {index to current digit; we assume that $|n|<10^{23}$}
+var k:0..23; {index to current digit; we assume that $\vert n\vert<10^{23}$}
@!m:integer; {used to negate |n| in possibly dangerous cases}
begin k:=0;
if n<0 then
@@ -1764,7 +1766,8 @@ error messages are
\hang|term_only| (when |interaction>batch_mode| and |log_file| not yet open);
-\hang|log_only| (when |interaction=batch_mode| and |log_file| is open);
+\hang|log_only| (when |interaction=batch_mode| and |log_file| is open,
+ or when tracing paragraphs);
\hang|term_and_log| (when |interaction>batch_mode| and |log_file| is open).
@@ -1880,7 +1883,8 @@ var c:ASCII_code; {what the user types}
{used to save global variables when deleting tokens}
begin if history<error_message_issued then history:=error_message_issued;
print_char("."); show_context;
-if interaction=error_stop_mode then @<Get user's advice and |return|@>;
+if interaction=error_stop_mode then if selector<>log_only then
+ @<Get user's advice and |return|@>;
incr(error_count);
if error_count=100 then
begin print_nl("(That makes 100 errors; please try again.)");
@@ -1891,7 +1895,8 @@ if error_count=100 then
exit:end;
@ @<Get user's advice...@>=
-loop@+begin continue: clear_for_error_prompt; prompt_input("? ");
+loop@+begin continue: if interaction<>error_stop_mode then return;
+ clear_for_error_prompt; prompt_input("? ");
@.?\relax@>
if last=first then return;
c:=buffer[first];
@@ -1916,7 +1921,7 @@ case c of
"0","1","2","3","4","5","6","7","8","9": if deletions_allowed then
@<Delete \(c)|c-"0"| tokens and |goto continue|@>;
@t\4\4@>@;@+@!debug "D": begin debug_help; goto continue;@+end;@+gubed@/
-"E": if base_ptr>0 then
+"E": if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
begin print_nl("You want to edit file ");
@.You want to edit file x@>
slow_print(input_stack[base_ptr].name_field);
@@ -1937,7 +1942,8 @@ begin print("Type <return> to proceed, S to scroll future error messages,");@/
@.Type <return> to proceed...@>
print_nl("R to run without stopping, Q to run quietly,");@/
print_nl("I to insert something, ");
-if base_ptr>0 then print("E to edit your file,");
+if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
+ print("E to edit your file,");
if deletions_allowed then
print_nl("1 or ... or 9 to ignore the next 1 to 9 tokens of input,");
print_nl("H for help, X to quit.");
@@ -2129,7 +2135,7 @@ begin if OK_to_interrupt then
print_err("Interruption");
@.Interruption@>
help3("You rang?")@/
- ("Try to insert some instructions for me (e.g.,`I\showlists'),")@/
+ ("Try to insert an instruction for me (e.g., `I\showlists'),")@/
("unless you just want to quit by typing `X'.");
deletions_allowed:=false; error; deletions_allowed:=true;
interrupt:=0;
@@ -2917,8 +2923,8 @@ specifies the order of infinity to which glue setting applies (|normal|,
@ The |new_null_box| function returns a pointer to an |hlist_node| in
which all subfields have the values corresponding to `\.{\\hbox\{\}}'.
-The |subtype| field is set to |min_quarterword|, since that's the desired
-|span_count| value if this |hlist_node| is changed to an |unset_node|.
+(The |subtype| field is set to |min_quarterword|, for historic reasons
+that are no longer relevant.)
@p function new_null_box:pointer; {creates a new box node}
var p:pointer; {the new node}
@@ -4100,7 +4106,7 @@ expanded by `\.{\\the}'.
@d hskip=26 {horizontal glue ( \.{\\hskip}, \.{\\hfil}, etc.~)}
@d vskip=27 {vertical glue ( \.{\\vskip}, \.{\\vfil}, etc.~)}
@d mskip=28 {math glue ( \.{\\mskip} )}
-@d kern=29 {fixed space ( \.{\\kern})}
+@d kern=29 {fixed space ( \.{\\kern} )}
@d mkern=30 {math kern ( \.{\\mkern} )}
@d leader_ship=31 {use a box ( \.{\\shipout}, \.{\\leaders}, etc.~)}
@d halign=32 {horizontal table alignment ( \.{\\halign} )}
@@ -4239,7 +4245,7 @@ At each level of processing we are in one of six modes:
\hang|-mmode| stands for math formula mode (not displayed).
\yskip\noindent The mode is temporarily set to zero while processing \.{\\write}
-texts in the |ship_out| routine.
+texts.
Numeric values are assigned to |vmode|, |hmode|, and |mmode| so that
\TeX's ``big semantic switch'' can select the appropriate thing to
@@ -4432,7 +4438,7 @@ case abs(m) div (max_command+1) of
end;
end;
2: if a.int<>null then
- begin print("this will be denominator of:"); show_box(a.int);@+
+ begin print("this will begin denominator of:"); show_box(a.int);@+
end;
end {there are no other cases}
@@ -4954,7 +4960,7 @@ that will be defined later.
@d output_penalty_code=39 {penalty found at current page break}
@d max_dead_cycles_code=40 {bound on consecutive dead cycles of output}
@d hang_after_code=41 {hanging indentation changes after this many lines}
-@d floating_penalty_code=42 {penalty for insertions heldover after a split}
+@d floating_penalty_code=42 {penalty for insertions held over after a split}
@d global_defs_code=43 {override \.{\\global} specifications}
@d cur_fam_code=44 {current family}
@d escape_char_code=45 {escape character for token output}
@@ -5236,14 +5242,18 @@ del_code("."):=0; {this null delimiter is used in error recovery}
input and output, establishes the initial values of the date and time.
@^system dependencies@>
Since standard \PASCAL\ cannot provide such information, something special
-is needed. The program here simply specifies July 4, 1776, at noon; but
-users probably want a better approximation to the truth.
+is needed. The program here simply assumes that suitable values appear in
+the global variables \\{sys\_time}, \\{sys\_day}, \\{sys\_month}, and
+\\{sys\_year} (which are initialized to noon on 4 July 1776,
+in case the implementor is careless).
@p procedure fix_date_and_time;
-begin time:=12*60; {minutes since midnight}
-day:=4; {fourth day of the month}
-month:=7; {seventh month of the year}
-year:=1776; {Anno Domini}
+begin sys_time:=12*60;
+sys_day:=4; sys_month:=7; sys_year:=1776; {self-evident truths}
+time:=sys_time; {minutes since midnight}
+day:=sys_day; {day of the month}
+month:=sys_month; {month of the year}
+year:=sys_year; {Anno Domini}
end;
@ @<Show equivalent |n|, in region 5@>=
@@ -5279,11 +5289,13 @@ if blank_line then print_ln;
selector:=old_setting;
end;
-@ Of course we had better declare another global variable, if the previous
+@ Of course we had better declare a few more global variables, if the previous
routines are going to work.
@<Glob...@>=
@!old_setting:0..max_selector;
+@!sys_time,@!sys_day,@!sys_month,@!sys_year:integer;
+ {date and time supplied by external system}
@ The final region of |eqtb| contains the dimension parameters defined
here, and the 256 \.{\\dimen} registers.
@@ -5824,7 +5836,7 @@ should replace the corresponding entry in |xeq_level|.
\yskip\hangg 2) If |save_type(p)=restore_zero|, then |save_index(p)|
is a location in |eqtb| whose current value should be destroyed at the end
of the current group, when it should be
-replaced by the current value of |eqtb[undefined_control_sequence]|.
+replaced by the value of |eqtb[undefined_control_sequence]|.
\yskip\hangg 3) If |save_type(p)=insert_token|, then |save_index(p)|
is a token that should be inserted into \TeX's input when the current
@@ -6189,8 +6201,8 @@ when |m=out_param|, it means that \TeX\ should insert parameter
number |c| into the text at this point.
The enclosing \.{\char'173} and \.{\char'175} characters of a macro
-definition are omitted, but the final right brace of an output routine
-is included at the end of its token list.
+definition are omitted, but an output routine
+will be enclosed in braces.
Here is an example macro definition that illustrates these conventions.
After \TeX\ processes the text
@@ -6654,7 +6666,7 @@ template is being scanned;
template is being scanned;
\hang|backed_up|, if the token list being scanned has been inserted as
-`to be read again'.
+`to be read again';
\hang|inserted|, if the token list being scanned has been inserted as
the text expansion of a \.{\\count} or similar variable;
@@ -7190,7 +7202,8 @@ end
@ The recovery procedure can't be fully understood without knowing more
about the \TeX\ routines that should be aborted, but we can sketch the
-ideas here: For a runaway definition we will insert a right brace; for a
+ideas here: For a runaway definition or a runaway balanced text
+we will insert a right brace; for a
runaway preamble, we will insert a special \.{\\cr} token and a right
brace; and for a runaway argument, we will set |long_state| to
|outer_call| and insert \.{\\par}.
@@ -7357,7 +7370,7 @@ if cur_cmd>=outer_call then check_outer_validity;
end
@ Notice that a code like \.{\^\^8} becomes \.x if not followed by a hex digit.
-
+
@d is_hex(#)==(((#>="0")and(#<="9"))or((#>="a")and(#<="f")))
@d hex_to_cur_chr==
if c<="9" then cur_chr:=c-"0" @+else cur_chr:=c-"a"+10;
@@ -7367,7 +7380,7 @@ end
@<If this |sup_mark| starts an expanded character...@>=
begin if cur_chr=buffer[loc] then if loc<limit then
begin c:=buffer[loc+1]; @+if c<@'200 then {yes we have an expanded char}
- begin loc:=loc+2;
+ begin loc:=loc+2;
if is_hex(c) then if loc<=limit then
begin cc:=buffer[loc]; @+if is_hex(cc) then
begin incr(loc); hex_to_cur_chr; goto reswitch;
@@ -7827,7 +7840,7 @@ done: if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr
else cur_tok:=cs_token_flag+cur_cs;
end;
-@ The |get_x_token| procedure is equivalent to two consecutive
+@ The |get_x_token| procedure is essentially equivalent to two consecutive
procedure calls: |get_next; x_token|.
@p procedure x_token; {|get_x_token| without the initial |get_next|}
@@ -8148,7 +8161,7 @@ end
strip off the enclosing braces. That's why |rbrace_ptr| was introduced.
@<Tidy up the parameter just scanned, and tuck it away@>=
-begin if (m=1)and(info(p)<right_brace_limit)and(p<>temp_head) then
+begin if (m=1)and(info(p)<right_brace_limit) then
begin link(rbrace_ptr):=null; free_avail(p);
p:=link(temp_head); pstack[n]:=link(p); free_avail(p);
end
@@ -9140,7 +9153,7 @@ The token list created by |str_toks| begins at |link(temp_head)| and ends
at the value |p| that is returned. (If |p=temp_head|, the list is empty.)
@p function str_toks(@!b:pool_pointer):pointer;
- {changes the string |str_pool[b..pool_ptr]| to a token list}
+ {converts |str_pool[b..pool_ptr-1]| to a token list}
var p:pointer; {tail of the token list}
@!q:pointer; {new node being added to the token list via |store_new_token|}
@!t:halfword; {token being appended}
@@ -9302,7 +9315,7 @@ address of the control sequence to display in ``runaway'' error
messages.
@p function scan_toks(@!macro_def,@!xpand:boolean):pointer;
-label found,done,done1,done2;
+label found,continue,done,done1,done2;
var t:halfword; {token representing the highest parameter number}
@!s:halfword; {saved token}
@!p:pointer; {tail of the token list being built}
@@ -9322,7 +9335,7 @@ scan_toks:=p;
end;
@ @<Scan and build the parameter part...@>=
-begin loop begin get_token; {set |cur_cmd|, |cur_chr|, |cur_tok|}
+begin loop begin continue: get_token; {set |cur_cmd|, |cur_chr|, |cur_tok|}
if cur_tok<right_brace_limit then goto done1;
if cur_cmd=mac_param then
@<If the next character is a parameter number, make |cur_tok|
@@ -9344,7 +9357,7 @@ end
@ @<If the next character is a parameter number...@>=
begin s:=match_token+cur_chr; get_token;
-if cur_cmd=left_brace then
+if cur_tok<left_brace_limit then
begin hash_brace:=cur_tok;
store_new_token(cur_tok); store_new_token(end_match_token);
goto done;
@@ -9352,7 +9365,8 @@ if cur_cmd=left_brace then
if t=zero_token+9 then
begin print_err("You already have nine parameters");
@.You already have nine...@>
- help1("I'm going to ignore the # sign you just used."); error;
+ help2("I'm going to ignore the # sign you just used,")@/
+ ("as well as the token that followed it."); error; goto continue;
end
else begin incr(t);
if cur_tok<>t then
@@ -9502,7 +9516,7 @@ begin if not input_ln(read_file[m],true) then
print_err("File ended within "); print_esc("read");
@.File ended within \\read@>
help1("This \read has unbalanced braces.");
- align_state:=1000000; error;
+ align_state:=1000000; limit:=0; error;
end;
end;
end
@@ -9638,7 +9652,7 @@ where skipping began, for use in error messages.
@!skip_line:integer; {skipping began here}
@ Here is a procedure that ignores text until coming to an \.{\\or},
-\.{\\else}, or \.{\\fi} at level zero of $\.{\\if}\ldots\.{\\fi}$
+\.{\\else}, or \.{\\fi} at the current level of $\.{\\if}\ldots\.{\\fi}$
nesting. After it has acted, |cur_chr| will indicate the token that
was found, but |cur_tok| will not be set (because this makes the
procedure run faster).
@@ -10342,15 +10356,18 @@ end
@ @<Print the banner...@>=
begin wlog(banner);
slow_print(format_ident); print(" ");
-print_int(day); print_char(" ");
+print_int(sys_day); print_char(" ");
months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
-for k:=3*month-2 to 3*month do wlog(months[k]);
-print_char(" "); print_int(year); print_char(" ");
-print_two(time div 60); print_char(":"); print_two(time mod 60);
+for k:=3*sys_month-2 to 3*sys_month do wlog(months[k]);
+print_char(" "); print_int(sys_year); print_char(" ");
+print_two(sys_time div 60); print_char(":"); print_two(sys_time mod 60);
end
@ Let's turn now to the procedure that is used to initiate file reading
when an `\.{\\input}' command is being processed.
+Beware: For historic reasons, this code foolishly conserves a tiny bit
+of string pool space; but that can confuse the interactive `\.E' option.
+@^system dependencies@>
@p procedure start_input; {\TeX\ will \.{\\input} something}
label done;
@@ -10375,7 +10392,7 @@ if term_offset+length(name)>max_print_line-2 then print_ln
else if (term_offset>0)or(file_offset>0) then print_char(" ");
print_char("("); incr(open_parens); slow_print(name); update_terminal;
state:=new_line;
-if name=str_ptr-1 then {we can conserve string pool space now}
+if name=str_ptr-1 then {conserve string pool space (but see note above)}
begin flush_string; name:=cur_name;
end;
@<Read the first line of the new file@>;
@@ -10589,11 +10606,11 @@ deleted if $c=0$; then we pass over $a$~characters to reach the next
current character (which may have a ligature/kerning program of its own).
If the very first instruction of the |lig_kern| array has |skip_byte=255|,
-the |next_char| byte is the so-called right boundary character of this font;
+the |next_char| byte is the so-called boundary character of this font;
the value of |next_char| need not lie between |bc| and~|ec|.
If the very last instruction of the |lig_kern| array has |skip_byte=255|,
-there is a special ligature/kerning program for a left boundary character,
-beginning at location |256*op_byte+remainder|.
+there is a special ligature/kerning program for a boundary character at the
+left, beginning at location |256*op_byte+remainder|.
The interpretation is that \TeX\ puts implicit boundary characters
before and after each consecutive string of characters from the same font.
These implicit characters do not appear in the output, but they can affect
@@ -10725,7 +10742,7 @@ the font.
{start of |lig_kern| program for left boundary character,
|non_address| if there is none}
@!font_bchar:array[internal_font_number] of min_quarterword..non_char;
- {right boundary character, |non_char| if there is none}
+ {boundary character, |non_char| if there is none}
@!font_false_bchar:array[internal_font_number] of min_quarterword..non_char;
{|font_bchar| if it doesn't exist in the font, otherwise |non_char|}
@@ -10904,7 +10921,7 @@ var k:font_index; {index into |font_info|}
@!a,@!b,@!c,@!d:eight_bits; {byte variables}
@!qw:four_quarters;@!sw:scaled; {accumulators}
@!bch_label:integer; {left boundary start location, or infinity}
-@!bchar:0..256; {right boundary character, or 256}
+@!bchar:0..256; {boundary character, or 256}
@!z:scaled; {the design size or the ``at'' size}
@!alpha:integer;@!beta:1..16;
{auxiliary quantities used in fixed-point multiplication}
@@ -11472,13 +11489,13 @@ stack were empty at the time of a |pop| command.
The parameter is a signed number in two's complement notation, |-128<=b<128|;
if |b<0|, the reference point moves left.
-\yskip\hang|right2| 144 |b[2]|. Same as |right1|, except that |b| is a
+\yskip\hang|@!right2| 144 |b[2]|. Same as |right1|, except that |b| is a
two-byte quantity in the range |-32768<=b<32768|.
-\yskip\hang|right3| 145 |b[3]|. Same as |right1|, except that |b| is a
+\yskip\hang|@!right3| 145 |b[3]|. Same as |right1|, except that |b| is a
three-byte quantity in the range |@t$-2^{23}$@><=b<@t$2^{23}$@>|.
-\yskip\hang|right4| 146 |b[4]|. Same as |right1|, except that |b| is a
+\yskip\hang|@!right4| 146 |b[4]|. Same as |right1|, except that |b| is a
four-byte quantity in the range |@t$-2^{31}$@><=b<@t$2^{31}$@>|.
\yskip\hang|w0| 147. Set |h:=h+w|; i.e., move right |w| units. With luck,
@@ -12886,7 +12903,7 @@ also removes all occurrences of |ins_node|, |mark_node|, and |adjust_node|
items and appends the resulting material onto the list that ends at
location |adjust_tail|.
-@< Glob...@>=
+@<Glob...@>=
@!adjust_tail:pointer; {tail of adjustment list}
@ @<Set init...@>=adjust_tail:=null; last_badness:=0;
@@ -13408,8 +13425,8 @@ programming.
@d sub_mlist=3 {|math_type| when the attribute is a formula}
@d math_text_char=4 {|math_type| when italic correction is dubious}
-@ Each portion of a formula is classified as Ord, Op, Bin, Rel, Ope,
-Clo, Pun, or Inn, for purposes of spacing and line breaking. An
+@ Each portion of a formula is classified as Ord, Op, Bin, Rel, Open,
+Close, Punct, or Inner, for purposes of spacing and line breaking. An
|ord_noad|, |op_noad|, |bin_noad|, |rel_noad|, |open_noad|, |close_noad|,
|punct_noad|, or |inner_noad| is used to represent portions of the various
types. For example, an `\.=' sign in a formula leads to the creation of a
@@ -13431,10 +13448,10 @@ limits has been overridden for this operator.
@d op_noad=ord_noad+1 {|type| of a noad classified Op}
@d bin_noad=ord_noad+2 {|type| of a noad classified Bin}
@d rel_noad=ord_noad+3 {|type| of a noad classified Rel}
-@d open_noad=ord_noad+4 {|type| of a noad classified Ope}
-@d close_noad=ord_noad+5 {|type| of a noad classified Clo}
-@d punct_noad=ord_noad+6 {|type| of a noad classified Pun}
-@d inner_noad=ord_noad+7 {|type| of a noad classified Inn}
+@d open_noad=ord_noad+4 {|type| of a noad classified Open}
+@d close_noad=ord_noad+5 {|type| of a noad classified Close}
+@d punct_noad=ord_noad+6 {|type| of a noad classified Punct}
+@d inner_noad=ord_noad+7 {|type| of a noad classified Inner}
@d limits=1 {|subtype| of |op_noad| whose scripts are to be above, below}
@d no_limits=2 {|subtype| of |op_noad| whose scripts are to be normal}
@@ -14209,7 +14226,7 @@ else begin if (qo(cur_c)>=font_bc[cur_f])and(qo(cur_c)<=font_ec[cur_f]) then
else cur_i:=null_character;
if not(char_exists(cur_i)) then
begin char_warning(cur_f,qo(cur_c));
- math_type(a):=empty;
+ math_type(a):=empty; cur_i:=null_character;
end;
end;
end;
@@ -14596,7 +14613,7 @@ else begin shift_down:=denom2(cur_size);
@ The numerator and denominator must be separated by a certain minimum
clearance, called |clr| in the following program. The difference between
-|clr| and the actual clearance is |2delta|.
+|clr| and the actual clearance is twice |delta|.
@<Adjust \(s)|shift_up| and |shift_down| for the case of no fraction line@>=
begin if cur_style<text_style then clr:=7*default_rule_thickness
@@ -14979,8 +14996,7 @@ rel_noad: begin t:=rel_noad; pen:=rel_penalty;
ord_noad,vcenter_noad,over_noad,under_noad: do_nothing;
radical_noad: s:=radical_noad_size;
accent_noad: s:=accent_noad_size;
-fraction_noad: begin t:=inner_noad; s:=fraction_noad_size;
- end;
+fraction_noad: s:=fraction_noad_size;
left_noad,right_noad: t:=make_left_right(q,style,max_d,max_h);
style_node: @<Change the current style and |goto delete_q|@>;
whatsit_node,penalty_node,rule_node,disc_node,adjust_node,ins_node,mark_node,
@@ -15020,7 +15036,7 @@ begin cur_style:=subtype(q); s:=style_node_size;
goto delete_q;
end
-@ The inter-element spacing in math formulas depends on a $8\times8$ table that
+@ The inter-element spacing in math formulas depends on an $8\times8$ table that
\TeX\ preloads as a 64-digit string. The elements of this string have the
following significance:
$$\vbox{\halign{#\hfil\cr
@@ -15400,6 +15416,7 @@ text(frozen_cr):="cr"; eqtb[frozen_cr]:=eqtb[cur_val];@/
primitive("crcr",car_ret,cr_cr_code);
@!@:cr_cr_}{\.{\\crcr} primitive@>
text(frozen_end_template):="endtemplate"; text(frozen_endv):="endtemplate";
+@.endtemplate@>
eq_type(frozen_endv):=endv; equiv(frozen_endv):=null_list;
eq_level(frozen_endv):=level_one;@/
eqtb[frozen_end_template]:=eqtb[frozen_endv];
@@ -15627,6 +15644,7 @@ info(p):=end_span; width(p):=null_flag; cur_loop:=link(cur_loop);
@<Copy the templates from node |cur_loop| into node |p|@>;
cur_loop:=link(cur_loop);
link(p):=new_glue(glue_ptr(cur_loop));
+subtype(link(p)):=tab_skip_code+1;
end
@ @<Copy the templates from node |cur_loop| into node |p|@>=
@@ -15992,8 +16010,8 @@ The method used here is based on an approach devised by Michael F. Plass and
@^Plass, Michael Frederick@>
@^Knuth, Donald Ervin@>
the author in 1977, subsequently generalized and improved by the same two
-people in 1980. A detailed discussion appears in {\sl SOFTWARE---Practice
-\AM\ Experience \bf11} (1981), 1119--1184, where it is shown that the
+people in 1980. A detailed discussion appears in {\sl Software---Practice
+and Experience \bf11} (1981), 1119--1184, where it is shown that the
line-breaking problem can be regarded as a special case of the problem of
computing the shortest path in an acyclic network. The cited paper includes
numerous examples and describes the history of line breaking as it has been
@@ -17291,7 +17309,7 @@ loop@+ begin q:=link(r);
if is_char_node(q) then goto done1;
if non_discardable(q) then goto done1;
if type(q)=kern_node then if subtype(q)<>explicit then goto done1;
- r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node| or |penalty_node|}
+ r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node|, or |penalty_node|}
end;
done1: if r<>temp_head then
begin link(r):=null; flush_node_list(link(temp_head));
@@ -17502,7 +17520,8 @@ nodes $p_{a-1}$ and~$p_b$ in the description above are placed into variables
@<Glob...@>=
@!hc:array[0..65] of 0..256; {word to be hyphenated}
-@!hn:small_number; {the number of positions occupied in |hc|}
+@!hn:0..64; {the number of positions occupied in |hc|;
+ not always a |small_number|}
@!ha,@!hb:pointer; {nodes |ha..hb| should be replaced by the hyphenated result}
@!hf:internal_font_number; {font number of the letters in |hc|}
@!hu:array[0..63] of 0..256; {like |hc|, before conversion to lowercase}
@@ -17644,7 +17663,7 @@ forgetting what |ha| and |hb|, etc., are all about.
@ @<Local variables for hyphenation@>=
@!i,@!j,@!l:0..65; {indices into |hc| or |hu|}
@!q,@!r,@!s:pointer; {temporary registers for list manipulation}
-@!bchar:halfword; {right boundary character of hyphenated word, or |non_char|}
+@!bchar:halfword; {boundary character of hyphenated word, or |non_char|}
@ \TeX\ will never insert a hyphen that has fewer than
\.{\\lefthyphenmin} letters before it or fewer than
@@ -17766,7 +17785,7 @@ affect the translation of the beginning of the word.
function reconstitute(@!j,@!n:small_number;@!bchar,@!hchar:halfword):
small_number;
label continue,done;
-var @!p:pointer; {temporary register for list manipulation}
+var @!p:pointer; {temporary register for list manipulation}
@!t:pointer; {a node being appended to}
@!q:four_quarters; {character information or a lig/kern instruction}
@!cur_rh:halfword; {hyphen character for ligature testing}
@@ -18378,7 +18397,7 @@ The hash table is called |trie_op_hash|, and the number of entries it contains
is |trie_op_ptr|.
@<Glob...@>=
-@!init@! trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
+@!init @!trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
{trie op codes for quadruples}
@!trie_used:array[ASCII_code] of quarterword;
{largest opcode used so far for this language}
@@ -18556,7 +18575,7 @@ entries.
@d trie_back(#)==trie[#].lh {backward links in |trie| holes}
@<Glob...@>=
-@!init@!trie_taken:packed array[1..trie_size] of boolean;
+@!init @!trie_taken:packed array[1..trie_size] of boolean;
{does a family start here?}
@t\hskip10pt@>@!trie_min:array[ASCII_code] of trie_pointer;
{the first possible slot for each character}
@@ -19213,7 +19232,8 @@ all split and floating insertions.
@!last_glue:pointer; {used to implement \.{\\lastskip}}
@!last_penalty:integer; {used to implement \.{\\lastpenalty}}
@!last_kern:scaled; {used to implement \.{\\lastkern}}
-@!insert_penalties:integer; {sum of the penalties for held-over insertions}
+@!insert_penalties:integer; {sum of the penalties for insertions
+ that were held over}
@ @<Put each...@>=
primitive("pagegoal",set_page_dimen,0);
@@ -19914,7 +19934,7 @@ end
in internal vertical mode, and \TeX\ will do the following:
@<Resume the page builder after an output routine has come to an end@>=
-begin if (loc<>null) or
+begin if (loc<>null) or
((token_type<>output_text)and(token_type<>backed_up)) then
@<Recover from an unbalanced output routine@>;
end_token_list; {conserve stack space in case more outputs are triggered}
@@ -20077,7 +20097,7 @@ Several additional global variables are needed.
@!main_k:font_index; {index into |font_info|}
@!main_p:pointer; {temporary register for list manipulation}
@!main_s:integer; {space factor value}
-@!bchar:halfword; {right boundary character of current font, or |non_char|}
+@!bchar:halfword; {boundary character of current font, or |non_char|}
@!false_bchar:halfword; {nonexistent character matching |bchar|, or |non_char|}
@!cancel_boundary:boolean; {should the left boundary be ignored?}
@!ins_disc:boolean; {should we insert a discretionary node?}
@@ -20599,7 +20619,7 @@ end;
@ Many of the actions related to box-making are triggered by the appearance
of braces in the input. For example, when the user says `\.{\\hbox}
-\.{to} \.{100pt\{$\langle\,\hbox{hlist}\,\rangle$\}}' in vertical mode,
+\.{to} \.{100pt\{$\langle\,\hbox{\rm hlist}\,\rangle$\}}' in vertical mode,
the information about the box size (100pt, |exactly|) is put onto |save_stack|
with a level boundary word just above it, and |cur_group:=adjusted_hbox_group|;
\TeX\ enters restricted horizontal mode to process the hlist. The right
@@ -22785,6 +22805,7 @@ end;
@ @<Initialize table entries...@>=
text(frozen_protection):="inaccessible";
+@.inaccessible@>
@ Here's an example of the way many of the following routines operate.
(Unfortunately, they aren't all as simple as this.)
@@ -23618,7 +23639,7 @@ any_mode(xray): show_whatever;
@ @d show_code=0 { \.{\\show} }
@d show_box_code=1 { \.{\\showbox} }
@d show_the_code=2 { \.{\\showthe} }
-@d show_lists=3 { \.{\\showlists} }
+@d show_lists_code=3 { \.{\\showlists} }
@<Put each...@>=
primitive("show",xray,show_code);
@@ -23627,14 +23648,14 @@ primitive("showbox",xray,show_box_code);
@!@:show_box_}{\.{\\showbox} primitive@>
primitive("showthe",xray,show_the_code);
@!@:show_the_}{\.{\\showthe} primitive@>
-primitive("showlists",xray,show_lists);
-@!@:show_lists_}{\.{\\showlists} primitive@>
+primitive("showlists",xray,show_lists_code);
+@!@:show_lists_code_}{\.{\\showlists} primitive@>
@ @<Cases of |print_cmd_chr|...@>=
xray: case chr_code of
show_box_code:print_esc("showbox");
show_the_code:print_esc("showthe");
- show_lists:print_esc("showlists");
+ show_lists_code:print_esc("showlists");
othercases print_esc("show")
endcases;
@@ -23643,7 +23664,7 @@ procedure show_whatever;
label common_ending;
var p:pointer; {tail of a token list to show}
begin case cur_chr of
-show_lists: begin begin_diagnostic; show_activities;
+show_lists_code: begin begin_diagnostic; show_activities;
end;
show_box_code: @<Show the current contents of a box@>;
show_code: @<Show the current meaning of a token, then |goto common_ending|@>;
@@ -23723,8 +23744,8 @@ so that the inverse relation between them is clear.
The global variable |format_ident| is a string that is printed right
after the |banner| line when \TeX\ is ready to start. For \.{INITEX} this
-string says simply `\.{(INITEX)}'; for other versions of \TeX\ it says,
-for example, `\.{(preloaded format=plain 1982.11.19)}', showing the year,
+string says simply `\.{ (INITEX)}'; for other versions of \TeX\ it says,
+for example, `\.{ (preloaded format=plain 1982.11.19)}', showing the year,
month, and day that the format file was created. We have |format_ident=0|
before \TeX's tables are loaded.
@@ -23815,6 +23836,8 @@ macros to dump words of different types:
@ The inverse macros are slightly more complicated, since we need to check
the range of the values we are reading in. We say `|undump(a)(b)(x)|' to
read an integer value |x| that is supposed to be in the range |a<=x<=b|.
+System error messages should be suppressed when undumping.
+@^system dependencies@>
@d undump_wd(#)==begin get(fmt_file); #:=fmt_file^;@+end
@d undump_int(#)==begin get(fmt_file); #:=fmt_file^.int;@+end
@@ -24289,17 +24312,17 @@ cannot produce error messages. For example, it would be a mistake to call
|str_room| or |make_string| at this time, because a call on |overflow|
might lead to an infinite loop.
@^system dependencies@>
-
-Actually there's one way to get error messages, via |prepare_mag|;
-but that can't cause infinite recursion.
+(Actually there's one way to get error messages, via |prepare_mag|;
+but that can't cause infinite recursion.)
@^recursion@>
-This program doesn't bother to close the input files that may still be open.
+If |final_cleanup| is bypassed, this program doesn't bother to close
+the input files that may still be open.
@<Last-minute...@>=
procedure close_files_and_terminate;
var k:integer; {all-purpose index}
-begin @<Finish the extensions@>;
+begin @<Finish the extensions@>; new_line_char:=-1;
@!stat if tracing_stats>0 then @<Output statistics about this job@>;@;@+tats@/
wake_up_terminal; @<Finish the \.{DVI} file@>;
if log_opened then
@@ -24355,7 +24378,7 @@ been scanned and |its_all_over|\kern-2pt.
procedure final_cleanup;
label exit;
var c:small_number; {0 for \.{\\end}, 1 for \.{\\dump}}
-begin c:=cur_chr;
+begin c:=cur_chr; if c<>1 then new_line_char:=-1;
if job_name=0 then open_log_file;
while input_ptr>0 do
if state=token_list then end_token_list@+else end_file_reading;
@@ -24459,14 +24482,15 @@ program below. (If |m=13|, there is an additional argument, |l|.)
@!debug procedure debug_help; {routine to display various things}
label breakpoint,exit;
var k,@!l,@!m,@!n:integer;
-begin loop begin wake_up_terminal;
+begin clear_terminal;
+ loop begin wake_up_terminal;
print_nl("debug # (-1 to exit):"); update_terminal;
@.debug \#@>
read(term_in,m);
if m<0 then return
else if m=0 then
- begin goto breakpoint;@\ {go to every label at least once}
- breakpoint: m:=0; @{'BREAKPOINT'@}@\
+ begin goto breakpoint;@/ {go to every declared label at least once}
+ breakpoint: m:=0; @{'BREAKPOINT'@}@/
end
else begin read(term_in,n);
case m of
diff --git a/Build/source/texk/web2c/tftopl.web b/Build/source/texk/web2c/tftopl.web
index 65095d43275..8496ede7510 100644
--- a/Build/source/texk/web2c/tftopl.web
+++ b/Build/source/texk/web2c/tftopl.web
@@ -28,7 +28,7 @@
\def\title{TF\lowercase{to}PL}
\def\contentspagenumber{201}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont TFtoPL} processor}
@@ -782,7 +782,7 @@ end
@* Doing it.
\TeX\ checks the information of a \.{TFM} file for validity as the
file is being read in, so that no further checks will be needed when
-typesetting is going on. And when it finds something wrong, it justs
+typesetting is going on. And when it finds something wrong, it just
calls the file ``bad,'' without identifying the nature of the problem,
since \.{TFM} files are supposed to be good almost all of the time.
diff --git a/Build/source/texk/web2c/triptest.test b/Build/source/texk/web2c/triptest.test
index e1cc7aa4f6a..90ba37b4929 100755
--- a/Build/source/texk/web2c/triptest.test
+++ b/Build/source/texk/web2c/triptest.test
@@ -1,6 +1,6 @@
#! /bin/sh -vx
# $Id$
-# Copyright 2017-2019 Karl Berry <tex-live@tug.org>
+# Copyright 2017-2021 Karl Berry <tex-live@tug.org>
# Copyright 2009-2014 Peter Breitenlohner <tex-live@tug.org>
# You may freely use, modify and/or distribute this file.
@@ -31,7 +31,7 @@ cat >filter <<-\_EOF
s/[1-9] hyphenation exceptions* out of [1-9].*/X hyphenation exceptions out of YYY/
s/[1-9][0-9]* strings of total length [1-9].*/XXXX strings of total length YYYYY/
s/9 ops out of [1-9][0-9]*/9 ops out of YYY/
- s/TeX output 20..\...\...:..../TeX output 20YY.MM.DD:hhmm/
+ s/TeX output ....\...\...:..../TeX output YYYY.MM.DD:hhmm/
_EOF
# x86 glue rounding
diff --git a/Build/source/texk/web2c/triptrap-sh b/Build/source/texk/web2c/triptrap-sh
index 6c2fb779759..9a36ccc4b96 100755
--- a/Build/source/texk/web2c/triptrap-sh
+++ b/Build/source/texk/web2c/triptrap-sh
@@ -1,7 +1,9 @@
#! /bin/sh
+# $Id$
# shell script to run TRIP and TRAP tests and create diffs.
#
-# Copyright (C) 2010-2015 Peter Breitenlohner <tex-live@tug.org>
+# Copyright 2015-2021 Karl Berry <tex-live@tug.org>
+# Copyright 2010-2015 Peter Breitenlohner <tex-live@tug.org>
#
# This file is free software; the copyright holder
# gives unlimited permission to copy and/or distribute it,
@@ -37,19 +39,23 @@ do
$MAKE TESTS=$tst.test check-am >$tmp 2>&1 \
&& grep "PASS: $tst.test" $tmp >/dev/null 2>&1 \
|| { echo "FAIL: $tst.test"; is_OK=false; }
+
sed -e "s%$abs_srcdir/%SRCDIR/%" \
-e "s%\.\./%./%" \
$tst.log >$file
+
+ rm -f $tst.out # previous output file, if any.
+
$is_OK && {
echo "PASS: $tst.test" >>$file
echo "PASS: $tst.test"
+ rm -f $tmp
} || {
echo "FAIL: $tst.test" >>$file
+ # preserve our output file in case of failure
+ mv $tmp $tst.out
rc=1
}
- rm -f $tmp
done
echo "$me: All done"
exit $rc
-
-
diff --git a/Build/source/texk/web2c/triptrap/README b/Build/source/texk/web2c/triptrap/README
index 4a3b6e1909a..c6c23ce5e56 100644
--- a/Build/source/texk/web2c/triptrap/README
+++ b/Build/source/texk/web2c/triptrap/README
@@ -1,12 +1,13 @@
+$Id$
+(This file is public domain.)
+
web2c/triptrap -- The trip and trap tests are Knuth's torture tests for
-TeX and Metafont. The MetaPost test is also named `trap', so I've
-renamed the conflicting files to `mftrap...' and `mptrap...'. (The
-contents of all files remain absolutely unaltered, of course.)
+TeX and Metafont. The MetaPost test is also named `trap', so
+renamed the conflicting files to `mftrap...' and `mptrap...'.
+The contents of all files remain absolutely unaltered, of course.
-The tests are exercised in the web2c distribution via `make trip trap mptrap'
-(from the top-level or web2c/ directories). They do not and cannot
-exercise the path searching capabilities; for that, a few ``normal''
-test runs before and after installation should suffice.
+The tests are exercised in TeX Live via `make triptrap' in the web2c/
+directory.
{trip,mftrap,mptrap}.diffs -- show the diffs from Knuth's originals as
generated on my development machine. tripman.tex, trapman.tex, and
@@ -28,9 +29,10 @@ For trip:
hyphenation exception table is to be dynamic at all). Knuth has said
this discrepancy is ok.
-For trap, additionally, the capsule numbers will be different. We
-believe this is because the master trap.log was not updated completed
-after the 2.7182818 (2014) tune-up, and have asked Knuth to review.
+For trap, additionally, the capsule numbers have sometimes been
+different, because the master trap.log was not updated completely after
+the 2.7182818 (2014) tune-up, as confirmed by Knuth. The 2.7182818 (2021)
+tuneup restores correct values.
texmf.cnf -- sets up various constants the way the tests want them. Not
all constants can be changed, alas, but this suffices to avoid building
diff --git a/Build/source/texk/web2c/triptrap/mftrap.diffs b/Build/source/texk/web2c/triptrap/mftrap.diffs
index 35b00ea2c2f..950dcb6c9d5 100644
--- a/Build/source/texk/web2c/triptrap/mftrap.diffs
+++ b/Build/source/texk/web2c/triptrap/mftrap.diffs
@@ -1,154 +1,145 @@
+#! /bin/sh -vx
+# $Id: mftraptest.test 53154 2019-12-17 19:06:20Z karl $
+# Copyright 2017-2021 Karl Berry <tex-live@tug.org>
+# Copyright 2009-2014 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
++ LC_ALL=C
++ export LC_ALL
++ LANGUAGE=C
++ export LANGUAGE
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+TEXMFCNF=$testdir; export TEXMFCNF
++ TEXMFCNF=SRCDIR/triptrap
++ export TEXMFCNF
+
+rm -rf trapdir
++ rm -rf trapdir
+mkdir trapdir
++ mkdir trapdir
+cd trapdir
++ cd trapdir
+mkdir a b
++ mkdir a b
+
+# See triptrap/README for explanation of why we believe these diffs are ok,
+# notably including the capsule numbers.
+
+# TeX Live generic
+cat >filter <<-\_EOF
+ s,^\*\*(trap\.mf,** \&trap trap \
+ (trap.mf,
+ s/ (TeX Live 20[^)]*)//
+ s/base=trap [^)][^)]*)/base=trap)/
+ s/) [0-9A-Z: ]*$/)/
+ s/usage [1-9][0-9&]* ([1-9][0-9&]* still/usage XX\&XX (YYY\&YYYYY still/
+ s/[1-9][0-9]* strings of total length [1-9][0-9]*/XXXX strings of total length YYYYY/
+ s/[1-9][0-9]* strings out of [1-9].*/XX strings out of YYY/
+ s/[1-9][0-9]* string characters out of [1-9].*/XXXX string characters out of YYYYY/
+ s/tokens out of [1-9][0-9]*/tokens out of YYYY/
+ s/out of [1-9][0-9]*i,[0-9nrpb,]*/out of YYi,YYYn,YYYr,YYYp,YYYb/
+ s/out of [1-9][0-9]*w,[0-9hdilkep,]*)/out of YYYw,YYh,YYd,YYi,YYYYl,YYYk,YYYe,YYp)/
+ s/METAFONT output ....\...\...:.../METAFONT output YYYY.MM.DD:hhmm/
+ _EOF
++ cat
+
+# Capsule numbers
+cat >>filter <<-\_EOF
+ s/ %CA$/ %/
+ s/^PSULE1675/CAPSULE1172/
+ s/%CAPSULE[1-9][0-9]*/%CAPSULEnnnn/g
+ _EOF
++ cat
+
+echo ">>> Running TRAP test for Metafont." >&2
++ echo '>>> Running TRAP test for Metafont.'
>>> Running TRAP test for Metafont.
+echo ">>> See $testdir/mftrap.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/triptrap/mftrap.diffs for example of acceptable diffs.'
>>> See SRCDIR/triptrap/mftrap.diffs for example of acceptable diffs.
+
+is_OK=:
++ is_OK=:
+
+set -x
++ set -x
+
+# get same filename in log
+rm -f trap.mf
++ rm -f trap.mf
+$LN_S $testdir/trap.mf . || exit 1
+ ln -s SRCDIR/triptrap/trap.mf .
+
+rm -f trap.base
++ rm -f trap.base
+./mf --progname=inimf <$testdir/mftrap1.in >mftrapin.fot
+ ./mf --progname=inimf
+if test ! -s trap.base; then
+ echo "*** trap.base not created by mftrap1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trap.base
+mv trap.log mftrapin.log || exit 1
+ mv trap.log mftrapin.log
+diff $testdir/mftrapin.log mftrapin.log
+ diff SRCDIR/triptrap/mftrapin.log mftrapin.log
1c1
-< This is METAFONT, Version 2.7182818 (INIMF) 7 JAN 2014 17:51
+< This is METAFONT, Version 2.71828182 (INIMF) 4 JUL 1776 12:00
---
-> This is METAFONT, Version 2.7182818 (TeX Live 2015) (INIMF) 12 APR 2015 16:22
+> This is METAFONT, Version 2.71828182 (INIMF) 27 JAN 2021 18:03
150c150
-< String usage 26&83 (891&11438 still untouched)
+< String usage 26&83 (892&11481 still untouched)
---
-> String usage 30&98 (6386&79448 still untouched)
+> String usage 30&98 (6386&79447 still untouched)
176,177c176,177
-< (preloaded base=trap 2014.1.7)
-< 1117 strings of total length 20614
+< (preloaded base=trap 1776.7.4)
+< 1116 strings of total length 20570
---
-> (preloaded base=trap 2015.4.12)
-> 1123 strings of total length 20613
+> (preloaded base=trap 2021.1.27)
+> 1123 strings of total length 20614
+
+./mf --progname=inimf <$testdir/mftrap2.in >mftrap.fot
+ ./mf --progname=inimf
+mv trap.log mftrap.log || exit 1
+ mv trap.log mftrap.log
+mv trap.tfm mftrap.tfm || exit 1
+ mv trap.tfm mftrap.tfm
+diff $testdir/mftrap.fot mftrap.fot
+ diff SRCDIR/triptrap/mftrap.fot mftrap.fot
1,3c1,2
-< This is METAFONT, Version 2.7182818 (INIMF)
+< This is METAFONT, Version 2.71828182 (INIMF)
< ** &trap trap
< (trap.mf
---
-> This is METAFONT, Version 2.7182818 (TeX Live 2015) (INIMF)
+> This is METAFONT, Version 2.71828182 (TeX Live 2021/dev) (INIMF)
> **(trap.mf
39c38
-< String usage 41&161 (815&7634 still untouched)
+< String usage 41&161 (816&7678 still untouched)
---
-> String usage 50&202 (6300&75594 still untouched)
+> String usage 50&202 (6300&75593 still untouched)
+diff $testdir/mftrap.log mftrap.log
+ diff SRCDIR/triptrap/mftrap.log mftrap.log
1c1
-< This is METAFONT, Version 2.7182818 (preloaded base=trap 2014.1.7) 7 JAN 2014 18:11
+< This is METAFONT, Version 2.71828182 (preloaded base=trap 1776.7.4) 4 JUL 1776 12:00
---
-> This is METAFONT, Version 2.7182818 (TeX Live 2015) (preloaded base=trap 2015.4.12) 12 APR 2015 16:22
+> This is METAFONT, Version 2.71828182 (preloaded base=trap 2021.1.27) 27 JAN 2021 18:03
1825c1825
-< String usage 24&92 (858&11309 still untouched)
+< String usage 24&92 (859&11353 still untouched)
---
-> String usage 30&119 (6346&79262 still untouched)
-3693,3695c3693,3695
-< xpart %CAPSULE1359=xx
-< %CAPSULE1367=2yy-2
-< %CAPSULE1375 = 3.3333xx+3.3333
----
-> xpart %CAPSULE1370=xx
-> %CAPSULE1378=2yy-2
-> %CAPSULE1386 = 3.3333xx+3.3333
-3755,3757c3755,3757
-< xpart %CAPSULE1049 = 8000o2-4000o1+1000o3+9
-< xpart %CAPSULE1383=xpart '
-< ypart %CAPSULE1383=ypart '
----
-> xpart %CAPSULE604 = 8000o2-4000o1+1000o3+9
-> xpart %CAPSULE1394=xpart '
-> ypart %CAPSULE1394=ypart '
-3760,3761c3760,3761
-< ### 4000o1 = -xpart %CAPSULE1049+8000o2+1000o3+9
-< ### -4.87383o2 = -oo-0.0004xpart %CAPSULE1049+0.39673o3-17.99643
----
-> ### 4000o1 = -xpart %CAPSULE604+8000o2+1000o3+9
-> ### -4.87383o2 = -oo-0.0004xpart %CAPSULE604+0.39673o3-17.99643
-3768c3768
-< ### -alfa=-xpart %CAPSULE1494
----
-> ### -alfa=-xpart %CAPSULE368
-3770,3771c3770,3771
-< {xpart((xpart %CAPSULE1494,0))}
-< ### -xpart %CAPSULE17=-%CAPSULE1176
----
-> {xpart((xpart %CAPSULE368,0))}
-> ### -xpart %CAPSULE17=-%CAPSULE1376
-3773,3775c3773,3775
-< {(%CAPSULE382)+(%CAPSULE1176)}
-< ### -%CAPSULE382=-%CAPSULE1893+%CAPSULE1176
-< ### -%CAPSULE1893=-ypart %CAPSULE1049
----
-> {(%CAPSULE382)+(%CAPSULE1376)}
-> ### -%CAPSULE382=-%CAPSULE1364+%CAPSULE1376
-> ### -%CAPSULE1364=-ypart %CAPSULE604
-3780c3780
-< ### p$=-ypart %CAPSULE604+1
----
-> ### p$=-ypart %CAPSULE1360+1
-3782,3793c3782,3793
-< {(2/3)*((-ypart %CAPSULE604+1,ypart %CAPSULE604))}
-< ### ypart %CAPSULE604=-xpart %CAPSULE604+1
-< ### -0.66667xpart %CAPSULE604=-xpart %CAPSULE1889
-< {-((xpart %CAPSULE1889,-xpart %CAPSULE1889+0.66667))}
-< ### xpart %CAPSULE1889=-xpart %CAPSULE1172
-< {((xpart %CAPSULE1049,ypart %CAPSULE1049))=((xpart %CAPSULE1172,-xpart %
-< CAPSULE1172-0.66667))}
-< ## xpart %CAPSULE1172=-ypart %CAPSULE1049-0.66667
-< ## ypart %CAPSULE1049=-xpart %CAPSULE1049-0.66667
-< ### -xpart %CAPSULE1049=-xpart %CAPSULE1172
-< {((xpart ',ypart '))=((xpart %CAPSULE1172,-xpart %CAPSULE1172-0.66667))}
-< ## xpart %CAPSULE1172=-ypart '-0.66667
----
-> {(2/3)*((-ypart %CAPSULE1360+1,ypart %CAPSULE1360))}
-> ### ypart %CAPSULE1360=-xpart %CAPSULE1360+1
-> ### -0.66667xpart %CAPSULE1360=-xpart %CAPSULE1744
-> {-((xpart %CAPSULE1744,-xpart %CAPSULE1744+0.66667))}
-> ### xpart %CAPSULE1744=-xpart %CAPSULE1675
-> {((xpart %CAPSULE604,ypart %CAPSULE604))=((xpart %CAPSULE1675,-xpart %CA
-> PSULE1675-0.66667))}
-> ## xpart %CAPSULE1675=-ypart %CAPSULE604-0.66667
-> ## ypart %CAPSULE604=-xpart %CAPSULE604-0.66667
-> ### -xpart %CAPSULE604=-xpart %CAPSULE1675
-> {((xpart ',ypart '))=((xpart %CAPSULE1675,-xpart %CAPSULE1675-0.66667))}
-> ## xpart %CAPSULE1675=-ypart '-0.66667
-3799c3799
-< ### -ooo=-%CAPSULE1494
----
-> ### -ooo=-%CAPSULE1051
-3801,3810c3801,3810
-< {(%CAPSULE1494)+(1)}
-< ### -%CAPSULE1494=-%CAPSULE1350+1
-< {(1/2)*(%CAPSULE1350)}
-< ### -0.5%CAPSULE1350=-%CAPSULE1367
-< {-(%CAPSULE1367)}
-< ### %CAPSULE1367=-%CAPSULE1893
-< {(2)*(%CAPSULE1893)}
-< ### -2%CAPSULE1893=-%CAPSULE1885
-< {(-0.5%CAPSULE1885-0.5)=(%CAPSULE1885)}
-< ## %CAPSULE1885=-0.33333
----
-> {(%CAPSULE1051)+(1)}
-> ### -%CAPSULE1051=-%CAPSULE1378+1
-> {(1/2)*(%CAPSULE1378)}
-> ### -0.5%CAPSULE1378=-%CAPSULE1370
-> {-(%CAPSULE1370)}
-> ### %CAPSULE1370=-%CAPSULE1362
-> {(2)*(%CAPSULE1362)}
-> ### -2%CAPSULE1362=-%CAPSULE1354
-> {(-0.5%CAPSULE1354-0.5)=(%CAPSULE1354)}
-> ## %CAPSULE1354=-0.33333
+> String usage 30&119 (6346&79261 still untouched)
4235c4235
-< String usage 41&161 (815&7634 still untouched)
+< String usage 41&161 (816&7678 still untouched)
---
-> String usage 50&202 (6300&75594 still untouched)
+> String usage 50&202 (6300&75593 still untouched)
4251,4252c4251,4252
-< 68 strings out of 883
-< 3752 string characters out of 11386
+< 68 strings out of 884
+< 3752 string characters out of 11430
---
> 77 strings out of 6377
-> 3793 string characters out of 79387
+> 3793 string characters out of 79386
4254,4255c4254,4255
< 289 symbolic tokens out of 2100
< 8i,43n,14r,8p,167b stack positions out of 30i,100n,300r,150p,500b
@@ -159,18 +150,30 @@
< out of 256w,16h,16d,64i,5000l,500k,256e,50p)
---
> out of 256w,16h,16d,64i,15000l,2500k,256e,60p)
+
+./tftopl ./mftrap.tfm mftrap.pl || exit 1
+ ./tftopl ./mftrap.tfm mftrap.pl
+diff $testdir/mftrap.pl mftrap.pl || is_OK=false
+ diff SRCDIR/triptrap/mftrap.pl mftrap.pl
+
+./gftype -m -i ./trap.72270gf >trap.typ || exit 1
+ ./gftype -m -i ./trap.72270gf
+diff $testdir/trap.typ trap.typ
+ diff SRCDIR/triptrap/trap.typ trap.typ
1c1
< This is GFtype, Version 3.1
---
-> This is GFtype, Version 3.1 (TeX Live 2015)
+> This is GFtype, Version 3.1 (TeX Live 2021/dev)
3c3
< ' METAFONT output 2014.01.07:1811'
---
-> ' METAFONT output 2015.04.12:1622'
+> ' METAFONT output 2021.01.27:1803'
+
+for f in mftrapin.log mftrap.fot mftrap.log trap.typ; do
+ sed $testdir/$f -f filter >a/$f
+ sed $f -f filter >b/$f
+ diff a/$f b/$f || is_OK=false
+done
+ for f in mftrapin.log mftrap.fot mftrap.log trap.typ
+ sed SRCDIR/triptrap/mftrapin.log -f filter
+ sed mftrapin.log -f filter
@@ -187,7 +190,15 @@
+ sed SRCDIR/triptrap/trap.typ -f filter
+ sed trap.typ -f filter
+ diff a/trap.typ b/trap.typ
+
+$is_OK && {
+ echo ">>> All differences are acceptable." >&2
+} || {
+ echo "*** Error(s) found in mf trap test, investigate!" >&2
+ exit 1
+}
+ :
+ echo '>>> All differences are acceptable.'
>>> All differences are acceptable.
-PASS: mftraptest
+PASS mftraptest.test (exit status: 0)
+PASS: mftraptest.test
diff --git a/Build/source/texk/web2c/triptrap/mftrap.fot b/Build/source/texk/web2c/triptrap/mftrap.fot
index 6bceb9f67e0..b5551c805c7 100644
--- a/Build/source/texk/web2c/triptrap/mftrap.fot
+++ b/Build/source/texk/web2c/triptrap/mftrap.fot
@@ -1,4 +1,4 @@
-This is METAFONT, Version 2.7182818 (INIMF)
+This is METAFONT, Version 2.71828182 (INIMF)
** &trap trap
(trap.mf
\*//*\trap\pass2!
@@ -36,7 +36,7 @@ xpart '=-ypart '-0.66667
{qq:=pen}
{showstats}
Memory usage 1462&588 (104 still untouched)
-String usage 41&161 (815&7634 still untouched)
+String usage 41&161 (816&7678 still untouched)
{[repeat the loop]}
! A group begun on line 163 never ended.
<to be read again>
diff --git a/Build/source/texk/web2c/triptrap/mftrap.log b/Build/source/texk/web2c/triptrap/mftrap.log
index 611ce589e2f..18612678988 100644
--- a/Build/source/texk/web2c/triptrap/mftrap.log
+++ b/Build/source/texk/web2c/triptrap/mftrap.log
@@ -1,4 +1,4 @@
-This is METAFONT, Version 2.7182818 (preloaded base=trap 2014.1.7) 7 JAN 2014 18:11
+This is METAFONT, Version 2.71828182 (preloaded base=trap 1776.7.4) 4 JUL 1776 12:00
** &trap trap
(trap.mf
{if}
@@ -161,7 +161,7 @@ true-or-false value. I'm changing it to `false'.
path
l.25 path
p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(...
-After `exitif <boolean exp>' I expect to see a semicolon.
+After `exitif <boolean expr>' I expect to see a semicolon.
I shall pretend that one was there.
{pair}
@@ -1822,7 +1822,7 @@ row -2: | -4+ -3- -2+ -1-
{showstats}
Memory usage 1084&202 (749 still untouched)
-String usage 24&92 (858&11309 still untouched)
+String usage 24&92 (859&11353 still untouched)
{addto}
{(path)yscaled(0.01666)}
Path at line 82, before subdivision into octants:
@@ -3046,7 +3046,7 @@ For safety's sake I'll ignore the present command.
substring
l.124 ...aderbyte(48.5)substring
(-9,9)of"long"; for\=0:\
-A colon should follow a headerbyte or fontinfo location.
+A colon should follow a headerbyte or fontdimen location.
{-(9)}
{((-9,9))substring("long")}
@@ -3690,9 +3690,9 @@ XPR1)+2)-(1,(EXPR1)+2)rotated90
alpha=0.45p3~+7
{tracingcapsules:=1}
{showdependencies}
-xpart %CAPSULE1359=xx
-%CAPSULE1367=2yy-2
-%CAPSULE1375 = 3.3333xx+3.3333
+xpart %CAPSULE1370=xx
+%CAPSULE1378=2yy-2
+%CAPSULE1386 = 3.3333xx+3.3333
alpha=0.45p3~+7
{show}
{(1/3)*((3,6))}
@@ -3752,62 +3752,62 @@ o4=0.44444o2+0.88889o1
o5=0.44444o2+0.88889o1
oo=1.7o2+1.6o1-18
%CAPSULE382 = 3ooo-0.01o3
-xpart %CAPSULE1049 = 8000o2-4000o1+1000o3+9
-xpart %CAPSULE1383=xpart '
-ypart %CAPSULE1383=ypart '
+xpart %CAPSULE604 = 8000o2-4000o1+1000o3+9
+xpart %CAPSULE1394=xpart '
+ypart %CAPSULE1394=ypart '
alpha=0.45p3~+7
{numeric}
-### 4000o1 = -xpart %CAPSULE1049+8000o2+1000o3+9
-### -4.87383o2 = -oo-0.0004xpart %CAPSULE1049+0.39673o3-17.99643
+### 4000o1 = -xpart %CAPSULE604+8000o2+1000o3+9
+### -4.87383o2 = -oo-0.0004xpart %CAPSULE604+0.39673o3-17.99643
#### o6=-0.00027
### -0.04366o3 = -o4+0.46689oo+8.40439
### -o4 = -o5
### 0.22894o5 = -%CAPSULE382+0.10689oo+3ooo+1.92412
{begingroup}
{pair}
-### -alfa=-xpart %CAPSULE1494
+### -alfa=-xpart %CAPSULE368
{endgroup}
-{xpart((xpart %CAPSULE1494,0))}
-### -xpart %CAPSULE17=-%CAPSULE1176
+{xpart((xpart %CAPSULE368,0))}
+### -xpart %CAPSULE17=-%CAPSULE1376
{endgroup}
-{(%CAPSULE382)+(%CAPSULE1176)}
-### -%CAPSULE382=-%CAPSULE1893+%CAPSULE1176
-### -%CAPSULE1893=-ypart %CAPSULE1049
+{(%CAPSULE382)+(%CAPSULE1376)}
+### -%CAPSULE382=-%CAPSULE1364+%CAPSULE1376
+### -%CAPSULE1364=-ypart %CAPSULE604
{begingroup}
{save}
{(1)-(p$)}
{restoring p}
-### p$=-ypart %CAPSULE604+1
+### p$=-ypart %CAPSULE1360+1
{endgroup}
-{(2/3)*((-ypart %CAPSULE604+1,ypart %CAPSULE604))}
-### ypart %CAPSULE604=-xpart %CAPSULE604+1
-### -0.66667xpart %CAPSULE604=-xpart %CAPSULE1889
-{-((xpart %CAPSULE1889,-xpart %CAPSULE1889+0.66667))}
-### xpart %CAPSULE1889=-xpart %CAPSULE1172
-{((xpart %CAPSULE1049,ypart %CAPSULE1049))=((xpart %CAPSULE1172,-xpart %
-CAPSULE1172-0.66667))}
-## xpart %CAPSULE1172=-ypart %CAPSULE1049-0.66667
-## ypart %CAPSULE1049=-xpart %CAPSULE1049-0.66667
-### -xpart %CAPSULE1049=-xpart %CAPSULE1172
-{((xpart ',ypart '))=((xpart %CAPSULE1172,-xpart %CAPSULE1172-0.66667))}
-## xpart %CAPSULE1172=-ypart '-0.66667
+{(2/3)*((-ypart %CAPSULE1360+1,ypart %CAPSULE1360))}
+### ypart %CAPSULE1360=-xpart %CAPSULE1360+1
+### -0.66667xpart %CAPSULE1360=-xpart %CAPSULE1744
+{-((xpart %CAPSULE1744,-xpart %CAPSULE1744+0.66667))}
+### xpart %CAPSULE1744=-xpart %CAPSULE1675
+{((xpart %CAPSULE604,ypart %CAPSULE604))=((xpart %CAPSULE1675,-xpart %CA
+PSULE1675-0.66667))}
+## xpart %CAPSULE1675=-ypart %CAPSULE604-0.66667
+## ypart %CAPSULE604=-xpart %CAPSULE604-0.66667
+### -xpart %CAPSULE604=-xpart %CAPSULE1675
+{((xpart ',ypart '))=((xpart %CAPSULE1675,-xpart %CAPSULE1675-0.66667))}
+## xpart %CAPSULE1675=-ypart '-0.66667
## xpart '=-ypart '-0.66667
{begingroup}
{(0.5)*(ooo)}
{begingroup}
{numeric}
-### -ooo=-%CAPSULE1494
+### -ooo=-%CAPSULE1051
{endgroup}
-{(%CAPSULE1494)+(1)}
-### -%CAPSULE1494=-%CAPSULE1350+1
-{(1/2)*(%CAPSULE1350)}
-### -0.5%CAPSULE1350=-%CAPSULE1367
-{-(%CAPSULE1367)}
-### %CAPSULE1367=-%CAPSULE1893
-{(2)*(%CAPSULE1893)}
-### -2%CAPSULE1893=-%CAPSULE1885
-{(-0.5%CAPSULE1885-0.5)=(%CAPSULE1885)}
-## %CAPSULE1885=-0.33333
+{(%CAPSULE1051)+(1)}
+### -%CAPSULE1051=-%CAPSULE1378+1
+{(1/2)*(%CAPSULE1378)}
+### -0.5%CAPSULE1378=-%CAPSULE1370
+{-(%CAPSULE1370)}
+### %CAPSULE1370=-%CAPSULE1362
+{(2)*(%CAPSULE1362)}
+### -2%CAPSULE1362=-%CAPSULE1354
+{(-0.5%CAPSULE1354-0.5)=(%CAPSULE1354)}
+## %CAPSULE1354=-0.33333
{(oo)=(-0.33333)}
## oo=-0.33333
{endgroup}
@@ -4232,7 +4232,7 @@ xpart '=-ypart '-0.66667
{qq:=pen}
{showstats}
Memory usage 1462&588 (104 still untouched)
-String usage 41&161 (815&7634 still untouched)
+String usage 41&161 (816&7678 still untouched)
{[repeat the loop]}
! A group begun on line 163 never ended.
<to be read again>
@@ -4248,8 +4248,8 @@ by `endgroup'. So I've inserted `endgroup' now.
(end occurred when if on line 36 was incomplete)
(end occurred when elseif on line 21 was incomplete)
Here is how much of METAFONT's memory you used:
- 68 strings out of 883
- 3752 string characters out of 11386
+ 68 strings out of 884
+ 3752 string characters out of 11430
2897 words of memory out of 3001
289 symbolic tokens out of 2100
8i,43n,14r,8p,167b stack positions out of 30i,100n,300r,150p,500b
diff --git a/Build/source/texk/web2c/triptrap/mftrapin.log b/Build/source/texk/web2c/triptrap/mftrapin.log
index 2fbafd0e6bc..c07ae627747 100644
--- a/Build/source/texk/web2c/triptrap/mftrapin.log
+++ b/Build/source/texk/web2c/triptrap/mftrapin.log
@@ -1,4 +1,4 @@
-This is METAFONT, Version 2.7182818 (INIMF) 7 JAN 2014 17:51
+This is METAFONT, Version 2.71828182 (INIMF) 4 JUL 1776 12:00
**\input trap
(trap.mf
>> << == >> ::: ||`` ''--!! ??## && @@ $$[[]]{{ }}((5.5 0.5))
@@ -147,7 +147,7 @@ put one in, behind the scenes; this may fix the problem.
{for}
{showstats}
Memory usage 291&41 (1922 still untouched)
-String usage 26&83 (891&11438 still untouched)
+String usage 26&83 (892&11481 still untouched)
! OK.
l.17 ...ing:fi endfor showstats;
let!!=skipto;
@@ -173,7 +173,7 @@ Path at line 18, after choices:
{elseif}
)
Beginning to dump on file trap.base
- (preloaded base=trap 2014.1.7)
-1117 strings of total length 20614
+ (preloaded base=trap 1776.7.4)
+1116 strings of total length 20570
395 memory locations dumped; current usage is 317&67
265 symbolic tokens
diff --git a/Build/source/texk/web2c/triptrap/mptrap.diffs b/Build/source/texk/web2c/triptrap/mptrap.diffs
index 870e2be6008..8fc9daad2bf 100644
--- a/Build/source/texk/web2c/triptrap/mptrap.diffs
+++ b/Build/source/texk/web2c/triptrap/mptrap.diffs
@@ -1,15 +1,50 @@
+#! /bin/sh -vx
+# Public domain.
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+
+TEXMFCNF=$testdir; export TEXMFCNF
++ TEXMFCNF=SRCDIR/triptrap
++ export TEXMFCNF
+
+rm -rf mptrapdir
++ rm -rf mptrapdir
+mkdir mptrapdir
++ mkdir mptrapdir
+cd mptrapdir
++ cd mptrapdir
+
+dvitype_args="-output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*'"
++ dvitype_args='-output-level=2 -dpi=72.27 -page-start='\''*.*.*.*.*.*.*.*.*.*'\'''
+
+echo ">>> Running MPTRAP test for MetaPost." >&2
++ echo '>>> Running MPTRAP test for MetaPost.'
>>> Running MPTRAP test for MetaPost.
+echo ">>> See $testdir/mptrap.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/triptrap/mptrap.diffs for example of acceptable diffs.'
>>> See SRCDIR/triptrap/mptrap.diffs for example of acceptable diffs.
+
+set -x
++ set -x
+
+./pltotf $testdir/trapf.pl trapf.tfm
+ ./pltotf SRCDIR/triptrap/trapf.pl trapf.tfm
+
+# get same filename in log
+$LN_S $testdir/mtrap.mp . || exit 1
+ ln -s SRCDIR/triptrap/mtrap.mp .
+
+./mpost --ini mtrap
+ ./mpost --ini mtrap
-This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
+This is MetaPost, version 2.00 (TeX Live 2021/dev) (kpathsea version 6.3.3/dev)
(./mtrap.mp
+diff $testdir/mtrap.log mtrap.log
+ diff SRCDIR/triptrap/mtrap.log mtrap.log
1c1
< This is MetaPost, version 1.203 (kpathsea version 3.5.7dev) (INIMP) 25 MAY 2009 12:47
---
-> This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1) 12 APR 2015 16:22
+> This is MetaPost, version 2.00 (TeX Live 2021/dev) (kpathsea version 6.3.3/dev) 27 JAN 2021 18:03
4,5c4,5
< Memory usage 19&13 (3972 still untouched)
< String usage 3&12 (101&7774 now untouched)
@@ -185,7 +220,7 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
929c929
< >> "%%Creator: MetaPost 1.203"
---
-> >> "%%Creator: MetaPost 1.999"
+> >> "%%Creator: MetaPost 2.00"
931c931
< >> "%*Font: trapf 9.9628 9.96265 35:c008"
---
@@ -205,7 +240,7 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
< String usage 16&50 (46&6607 now untouched)
---
> Memory usage 15664
-> String usage 70&1484
+> String usage 70&1483
966,968c966,968
< >> 42
< Memory usage 359&13 (2867 still untouched)
@@ -213,7 +248,7 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
---
> >> 41
> Memory usage 15664
-> String usage 90&2139
+> String usage 90&2138
973,976c973,976
< Memory usage 359&13 (2867 still untouched)
< String usage 17&84 (1&5292 now untouched)
@@ -221,13 +256,13 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
< String usage 30&97 (43&7558 now untouched)
---
> Memory usage 15664
-> String usage 91&2147
+> String usage 91&2146
> Memory usage 15664
-> String usage 152&2401
+> String usage 152&2400
978c978
< >> "%%CreationDate: 2009.05.25:1247"
---
-> >> "%%CreationDate: 2015.04.12:1622"
+> >> "%%CreationDate: 2021.01.27:1803"
982,984c982,984
< >> "%*Font: trapf 9.9628 9.96265 35:c008"
< Memory usage 359&13 (2867 still untouched)
@@ -235,13 +270,13 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
---
> >> "%*Font: trapf 9.96266 9.96265 35:c008"
> Memory usage 15664
-> String usage 152&2401
+> String usage 152&2400
987,988c987,988
< Memory usage 359&13 (2867 still untouched)
< String usage 30&88 (61&6618 now untouched)
---
> Memory usage 16432
-> String usage 172&2909
+> String usage 172&2908
999,1001c999,1001
< The equation I just processed has given some variable
< a value of 4096 or more. Continue and I'll try to cope
@@ -255,19 +290,19 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
< String usage 30&88 (61&6618 now untouched)
---
> Memory usage 16432
-> String usage 172&2909
+> String usage 172&2908
1022,1023c1022,1023
< Memory usage 361&13 (2867 still untouched)
< String usage 31&96 (60&6610 now untouched)
---
> Memory usage 16432
-> String usage 172&2909
+> String usage 172&2908
1071,1072c1071,1072
< Memory usage 361&13 (2867 still untouched)
< String usage 31&96 (59&6602 now untouched)
---
> Memory usage 16432
-> String usage 173&2917
+> String usage 173&2916
1076,1081c1076,1079
< 37 strings out of 104
< 508 string characters out of 7786
@@ -276,19 +311,20 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
< 5i,42n,6p,99b,2f stack positions out of 300i,84n,1500p,200b,25f
< 8 string compactions (moved 2756 characters, 222 strings)
---
-> 173 strings using 2917 characters
+> 173 strings using 2916 characters
> 18856 bytes of node memory
-> 317 symbolic tokens
-> 6i,48n,6p,99b,2f stack positions out of 16i,96n,7p,200b,4f
+> 320 symbolic tokens
+> 6i,49n,6p,99b,2f stack positions out of 16i,98n,7p,200b,4f
1082a1081
>
+diff $testdir/mtrap.0 mtrap.0
+ diff SRCDIR/triptrap/mtrap.0 mtrap.0
4,5c4,5
< %%Creator: MetaPost 1.203
< %%CreationDate: 2009.05.25:1247
---
-> %%Creator: MetaPost 1.999
-> %%CreationDate: 2015.04.12:1622
+> %%Creator: MetaPost 2.00
+> %%CreationDate: 2021.01.27:1803
7c7
< %*Font: trapf 9.9628 9.96265 35:c008
---
@@ -303,13 +339,14 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
< 0.00064 1 scale stroke grestore
---
> 1.00067 1 scale stroke grestore
+diff $testdir/mtrap.1 mtrap.1
+ diff SRCDIR/triptrap/mtrap.1 mtrap.1
4,5c4,5
< %%Creator: MetaPost 1.203
< %%CreationDate: 2009.05.25:1247
---
-> %%Creator: MetaPost 1.999
-> %%CreationDate: 2015.04.12:1622
+> %%Creator: MetaPost 2.00
+> %%CreationDate: 2021.01.27:1803
23,25c23,24
< 0 0 0 setrgbcolor 1
< 0 dtransform exch truncate exch idtransform pop setlinewidth [] 0 setdash
@@ -327,17 +364,27 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
< [0 -0.00064 -1 0 0 0] concat stroke grestore
---
> [0 -1.00067 -1 0 0 0] concat stroke grestore
+diff $testdir/writeo writeo
+ diff SRCDIR/triptrap/writeo writeo
+diff $testdir/writeo.2 writeo.2
+ diff SRCDIR/triptrap/writeo.2 writeo.2
+
+$LN_S $testdir/trap.mp . || exit 1
+ ln -s SRCDIR/triptrap/trap.mp .
+$LN_S $testdir/trap.mpx . || exit 1
+ ln -s SRCDIR/triptrap/trap.mpx .
+
+## Why is --jobname required? And why --ini?
+./mpost --ini --jobname=trap <$testdir/mptrap1.in >mptrapin.fot
+ ./mpost --ini --jobname=trap
+mv trap.log mptrapin.log || exit 1
+ mv trap.log mptrapin.log
+diff $testdir/mptrapin.log mptrapin.log
+ diff SRCDIR/triptrap/mptrapin.log mptrapin.log
1c1
< This is MetaPost, version 1.203 (kpathsea version 3.5.7dev) (INIMP) 25 MAY 2009 12:47
---
-> This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1) 12 APR 2015 16:22
+> This is MetaPost, version 2.00 (TeX Live 2021/dev) (kpathsea version 6.3.3/dev) 27 JAN 2021 18:03
40,60c40,47
< ! Missing `:' has been inserted.
< <to be read again>
@@ -532,5 +579,8 @@ This is MetaPost, version 1.999 (TeX Live 2015) (kpathsea version 6.2.1)
< 308 symbolic tokens
---
>
+
+exit 0
+ exit 0
-PASS: mplibdir/mptraptest
+PASS mplibdir/mptraptest.test (exit status: 0)
+PASS: mplibdir/mptraptest.test
diff --git a/Build/source/texk/web2c/triptrap/trap.typ b/Build/source/texk/web2c/triptrap/trap.typ
index 159c5ce7fc0..9994dcc000f 100644
--- a/Build/source/texk/web2c/triptrap/trap.typ
+++ b/Build/source/texk/web2c/triptrap/trap.typ
@@ -1,6 +1,6 @@
This is GFtype, Version 3.1
Options selected: Mnemonic output = true; pixel output = true.
-' METAFONT output 2014.01.07:1811'
+' METAFONT output 1776.07.04:1200'
35: beginning of char 5: -4096<=m<=4094 -2<=n<=1
(initially n=1) paint (4095)1
diff --git a/Build/source/texk/web2c/triptrap/trip.diffs b/Build/source/texk/web2c/triptrap/trip.diffs
index 639ff619a6c..7d9c024aa24 100644
--- a/Build/source/texk/web2c/triptrap/trip.diffs
+++ b/Build/source/texk/web2c/triptrap/trip.diffs
@@ -1,45 +1,150 @@
+#! /bin/sh -vx
+# $Id: triptest.test 53154 2019-12-17 19:06:20Z karl $
+# Copyright 2017-2021 Karl Berry <tex-live@tug.org>
+# Copyright 2009-2014 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
++ LC_ALL=C
++ export LC_ALL
++ LANGUAGE=C
++ export LANGUAGE
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+TEXMFCNF=$testdir; export TEXMFCNF
++ TEXMFCNF=SRCDIR/triptrap
++ export TEXMFCNF
+
+rm -rf tripdir
++ rm -rf tripdir
+mkdir tripdir
++ mkdir tripdir
+cd tripdir
++ cd tripdir
+mkdir a b
++ mkdir a b
+
+# See triptrap/README for explanation of why we believe these diffs are ok.
+
+# TeX Live generic
+cat >filter <<-\_EOF
+ s,^\*\*(\./trip\.tex ##,** \&trip trip \
+ (trip.tex ##,
+ s/ (TeX Live 20[^)]*)//
+ s/(preloaded format=tex)/(INITEX)/
+ s/format=trip [^)][^)]*)/format=trip)/
+ s/) [0-9A-Z: ]*$/)/
+ s,^(\./,(,
+ s/[1-9][0-9]* strings out of [1-9].*/XX strings out of YYY/
+ s/[1-9][0-9]* string characters out of [1-9].*/XXX string characters out of YYYY/
+ s/sequences out of [1-9].*/sequences out of YYYY/
+ s/[1-9] hyphenation exceptions* out of [1-9].*/X hyphenation exceptions out of YYY/
+ s/[1-9][0-9]* strings of total length [1-9].*/XXXX strings of total length YYYYY/
+ s/9 ops out of [1-9][0-9]*/9 ops out of YYY/
+ s/TeX output ....\...\...:.../TeX output YYYY.MM.DD:hhmm/
+ _EOF
++ cat
+
+# x86 glue rounding
+cat >>filter <<-\_EOF
+ s/ 16341\.999.*fil/ 16342.0fil/
+ s/ 16238\.999.*fil/ 16239.0fil/
+ s/ 16317\.999.*fil/ 16318.0fil/
+ s/ 16330\.999.*fil/ 16331.0fil/
+ s/ 16331\.999.*fil/ 16332.0fil/
+ s/ 16343\.999.*fil/ 16344.0fil/
+ s/ 9737\.587..fil/ 9737.58789fil/
+ s/down4 639342../down4 639342208/
+ s/y4 2039217./y4 203921760/
+ s/y0 2039217./y0 203921760/
+ _EOF
++ cat
+
+dvitype_args="-output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*'"
++ dvitype_args='-output-level=2 -dpi=72.27 -page-start='\''*.*.*.*.*.*.*.*.*.*'\'''
+
+echo ">>> Running TRIP test for TeX." >&2
++ echo '>>> Running TRIP test for TeX.'
>>> Running TRIP test for TeX.
+echo ">>> See $testdir/trip.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/triptrap/trip.diffs for example of acceptable diffs.'
>>> See SRCDIR/triptrap/trip.diffs for example of acceptable diffs.
+
+is_OK=:
++ is_OK=:
+
+set -x
++ set -x
+
+./pltotf $testdir/trip.pl trip.tfm || exit 1
+ ./pltotf SRCDIR/triptrap/trip.pl trip.tfm
+
+./tftopl ./trip.tfm trip.pl || exit 1
+ ./tftopl ./trip.tfm trip.pl
+
+diff $testdir/trip.pl trip.pl || is_OK=false
+ diff SRCDIR/triptrap/trip.pl trip.pl
+
+# get same filename in log
+rm -f trip.tex
++ rm -f trip.tex
+$LN_S $testdir/trip.tex . || exit 1
+ ln -s SRCDIR/triptrap/trip.tex .
+
+rm -f trip.fmt
++ rm -f trip.fmt
+./tex --progname=initex --ini <$testdir/trip1.in >tripin.fot
+ ./tex --progname=initex --ini
+if test ! -s trip.fmt; then
+ echo "*** trip.fmt not created by trip1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trip.fmt
+mv trip.log tripin.log || exit 1
+ mv trip.log tripin.log
+diff $testdir/tripin.log tripin.log
+ diff SRCDIR/triptrap/tripin.log tripin.log
1c1
-< This is TeX, Version 3.14159265 (INITEX) 7 JAN 2014 09:09
+< This is TeX, Version 3.141592653 (INITEX) 4 JUL 1776 12:00
---
-> This is TeX, Version 3.14159265 (TeX Live 2015) (INITEX) 12 APR 2015 16:22
+> This is TeX, Version 3.141592653 (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:03
3c3
< (trip.tex
---
> (./trip.tex
450,451c450,451
-< (preloaded format=trip 2014.1.7)
-< 1326 strings of total length 23646
+< (preloaded format=trip 1776.7.4)
+< 1326 strings of total length 23633
---
-> (preloaded format=trip 2015.4.12)
-> 1371 strings of total length 24606
+> (preloaded format=trip 2021.1.27)
+> 1372 strings of total length 24645
461c461
< Hyphenation trie of length 273 has 9 ops out of 500
---
> Hyphenation trie of length 273 has 9 ops out of 35111
+
+# May as well test non-ini second time through.
+./tex --progname=tex <$testdir/trip2.in >trip.fot
+ ./tex --progname=tex
+diff $testdir/trip.fot trip.fot
+ diff SRCDIR/triptrap/trip.fot trip.fot
1,3c1,2
-< This is TeX, Version 3.14159265 (INITEX)
+< This is TeX, Version 3.141592653 (INITEX)
< ** &trip trip
< (trip.tex ##
---
-> This is TeX, Version 3.14159265 (TeX Live 2015) (preloaded format=tex)
+> This is TeX, Version 3.141592653 (TeX Live 2021/dev) (preloaded format=tex)
> **(./trip.tex ##
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $testdir/trip.log trip.log
+ diff SRCDIR/triptrap/trip.log trip.log
1c1
-< This is TeX, Version 3.14159265 (preloaded format=trip 2014.1.7) 7 JAN 2014 09:59
+< This is TeX, Version 3.141592653 (preloaded format=trip 1776.7.4) 4 JUL 1776 12:00
---
-> This is TeX, Version 3.14159265 (TeX Live 2015) (preloaded format=trip 2015.4.12) 12 APR 2015 16:22
+> This is TeX, Version 3.141592653 (TeX Live 2021/dev) (preloaded format=trip 2021.1.27) 27 JAN 2021 18:03
3c3
< (trip.tex ##
---
@@ -80,35 +185,42 @@
< \vbox(16383.99998+0.0)x205.12613, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x205.12613, glue set 16343.99998fil
-6380c6380
+6381c6381
< (tripos.tex
---
> (./tripos.tex
-7296,7297c7296,7297
+7297,7298c7297,7298
< 47 strings out of 1674
-< 253 string characters out of 8354
+< 253 string characters out of 8367
---
-> 44 strings out of 1629
-> 261 string characters out of 15395
-7299c7299
+> 44 strings out of 1628
+> 261 string characters out of 15355
+7300c7300
< 372 multiletter control sequences out of 2100
---
> 372 multiletter control sequences out of 15000+0
-7301c7301
+7302c7302
< 2 hyphenation exceptions out of 307
---
> 1 hyphenation exception out of 659
+
+diff $testdir/tripos.tex tripos.tex || is_OK=false
++ diff SRCDIR/triptrap/tripos.tex tripos.tex
+
+eval ./dvitype $dvitype_args trip.dvi >trip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' trip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' trip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' trip.dvi
+$DIFF $DIFFFLAGS $testdir/trip.typ trip.typ
+ diff SRCDIR/triptrap/trip.typ trip.typ
1c1
< This is DVItype, Version 3.6
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
-< ' TeX output 2014.01.07:0959'
+< ' TeX output 1776.07.04:1200'
---
-> ' TeX output 2015.04.12:1622'
+> ' TeX output 2021.01.27:1803'
419c419
< 1121: down4 639342208
---
@@ -119,6 +231,12 @@
---
> 2535: y4 203921756
> 2540: y0 203921756
+
+for f in tripin.log trip.fot trip.log trip.typ; do
+ sed $testdir/$f -f filter >a/$f
+ sed $f -f filter >b/$f
+ diff a/$f b/$f || is_OK=false
+done
+ for f in tripin.log trip.fot trip.log trip.typ
+ sed SRCDIR/triptrap/tripin.log -f filter
+ sed tripin.log -f filter
@@ -135,7 +253,15 @@
+ sed SRCDIR/triptrap/trip.typ -f filter
+ sed trip.typ -f filter
+ diff a/trip.typ b/trip.typ
+
+$is_OK && {
+ echo ">>> All differences are acceptable." >&2
+} || {
+ echo "*** Error(s) found in trip test, investigate!" >&2
+ exit 1
+}
+ :
+ echo '>>> All differences are acceptable.'
>>> All differences are acceptable.
-PASS: triptest
+PASS triptest.test (exit status: 0)
+PASS: triptest.test
diff --git a/Build/source/texk/web2c/triptrap/trip.fot b/Build/source/texk/web2c/triptrap/trip.fot
index 7ae8e89d871..a6b3800563d 100644
--- a/Build/source/texk/web2c/triptrap/trip.fot
+++ b/Build/source/texk/web2c/triptrap/trip.fot
@@ -1,4 +1,4 @@
-This is TeX, Version 3.14159265 (INITEX)
+This is TeX, Version 3.141592653 (INITEX)
** &trip trip
(trip.tex ##
! Bad number (-7).
diff --git a/Build/source/texk/web2c/triptrap/trip.log b/Build/source/texk/web2c/triptrap/trip.log
index 585bf9b1fa5..13b2af19d83 100644
--- a/Build/source/texk/web2c/triptrap/trip.log
+++ b/Build/source/texk/web2c/triptrap/trip.log
@@ -1,4 +1,4 @@
-This is TeX, Version 3.14159265 (preloaded format=trip 2014.1.7) 7 JAN 2014 09:59
+This is TeX, Version 3.141592653 (preloaded format=trip 1776.7.4) 4 JUL 1776 12:00
** &trip trip
(trip.tex ##
{vertical mode: \tracingrestores}
@@ -2428,7 +2428,7 @@ deleted material, e.g., by typing `I$}'.
### display math mode entered at line 249
\mathord
.{}
-this will be denominator of:
+this will begin denominator of:
\fraction, thickness = default
\\mathord []
\\mathord []
@@ -3021,7 +3021,7 @@ oxbreadth 9999 \showboxdepth 9999 \showlists \pagegoal =10000pt}
./.\.\fam1 q
././\rule(9.0+*)x0.4
\mathord
-this will be denominator of:
+this will begin denominator of:
\fraction, thickness 9.0
\{}
### math mode entered at line 280
@@ -5015,14 +5015,15 @@ you'd better type `E' or `X' now and fix your file.
<to be read again>
8
l.356 ...ef\lo#1#2U3#4#5#6#7#8#8
- #9#{\relax}
+ #99#{\relax}
I've inserted the digit you should have used after the #.
Type `1' to delete what you did use.
! You already have nine parameters.
l.356 ...\lo#1#2U3#4#5#6#7#8#8#9
- #{\relax}
-I'm going to ignore the # sign you just used.
+ 9#{\relax}
+I'm going to ignore the # sign you just used,
+as well as the token that followed it.
{blank space }
{\ifcase}
@@ -7294,7 +7295,7 @@ Memory usage before: 334&431; after: 292&418; still untouched: 175
(end occurred when iftrue on line 413 was incomplete)
Here is how much of TeX's memory you used:
47 strings out of 1674
- 253 string characters out of 8354
+ 253 string characters out of 8367
2825 words of memory out of 3000
372 multiletter control sequences out of 2100
3041 words of font info for 4 fonts, out of 20000 for 75
diff --git a/Build/source/texk/web2c/triptrap/trip.tex b/Build/source/texk/web2c/triptrap/trip.tex
index a9205e52d5e..0bcfe5c1a8f 100644
--- a/Build/source/texk/web2c/triptrap/trip.tex
+++ b/Build/source/texk/web2c/triptrap/trip.tex
@@ -353,7 +353,7 @@ A \char'202$$\global\count8=\predisplaysize\leqno\kern1009pt$\par
\def\b#1\par{}
\outer\gdef\a^^@^^@a#1\par#2{}\tokens{\a^^@^^@a\par!
\long\gdef\l#1{}
-\outer\global\long\edef\lo#1#2U3#4#5#6#7#8#8#9#{\relax}
+\outer\global\long\edef\lo#1#2U3#4#5#6#7#8#8#99#{\relax}
\ifcase 1 \undefined\or\l\par\b{\par % occurrence of \par aborts \b
\b{\l\undefined}\par\else\b{\par}\fi % but not there!
\ifcase\iftrue-1a\else\fi \ifcase0\fi\else\ifcase5\fi\fi
diff --git a/Build/source/texk/web2c/triptrap/trip.typ b/Build/source/texk/web2c/triptrap/trip.typ
index 2ef2781289a..8bc03e15f7e 100644
--- a/Build/source/texk/web2c/triptrap/trip.typ
+++ b/Build/source/texk/web2c/triptrap/trip.typ
@@ -6,7 +6,7 @@ Options selected:
Resolution = 72.27000000 pixels per inch
numerator/denominator=25400000/473628672
magnification=2000; 0.00003052 pixels per DVI unit
-' TeX output 2014.01.07:0959'
+' TeX output 1776.07.04:1200'
42: beginning of page 0.0.0.0.11.0.0.0.0.0
87: down4 129105920
diff --git a/Build/source/texk/web2c/triptrap/tripin.log b/Build/source/texk/web2c/triptrap/tripin.log
index 1d983794568..b74d9ca61a8 100644
--- a/Build/source/texk/web2c/triptrap/tripin.log
+++ b/Build/source/texk/web2c/triptrap/tripin.log
@@ -1,4 +1,4 @@
-This is TeX, Version 3.14159265 (INITEX) 7 JAN 2014 09:09
+This is TeX, Version 3.141592653 (INITEX) 4 JUL 1776 12:00
**\input trip
(trip.tex
! Bad character code (256).
@@ -447,8 +447,8 @@ l.79 ...terns{toolate}\showbox0}
)
Beginning to dump on file trip.fmt
- (preloaded format=trip 2014.1.7)
-1326 strings of total length 23646
+ (preloaded format=trip 1776.7.4)
+1326 strings of total length 23633
471 memory locations dumped; current usage is 96&278
341 multiletter control sequences
\font\nullfont=nullfont
diff --git a/Build/source/texk/web2c/uptexdir/uptex-m.ch b/Build/source/texk/web2c/uptexdir/uptex-m.ch
index 6173e09f778..78f830cb897 100644
--- a/Build/source/texk/web2c/uptexdir/uptex-m.ch
+++ b/Build/source/texk/web2c/uptexdir/uptex-m.ch
@@ -53,7 +53,7 @@
@d upTeX_revision==".27"
@d upTeX_version_string=='-u1.27' {current u\pTeX\ version}
@#
-@d upTeX_banner=='This is upTeX, Version 3.14159265',pTeX_version_string,upTeX_version_string
+@d upTeX_banner=='This is upTeX, Version 3.141592653',pTeX_version_string,upTeX_version_string
@d upTeX_banner_k==upTeX_banner
{printed when u\pTeX\ starts}
@z
diff --git a/Build/source/texk/web2c/uptexdir/uptexextra.h b/Build/source/texk/web2c/uptexdir/uptexextra.h
index 9e05cf7dec4..e1fa75424d7 100644
--- a/Build/source/texk/web2c/uptexdir/uptexextra.h
+++ b/Build/source/texk/web2c/uptexdir/uptexextra.h
@@ -6,7 +6,7 @@
#include <ptexdir/ptex_version.h> /* for PTEX_VERSION */
#include <uptexdir/uptex_version.h> /* for UPTEX_VERSION */
-#define BANNER "This is upTeX, Version 3.14159265-" PTEX_VERSION "-" UPTEX_VERSION
+#define BANNER "This is upTeX, Version 3.141592653-" PTEX_VERSION "-" UPTEX_VERSION
#define COPYRIGHT_HOLDER "D.E. Knuth"
#define AUTHOR NULL
#define PROGRAM_HELP UPTEXHELP
diff --git a/Build/source/texk/web2c/uptexdir/uptrip/uptrip.diffs b/Build/source/texk/web2c/uptexdir/uptrip/uptrip.diffs
index fc0f354ecd1..2bb94558a14 100644
--- a/Build/source/texk/web2c/uptexdir/uptrip/uptrip.diffs
+++ b/Build/source/texk/web2c/uptexdir/uptrip/uptrip.diffs
@@ -1,329 +1,605 @@
+#! /bin/sh -vx
+# $Id: uptriptest.test 48633 2018-09-09 17:56:55Z karl $
+# Copyright 2017-2018 Karl Berry <tex-live@tug.org>
+# Copyright 2011-2014 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE
++ LC_ALL=C
++ export LC_ALL
++ LANGUAGE=C
++ export LANGUAGE
+
+testdir=$abs_srcdir/triptrap
++ testdir=SRCDIR/triptrap
+uptestdir=$abs_srcdir/uptexdir/uptrip
++ uptestdir=SRCDIR/uptexdir/uptrip
+
+TEXMFCNF=$uptestdir; export TEXMFCNF
++ TEXMFCNF=SRCDIR/uptexdir/uptrip
++ export TEXMFCNF
+
+rm -rf uptripdir
++ rm -rf uptripdir
+mkdir uptripdir
++ mkdir uptripdir
+cd uptripdir
++ cd uptripdir
+
+dvitype_args="-output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*'"
++ dvitype_args='-output-level=2 -dpi=72.27 -page-start='\''*.*.*.*.*.*.*.*.*.*'\'''
+
+echo ">>> Running TRIP test for upTeX." >&2
++ echo '>>> Running TRIP test for upTeX.'
>>> Running TRIP test for upTeX.
+echo ">>> See $uptestdir/uptrip.diffs for example of acceptable diffs." >&2
++ echo '>>> See SRCDIR/uptexdir/uptrip/uptrip.diffs for example of acceptable diffs.'
>>> See SRCDIR/uptexdir/uptrip/uptrip.diffs for example of acceptable diffs.
+
+# upTeX outputs direction of boxes.
+P_SED1='s/, yoko direction//;s/yoko direction, //'
++ P_SED1='s/, yoko direction//;s/yoko direction, //'
+P_SED2='s/yoko(math) direction, //'
++ P_SED2='s/yoko(math) direction, //'
+
+is_OK=:
++ is_OK=:
+
+set -x
++ set -x
+
+echo "*** TRIP test for upTeX ***."
+ echo '*** TRIP test for upTeX ***.'
*** TRIP test for upTeX ***.
+
+./pltotf $testdir/trip.pl trip.tfm || exit 1
+ ./pltotf SRCDIR/triptrap/trip.pl trip.tfm
+
+./tftopl ./trip.tfm trip.pl || exit 1
+ ./tftopl ./trip.tfm trip.pl
+
+diff $testdir/trip.pl trip.pl || is_OK=false
+ diff SRCDIR/triptrap/trip.pl trip.pl
+
+# get same filename in log
+$LN_S $testdir/trip.tex .
+ ln -s SRCDIR/triptrap/trip.tex .
+
+rm -f trip.log
+ rm -f trip.log
+./uptex --progname=upinitex --ini <$testdir/trip1.in >uptripin.fot
+ ./uptex --progname=upinitex --ini
+if test ! -s trip.fmt; then
+ echo "*** trip.fmt not created by trip1.in, investigate!" >&2
+ exit 1
+fi
+ test '!' -s trip.fmt
+sed "$P_SED1" trip.log > uptripin.log || exit 1
+ sed 's/, yoko direction//;s/yoko direction, //' trip.log
+diff $testdir/tripin.log uptripin.log
+ diff SRCDIR/triptrap/tripin.log uptripin.log
1c1
-< This is TeX, Version 3.14159265 (INITEX) 7 JAN 2014 09:09
+< This is TeX, Version 3.141592653 (INITEX) 4 JUL 1776 12:00
---
-> This is upTeX, Version 3.14159265-p3.6-u1.20 (utf8.uptex) (TeX Live 2015) (INITEX) 12 APR 2015 16:22
-3,11c3
+> This is upTeX, Version 3.141592653-p3.8.3-u1.27 (utf8.uptex) (TeX Live 2021/dev) (INITEX) 27 JAN 2021 18:03
+3c3
< (trip.tex
-< ! Bad character code (256).
-< <to be read again>
-< -
-< l.26 \nonstopmode\lccode256-
-< 0\mathchardef\a="8000\def\a{ SC...
-< A character number must be between 0 and 255.
-< I changed this one to zero.
-<
---
> (./trip.tex
-91c83,84
+91c91,92
< ### horizontal mode entered at line 77 (language255:hyphenmin1,63)
---
> ### horizontal mode entered at line 77 (language255:hyph
> enmin1,63)
-450,453c443,446
-< (preloaded format=trip 2014.1.7)
-< 1326 strings of total length 23646
+93a95
+> \displace 0.0
+95a98
+> \displace 0.0
+368a372
+> ....\displace 0.0
+370a375
+> ....\displace 0.0
+437,438d441
+< ....\rip 6 (ligature )
+< ....\rip 7 (ligature )
+450,453c453,456
+< (preloaded format=trip 1776.7.4)
+< 1326 strings of total length 23633
< 471 memory locations dumped; current usage is 96&278
< 341 multiletter control sequences
---
-> (preloaded format=trip 2015.4.12)
-> 1462 strings of total length 25505
-> 485 memory locations dumped; current usage is 106&278
-> 383 multiletter control sequences
-461c454
+> (preloaded format=trip 2021.1.27)
+> 1489 strings of total length 26192
+> 487 memory locations dumped; current usage is 108&278
+> 395 multiletter control sequences
+461c464
< Hyphenation trie of length 273 has 9 ops out of 500
---
> Hyphenation trie of length 273 has 9 ops out of 35111
+
+# May as well test non-ini second time through.
+rm -f trip.log
+ rm -f trip.log
+./uptex --progname=uptex <$testdir/trip2.in >uptrip.fot
+ ./uptex --progname=uptex
+sed "$P_SED1;$P_SED2" trip.log > uptrip.log
+ sed 's/, yoko direction//;s/yoko direction, //;s/yoko(math) direction, //' trip.log
+diff $testdir/trip.fot uptrip.fot
+ diff SRCDIR/triptrap/trip.fot uptrip.fot
1,3c1,2
-< This is TeX, Version 3.14159265 (INITEX)
+< This is TeX, Version 3.141592653 (INITEX)
< ** &trip trip
< (trip.tex ##
---
-> This is upTeX, Version 3.14159265-p3.6-u1.20 (utf8.uptex) (TeX Live 2015) (preloaded format=uptex)
+> This is upTeX, Version 3.141592653-p3.8.3-u1.27 (utf8.uptex) (TeX Live 2021/dev) (preloaded format=uptex)
> **(./trip.tex ##
17c16
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 190&313; after: 114&278; still untouched: 3113
+> Memory usage before: 192&313; after: 116&278; still untouched: 3113
75c74
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 452&431; after: 390&418; still untouched: 241
+> Memory usage before: 458&431; after: 396&418; still untouched: 484
+
+# We use $DIFF instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+$DIFF $DIFFFLAGS $testdir/trip.log uptrip.log
+ diff SRCDIR/triptrap/trip.log uptrip.log
1c1
-< This is TeX, Version 3.14159265 (preloaded format=trip 2014.1.7) 7 JAN 2014 09:59
+< This is TeX, Version 3.141592653 (preloaded format=trip 1776.7.4) 4 JUL 1776 12:00
---
-> This is upTeX, Version 3.14159265-p3.6-u1.20 (utf8.uptex) (TeX Live 2015) (preloaded format=trip 2015.4.12) 12 APR 2015 16:22
+> This is upTeX, Version 3.141592653-p3.8.3-u1.27 (utf8.uptex) (TeX Live 2021/dev) (preloaded format=trip 2021.1.27) 27 JAN 2021 18:03
3c3
< (trip.tex ##
---
> (./trip.tex ##
-58a59,62
-> \openout0 = `8terminal.tex'.
->
-> \openout10 = `tripos.tex'.
->
-73c77
+73c73
< Memory usage before: 159&313; after: 102&278; still untouched: 1613
---
-> Memory usage before: 190&313; after: 114&278; still untouched: 3113
-385,386c389,390
+> Memory usage before: 192&313; after: 116&278; still untouched: 3113
+113a114
+> .\displace 0.0
+198a200
+> .\displace 0.0
+253a256
+> .\displace 0.0
+308a312
+> .\displace 0.0
+349a354
+> .\displace 0.0
+385,386c390,391
< \insert100, natural size 803.09999; split(1.0 plus 43.0,-2.0); float cos
< t 100
---
> \insert100Y, natural size 803.09999; split(1.0 plus 43.0,-2.0); float co
> st 100
-426c430
+406a412
+> ....\displace 0.0
+409a416
+> ....\displace 0.0
+412a420
+> ....\displace 0.0
+420a429
+> .\displace 0.0
+426c435
< \insert200, natural size 400.0; split(0.0,-2.0); float cost 100
---
> \insert200Y, natural size 400.0; split(0.0,-2.0); float cost 100
-441c445
+435a445
+> .\displace 0.0
+441c451
< \insert200, natural size 400.0; split(1.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(1.0,-1.0); float cost 100
-456c460
+450a461
+> .\displace 0.0
+456c467
< \insert200, natural size 400.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 400.0; split(2.0,-1.0); float cost 100
-474c478
+466a478
+> .\displace 0.0
+474c486
< \special{^^80-1000.0pt}
---
> \special{€-1000.0pt}
-483,484c487,488
+483,484c495,496
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-642c646
+588a601
+> .....\displace 0.0
+591a605
+> .....\displace 0.0
+594a609
+> .....\displace 0.0
+630a646
+> ......\displace 0.0
+633a650
+> ......\displace 0.0
+636a654
+> ......\displace 0.0
+642c660
< Memory usage before: 747&484; after: 581&481; still untouched: 1492
---
-> Memory usage before: 1086&483; after: 838&480; still untouched: 1993
-647c651,652
+> Memory usage before: 1114&483; after: 860&480; still untouched: 1993
+647c665,666
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-689c694
+650a670
+> .\displace 0.0
+660a681
+> .\displace 0.0
+670a692
+> .\displace 0.0
+681a704
+> .\displace 0.0
+689c712
< \special{^^80-1000.0pt}
---
> \special{€-1000.0pt}
-693,694c698,699
+693,694c716,717
< \insert100, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 10
< 0
---
> \insert100Y, natural size 535.4; split(1.0 plus 43.0,-2.0); float cost 1
> 00
-701c706
+701c724
< \insert200, natural size 2.0; split(2.0,-1.0); float cost 100
---
> \insert200Y, natural size 2.0; split(2.0,-1.0); float cost 100
-714,715c719,720
+714,715c737,738
< \insert200, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
< 3
---
> \insert200Y, natural size 10000.0; split(1.0 plus 43.0,-1.0); float cost
> 3
-815c820
+815c838
< Memory usage before: 475&470; after: 290&466; still untouched: 1473
---
-> Memory usage before: 690&469; after: 406&465; still untouched: 1974
-820c825,826
+> Memory usage before: 706&469; after: 414&465; still untouched: 1974
+820c843,844
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-915c921
+915c939
< Memory usage before: 218&459; after: 149&458; still untouched: 1473
---
> Memory usage before: 304&458; after: 194&457; still untouched: 1974
-920c926,927
+920c944,945
< ### internal vertical mode entered at line 150 (\output routine)
---
> ### internal vertical mode entered at line 150 (\output
> routine)
-1070c1077
+1070c1095
< Memory usage before: 118&328; after: 102&328; still untouched: 1473
---
> Memory usage before: 146&327; after: 122&327; still untouched: 1974
-1405c1412
+1405c1430
< \vbox(16383.99998+0.0)x1000.0, glue set 16342.0fil
---
> \vbox(16383.99998+0.0)x1000.0, glue set 16341.99998fil
-1504a1512
+1493a1519
+> ..\displace 0.0
+1503a1530
> ..\displace 0.0
-1511c1519
+1504a1532
+> ..\displace 0.0
+1511c1539
< Memory usage before: 990&376; after: 584&370; still untouched: 735
---
-> Memory usage before: 1486&375; after: 838&369; still untouched: 1974
-1954c1962
+> Memory usage before: 1494&375; after: 842&369; still untouched: 1974
+1887c1915
+< .\rip A
+---
+> .\displace 0.0
+1923c1951
+< .\hbox(0.0+0.0)x120.0 []
+---
+> .\hbox(0.0+0.0)x120.0, yoko(math) direction []
+1954c1982
< (tripos.tex
---
> (./tripos.tex
-2018c2026
+2018c2046
< \vbox(16383.99998+1.0)x100.0, glue set 16239.0fil
---
> \vbox(16383.99998+1.0)x100.0, glue set 16238.99998fil
-2048,2049c2056,2057
+2022a2051
+> ..\displace 0.0
+2048,2049c2077,2078
< ..\rip ^^82 (ligature CA)
< ..\rip ^^82 (ligature CA)
---
> ..\rip ‚ (ligature CA)
> ..\rip ‚ (ligature CA)
-2189c2197
+2058a2088
+> ..\displace 0.0
+2071a2102
+> ..\displace 0.0
+2092a2124
+> ..\displace 0.0
+2113a2146
+> ..\displace 0.0
+2123a2157
+> ..\displace 0.0
+2142a2177
+> ..\displace 0.0
+2150a2186
+> ..\displace 0.0
+2171c2207,2208
+< ..\hbox(0.0+0.0)x120.0
+---
+> ..\hbox(0.0+0.0)x120.0, yoko(math) direction
+> ...\displace 0.0
+2189c2226
< Memory usage before: 950&531; after: 546&448; still untouched: 706
---
-> Memory usage before: 1454&530; after: 804&447; still untouched: 1945
-2397c2405
+> Memory usage before: 1490&530; after: 822&447; still untouched: 1945
+2397c2434
< ! Improper alphabetic constant.
---
> ! Improper alphabetic or KANJI constant.
-2533c2541
+2533c2570
< \vbox(16383.99998+0.0)x20.0, glue set 16331.0fil
---
> \vbox(16383.99998+0.0)x20.0, glue set 16330.99998fil
-2575c2583
+2544a2582
+> ..\displace 0.0
+2570c2608,2609
+< .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0
+---
+> .\hbox(0.0+0.0)x15.0, glue set 0.1875, shifted 5.0, yoko(math) direction
+>
+2572c2611
+< ..\hbox(0.0+0.0)x0.0
+---
+> ..\hbox(0.0+0.0)x0.0, yoko(math) direction
+2575c2614
< Memory usage before: 339&413; after: 236&405; still untouched: 706
---
-> Memory usage before: 489&411; after: 323&403; still untouched: 1945
-3051c3059
+> Memory usage before: 493&411; after: 325&403; still untouched: 1945
+2650,2651c2689,2690
+< Dimensions can be in units of em, ex, in, pt, pc,
+< cm, mm, dd, cc, bp, or sp; but yours is a new one!
+---
+> Dimensions can be in units of em, ex, zw, zh, in, pt, pc,
+> cm, mm, dd, cc, bp, H, Q, or sp; but yours is a new one!
+3038c3077,3078
+< ^\hbox(7.0+1.0)x2.0
+---
+> ^\hbox(7.0+1.0)x2.0, yoko(math) direction
+> ^.\displace 0.0
+3051c3091
< \insert0, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
---
> \insert0Y, natural size 0.0; split(1.0 plus 43.0,-2.0); float cost 100
-3054c3062
+3054c3094
< .\fam0 ^^c8
---
> .\fam0 È
-3143a3152
+3056c3096
+< .\vbox(-2.0+0.0)x0.0
+---
+> .\vbox(-2.0+0.0)x0.0, yoko(math) direction
+3060c3100,3101
+< ^.\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ^.\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> ^..\displace 0.0
+3140a3182
+> .....\displace 0.0
+3142a3185
+> ....|\displace 0.0
+3143a3187
> ....\displace 0.0
-3235c3244
+3151a3196
+> .\displace 0.0
+3235c3280
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-3326c3335
+3286c3331
+< .\vbox(6.0+-8.0)x0.0
+---
+> .\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3326c3371
< \vbox(10000.0+2.0)x28.0, glue set 9737.58789fil
---
> \vbox(10000.0+2.0)x28.0, glue set 9737.58742fil
-3411c3420
+3329a3375
+> ..\displace 0.0
+3374c3420
+< ..\vbox(6.0+-8.0)x0.0
+---
+> ..\vbox(6.0+-8.0)x0.0, yoko(math) direction
+3385c3431,3432
+< ......\hbox(7.0+1.0)x2.0, shifted -2.0
+---
+> ......\hbox(7.0+1.0)x2.0, shifted -2.0, yoko(math) direction
+> .......\displace 0.0
+3411c3458
< p ^^82
---
> p ‚
-3547a3557
+3544a3592
+> ..........\displace 0.0
+3546a3595
+> .........|\displace 0.0
+3547a3597
> .........\displace 0.0
-3616c3626
+3564c3614,3615
+< ...\hbox(7.0+1.0)x1.99
+---
+> ...\hbox(7.0+1.0)x1.99, yoko(math) direction
+> ....\displace 0.0
+3616c3667
< Memory usage before: 2170&521; after: 1181&459; still untouched: 175
---
-> Memory usage before: 3259&519; after: 1739&457; still untouched: 241
-3864c3874
+> Memory usage before: 3279&519; after: 1749&457; still untouched: 484
+3864c3915
< \vbox(16383.99998+2.0)x100.0, glue set 16318.0fil
---
> \vbox(16383.99998+2.0)x100.0, glue set 16317.99997fil
-3951c3961
+3919,3920c3970,3972
+< ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247
+< ....\vbox(-0.00002+0.0)x0.0
+---
+> ...\vbox(-0.00002+13.00002)x52.5, glue set - 0.00247, yoko(math) directi
+> on
+> ....\vbox(-0.00002+0.0)x0.0, yoko(math) direction
+3951c4003
< Memory usage before: 640&415; after: 397&410; still untouched: 175
---
-> Memory usage before: 955&413; after: 569&408; still untouched: 241
-3985c3995
+> Memory usage before: 955&413; after: 569&408; still untouched: 484
+3985c4037
< ^^82
---
> ‚
-3991c4001
+3991c4043
< []\ip A ^^82
---
> []\ip A ‚
-4034c4044
+4034c4086
< \vbox(16383.99998+0.0)x8236.0, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x8236.0, glue set 16343.99998fil
-4041c4051
+4041c4093
< ..\ip ^^82
---
> ..\ip ‚
-4053c4063
+4053c4105
< Memory usage before: 235&401; after: 178&399; still untouched: 175
---
-> Memory usage before: 338&399; after: 244&397; still untouched: 241
-4420c4430
+> Memory usage before: 338&399; after: 244&397; still untouched: 484
+4420c4472
< \vbox(16383.99998+0.0)x100.0, glue set 16332.0fil
---
> \vbox(16383.99998+0.0)x100.0, glue set 16331.99998fil
-4506c4516
+4425a4478
+> ...\displace 0.0
+4447a4501
+> ...\displace 0.0
+4475a4530
+> ...\displace 0.0
+4492a4548
+> ...\displace 0.0
+4506c4562
< Memory usage before: 651&432; after: 417&418; still untouched: 175
---
-> Memory usage before: 988&431; after: 594&417; still untouched: 241
-4742c4752,4753
+> Memory usage before: 1004&431; after: 602&417; still untouched: 484
+4742c4798,4799
< \vbox(16383.99998+0.0)x205.12613, glue set 16344.0fil
---
> \vbox(16383.99998+0.0)x205.12613, glue set 16343.99998fil, yoko directio
> n
-4828c4839
+4746a4804
+> ...\displace 0.0
+4762a4821
+> .....\displace 0.0
+4777a4837
+> ......\displace 0.0
+4828c4888
< Memory usage before: 776&458; after: 464&452; still untouched: 175
---
-> Memory usage before: 1170&457; after: 672&451; still untouched: 241
-5700c5711
+> Memory usage before: 1182&457; after: 678&451; still untouched: 484
+5701c5761
< ! \textfont 0 is undefined (character ^^c8).
---
> ! \textfont 0 is undefined (character È).
-6380c6391
+6381c6441
< (tripos.tex
---
> (./tripos.tex
-6501c6512
+6502c6562
< l.429 ...^^M=13 \def^^M{\relax}#
---
> l.429 ...^^M=13 \defqqM{\relax}#
-6595c6606
+6596c6656
< Memory usage before: 819&428; after: 720&426; still untouched: 175
---
-> Memory usage before: 1216&428; after: 1066&426; still untouched: 241
-7155c7166
+> Memory usage before: 1228&428; after: 1074&426; still untouched: 484
+6853c6913
+< .|vbox(0.0+0.0)x0.0
+---
+> .|vbox(0.0+0.0)x0.0, yoko(math) direction
+6876a6937
+> ..|displace 0.0
+6891a6953
+> ..|displace 0.0
+6926a6989
+> .|displace 0.0
+6959a7023
+> .|displace 0.0
+6961c7025,7026
+< .|hbox(0.0+0.0)x0.0
+---
+> .|hbox(0.0+0.0)x0.0, yoko(math) direction
+> ..|displace 0.0
+6991a7057
+> .|displace 0.0
+7103a7170
+> ...|displace 0.0
+7108d7174
+< ...|ip A (ligature BB)
+7116a7183
+> ...|displace 0.0
+7125d7191
+< ...|kern2.0
+7126a7193
+> .|displace 0.0
+7136c7203
+< ...|vbox(0.0+0.0)x0.0
+---
+> ...|vbox(0.0+0.0)x0.0, yoko(math) direction
+7156c7223
< Memory usage before: 895&439; after: 290&420; still untouched: 175
---
-> Memory usage before: 1332&439; after: 388&420; still untouched: 241
-7288c7299
+> Memory usage before: 1346&439; after: 394&420; still untouched: 484
+7289c7356
< Memory usage before: 334&431; after: 292&418; still untouched: 175
---
-> Memory usage before: 452&431; after: 390&418; still untouched: 241
-7296,7299c7307,7310
+> Memory usage before: 458&431; after: 396&418; still untouched: 484
+7297,7300c7364,7367
< 47 strings out of 1674
-< 253 string characters out of 8354
+< 253 string characters out of 8367
< 2825 words of memory out of 3000
< 372 multiletter control sequences out of 2100
---
-> 44 strings out of 1538
-> 261 string characters out of 14495
-> 4259 words of memory out of 4500
-> 414 multiletter control sequences out of 15000+0
-7301c7312
+> 44 strings out of 1511
+> 261 string characters out of 13808
+> 4016 words of memory out of 4500
+> 426 multiletter control sequences out of 15000+0
+7302c7369
< 2 hyphenation exceptions out of 307
---
> 1 hyphenation exception out of 659
+
+mv tripos.tex uptripos.tex
++ mv tripos.tex uptripos.tex
+diff $testdir/tripos.tex uptripos.tex || is_OK=false
++ diff SRCDIR/triptrap/tripos.tex uptripos.tex
+
+eval ./dvitype $dvitype_args trip.dvi >uptrip.typ || exit 1
+ eval ./dvitype -output-level=2 -dpi=72.27 '-page-start='\''*.*.*.*.*.*.*.*.*.*'\''' trip.dvi
+./dvitype -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*' trip.dvi
++ ./dvitype -output-level=2 -dpi=72.27 '-page-start=*.*.*.*.*.*.*.*.*.*' trip.dvi
+$DIFF $DIFFFLAGS $testdir/trip.typ uptrip.typ
+ diff SRCDIR/triptrap/trip.typ uptrip.typ
1c1
< This is DVItype, Version 3.6
---
-> This is DVItype, Version 3.6 (TeX Live 2015)
+> This is DVItype, Version 3.6 (TeX Live 2021/dev)
9c9
-< ' TeX output 2014.01.07:0959'
+< ' TeX output 1776.07.04:1200'
---
-> ' TeX output 2015.04.12:1622'
+> ' TeX output 2021.01.27:1803'
419c419
< 1121: down4 639342208
---
@@ -334,5 +610,12 @@
---
> 2535: y4 203921756
> 2540: y0 203921756
+
+$is_OK || {
+ echo ">>> There were some errors." >&2
+ exit 1
+}
+ :
-PASS: uptexdir/uptriptest
+
+PASS uptexdir/uptriptest.test (exit status: 0)
+PASS: uptexdir/uptriptest.test
diff --git a/Build/source/texk/web2c/vftovp.web b/Build/source/texk/web2c/vftovp.web
index 0abfdbefc18..a1457093382 100644
--- a/Build/source/texk/web2c/vftovp.web
+++ b/Build/source/texk/web2c/vftovp.web
@@ -18,7 +18,7 @@
\def\title{VF\lowercase{to}VP}
\def\contentspagenumber{101}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont VFtoVP} processor}
@@ -145,7 +145,7 @@ purposes, when fonts designed for one output device are unavailable on another.
@ A \.{VF} file is organized as a stream of 8-bit bytes, using conventions
borrowed from \.{DVI} and \.{PK} files. Thus, a device driver that knows
about \.{DVI} and \.{PK} format will already
-contain most of the mechanisms necessary to process \.{VF} files.
+contain most of the mechanisms necessary to process \.{VF} files.
We shall assume that \.{DVI} format is understood; the conventions in the
\.{DVI} documentation (see, for example, {\sl \TeX: The Program}, part 31)
are adopted here to define \.{VF} format.
@@ -189,7 +189,7 @@ is a |fix_word| relative to the design size of the virtual font.
Thus if the local font is to be used at the same size
as the design size of the virtual font itself, |s| will be the
integer value $2^{20}$. The value of |s| must be positive and less than
-$2^{24}$ (thus less than 16 when considered as a |fix_word|).
+$2^{24}$ (thus less than 16 when considered as a |fix_word|).
The dimension~|d| is a |fix_word| in units of printer's points; hence it
is identical to the design size found in the corresponding \.{TFM} file.
@@ -840,7 +840,7 @@ if vf[vf_ptr-10]>0 then {|s| is negative or exceeds $2^{24}-1$}
a:=vf[vf_ptr-2]; l:=vf[vf_ptr-1]; vf_store(a+l); {|n[a+l]|}
@<Print the name of the local font@>;
@<Read the local font's \.{TFM} file and record the characters it contains@>;
-incr(font_ptr); font_start[font_ptr]:=vf_ptr;
+incr(font_ptr); font_start[font_ptr]:=vf_ptr;
end
@ The font area may need to be separated from the font name on some systems.
@@ -1270,7 +1270,7 @@ end
@* Outputting the TFM info.
\TeX\ checks the information of a \.{TFM} file for validity as the
file is being read in, so that no further checks will be needed when
-typesetting is going on. And when it finds something wrong, it justs
+typesetting is going on. And when it finds something wrong, it just
calls the file ``bad,'' without identifying the nature of the problem,
since \.{TFM} files are supposed to be good almost all of the time.
@@ -2171,7 +2171,7 @@ push:begin if top=max_stack then
incr(top); wstack[top]:=wstack[top-1]; xstack[top]:=xstack[top-1];
ystack[top]:=ystack[top-1]; zstack[top]:=zstack[top-1]; out('(PUSH)');
out_ln;
- end;
+ end;
pop:if top=0 then bad_vf('More pops than pushes!')
@.More pops than pushes@>
else begin decr(top); out('(POP)'); out_ln;
diff --git a/Build/source/texk/web2c/vptovf.web b/Build/source/texk/web2c/vptovf.web
index 0da7cd8a7ca..724398e61ab 100644
--- a/Build/source/texk/web2c/vptovf.web
+++ b/Build/source/texk/web2c/vptovf.web
@@ -3,7 +3,7 @@
% Version 1.1 fixed some for-loop indices for stricter Pascal (April 1990).
% Version 1.2 fixed `nonexistent char 0' bug, and a bit more (September 1990).
% Version 1.3 has more robust `out_scaled' (March 1991).
-% Version 1.4 (March 1995) initialized lk_step_ended (Armin K\"ollner).
+% Version 1.4 (March 1995) initialized lk_step_ended (Armin K\"ollner).
% Version 1.5 (August 1998) corrected vf_fix(0) (Wayne Sullivan).
% Version 1.6 (January 2014) corrected possible end-of-line glitch (Ken Nakano),
% and get_fix now treats -- as + (Peter Breitenlohner).
@@ -22,7 +22,7 @@
\def\title{VP\lowercase{to}VF}
\def\contentspagenumber{201}
\def\topofcontents{\null
- \def\titlepage{F} % include headline on the contents page
+ \titlefalse % include headline on the contents page
\def\rheader{\mainfont\hfil \contentspagenumber}
\vfill
\centerline{\titlefont The {\ttitlefont VPtoVF} processor}
@@ -46,7 +46,7 @@ of the given \.{VPL} file, so that the \.{VF} file should be acceptable to
device drivers and the \.{TFM} file should be acceptable to \TeX.
\indent\.{VPtoVF} is an extended version of the program \.{PLtoTF}, which
-is part of the standard \TeX ware library.
+is part of the standard \TeX ware library.
The idea of a virtual font was inspired by the work of David R. Fuchs
@^Fuchs, David Raymond@>
who designed a similar set of conventions in 1984 while developing a
@@ -440,7 +440,7 @@ both be used within the same \.{CHARACTER} list.
\yskip\noindent
The elements of a \.{VARCHAR} property list are either \.{TOP}, \.{MID},
-\.{BOT} or \.{REP}; the values are integers, which must be zero or the number
+\.{BOT}, or \.{REP}; the values are integers, which must be zero or the number
of a character in the font. A zero value for \.{TOP}, \.{MID}, or \.{BOT} means
that the corresponding piece of the extensible character is absent. A nonzero
value, or a \.{REP} value of zero, denotes the character code used to make
@@ -475,8 +475,8 @@ The slashes specify retention of the left or right original character; the
\yskip\hang\.{KRN} (a one-byte value and a real value). The instruction
`\.{(KRN} $c$ $r$\.)' means, ``If the next character is $c$, then insert
-a blank space of width $r$ between the current character character and $c$;
-otherwise go on to the next intruction.'' The value of $r$, which is in
+a blank space of width $r$ between the current character and $c$;
+otherwise go on to the next instruction.'' The value of $r$, which is in
design units, is often negative. Character code $c$ must exist
in the font.
diff --git a/Build/source/texk/web2c/weave.ch b/Build/source/texk/web2c/weave.ch
index e17a57c6733..e9b33aa29b2 100644
--- a/Build/source/texk/web2c/weave.ch
+++ b/Build/source/texk/web2c/weave.ch
@@ -304,13 +304,6 @@ begin if no_xref then return;
if (reserved(p)or(byte_start[p]+1=byte_start[p+ww]))and
@z
-@x [179] only used when debugging
-@!k:0..long_buf_size; {index into |buffer|}
-@y
-@!debug @!k:0..long_buf_size; {index into |buffer|}
-gubed@;
-@z
-
@x [239] omit index and module names if no_xref set
@<Phase III: Output the cross-reference index@>=
@y
diff --git a/Build/source/texk/web2c/weave.web b/Build/source/texk/web2c/weave.web
index c1785c35cf9..13f06ded0ac 100644
--- a/Build/source/texk/web2c/weave.web
+++ b/Build/source/texk/web2c/weave.web
@@ -26,6 +26,7 @@
% Version 4.2 conforms to ANSI standard for-loop rules (September, 1990).
% Version 4.3 catches extra } in input (Breitenlohner, September, 1991).
% Version 4.4 corrects changed_module logic, %-overflow (January, 1992).
+% Version 4.5 corrects archaic @@z logic and empty change file (January, 2021).
% Here is TeX material that gets inserted after \input webmac
\def\hang{\hangindent 3em\indent\ignorespaces}
@@ -817,7 +818,7 @@ to be treated when \PASCAL\ code is being formatted.
@d for_like=12 {\&{for}, \&{while}, \&{with}}
@d goto_like=13 {\&{goto}, \&{packed}}
@d if_like=14 {\&{if}}
-@d in_like=15 {\&{in}}
+@d intercal_like=15 {not used}
@d nil_like=16 {\&{nil}}
@d proc_like=17 {\&{function}, \&{procedure}, \&{program}}
@d record_like=18 {\&{record}}
@@ -831,7 +832,7 @@ to be treated when \PASCAL\ code is being formatted.
@ The names of modules are stored in |byte_mem| together
with the identifier names, but a hash table is not used for them because
\.{WEAVE} needs to be able to recognize a module name when given a prefix of
-that name. A conventional binary seach tree is used to retrieve module names,
+that name. A conventional binary search tree is used to retrieve module names,
with fields called |llink| and |rlink| in place of |link| and |ilk|. The
root of this tree is |rlink[0]|.
@@ -1027,7 +1028,7 @@ id_lookup:=p;
end;
@ A simple hash code is used: If the sequence of
-ASCII codes is $c_1c_2\ldots c_m$, its hash value will be
+ASCII codes is $c_1c_2\ldots c_n$, its hash value will be
$$(2^{n-1}c_1+2^{n-2}c_2+\cdots+c_n)\,\bmod\,|hash_size|.$$
@<Compute the hash...@>=
@@ -1458,9 +1459,7 @@ end;
@ @<Read from |web_file|...@>=
begin incr(line);
if not input_ln(web_file) then input_has_ended:=true
-else if limit=change_limit then
- if buffer[0]=change_buffer[0] then
- if change_limit>0 then check_change;
+else if change_limit>0 then check_change;
end
@ @<Read from |change_file|...@>=
@@ -1497,7 +1496,7 @@ had a line that didn't match any relevant line in |web_file|.
@<Check that all changes have been read@>=
if change_limit<>0 then {|changing| is false}
- begin for ii:=0 to change_limit do buffer[ii]:=change_buffer[ii];
+ begin for ii:=0 to change_limit-1 do buffer[ii]:=change_buffer[ii];
limit:=change_limit; changing:=true; line:=other_line; loc:=change_limit;
err_print('! Change file entry did not match');
@.Change file entry did not match@>
@@ -1951,7 +1950,8 @@ straightforward outline.
@<Phase I: Read all the user's text and store the cross references@>=
phase_one:=true; phase_three:=false;
reset_input;
-module_count:=0; skip_limbo; change_exists:=false;
+module_count:=0; changed_module[0]:=false;
+skip_limbo; change_exists:=false;
while not input_has_ended do
@<Store cross reference data for the current module@>;
changed_module[module_count]:=change_exists;
@@ -2330,11 +2330,9 @@ while buffer[loc]<>"@@" do
if loc<=limit then
begin loc:=loc+2; c:=buffer[loc-1];
if (c=" ")or(c=tab_mark)or(c="*") then return;
- if (c<>"z")and(c<>"Z") then
- begin out("@@");
- if c<>"@@" then err_print('! Double @@ required outside of sections');
+ out("@@");
+ if c<>"@@" then err_print('! Double @@ required outside of sections');
@.Double \AT! required...@>
- end;
end
@ The |copy_TeX| routine processes the \TeX\ code at the beginning of a
@@ -2453,7 +2451,7 @@ The combination rules are given as context-sensitive productions that are
applied from left to right. Suppose that we are currently working on the
sequence of scraps $s_1\,s_2\ldots s_n$. We try first to find the longest
production that applies to an initial substring $s_1\,s_2\ldots\,$; but if
-no such productions exist, we find to find the longest production
+no such productions exist, we try to find the longest production
applicable to the next substring $s_2\,s_3\ldots\,$; and if that fails, we
try to match $s_3\,s_4\ldots\,$, etc.
@@ -3244,7 +3242,7 @@ else if cat[pp+2]=semi then
else if cat[pp+2]=var_head then
begin if cat[pp+3]=intro then
begin app1(pp+1); app(math_op); app(cancel);
- app1(pp+2); app("}"); reduce(pp+1,3,math,0)(31);
+ app1(pp+2); app("}"); reduce(pp+1,3,math,0)(33);
end;
end;
end
@@ -3436,7 +3434,8 @@ function translate:text_pointer; {converts a sequence of scraps}
label done,found;
var i: 1..max_scraps; {index into |cat|}
@!j:0..max_scraps; {runs through final scraps}
-@!k:0..long_buf_size; {index into |buffer|}
+@!debug@!k:0..long_buf_size; {index into |buffer|}
+gubed
begin pp:=scrap_base; lo_ptr:=pp-1; hi_ptr:=pp;
@<If tracing, print an indication of where we are@>;
@<Reduce the scraps...@>;
diff --git a/Build/source/texk/web2c/xetexdir/xetex.web b/Build/source/texk/web2c/xetexdir/xetex.web
index bf826dc52a2..8133d05d46d 100644
--- a/Build/source/texk/web2c/xetexdir/xetex.web
+++ b/Build/source/texk/web2c/xetexdir/xetex.web
@@ -88,6 +88,7 @@
% Version 3.141592 fixed \xleaders, glueset, weird alignments (December 2002).
% Version 3.1415926 was a general cleanup with minor fixes (February 2008).
% Version 3.14159265 was similar (January 2014).
+% Version 3.141592653 was similar but more extensive (January 2021).
% A reward of $327.68 will be paid to the first finder of any remaining bug.
@@ -321,10 +322,10 @@ known as `\eTeX'.
@d XeTeX_revision==".999992" { \.{\\XeTeXrevision} }
@d XeTeX_version_string=='-0.999992' {current \XeTeX\ version}
@#
-@d XeTeX_banner=='This is XeTeX, Version 3.14159265',eTeX_version_string,XeTeX_version_string
+@d XeTeX_banner=='This is XeTeX, Version 3.141592653',eTeX_version_string,XeTeX_version_string
{printed when \XeTeX\ starts}
@#
-@d banner=='This is TeX, Version 3.14159265' {printed when \TeX\ starts}
+@d banner=='This is TeX, Version 3.141592653' {printed when \TeX\ starts}
@#
@d TEX==XETEX {change program name into |XETEX|}
@#
@@ -365,7 +366,7 @@ reader see how to make an appropriate interface for other systems
if necessary. (\ph\ is Charles Hedrick's modification of a compiler
@^Hedrick, Charles Locke@>
for the DECsystem-10 that was originally developed at the University of
-Hamburg; cf.\ {\sl SOFTWARE---Practice \AM\ Experience \bf6} (1976),
+Hamburg; cf.\ {\sl Software---Practice and Experience \bf6} (1976),
29--42. The \TeX\ program below is intended to be adaptable, without
extensive changes, to most other versions of \PASCAL, so it does not fully
use the admirable features of \ph. Indeed, a conscious effort has been
@@ -462,8 +463,8 @@ to people who wish to preserve the purity of English.
Similarly, there is some conditional code delimited by
`$|stat|\ldots|tats|$' that is intended for use when statistics are to be
kept about \TeX's memory usage. The |stat| $\ldots$ |tats| code also
-implements diagnostic information for \.{\\tracingparagraphs} and
-\.{\\tracingpages}.
+implements diagnostic information for \.{\\tracingparagraphs},
+\.{\\tracingpages}, and \.{\\tracingrestores}.
@^debugging@>
@d debug==@{ {change this to `$\\{debug}\equiv\null$' when debugging}
@@ -1449,7 +1450,7 @@ example, be `|k in [0,@'10..@'12,@'14,@'15,@'33,@'177..@'377]|'.
If character |k| cannot be printed, and |k<@'200|, then character |k+@'100| or
|k-@'100| must be printable; moreover, ASCII codes |[@'41..@'46,
@'60..@'71, @'136, @'141..@'146, @'160..@'171]| must be printable.
-Thus, at least 81 printable characters are needed.
+Thus, at least 80 printable characters are needed.
@:TeXbook}{\sl The \TeX book@>
@^character set dependencies@>
@^system dependencies@>
@@ -1793,9 +1794,9 @@ possible aid to future software arch\ae ologists.
@ Here is the very first thing that \TeX\ prints: a headline that identifies
the version number and format package. The |term_offset| variable is temporarily
-incorrect, but the discrepancy is not serious since we assume that the banner
-and format identifier together will occupy at most |max_print_line|
-character positions.
+incorrect, but the discrepancy is not serious since we assume that this
+part of the program is system dependent.
+@^system dependencies@>
@<Initialize the output...@>=
wterm(banner);
@@ -1845,7 +1846,7 @@ by all \PASCAL\ compilers.
@<Basic print...@>=
procedure print_int(@!n:integer); {prints an integer in decimal form}
-var k:0..23; {index to current digit; we assume that $|n|<10^{23}$}
+var k:0..23; {index to current digit; we assume that $\vert n\vert<10^{23}$}
@!m:integer; {used to negate |n| in possibly dangerous cases}
begin k:=0;
if n<0 then
@@ -1993,7 +1994,8 @@ error messages are
\hang|term_only| (when |interaction>batch_mode| and |log_file| not yet open);
-\hang|log_only| (when |interaction=batch_mode| and |log_file| is open);
+\hang|log_only| (when |interaction=batch_mode| and |log_file| is open,
+ or when tracing paragraphs);
\hang|term_and_log| (when |interaction>batch_mode| and |log_file| is open).
@@ -2109,7 +2111,8 @@ var c:ASCII_code; {what the user types}
{used to save global variables when deleting tokens}
begin if history<error_message_issued then history:=error_message_issued;
print_char("."); show_context;
-if interaction=error_stop_mode then @<Get user's advice and |return|@>;
+if interaction=error_stop_mode then if selector<>log_only then
+ @<Get user's advice and |return|@>;
incr(error_count);
if error_count=100 then
begin print_nl("(That makes 100 errors; please try again.)");
@@ -2120,7 +2123,8 @@ if error_count=100 then
exit:end;
@ @<Get user's advice...@>=
-loop@+begin continue: clear_for_error_prompt; prompt_input("? ");
+loop@+begin continue: if interaction<>error_stop_mode then return;
+ clear_for_error_prompt; prompt_input("? ");
@.?\relax@>
if last=first then return;
c:=buffer[first];
@@ -2145,7 +2149,7 @@ case c of
"0","1","2","3","4","5","6","7","8","9": if deletions_allowed then
@<Delete \(c)|c-"0"| tokens and |goto continue|@>;
@t\4\4@>@;@+@!debug "D": begin debug_help; goto continue;@+end;@+gubed@/
-"E": if base_ptr>0 then
+"E": if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
begin print_nl("You want to edit file ");
@.You want to edit file x@>
slow_print(input_stack[base_ptr].name_field);
@@ -2166,7 +2170,8 @@ begin print("Type <return> to proceed, S to scroll future error messages,");@/
@.Type <return> to proceed...@>
print_nl("R to run without stopping, Q to run quietly,");@/
print_nl("I to insert something, ");
-if base_ptr>0 then print("E to edit your file,");
+if base_ptr>0 then if input_stack[base_ptr].name_field>=256 then
+ print("E to edit your file,");
if deletions_allowed then
print_nl("1 or ... or 9 to ignore the next 1 to 9 tokens of input,");
print_nl("H for help, X to quit.");
@@ -2358,7 +2363,7 @@ begin if OK_to_interrupt then
print_err("Interruption");
@.Interruption@>
help3("You rang?")@/
- ("Try to insert some instructions for me (e.g.,`I\showlists'),")@/
+ ("Try to insert an instruction for me (e.g., `I\showlists'),")@/
("unless you just want to quit by typing `X'.");
deletions_allowed:=false; error; deletions_allowed:=true;
interrupt:=0;
@@ -3508,8 +3513,8 @@ In \eTeX\ the |subtype| field records the box direction mode |box_lr|.
@ The |new_null_box| function returns a pointer to an |hlist_node| in
which all subfields have the values corresponding to `\.{\\hbox\{\}}'.
-The |subtype| field is set to |min_quarterword|, since that's the desired
-|span_count| value if this |hlist_node| is changed to an |unset_node|.
+(The |subtype| field is set to |min_quarterword|, for historic reasons
+that are no longer relevant.)
@p function new_null_box:pointer; {creates a new box node}
var p:pointer; {the new node}
@@ -4928,7 +4933,7 @@ expanded by `\.{\\the}'.
@d hskip=26 {horizontal glue ( \.{\\hskip}, \.{\\hfil}, etc.~)}
@d vskip=27 {vertical glue ( \.{\\vskip}, \.{\\vfil}, etc.~)}
@d mskip=28 {math glue ( \.{\\mskip} )}
-@d kern=29 {fixed space ( \.{\\kern})}
+@d kern=29 {fixed space ( \.{\\kern} )}
@d mkern=30 {math kern ( \.{\\mkern} )}
@d leader_ship=31 {use a box ( \.{\\shipout}, \.{\\leaders}, etc.~)}
@d halign=32 {horizontal table alignment ( \.{\\halign} )}
@@ -5077,7 +5082,7 @@ At each level of processing we are in one of six modes:
\hang|-mmode| stands for math formula mode (not displayed).
\yskip\noindent The mode is temporarily set to zero while processing \.{\\write}
-texts in the |ship_out| routine.
+texts.
Numeric values are assigned to |vmode|, |hmode|, and |mmode| so that
\TeX's ``big semantic switch'' can select the appropriate thing to
@@ -5284,7 +5289,7 @@ case abs(m) div (max_command+1) of
end;
end;
2: if a.int<>null then
- begin print("this will be denominator of:"); show_box(a.int);@+
+ begin print("this will begin denominator of:"); show_box(a.int);@+
end;
end {there are no other cases}
@@ -5844,7 +5849,7 @@ that will be defined later.
@d output_penalty_code=39 {penalty found at current page break}
@d max_dead_cycles_code=40 {bound on consecutive dead cycles of output}
@d hang_after_code=41 {hanging indentation changes after this many lines}
-@d floating_penalty_code=42 {penalty for insertions heldover after a split}
+@d floating_penalty_code=42 {penalty for insertions held over after a split}
@d global_defs_code=43 {override \.{\\global} specifications}
@d cur_fam_code=44 {current family}
@d escape_char_code=45 {escape character for token output}
@@ -6166,14 +6171,18 @@ del_code("."):=0; {this null delimiter is used in error recovery}
input and output, establishes the initial values of the date and time.
@^system dependencies@>
Since standard \PASCAL\ cannot provide such information, something special
-is needed. The program here simply specifies July 4, 1776, at noon; but
-users probably want a better approximation to the truth.
+is needed. The program here simply assumes that suitable values appear in
+the global variables \\{sys\_time}, \\{sys\_day}, \\{sys\_month}, and
+\\{sys\_year} (which are initialized to noon on 4 July 1776,
+in case the implementor is careless).
@p procedure fix_date_and_time;
-begin time:=12*60; {minutes since midnight}
-day:=4; {fourth day of the month}
-month:=7; {seventh month of the year}
-year:=1776; {Anno Domini}
+begin sys_time:=12*60;
+sys_day:=4; sys_month:=7; sys_year:=1776; {self-evident truths}
+time:=sys_time; {minutes since midnight}
+day:=sys_day; {day of the month}
+month:=sys_month; {month of the year}
+year:=sys_year; {Anno Domini}
end;
@ @<Show equivalent |n|, in region 5@>=
@@ -6209,11 +6218,13 @@ if blank_line then print_ln;
selector:=old_setting;
end;
-@ Of course we had better declare another global variable, if the previous
+@ Of course we had better declare a few more global variables, if the previous
routines are going to work.
@<Glob...@>=
@!old_setting:0..max_selector;
+@!sys_time,@!sys_day,@!sys_month,@!sys_year:integer;
+ {date and time supplied by external system}
@ The final region of |eqtb| contains the dimension parameters defined
here, and the |number_regs| \.{\\dimen} registers.
@@ -6904,7 +6915,7 @@ should replace the corresponding entry in |xeq_level|.
\yskip\hangg 2) If |save_type(p)=restore_zero|, then |save_index(p)|
is a location in |eqtb| whose current value should be destroyed at the end
of the current group, when it should be
-replaced by the current value of |eqtb[undefined_control_sequence]|.
+replaced by the value of |eqtb[undefined_control_sequence]|.
\yskip\hangg 3) If |save_type(p)=insert_token|, then |save_index(p)|
is a token that should be inserted into \TeX's input when the current
@@ -7320,8 +7331,8 @@ when |m=out_param|, it means that \TeX\ should insert parameter
number |c| into the text at this point.
The enclosing \.{\char'173} and \.{\char'175} characters of a macro
-definition are omitted, but the final right brace of an output routine
-is included at the end of its token list.
+definition are omitted, but an output routine
+will be enclosed in braces.
Here is an example macro definition that illustrates these conventions.
After \TeX\ processes the text
@@ -7811,7 +7822,7 @@ template is being scanned;
template is being scanned;
\hang|backed_up|, if the token list being scanned has been inserted as
-`to be read again'.
+`to be read again';
\hang|inserted|, if the token list being scanned has been inserted as
the text expansion of a \.{\\count} or similar variable;
@@ -8376,7 +8387,8 @@ end
@ The recovery procedure can't be fully understood without knowing more
about the \TeX\ routines that should be aborted, but we can sketch the
-ideas here: For a runaway definition we will insert a right brace; for a
+ideas here: For a runaway definition or a runaway balanced text
+we will insert a right brace; for a
runaway preamble, we will insert a special \.{\\cr} token and a right
brace; and for a runaway argument, we will set |long_state| to
|outer_call| and insert \.{\\par}.
@@ -9183,7 +9195,7 @@ done: if cur_cs=0 then cur_tok:=(cur_cmd*max_char_val)+cur_chr
else cur_tok:=cs_token_flag+cur_cs;
end;
-@ The |get_x_token| procedure is equivalent to two consecutive
+@ The |get_x_token| procedure is essentially equivalent to two consecutive
procedure calls: |get_next; x_token|.
@p procedure x_token; {|get_x_token| without the initial |get_next|}
@@ -9512,7 +9524,7 @@ end
strip off the enclosing braces. That's why |rbrace_ptr| was introduced.
@<Tidy up the parameter just scanned, and tuck it away@>=
-begin if (m=1)and(info(p)<right_brace_limit)and(p<>temp_head) then
+begin if (m=1)and(info(p)<right_brace_limit) then
begin link(rbrace_ptr):=null; free_avail(p);
p:=link(temp_head); pstack[n]:=link(p); free_avail(p);
end
@@ -11382,7 +11394,7 @@ address of the control sequence to display in ``runaway'' error
messages.
@p function scan_toks(@!macro_def,@!xpand:boolean):pointer;
-label found,done,done1,done2;
+label found,continue,done,done1,done2;
var t:halfword; {token representing the highest parameter number}
@!s:halfword; {saved token}
@!p:pointer; {tail of the token list being built}
@@ -11402,7 +11414,7 @@ scan_toks:=p;
end;
@ @<Scan and build the parameter part...@>=
-begin loop begin get_token; {set |cur_cmd|, |cur_chr|, |cur_tok|}
+begin loop begin continue: get_token; {set |cur_cmd|, |cur_chr|, |cur_tok|}
if cur_tok<right_brace_limit then goto done1;
if cur_cmd=mac_param then
@<If the next character is a parameter number, make |cur_tok|
@@ -11424,7 +11436,7 @@ end
@ @<If the next character is a parameter number...@>=
begin s:=match_token+cur_chr; get_token;
-if cur_cmd=left_brace then
+if cur_tok<left_brace_limit then
begin hash_brace:=cur_tok;
store_new_token(cur_tok); store_new_token(end_match_token);
goto done;
@@ -11432,7 +11444,8 @@ if cur_cmd=left_brace then
if t=zero_token+9 then
begin print_err("You already have nine parameters");
@.You already have nine...@>
- help1("I'm going to ignore the # sign you just used."); error;
+ help2("I'm going to ignore the # sign you just used,")@/
+ ("as well as the token that followed it."); error; goto continue;
end
else begin incr(t);
if cur_tok<>t then
@@ -11587,7 +11600,7 @@ begin if not input_ln(read_file[m],true) then
print_err("File ended within "); print_esc("read");
@.File ended within \\read@>
help1("This \read has unbalanced braces.");
- align_state:=1000000; error;
+ align_state:=1000000; limit:=0; error;
end;
end;
end
@@ -11732,7 +11745,7 @@ where skipping began, for use in error messages.
@!skip_line:integer; {skipping began here}
@ Here is a procedure that ignores text until coming to an \.{\\or},
-\.{\\else}, or \.{\\fi} at level zero of $\.{\\if}\ldots\.{\\fi}$
+\.{\\else}, or \.{\\fi} at the current level of $\.{\\if}\ldots\.{\\fi}$
nesting. After it has acted, |cur_chr| will indicate the token that
was found, but |cur_tok| will not be set (because this makes the
procedure run faster).
@@ -12468,11 +12481,11 @@ end
@ @<Print the banner...@>=
begin wlog(banner);
slow_print(format_ident); print(" ");
-print_int(day); print_char(" ");
+print_int(sys_day); print_char(" ");
months:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
-for k:=3*month-2 to 3*month do wlog(months[k]);
-print_char(" "); print_int(year); print_char(" ");
-print_two(time div 60); print_char(":"); print_two(time mod 60);
+for k:=3*sys_month-2 to 3*sys_month do wlog(months[k]);
+print_char(" "); print_int(sys_year); print_char(" ");
+print_two(sys_time div 60); print_char(":"); print_two(sys_time mod 60);
if eTeX_ex then
begin; wlog_cr; wlog('entering extended mode');
end;
@@ -12480,6 +12493,9 @@ end
@ Let's turn now to the procedure that is used to initiate file reading
when an `\.{\\input}' command is being processed.
+Beware: For historic reasons, this code foolishly conserves a tiny bit
+of string pool space; but that can confuse the interactive `\.E' option.
+@^system dependencies@>
@p procedure start_input; {\TeX\ will \.{\\input} something}
label done;
@@ -12504,7 +12520,7 @@ if term_offset+length(name)>max_print_line-2 then print_ln
else if (term_offset>0)or(file_offset>0) then print_char(" ");
print_char("("); incr(open_parens); slow_print(name); update_terminal;
state:=new_line;
-if name=str_ptr-1 then {we can conserve string pool space now}
+if name=str_ptr-1 then {conserve string pool space (but see note above)}
begin flush_string; name:=cur_name;
end;
@<Read the first line of the new file@>;
@@ -12718,11 +12734,11 @@ deleted if $c=0$; then we pass over $a$~characters to reach the next
current character (which may have a ligature/kerning program of its own).
If the very first instruction of the |lig_kern| array has |skip_byte=255|,
-the |next_char| byte is the so-called right boundary character of this font;
+the |next_char| byte is the so-called boundary character of this font;
the value of |next_char| need not lie between |bc| and~|ec|.
If the very last instruction of the |lig_kern| array has |skip_byte=255|,
-there is a special ligature/kerning program for a left boundary character,
-beginning at location |256*op_byte+remainder|.
+there is a special ligature/kerning program for a boundary character at the
+left, beginning at location |256*op_byte+remainder|.
The interpretation is that \TeX\ puts implicit boundary characters
before and after each consecutive string of characters from the same font.
These implicit characters do not appear in the output, but they can affect
@@ -12865,7 +12881,7 @@ the font.
{start of |lig_kern| program for left boundary character,
|non_address| if there is none}
@!font_bchar:array[internal_font_number] of min_quarterword..non_char;
- {right boundary character, |non_char| if there is none}
+ {boundary character, |non_char| if there is none}
@!font_false_bchar:array[internal_font_number] of min_quarterword..non_char;
{|font_bchar| if it doesn't exist in the font, otherwise |non_char|}
@@ -13044,7 +13060,7 @@ var k:font_index; {index into |font_info|}
@!a,@!b,@!c,@!d:eight_bits; {byte variables}
@!qw:four_quarters;@!sw:scaled; {accumulators}
@!bch_label:integer; {left boundary start location, or infinity}
-@!bchar:0..256; {right boundary character, or 256}
+@!bchar:0..256; {boundary character, or 256}
@!z:scaled; {the design size or the ``at'' size}
@!alpha:integer;@!beta:1..16;
{auxiliary quantities used in fixed-point multiplication}
@@ -13678,13 +13694,13 @@ stack were empty at the time of a |pop| command.
The parameter is a signed number in two's complement notation, |-128<=b<128|;
if |b<0|, the reference point moves left.
-\yskip\hang|right2| 144 |b[2]|. Same as |right1|, except that |b| is a
+\yskip\hang|@!right2| 144 |b[2]|. Same as |right1|, except that |b| is a
two-byte quantity in the range |-32768<=b<32768|.
-\yskip\hang|right3| 145 |b[3]|. Same as |right1|, except that |b| is a
+\yskip\hang|@!right3| 145 |b[3]|. Same as |right1|, except that |b| is a
three-byte quantity in the range |@t$-2^{23}$@><=b<@t$2^{23}$@>|.
-\yskip\hang|right4| 146 |b[4]|. Same as |right1|, except that |b| is a
+\yskip\hang|@!right4| 146 |b[4]|. Same as |right1|, except that |b| is a
four-byte quantity in the range |@t$-2^{31}$@><=b<@t$2^{31}$@>|.
\yskip\hang|w0| 147. Set |h:=h+w|; i.e., move right |w| units. With luck,
@@ -15371,7 +15387,7 @@ also removes all occurrences of |ins_node|, |mark_node|, and |adjust_node|
items and appends the resulting material onto the list that ends at
location |adjust_tail|.
-@< Glob...@>=
+@<Glob...@>=
@!adjust_tail:pointer; {tail of adjustment list}
@ @<Set init...@>=adjust_tail:=null; last_badness:=0;
@@ -15990,8 +16006,8 @@ programming.
@d sub_mlist=3 {|math_type| when the attribute is a formula}
@d math_text_char=4 {|math_type| when italic correction is dubious}
-@ Each portion of a formula is classified as Ord, Op, Bin, Rel, Ope,
-Clo, Pun, or Inn, for purposes of spacing and line breaking. An
+@ Each portion of a formula is classified as Ord, Op, Bin, Rel, Open,
+Close, Punct, or Inner, for purposes of spacing and line breaking. An
|ord_noad|, |op_noad|, |bin_noad|, |rel_noad|, |open_noad|, |close_noad|,
|punct_noad|, or |inner_noad| is used to represent portions of the various
types. For example, an `\.=' sign in a formula leads to the creation of a
@@ -16013,10 +16029,10 @@ limits has been overridden for this operator.
@d op_noad=ord_noad+1 {|type| of a noad classified Op}
@d bin_noad=ord_noad+2 {|type| of a noad classified Bin}
@d rel_noad=ord_noad+3 {|type| of a noad classified Rel}
-@d open_noad=ord_noad+4 {|type| of a noad classified Ope}
-@d close_noad=ord_noad+5 {|type| of a noad classified Clo}
-@d punct_noad=ord_noad+6 {|type| of a noad classified Pun}
-@d inner_noad=ord_noad+7 {|type| of a noad classified Inn}
+@d open_noad=ord_noad+4 {|type| of a noad classified Open}
+@d close_noad=ord_noad+5 {|type| of a noad classified Close}
+@d punct_noad=ord_noad+6 {|type| of a noad classified Punct}
+@d inner_noad=ord_noad+7 {|type| of a noad classified Inner}
@d limits=1 {|subtype| of |op_noad| whose scripts are to be above, below}
@d no_limits=2 {|subtype| of |op_noad| whose scripts are to be normal}
@@ -17457,7 +17473,7 @@ end else begin if (qo(cur_c)>=font_bc[cur_f])and(qo(cur_c)<=font_ec[cur_f]) then
else cur_i:=null_character;
if not(char_exists(cur_i)) then
begin char_warning(cur_f,qo(cur_c));
- math_type(a):=empty;
+ math_type(a):=empty; cur_i:=null_character;
end;
end;
end;
@@ -17955,7 +17971,7 @@ else begin shift_down:=denom2(cur_size);
@ The numerator and denominator must be separated by a certain minimum
clearance, called |clr| in the following program. The difference between
-|clr| and the actual clearance is |2delta|.
+|clr| and the actual clearance is twice |delta|.
@<Adjust \(s)|shift_up| and |shift_down| for the case of no fraction line@>=
begin if is_new_mathfont(cur_f) then begin
@@ -18584,8 +18600,7 @@ rel_noad: begin t:=rel_noad; pen:=rel_penalty;
ord_noad,vcenter_noad,over_noad,under_noad: do_nothing;
radical_noad: s:=radical_noad_size;
accent_noad: s:=accent_noad_size;
-fraction_noad: begin t:=inner_noad; s:=fraction_noad_size;
- end;
+fraction_noad: s:=fraction_noad_size;
left_noad,right_noad: t:=make_left_right(q,style,max_d,max_h);
style_node: @<Change the current style and |goto delete_q|@>;
whatsit_node,penalty_node,rule_node,disc_node,adjust_node,ins_node,mark_node,
@@ -18624,7 +18639,7 @@ begin cur_style:=subtype(q); s:=style_node_size;
goto delete_q;
end
-@ The inter-element spacing in math formulas depends on a $8\times8$ table that
+@ The inter-element spacing in math formulas depends on an $8\times8$ table that
\TeX\ preloads as a 64-digit string. The elements of this string have the
following significance:
$$\vbox{\halign{#\hfil\cr
@@ -19010,6 +19025,7 @@ text(frozen_cr):="cr"; eqtb[frozen_cr]:=eqtb[cur_val];@/
primitive("crcr",car_ret,cr_cr_code);
@!@:cr_cr_}{\.{\\crcr} primitive@>
text(frozen_end_template):="endtemplate"; text(frozen_endv):="endtemplate";
+@.endtemplate@>
eq_type(frozen_endv):=endv; equiv(frozen_endv):=null_list;
eq_level(frozen_endv):=level_one;@/
eqtb[frozen_end_template]:=eqtb[frozen_endv];
@@ -19242,6 +19258,7 @@ info(p):=end_span; width(p):=null_flag; cur_loop:=link(cur_loop);
@<Copy the templates from node |cur_loop| into node |p|@>;
cur_loop:=link(cur_loop);
link(p):=new_glue(glue_ptr(cur_loop));
+subtype(link(p)):=tab_skip_code+1;
end
@ @<Copy the templates from node |cur_loop| into node |p|@>=
@@ -19614,8 +19631,8 @@ The method used here is based on an approach devised by Michael F. Plass and
@^Plass, Michael Frederick@>
@^Knuth, Donald Ervin@>
the author in 1977, subsequently generalized and improved by the same two
-people in 1980. A detailed discussion appears in {\sl SOFTWARE---Practice
-\AM\ Experience \bf11} (1981), 1119--1184, where it is shown that the
+people in 1980. A detailed discussion appears in {\sl Software---Practice
+and Experience \bf11} (1981), 1119--1184, where it is shown that the
line-breaking problem can be regarded as a special case of the problem of
computing the shortest path in an acyclic network. The cited paper includes
numerous examples and describes the history of line breaking as it has been
@@ -21125,7 +21142,7 @@ loop@+ begin q:=link(r);
if is_char_node(q) then goto done1;
if non_discardable(q) then goto done1;
if type(q)=kern_node then if (subtype(q)<>explicit) and (subtype(q)<>space_adjustment) then goto done1;
- r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node| or |penalty_node|}
+ r:=q; {now |type(q)=glue_node|, |kern_node|, |math_node|, or |penalty_node|}
if type(q)=math_node then if TeXXeT_en then
@<Adjust \(t)the LR stack for the |post_line_break| routine@>;
end;
@@ -21416,7 +21433,7 @@ nodes $p_{a-1}$ and~$p_b$ in the description above are placed into variables
@!hc:array[0..hyphenatable_length_limit+3] of 0..number_usvs; {word to be hyphenated}
{ note that element 0 needs to be a full UnicodeScalar, even though we
basically work in UTF16 }
-@!hn:small_number; {the number of positions occupied in |hc|}
+@!hn:small_number; {the number of positions occupied in |hc|, 0..64 in TeX}
@!ha,@!hb:pointer; {nodes |ha..hb| should be replaced by the hyphenated result}
@!hf:internal_font_number; {font number of the letters in |hc|}
@!hu:array[0..hyphenatable_length_limit+1] of 0..too_big_char;
@@ -21668,7 +21685,7 @@ forgetting what |ha| and |hb|, etc., are all about.
@ @<Local variables for hyphenation@>=
@!i,@!j,@!l:0..hyphenatable_length_limit+2; {indices into |hc| or |hu|}
@!q,@!r,@!s:pointer; {temporary registers for list manipulation}
-@!bchar:halfword; {right boundary character of hyphenated word, or |non_char|}
+@!bchar:halfword; {boundary character of hyphenated word, or |non_char|}
@ \TeX\ will never insert a hyphen that has fewer than
\.{\\lefthyphenmin} letters before it or fewer than
@@ -22469,7 +22486,7 @@ The hash table is called |trie_op_hash|, and the number of entries it contains
is |trie_op_ptr|.
@<Glob...@>=
-@!init@! trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
+@!init @!trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
{trie op codes for quadruples}
@!trie_used:array[ASCII_code] of quarterword;
{largest opcode used so far for this language}
@@ -22647,7 +22664,7 @@ entries.
@d trie_back(#)==trie[#].lh {backward links in |trie| holes}
@<Glob...@>=
-@!init@!trie_taken:packed array[1..trie_size] of boolean;
+@!init @!trie_taken:packed array[1..trie_size] of boolean;
{does a family start here?}
@t\hskip10pt@>@!trie_min:array[ASCII_code] of trie_pointer;
{the first possible slot for each character}
@@ -23330,7 +23347,8 @@ all split and floating insertions.
@!last_penalty:integer; {used to implement \.{\\lastpenalty}}
@!last_kern:scaled; {used to implement \.{\\lastkern}}
@!last_node_type:integer; {used to implement \.{\\lastnodetype}}
-@!insert_penalties:integer; {sum of the penalties for held-over insertions}
+@!insert_penalties:integer; {sum of the penalties for insertions
+ that were held over}
@ @<Put each...@>=
primitive("pagegoal",set_page_dimen,0);
@@ -24230,7 +24248,7 @@ Several additional global variables are needed.
@!space_class:integer;
@!prev_class:integer;
@!main_s:integer; {space factor value}
-@!bchar:halfword; {right boundary character of current font, or |non_char|}
+@!bchar:halfword; {boundary character of current font, or |non_char|}
@!false_bchar:halfword; {nonexistent character matching |bchar|, or |non_char|}
@!cancel_boundary:boolean; {should the left boundary be ignored?}
@!ins_disc:boolean; {should we insert a discretionary node?}
@@ -25093,7 +25111,7 @@ end;
@ Many of the actions related to box-making are triggered by the appearance
of braces in the input. For example, when the user says `\.{\\hbox}
-\.{to} \.{100pt\{$\langle\,\hbox{hlist}\,\rangle$\}}' in vertical mode,
+\.{to} \.{100pt\{$\langle\,\hbox{\rm hlist}\,\rangle$\}}' in vertical mode,
the information about the box size (100pt, |exactly|) is put onto |save_stack|
with a level boundary word just above it, and |cur_group:=adjusted_hbox_group|;
\TeX\ enters restricted horizontal mode to process the hlist. The right
@@ -27521,6 +27539,7 @@ end;
@ @<Initialize table entries...@>=
text(frozen_protection):="inaccessible";
+@.inaccessible@>
@ Here's an example of the way many of the following routines operate.
(Unfortunately, they aren't all as simple as this.)
@@ -28559,7 +28578,7 @@ any_mode(xray): show_whatever;
@ @d show_code=0 { \.{\\show} }
@d show_box_code=1 { \.{\\showbox} }
@d show_the_code=2 { \.{\\showthe} }
-@d show_lists=3 { \.{\\showlists} }
+@d show_lists_code=3 { \.{\\showlists} }
@<Put each...@>=
primitive("show",xray,show_code);
@@ -28568,14 +28587,14 @@ primitive("showbox",xray,show_box_code);
@!@:show_box_}{\.{\\showbox} primitive@>
primitive("showthe",xray,show_the_code);
@!@:show_the_}{\.{\\showthe} primitive@>
-primitive("showlists",xray,show_lists);
-@!@:show_lists_}{\.{\\showlists} primitive@>
+primitive("showlists",xray,show_lists_code);
+@!@:show_lists_code_}{\.{\\showlists} primitive@>
@ @<Cases of |print_cmd_chr|...@>=
xray: case chr_code of
show_box_code:print_esc("showbox");
show_the_code:print_esc("showthe");
- show_lists:print_esc("showlists");
+ show_lists_code:print_esc("showlists");
@<Cases of |xray| for |print_cmd_chr|@>@;@/
othercases print_esc("show")
endcases;
@@ -28589,7 +28608,7 @@ var p:pointer; {tail of a token list to show}
@!l:integer; {line where that conditional began}
@!n:integer; {level of \.{\\if...\\fi} nesting}
begin case cur_chr of
-show_lists: begin begin_diagnostic; show_activities;
+show_lists_code: begin begin_diagnostic; show_activities;
end;
show_box_code: @<Show the current contents of a box@>;
show_code: @<Show the current meaning of a token, then |goto common_ending|@>;
@@ -28672,8 +28691,8 @@ so that the inverse relation between them is clear.
The global variable |format_ident| is a string that is printed right
after the |banner| line when \TeX\ is ready to start. For \.{INITEX} this
-string says simply `\.{(INITEX)}'; for other versions of \TeX\ it says,
-for example, `\.{(preloaded format=plain 1982.11.19)}', showing the year,
+string says simply `\.{ (INITEX)}'; for other versions of \TeX\ it says,
+for example, `\.{ (preloaded format=plain 1982.11.19)}', showing the year,
month, and day that the format file was created. We have |format_ident=0|
before \TeX's tables are loaded.
@@ -28764,6 +28783,8 @@ macros to dump words of different types:
@ The inverse macros are slightly more complicated, since we need to check
the range of the values we are reading in. We say `|undump(a)(b)(x)|' to
read an integer value |x| that is supposed to be in the range |a<=x<=b|.
+System error messages should be suppressed when undumping.
+@^system dependencies@>
@d undump_wd(#)==begin get(fmt_file); #:=fmt_file^;@+end
@d undump_int(#)==begin get(fmt_file); #:=fmt_file^.int;@+end
@@ -29249,17 +29270,17 @@ cannot produce error messages. For example, it would be a mistake to call
|str_room| or |make_string| at this time, because a call on |overflow|
might lead to an infinite loop.
@^system dependencies@>
-
-Actually there's one way to get error messages, via |prepare_mag|;
-but that can't cause infinite recursion.
+(Actually there's one way to get error messages, via |prepare_mag|;
+but that can't cause infinite recursion.)
@^recursion@>
-This program doesn't bother to close the input files that may still be open.
+If |final_cleanup| is bypassed, this program doesn't bother to close
+the input files that may still be open.
@<Last-minute...@>=
procedure close_files_and_terminate;
var k:integer; {all-purpose index}
-begin @<Finish the extensions@>;
+begin @<Finish the extensions@>; new_line_char:=-1;
@!stat if tracing_stats>0 then @<Output statistics about this job@>;@;@+tats@/
wake_up_terminal; @<Finish the \.{DVI} file@>;
if log_opened then
@@ -29315,7 +29336,7 @@ been scanned and |its_all_over|\kern-2pt.
procedure final_cleanup;
label exit;
var c:small_number; {0 for \.{\\end}, 1 for \.{\\dump}}
-begin c:=cur_chr;
+begin c:=cur_chr; if c<>1 then new_line_char:=-1;
if job_name=0 then open_log_file;
while input_ptr>0 do
if state=token_list then end_token_list@+else end_file_reading;
@@ -29428,14 +29449,15 @@ program below. (If |m=13|, there is an additional argument, |l|.)
@!debug procedure debug_help; {routine to display various things}
label breakpoint,exit;
var k,@!l,@!m,@!n:integer;
-begin loop begin wake_up_terminal;
+begin clear_terminal;
+ loop begin wake_up_terminal;
print_nl("debug # (-1 to exit):"); update_terminal;
@.debug \#@>
read(term_in,m);
if m<0 then return
else if m=0 then
- begin goto breakpoint;@\ {go to every label at least once}
- breakpoint: m:=0; @{'BREAKPOINT'@}@\
+ begin goto breakpoint;@/ {go to every declared label at least once}
+ breakpoint: m:=0; @{'BREAKPOINT'@}@/
end
else begin read(term_in,n);
case m of
diff --git a/Build/source/texk/web2c/xetexdir/xetexextra.h b/Build/source/texk/web2c/xetexdir/xetexextra.h
index 6fb91423fa0..4cd1bc1e832 100644
--- a/Build/source/texk/web2c/xetexdir/xetexextra.h
+++ b/Build/source/texk/web2c/xetexdir/xetexextra.h
@@ -56,7 +56,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <xetexdir/etex_version.h> /* for ETEX_VERSION */
#include <xetexdir/xetex_version.h> /* for XETEX_VERSION */
-#define BANNER "This is XeTeX, Version 3.14159265-" ETEX_VERSION "-" XETEX_VERSION
+#define BANNER "This is XeTeX, Version 3.141592653-" ETEX_VERSION "-" XETEX_VERSION
#define COPYRIGHT_HOLDER "SIL International, Jonathan Kew and Khaled Hosny"
#define AUTHOR "Jonathan Kew"
#define PROGRAM_HELP XETEXHELP