texlive[52343] Master/texmf-dist: l3 (11oct19)

commits+karl at tug.org commits+karl at tug.org
Fri Oct 11 23:33:04 CEST 2019


Revision: 52343
          http://tug.org/svn/texlive?view=revision&revision=52343
Author:   karl
Date:     2019-10-11 23:33:04 +0200 (Fri, 11 Oct 2019)
Log Message:
-----------
l3 (11oct19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3backend/README.md
    trunk/Master/texmf-dist/doc/latex/l3backend/l3backend-code.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/l3prefixes.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/l3backend/l3backend-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins
    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/l3debug.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/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/l3legacy.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/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-convert.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/l3backend/l3backend-dvipdfmx.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def
    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.lua
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2019-10-11 21:33:04 UTC (rev 52343)
@@ -6,6 +6,12 @@
 
 ## [Unreleased]
 
+## [2019-10-11]
+
+### Changed
+
+- Improved functionality in generic mode
+
 ## [2019-09-05]
 
 ### Added
@@ -35,7 +41,8 @@
 - Include `l3backend` in file names
 - Moved backend code to internal for each 'parent' module
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-09-05...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-11...HEAD
+[2019-10-11]: https://github.com/latex3/latex3/compare/2019-09-05...2019-10-11
 [2019-09-05]: https://github.com/latex3/latex3/compare/2019-08-25...2019-09-05
 [2019-08-25]: https://github.com/latex3/latex3/compare/2019-07-01...2019-08-25
 [2019-07-01]: https://github.com/latex3/latex3/compare/2019-05-28...2019-07-01

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2019-10-11 21:33:04 UTC (rev 52343)
@@ -1,7 +1,7 @@
 LaTeX3 Backend Drivers
 ======================
 
-Release 2019-09-05
+Release 2019-10-11
 
 This package forms parts of `expl3`, and contains the code used to interface
 with backends (drivers) across the `expl3` codebase. The functions here are

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2019-10-11 21:33:04 UTC (rev 52343)
@@ -7,6 +7,23 @@
 
 ## [Unreleased]
 
+## [2019-10-11]
+
+### Changed
+
+- Standard backend for (u)pTeX is now `dvips`
+- Minimum LuaTeX version now v0.95
+- Moved `\debug_on:`, `\debug_off:`, `\debug_suspend:` and `\debug_resume:`
+  to stable
+- Accept 'traditional' class options for backend (`dvipdfmx`, `dvips`, etc.)
+- Performance enhancements when loading `expl3`
+
+### Fixed
+
+- Handling of files with no extension
+- Behaviour of Lua function `l3kernel.charcat` in some circumstances
+- Loading under ConTeXt
+
 ## [2019-10-02]
 
 ### Fixed
@@ -539,7 +556,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/2019-10-02...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-11...HEAD
+[2019-10-11]: https://github.com/latex3/latex3/compare/2019-10-02...2019-10-11
 [2019-10-02]: https://github.com/latex3/latex3/compare/2019-09-30...2019-10-02
 [2019-09-30]: https://github.com/latex3/latex3/compare/2019-09-28...2019-09-30
 [2019-09-28]: https://github.com/latex3/latex3/compare/2019-09-19...2019-09-28

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2019-10-11 21:33:04 UTC (rev 52343)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2019-10-02
+Release 2019-10-11
 
 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	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2019-10-11 21:33:04 UTC (rev 52343)
@@ -54,7 +54,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2019-10-02}
+\date{Released 2019-10-11}
 
 \pagenumbering{roman}
 \maketitle

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.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	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2019-10-11 21:33:04 UTC (rev 52343)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2019-10-02}
+\date{Released 2019-10-11}
 
 \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	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2019-10-11 21:33:04 UTC (rev 52343)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2019-10-02}
+\date{Released 2019-10-11}
 
 \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	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2019-10-11 21:33:04 UTC (rev 52343)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2019-10-02}
+\date{Released 2019-10-11}
 
 \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	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2019-10-11 21:33:04 UTC (rev 52343)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2019-10-02}
+\date{Released 2019-10-11}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -84,7 +84,7 @@
 \cs_new_protected:Npn \@@_backend_pickup:N #1 { }
 \AtBeginDocument
   {
-    \@ifpackageloaded { color }
+    \cs_if_exist:cT { ver at color.sty }
       {
         \cs_set_protected:Npn \@@_backend_pickup:N #1
           {
@@ -104,7 +104,6 @@
         \cs_new_protected:Npn \@@_backend_pickup:w #1 ~ #2 \q_stop #3
           { \tl_set:Nn #3 { #1 ~ #2 } }
       }
-      { }
   }
 %</package>
 %    \end{macrocode}
@@ -176,13 +175,13 @@
 %   we store our color data in \texttt{dvips} format.
 %   The \tn{current at color} needs to be \texttt{x}-expanded before
 %   \cs{@@_backend_pickup:w} breaks it apart, because for instance
-%   \pkg{xcolor} sets it to be instructions to generate a colour
+%   \pkg{xcolor} sets it to be instructions to generate a color
 %    \begin{macrocode}
 %<*package>
 \cs_new_protected:Npn \@@_backend_pickup:N #1 { }
 \AtBeginDocument
   {
-    \@ifpackageloaded { color }
+    \cs_if_exist:cT { ver at color.sty }
       {
         \cs_set_protected:Npn \@@_backend_pickup:N #1
           {
@@ -213,7 +212,6 @@
               }
           }
       }
-      { }
   }
 %</package>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-09-05}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -71,7 +71,7 @@
 % A very small number of items that belong at the backend level but which
 % are common to all backends.
 %
-% \begin{variable}{\l_@@_internal_boxf}
+% \begin{variable}{\l_@@_internal_box}
 %    \begin{macrocode}
 \box_new:N \l_@@_internal_box
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -22,9 +22,9 @@
 %
 % for those people who are interested.
 %
-%<*driver|generic|package>
-\def\ExplFileDate{2019-10-02}%
-%</driver|generic|package>
+%<*driver|generic|package|2ekernel>
+%</driver|generic|package|2ekernel>
+\def\ExplFileDate{2019-10-11}%
 %<*driver>
 \documentclass[full]{l3doc}
 \usepackage{graphicx}
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -1007,7 +1007,7 @@
 % \begin{itemize}
 %    \item \pdfTeX{} v1.40 or later.
 %    \item \XeTeX{} v0.99992 or later.
-%    \item \LuaTeX{} v0.76 or later.
+%    \item \LuaTeX{} v0.95 or later.
 %    \item e-(u)\pTeX{} mid-2012 or later.
 % \end{itemize}
 %
@@ -1156,19 +1156,31 @@
 %</!loader>
 %    \end{macrocode}
 %
-% \subsection{\LaTeXe{} loader}
+% \subsection{\LaTeXe{} loaders}
 %
+% Loading with \LaTeXe{} may be as part of the format (pre-loading)
+% or as a package. We have to allow for both possible paths, and of
+% course the package being loaded on to of the pre-load. That means
+% the the code here must be safe against re-loading.
+%
 %    \begin{macrocode}
-%<*package&loader>
+%<*package&loader|2ekernel>
 %    \end{macrocode}
 %
-% Identify the package.
+% Identify the package or add to the format message.
 %    \begin{macrocode}
+%<*2ekernel>
+\everyjob\expandafter{\the\everyjob
+  \message{^^J\ExplFileDate\space L3 programming layer}%
+}
+%</2ekernel>
+%<*!2ekernel>
 \ProvidesPackage{expl3}
   [%
     \ExplFileDate\space
     L3 programming layer (loader)
   ]%
+%</!2ekernel>
 %    \end{macrocode}
 %
 % \begin{macro}{\ProvidesExplPackage, \ProvidesExplClass, \ProvidesExplFile}
@@ -1194,8 +1206,16 @@
 % \end{macro}
 %
 %  Load the business end: this leaves \cs{expl3} syntax on.
+%  The test ensures we only load once without needing to know if
+%  there was a preloading step.
 %    \begin{macrocode}
-\input{expl3-code.tex}%
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname tex\string _let:D\endcsname\relax
+  \expandafter\@firstofone
+\else
+  \expandafter\@gobble
+\fi
+  {\input{expl3-code.tex}}%
 %    \end{macrocode}
 %
 % A check that the bootstrap code did not abort loading: if it did,
@@ -1207,47 +1227,70 @@
 \fi
 %    \end{macrocode}
 %
+% If \pkg{expl3} was pre-loaded, we now have to deal with the fact that
+% the syntax will not be activated for the package mode version:
+% simply turn it on. We use \tn{@pushfilenameaux} as a marker: it's defined
+% a little later.
 %    \begin{macrocode}
+%<*!2ekernel>
+\ifdefined\@pushfilenameaux
+  \ExplSyntaxOn
+\fi
+%</!2ekernel>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 %<@@=expl>
 %    \end{macrocode}
 %
 % \begin{variable}{\c_@@_def_ext_tl}
-%   Needed by \LaTeXe{}.
+%   Needed by \LaTeXe{}, and avoiding a re-load issue.
 %    \begin{macrocode}
-\tl_const:Nn \c_@@_def_ext_tl { def }
+\cs_if_exist:NF \c_@@_def_ext_tl
+  { \tl_const:Nn \c_@@_def_ext_tl { def } }
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\__kernel_sys_configuration_load:n}
-%   For \LaTeXe{}, option loading uses the built-in functionality: as this
-%   may be a reload we have to force the issue.
+% \begin{macro}
+%   {\__kernel_sys_configuration_load:n,\__kernel_sys_configuration_load_std:n}
+%   To load configurations, we have the following cases
+%   \begin{itemize}
+%     \item \pkg{expl3} is pre-loaded: by the time any configuration loads,
+%       we have the full file loading stack, and only need the standard
+%       version of the code here.
+%     \item The package is loaded with pre-loading: we again use the standard
+%       version, but we don't test just yet.
+%     \item The package is used without pre-loaded code: we need to manually
+%       manage \pkg{expl3} syntax.
+%   \end{itemize}
 %    \begin{macrocode}
