texlive[49205] Master/texmf-dist: l3 (20nov18)

commits+karl at tug.org commits+karl at tug.org
Tue Nov 20 23:02:39 CET 2018


Revision: 49205
          http://tug.org/svn/texlive?view=revision&revision=49205
Author:   karl
Date:     2018-11-20 23:02:39 +0100 (Tue, 20 Nov 2018)
Log Message:
-----------
l3 (20nov18)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
    trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2018-11-20 22:02:39 UTC (rev 49205)
@@ -7,6 +7,8 @@
 
 ## [Unreleased]
 
+## [2018-11-19]
+
 ## [2018-10-31]
 
 ### Added
@@ -52,7 +54,8 @@
 - 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

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2018-11-20 22:02:39 UTC (rev 49205)
@@ -1,7 +1,7 @@
 Experimental LaTeX3 Concepts
 ============================
 
-Release 2018-10-31
+Release 2018-11-19
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2018-11-20 22:02:39 UTC (rev 49205)
@@ -7,10 +7,13 @@
 
 ## [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]
 
 ### Fixed
@@ -30,7 +33,7 @@
 
 ### 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 @@
 - 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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2018-11-20 22:02:39 UTC (rev 49205)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2018-10-31
+Release 2018-11-19
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2018-11-20 22:02:39 UTC (rev 49205)
@@ -52,7 +52,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2018-11-20 22:02:39 UTC (rev 49205)
@@ -30,7 +30,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
 
 \begin{document}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2018-11-20 22:02:39 UTC (rev 49205)
@@ -30,7 +30,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
 
 \newcommand{\TF}{\textit{(TF)}}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2018-11-20 22:02:39 UTC (rev 49205)
@@ -30,7 +30,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
 
 \newcommand{\TF}{\textit{(TF)}}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2018-11-20 22:02:39 UTC (rev 49205)
@@ -51,7 +51,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2018-10-31}
+\date{Released 2018-11-19}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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{function}{\benchmark_once:n}
 %   \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{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,98 +205,36 @@
 %<@@=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.
+% Having access to the system time is essential.
 %    \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}
-%
-%    \begin{macrocode}
 \sys_if_timer_exist:F
   {
+    \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_eq:NN \benchmark:n \benchmark_once:n
+    \cs_new_protected:Npn \benchmark_tic:
+      { \msg_error:nn { benchmark } { no-time } }
+    \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. }
-    \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
-      { \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 }
     \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}
+% \subsubsection{Raw measurement}
 %
-% \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_@@_nesting_int}
 % \begin{macro}{\@@_raw:nN, \@@_raw_aux:N, \@@_raw_end:N}
 %   Store in the given integer variable the time it took to perform a given
@@ -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_@@_one_op_fp
+\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}
 \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,14 +433,16 @@
     \@@_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 } }
@@ -491,53 +449,96 @@
 %    \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}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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,21 +354,12 @@
 % \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}
@@ -367,6 +366,7 @@
 %
 % \begin{variable}
 %   {
+%     \c_initex_cctab   ,
 %     \c_code_cctab     ,
 %     \c_document_cctab ,
 %     \c_initex_cctab   ,

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -138,7 +138,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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 } }
       }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -77,7 +77,7 @@
 %
 % \title{The \cls{l3doc} class}
 % \author{\Team}
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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>

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -38,7 +38,7 @@
 %          {latex-team at 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,8 +2032,30 @@
 %    \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}
 %   Find the sign of the floating point: \texttt{nan}, |+0|, |-0|, |+1| or |-1|.

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -38,7 +38,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -47,7 +47,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 % }
 %
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2018-11-20 22:02:39 UTC (rev 49205)
@@ -41,7 +41,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2018-10-31}
+% \date{Released 2018-11-19}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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
   {
+    \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_eq:NN \benchmark:n \benchmark_once:n
+    \cs_new_protected:Npn \benchmark_tic:
+      { \msg_error:nn { benchmark } { no-time } }
+    \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. }
-    \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
-      { \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 }
     \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,31 +128,29 @@
     \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:
   {
@@ -194,32 +157,23 @@
     \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 !
   }
 %% 
 %%

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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 }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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 } }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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 }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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 }
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}%

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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}
   [%

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def	2018-11-20 22:01:10 UTC (rev 49204)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def	2018-11-20 22:02:39 UTC (rev 49205)
@@ -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



More information about the tex-live-commits mailing list