summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md5
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdfbin316552 -> 313919 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdfbin330475 -> 330622 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdfbin349820 -> 349961 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdfbin605919 -> 606118 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdfbin487003 -> 487146 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdfbin399497 -> 399644 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdfbin344819 -> 344962 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdfbin311695 -> 311838 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdfbin372183 -> 372338 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdfbin385903 -> 386050 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdfbin285723 -> 285866 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md12
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin585410 -> 585636 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1539749 -> 1542835 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin263327 -> 263475 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin280047 -> 280265 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin227774 -> 228007 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdfbin186548 -> 186792 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin5624340 -> 5635861 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.tex2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx421
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx46
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx128
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx12
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3final.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx29
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx7
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty205
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty35
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex65
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvips.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def2
114 files changed, 677 insertions, 480 deletions
diff --git a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
index 6025015b641..376c0eb3943 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
@@ -7,6 +7,8 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2018-11-19]
+
## [2018-10-31]
### Added
@@ -52,7 +54,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2018-10-31...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2018-11-19...HEAD
+[2018-11-19]: https://github.com/latex3/latex3/compare/2018-10-31...2018-11-19
[2018-10-31]: https://github.com/latex3/latex3/compare/2018-10-26...2018-10-31
[2018-10-26]: https://github.com/latex3/latex3/compare/2018-10-17...2018-10-26
[2018-10-17]: https://github.com/latex3/latex3/compare/2018-08-24...2018-10-17
diff --git a/Master/texmf-dist/doc/latex/l3experimental/README.md b/Master/texmf-dist/doc/latex/l3experimental/README.md
index 62089f2e566..95a0ecbc399 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/README.md
+++ b/Master/texmf-dist/doc/latex/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2018-10-31
+Release 2018-11-19
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
index 9991f06c98e..40c5297dae9 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
index 9b42aff6c0b..e41db012b81 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
index b94d4e17131..930c8e2bfd5 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
index 64fea55e1d5..3e7483050af 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
index 48d0abfe09d..9617300720a 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
index 7f0f0bdf6cc..741b0c9afd8 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
index 1105c746e82..e1d8e83f8b8 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
index c1220db3152..df3367d8902 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
index 3ae6bc0ba22..1cad8f4f7c8 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
index d14902c9f7d..40799e12bc5 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
index 1db708d287c..b41c6df8ded 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
index 7c02ddb9217..f2a96032081 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
@@ -7,9 +7,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
-## [2018-10-31]
+## [2018-11-19]
-## [2018-10-26]
+### Added
+
+- Support for cross-compatibility primitives in XeTeX
+- `\int_sign:n`, `\dim_sign:n` and `\fp_sign:n`
## [2018-10-19]
@@ -30,7 +33,7 @@ this project uses date-based 'snapshot' version identifiers.
### Deprecated
-- `\mg_interrupt:nn`, `\msg_log:n` and `\msg_term:n`
+- `\msg_interrupt:nn`, `\msg_log:n` and `\msg_term:n`
### Fixed
@@ -161,7 +164,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step func­tions have been added for dim vari­ables,
e.g. `\dim_step_in­line:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2018-10-31...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2018-11-19...HEAD
+[2018-11-19]: https://github.com/latex3/latex3/compare/2018-10-31...2018-11-19
[2018-10-31]: https://github.com/latex3/latex3/compare/2018-10-26...2018-10-31
[2018-10-26]: https://github.com/latex3/latex3/compare/2018-10-19...2018-10-26
[2018-10-19]: https://github.com/latex3/latex3/compare/2018-10-17...2018-10-19
diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md
index 76c62205c46..de29cf0a61d 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/README.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2018-10-31
+Release 2018-11-19
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index 564d041cac5..4fa3f37ac4a 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
index e9fed1b2564..3fe8c7f5dda 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
index 03a77cfa0f9..0af63b3f168 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
@@ -52,7 +52,7 @@
{latex-team@latex-project.org}%
}%
}
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
index 16b18018a19..73e447203e7 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
index e30814ae4a2..10158c6f99a 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
index 15bf99d618d..fae74025ed8 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
@@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
\begin{document}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
index cb2392aeef5..57f4645f94c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
index b4b867b4379..25d8bc517af 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
@@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
index 9b262e7f549..b7cf4db5726 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
index 481c3189b7c..0d212fbec16 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
@@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
index 2c279e751e2..40c2049604e 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
index 1a5db8d91d6..3c3f734c513 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
@@ -51,7 +51,7 @@
{latex-team@latex-project.org}%
}%
}
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
index 8f3fc919b17..cf8414f22fc 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -71,54 +71,32 @@
% \section{Benchmark}
%
% \begin{variable}{\g_benchmark_duration_target_fp}
-% This variable controls roughly for how long \cs{benchmark:n} will
-% repeat code to more accurately benchmark it. The actual duration of
-% one call to \cs{benchmark:n} typically lasts between half and twice
-% \cs{g_benchmark_duration_target_fp} seconds, unless of course
-% running the code only once already lasts longer than this.
+% This variable (default value: $1$) controls roughly for how long
+% \cs{benchmark:n} will repeat code to more accurately benchmark it.
+% The actual duration of one call to \cs{benchmark:n} typically lasts
+% between half and twice \cs{g_benchmark_duration_target_fp} seconds,
+% unless of course running the code only once already lasts longer
+% than this.
% \end{variable}
%
-% \begin{variable}{\g_benchmark_time_fp, \g_benchmark_ops_fp}
-% Functions such as \cs{benchmark:n} store the measured time in
-% \cs{g_benchmark_time_fp} (in seconds). Functions such as
-% \cs{benchmark_normalized:n} store the estimated number of operations
-% in \cs{g_benchmark_ops_fp}.
-% \end{variable}
-%
-% \begin{function}{\benchmark_display:, \benchmark_display_in_ops:}
-% \begin{syntax}
-% \cs{benchmark_display:}
-% \end{syntax}
-% Prints the time \cs{g_benchmark_time_fp} (in seconds) or the
-% estimated number of operations \cs{g_benchmark_ops_fp} to the
-% terminal. These functions are called by functions such as
-% \cs{benchmark:n} and can be redefined by the user.
-% \end{function}
-%
-% \begin{function}{\benchmark_once:n, \benchmark_once_in_ops:n, \benchmark_once_silent:n}
+% \begin{function}{\benchmark_once:n}
% \begin{syntax}
% \cs{benchmark_once:n} \Arg{code}
% \end{syntax}
-% Measures the time taken by \TeX{} to run the \meta{code} once, sets
-% \cs{g_benchmark_time_fp} and \cs{g_benchmark_ops_fp}, and calls
-% \cs{benchmark_display:}. The \meta{code} is run only once so the
-% time may be quite inaccurate for fast code. The
-% \cs{benchmark_once_silent:n} function omits the call to
-% \cs{benchmark_display:}, while \cs{benchmark_once_in_ops:n} calls
-% \cs{benchmark_display_in_ops:} instead.
+% Prints to the terminal the time taken by \TeX{} to run the
+% \meta{code}, and an estimated number of elementary operations. The
+% \meta{code} is run only once so the time may be quite inaccurate for
+% fast code.
% \end{function}
%
-% \begin{function}{\benchmark:n, \benchmark_in_ops:n, \benchmark_silent:n}
+% \begin{function}{\benchmark:n}
% \begin{syntax}
% \cs{benchmark:n} \Arg{code}
% \end{syntax}
-% Measures the time taken by \TeX{} to run the \meta{code}, sets
-% \cs{g_benchmark_time_fp} and \cs{g_benchmark_ops_fp}, and calls
-% \cs{benchmark_display:}. The \meta{code} may be run many times and
-% not within a group, thus code with side-effects may cause problems.
-% The \cs{benchmark_silent:n} function omits the call to
-% \cs{benchmark_display:}, while \cs{benchmark_in_ops:n} calls
-% \cs{benchmark_display_in_ops:} instead.
+% Prints to the terminal the time taken by \TeX{} to run the
+% \meta{code}, and an estimated number of elementary operations. The
+% \meta{code} may be run many times and not within a group, thus code
+% with side-effects may cause problems.
% \end{function}
%
% \begin{function}{\benchmark_tic:, \benchmark_toc:}
@@ -130,8 +108,8 @@
% tic/toc commands can be used instead to time between two points in
% the code. When executed, \cs{benchmark_tic:} will print a line to the
% terminal, and \cs{benchmark_toc:} will print a matching line with a
-% time to indicate the duration between them in seconds. Note that
-% these commands can be nested.
+% time to indicate the duration between them in seconds.
+% These commands can be nested.
% \end{function}
%
% \end{documentation}
@@ -148,7 +126,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3benchmark}{2018-10-31}{}
+\ProvidesExplPackage{l3benchmark}{2018-11-19}{}
{L3 Experimental benchmarking}
%</package>
% \end{macrocode}
@@ -163,8 +141,7 @@
% \begin{macro}[EXP,pTF]{\sys_if_timer_exist:}
% In \LuaTeX{}, use emulation (see \pkg{l3luatex}),
% otherwise try to locate the primitive. The
-% elapsed time will be available if this succeeds or if unrestricted
-% shell escape is available.
+% elapsed time will be available if this succeeds.
% \begin{macrocode}
\sys_if_engine_luatex:TF
{
@@ -228,97 +205,35 @@
%<@@=benchmark>
% \end{macrocode}
%
-% \begin{variable}{\g_benchmark_time_fp, \g_benchmark_ops_fp}
-% Functions such as \cs{benchmark:n} store the measured time in
-% \cs{g_benchmark_time_fp} (in seconds) and the estimated number of
-% operations in \cs{g_benchmark_ops_fp}.
+% \begin{variable}{\g_benchmark_duration_target_fp}
+% The benchmark is constrained to take roughly (from half to twice)
+% \cs{g_benchmark_duration_target_fp} seconds, unless one iteration of
+% the code takes longer.
% \begin{macrocode}
-\fp_new:N \g_benchmark_time_fp
-\fp_new:N \g_benchmark_ops_fp
+\fp_new:N \g_benchmark_duration_target_fp
+\fp_gset:Nn \g_benchmark_duration_target_fp { 1 }
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\benchmark_display:, \benchmark_display_in_ops:}
-% Function to display the time that was measured or the estimated
-% number of operations. This can be redefined by the user.
-% \begin{macrocode}
-\cs_new_protected:Npn \benchmark_display:
- { \iow_term:x { \fp_to_tl:N \g_benchmark_time_fp \c_space_tl seconds } }
-\cs_new_protected:Npn \benchmark_display_in_ops:
- {
- \iow_term:x
- {
- \fp_compare:nTF { \g_benchmark_ops_fp > 1e9 }
- { \fp_to_tl:n { \g_benchmark_ops_fp * 1e-9 } ~ G~ops }
- {
- \fp_compare:nTF { \g_benchmark_ops_fp > 1e6 }
- { \fp_to_tl:n { \g_benchmark_ops_fp * 1e-6 } ~ M~ops }
- {
- \fp_compare:nTF { \g_benchmark_ops_fp > 1e3 }
- { \fp_to_tl:n { \g_benchmark_ops_fp * 1e-3 } ~ K~ops }
- { \fp_to_tl:n { \g_benchmark_ops_fp } ~ ops }
- }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
+% Having access to the system time is essential.
% \begin{macrocode}
\sys_if_timer_exist:F
{
- \msg_new:nnnn { benchmark } { no-time }
- { The~l3benchmark~package~failed~to~access~a~clock. }
- { The~current~engine~provides~no~way~to~access~the~system~time. }
+ \fp_gset:Nn \g_benchmark_duration_target_fp { nan }
\cs_new_protected:Npn \benchmark_once:n #1
{ \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark_once_in_ops:n #1
- { \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark_once_silent:n #1
+ \cs_new_eq:NN \benchmark:n \benchmark_once:n
+ \cs_new_protected:Npn \benchmark_tic:
{ \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark:n #1
- { \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark_in_ops:n #1
- { \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark_silent:n #1
- { \msg_error:nn { benchmark } { no-time } }
- \fp_gset:Nn \g_benchmark_time_fp { nan }
- \fp_gset:Nn \g_benchmark_ops_fp { nan }
+ \cs_new_eq:NN \benchmark_toc: \benchmark_tic:
+ \msg_new:nnnn { benchmark } { no-time }
+ { The~l3benchmark~package~failed~to~access~a~clock. }
+ { The~current~engine~provides~no~way~to~access~the~system~time. }
\msg_critical:nn { benchmark } { no-time }
}
% \end{macrocode}
%
-% \begin{variable}{\g_benchmark_duration_target_fp, \g_@@_duration_int}
-% The benchmark is constrained to take roughly (from half to twice)
-% \cs{g_benchmark_duration_target_fp} seconds, more precisely
-% \cs{g_@@_duration_int} scaled seconds, unless one iteration of the
-% code takes longer.
-% \begin{macrocode}
-\fp_new:N \g_benchmark_duration_target_fp
-\fp_gset:Nn \g_benchmark_duration_target_fp { 1 }
-\int_new:N \g_@@_duration_int
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{variable}{\g_@@_time_int, \g_@@_time_a_int, \g_@@_time_b_int, \g_@@_time_c_int, \g_@@_time_d_int}
-% These variables hold the time for running a piece of code, as an
-% integer in scaled seconds.
-% \begin{macrocode}
-\int_new:N \g_@@_time_int
-\int_new:N \g_@@_time_a_int
-\int_new:N \g_@@_time_b_int
-\int_new:N \g_@@_time_c_int
-\int_new:N \g_@@_time_d_int
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{variable}{\g_@@_repeat_int}
-% Holds the number of times that the piece of code was
-% repeated when timing.
-% \begin{macrocode}
-\int_new:N \g_@@_repeat_int
-% \end{macrocode}
-% \end{variable}
+% \subsubsection{Raw measurement}
%
% \begin{variable}{\g_@@_nesting_int}
% \begin{macro}{\@@_raw:nN, \@@_raw_aux:N, \@@_raw_end:N}
@@ -401,74 +316,115 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\benchmark:n, \benchmark_silent:n}
-% The main timing function. First time the user code once. If that
-% took more than a third of a second we're done. If that took much
-% less than a second, quadruple the number of copies until it takes a
-% reasonable amount of time (this is to avoid division by a possibly
-% zero time). Once we reach a reasonable time, compute a number of
-% times that can fit in one quarter of a second and measure that four
-% times. To save time we reuse the result of the first pass if
-% \cs{g_@@_repeat_int} is one. Once we have four results, find the smallest,
-% divided by $65536$ and by the number of repetitions, and display that.
+% \subsubsection{Main benchmarking}
+%
+% \begin{variable}{\g_@@_time_fp, \g_@@_ops_fp}
+% Functions such as \cs{benchmark:n} store the measured time in
+% \cs{g_@@_time_fp} (in seconds) and the estimated number of
+% operations in \cs{g_@@_ops_fp}.
+% \begin{macrocode}
+\fp_new:N \g_@@_time_fp
+\fp_new:N \g_@@_ops_fp
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_duration_int}
+% A conversion of \cs{g_benchmark_duration_target_fp} seconds into scaled seconds.
+% \begin{macrocode}
+\int_new:N \g_@@_duration_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_time_int, \g_@@_time_a_int, \g_@@_time_b_int, \g_@@_time_c_int, \g_@@_time_d_int}
+% These variables hold the time for running a piece of code, as an
+% integer in scaled seconds.
+% \begin{macrocode}
+\int_new:N \g_@@_time_int
+\int_new:N \g_@@_time_a_int
+\int_new:N \g_@@_time_b_int
+\int_new:N \g_@@_time_c_int
+\int_new:N \g_@@_time_d_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_repeat_int}
+% Holds the number of times that the piece of code was
+% repeated when timing.
+% \begin{macrocode}
+\int_new:N \g_@@_repeat_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_code_tl}
+% Holds the piece of code to repeat.
% \begin{macrocode}
-\fp_new:N \g_@@_one_op_fp
\tl_new:N \g_@@_code_tl
-\cs_new_protected:Npn \benchmark:n #1
- { \benchmark_silent:n {#1} \benchmark_display: }
-\cs_new_protected:Npn \benchmark_in_ops:n #1
- { \benchmark_silent:n {#1} \benchmark_display_in_ops: }
-\cs_new_protected:Npn \@@_measure_op:
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\benchmark_once:n}
+% Convert the raw time from scaled seconds to seconds, and convert to
+% a number of operations. It is important to measure the elementary
+% operation before running the user code because both measurements use
+% the same temporary variables.
+% \begin{macrocode}
+\cs_new_protected:Npn \benchmark_once:n #1
{
- \int_gset:Nn \g_@@_duration_int { 256 }
- \tl_gset:Nn \g_@@_code_tl
- { \int_gset:Nn \g_@@_duration_int { 256 } } % arbitrary single operation
- \@@_aux:
- \fp_gset_eq:NN \g_@@_one_op_fp \g_benchmark_time_fp
- \fp_compare:nNnT \g_@@_one_op_fp < { 1e-6 }
- { \fp_gset:Nn \g_@@_one_op_fp { 1e-6 } }
+ \@@_measure_op:
+ \@@_raw:nN {#1} \g_@@_time_int
+ \fp_gset:Nn \g_@@_time_fp { \g_@@_time_int / 65536 }
+ \@@_display:
}
-\cs_new_protected:Npn \benchmark_silent:n #1
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\benchmark:n}
+% After setting up some variables the work is done by \cs{@@_aux:}.
+% \begin{macrocode}
+\cs_new_protected:Npn \benchmark:n #1
{
\@@_measure_op:
- \int_gset:Nn \g_@@_duration_int
- { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } }
\tl_gset:Nn \g_@@_code_tl {#1}
\@@_aux:
- \fp_gset:Nn \g_benchmark_ops_fp
- { \g_benchmark_time_fp / \g_@@_one_op_fp }
+ \@@_display:
}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_aux:}
+% The main timing function. First time the user code once. If that
+% took more than half the allotted time (\cs{g_@@_duration_int}) we're
+% done. If that took much less, repeatedly quadruple the number of
+% copies until it takes a reasonable amount of time. Once we reach a
+% reasonable time (or we risk an overflow), compute a number of times
+% that can fit in one quarter of the allotted time and measure that
+% four times. To save time we reuse the result of the first pass if
+% \cs{g_@@_repeat_int} is one. Once we have four results, find the
+% smallest, divided by $65536$ and by the number of repetitions, and
+% display that.
+% \begin{macrocode}
\cs_new_protected:Npn \@@_aux:
{
\int_gset:Nn \g_@@_repeat_int { 1 }
\@@_raw:nN { \g_@@_code_tl } \g_@@_time_int
\int_compare:nNnF \g_@@_time_int < { \g_@@_duration_int / 2 }
+ { \prg_break: }
+ \bool_until_do:nn
{
- \int_gset_eq:NN \g_@@_time_a_int \g_@@_time_int
- \int_gset_eq:NN \g_@@_time_b_int \g_@@_time_int
- \int_gset_eq:NN \g_@@_time_c_int \g_@@_time_int
- \int_gset_eq:NN \g_@@_time_d_int \g_@@_time_int
- \prg_break:
+ \int_compare_p:nNn \g_@@_time_int > { \g_@@_duration_int / 32 }
+ || \int_compare_p:nNn \g_@@_repeat_int > { \c_max_int / 4 }
}
- \int_while_do:nNnn \g_@@_time_int < { \g_@@_duration_int / 100 }
{
- \int_compare:nNnT \g_@@_repeat_int > { \c_max_int / 4 }
- {
- \int_gzero:N \g_@@_time_a_int
- \int_gzero:N \g_@@_time_b_int
- \int_gzero:N \g_@@_time_c_int
- \int_gzero:N \g_@@_time_d_int
- \prg_break:
- }
\int_gset:Nn \g_@@_repeat_int { 4 * \g_@@_repeat_int }
\@@_run:N \g_@@_time_int
}
\int_gset:Nn \g_@@_repeat_int
{
- \int_max:nn { 1 }
+ \fp_to_int:n
{
- \g_@@_duration_int * \g_@@_repeat_int
- / ( \g_@@_time_int * 4 )
+ max ( 1 , min ( \c_max_int ,
+ \g_@@_duration_int * \g_@@_repeat_int /
+ \int_eval:n { 4 * \g_@@_time_int } ) )
}
}
\int_compare:nNnTF \g_@@_repeat_int = 1
@@ -477,67 +433,112 @@
\@@_run:N \g_@@_time_b_int
\@@_run:N \g_@@_time_c_int
\@@_run:N \g_@@_time_d_int
- \prg_break_point:
- \fp_gset:Nn \g_benchmark_time_fp
+ \int_gset:Nn \g_@@_time_int
{
\int_min:nn
{ \int_min:nn \g_@@_time_a_int \g_@@_time_b_int }
{ \int_min:nn \g_@@_time_c_int \g_@@_time_d_int }
- / \g_@@_repeat_int / 65536
}
+ \prg_break_point:
+ \int_compare:nNnT \g_@@_time_int < 3 { \int_gzero:N \g_@@_time_int }
+ \fp_gset:Nn \g_@@_time_fp
+ { \g_@@_time_int / \g_@@_repeat_int / 65536 }
}
\cs_new_protected:Npn \@@_run:N
{ \exp_args:NNo \@@_raw_replicate:nnN \g_@@_repeat_int { \g_@@_code_tl } }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\benchmark_once:n, \benchmark_once_in_ops:n, \benchmark_once_silent:n}
-% Convert from scaled seconds to seconds.
+% \subsubsection{Display}
+%
+% \begin{variable}{\g_@@_one_op_fp}
+% Time for one operation.
% \begin{macrocode}
-\cs_new_protected:Npn \benchmark_once:n #1
- { \benchmark_once_silent:n {#1} \benchmark_display: }
-\cs_new_protected:Npn \benchmark_once_in_ops:n #1
- { \benchmark_once_silent:n {#1} \benchmark_display_in_ops: }
-\cs_new_protected:Npn \benchmark_once_silent:n #1
+\fp_new:N \g_@@_one_op_fp
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_measure_op:}
+% Measure one arbitrary single operation (which we put in \cs{g_@@_code_tl}).
+% This uses a common auxiliary \cs{@@_aux:} with the main benchmark function.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_measure_op:
{
- \@@_measure_op:
- \@@_raw:nN {#1} \g_@@_time_int
- \fp_gset:Nn \g_benchmark_time_fp { \g_@@_time_int / 65536 }
- \fp_gset:Nn \g_benchmark_ops_fp
- { \g_benchmark_time_fp / \g_@@_one_op_fp }
+ \int_gset:Nn \g_@@_duration_int
+ { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } / 4 }
+ \tl_gset:Nn \g_@@_code_tl
+ { \int_gadd:Nn \g_@@_duration_int { 0 } }
+ \@@_aux:
+ \fp_gset:Nn \g_@@_one_op_fp { max(\g_@@_time_fp, 1e-16) }
+ \int_gset:Nn \g_@@_duration_int
+ { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_fp_to_tl:N, \@@_fp_to_tl_aux:nN}
+% Similar to \cs{fp_to_tl:N} but rounds to $3$ significant digits and
+% uses scientific notation starting from |1e3|.
+% \begin{macrocode}
+\cs_new:Npn \@@_fp_to_tl:N #1
+ {
+ \fp_compare:nTF { abs(#1) < 1000 }
+ { \fp_to_tl:n { round(#1, 2 - logb(#1)) } }
+ {
+ \exp_args:Nf \@@_fp_to_tl_aux:nN
+ { \fp_to_int:n { logb(#1) } } #1
+ }
+ }
+\cs_new:Npn \@@_fp_to_tl_aux:nN #1#2
+ { \fp_to_tl:n { round(#2 * 1e-#1, 2) } e#1 }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_display:}
+% Function to display the time that was measured and the estimated
+% number of operations.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_display:
+ {
+ \fp_gset:Nn \g_@@_ops_fp { \g_@@_time_fp / \g_@@_one_op_fp }
+ \iow_term:x
+ {
+ \@@_fp_to_tl:N \g_@@_time_fp \c_space_tl seconds \c_space_tl
+ ( \@@_fp_to_tl:N \g_@@_ops_fp \c_space_tl ops)
+ }
}
% \end{macrocode}
% \end{macro}
%
% \subsection{Benchmark tic toc}
%
-% \begin{variable}{\g_@@_tictoc_int, \g_@@_tictoc_seq}
+% \begin{variable}{\g_@@_tictoc_int, \g_@@_tictoc_seq, \l_@@_tictoc_pop_tl}
% \begin{macrocode}
\int_new:N \g_@@_tictoc_int
\seq_new:N \g_@@_tictoc_seq
+\tl_new:N \l_@@_tictoc_pop_tl
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\benchmark_tic:, \@@_tic:}
+% \begin{macro}[EXP]{\@@_tictoc_prefix:}
+% We include the package name in analogy with continuation lines of
+% error/warning messages.
% \begin{macrocode}
-\cs_new_protected:Npn \benchmark_tic:
+\cs_new:Npn \@@_tictoc_prefix:
{
- \int_compare:nTF { \g_@@_tictoc_int == 0 }
- {
- \sys_gzero_timer:
- \@@_tic:
- }
- { \@@_tic: }
+ (l3benchmark) \c_space_tl
+ + \prg_replicate:nn { \g_@@_tictoc_int } { -+ } \c_space_tl
}
-\cs_new_protected:Npn \@@_tic:
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\benchmark_tic:}
+% \begin{macrocode}
+\cs_new_protected:Npn \benchmark_tic:
{
- \exp_args:NNf \seq_put_right:Nn \g_@@_tictoc_seq { \sys_timer: }
+ \iow_term:x { \@@_tictoc_prefix: TIC }
+ \exp_args:NNf \seq_gput_right:Nn \g_@@_tictoc_seq { \sys_timer: }
\int_gincr:N \g_@@_tictoc_int
- \iow_term:x
- {
- \prg_replicate:nn {\g_@@_tictoc_int} {---+} \space
- TIC
- }
}
% \end{macrocode}
% \end{macro}
@@ -546,30 +547,26 @@
% \begin{macrocode}
\cs_new:Npn \benchmark_toc:
{
- \int_compare:nT { \g_@@_tictoc_int == 0 }
- { \msg_error:nn {benchmark} {toc-first} }
- \seq_pop_right:NN \g_@@_tictoc_seq \l_@@_tictoc_pop_tl
- \@@_toc:
+ \seq_gpop_right:NNTF \g_@@_tictoc_seq \l_@@_tictoc_pop_tl
+ { \@@_toc: }
+ { \msg_error:nn { benchmark } { toc-first } }
}
\cs_new_protected:Npn \@@_toc:
{
- \tl_set:Nx \l_@@_tictoc_tl
- {
- \fp_to_decimal:n
- { round( ( \sys_timer: - \l_@@_tictoc_pop_tl) / 65536 , 3 ) }
- }
+ \int_gdecr:N \g_@@_tictoc_int
+ \fp_gset:Nn \g_@@_time_fp
+ { ( \sys_timer: - \l_@@_tictoc_pop_tl ) / 65536 }
\iow_term:x
{
- \prg_replicate:nn {\g_@@_tictoc_int} {---+} \c_space_tl
+ \@@_tictoc_prefix:
TOC: \c_space_tl
- \l_@@_tictoc_tl \c_space_tl s
+ \@@_fp_to_tl:N \g_@@_time_fp \c_space_tl s
}
- \int_gdecr:N \g_@@_tictoc_int
}
-\msg_new:nnn {benchmark} {toc-first}
+\msg_new:nnn { benchmark } { toc-first }
{
- \token_to_str:N \benchmark_toc: \space without~
- \token_to_str:N \benchmark_tic: \space !
+ \token_to_str:N \benchmark_toc: \c_space_tl without~
+ \token_to_str:N \benchmark_tic: \c_space_tl !
}
% \end{macrocode}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
index 5c1db2f6aaa..7e0820f8b7b 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -148,7 +148,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3cctab}{2018-10-31}{}
+\ProvidesExplPackage{l3cctab}{2018-11-19}{}
{L3 Experimental category code tables}
%</package>
% \end{macrocode}
@@ -160,10 +160,8 @@
% tables need to be followed. There is also a sequence stack for the
% dynamic tables themselves.
% \begin{macrocode}
-%<*initex>
\int_new:N \g_@@_allocate_int
\int_gset:Nn \g_@@_allocate_int { -1 }
-%</initex>
\int_new:N \g_@@_stack_int
\seq_new:N \g_@@_stack_seq
% \end{macrocode}
@@ -219,7 +217,6 @@
%</initex>
%<*package>
\newcatcodetable #1
- \tex_initcatcodetable:D #1
%</package>
}
% \end{macrocode}
@@ -268,21 +265,29 @@
% \begin{macrocode}
{
\cs_new_protected:Npn \@@_gstore:Nnn #1#2#3
- { \intarray_gset:Nnn #1 { #2 + 1 } {#3} }
+ {
+ \intarray_gset:cnn
+ { g_@@_ \int_use:N #1 _cctab } { #2 + 1 } {#3}
+ }
% \end{macrocode}
% Following the \LuaTeX{} pattern, a new table starts with \IniTeX{} codes.
% \begin{macrocode}
\cs_new_protected:Npn \cctab_new:N #1
{
- \intarray_new:Nn #1 { 256 }
+ \int_gadd:Nn \g_@@_allocate_int { 1 }
+ \int_const:Nn #1 { \g_@@_allocate_int }
+ \intarray_new:cn { g_@@_ \int_use:N #1 _cctab } { 256 }
\int_step_inline:nn { 256 }
- { \intarray_gset:Nnn #1 {##1} { 12 } }
+ {
+ \intarray_gset:cnn
+ { g_@@_ \int_use:N #1 _cctab } {##1} { 12 }
+ }
\@@_gstore:Nnn #1 { 0 } { 9 }
\@@_gstore:Nnn #1 { 13 } { 5 }
\@@_gstore:Nnn #1 { 32 } { 10 }
\@@_gstore:Nnn #1 { 37 } { 14 }
- \int_step_inline:nnn { 65 } { 90 }
- { \intarray_gset:Nnn #1 {##1} { 11 } }
+ \int_step_inline:nnn { 64 } { 89 }
+ { \@@_gstore:Nnn #1 {##1} { 11 } }
\@@_gstore:Nnn #1 { 92 } { 0 }
\int_step_inline:nnn { 97 } { 122 }
{ \@@_gstore:Nnn #1 {##1} { 11 } }
@@ -309,7 +314,10 @@
\int_step_inline:nn { 256 }
{
\char_set_catcode:nn { ##1 - 1 }
- { \intarray_item:Nn #1 {##1} }
+ {
+ \intarray_item:cn
+ { g_@@_ \int_use:N #1 _cctab } {##1}
+ }
}
}
\cs_generate_variant:Nn \intarray_new:Nn { c }
@@ -334,7 +342,7 @@
#2
\int_step_inline:nn { 256 }
{
- \intarray_gset:Nnn #1 {##1}
+ \intarray_gset:cnn { g_@@_ \int_use:N #1 _cctab } {##1}
{ \char_value_catcode:n { ##1 - 1 } }
}
\group_end:
@@ -346,27 +354,19 @@
% \end{macro}
% \end{macro}
%
-% \begin{variable}{\g_@@_tmp_cctab}
-% Scratch space.
-% \begin{macrocode}
-\cctab_new:N \g_@@_tmp_cctab
-% \end{macrocode}
-% \end{variable}
-%
% \begin{macro}{\cctab_const:Nn}
-% Creating constant tables is a bit tricky: we do it in a two part
-% fashion via a temporary one.
% \begin{macrocode}
\cs_new_protected:Npn \cctab_const:Nn #1#2
{
- \cctab_gset:Nn \g_@@_tmp_cctab {#2}
- \cs_new_eq:NN #1 \g_@@_tmp_cctab
+ \cctab_new:N #1
+ \cctab_gset:Nn #1 {#2}
}
% \end{macrocode}
% \end{macro}
%
% \begin{variable}
% {
+% \c_initex_cctab ,
% \c_code_cctab ,
% \c_document_cctab ,
% \c_initex_cctab ,
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
index 1e7f5813f19..111018bb5c8 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -263,7 +263,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3color}{2018-10-31}{}
+\ProvidesExplPackage{l3color}{2018-11-19}{}
{L3 Experimental color support}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
index 0326066f004..e450d0c4d4e 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
index 4d1c56c9fd9..240d131af41 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
index 2d51e741836..186f4a4a334 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
index ceda4c7632d..8d2b93093ad 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
index 4b0041524c2..99da2d119e4 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
index ca7a83fbc78..8f1276e5450 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
index f61d6a70572..2fba1a421fa 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
index 53c6e8c42e6..a409de15881 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
@@ -109,7 +109,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -1106,7 +1106,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3draw}{2018-10-31}{}
+\ProvidesExplPackage{l3draw}{2018-11-19}{}
{L3 Experimental core drawing support}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
index 6d33d93bf0d..c26e6eaf82b 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -234,7 +234,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-convert}{2018-10-31}{}
+\ProvidesExplPackage{l3str-convert}{2018-11-19}{}
{L3 Experimental string encoding conversions}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
index 45dd7c24f8d..bdd0426712d 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -162,7 +162,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2018-10-31}{}
+\ProvidesExplPackage{l3str-format}{2018-11-19}{}
{L3 Experimental string formatting}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
index 606b372e71e..a1b7af274ba 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -134,7 +134,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3sys-shell}{2018-10-31}{}
+\ProvidesExplPackage{l3sys-shell}{2018-11-19}{}
{L3 Experimental system shell functions}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
index e2c14dbe332..4c2a45bdd69 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
@@ -54,7 +54,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -673,7 +673,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2018-10-31}{}
+\ProvidesExplPackage{xcoffins}{2018-11-19}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
index 9369c668d02..7ff6508cbb7 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
@@ -59,7 +59,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -685,7 +685,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3galley}{2018-10-31}{}
+\ProvidesExplPackage{l3galley}{2018-11-19}{}
{L3 Experimental galley code}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
index a92b0be9698..92368b98a7e 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -732,7 +732,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2018-10-31}{}
+\ProvidesExplPackage{xgalley}{2018-11-19}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index 70989f1950a..7d772133088 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -21,7 +21,7 @@
% for those people who are interested.
%
%<*driver|generic|package>
-\def\ExplFileDate{2018-10-31}%
+\def\ExplFileDate{2018-11-19}%
%</driver|generic|package>
%<*driver>
\documentclass[full]{l3doc}
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
index 80a0b4b7eb8..a00f377a36e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index d642eea647a..b3e9db2852e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index 1a22e982d00..658e811554d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -138,7 +138,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index 6a5e87b7c6c..d02d4dd1fbe 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index f37e0317c9e..4c1c05e531a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -269,6 +269,33 @@
% applicable.
% \end{function}
%
+% \section{Additions to \pkg{l3fp}}
+%
+% \begin{function}[EXP, added = 2018-11-03]{logb}
+% \begin{syntax}
+% \cs{fp_eval:n} \{ |logb(| \meta{fpexpr} |)| \}
+% \end{syntax}
+% Determines the exponent of the \meta{fpexpr}, namely the floor of
+% the base-$10$ logarithm of its absolute value. \enquote{Division by
+% zero} occurs when evaluating $\operatorname{logb}(\pm 0) = -\infty$.
+% Other special values are $\operatorname{logb}(\pm\infty)=+\infty$
+% and $\operatorname{logb}(\nan{})=\nan{}$. If the operand is a tuple
+% or is \nan{}, then \enquote{invalid operation} occurs and the result
+% is \nan{}.
+% \end{function}
+%
+% \begin{function}[EXP, added = 2018-11-03]{\fp_sign:n}
+% \begin{syntax}
+% \cs{fp_sign:n} \Arg{fpexpr}
+% \end{syntax}
+% Evaluates the \meta{fpexpr} and leaves its sign in the input stream
+% using \cs{fp_eval:n} |{sign(|\meta{result}|)}|: $+1$ for positive
+% numbers and for $+\infty$, $-1$ for negative numbers and for
+% $-\infty$, $\pm 0$ for $\pm 0$. If the operand is a tuple or is
+% \nan{}, then \enquote{invalid operation} occurs and the result
+% is~$0$.
+% \end{function}
+%
% \section{Additions to \pkg{l3fparray}}
%
% \begin{function}[added = 2018-05-05]{\fparray_new:Nn}
@@ -421,6 +448,14 @@
% This is not yet available in \XeTeX{}.
% \end{function}
%
+% \begin{function}[EXP, added = 2018-11-03]{\int_sign:n}
+% \begin{syntax}
+% \cs{int_sign:n} \Arg{intexpr}
+% \end{syntax}
+% Evaluates the \meta{integer expression} then leaves $1$ or $0$ or
+% $-1$ in the input stream according to the sign of the result.
+% \end{function}
+%
% \section{Additions to \pkg{l3intarray}}
%
% \begin{function}[EXP, added = 2018-05-05]{\intarray_rand_item:N}
@@ -819,6 +854,14 @@
%
% \section{Additions to \pkg{l3skip}}
%
+% \begin{function}[EXP, added = 2018-11-03]{\dim_sign:n}
+% \begin{syntax}
+% \cs{dim_sign:n} \Arg{dimexpr}
+% \end{syntax}
+% Evaluates the \meta{dimexpr} then leaves $1$ or $0$ or $-1$ in the
+% input stream according to the sign of the result.
+% \end{function}
+%
% \begin{function}{\skip_split_finite_else_action:nnNN}
% \begin{syntax}
% \cs{skip_split_finite_else_action:nnNN} \Arg{skipexpr} \Arg{action}
@@ -2178,6 +2221,22 @@
% \end{macro}
% \end{macro}
%
+% \subsection{Additions to \pkg{l3fp-convert}}
+%
+% \begin{macrocode}
+%<@@=fp>
+% \end{macrocode}
+%
+% \begin{macro}{\fp_sign:n}
+% Trivial but useful. See the implementation of \cs{fp_add:Nn} for an
+% explanation of why to use \cs{@@_parse:n}, namely, for better error
+% reporting.
+% \begin{macrocode}
+\cs_new:Npn \fp_sign:n #1
+ { \fp_to_decimal:n { sign \@@_parse:n {#1} } }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Additions to \pkg{l3file}}
%
% \begin{macrocode}
@@ -2310,6 +2369,39 @@
% \subsection{Additions to \pkg{l3msg}}
%
% \begin{macrocode}
+%<@@=int>
+% \end{macrocode}
+%
+% \begin{macro}[EXP]{\int_sign:n, \@@_sign:Nw}
+% See \cs{int_abs:n}. Evaluate the expression once (and when
+% debugging is enabled, check that the expression is well-formed),
+% then test the first character to determine the sign. This is
+% wrapped in \cs{int_value:w} \ldots{} \cs{exp_stop_f:} to ensure a
+% fixed number of expansions and to avoid dealing with closing the
+% conditionals.
+% \begin{macrocode}
+\__kernel_patch_args:nNNpn
+ { { \__kernel_chk_expr:nNnN {#1} \@@_eval:w { } \int_sign:n } }
+\cs_new:Npn \int_sign:n #1
+ {
+ \int_value:w \exp_after:wN \@@_sign:Nw
+ \int_value:w \@@_eval:w #1 \@@_eval_end: ;
+ \exp_stop_f:
+ }
+\cs_new:Npn \@@_sign:Nw #1#2 ;
+ {
+ \if_meaning:w 0 #1
+ 0
+ \else:
+ \if_meaning:w - #1 - \fi: 1
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Additions to \pkg{l3msg}}
+%
+% \begin{macrocode}
%<@@=msg>
% \end{macrocode}
%
@@ -2786,6 +2878,40 @@
% \subsection{Additions to \pkg{l3skip}}
%
% \begin{macrocode}
+%<@@=dim>
+% \end{macrocode}
+%
+% \begin{macro}[EXP]{\dim_sign:n, \@@_sign:Nw}
+% See \cs{dim_abs:n}. Contrarily to \cs{int_sign:n} the case of a
+% zero dimension cannot be distinguished from a positive dimension by
+% looking only at the first character, since |0.2pt| and |0pt| start
+% the same way. We need explicit comparisons. We start by
+% distinguishing the most common case of a positive dimension.
+% \begin{macrocode}
+\__kernel_patch_args:nNNpn
+ { { \__kernel_chk_expr:nNnN {#1} \@@_eval:w { } \dim_sign:n } }
+\cs_new:Npn \dim_sign:n #1
+ {
+ \int_value:w \exp_after:wN \@@_sign:Nw
+ \dim_use:N \@@_eval:w #1 \@@_eval_end: ;
+ \exp_stop_f:
+ }
+\cs_new:Npn \@@_sign:Nw #1#2 ;
+ {
+ \if_dim:w #1#2 > \c_zero_dim
+ 1
+ \else:
+ \if_meaning:w - #1
+ -1
+ \else:
+ 0
+ \fi:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
%<@@=skip>
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index 6ae74ca03d0..7d2f3716d69 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index 6d83e8a028d..de848591d3f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -745,7 +745,7 @@
{ l_@@_poles_ \@@_to_value:N #1 _prop } {#2} #3
{
\__kernel_msg_error:nnxx { kernel } { unknown-coffin-pole }
- {#2} { \token_to_str:N #1 }
+ { \exp_not:n {#2} } { \token_to_str:N #1 }
\tl_set:Nn #3 { { 0pt } { 0pt } { 0pt } { 0pt } }
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
index 54cfa159870..0f281c1716f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index 6ed8c30457a..10f8494a73d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index f15ce38fc86..54d7e7e53ba 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -77,7 +77,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
% \maketitle
% \tableofcontents
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index 7f1cb9f03f8..bb1ccdd5780 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
index 292692e288c..dcb425ff0df 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -554,23 +554,23 @@
%<*package>
\ProvidesExplFile
%<*dvipdfmx>
- {l3dvidpfmx.def}{2018-10-31}{}
+ {l3dvidpfmx.def}{2018-11-19}{}
{L3 Experimental driver: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3dvips.def}{2018-10-31}{}
+ {l3dvips.def}{2018-11-19}{}
{L3 Experimental driver: dvips}
%</dvips>
%<*dvisvgm>
- {l3dvisvgm.def}{2018-10-31}{}
+ {l3dvisvgm.def}{2018-11-19}{}
{L3 Experimental driver: dvisvgm}
%</dvisvgm>
%<*pdfmode>
- {l3pdfmode.def}{2018-10-31}{}
+ {l3pdfmode.def}{2018-11-19}{}
{L3 Experimental driver: PDF mode}
%</pdfmode>
%<*xdvipdfmx>
- {l3xdvidpfmx.def}{2018-10-31}{}
+ {l3xdvidpfmx.def}{2018-11-19}{}
{L3 Experimental driver: xdvipdfmx}
%</xdvipdfmx>
%</package>
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index 299234f8a6d..bfaef8e5e39 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index 5b389765f53..3b56f3683ce 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
index 096af07306b..2009835ab94 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index 70b47167b52..b82904a3d41 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index 6dca2f7770b..c068438024b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
index 690f68d1b6e..14af2cf597c 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index 4481093d01c..8740c1c7351 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -73,6 +73,7 @@
% \begin{macro}[EXP]
% {
% \@@_parse_word_abs:N ,
+% \@@_parse_word_logb:N ,
% \@@_parse_word_sign:N ,
% \@@_parse_word_sqrt:N ,
% }
@@ -80,6 +81,8 @@
% \begin{macrocode}
\cs_new:Npn \@@_parse_word_abs:N
{ \@@_parse_unary_function:NNN \@@_set_sign_o:w 0 }
+\cs_new:Npn \@@_parse_word_logb:N
+ { \@@_parse_unary_function:NNN \@@_logb_o:w ? }
\cs_new:Npn \@@_parse_word_sign:N
{ \@@_parse_unary_function:NNN \@@_sign_o:w ? }
\cs_new:Npn \@@_parse_word_sqrt:N
@@ -2029,7 +2032,29 @@
% \end{macrocode}
% \end{macro}
%
-% \subsection{About the sign}
+% \subsection{About the sign and exponent}
+%
+% \begin{macro}[EXP]{\@@_logb_o:w, \@@_logb_aux_o:w}
+% The exponent of a normal number is its \meta{exponent} minus one.
+% \begin{macrocode}
+\cs_new:Npn \@@_logb_o:w ? \s_@@ \@@_chk:w #1#2; @
+ {
+ \if_case:w #1 \exp_stop_f:
+ \@@_case_use:nw
+ { \@@_division_by_zero_o:Nnw \c_minus_inf_fp { logb } }
+ \or: \exp_after:wN \@@_logb_aux_o:w
+ \or: \@@_case_return_o:Nw \c_inf_fp
+ \else: \@@_case_return_same_o:w
+ \fi:
+ \s_@@ \@@_chk:w #1 #2;
+ }
+\cs_new:Npn \@@_logb_aux_o:w \s_@@ \@@_chk:w #1 #2 #3 #4 ;
+ {
+ \exp_after:wN \@@_parse:n \exp_after:wN
+ { \int_value:w \int_eval:w #3 - 1 \exp_after:wN }
+ }
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}[EXP]{\@@_sign_o:w}
% \begin{macro}[EXP]{\@@_sign_aux_o:w}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index ba6a1c40310..64db9fe578a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index 8d337c89905..9347f5cc946 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index 088d2ef1882..f98aa35ad98 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index f1810b23934..eacc520f0b4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 10e1b1da3ff..fa5f0fcf8c5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index 03bc5df76fe..61f457ae449 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index 5bd974f8d10..910299e3e67 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index e8c66baabea..84b7ebafc6c 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index 035bae6b9a6..241fb2d58f9 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index 1d7b72377f4..89cf60d0632 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index fcd8a27d2c3..7ef911cc9ff 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index a8a6851ae8c..56fa910a314 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index 06a819937f0..6879d1c6e06 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index 834d0dc4254..efa037242b5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index 6e1b148e0f3..030f5660ef5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index 82da76ea03f..cdaf498190b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 87c8ad1e870..0b9794dd043 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -891,7 +891,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\msg_moudle_name:n, \msg_see_documentation_text:n}
+% \begin{macro}[EXP]{\msg_module_name:n, \msg_see_documentation_text:n}
% Contextual footer information, with the potential to give modules an
% alternative name.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index c4ad2e471d2..9ab3a340a6e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
@@ -615,6 +615,7 @@
\@@_primitive:NN \pdfeachlinedepth \tex_eachlinedepth:D
\@@_primitive:NN \pdfeachlineheight \tex_eachlineheight:D
\@@_primitive:NN \pdfelapsedtime \tex_elapsedtime:D
+ \@@_primitive:NN \pdffiledump \tex_filedump:D
\@@_primitive:NN \pdffilemoddate \tex_filemoddate:D
\@@_primitive:NN \pdffilesize \tex_filesize:D
\@@_primitive:NN \pdffirstlineheight \tex_firstlineheight:D
@@ -758,7 +759,11 @@
% Primitives from \pdfTeX{} that \XeTeX{} renames: also helps with
% \LuaTeX{}.
% \begin{macrocode}
+ \@@_primitive:NN \creationdate \tex_creationdate:D
\@@_primitive:NN \elapsedtime \tex_elapsedtime:D
+ \@@_primitive:NN \filedump \tex_filedump:D
+ \@@_primitive:NN \filemoddate \tex_filemoddate:D
+ \@@_primitive:NN \filesize \tex_filesize:D
\@@_primitive:NN \mdfivesum \tex_mdfivesum:D
\@@_primitive:NN \ifprimitive \tex_ifprimitive:D
\@@_primitive:NN \primitive \tex_primitive:D
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
index b9a217c4b0d..ff344233c91 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
@@ -42,7 +42,7 @@
% }
%
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index 3ec1682efee..b18389f6e50 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 3259bc595b3..0f2fdff7569 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index efe7f51ac47..a123baf55f0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index 389661bbb56..68b597a9250 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index 1b7667253d6..0eaadc78d50 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 32c0f38ffeb..cb1839353d5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index 39c733fbca9..217acdaa320 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index cdf0c1dc821..430f33d2498 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index f990fd150fc..38ed4c2925f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index 3f95c433027..1b2d02d32d1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index 8248febf65f..30ef7b74f8d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index c37edbacf71..df8bac88aa7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index 7f00ded4b96..00536dc3472 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
%
% \maketitle
%
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
index f9ed7d0c25c..87c8790e3d3 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
@@ -20,7 +20,7 @@
%%
%% File: l3benchmark.dtx Copyright (C) 2011,2012,2014-2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2018-10-31}{}
+\ProvidesExplPackage{l3benchmark}{2018-11-19}{}
{L3 Experimental benchmarking}
\sys_if_engine_luatex:TF
{
@@ -62,57 +62,22 @@
\c_zero_int
}
}
-\fp_new:N \g_benchmark_time_fp
-\fp_new:N \g_benchmark_ops_fp
-\cs_new_protected:Npn \benchmark_display:
- { \iow_term:x { \fp_to_tl:N \g_benchmark_time_fp \c_space_tl seconds } }
-\cs_new_protected:Npn \benchmark_display_in_ops:
- {
- \iow_term:x
- {
- \fp_compare:nTF { \g_benchmark_ops_fp > 1e9 }
- { \fp_to_tl:n { \g_benchmark_ops_fp * 1e-9 } ~ G~ops }
- {
- \fp_compare:nTF { \g_benchmark_ops_fp > 1e6 }
- { \fp_to_tl:n { \g_benchmark_ops_fp * 1e-6 } ~ M~ops }
- {
- \fp_compare:nTF { \g_benchmark_ops_fp > 1e3 }
- { \fp_to_tl:n { \g_benchmark_ops_fp * 1e-3 } ~ K~ops }
- { \fp_to_tl:n { \g_benchmark_ops_fp } ~ ops }
- }
- }
- }
- }
+\fp_new:N \g_benchmark_duration_target_fp
+\fp_gset:Nn \g_benchmark_duration_target_fp { 1 }
\sys_if_timer_exist:F
{
- \msg_new:nnnn { benchmark } { no-time }
- { The~l3benchmark~package~failed~to~access~a~clock. }
- { The~current~engine~provides~no~way~to~access~the~system~time. }
+ \fp_gset:Nn \g_benchmark_duration_target_fp { nan }
\cs_new_protected:Npn \benchmark_once:n #1
{ \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark_once_in_ops:n #1
- { \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark_once_silent:n #1
- { \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark:n #1
- { \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark_in_ops:n #1
+ \cs_new_eq:NN \benchmark:n \benchmark_once:n
+ \cs_new_protected:Npn \benchmark_tic:
{ \msg_error:nn { benchmark } { no-time } }
- \cs_new_protected:Npn \benchmark_silent:n #1
- { \msg_error:nn { benchmark } { no-time } }
- \fp_gset:Nn \g_benchmark_time_fp { nan }
- \fp_gset:Nn \g_benchmark_ops_fp { nan }
+ \cs_new_eq:NN \benchmark_toc: \benchmark_tic:
+ \msg_new:nnnn { benchmark } { no-time }
+ { The~l3benchmark~package~failed~to~access~a~clock. }
+ { The~current~engine~provides~no~way~to~access~the~system~time. }
\msg_critical:nn { benchmark } { no-time }
}
-\fp_new:N \g_benchmark_duration_target_fp
-\fp_gset:Nn \g_benchmark_duration_target_fp { 1 }
-\int_new:N \g__benchmark_duration_int
-\int_new:N \g__benchmark_time_int
-\int_new:N \g__benchmark_time_a_int
-\int_new:N \g__benchmark_time_b_int
-\int_new:N \g__benchmark_time_c_int
-\int_new:N \g__benchmark_time_d_int
-\int_new:N \g__benchmark_repeat_int
\int_new:N \g__benchmark_nesting_int
\cs_new_protected:Npn \__benchmark_raw:nN #1
{
@@ -163,63 +128,52 @@
\int_gset:Nn #3 { #1 - \g__benchmark_time_int }
\cs_set_eq:NN \__benchmark_tmp:w \prg_do_nothing:
}
-\fp_new:N \g__benchmark_one_op_fp
+\fp_new:N \g__benchmark_time_fp
+\fp_new:N \g__benchmark_ops_fp
+\int_new:N \g__benchmark_duration_int
+\int_new:N \g__benchmark_time_int
+\int_new:N \g__benchmark_time_a_int
+\int_new:N \g__benchmark_time_b_int
+\int_new:N \g__benchmark_time_c_int
+\int_new:N \g__benchmark_time_d_int
+\int_new:N \g__benchmark_repeat_int
\tl_new:N \g__benchmark_code_tl
-\cs_new_protected:Npn \benchmark:n #1
- { \benchmark_silent:n {#1} \benchmark_display: }
-\cs_new_protected:Npn \benchmark_in_ops:n #1
- { \benchmark_silent:n {#1} \benchmark_display_in_ops: }
-\cs_new_protected:Npn \__benchmark_measure_op:
+\cs_new_protected:Npn \benchmark_once:n #1
{
- \int_gset:Nn \g__benchmark_duration_int { 256 }
- \tl_gset:Nn \g__benchmark_code_tl
- { \int_gset:Nn \g__benchmark_duration_int { 256 } } % arbitrary single operation
- \__benchmark_aux:
- \fp_gset_eq:NN \g__benchmark_one_op_fp \g_benchmark_time_fp
- \fp_compare:nNnT \g__benchmark_one_op_fp < { 1e-6 }
- { \fp_gset:Nn \g__benchmark_one_op_fp { 1e-6 } }
+ \__benchmark_measure_op:
+ \__benchmark_raw:nN {#1} \g__benchmark_time_int
+ \fp_gset:Nn \g__benchmark_time_fp { \g__benchmark_time_int / 65536 }
+ \__benchmark_display:
}
-\cs_new_protected:Npn \benchmark_silent:n #1
+\cs_new_protected:Npn \benchmark:n #1
{
\__benchmark_measure_op:
- \int_gset:Nn \g__benchmark_duration_int
- { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } }
\tl_gset:Nn \g__benchmark_code_tl {#1}
\__benchmark_aux:
- \fp_gset:Nn \g_benchmark_ops_fp
- { \g_benchmark_time_fp / \g__benchmark_one_op_fp }
+ \__benchmark_display:
}
\cs_new_protected:Npn \__benchmark_aux:
{
\int_gset:Nn \g__benchmark_repeat_int { 1 }
\__benchmark_raw:nN { \g__benchmark_code_tl } \g__benchmark_time_int
\int_compare:nNnF \g__benchmark_time_int < { \g__benchmark_duration_int / 2 }
+ { \prg_break: }
+ \bool_until_do:nn
{
- \int_gset_eq:NN \g__benchmark_time_a_int \g__benchmark_time_int
- \int_gset_eq:NN \g__benchmark_time_b_int \g__benchmark_time_int
- \int_gset_eq:NN \g__benchmark_time_c_int \g__benchmark_time_int
- \int_gset_eq:NN \g__benchmark_time_d_int \g__benchmark_time_int
- \prg_break:
+ \int_compare_p:nNn \g__benchmark_time_int > { \g__benchmark_duration_int / 32 }
+ || \int_compare_p:nNn \g__benchmark_repeat_int > { \c_max_int / 4 }
}
- \int_while_do:nNnn \g__benchmark_time_int < { \g__benchmark_duration_int / 100 }
{
- \int_compare:nNnT \g__benchmark_repeat_int > { \c_max_int / 4 }
- {
- \int_gzero:N \g__benchmark_time_a_int
- \int_gzero:N \g__benchmark_time_b_int
- \int_gzero:N \g__benchmark_time_c_int
- \int_gzero:N \g__benchmark_time_d_int
- \prg_break:
- }
\int_gset:Nn \g__benchmark_repeat_int { 4 * \g__benchmark_repeat_int }
\__benchmark_run:N \g__benchmark_time_int
}
\int_gset:Nn \g__benchmark_repeat_int
{
- \int_max:nn { 1 }
+ \fp_to_int:n
{
- \g__benchmark_duration_int * \g__benchmark_repeat_int
- / ( \g__benchmark_time_int * 4 )
+ max ( 1 , min ( \c_max_int ,
+ \g__benchmark_duration_int * \g__benchmark_repeat_int /
+ \int_eval:n { 4 * \g__benchmark_time_int } ) )
}
}
\int_compare:nNnTF \g__benchmark_repeat_int = 1
@@ -228,76 +182,87 @@
\__benchmark_run:N \g__benchmark_time_b_int
\__benchmark_run:N \g__benchmark_time_c_int
\__benchmark_run:N \g__benchmark_time_d_int
- \prg_break_point:
- \fp_gset:Nn \g_benchmark_time_fp
+ \int_gset:Nn \g__benchmark_time_int
{
\int_min:nn
{ \int_min:nn \g__benchmark_time_a_int \g__benchmark_time_b_int }
{ \int_min:nn \g__benchmark_time_c_int \g__benchmark_time_d_int }
- / \g__benchmark_repeat_int / 65536
}
+ \prg_break_point:
+ \int_compare:nNnT \g__benchmark_time_int < 3 { \int_gzero:N \g__benchmark_time_int }
+ \fp_gset:Nn \g__benchmark_time_fp
+ { \g__benchmark_time_int / \g__benchmark_repeat_int / 65536 }
}
\cs_new_protected:Npn \__benchmark_run:N
{ \exp_args:NNo \__benchmark_raw_replicate:nnN \g__benchmark_repeat_int { \g__benchmark_code_tl } }
-\cs_new_protected:Npn \benchmark_once:n #1
- { \benchmark_once_silent:n {#1} \benchmark_display: }
-\cs_new_protected:Npn \benchmark_once_in_ops:n #1
- { \benchmark_once_silent:n {#1} \benchmark_display_in_ops: }
-\cs_new_protected:Npn \benchmark_once_silent:n #1
+\fp_new:N \g__benchmark_one_op_fp
+\cs_new_protected:Npn \__benchmark_measure_op:
{
- \__benchmark_measure_op:
- \__benchmark_raw:nN {#1} \g__benchmark_time_int
- \fp_gset:Nn \g_benchmark_time_fp { \g__benchmark_time_int / 65536 }
- \fp_gset:Nn \g_benchmark_ops_fp
- { \g_benchmark_time_fp / \g__benchmark_one_op_fp }
+ \int_gset:Nn \g__benchmark_duration_int
+ { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } / 4 }
+ \tl_gset:Nn \g__benchmark_code_tl
+ { \int_gadd:Nn \g__benchmark_duration_int { 0 } }
+ \__benchmark_aux:
+ \fp_gset:Nn \g__benchmark_one_op_fp { max(\g__benchmark_time_fp, 1e-16) }
+ \int_gset:Nn \g__benchmark_duration_int
+ { \fp_to_int:n { 65536 * \g_benchmark_duration_target_fp } }
}
-\int_new:N \g__benchmark_tictoc_int
-\seq_new:N \g__benchmark_tictoc_seq
-\cs_new_protected:Npn \benchmark_tic:
+\cs_new:Npn \__benchmark_fp_to_tl:N #1
{
- \int_compare:nTF { \g__benchmark_tictoc_int == 0 }
+ \fp_compare:nTF { abs(#1) < 1000 }
+ { \fp_to_tl:n { round(#1, 2 - logb(#1)) } }
{
- \sys_gzero_timer:
- \__benchmark_tic:
+ \exp_args:Nf \__benchmark_fp_to_tl_aux:nN
+ { \fp_to_int:n { logb(#1) } } #1
}
- { \__benchmark_tic: }
}
-\cs_new_protected:Npn \__benchmark_tic:
+\cs_new:Npn \__benchmark_fp_to_tl_aux:nN #1#2
+ { \fp_to_tl:n { round(#2 * 1e-#1, 2) } e#1 }
+\cs_new_protected:Npn \__benchmark_display:
{
- \exp_args:NNf \seq_put_right:Nn \g__benchmark_tictoc_seq { \sys_timer: }
- \int_gincr:N \g__benchmark_tictoc_int
+ \fp_gset:Nn \g__benchmark_ops_fp { \g__benchmark_time_fp / \g__benchmark_one_op_fp }
\iow_term:x
{
- \prg_replicate:nn {\g__benchmark_tictoc_int} {---+} \space
- TIC
+ \__benchmark_fp_to_tl:N \g__benchmark_time_fp \c_space_tl seconds \c_space_tl
+ ( \__benchmark_fp_to_tl:N \g__benchmark_ops_fp \c_space_tl ops)
}
}
+\int_new:N \g__benchmark_tictoc_int
+\seq_new:N \g__benchmark_tictoc_seq
+\tl_new:N \l__benchmark_tictoc_pop_tl
+\cs_new:Npn \__benchmark_tictoc_prefix:
+ {
+ (l3benchmark) \c_space_tl
+ + \prg_replicate:nn { \g__benchmark_tictoc_int } { -+ } \c_space_tl
+ }
+\cs_new_protected:Npn \benchmark_tic:
+ {
+ \iow_term:x { \__benchmark_tictoc_prefix: TIC }
+ \exp_args:NNf \seq_gput_right:Nn \g__benchmark_tictoc_seq { \sys_timer: }
+ \int_gincr:N \g__benchmark_tictoc_int
+ }
\cs_new:Npn \benchmark_toc:
{
- \int_compare:nT { \g__benchmark_tictoc_int == 0 }
- { \msg_error:nn {benchmark} {toc-first} }
- \seq_pop_right:NN \g__benchmark_tictoc_seq \l__benchmark_tictoc_pop_tl
- \__benchmark_toc:
+ \seq_gpop_right:NNTF \g__benchmark_tictoc_seq \l__benchmark_tictoc_pop_tl
+ { \__benchmark_toc: }
+ { \msg_error:nn { benchmark } { toc-first } }
}
\cs_new_protected:Npn \__benchmark_toc:
{
- \tl_set:Nx \l__benchmark_tictoc_tl
- {
- \fp_to_decimal:n
- { round( ( \sys_timer: - \l__benchmark_tictoc_pop_tl) / 65536 , 3 ) }
- }
+ \int_gdecr:N \g__benchmark_tictoc_int
+ \fp_gset:Nn \g__benchmark_time_fp
+ { ( \sys_timer: - \l__benchmark_tictoc_pop_tl ) / 65536 }
\iow_term:x
{
- \prg_replicate:nn {\g__benchmark_tictoc_int} {---+} \c_space_tl
+ \__benchmark_tictoc_prefix:
TOC: \c_space_tl
- \l__benchmark_tictoc_tl \c_space_tl s
+ \__benchmark_fp_to_tl:N \g__benchmark_time_fp \c_space_tl s
}
- \int_gdecr:N \g__benchmark_tictoc_int
}
-\msg_new:nnn {benchmark} {toc-first}
+\msg_new:nnn { benchmark } { toc-first }
{
- \token_to_str:N \benchmark_toc: \space without~
- \token_to_str:N \benchmark_tic: \space !
+ \token_to_str:N \benchmark_toc: \c_space_tl without~
+ \token_to_str:N \benchmark_tic: \c_space_tl !
}
%%
%%
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty b/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
index a673ae3beeb..b94484a9d1a 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
@@ -20,8 +20,10 @@
%%
%% File: l3cctab.dtx Copyright (C) 2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3cctab}{2018-10-31}{}
+\ProvidesExplPackage{l3cctab}{2018-11-19}{}
{L3 Experimental category code tables}
+\int_new:N \g__cctab_allocate_int
+\int_gset:Nn \g__cctab_allocate_int { -1 }
\int_new:N \g__cctab_stack_int
\seq_new:N \g__cctab_stack_seq
\tl_new:N \l__cctab_tmp_tl
@@ -31,7 +33,6 @@
{
\__kernel_chk_if_free_cs:N #1
\newcatcodetable #1
- \tex_initcatcodetable:D #1
}
\cs_new_protected:Npn \cctab_begin:N #1
{
@@ -61,18 +62,26 @@
}
{
\cs_new_protected:Npn \__cctab_gstore:Nnn #1#2#3
- { \intarray_gset:Nnn #1 { #2 + 1 } {#3} }
+ {
+ \intarray_gset:cnn
+ { g__cctab_ \int_use:N #1 _cctab } { #2 + 1 } {#3}
+ }
\cs_new_protected:Npn \cctab_new:N #1
{
- \intarray_new:Nn #1 { 256 }
+ \int_gadd:Nn \g__cctab_allocate_int { 1 }
+ \int_const:Nn #1 { \g__cctab_allocate_int }
+ \intarray_new:cn { g__cctab_ \int_use:N #1 _cctab } { 256 }
\int_step_inline:nn { 256 }
- { \intarray_gset:Nnn #1 {##1} { 12 } }
+ {
+ \intarray_gset:cnn
+ { g__cctab_ \int_use:N #1 _cctab } {##1} { 12 }
+ }
\__cctab_gstore:Nnn #1 { 0 } { 9 }
\__cctab_gstore:Nnn #1 { 13 } { 5 }
\__cctab_gstore:Nnn #1 { 32 } { 10 }
\__cctab_gstore:Nnn #1 { 37 } { 14 }
- \int_step_inline:nnn { 65 } { 90 }
- { \intarray_gset:Nnn #1 {##1} { 11 } }
+ \int_step_inline:nnn { 64 } { 89 }
+ { \__cctab_gstore:Nnn #1 {##1} { 11 } }
\__cctab_gstore:Nnn #1 { 92 } { 0 }
\int_step_inline:nnn { 97 } { 122 }
{ \__cctab_gstore:Nnn #1 {##1} { 11 } }
@@ -99,7 +108,10 @@
\int_step_inline:nn { 256 }
{
\char_set_catcode:nn { ##1 - 1 }
- { \intarray_item:Nn #1 {##1} }
+ {
+ \intarray_item:cn
+ { g__cctab_ \int_use:N #1 _cctab } {##1}
+ }
}
}
\cs_generate_variant:Nn \intarray_new:Nn { c }
@@ -124,17 +136,16 @@
#2
\int_step_inline:nn { 256 }
{
- \intarray_gset:Nnn #1 {##1}
+ \intarray_gset:cnn { g__cctab_ \int_use:N #1 _cctab } {##1}
{ \char_value_catcode:n { ##1 - 1 } }
}
\group_end:
}
}
-\cctab_new:N \g__cctab_tmp_cctab
\cs_new_protected:Npn \cctab_const:Nn #1#2
{
- \cctab_gset:Nn \g__cctab_tmp_cctab {#2}
- \cs_new_eq:NN #1 \g__cctab_tmp_cctab
+ \cctab_new:N #1
+ \cctab_gset:Nn #1 {#2}
}
\cctab_const:Nn \c_code_cctab { }
\cctab_const:Nn \c_document_cctab
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
index 16e910101db..5caa1a16b60 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
@@ -20,7 +20,7 @@
%%
%% File: l3color.dtx Copyright(C) 2017-2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3color}{2018-10-31}{}
+\ProvidesExplPackage{l3color}{2018-11-19}{}
{L3 Experimental color support}
\tl_new:N \l__color_tmp_tl
\prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
index ff825b3402e..7568542ba7c 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
@@ -27,7 +27,7 @@
%%
%% File: l3draw.dtx Copyright(C) 2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2018-10-31}{}
+\ProvidesExplPackage{l3draw}{2018-11-19}{}
{L3 Experimental core drawing support}
\RequirePackage { l3color }
%% File: l3draw-boxes.dtx Copyright(C) 2018 The LaTeX3 Project
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
index aa696ec5941..bba4a7b3ffa 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
@@ -20,7 +20,7 @@
%%
%% File: l3str-convert.dtx Copyright (C) 2013-2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-convert}{2018-10-31}{}
+\ProvidesExplPackage{l3str-convert}{2018-11-19}{}
{L3 Experimental string encoding conversions}
\cs_if_exist:NF \use_ii_i:nn
{ \cs_new:Npn \use_ii_i:nn #1#2 { #2 #1 } }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
index b224455020d..83aff2b089a 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
@@ -20,7 +20,7 @@
%%
%% File: l3str-format.dtx Copyright (C) 2012-2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2018-10-31}{}
+\ProvidesExplPackage{l3str-format}{2018-11-19}{}
{L3 Experimental string formatting}
\cs_generate_variant:Nn \use:nn { nf }
\cs_generate_variant:Nn \use:nnn { fnf }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
index f572fb006c7..87b1b13a41c 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
@@ -20,7 +20,7 @@
%%
%% File: l3sys-shell.dtx Copyright(C) 2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2018-10-31}{}
+\ProvidesExplPackage{l3sys-shell}{2018-11-19}{}
{L3 Experimental system shell functions}
\cs_new:Npn \__sys_path_to_win:n #1
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
index 49be85fa7e4..dc2c8b88d66 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
@@ -20,7 +20,7 @@
%%
%% File: xcoffins.dtx Copyright(C) 2010-2012,2014,2016-2018 The LaTeX3 Project
\RequirePackage{xparse}
-\ProvidesExplPackage{xcoffins}{2018-10-31}{}
+\ProvidesExplPackage{xcoffins}{2018-11-19}{}
{L3 Experimental design level coffins}
\keys_define:nn { coffin }
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
index abe51eda60e..cc75515bc8f 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
@@ -33,7 +33,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3galley}{2018-10-31}{}
+\ProvidesExplPackage{l3galley}{2018-11-19}{}
{L3 Experimental galley code}
\int_new:N \l__galley_tmp_int
\seq_new:N \g__galley_tmpa_seq
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
index 43ced539cf6..7fb3391310f 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
@@ -21,7 +21,7 @@
%% File: xgalley.dtx Copyright (C) 1999-2001, 2004-2009 Frank Mittelbach
%% (C) 2010-2012,2014,2016-2018 The LaTeX3 Project
\RequirePackage{xparse}
-\ProvidesExplPackage{xgalley}{2018-10-31}{}
+\ProvidesExplPackage{xgalley}{2018-11-19}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
\clist_new:N \l__galley_tmpa_clist
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 6a96cdf65f2..8bf3a432a01 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -63,7 +63,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project
-\def\ExplFileDate{2018-10-31}%
+\def\ExplFileDate{2018-11-19}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -837,6 +837,7 @@
\__kernel_primitive:NN \pdfeachlinedepth \tex_eachlinedepth:D
\__kernel_primitive:NN \pdfeachlineheight \tex_eachlineheight:D
\__kernel_primitive:NN \pdfelapsedtime \tex_elapsedtime:D
+ \__kernel_primitive:NN \pdffiledump \tex_filedump:D
\__kernel_primitive:NN \pdffilemoddate \tex_filemoddate:D
\__kernel_primitive:NN \pdffilesize \tex_filesize:D
\__kernel_primitive:NN \pdffirstlineheight \tex_firstlineheight:D
@@ -949,7 +950,11 @@
\__kernel_primitive:NN \XeTeXvariationmin \tex_XeTeXvariationmin:D
\__kernel_primitive:NN \XeTeXvariationname \tex_XeTeXvariationname:D
\__kernel_primitive:NN \XeTeXversion \tex_XeTeXversion:D
+ \__kernel_primitive:NN \creationdate \tex_creationdate:D
\__kernel_primitive:NN \elapsedtime \tex_elapsedtime:D
+ \__kernel_primitive:NN \filedump \tex_filedump:D
+ \__kernel_primitive:NN \filemoddate \tex_filemoddate:D
+ \__kernel_primitive:NN \filesize \tex_filesize:D
\__kernel_primitive:NN \mdfivesum \tex_mdfivesum:D
\__kernel_primitive:NN \ifprimitive \tex_ifprimitive:D
\__kernel_primitive:NN \primitive \tex_primitive:D
@@ -15557,6 +15562,8 @@
%% File: l3fp-basics.dtx Copyright (C) 2011-2014,2016-2018 The LaTeX3 Project
\cs_new:Npn \__fp_parse_word_abs:N
{ \__fp_parse_unary_function:NNN \__fp_set_sign_o:w 0 }
+\cs_new:Npn \__fp_parse_word_logb:N
+ { \__fp_parse_unary_function:NNN \__fp_logb_o:w ? }
\cs_new:Npn \__fp_parse_word_sign:N
{ \__fp_parse_unary_function:NNN \__fp_sign_o:w ? }
\cs_new:Npn \__fp_parse_word_sqrt:N
@@ -16298,6 +16305,22 @@
\int_value:w \__fp_int_eval:w #6 + 19999 - #1 ;
\exp_after:wN ;
}
+\cs_new:Npn \__fp_logb_o:w ? \s__fp \__fp_chk:w #1#2; @
+ {
+ \if_case:w #1 \exp_stop_f:
+ \__fp_case_use:nw
+ { \__fp_division_by_zero_o:Nnw \c_minus_inf_fp { logb } }
+ \or: \exp_after:wN \__fp_logb_aux_o:w
+ \or: \__fp_case_return_o:Nw \c_inf_fp
+ \else: \__fp_case_return_same_o:w
+ \fi:
+ \s__fp \__fp_chk:w #1 #2;
+ }
+\cs_new:Npn \__fp_logb_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 #4 ;
+ {
+ \exp_after:wN \__fp_parse:n \exp_after:wN
+ { \int_value:w \int_eval:w #3 - 1 \exp_after:wN }
+ }
\cs_new:Npn \__fp_sign_o:w ? \s__fp \__fp_chk:w #1#2; @
{
\if_case:w #1 \exp_stop_f:
@@ -24089,7 +24112,7 @@
{ l__coffin_poles_ \__coffin_to_value:N #1 _prop } {#2} #3
{
\__kernel_msg_error:nnxx { kernel } { unknown-coffin-pole }
- {#2} { \token_to_str:N #1 }
+ { \exp_not:n {#2} } { \token_to_str:N #1 }
\tl_set:Nn #3 { { 0pt } { 0pt } { 0pt } { 0pt } }
}
}
@@ -25261,6 +25284,8 @@
{#5} {#6}
}
}
+\cs_new:Npn \fp_sign:n #1
+ { \fp_to_decimal:n { sign \__fp_parse:n {#1} } }
\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2
{ \__file_get_details:nnN {#1} { mdfivesum } {#2} }
\cs_new_protected:Npn \file_get_size:nN #1#2
@@ -25340,6 +25365,22 @@
\cs:w flag~#1 \cs_end: 0 ;
\fi:
}
+\__kernel_patch_args:nNNpn
+ { { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_sign:n } }
+\cs_new:Npn \int_sign:n #1
+ {
+ \int_value:w \exp_after:wN \__int_sign:Nw
+ \int_value:w \__int_eval:w #1 \__int_eval_end: ;
+ \exp_stop_f:
+ }
+\cs_new:Npn \__int_sign:Nw #1#2 ;
+ {
+ \if_meaning:w 0 #1
+ 0
+ \else:
+ \if_meaning:w - #1 - \fi: 1
+ \fi:
+ }
\cs_new:Npn \msg_expandable_error:nnnnnn #1#2#3#4#5#6
{
\exp_args:Nf \__msg_expandable_error_module:nn
@@ -25598,6 +25639,26 @@
\exp_after:wN #1
\int_value:w \int_eval:w 1 + #2 ;
}
+\__kernel_patch_args:nNNpn
+ { { \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_sign:n } }
+\cs_new:Npn \dim_sign:n #1
+ {
+ \int_value:w \exp_after:wN \__dim_sign:Nw
+ \dim_use:N \__dim_eval:w #1 \__dim_eval_end: ;
+ \exp_stop_f:
+ }
+\cs_new:Npn \__dim_sign:Nw #1#2 ;
+ {
+ \if_dim:w #1#2 > \c_zero_dim
+ 1
+ \else:
+ \if_meaning:w - #1
+ -1
+ \else:
+ 0
+ \fi:
+ \fi:
+ }
\cs_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4
{
\skip_if_finite:nTF {#1}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 4a637b830c5..8ce266d05a8 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project
-\def\ExplFileDate{2018-10-31}%
+\def\ExplFileDate{2018-11-19}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index ab9906724e1..a774f4a9048 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project
-\def\ExplFileDate{2018-10-31}%
+\def\ExplFileDate{2018-11-19}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
index ed50851dbd4..a242b6eea3c 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
@@ -20,7 +20,7 @@
%%
%% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
\ProvidesExplFile
- {l3dvidpfmx.def}{2018-10-31}{}
+ {l3dvidpfmx.def}{2018-11-19}{}
{L3 Experimental driver: dvipdfmx}
\cs_new_eq:NN \__driver_literal:e \tex_special:D
\cs_new_protected:Npn \__driver_literal:n #1
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
index b8f3670e7e1..a2d5fd5ab52 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
@@ -20,7 +20,7 @@
%%
%% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
\ProvidesExplFile
- {l3dvips.def}{2018-10-31}{}
+ {l3dvips.def}{2018-11-19}{}
{L3 Experimental driver: dvips}
\cs_new_eq:NN \__driver_literal:e \tex_special:D
\cs_new_protected:Npn \__driver_literal:n #1
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
index c3d8fe8c5c9..39ee76c2b9f 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
@@ -20,7 +20,7 @@
%%
%% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
\ProvidesExplFile
- {l3dvisvgm.def}{2018-10-31}{}
+ {l3dvisvgm.def}{2018-11-19}{}
{L3 Experimental driver: dvisvgm}
\cs_new_eq:NN \__driver_literal:e \tex_special:D
\cs_new_protected:Npn \__driver_literal:n #1
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
index 07b01ffd13f..afac364e67f 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
@@ -20,7 +20,7 @@
%%
%% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
\ProvidesExplFile
- {l3pdfmode.def}{2018-10-31}{}
+ {l3pdfmode.def}{2018-11-19}{}
{L3 Experimental driver: PDF mode}
\cs_new_eq:NN \__driver_literal:e \tex_special:D
\cs_new_protected:Npn \__driver_literal:n #1
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
index f7796bc13b3..69e0bb4e3da 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
@@ -20,7 +20,7 @@
%%
%% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project
\ProvidesExplFile
- {l3xdvidpfmx.def}{2018-10-31}{}
+ {l3xdvidpfmx.def}{2018-11-19}{}
{L3 Experimental driver: xdvipdfmx}
\cs_new_eq:NN \__driver_literal:e \tex_special:D
\cs_new_protected:Npn \__driver_literal:n #1