texlive[59231] Master/texmf-dist: l3kernel

commits+karl at tug.org commits+karl at tug.org
Sun May 16 23:08:15 CEST 2021


Revision: 59231
          http://tug.org/svn/texlive?view=revision&revision=59231
Author:   karl
Date:     2021-05-16 23:08:14 +0200 (Sun, 16 May 2021)
Log Message:
-----------
l3kernel

Modified Paths:
--------------
    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/l3news.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.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/l3kernel/expl3.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/l3cctab.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.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/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/l3pdf.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/l3text-case.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text.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/l3kernel/expl3-code.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2021-05-16 21:08:14 UTC (rev 59231)
@@ -7,6 +7,20 @@
 
 ## [Unreleased]
 
+## [2021-05-11]
+
+### Added
+- `\cctab_item:Nn` (issue #880)
+- `\clist_use:nnnn` and `\clist_use:nn` (issue #561)
+
+### Fixed
+- Loading of backend in generic DVI mode (issue #905)
+- Make `\keyval_parse:nnn` alignment-safe (issue #896)
+- Control sequences and category codes in regex replacements (issue #909)
+
+### Changed
+- Speed up \group_align_safe_begin: (pull #906)
+
 ## [2021-05-07]
 
 ### Added
@@ -883,7 +897,8 @@
 - Step functions have been added for dim variables,
   e.g. `\dim_step_inline:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-05-07...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2021-05-11...HEAD
+[2021-05-11]: https://github.com/latex3/latex3/compare/2021-05-07...2021-05-11
 [2021-05-07]: https://github.com/latex3/latex3/compare/2021-02-18...2021-05-07
 [2021-02-18]: https://github.com/latex3/latex3/compare/2021-02-06...2021-02-18
 [2021-02-06]: https://github.com/latex3/latex3/compare/2021-02-02...2021-02-06

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2021-05-16 21:08:14 UTC (rev 59231)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2021-05-07
+Release 2021-05-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	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2021-05-16 21:08:14 UTC (rev 59231)
@@ -54,7 +54,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2021-05-07}
+\date{Released 2021-05-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/l3news.pdf
===================================================================
(Binary files differ)

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

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

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

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.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	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2021-05-16 21:08:14 UTC (rev 59231)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2021-05-07}
+\date{Released 2021-05-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	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2021-05-16 21:08:14 UTC (rev 59231)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2021-05-07}
+\date{Released 2021-05-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	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2021-05-16 21:08:14 UTC (rev 59231)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2021-05-07}
+\date{Released 2021-05-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	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2021-05-16 21:08:14 UTC (rev 59231)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2021-05-07}
+\date{Released 2021-05-11}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -24,7 +24,7 @@
 %
 %<*driver|generic|package|2ekernel>
 %</driver|generic|package|2ekernel>
-\def\ExplFileDate{2021-05-07}%
+\def\ExplFileDate{2021-05-11}%
 %<*driver>
 \documentclass[full]{l3doc}
 \usepackage{graphicx}
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %
@@ -1756,11 +1756,15 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\g__kernel_backend_header_bool}
 % Load the dynamic code and standard back-end.
 %    \begin{macrocode}
 \sys_everyjob:
+\bool_new:N \g__kernel_backend_header_bool
+\bool_gset_true:N \g__kernel_backend_header_bool
 \sys_load_backend:n { }
 %    \end{macrocode}
+% \end{macro}
 %
 %  For the generic loader, a few final steps to take. Turn of \cs{expl3}
 %  syntax and tidy up the small number of temporary changes.

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %
@@ -110,7 +110,7 @@
 %   matching \cs{cctab_begin:N}.
 % \end{function}
 %
-% \begin{function}[added = 2020-05-19, updated = 2020-07-02]{\cctab_select:N}
+% \begin{function}[added = 2020-05-19, updated = 2020-07-02]{\cctab_select:N, \cctab_select:c}
 %   \begin{syntax}
 %     \cs{cctab_select:N} \meta{category code table}
 %   \end{syntax}
@@ -120,6 +120,15 @@
 %   and \cs{cctab_gset:Nn}.
 % \end{function}
 %
+% \begin{function}[EXP, added = 2021-05-10]{\cctab_item:Nn, \cctab_item:cn}
+%   \begin{syntax}
+%     \cs{cctab_item:Nn} \meta{category code table} \Arg{integer expression}
+%   \end{syntax}
+%   Determines the \meta{character} with character code given by the
+%   \meta{integer expression} and expands to its category code specified
+%   by the \meta{category code table}.
+% \end{function}
+%
 % \section{Category code table conditionals}
 %
 % \begin{function}[pTF]{\cctab_if_exist:N, \cctab_if_exist:c}
@@ -660,6 +669,34 @@
   }
 %    \end{macrocode}
 %
+%
+% \begin{macro}{\cctab_item:Nn, \cctab_item:cn}
+%   Evaluate the integer argument only once.  In most engines the
+%   |cctab| variable only has $256$ entries so we only look up the
+%   catcode for these entries, otherwise we use the current catcode.  In
+%   particular, for out-of-range values we use whatever fall-back
+%   \cs{char_value_catcode:n}.  In \LuaTeX{}, we use the
+%   |tex.getcatcode| function.
+%    \begin{macrocode}
+\cs_new:Npn \cctab_item:Nn #1#2
+  { \exp_args:Nf \@@_item:nN { \int_eval:n {#2} } #1 }
+\sys_if_engine_luatex:TF
+  {
+    \cs_new:Npn \@@_item:nN #1#2
+      { \lua_now:e { tex.print(-2, tex.getcatcode(\int_use:N #2, #1)) } }
+  }
+  {
+    \cs_new:Npn \@@_item:nN #1#2
+      {
+        \int_compare:nNnTF {#1} < { 256 }
+          { \intarray_item:Nn #2 { #1 + 1 } }
+          { \char_value_catcode:n {#1} }
+      }
+  }
+\cs_generate_variant:Nn \cctab_item:Nn { c }
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsection{Category code table conditionals}
 %
 % \begin{macro}{\cctab_if_exist:N,\cctab_if_exist:c}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %
@@ -591,6 +591,20 @@
 %   \end{texnote}
 % \end{function}
 %
+% \begin{function}[EXP, added = 2021-05-10]{\clist_use:nnnn, \clist_use:nn}
+%   \begin{syntax}
+%     \cs{clist_use:nnnn} \meta{comma~list} \Arg{separator~between~two} \Arg{separator~between~more~than~two} \Arg{separator~between~final~two}
+%     \cs{clist_use:nn} \meta{comma~list} \Arg{separator}
+%   \end{syntax}
+%   Places the contents of the \meta{comma~list} in the input stream,
+%   with the appropriate \meta{separator} between the items.  As for
+%   \cs{clist_set:Nn}, blank items are omitted, spaces are removed from
+%   both sides of each item, then a set of braces is removed if the
+%   resulting space-trimmed item is braced.  The \meta{separators} are
+%   then inserted in the same way as for \cs{clist_use:Nnnn} and
+%   \cs{clist_use:Nn}, respectively.
+% \end{function}
+%
 % \section{Comma lists as stacks}
 %
 % Comma lists can be used as stacks, where data is pushed to and popped
@@ -805,11 +819,13 @@
 % \end{variable}
 %
 % \begin{macro}[EXP]{
+%     \@@_use_none_delimit_by_s_mark:w,
 %     \@@_use_none_delimit_by_s_stop:w,
 %     \@@_use_i_delimit_by_s_stop:nw
 %   }
 %   Functions to gobble up to a scan mark.
 %    \begin{macrocode}
+\cs_new:Npn \@@_use_none_delimit_by_s_mark:w #1 \s_@@_mark { }
 \cs_new:Npn \@@_use_none_delimit_by_s_stop:w #1 \s_@@_stop { }
 \cs_new:Npn \@@_use_i_delimit_by_s_stop:nw #1 #2 \s_@@_stop {#1}
 %    \end{macrocode}
@@ -1941,6 +1957,62 @@
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}
+%   {
+%     \clist_use:nnnn, \clist_use:nn, \@@_use:Nw,
+%     \@@_use_one:w, \@@_use_end:w, \@@_use_more:w
+%   }
+%   Items are grabbed by \cs{@@_use:Nw}, which detects blank items with
+%   a \cs{tl_if_empty:oTF} test (in which case it recurses).  Non-blank
+%   items are either the end of the list, in which case the argument
+%   |#1| of \cs{@@_use:Nw} is used to properly end the list, or are
+%   normal items, which must be trimmed and properly unbraced.  As we
+%   find successive items, the long list of \cs{@@_use:Nw} calls gets
+%   shortened and we end up calling \cs{@@_use_more:w} once we have
+%   found $3$ items.  This auxiliary leaves the first-found item and the
+%   general separator, and calls \cs{@@_use:Nw} to find more items.
+%   A subtlety is that we use \cs{@@_use_end:w} both in the case of a
+%   two-item list and for the last two items of a general list: to get
+%   the correct separator, \cs{@@_use_more:w} replaces the
+%   separator-of-two by the last-separator when called, namely as soon
+%   as we have found three items.
+%    \begin{macrocode}
+\cs_new:Npn \clist_use:nnnn #1#2#3#4
+  {
+    \@@_use:Nw \@@_use_none_delimit_by_s_stop:w
+    \@@_use:Nw \@@_use_one:w
+    \@@_use:Nw \@@_use_end:w
+    \@@_use_more:w ;
+      {#2} {#3} {#4} ;
+    \prg_do_nothing: #1 , \s_@@_mark ,
+    \s_@@_stop
+  }
+\cs_new:Npn \@@_use:Nw #1#2 ; #3 ; #4 ,
+  {
+    \tl_if_empty:oTF { \use_none:nn #4 ? }
+      { \@@_use:Nw #1#2 ; }
+      {
+        \@@_use_none_delimit_by_s_mark:w #4 #1 \s_@@_mark
+        \tl_trim_spaces_apply:oN {#4} \@@_use_ii_i:nn
+        \@@_map_unbrace:wn , { #2 ; }
+      }
+    #3 ; \prg_do_nothing:
+  }
+\cs_new:Npn \@@_use_one:w \s_@@_mark #1 , #2#3#4 \s_@@_stop
+  { \exp_not:n {#3} }
+\cs_new:Npn \@@_use_end:w
+    \s_@@_mark #1 , #2#3#4#5#6 \s_@@_stop
+  { \exp_not:n { #4 #5 #3 } }
+\cs_new:Npn \@@_use_more:w ; #1#2#3#4#5#6 ;
+  {
+    \exp_not:n { #3 #5 }
+    \@@_use:Nw \@@_use_end:w \@@_use_more:w ;
+    {#1} {#2} {#6} {#5} {#6} ;
+  }
+\cs_new:Npn \clist_use:nn #1#2 { \clist_use:nnnn {#1} {#2} {#2} {#2} }
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsection{Using a single item}
 %
 % \begin{macro}{\clist_item:Nn, \clist_item:cn}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %
@@ -158,8 +158,8 @@
 %   red!50!cyan
 % \end{verbatim}
 % will result in a color specification using the |rgb| model, made up of
-% $50\,\%$ red and  $50\,\%$ of cyan \emph{expressed in \texttt{rgb}}. As color
-% model interconversion is not exact.
+% $50\,\%$ red and  $50\,\%$ of cyan \emph{expressed in \texttt{rgb}}.
+% This may be important as color model interconversion is not exact.
 %
 % The one exception to the above is where the first model in an expression is
 % |gray|. In this case, the order of mixing is \enquote{swapped} internally, so

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -79,7 +79,7 @@
 %
 % \title{The \cls{l3doc} class}
 % \author{\Team}
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-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	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-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	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %
@@ -891,7 +891,7 @@
 % \end{verbatim}
 % are treated identically.
 %
-% \begin{function}[rEXP, added=2020-12-19]{\keyval_parse:nnn}
+% \begin{function}[rEXP, added=2020-12-19, updated = 2021-05-10]{\keyval_parse:nnn}
 %   \begin{syntax}
 %     \cs{keyval_parse:nnn} \Arg{code_1} \Arg{code_2} \Arg{key--value list}
 %   \end{syntax}
@@ -929,7 +929,7 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[rEXP,updated = 2020-12-19]{\keyval_parse:NNn}
+% \begin{function}[rEXP, updated = 2021-05-10]{\keyval_parse:NNn}
 %   \begin{syntax}
 %     \cs{keyval_parse:NNn} \meta{function_1} \meta{function_2} \Arg{key--value list}
 %   \end{syntax}
@@ -1017,7 +1017,10 @@
 %   argument.
 %    \begin{macrocode}
       \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
-        { \@@_loop_active:nnw {##1} {##2} \s_@@_mark ##3 #1 \s_@@_tail #1 }
+        {
+          \group_align_safe_begin:
+          \@@_loop_active:nnw {##1} {##2} \s_@@_mark ##3 #1 \s_@@_tail #1
+        }
       \cs_new_eq:NN \keyval_parse:NNn \keyval_parse:nnn
 %    \end{macrocode}
 % \end{macro}
@@ -1255,7 +1258,7 @@
       \cs_new:Npn \@@_end_loop_active:w
           \s_@@_tail
           \@@_loop_other:nnw ##1 \s_@@_mark \s_@@_tail , \s_@@_tail ,
-        { }
+        { \group_align_safe_end: }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1280,7 +1283,9 @@
   {
     \@@_if_blank:w \s_@@_mark #2 \s_@@_nil \s_@@_stop \@@_blank_key_error:w
       \s_@@_mark \s_@@_stop
+    \group_align_safe_end:
     \exp_not:n { #4 { #2 } { #1 } }
+    \group_align_safe_begin:
     \@@_loop_other:nnw {#3} {#4}
   }
 \cs_new:Npn \@@_key:nn #1 #2
@@ -1287,7 +1292,9 @@
   {
     \@@_if_blank:w \s_@@_mark #1 \s_@@_nil \s_@@_stop \@@_blank_key_error:w
       \s_@@_mark \s_@@_stop
+    \group_align_safe_end:
     \exp_not:n { #2 { #1 } }
+    \group_align_safe_begin:
     \@@_loop_other:nnw {#2}
   }
 %    \end{macrocode}
@@ -1311,7 +1318,8 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_blank_true:w \s_@@_mark \s_@@_stop \@@_trim:nN #1 \@@_key:nn
   { \@@_loop_other:nnw }
-\cs_new:Npn \@@_blank_key_error:w \s_@@_mark \s_@@_stop \exp_not:n #1
+\cs_new:Npn \@@_blank_key_error:w
+  \s_@@_mark \s_@@_stop \group_align_safe_end: \exp_not:n #1
   {
     \__kernel_msg_expandable_error:nn
       { keyval } { blank-key-name }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %
@@ -125,6 +125,40 @@
 %   defined.
 % \end{function}
 %
+% \section{Customizable information for message modules}
+%
+% \begin{function}[EXP, added = 2018-10-10]{\msg_module_name:n}
+%   \begin{syntax}
+%     \cs{msg_module_name:n} \Arg{module}
+%   \end{syntax}
+%   Expands to the public name of the \meta{module} as defined by
+%   \cs{g_msg_module_name_prop} (or otherwise leaves the \meta{module}
+%   unchanged).
+% \end{function}
+%
+% \begin{function}[EXP, added = 2018-10-10]{\msg_module_type:n}
+%   \begin{syntax}
+%     \cs{msg_module_type:n} \Arg{module}
+%   \end{syntax}
+%   Expands to the description which applies to the \meta{module},
+%   for example a |Package| or |Class|. The information here is defined
+%   in \cs{g_msg_module_type_prop}, and will default to |Package| if an
+%   entry is not present.
+% \end{function}
+%
+% \begin{variable}[added = 2018-10-10]{\g_msg_module_name_prop}
+%   Provides a mapping between the module name used for messages, and that
+%   for documentation. For example, \LaTeX{}3 core messages are stored in
+%   the reserved |LaTeX| tree, but are printed as |LaTeX3|.
+% \end{variable}
+%
+% \begin{variable}[added = 2018-10-10]{\g_msg_module_type_prop}
+%   Provides a mapping between the module name used for messages, and that
+%   type of module. For example, for \LaTeX{}3 core messages, an empty entry
+%   is set here meaning that they are not described using the standard
+%   |Package| text.
+% \end{variable}
+%
 % \section{Contextual information for messages}
 %
 % \begin{function}[rEXP]{\msg_line_context:}
@@ -215,25 +249,6 @@
 %   |Package| is the standard outcome: see \cs{msg_module_type:n}.
 % \end{function}
 %
-% \begin{function}[EXP, added = 2018-10-10]{\msg_module_name:n}
-%   \begin{syntax}
-%     \cs{msg_module_name:n} \Arg{module}
-%   \end{syntax}
-%   Expands to the public name of the \meta{module} as defined by
-%   \cs{g_msg_module_name_prop} (or otherwise leaves the \meta{module}
-%   unchanged).
-% \end{function}
-%
-% \begin{function}[EXP, added = 2018-10-10]{\msg_module_type:n}
-%   \begin{syntax}
-%     \cs{msg_module_type:n} \Arg{module}
-%   \end{syntax}
-%   Expands to the description which applies to the \meta{module},
-%   for example a |Package| or |Class|. The information here is defined
-%   in \cs{g_msg_module_type_prop}, and will default to |Package| if an
-%   entry is not present.
-% \end{function}
-%
 % \begin{function}[EXP,updated = 2018-09-30]{\msg_see_documentation_text:n}
 %   \begin{syntax}
 %     \cs{msg_see_documentation_text:n} \Arg{module}
@@ -246,23 +261,10 @@
 %   \end{quote}
 %   This function can be redefined to alter the language in which the
 %   message is given, using |#1| as the name of the \meta{module} to
-%   be included. The name of the \meta{module} may be altered by use of
-%   \cs{g_msg_module_documentation_prop}
+%   be included.  The name of the \meta{module} is produced using
+%   \cs{msg_module_name:n}.
 % \end{function}
 %
-% \begin{variable}[added = 2018-10-10]{\g_msg_module_name_prop}
-%   Provides a mapping between the module name used for messages, and that
-%   for documentation. For example, \LaTeX{}3 core messages are stored in
-%   the reserved |LaTeX| tree, but are printed as |LaTeX3|.
-% \end{variable}
-%
-% \begin{variable}[added = 2018-10-10]{\g_msg_module_type_prop}
-%   Provides a mapping between the module name used for messages, and that
-%   type of module. For example, for \LaTeX{}3 core messages, an empty entry
-%   is set here meaning that they are not described using the standard
-%   |Package| text.
-% \end{variable}
-%
 % \section{Issuing messages}
 %
 % Messages behave differently depending on the message class. In all cases,

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %
@@ -1620,7 +1620,7 @@
 %   \TeX{}'s alignment structures present many problems. As Knuth says
 %   himself in \emph{\TeX : The Program}: \enquote{It's sort of a miracle
 %   whenever \tn{halign} or \tn{valign} work, [\ldots]} One problem relates
-%   to commands that internally issues a \tn{cr} but also peek ahead for
+%   to commands that internally issue a \tn{cr} but also peek ahead for
 %   the next character for use in, say, an optional argument. If the
 %   next token happens to be a |&| with category code~4 we get some
 %   sort of weird error message because the underlying
@@ -1631,14 +1631,21 @@
 %   special group so that \TeX{} still thinks it's on safe ground but at
 %   the same time we don't want to introduce any brace group that may
 %   find its way to the output. The following functions help with this
-%   by using code documented only in Appendix~D of
+%   by using behaviour documented only in Appendix~D of
 %   \emph{The \TeX{}book}\dots
+%   In short evaluating |`{| and |`}| as numbers will not change the counter
+%   \TeX{} uses to keep track of its state in an alignment, whereas gobbling a
+%   brace using \cs{if_false:} will affect \TeX's state without producing any
+%   real group.
 %   We place the \cs{if_false:} |{| \cs{fi:} part at that place so
 %   that the successive expansions of \cs{group_align_safe_begin/end:}
 %   are always brace balanced.
 %    \begin{macrocode}
+\group_begin:
+\tex_catcode:D `\^^@ = 2 \exp_stop_f:
 \cs_new:Npn \group_align_safe_begin:
-  { \if_int_compare:w \if_false: { \fi: `} = \c_zero_int \fi: }
+  { \exp:w \if_false: { \fi: `^^@ \exp_stop_f: }
+\group_end:
 \cs_new:Npn \group_align_safe_end:
   { \if_int_compare:w `{ = \c_zero_int } \fi: }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %
@@ -270,11 +270,15 @@
 %   \item[\{$n,m$\}] At least $n$, no more than $m$, greedy.
 %   \item[\{$n,m$\}?] At least $n$, no more than $m$, lazy.
 % \end{l3regex-syntax}
+% For greedy quantifiers the regex code will first investigate matches
+% that involve as many repetitions as possible, while for lazy
+% quantifiers it investigates matches with as few repetitions as
+% possible first.
 %
 % Alternation and capturing groups.
 % \begin{l3regex-syntax}
 %   \item[A\char`|B\char`|C] Either one of \texttt{A}, \texttt{B},
-%     or \texttt{C}.
+%     or \texttt{C}, investigating \texttt{A} first.
 %   \item[(\ldots{})] Capturing group.
 %   \item[(?:\ldots{})] Non-capturing group.
 %   \item[(?\char`|\ldots{})] Non-capturing group which resets
@@ -5652,18 +5656,22 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_replacement_normal:n #1
   {
-    \tl_if_empty:NTF \l_@@_replacement_category_tl
-      { \@@_replacement_normal_aux:N #1 }
-      { % (
-        \token_if_eq_charcode:NNTF #1 )
-          {
-            \seq_pop:NN \l_@@_replacement_category_seq
-              \l_@@_replacement_category_tl
+    \int_compare:nNnTF { \l_@@_replacement_csnames_int } > 0
+      { \exp_args:No \@@_replacement_put:n { \token_to_str:N #1 } }
+      {
+        \tl_if_empty:NTF \l_@@_replacement_category_tl
+          { \@@_replacement_normal_aux:N #1 }
+          { % (
+            \token_if_eq_charcode:NNTF #1 )
+              {
+                \seq_pop:NN \l_@@_replacement_category_seq
+                  \l_@@_replacement_category_tl
+              }
+              {
+                \use:c { @@_replacement_c_ \l_@@_replacement_category_tl :w }
+                ? #1
+              }
           }
-          {
-            \use:c { @@_replacement_c_ \l_@@_replacement_category_tl :w }
-            ? #1
-          }
       }
   }
 \cs_new_protected:Npn \@@_replacement_normal_aux:N #1

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %
@@ -1080,6 +1080,15 @@
 %     \cs{peek_regex:nTF} as control sequences, while functions that
 %     inspect individual tokens (for instance \cs{peek_charcode:NTF})
 %     only take into account their meaning.
+%
+%     The \cs{peek_regex:nTF} function only inspects as few tokens as
+%     necessary to determine whether the regular expression matches.
+%     For instance \cs{peek_regex:nTF} \verb"{ abc | [a-z] }" |{ } { }|
+%     |abc| will only inspect the first token~|a| even though the first
+%     branch |abc| of the alternative is preferred in functions such as
+%     \cs{peek_regex_remove_once:n}.  This may have an effect on
+%     tokenization if the input stream has not yet been tokenized and
+%     category codes are changed.
 %   \end{texnote}
 % \end{function}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-05-07}
+% \date{Released 2021-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2021-05-16 21:08:14 UTC (rev 59231)
@@ -70,7 +70,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2021-05-07}%
+\def\ExplFileDate{2021-05-11}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -7303,8 +7303,11 @@
   { \if_mode_inner: \prg_return_true: \else: \prg_return_false: \fi: }
 \prg_new_conditional:Npnn \mode_if_math: { p , T , F , TF }
   { \if_mode_math: \prg_return_true: \else: \prg_return_false: \fi: }
+\group_begin:
+\tex_catcode:D `\^^@ = 2 \exp_stop_f:
 \cs_new:Npn \group_align_safe_begin:
-  { \if_int_compare:w \if_false: { \fi: `} = \c_zero_int \fi: }
+  { \exp:w \if_false: { \fi: `^^@ \exp_stop_f: }
+\group_end:
 \cs_new:Npn \group_align_safe_end:
   { \if_int_compare:w `{ = \c_zero_int } \fi: }
 \int_new:N \g__kernel_prg_map_int
@@ -7710,6 +7713,7 @@
 \tl_new:N \l__clist_internal_clist
 \scan_new:N \s__clist_mark
 \scan_new:N \s__clist_stop
+\cs_new:Npn \__clist_use_none_delimit_by_s_mark:w #1 \s__clist_mark { }
 \cs_new:Npn \__clist_use_none_delimit_by_s_stop:w #1 \s__clist_stop { }
 \cs_new:Npn \__clist_use_i_delimit_by_s_stop:nw #1 #2 \s__clist_stop {#1}
 \quark_new:N \q__clist_recursion_tail
@@ -8232,6 +8236,39 @@
 \cs_new:Npn \clist_use:Nn #1#2
   { \clist_use:Nnnn #1 {#2} {#2} {#2} }
 \cs_generate_variant:Nn \clist_use:Nn { c }
+\cs_new:Npn \clist_use:nnnn #1#2#3#4
+  {
+    \__clist_use:Nw \__clist_use_none_delimit_by_s_stop:w
+    \__clist_use:Nw \__clist_use_one:w
+    \__clist_use:Nw \__clist_use_end:w
+    \__clist_use_more:w ;
+      {#2} {#3} {#4} ;
+    \prg_do_nothing: #1 , \s__clist_mark ,
+    \s__clist_stop
+  }
+\cs_new:Npn \__clist_use:Nw #1#2 ; #3 ; #4 ,
+  {
+    \tl_if_empty:oTF { \use_none:nn #4 ? }
+      { \__clist_use:Nw #1#2 ; }
+      {
+        \__clist_use_none_delimit_by_s_mark:w #4 #1 \s__clist_mark
+        \tl_trim_spaces_apply:oN {#4} \__clist_use_ii_i:nn
+        \__clist_map_unbrace:wn , { #2 ; }
+      }
+    #3 ; \prg_do_nothing:
+  }
+\cs_new:Npn \__clist_use_one:w \s__clist_mark #1 , #2#3#4 \s__clist_stop
+  { \exp_not:n {#3} }
+\cs_new:Npn \__clist_use_end:w
+    \s__clist_mark #1 , #2#3#4#5#6 \s__clist_stop
+  { \exp_not:n { #4 #5 #3 } }
+\cs_new:Npn \__clist_use_more:w ; #1#2#3#4#5#6 ;
+  {
+    \exp_not:n { #3 #5 }
+    \__clist_use:Nw \__clist_use_end:w \__clist_use_more:w ;
+    {#1} {#2} {#6} {#5} {#6} ;
+  }
+\cs_new:Npn \clist_use:nn #1#2 { \clist_use:nnnn {#1} {#2} {#2} {#2} }
 \cs_new:Npn \clist_item:Nn #1#2
   {
     \__clist_item:ffoN
@@ -12655,7 +12692,10 @@
   \cs_set_protected:Npn \__keyval_tmp:NN #1#2
     {
       \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
-        { \__keyval_loop_active:nnw {##1} {##2} \s__keyval_mark ##3 #1 \s__keyval_tail #1 }
+        {
+          \group_align_safe_begin:
+          \__keyval_loop_active:nnw {##1} {##2} \s__keyval_mark ##3 #1 \s__keyval_tail #1
+        }
       \cs_new_eq:NN \keyval_parse:NNn \keyval_parse:nnn
       \cs_new:Npn \__keyval_loop_active:nnw ##1 ##2 ##3 #1
         {
@@ -12764,7 +12804,7 @@
       \cs_new:Npn \__keyval_end_loop_active:w
           \s__keyval_tail
           \__keyval_loop_other:nnw ##1 \s__keyval_mark \s__keyval_tail , \s__keyval_tail ,
-        { }
+        { \group_align_safe_end: }
     }
   \char_set_catcode_active:n { `\, }
   \char_set_catcode_active:n { `\= }
@@ -12774,7 +12814,9 @@
   {
     \__keyval_if_blank:w \s__keyval_mark #2 \s__keyval_nil \s__keyval_stop \__keyval_blank_key_error:w
       \s__keyval_mark \s__keyval_stop
+    \group_align_safe_end:
     \exp_not:n { #4 { #2 } { #1 } }
+    \group_align_safe_begin:
     \__keyval_loop_other:nnw {#3} {#4}
   }
 \cs_new:Npn \__keyval_key:nn #1 #2
@@ -12781,7 +12823,9 @@
   {
     \__keyval_if_blank:w \s__keyval_mark #1 \s__keyval_nil \s__keyval_stop \__keyval_blank_key_error:w
       \s__keyval_mark \s__keyval_stop
+    \group_align_safe_end:
     \exp_not:n { #2 { #1 } }
+    \group_align_safe_begin:
     \__keyval_loop_other:nnw {#2}
   }
 \cs_new:Npn \__keyval_if_empty:w #1 \s__keyval_mark \s__keyval_stop { }
@@ -12789,7 +12833,8 @@
 \cs_new:Npn \__keyval_if_recursion_tail:w \s__keyval_mark #1 \s__keyval_tail { }
 \cs_new:Npn \__keyval_blank_true:w \s__keyval_mark \s__keyval_stop \__keyval_trim:nN #1 \__keyval_key:nn
   { \__keyval_loop_other:nnw }
-\cs_new:Npn \__keyval_blank_key_error:w \s__keyval_mark \s__keyval_stop \exp_not:n #1
+\cs_new:Npn \__keyval_blank_key_error:w
+  \s__keyval_mark \s__keyval_stop \group_align_safe_end: \exp_not:n #1
   {
     \__kernel_msg_expandable_error:nn
       { keyval } { blank-key-name }
@@ -20723,6 +20768,22 @@
           { \__kernel_msg_error:nn { cctab } { missing-end } }
       }
   }
+\cs_new:Npn \cctab_item:Nn #1#2
+  { \exp_args:Nf \__cctab_item:nN { \int_eval:n {#2} } #1 }
+\sys_if_engine_luatex:TF
+  {
+    \cs_new:Npn \__cctab_item:nN #1#2
+      { \lua_now:e { tex.print(-2, tex.getcatcode(\int_use:N #2, #1)) } }
+  }
+  {
+    \cs_new:Npn \__cctab_item:nN #1#2
+      {
+        \int_compare:nNnTF {#1} < { 256 }
+          { \intarray_item:Nn #2 { #1 + 1 } }
+          { \char_value_catcode:n {#1} }
+      }
+  }
+\cs_generate_variant:Nn \cctab_item:Nn { c }
 \prg_new_eq_conditional:NNn \cctab_if_exist:N \cs_if_exist:N
   { TF , T , F , p }
 \prg_new_eq_conditional:NNn \cctab_if_exist:c \cs_if_exist:c
@@ -25864,18 +25925,22 @@
   { \tl_build_put_right:Nn \l__regex_build_tl }
 \cs_new_protected:Npn \__regex_replacement_normal:n #1
   {
-    \tl_if_empty:NTF \l__regex_replacement_category_tl
-      { \__regex_replacement_normal_aux:N #1 }
-      { % (
-        \token_if_eq_charcode:NNTF #1 )
-          {
-            \seq_pop:NN \l__regex_replacement_category_seq
-              \l__regex_replacement_category_tl
+    \int_compare:nNnTF { \l__regex_replacement_csnames_int } > 0
+      { \exp_args:No \__regex_replacement_put:n { \token_to_str:N #1 } }
+      {
+        \tl_if_empty:NTF \l__regex_replacement_category_tl
+          { \__regex_replacement_normal_aux:N #1 }
+          { % (
+            \token_if_eq_charcode:NNTF #1 )
+              {
+                \seq_pop:NN \l__regex_replacement_category_seq
+                  \l__regex_replacement_category_tl
+              }
+              {
+                \use:c { __regex_replacement_c_ \l__regex_replacement_category_tl :w }
+                ? #1
+              }
           }
-          {
-            \use:c { __regex_replacement_c_ \l__regex_replacement_category_tl :w }
-            ? #1
-          }
       }
   }
 \cs_new_protected:Npn \__regex_replacement_normal_aux:N #1

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2021-05-16 21:08:14 UTC (rev 59231)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2021-05-07}%
+\def\ExplFileDate{2021-05-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11
@@ -93,6 +93,8 @@
     \tex_input:D #1 .def \scan_stop:
   }
 \sys_everyjob:
+\bool_new:N \g__kernel_backend_header_bool
+\bool_gset_true:N \g__kernel_backend_header_bool
 \sys_load_backend:n { }
 \ExplSyntaxOff
 \l at expl@tidy at tl

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2021-05-16 21:08:14 UTC (rev 59231)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2021-05-07}%
+\def\ExplFileDate{2021-05-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2021-05-16 21:03:49 UTC (rev 59230)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2021-05-16 21:08:14 UTC (rev 59231)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2021-05-07}%
+\def\ExplFileDate{2021-05-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%



More information about the tex-live-commits mailing list.