-\cs_new_protected:Npn \__kernel_sys_configuration_load:n #1
+\cs_gset_protected:Npn \__kernel_sys_configuration_load:n #1
+%<*!2ekernel>
   {
-    \group_begin:
-    \cs_set_protected:Npn \ProvidesExplFile
-      {
-        \char_set_catcode_space:n { `\  }
-        \ProvidesExplFileAux
-      }
-    \cs_set_protected:Npn \ProvidesExplFileAux ##1##2##3##4
-      {
-        \group_end:
-        \ProvidesFile {##1} [ ##2~v##3~##4 ]
-      }
+    \ExplSyntaxOff
     \cs_undefine:c { ver@ #1 .def }
     \@onefilewithoptions {#1} [ ] [ ]
       \c_@@_def_ext_tl
+    \ExplSyntaxOn
   }
+\cs_gset_protected:Npn \__kernel_sys_configuration_load_std:n #1
+%</!2ekernel>
+  {
+    \cs_undefine:c { ver@ #1 .def }
+    \@onefilewithoptions {#1} [ ] [ ]
+      \c_@@_def_ext_tl
+  }
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{variable}{\l_@@_options_clist}
 %    \begin{macrocode}
+%<*!2ekernel>
 \clist_new:N \l_@@_options_clist
 \DeclareOption*
   { \clist_put_right:NV \l_@@_options_clist \CurrentOption }
 \ProcessOptions \relax
+%</!2ekernel>
 %    \end{macrocode}
 % \end{variable}
 %
@@ -1279,12 +1322,48 @@
   }
 %    \end{macrocode}
 %
+%  A backend has to be in place by the start of the document.
 %    \begin{macrocode}
+%<*2ekernel>
+\AtBeginDocument
+  {
+    \str_if_exist:NF \c_sys_backend_str
+      { \sys_load_backend:n { } }
+  }
+%</2ekernel>
+%<*!2ekernel>
 \keys_set:nV { sys } \l_@@_options_clist
 \str_if_exist:NF \c_sys_backend_str
   { \sys_load_backend:n { } }
+%</!2ekernel>
 %    \end{macrocode}
 %
+% A test for pre-loading: does \tn{@pushfilenameaux} already exist.
+% The alrady-loaded mechanism will handle everything now.
+%    \begin{macrocode}
+%<*!2ekernel>
+\cs_if_exist:NT \@pushfilenameaux
+  {
+    \cs_gset_eq:NN \__kernel_sys_configuration_load:n
+      \__kernel_sys_configuration_load_std:n
+    \endinput
+  }
+%</!2ekernel>
+%    \end{macrocode}
+%
+% Load the dynamic part of the code, either now or during the next run.
+%    \begin{macrocode}
+\cs_if_free:cTF { ver at expl3.sty }
+  {
+    \tex_everyjob:D \exp_after:wN
+      {
+        \tex_the:D \tex_everyjob:D
+        \sys_everyjob:
+      }
+  }
+  { \sys_everyjob: }
+%    \end{macrocode}
+%
 % \begin{macro}{\@pushfilename, \@popfilename}
 % \begin{macro}{\@@_status_pop:w}
 %   The idea here is to use \LaTeXe{}'s \tn{@pushfilename} and
@@ -1351,10 +1430,25 @@
 %    \end{macrocode}
 % \end{variable}
 %
+%  Tidy up configuration loading, as promised.
 %    \begin{macrocode}
-%</package&loader>
+%<*!2ekernel>
+\cs_gset_eq:NN \__kernel_sys_configuration_load:n
+  \__kernel_sys_configuration_load_std:n
+%</!2ekernel>
 %    \end{macrocode}
 %
+% For pre-loading, we have to manually disable the syntax.
+%    \begin{macrocode}
+%<*2ekernel>
+\ExplSyntaxOff
+%</2ekernel>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</package&loader|2ekernel>
+%    \end{macrocode}
+%
 % \subsection{Generic loader}
 %
 %    \begin{macrocode}
@@ -1424,12 +1518,12 @@
 % \begin{macro}{\AtBeginDocument}
 % \begin{macro}[int]{\expl at AtBeginDocument}
 %   There are a few uses of \cs{AtBeginDocument} in the package code: the
-%   easiest way around that is to simply do nothing for these. As
+%   easiest way around that is to simply do the code \enquote{now}. As
 %   bundles such as \pkg{miniltx} may have defined \cs{AtBeginDocument}
 %   any existing definition is saved for restoration after the  payload.
 %    \begin{macrocode}
 \let\expl at AtBeginDocument\AtBeginDocument
-\def\AtBeginDocument#1{}%
+\def\AtBeginDocument#1{#1}%
 \expandafter\def\expandafter\l at expl@tidy at tl\expandafter
   {%
     \l at expl@tidy at tl
@@ -1475,8 +1569,9 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% Load the standard back-end.
+% Load the dynamic code and standard back-end.
 %    \begin{macrocode}
+\sys_everyjob:
 \sys_load_backend:n { }
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins	2019-10-11 21:33:04 UTC (rev 52343)
@@ -111,6 +111,7 @@
   }
 
 \generate{\file{expl3.sty}        {\from{expl3.dtx}       {package,loader}}}
+\generate{\file{expl3.ltx}        {\from{expl3.dtx}       {2ekernel,loader}}}
 \generate{\file{expl3-generic.tex}{\from{expl3.dtx}       {generic,loader}}}
 
 \generate{\file{l3doc.cls}        {\from{l3doc.dtx}       {class}}}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -1293,6 +1293,45 @@
 %   \end{texnote}
 % \end{function}
 %
+% \subsection{Debugging support}
+%
+% \begin{function}[added = 2017-07-16, updated = 2017-08-02]{\debug_on:n, \debug_off:n}
+%   \begin{syntax}
+%     \cs{debug_on:n} |{| \meta{comma-separated list} |}|
+%     \cs{debug_off:n} |{| \meta{comma-separated list} |}|
+%   \end{syntax}
+%   Turn on and off within a group various debugging code, some of which
+%   is also available as \pkg{expl3} load-time options.  The items that
+%   can be used in the \meta{list} are
+%   \begin{itemize}
+%     \item \texttt{check-declarations} that checks all \pkg{expl3}
+%       variables used were previously declared and that local/global
+%       variables (based on their name or on their first assignment) are
+%       only locally/globally assigned;
+%     \item \texttt{check-expressions} that checks integer, dimension,
+%       skip, and muskip expressions are not terminated prematurely;
+%     \item \texttt{deprecation} that makes soon-to-be-deprecated commands produce errors;
+%     \item \texttt{log-functions} that logs function definitions;
+%     \item \texttt{all} that does all of the above.
+%   \end{itemize}
+%   Providing these as switches rather than options allows testing code
+%   even if it relies on other packages: load all other packages, call
+%   \cs{debug_on:n}, and load the code that one is interested in
+%   testing.  These functions can only be used in \LaTeXe{} package mode
+%   loaded with \texttt{enable-debug} or another option implying it.
+% \end{function}
+%
+% \begin{function}[added = 2017-11-28]{\debug_suspend:, \debug_resume:}
+%   \begin{syntax}
+%     \cs{debug_suspend:} \ldots{} \cs{debug_resume:}
+%   \end{syntax}
+%   Suppress (locally) errors and logging from \texttt{debug} commands,
+%   except for the \texttt{deprecation} errors or warnings.  These pairs
+%   of commands can be nested.  This can be used around pieces of code
+%   that are known to fail checks, if such failures should be ignored.
+%   See for instance \pkg{l3coffins}.
+% \end{function}
+%
 % \end{documentation}
 %
 % \begin{implementation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -212,12 +212,11 @@
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname directlua\endcsname\relax
 \else
-  \ifnum\luatexversion<70 %
+  \ifnum\luatexversion<95 %
   \else
 %    \end{macrocode}
-%   In package mode a category code table is needed: either use a pre-loaded
-%   allocator or provide one using the \LaTeXe{}-based generic code. In format
-%   mode the table used here can be hard-coded into the \Lua{}.
+%   In package mode for \LuaTeX{} we make sure the basic support is loaded:
+%   this is only necessary in plain.
 %    \begin{macrocode}
 %<*package>
     \begingroup\expandafter\expandafter\expandafter\endgroup
@@ -224,12 +223,6 @@
     \expandafter\ifx\csname newcatcodetable\endcsname\relax
       \input{ltluatex}%
     \fi
-    \newcatcodetable\ucharcat at table
-    \directlua{
-      l3kernel = l3kernel or { }
-      local charcat_table = \number\ucharcat at table\space
-      l3kernel.charcat_table = charcat_table
-    }%
 %</package>
     \directlua{require("expl3")}%
 %    \end{macrocode}
@@ -269,7 +262,7 @@
       These are available in the engines\LineBreak
       - pdfTeX v1.40\LineBreak
       - XeTeX v0.99992\LineBreak
-      - LuaTeX v0.76\LineBreak
+      - LuaTeX v0.95\LineBreak
       - e-(u)pTeX mid-2012\LineBreak
       or later.\LineBreak
       \LineBreak

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -1027,9 +1027,9 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\box_set_ht:Nn, \box_set_ht:cn}
-% \begin{macro}{\box_set_dp:Nn, \box_set_dp:cn}
-% \begin{macro}{\box_set_wd:Nn, \box_set_wd:cn}
+% \begin{macro}{\box_set_ht:Nn, \box_set_ht:cn, \box_gset_ht:Nn, \box_gset_ht:cn}
+% \begin{macro}{\box_set_dp:Nn, \box_set_dp:cn, \box_gset_dp:Nn, \box_gset_dp:cn}
+% \begin{macro}{\box_set_wd:Nn, \box_set_wd:cn, \box_gset_wd:Nn, \box_gset_wd:cn}
 %   Setting the size whilst respecting local scope requires copying;
 %   the same issue does not come up when working globally.
 %   When debugging, the dimension expression |#2| is surrounded by

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -84,45 +84,6 @@
 % into the kernel. However, real use sometimes leads to better ideas, so functions from this module are
 % \textbf{not necessarily stable} and we may have to adjust them!
 %
-% \section{Additions to \pkg{l3basics}}
-%
-% \begin{function}[added = 2017-07-16, updated = 2017-08-02]{\debug_on:n, \debug_off:n}
-%   \begin{syntax}
-%     \cs{debug_on:n} |{| \meta{comma-separated list} |}|
-%     \cs{debug_off:n} |{| \meta{comma-separated list} |}|
-%   \end{syntax}
-%   Turn on and off within a group various debugging code, some of which
-%   is also available as \pkg{expl3} load-time options.  The items that
-%   can be used in the \meta{list} are
-%   \begin{itemize}
-%     \item \texttt{check-declarations} that checks all \pkg{expl3}
-%       variables used were previously declared and that local/global
-%       variables (based on their name or on their first assignment) are
-%       only locally/globally assigned;
-%     \item \texttt{check-expressions} that checks integer, dimension,
-%       skip, and muskip expressions are not terminated prematurely;
-%     \item \texttt{deprecation} that makes soon-to-be-deprecated commands produce errors;
-%     \item \texttt{log-functions} that logs function definitions;
-%     \item \texttt{all} that does all of the above.
-%   \end{itemize}
-%   Providing these as switches rather than options allows testing code
-%   even if it relies on other packages: load all other packages, call
-%   \cs{debug_on:n}, and load the code that one is interested in
-%   testing.  These functions can only be used in \LaTeXe{} package mode
-%   loaded with \texttt{enable-debug} or another option implying it.
-% \end{function}
-%
-% \begin{function}[added = 2017-11-28]{\debug_suspend:, \debug_resume:}
-%   \begin{syntax}
-%     \cs{debug_suspend:} \ldots{} \cs{debug_resume:}
-%   \end{syntax}
-%   Suppress (locally) errors and logging from \texttt{debug} commands,
-%   except for the \texttt{deprecation} errors or warnings.  These pairs
-%   of commands can be nested.  This can be used around pieces of code
-%   that are known to fail checks, if such failures should be ignored.
-%   See for instance \pkg{l3coffins}.
-% \end{function}
-%
 % \section{Additions to \pkg{l3box}}
 %
 % \subsection{Viewing part of a box}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -816,6 +816,8 @@
 % \begin{macro}
 %   {
 %     \coffin_set_eq:NN, \coffin_set_eq:Nc,
+%     \coffin_set_eq:cN, \coffin_set_eq:cc,
+%     \coffin_gset_eq:NN, \coffin_gset_eq:Nc,
 %     \coffin_gset_eq:cN, \coffin_gset_eq:cc
 %   }
 %   Setting two coffins equal is just a wrapper around other functions.

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -79,7 +79,7 @@
 %
 % \title{The \cls{l3doc} class}
 % \author{\Team}
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -467,6 +467,7 @@
 %     \exp_args:NVo,
 %     \exp_args:Nfo,
 %     \exp_args:Nff,
+%     \exp_args:Nee,
 %   }
 %   \begin{syntax}
 %     \cs{exp_args:Noo} \meta{token} \Arg{tokens_1} \Arg{tokens_2}
@@ -503,7 +504,6 @@
 %   {
 %     \exp_args:NNNo,
 %     \exp_args:NNNV,
-%     \exp_args:NNNv,
 %     \exp_args:Nccc,
 %     \exp_args:NcNc,
 %     \exp_args:NcNo,
@@ -1465,6 +1465,7 @@
 %     \exp_last_unbraced:No,
 %     \exp_last_unbraced:NV,
 %     \exp_last_unbraced:Nv,
+%     \exp_last_unbraced:Ne,
 %     \exp_last_unbraced:Nf,
 %     \exp_last_unbraced:NNo,
 %     \exp_last_unbraced:NNV,
@@ -2793,7 +2794,7 @@
 %   {
 %     \exp_args:Nnc, \exp_args:Nno, \exp_args:NnV, \exp_args:Nnv, \exp_args:Nne, \exp_args:Nnf,
 %     \exp_args:Noc, \exp_args:Noo, \exp_args:Nof,
-%     \exp_args:NVo, \exp_args:Nfo, \exp_args:Nff,
+%     \exp_args:NVo, \exp_args:Nfo, \exp_args:Nff, \exp_args:Nee
 %   }
 % \begin{macro}
 %   {
@@ -2823,6 +2824,7 @@
 \@@_tmp:w { Vo }
 \@@_tmp:w { fo }
 \@@_tmp:w { ff }
+\@@_tmp:w { ee }
 \@@_tmp:w { Nx }
 \@@_tmp:w { cx }
 \@@_tmp:w { nx }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -1043,11 +1043,18 @@
 %</package>
   }
 \cs_generate_variant:Nn \__kernel_ior_open:Nn { No }
-\cs_new_protected:Npn \@@_open_stream:Nn #1#2
+%    \end{macrocode}
+%   Here, we act defensively in case \LuaTeX{} is in use with an
+%   extensionless file name.
+%    \begin{macrocode}
+\cs_new_protected:Npx \@@_open_stream:Nn #1#2
   {
-    \tex_global:D \tex_chardef:D #1 = \l_@@_stream_tl \scan_stop:
-    \prop_gput:NVn \g_@@_streams_prop #1 {#2}
-    \tex_openin:D #1 #2 \scan_stop:
+    \tex_global:D \tex_chardef:D #1 = \exp_not:N \l_@@_stream_tl \scan_stop:
+    \prop_gput:NVn \exp_not:N \g_@@_streams_prop #1 {#2}
+    \tex_openin:D #1
+      \sys_if_engine_luatex:TF
+        { {#2} }
+        {  #2 \scan_stop: }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -2251,25 +2258,12 @@
 %     \g_file_curr_ext_str ,
 %     \g_file_curr_name_str
 %   }
-%   The name of the current file should be available at all times.
-%   For the format the file name needs to be picked up at the start of the
-%   run. In \LaTeXe{} package mode the current file name is collected from
-%   \tn{@currname}.
+%   The name of the current file should be available at all times:
+%   the name itself is set dynamically.
 %    \begin{macrocode}
 \str_new:N \g_file_curr_dir_str
 \str_new:N \g_file_curr_ext_str
 \str_new:N \g_file_curr_name_str
-%<*initex>
-\tex_everyjob:D \exp_after:wN
-  {
-    \tex_the:D \tex_everyjob:D
-    \str_gset:Nx \g_file_curr_name_str { \tex_jobname:D }
-  }
-%</initex>
-%<*package>
-\cs_if_exist:NT \@currname
-  { \str_gset_eq:NN \g_file_curr_name_str \@currname }
-%</package>
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2278,7 +2272,8 @@
 %   mode we can recover the information from the details held by
 %   \LaTeXe{} (we must be in the preamble and loaded using \tn{usepackage}
 %   or \tn{RequirePackage}). As \LaTeXe{} doesn't store directory and
-%   name separately, we stick to the same convention here.
+%   name separately, we stick to the same convention here. In pre-loading,
+%   \tn{@currnamestack} is empty so is skipped.
 %    \begin{macrocode}
 \seq_new:N \g_@@_stack_seq
 %<*package>
@@ -2301,7 +2296,10 @@
         }
     }
   \cs_if_exist:NT \@currnamestack
-    { \exp_after:wN \@@_tmp:w \@currnamestack }
+    {
+      \tl_if_empty:NF \@currnamestack
+        { \exp_after:wN \@@_tmp:w \@currnamestack }
+    }
 \group_end:
 %</package>
 %    \end{macrocode}
@@ -2642,9 +2640,27 @@
 \cs_new:Npx \@@_file_ext_check_auxiii:nw #1#2 . #3 . #4 \q_stop
   {
     \exp_not:N \quark_if_nil:nTF {#3}
-      { \exp_not:N \__kernel_file_name_quote:n { #1 \tl_to_str:n { .tex } } }
+      {
+        \exp_not:N \exp_args:Nee \exp_not:N \@@_file_ext_check_auxiv:nn
+          { \exp_not:N \__kernel_file_name_quote:n {#1} }
+          {
+            \exp_not:N \__kernel_file_name_quote:n
+              { #1 \tl_to_str:n { .tex } }
+          }
+      }
       {#1}
   }
+\cs_new:Npn \@@_file_ext_check_auxiv:nn #1#2
+  {
+    \tl_if_blank:eTF { \@@_file_size:n {#2} }
+      {#1}
+      {
+        \int_compare:nNnTF
+          { \@@_file_size:n {#1} } = { \@@_file_size:n {#2} }
+          {#2}
+          {#1}
+      }
+  }
 %    \end{macrocode}
 %   Deal with the fact that the primitive might not be available.
 %    \begin{macrocode}
@@ -2816,7 +2832,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}
+% \begin{macro}[noTF]
 %   {\file_get_mdfive_hash:nN, \file_get_size:nN, \file_get_timestamp:nN}
 % \begin{macro}{\@@_get_details:nnN}
 %   Non-expandable wrappers around the above in the case where appropriate
@@ -3073,7 +3089,7 @@
     \str_gset_eq:NN \g_file_curr_ext_str  \l_@@_ext_str
   }
 %<*package>
-\cs_new_eq:NN \__kernel_file_input_push:n \__file_input_push:n
+\cs_new_eq:NN \__kernel_file_input_push:n \@@_input_push:n
 %</package>
 \cs_new_protected:Npn \@@_input_pop:
   {
@@ -3081,7 +3097,7 @@
     \exp_after:wN \@@_input_pop:nnn \l_@@_internal_tl
   }
 %<*package>
-\cs_new_eq:NN \__kernel_file_input_pop: \__file_input_pop:
+\cs_new_eq:NN \__kernel_file_input_pop: \@@_input_pop:
 %</package>
 \cs_new_protected:Npn \@@_input_pop:nnn #1#2#3
   {
@@ -3191,14 +3207,17 @@
 % \cs{g_@@_record_seq}.
 %    \begin{macrocode}
 %<*package>
-\AtBeginDocument
+\cs_if_exist:NT \@filelist
   {
-    \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
-      { \tl_to_str:N \@filelist }
-    \seq_gconcat:NNN
-      \g_@@_record_seq
-      \g_@@_record_seq
-      \l_@@_tmp_seq
+    \AtBeginDocument
+      {
+        \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
+          { \tl_to_str:N \@filelist }
+        \seq_gconcat:NNN
+          \g_@@_record_seq
+          \g_@@_record_seq
+          \l_@@_tmp_seq
+      }
   }
 %</package>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -462,7 +462,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:c, \intarray_log:N}
+% \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:N, \intarray_log:c}
 %   Convert the list to a comma list (with spaces after each comma)
 %    \begin{macrocode}
 \cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nnxxxx }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -328,6 +328,7 @@
 local os_date    = os.date
 local setcatcode = tex.setcatcode
 local sprint     = tex.sprint
+local cprint     = tex.cprint
 local write      = tex.write
 %    \end{macrocode}
 %
@@ -354,15 +355,11 @@
 % \end{macro}
 %
 % \begin{macro}{l3kernel.charcat}
-%   Creating arbitrary chars needs a category code table. As set up here,
-%   one may have been assigned earlier (see \pkg{l3bootstrap}) or a hard-coded
-%   one is used. The latter is intended for format mode and should be adjusted
-%   to match an eventual allocator.
+%   Creating arbitrary chars using |tex.cprint|.
 %    \begin{macrocode}
-local charcat_table = l3kernel.charcat_table or 1
-local function charcat(charcode, catcode)
-  setcatcode(charcat_table, charcode, catcode)
-  sprint(charcat_table, utf8_char(charcode))
+local charcat
+function charcat(charcode, catcode)
+  cprint(catcode, utf8_char(charcode))
 end
 l3kernel.charcat = charcat
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %
@@ -276,6 +276,16 @@
 %   back deprecations, respectively.
 % \end{function}
 %
+% \subsection{Final settins}
+%
+% \begin{function}[added = 2019-10-06]{\sys_finalise:}
+%   \begin{syntax}
+%     \cs{sys_finalise:}
+%   \end{syntax}
+%   Finalises all system-dependent functionality: required before loading
+%   a backend.
+% \end{function}
+%
 % \end{documentation}
 %
 % \begin{implementation}
@@ -283,34 +293,16 @@
 % \section{\pkg{l3sys} implementation}
 %
 %    \begin{macrocode}
-%<*initex|package>
-%    \end{macrocode}
-%
-%    \begin{macrocode}
 %<@@=sys>
 %    \end{macrocode}
 %
-% \subsection{The name of the job}
+% \subsection{Kernel code}
 %
-% \begin{variable}{\c_sys_jobname_str}
-%   Inherited from the \LaTeX3 name for the primitive: this needs to
-%   actually contain the text of the job name rather than the name of
-%   the primitive, of course.
 %    \begin{macrocode}
-%<*initex>
-\tex_everyjob:D \exp_after:wN
-  {
-    \tex_the:D \tex_everyjob:D
-    \str_const:Nx \c_sys_jobname_str { \tex_jobname:D }
-  }
-%</initex>
-%<*package>
-\str_const:Nx \c_sys_jobname_str { \tex_jobname:D }
-%</package>
+%<*initex|package>
 %    \end{macrocode}
-% \end{variable}
 %
-% \subsection{Detecting the engine}
+% \subsubsection{Detecting the engine}
 %
 % \begin{macro}{\@@_const:nn}
 %   Set the |T|, |F|, |TF|, |p| forms of |#1| to be constants equal to
@@ -373,90 +365,8 @@
 % \end{variable}
 % \end{macro}
 %
-% \subsection{Time and date}
+% \subsubsection{Randomness}
 %
-% \begin{variable}
-%   {
-%     \c_sys_minute_int,
-%     \c_sys_hour_int,
-%     \c_sys_day_int,
-%     \c_sys_month_int,
-%     \c_sys_year_int,
-%   }
-%   Copies of the information provided by \TeX{}. There is a lot of defensive
-%   code in package mode: someone may have moved the primitives, and they can
-%   only be recovered if we have \tn{primitive} and it is working correctly.
-%    \begin{macrocode}
-%<*initex>
-\int_const:Nn \c_sys_minute_int
-  { \int_mod:nn { \tex_time:D } { 60 } }
-\int_const:Nn \c_sys_hour_int
-  { \int_div_truncate:nn { \tex_time:D } { 60 } }
-\int_const:Nn \c_sys_day_int   { \tex_day:D }
-\int_const:Nn \c_sys_month_int { \tex_month:D }
-\int_const:Nn \c_sys_year_int  { \tex_year:D }
-%</initex>
-%<*package>
-\group_begin:
-  \cs_set:Npn \@@_tmp:w #1
-    {
-      \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 }
-        { #1 }
-        {
-          \cs_if_exist:NTF \tex_primitive:D
-            {
-              \bool_lazy_and:nnTF
-                { \sys_if_engine_xetex_p: }
-                {
-                  \int_compare_p:nNn
-                    { \exp_after:wN \use_none:n \tex_XeTeXrevision:D }
-                      < { 99999 }
-                }
-                { 0 }
-                { \tex_primitive:D #1 }
-            }
-            { 0 }
-        }
-    }
-  \int_const:Nn \c_sys_minute_int
-    { \int_mod:nn { \@@_tmp:w \time } { 60 } }
-  \int_const:Nn \c_sys_hour_int
-    { \int_div_truncate:nn { \@@_tmp:w \time } { 60 } }
-  \int_const:Nn \c_sys_day_int   { \@@_tmp:w \day }
-  \int_const:Nn \c_sys_month_int { \@@_tmp:w \month }
-  \int_const:Nn \c_sys_year_int  { \@@_tmp:w \year }
-\group_end:
-%</package>
-%    \end{macrocode}
-% \end{variable}
-%
-% \subsection{Detecting the output}
-%
-% \begin{macro}[pTF, EXP]
-%   {
-%     \sys_if_output_dvi:,
-%     \sys_if_output_pdf:
-%   }
-% \begin{variable}{\c_sys_output_str}
-%   This is a simple enough concept: the two views here are complementary.
-%    \begin{macrocode}
-\str_const:Nx \c_sys_output_str
-  {
-    \int_compare:nNnTF
-      { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
-      { pdf }
-      { dvi }
-  }
-\@@_const:nn { sys_if_output_dvi }
-  { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
-\@@_const:nn { sys_if_output_pdf }
-  { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
-%    \end{macrocode}
-% \end{variable}
-% \end{macro}
-%
-% \subsection{Randomness}
-%
 % This candidate function is placed there because
 % \cs{sys_if_rand_exist:TF} is used in \pkg{l3fp-rand}.
 %
@@ -468,7 +378,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \subsection{Platform}
+% \subsubsection{Platform}
 %
 % \begin{macro}[pTF]{\sys_if_platform_unix:, \sys_if_platform_windows:}
 % \begin{variable}{\c_sys_platform_str}
@@ -477,64 +387,96 @@
 % \end{variable}
 % \end{macro}
 %
-% \subsection{Random numbers}
+% \subsubsection{Configurations}
 %
-% \begin{macro}[EXP]{\sys_rand_seed:}
-%   Unpack the primitive.  When random numbers are not available, we
-%   return zero after an error (and incidentally make sure the number of
-%   expansions needed is the same as with random numbers available).
+% \begin{macro}{\sys_load_backend:n}
+% \begin{macro}{\@@_load_backend_check:N}
+% \begin{variable}{\c_sys_backend_str}
+%   Loading the backend code is pretty simply: check that the backend is valid,
+%   then load it up.
 %    \begin{macrocode}
-\sys_if_rand_exist:TF
-  { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
+\cs_new_protected:Npn \sys_load_backend:n #1
   {
-    \cs_new:Npn \sys_rand_seed:
+    \sys_finalise:
+    \str_if_exist:NTF \c_sys_backend_str
+      { \__kernel_msg_error:nn { sys } { backend-set } }
       {
-        \int_value:w
-        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
-          { \sys_rand_seed: }
-        \c_zero_int
+        \tl_if_blank:nF {#1}
+          { \tl_set:Nn \g_@@_backend_tl {#1} }
+        \@@_load_backend_check:N \g_@@_backend_tl
+        \str_const:Nx \c_sys_backend_str { \g_@@_backend_tl }
+        \__kernel_sys_configuration_load:n
+          { l3backend- \c_sys_backend_str }
       }
   }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\sys_gset_rand_seed:n}
-%   The primitive always assigns the seed globally.
-%    \begin{macrocode}
-\sys_if_rand_exist:TF
+\cs_new_protected:Npn \@@_load_backend_check:N #1
   {
-    \cs_new_protected:Npn \sys_gset_rand_seed:n #1
-      { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
-  }
-  {
-    \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+    \sys_if_engine_xetex:TF
       {
-        \__kernel_msg_error:nnn { kernel } { fp-no-random }
-          { \sys_gset_rand_seed:n {#1} }
+        \str_if_eq:VnF #1 { xdvipdfmx }
+          {
+            \__kernel_msg_error:nnxx { sys } { wrong-backend }
+              #1 { xdvipdfmx }
+            \tl_gset:Nn #1 { xdvipdfmx }
+          }
       }
+      {
+        \sys_if_output_pdf:TF
+          {
+            \str_if_eq:VnF #1 { pdfmode }
+              {
+                \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                  #1 { pdfmode }
+                \tl_gset:Nn #1 { pdfmode }
+              }
+          }
+          {
+            \str_case:VnF #1
+              {
+                { dvipdfmx } { }
+                { dvips }    { }
+                { dvisvgm }  { }
+              }
+              {
+                \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                  #1 { dvips }
+                \tl_gset:Nn #1 { dvips }
+              }
+          }
+      }
   }
 %    \end{macrocode}
+% \end{variable}
 % \end{macro}
+% \end{macro}
 %
-% \subsection{Access to the shell}
+% \begin{variable}{\g_@@_debug_bool, \g_@@_deprecation_bool}
+%    \begin{macrocode}
+\bool_new:N \g_@@_debug_bool
+\bool_new:N \g_@@_deprecation_bool
+%    \end{macrocode}
+% \end{variable}
 %
-% \begin{variable}{\c_sys_shell_escape_int}
-%   Expose the engine's shell escape status to the user.
+% \begin{macro}{\sys_load_debug:, \sys_load_deprecation:}
+%   Simple.
 %    \begin{macrocode}
-\int_const:Nn \c_sys_shell_escape_int
+\cs_new_protected:Npn \sys_load_debug:
   {
-    \sys_if_engine_luatex:TF
-      {
-        \tex_directlua:D
-          { tex.sprint(status.shell_escape~or~os.execute()) }
-      }
-      {
-        \tex_shellescape:D
-      }
+    \bool_if:NF \g_@@_debug_bool
+      { \__kernel_sys_configuration_load:n { l3debug } }
+    \bool_gset_true:N \g_@@_debug_bool
   }
+\cs_new_protected:Npn \sys_load_deprecation:
+  {
+    \bool_if:NF \g_@@_deprecation_bool
+      { \__kernel_sys_configuration_load:n { l3deprecation } }
+    \bool_gset_true:N \g_@@_deprecation_bool
+  }
 %    \end{macrocode}
-% \end{variable}
+% \end{macro}
 %
+% \subsubsection{Access to the shell}
+%
 % \begin{variable}{\l_@@_internal_tl}
 %    \begin{macrocode}
 \tl_new:N \l_@@_internal_tl
@@ -597,21 +539,6 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[EXP, pTF]{\sys_if_shell:, \sys_if_shell_unrestricted:, \sys_if_shell_restricted:}
-%   Performs a check for whether shell escape is enabled.  The first set
-%   of functions returns true if either of restricted or unrestricted
-%   shell escape is enabled, while the other two sets of functions
-%   return true in only one of these two cases.
-%    \begin{macrocode}
-\@@_const:nn { sys_if_shell }
-  { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
-\@@_const:nn { sys_if_shell_unrestricted }
-  { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
-\@@_const:nn { sys_if_shell_restricted }
-  { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
-%    \end{macrocode}
-% \end{macro}
-%
 % \begin{variable}{\c_@@_shell_stream_int}
 %   This is not needed for \LuaTeX{}: shell escape there isn't done using
 %   a \TeX{} interface.
@@ -659,118 +586,286 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \subsection{Configurations}
+% \subsection{Dynamic (every job) code}
 %
-% \begin{variable}{\g_@@_backend_tl}
-%   As the backend has to be checked and possibly adjusted, the approach here
-%   is to create a variable and use that in a one-shot to set a constant.
+% \begin{macro}{\sys_everyjob:}
+% \begin{macro}{\@@_everyjob:n}
+% \begin{variable}{\g_@@_everyjob_tl}
 %    \begin{macrocode}
-\tl_new:N \g_@@_backend_tl
-\tl_gset:Nx \g_@@_backend_tl
+\cs_new_protected:Npn \sys_everyjob:
   {
-    \sys_if_engine_xetex:TF
-      { xdvipdfmx }
-      {
-         \sys_if_output_pdf:TF
-          { pdfmode }
-          {
-            \bool_lazy_or:nnTF
-              { \sys_if_engine_ptex_p: }
-              { \sys_if_engine_uptex_p: }
-              { dvipdfmx }
-              { dvips }
-           }
-       }
+    \tl_use:N \g_@@_everyjob_tl
+    \tl_gclear:N \g_@@_everyjob_tl
   }
+\cs_new_protected:Npn \@@_everyjob:n #1
+  { \tl_gput_right:Nn \g_@@_everyjob_tl {#1} }
+\tl_new:N \g_@@_everyjob_tl
 %    \end{macrocode}
 % \end{variable}
+% \end{macro}
+% \end{macro}
 %
-% \begin{macro}{\sys_load_backend:n}
-% \begin{macro}{\@@_load_backend_check:N}
-% \begin{variable}{\c_sys_backend_str}
-%   Loading the backend code is pretty simply: check that the backend is valid,
-%   then load it up.
+% \subsubsection{The name of the job}
+%
+% \begin{variable}{\c_sys_jobname_str}
+%   Inherited from the \LaTeX3 name for the primitive: this needs to
+%   actually contain the text of the job name rather than the name of
+%   the primitive, of course.
 %    \begin{macrocode}
-\cs_new_protected:Npn \sys_load_backend:n #1
+\@@_everyjob:n
+  { \str_const:Nx \c_sys_jobname_str { \tex_jobname:D } }
+%    \end{macrocode}
+% \end{variable}
+%
+% \subsubsection{Time and date}
+%
+% \begin{variable}
+%   {
+%     \c_sys_minute_int,
+%     \c_sys_hour_int,
+%     \c_sys_day_int,
+%     \c_sys_month_int,
+%     \c_sys_year_int,
+%   }
+%   Copies of the information provided by \TeX{}. There is a lot of defensive
+%   code in package mode: someone may have moved the primitives, and they can
+%   only be recovered if we have \tn{primitive} and it is working correctly.
+%   For Ini\TeX{} of course that is all redundant but does no harm.
+%    \begin{macrocode}
+\@@_everyjob:n
   {
-    \str_if_exist:NTF \c_sys_backend_str
-      { \__kernel_msg_error:nnxx { sys } { backend-set } }
+    \group_begin:
+      \cs_set:Npn \@@_tmp:w #1
+        {
+          \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 }
+            { #1 }
+            {
+              \cs_if_exist:NTF \tex_primitive:D
+                {
+                  \bool_lazy_and:nnTF
+                    { \sys_if_engine_xetex_p: }
+                    {
+                      \int_compare_p:nNn
+                        { \exp_after:wN \use_none:n \tex_XeTeXrevision:D }
+                          < { 99999 }
+                    }
+                    { 0 }
+                    { \tex_primitive:D #1 }
+                }
+                { 0 }
+            }
+        }
+      \int_const:Nn \c_sys_minute_int
+        { \int_mod:nn { \@@_tmp:w \time } { 60 } }
+      \int_const:Nn \c_sys_hour_int
+        { \int_div_truncate:nn { \@@_tmp:w \time } { 60 } }
+      \int_const:Nn \c_sys_day_int   { \@@_tmp:w \day }
+      \int_const:Nn \c_sys_month_int { \@@_tmp:w \month }
+      \int_const:Nn \c_sys_year_int  { \@@_tmp:w \year }
+    \group_end:
+  }
+%    \end{macrocode}
+% \end{variable}
+%
+% \subsubsection{Random numbers}
+%
+% \begin{macro}[EXP]{\sys_rand_seed:}
+%   Unpack the primitive.  When random numbers are not available, we
+%   return zero after an error (and incidentally make sure the number of
+%   expansions needed is the same as with random numbers available).
+%    \begin{macrocode}
+\@@_everyjob:n
+  {
+    \sys_if_rand_exist:TF
+      { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
       {
-        \tl_if_blank:nF {#1}
-          { \tl_set:Nn \g_@@_backend_tl {#1} }
-        \@@_load_backend_check:N \g_@@_backend_tl
-        \str_const:Nx \c_sys_backend_str { \g_@@_backend_tl }
-        \__kernel_sys_configuration_load:n
-          { l3backend- \c_sys_backend_str }
+        \cs_new:Npn \sys_rand_seed:
+          {
+            \int_value:w
+            \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+              { \sys_rand_seed: }
+            \c_zero_int
+          }
       }
   }
-\cs_new_protected:Npn \@@_load_backend_check:N #1
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_gset_rand_seed:n}
+%   The primitive always assigns the seed globally.
+%    \begin{macrocode}
+\@@_everyjob:n
   {
-    \sys_if_engine_xetex:TF
+    \sys_if_rand_exist:TF
       {
-        \str_if_eq:VnF #1 { xdvipdfmx }
+        \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+          { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
+      }
+      {
+        \cs_new_protected:Npn \sys_gset_rand_seed:n #1
           {
-            \__kernel_msg_error:nnxx { sys } { wrong-backend }
-              #1 { xdvipdfmx }
-            \tl_gset:Nn #1 { xdvipdfmx }
+            \__kernel_msg_error:nnn { kernel } { fp-no-random }
+              { \sys_gset_rand_seed:n {#1} }
           }
       }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Access to the shell}
+%
+% \begin{variable}{\c_sys_shell_escape_int}
+%   Expose the engine's shell escape status to the user.
+%    \begin{macrocode}
+\@@_everyjob:n
+  {
+    \int_const:Nn \c_sys_shell_escape_int
       {
-        \sys_if_output_pdf:TF
+        \sys_if_engine_luatex:TF
           {
-            \str_if_eq:VnF #1 { pdfmode }
-              {
-                \__kernel_msg_error:nnxx { sys } { wrong-backend }
-                  #1 { pdfmode }
-                \tl_gset:Nn #1 { pdfmode }
-              }
+            \tex_directlua:D
+              { tex.sprint(status.shell_escape~or~os.execute()) }
           }
-          {
-            \str_case:VnF #1
-              {
-                { dvipdfmx } { }
-                { dvips }    { }
-                { dvisvgm }  { }
-              }
-              {
-                \__kernel_msg_error:nnxx { sys } { wrong-backend }
-                  #1 { dvips }
-                \tl_gset:Nn #1 { dvips }
-              }
-          }
+          { \tex_shellescape:D }
       }
   }
 %    \end{macrocode}
 % \end{variable}
+%
+% \begin{macro}[EXP, pTF]{\sys_if_shell:, \sys_if_shell_unrestricted:, \sys_if_shell_restricted:}
+%   Performs a check for whether shell escape is enabled.  The first set
+%   of functions returns true if either of restricted or unrestricted
+%   shell escape is enabled, while the other two sets of functions
+%   return true in only one of these two cases.
+%    \begin{macrocode}
+\@@_everyjob:n
+  {
+    \@@_const:nn { sys_if_shell }
+      { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
+    \@@_const:nn { sys_if_shell_unrestricted }
+      { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
+    \@@_const:nn { sys_if_shell_restricted }
+      { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
+  }
+%    \end{macrocode}
 % \end{macro}
-% \end{macro}
 %
-% \begin{variable}{\g_@@_debug_bool, \g_@@_deprecation_bool}
+% \subsubsection{Held over from \pkg{l3file}}
+%
+% \begin{variable}{\g_file_curr_name_str}
 %    \begin{macrocode}
-\bool_new:N \g_@@_debug_bool
-\bool_new:N \g_@@_deprecation_bool
+\@@_everyjob:n
+  { \str_gset:Nx \g_file_curr_name_str { \tex_jobname:D } }
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\sys_load_debug:, \sys_load_deprecation:}
-%   Simple.
+% \subsection{Last-minute code}
+%
+% \begin{macro}{\sys_finalise:}
+% \begin{macro}{\@@_finalise:n}
+% \begin{variable}{\g_@@_finalise_tl}
+%   A simple hook to finalise the system-dependent layer. This is forced by
+%   the backend loader, which is forced by the main loader, so we do not need
+%   to include that here.
 %    \begin{macrocode}
-\cs_new_protected:Npn \sys_load_debug:
+\cs_new_protected:Npn \sys_finalise:
   {
-    \bool_if:NF \g_@@_debug_bool
-      { \__kernel_sys_configuration_load:n { l3debug } }
-    \bool_gset_true:N \g_@@_debug_bool
+    \sys_everyjob:
+    \tl_use:N \g_@@_finalise_tl
+    \tl_gclear:N \g_@@_finalise_tl
   }
-\cs_new_protected:Npn \sys_load_deprecation:
+\cs_new_protected:Npn \@@_finalise:n #1
+  { \tl_gput_right:Nn \g_@@_finalise_tl {#1} }
+\tl_new:N \g_@@_finalise_tl
+%    \end{macrocode}
+% \end{variable}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Detecting the output}
+%
+% \begin{macro}[pTF, EXP]
+%   {
+%     \sys_if_output_dvi:,
+%     \sys_if_output_pdf:
+%   }
+% \begin{variable}{\c_sys_output_str}
+%   This is a simple enough concept: the two views here are complementary.
+%    \begin{macrocode}
+\@@_finalise:n
   {
-    \bool_if:NF \g_@@_deprecation_bool
-      { \__kernel_sys_configuration_load:n { l3deprecation } }
-    \bool_gset_true:N \g_@@_deprecation_bool
+    \str_const:Nx \c_sys_output_str
+      {
+        \int_compare:nNnTF
+          { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
+          { pdf }
+          { dvi }
+      }
+    \@@_const:nn { sys_if_output_dvi }
+      { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
+    \@@_const:nn { sys_if_output_pdf }
+      { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
   }
 %    \end{macrocode}
+% \end{variable}
 % \end{macro}
 %
+% \subsubsection{Configurations}
+%
+% If there is a class option set, and recognised, we pick it up: these
+% will over-ride anything set automatically but will themsevles be
+% over-written if there is a package option.
 %    \begin{macrocode}
+\@@_finalise:n
+  {
+    \cs_if_exist:NT \@classoptionslist
+      {
+        \cs_if_eq:NNF \@classoptionslist \scan_stop:
+          {
+            \clist_map_inline:Nn \@classoptionslist
+              {
+                \str_case:nnT {#1}
+                  {
+                    { dvipdfmx }
+                      { \tl_gset:Nn \g_@@_backend_tl { dvipdfmx } }
+                    { dvips }
+                      { \tl_gset:Nn \g_@@_backend_tl { dvips } }
+                    { dvisvgm }
+                      { \tl_gset:Nn \g_@@_backend_tl { dvisvgm } }
+                    { pdftex }
+                      { \tl_gset:Nn \g_@@_backend_tl { pdfmode } }
+                    { xetex }
+                      { \tl_gset:Nn \g_@@_backend_tl { xdvipdfmx } }
+                  }
+                  { \clist_remove_all:Nn \@unusedoptionlist {#1} }
+              }
+          }
+      }
+  }
+%    \end{macrocode}
+%
+% \begin{variable}{\g_@@_backend_tl}
+%   As the backend has to be checked and possibly adjusted, the approach here
+%   is to create a variable and use that in a one-shot to set a constant.
+%    \begin{macrocode}
+\tl_new:N \g_@@_backend_tl
+\@@_finalise:n
+  {
+    \tl_gset:Nx \g_@@_backend_tl
+      {
+        \sys_if_engine_xetex:TF
+          { xdvipdfmx }
+          {
+             \sys_if_output_pdf:TF
+              { pdfmode }
+              { dvips }
+           }
+      }
+  }
+%    \end{macrocode}
+% \end{variable}
+%
+%    \begin{macrocode}
 %</initex|package>
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-10-02}
+% \date{Released 2019-10-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 \cs_new_protected:Npn \__color_backend_pickup:N #1 { }
 \AtBeginDocument
   {
-    \@ifpackageloaded { color }
+    \cs_if_exist:cT { ver at color.sty }
       {
         \cs_set_protected:Npn \__color_backend_pickup:N #1
           {
@@ -64,7 +64,6 @@
         \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \q_stop #3
           { \tl_set:Nn #3 { #1 ~ #2 } }
       }
-      { }
   }
 \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2019-10-11 21:33:04 UTC (rev 52343)
@@ -63,7 +63,7 @@
 \cs_new_protected:Npn \__color_backend_pickup:N #1 { }
 \AtBeginDocument
   {
-    \@ifpackageloaded { color }
+    \cs_if_exist:cT { ver at color.sty }
       {
         \cs_set_protected:Npn \__color_backend_pickup:N #1
           {
@@ -83,7 +83,6 @@
         \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \q_stop #3
           { \tl_set:Nn #3 { #1 ~ #2 } }
       }
-      { }
   }
 \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2019-10-11 21:33:04 UTC (rev 52343)
@@ -45,7 +45,7 @@
 \cs_new_protected:Npn \__color_backend_pickup:N #1 { }
 \AtBeginDocument
   {
-    \@ifpackageloaded { color }
+    \cs_if_exist:cT { ver at color.sty }
       {
         \cs_set_protected:Npn \__color_backend_pickup:N #1
           {
@@ -65,7 +65,6 @@
         \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \q_stop #3
           { \tl_set:Nn #3 { #1 ~ #2 } }
       }
-      { }
   }
 \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def	2019-10-11 21:33:04 UTC (rev 52343)
@@ -71,7 +71,7 @@
 \cs_new_protected:Npn \__color_backend_pickup:N #1 { }
 \AtBeginDocument
   {
-    \@ifpackageloaded { color }
+    \cs_if_exist:cT { ver at color.sty }
       {
         \cs_set_protected:Npn \__color_backend_pickup:N #1
           {
@@ -102,7 +102,6 @@
               }
           }
       }
-      { }
   }
 \int_new:N \l__kernel_color_stack_int
 \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def	2019-10-11 21:33:04 UTC (rev 52343)
@@ -44,7 +44,7 @@
 \cs_new_protected:Npn \__color_backend_pickup:N #1 { }
 \AtBeginDocument
   {
-    \@ifpackageloaded { color }
+    \cs_if_exist:cT { ver at color.sty }
       {
         \cs_set_protected:Npn \__color_backend_pickup:N #1
           {
@@ -64,7 +64,6 @@
         \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \q_stop #3
           { \tl_set:Nn #3 { #1 ~ #2 } }
       }
-      { }
   }
 \cs_new_protected:Npn \__color_backend_cmyk:nnnn #1#2#3#4
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2019-10-11 21:33:04 UTC (rev 52343)
@@ -65,7 +65,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2019-10-02}%
+\def\ExplFileDate{2019-10-11}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -147,18 +147,12 @@
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname directlua\endcsname\relax
 \else
-  \ifnum\luatexversion<70 %
+  \ifnum\luatexversion<95 %
   \else
     \begingroup\expandafter\expandafter\expandafter\endgroup
     \expandafter\ifx\csname newcatcodetable\endcsname\relax
       \input{ltluatex}%
     \fi
-    \newcatcodetable\ucharcat at table
-    \directlua{
-      l3kernel = l3kernel or { }
-      local charcat_table = \number\ucharcat at table\space
-      l3kernel.charcat_table = charcat_table
-    }%
     \directlua{require("expl3")}%
     \ifnum 0%
       \directlua{
@@ -184,7 +178,7 @@
       These are available in the engines\LineBreak
       - pdfTeX v1.40\LineBreak
       - XeTeX v0.99992\LineBreak
-      - LuaTeX v0.76\LineBreak
+      - LuaTeX v0.95\LineBreak
       - e-(u)pTeX mid-2012\LineBreak
       or later.\LineBreak
       \LineBreak
@@ -3876,6 +3870,7 @@
 \__cs_tmp:w { Vo }
 \__cs_tmp:w { fo }
 \__cs_tmp:w { ff }
+\__cs_tmp:w { ee }
 \__cs_tmp:w { Nx }
 \__cs_tmp:w { cx }
 \__cs_tmp:w { nx }
@@ -7442,7 +7437,6 @@
   { \if_int_compare:w `{ = \c_zero_int } \fi: }
 \int_new:N \g__kernel_prg_map_int
 %% File: l3sys.dtx
-\str_const:Nx \c_sys_jobname_str { \tex_jobname:D }
 \cs_new_protected:Npn \__sys_const:nn #1#2
   {
     \bool_if:nTF {#2}
@@ -7478,82 +7472,72 @@
     \__sys_const:nn { sys_if_engine_ #1 }
       { \str_if_eq_p:Vn \c_sys_engine_str {#1} }
   }
-\group_begin:
-  \cs_set:Npn \__sys_tmp:w #1
-    {
-      \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 }
-        { #1 }
-        {
-          \cs_if_exist:NTF \tex_primitive:D
-            {
-              \bool_lazy_and:nnTF
-                { \sys_if_engine_xetex_p: }
-                {
-                  \int_compare_p:nNn
-                    { \exp_after:wN \use_none:n \tex_XeTeXrevision:D }
-                      < { 99999 }
-                }
-                { 0 }
-                { \tex_primitive:D #1 }
-            }
-            { 0 }
-        }
-    }
-  \int_const:Nn \c_sys_minute_int
-    { \int_mod:nn { \__sys_tmp:w \time } { 60 } }
-  \int_const:Nn \c_sys_hour_int
-    { \int_div_truncate:nn { \__sys_tmp:w \time } { 60 } }
-  \int_const:Nn \c_sys_day_int   { \__sys_tmp:w \day }
-  \int_const:Nn \c_sys_month_int { \__sys_tmp:w \month }
-  \int_const:Nn \c_sys_year_int  { \__sys_tmp:w \year }
-\group_end:
-\str_const:Nx \c_sys_output_str
-  {
-    \int_compare:nNnTF
-      { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
-      { pdf }
-      { dvi }
-  }
-\__sys_const:nn { sys_if_output_dvi }
-  { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
-\__sys_const:nn { sys_if_output_pdf }
-  { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
 \__sys_const:nn { sys_if_rand_exist }
   { \cs_if_exist_p:N \tex_uniformdeviate:D }
-\sys_if_rand_exist:TF
-  { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
+\cs_new_protected:Npn \sys_load_backend:n #1
   {
-    \cs_new:Npn \sys_rand_seed:
+    \sys_finalise:
+    \str_if_exist:NTF \c_sys_backend_str
+      { \__kernel_msg_error:nn { sys } { backend-set } }
       {
-        \int_value:w
-        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
-          { \sys_rand_seed: }
-        \c_zero_int
+        \tl_if_blank:nF {#1}
+          { \tl_set:Nn \g__sys_backend_tl {#1} }
+        \__sys_load_backend_check:N \g__sys_backend_tl
+        \str_const:Nx \c_sys_backend_str { \g__sys_backend_tl }
+        \__kernel_sys_configuration_load:n
+          { l3backend- \c_sys_backend_str }
       }
   }
-\sys_if_rand_exist:TF
+\cs_new_protected:Npn \__sys_load_backend_check:N #1
   {
-    \cs_new_protected:Npn \sys_gset_rand_seed:n #1
-      { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
-  }
-  {
-    \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+    \sys_if_engine_xetex:TF
       {
-        \__kernel_msg_error:nnn { kernel } { fp-no-random }
-          { \sys_gset_rand_seed:n {#1} }
+        \str_if_eq:VnF #1 { xdvipdfmx }
+          {
+            \__kernel_msg_error:nnxx { sys } { wrong-backend }
+              #1 { xdvipdfmx }
+            \tl_gset:Nn #1 { xdvipdfmx }
+          }
       }
-  }
-\int_const:Nn \c_sys_shell_escape_int
-  {
-    \sys_if_engine_luatex:TF
       {
-        \tex_directlua:D
-          { tex.sprint(status.shell_escape~or~os.execute()) }
+        \sys_if_output_pdf:TF
+          {
+            \str_if_eq:VnF #1 { pdfmode }
+              {
+                \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                  #1 { pdfmode }
+                \tl_gset:Nn #1 { pdfmode }
+              }
+          }
+          {
+            \str_case:VnF #1
+              {
+                { dvipdfmx } { }
+                { dvips }    { }
+                { dvisvgm }  { }
+              }
+              {
+                \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                  #1 { dvips }
+                \tl_gset:Nn #1 { dvips }
+              }
+          }
       }
-      {
-        \tex_shellescape:D
-      }
   }
+\bool_new:N \g__sys_debug_bool
+\bool_new:N \g__sys_deprecation_bool
+\cs_new_protected:Npn \sys_load_debug:
+  {
+    \bool_if:NF \g__sys_debug_bool
+      { \__kernel_sys_configuration_load:n { l3debug } }
+    \bool_gset_true:N \g__sys_debug_bool
+  }
+\cs_new_protected:Npn \sys_load_deprecation:
+  {
+    \bool_if:NF \g__sys_deprecation_bool
+      { \__kernel_sys_configuration_load:n { l3deprecation } }
+    \bool_gset_true:N \g__sys_deprecation_bool
+  }
 \tl_new:N \l__sys_internal_tl
 \tl_const:Nx \c__sys_marker_tl { : \token_to_str:N : }
 \cs_new_protected:Npn \sys_get_shell:nnN #1#2#3
@@ -7596,12 +7580,6 @@
     \group_end:
     \tl_set:No #1 {#2}
   }
-\__sys_const:nn { sys_if_shell }
-  { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
-\__sys_const:nn { sys_if_shell_unrestricted }
-  { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
-\__sys_const:nn { sys_if_shell_restricted }
-  { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
 \sys_if_engine_luatex:F
   { \int_const:Nn \c__sys_shell_stream_int { 18 } }
 \sys_if_engine_luatex:TF
@@ -7630,86 +7608,163 @@
       { \iow_shipout:Nn \c__sys_shell_stream_int {#1} }
   }
 \cs_generate_variant:Nn \sys_shell_shipout:n { x }
-\tl_new:N \g__sys_backend_tl
-\tl_gset:Nx \g__sys_backend_tl
+\cs_new_protected:Npn \sys_everyjob:
   {
-    \sys_if_engine_xetex:TF
-      { xdvipdfmx }
+    \tl_use:N \g__sys_everyjob_tl
+    \tl_gclear:N \g__sys_everyjob_tl
+  }
+\cs_new_protected:Npn \__sys_everyjob:n #1
+  { \tl_gput_right:Nn \g__sys_everyjob_tl {#1} }
+\tl_new:N \g__sys_everyjob_tl
+\__sys_everyjob:n
+  { \str_const:Nx \c_sys_jobname_str { \tex_jobname:D } }
+\__sys_everyjob:n
+  {
+    \group_begin:
+      \cs_set:Npn \__sys_tmp:w #1
+        {
+          \str_if_eq:eeTF { \cs_meaning:N #1 } { \token_to_str:N #1 }
+            { #1 }
+            {
+              \cs_if_exist:NTF \tex_primitive:D
+                {
+                  \bool_lazy_and:nnTF
+                    { \sys_if_engine_xetex_p: }
+                    {
+                      \int_compare_p:nNn
+                        { \exp_after:wN \use_none:n \tex_XeTeXrevision:D }
+                          < { 99999 }
+                    }
+                    { 0 }
+                    { \tex_primitive:D #1 }
+                }
+                { 0 }
+            }
+        }
+      \int_const:Nn \c_sys_minute_int
+        { \int_mod:nn { \__sys_tmp:w \time } { 60 } }
+      \int_const:Nn \c_sys_hour_int
+        { \int_div_truncate:nn { \__sys_tmp:w \time } { 60 } }
+      \int_const:Nn \c_sys_day_int   { \__sys_tmp:w \day }
+      \int_const:Nn \c_sys_month_int { \__sys_tmp:w \month }
+      \int_const:Nn \c_sys_year_int  { \__sys_tmp:w \year }
+    \group_end:
+  }
+\__sys_everyjob:n
+  {
+    \sys_if_rand_exist:TF
+      { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
       {
-         \sys_if_output_pdf:TF
-          { pdfmode }
+        \cs_new:Npn \sys_rand_seed:
           {
-            \bool_lazy_or:nnTF
-              { \sys_if_engine_ptex_p: }
-              { \sys_if_engine_uptex_p: }
-              { dvipdfmx }
-              { dvips }
-           }
-       }
+            \int_value:w
+            \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+              { \sys_rand_seed: }
+            \c_zero_int
+          }
+      }
   }
-\cs_new_protected:Npn \sys_load_backend:n #1
+\__sys_everyjob:n
   {
-    \str_if_exist:NTF \c_sys_backend_str
-      { \__kernel_msg_error:nnxx { sys } { backend-set } }
+    \sys_if_rand_exist:TF
       {
-        \tl_if_blank:nF {#1}
-          { \tl_set:Nn \g__sys_backend_tl {#1} }
-        \__sys_load_backend_check:N \g__sys_backend_tl
-        \str_const:Nx \c_sys_backend_str { \g__sys_backend_tl }
-        \__kernel_sys_configuration_load:n
-          { l3backend- \c_sys_backend_str }
+        \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+          { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
       }
+      {
+        \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+          {
+            \__kernel_msg_error:nnn { kernel } { fp-no-random }
+              { \sys_gset_rand_seed:n {#1} }
+          }
+      }
   }
-\cs_new_protected:Npn \__sys_load_backend_check:N #1
+\__sys_everyjob:n
   {
-    \sys_if_engine_xetex:TF
+    \int_const:Nn \c_sys_shell_escape_int
       {
-        \str_if_eq:VnF #1 { xdvipdfmx }
+        \sys_if_engine_luatex:TF
           {
-            \__kernel_msg_error:nnxx { sys } { wrong-backend }
-              #1 { xdvipdfmx }
-            \tl_gset:Nn #1 { xdvipdfmx }
+            \tex_directlua:D
+              { tex.sprint(status.shell_escape~or~os.execute()) }
           }
+          { \tex_shellescape:D }
       }
+  }
+\__sys_everyjob:n
+  {
+    \__sys_const:nn { sys_if_shell }
+      { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
+    \__sys_const:nn { sys_if_shell_unrestricted }
+      { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
+    \__sys_const:nn { sys_if_shell_restricted }
+      { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
+  }
+\__sys_everyjob:n
+  { \str_gset:Nx \g_file_curr_name_str { \tex_jobname:D } }
+\cs_new_protected:Npn \sys_finalise:
+  {
+    \sys_everyjob:
+    \tl_use:N \g__sys_finalise_tl
+    \tl_gclear:N \g__sys_finalise_tl
+  }
+\cs_new_protected:Npn \__sys_finalise:n #1
+  { \tl_gput_right:Nn \g__sys_finalise_tl {#1} }
+\tl_new:N \g__sys_finalise_tl
+\__sys_finalise:n
+  {
+    \str_const:Nx \c_sys_output_str
       {
-        \sys_if_output_pdf:TF
+        \int_compare:nNnTF
+          { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
+          { pdf }
+          { dvi }
+      }
+    \__sys_const:nn { sys_if_output_dvi }
+      { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
+    \__sys_const:nn { sys_if_output_pdf }
+      { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
+  }
+\__sys_finalise:n
+  {
+    \cs_if_exist:NT \@classoptionslist
+      {
+        \cs_if_eq:NNF \@classoptionslist \scan_stop:
           {
-            \str_if_eq:VnF #1 { pdfmode }
+            \clist_map_inline:Nn \@classoptionslist
               {
-                \__kernel_msg_error:nnxx { sys } { wrong-backend }
-                  #1 { pdfmode }
-                \tl_gset:Nn #1 { pdfmode }
+                \str_case:nnT {#1}
+                  {
+                    { dvipdfmx }
+                      { \tl_gset:Nn \g__sys_backend_tl { dvipdfmx } }
+                    { dvips }
+                      { \tl_gset:Nn \g__sys_backend_tl { dvips } }
+                    { dvisvgm }
+                      { \tl_gset:Nn \g__sys_backend_tl { dvisvgm } }
+                    { pdftex }
+                      { \tl_gset:Nn \g__sys_backend_tl { pdfmode } }
+                    { xetex }
+                      { \tl_gset:Nn \g__sys_backend_tl { xdvipdfmx } }
+                  }
+                  { \clist_remove_all:Nn \@unusedoptionlist {#1} }
               }
           }
-          {
-            \str_case:VnF #1
-              {
-                { dvipdfmx } { }
-                { dvips }    { }
-                { dvisvgm }  { }
-              }
-              {
-                \__kernel_msg_error:nnxx { sys } { wrong-backend }
-                  #1 { dvips }
-                \tl_gset:Nn #1 { dvips }
-              }
-          }
       }
   }
-\bool_new:N \g__sys_debug_bool
-\bool_new:N \g__sys_deprecation_bool
-\cs_new_protected:Npn \sys_load_debug:
+\tl_new:N \g__sys_backend_tl
+\__sys_finalise:n
   {
-    \bool_if:NF \g__sys_debug_bool
-      { \__kernel_sys_configuration_load:n { l3debug } }
-    \bool_gset_true:N \g__sys_debug_bool
+    \tl_gset:Nx \g__sys_backend_tl
+      {
+        \sys_if_engine_xetex:TF
+          { xdvipdfmx }
+          {
+             \sys_if_output_pdf:TF
+              { pdfmode }
+              { dvips }
+           }
+      }
   }
-\cs_new_protected:Npn \sys_load_deprecation:
-  {
-    \bool_if:NF \g__sys_deprecation_bool
-      { \__kernel_sys_configuration_load:n { l3deprecation } }
-    \bool_gset_true:N \g__sys_deprecation_bool
-  }
 %% File: l3clist.dtx
 \cs_new_eq:NN \c_empty_clist \c_empty_tl
 \tl_new:N \l__clist_internal_clist
@@ -10307,11 +10362,14 @@
       }
   }
 \cs_generate_variant:Nn \__kernel_ior_open:Nn { No }
-\cs_new_protected:Npn \__ior_open_stream:Nn #1#2
+\cs_new_protected:Npx \__ior_open_stream:Nn #1#2
   {
-    \tex_global:D \tex_chardef:D #1 = \l__ior_stream_tl \scan_stop:
-    \prop_gput:NVn \g__ior_streams_prop #1 {#2}
-    \tex_openin:D #1 #2 \scan_stop:
+    \tex_global:D \tex_chardef:D #1 = \exp_not:N \l__ior_stream_tl \scan_stop:
+    \prop_gput:NVn \exp_not:N \g__ior_streams_prop #1 {#2}
+    \tex_openin:D #1
+      \sys_if_engine_luatex:TF
+        { {#2} }
+        {  #2 \scan_stop: }
   }
 \cs_new_protected:Npn \ior_close:N #1
   {
@@ -10890,8 +10948,6 @@
 \str_new:N \g_file_curr_dir_str
 \str_new:N \g_file_curr_ext_str
 \str_new:N \g_file_curr_name_str
-\cs_if_exist:NT \@currname
-  { \str_gset_eq:NN \g_file_curr_name_str \@currname }
 \seq_new:N \g__file_stack_seq
 \group_begin:
   \cs_set_protected:Npn \__file_tmp:w #1#2#3
@@ -10912,7 +10968,10 @@
         }
     }
   \cs_if_exist:NT \@currnamestack
-    { \exp_after:wN \__file_tmp:w \@currnamestack }
+    {
+      \tl_if_empty:NF \@currnamestack
+        { \exp_after:wN \__file_tmp:w \@currnamestack }
+    }
 \group_end:
 \seq_new:N \g__file_record_seq
 \tl_new:N \l__file_base_name_tl
@@ -11108,9 +11167,27 @@
 \cs_new:Npx \__file_file_ext_check_auxiii:nw #1#2 . #3 . #4 \q_stop
   {
     \exp_not:N \quark_if_nil:nTF {#3}
-      { \exp_not:N \__kernel_file_name_quote:n { #1 \tl_to_str:n { .tex } } }
+      {
+        \exp_not:N \exp_args:Nee \exp_not:N \__file_file_ext_check_auxiv:nn
+          { \exp_not:N \__kernel_file_name_quote:n {#1} }
+          {
+            \exp_not:N \__kernel_file_name_quote:n
+              { #1 \tl_to_str:n { .tex } }
+          }
+      }
       {#1}
   }
+\cs_new:Npn \__file_file_ext_check_auxiv:nn #1#2
+  {
+    \tl_if_blank:eTF { \__file_file_size:n {#2} }
+      {#1}
+      {
+        \int_compare:nNnTF
+          { \__file_file_size:n {#1} } = { \__file_file_size:n {#2} }
+          {#2}
+          {#1}
+      }
+  }
 \bool_lazy_or:nnF
   { \cs_if_exist_p:N \tex_filesize:D }
   { \sys_if_engine_luatex_p: }
@@ -11470,14 +11547,17 @@
         { } { } { }
   }
 \cs_new:Npn \__file_list_aux:n #1 { \iow_newline: #1 }
-\AtBeginDocument
+\cs_if_exist:NT \@filelist
   {
-    \exp_args:NNx \seq_set_from_clist:Nn \l__file_tmp_seq
-      { \tl_to_str:N \@filelist }
-    \seq_gconcat:NNN
-      \g__file_record_seq
-      \g__file_record_seq
-      \l__file_tmp_seq
+    \AtBeginDocument
+      {
+        \exp_args:NNx \seq_set_from_clist:Nn \l__file_tmp_seq
+          { \tl_to_str:N \@filelist }
+        \seq_gconcat:NNN
+          \g__file_record_seq
+          \g__file_record_seq
+          \l__file_tmp_seq
+      }
   }
 \cs_new_protected:Npn \GetIdInfo
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2019-10-11 21:33:04 UTC (rev 52343)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2019-10-02}%
+\def\ExplFileDate{2019-10-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \def\tempa{LaTeX2e}%
@@ -58,7 +58,7 @@
   }%
 \catcode64=11 %
 \let\expl at AtBeginDocument\AtBeginDocument
-\def\AtBeginDocument#1{}%
+\def\AtBeginDocument#1{#1}%
 \expandafter\def\expandafter\l at expl@tidy at tl\expandafter
   {%
     \l at expl@tidy at tl
@@ -85,6 +85,7 @@
       }
     \tex_input:D #1 .def \scan_stop:
   }
+\sys_everyjob:
 \sys_load_backend:n { }
 \ExplSyntaxOff
 \l at expl@tidy at tl

Added: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2019-10-11 21:33:04 UTC (rev 52343)
@@ -0,0 +1,139 @@
+%%
+%% This is file `expl3.ltx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% expl3.dtx  (with options: `2ekernel,loader')
+%% 
+%% Copyright (C) 1990-2019 The LaTeX3 Project
+%% 
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version.  The latest
+%% version of this license is in the file:
+%% 
+%%    https://www.latex-project.org/lppl.txt
+%% 
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%% 
+%% File: expl3.dtx
+\def\ExplFileDate{2019-10-11}%
+\let\ExplLoaderFileDate\ExplFileDate
+\everyjob\expandafter{\the\everyjob
+  \message{^^J\ExplFileDate\space L3 programming layer}%
+}
+\protected\def\ProvidesExplPackage#1#2#3#4%
+  {%
+    \ProvidesPackage{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
+    \ExplSyntaxOn
+  }%
+\protected\def\ProvidesExplClass#1#2#3#4%
+  {%
+    \ProvidesClass{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
+    \ExplSyntaxOn
+  }%
+\protected\def\ProvidesExplFile#1#2#3#4%
+  {%
+    \ProvidesFile{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
+    \ExplSyntaxOn
+  }%
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname tex\string _let:D\endcsname\relax
+  \expandafter\@firstofone
+\else
+  \expandafter\@gobble
+\fi
+  {\input{expl3-code.tex}}%
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname tex\string _let:D\endcsname\relax
+  \expandafter\endinput
+\fi
+\cs_if_exist:NF \c__expl_def_ext_tl
+  { \tl_const:Nn \c__expl_def_ext_tl { def } }
+\cs_gset_protected:Npn \__kernel_sys_configuration_load:n #1
+  {
+    \cs_undefine:c { ver@ #1 .def }
+    \@onefilewithoptions {#1} [ ] [ ]
+      \c__expl_def_ext_tl
+  }
+\keys_define:nn { sys }
+  {
+    backend .choices:nn =
+      { dvipdfmx , dvips , dvisvgm , pdfmode , xdvipdfmx }
+      { \sys_load_backend:n {#1} } ,
+    check-declarations .code:n =
+      {
+        \sys_load_debug:
+        \debug_on:n { check-declarations }
+      } ,
+    driver .meta:n = { backend = #1 } ,
+    enable-debug .code:n =
+      \sys_load_debug: ,
+    log-functions .code:n =
+      {
+        \sys_load_debug:
+        \debug_on:n { log-functions }
+      } ,
+    undo-recent-deprecations .code:n =
+      {
+        \sys_load_deprecation:
+        \bool_gset_true:N \g__kernel_deprecation_undo_recent_bool
+      }
+  }
+\AtBeginDocument
+  {
+    \str_if_exist:NF \c_sys_backend_str
+      { \sys_load_backend:n { } }
+  }
+\cs_if_free:cTF { ver at expl3.sty }
+  {
+    \tex_everyjob:D \exp_after:wN
+      {
+        \tex_the:D \tex_everyjob:D
+        \sys_everyjob:
+      }
+  }
+  { \sys_everyjob: }
+\tl_put_left:Nn \@pushfilename
+  {
+    \exp_args:Nx \__kernel_file_input_push:n
+      {
+        \tl_to_str:N \@currname
+        \tl_to_str:N \@currext
+      }
+    \tl_put_left:Nx \l__expl_status_stack_tl
+      {
+        \bool_if:NTF \l__kernel_expl_bool
+          { 1 }
+          { 0 }
+      }
+    \ExplSyntaxOff
+  }
+\tl_put_right:Nn \@pushfilename { \@pushfilenameaux }
+\cs_set_protected:Npn \@pushfilenameaux #1#2#3
+  {
+    \str_gset:Nn \g_file_curr_name_str {#3}
+    #1 #2 {#3}
+  }
+\tl_put_right:Nn \@popfilename
+  {
+    \__kernel_file_input_pop:
+    \tl_if_empty:NTF \l__expl_status_stack_tl
+      { \ExplSyntaxOff }
+      { \exp_after:wN \__expl_status_pop:w \l__expl_status_stack_tl \q_stop }
+  }
+\cs_new_protected:Npn \__expl_status_pop:w #1#2 \q_stop
+  {
+    \tl_set:Nn \l__expl_status_stack_tl {#2}
+    \int_if_odd:nTF {#1}
+      { \ExplSyntaxOn }
+      { \ExplSyntaxOff }
+  }
+\tl_new:N \l__expl_status_stack_tl
+\tl_set:Nn \l__expl_status_stack_tl { 0 }
+\ExplSyntaxOff
+%% 
+%%
+%% End of file `expl3.ltx'.


Property changes on: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.lua	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.lua	2019-10-11 21:33:04 UTC (rev 52343)
@@ -41,6 +41,7 @@
 local os_date    = os.date
 local setcatcode = tex.setcatcode
 local sprint     = tex.sprint
+local cprint     = tex.cprint
 local write      = tex.write
 local utf8_char = (utf and utf.char) or unicode.utf8.char
 local kpse_find = (resolvers and resolvers.findfile) or kpse.find_file
@@ -48,10 +49,9 @@
   write((gsub(str, ".",
     function (ch) return format("%02X", byte(ch)) end)))
 end
-local charcat_table = l3kernel.charcat_table or 1
-local function charcat(charcode, catcode)
-  setcatcode(charcat_table, charcode, catcode)
-  sprint(charcat_table, utf8_char(charcode))
+local charcat
+function charcat(charcode, catcode)
+  cprint(catcode, utf8_char(charcode))
 end
 l3kernel.charcat = charcat
 local base_time = 0

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2019-10-11 21:31:54 UTC (rev 52342)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2019-10-11 21:33:04 UTC (rev 52343)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2019-10-02}%
+\def\ExplFileDate{2019-10-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%
@@ -41,29 +41,36 @@
     \ProvidesFile{#1}[#2 \ifx\relax#3\relax\else v#3\space\fi #4]%
     \ExplSyntaxOn
   }%
-\input{expl3-code.tex}%
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname tex\string _let:D\endcsname\relax
+  \expandafter\@firstofone
+\else
+  \expandafter\@gobble
+\fi
+  {\input{expl3-code.tex}}%
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname tex\string _let:D\endcsname\relax
   \expandafter\endinput
 \fi
-\tl_const:Nn \c__expl_def_ext_tl { def }
-\cs_new_protected:Npn \__kernel_sys_configuration_load:n #1
+\ifdefined\@pushfilenameaux
+  \ExplSyntaxOn
+\fi
+\cs_if_exist:NF \c__expl_def_ext_tl
+  { \tl_const:Nn \c__expl_def_ext_tl { def } }
+\cs_gset_protected:Npn \__kernel_sys_configuration_load:n #1
   {
-    \group_begin:
-    \cs_set_protected:Npn \ProvidesExplFile
-      {
-        \char_set_catcode_space:n { `\  }
-        \ProvidesExplFileAux
-      }
-    \cs_set_protected:Npn \ProvidesExplFileAux ##1##2##3##4
-      {
-        \group_end:
-        \ProvidesFile {##1} [ ##2~v##3~##4 ]
-      }
+    \ExplSyntaxOff
     \cs_undefine:c { ver@ #1 .def }
     \@onefilewithoptions {#1} [ ] [ ]
       \c__expl_def_ext_tl
+    \ExplSyntaxOn
   }
+\cs_gset_protected:Npn \__kernel_sys_configuration_load_std:n #1
+  {
+    \cs_undefine:c { ver@ #1 .def }
+    \@onefilewithoptions {#1} [ ] [ ]
+      \c__expl_def_ext_tl
+  }
 \clist_new:N \l__expl_options_clist
 \DeclareOption*
   { \clist_put_right:NV \l__expl_options_clist \CurrentOption }
@@ -95,6 +102,21 @@
 \keys_set:nV { sys } \l__expl_options_clist
 \str_if_exist:NF \c_sys_backend_str
   { \sys_load_backend:n { } }
+\cs_if_exist:NT \@pushfilenameaux
+  {
+    \cs_gset_eq:NN \__kernel_sys_configuration_load:n
+      \__kernel_sys_configuration_load_std:n
+    \endinput
+  }
+\cs_if_free:cTF { ver at expl3.sty }
+  {
+    \tex_everyjob:D \exp_after:wN
+      {
+        \tex_the:D \tex_everyjob:D
+        \sys_everyjob:
+      }
+  }
+  { \sys_everyjob: }
 \tl_put_left:Nn \@pushfilename
   {
     \exp_args:Nx \__kernel_file_input_push:n
@@ -132,6 +154,8 @@
   }
 \tl_new:N \l__expl_status_stack_tl
 \tl_set:Nn \l__expl_status_stack_tl { 0 }
+\cs_gset_eq:NN \__kernel_sys_configuration_load:n
+  \__kernel_sys_configuration_load_std:n
 %% 
 %%
 %% End of file `expl3.sty'.



More information about the tex-live-commits mailing list