texlive[67134] Master/texmf-dist: l3kernel (16may23)

commits+karl at tug.org commits+karl at tug.org
Tue May 16 22:22:00 CEST 2023


Revision: 67134
          http://tug.org/svn/texlive?view=revision&revision=67134
Author:   karl
Date:     2023-05-16 22:22:00 +0200 (Tue, 16 May 2023)
Log Message:
-----------
l3kernel (16may23)

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/l3doc.pdf
    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.csv
    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-map.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	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-05-16 20:22:00 UTC (rev 67134)
@@ -7,6 +7,15 @@
 
 ## [Unreleased]
 
+## [2023-05-15]
+
+### Changed
+- Require `\expanded` and 'pdfTeX extension' primitives,
+  and thus TeX distributions from mid-2019 onward
+
+### Fixed
+- Treatment of trailing `/` in `\input at path`
+
 ## [2023-05-11]
 
 ### Added
@@ -1398,7 +1407,8 @@
 - Step functions have been added for dim variables,
   e.g. `\dim_step_inline:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-11...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-15...HEAD
+[2023-05-15]: https://github.com/latex3/latex3/compare/2023-05-11...2023-05-15
 [2023-05-11]: https://github.com/latex3/latex3/compare/2023-05-05...2023-05-11
 [2023-05-05]: https://github.com/latex3/latex3/compare/2023-04-20...2023-05-05
 [2023-04-20]: https://github.com/latex3/latex3/compare/2023-04-19...2023-04-20

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-05-16 20:22:00 UTC (rev 67134)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2023-05-11
+Release 2023-05-15
 
 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	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2023-05-16 20:22:00 UTC (rev 67134)
@@ -62,7 +62,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
 
 \pagenumbering{roman}
 \maketitle

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

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.csv
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv	2023-05-16 20:22:00 UTC (rev 67134)
@@ -39,8 +39,10 @@
 clist,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
 cmd,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2021-01-20,2021-03-03,
 code,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2021-04-23,2021-04-23,
+codedesc,codedescribe,Alceu Frigeri,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe/issues,2023-05-15,2023-05-15,
 codedoc,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,Somewhat experimental: may change
 codehigh,codehigh,Jianrui Lyu,https://github.com/lvjr/codehigh,https://github.com/lvjr/codehigh.git,https://github.com/lvjr/codehigh/issues,2022-04-02,2022-04-02,
+codelist,codelisting,Alceu Frigeri,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe,https://github.com/alceu-frigeri/codedescribe/issues,2023-05-15,2023-05-15,
 codepoint,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
 coffin,"l3kernel,xcoffins",The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
 colon,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
@@ -208,6 +210,7 @@
 right,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
 rivbook,rivbook,Julien Rivaud,,,,2018-06-13,2018-06-14,
 rivmath,rivmath,Julien Rivaud,,,,2018-06-13,2018-06-13,
+sanuml,sanitize-umlaut,Thomas F. Sturm,https://github.com/T-F-S/sanitize-umlaut,https://github.com/T-F-S/sanitize-umlaut.git,https://github.com/T-F-S/sanitize-umlaut/issues,2022-07-19,2022-07-19,
 scan,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
 schulma,schulmathematik,Keno Wehr,https://ctan.org/pkg/schulmathematik,,,2021-08-23,2021-08-23,
 scontents,scontents,Pablo González,https://github.com/pablgonz/scontents,git@github.com:pablgonz/scontents.git,https://github.com/pablgonz/scontents/issues,2019-12-05,2019-12-05,
@@ -221,6 +224,7 @@
 skip,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
 sort,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2017-02-13,
 space,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
+starray,starray,Alceu Frigeri,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray,https://github.com/alceu-frigeri/starray/issues,2023-05-15,2023-05-15,
 statistics,statistics,Julien Rivaud,https://gitlab.com/frnchfrgg-latex/statistics,https://gitlab.com/frnchfrgg-latex/statistics.git,https://gitlab.com/frnchfrgg-latex/statistics/issues,2018-06-25,2018-06-25,
 stm,lt3-stm,CV Radhakrishnan,http://www.cvr.cc/,,,2014-02-26,2014-02-26,
 stop,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,

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	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2023-05-16 20:22:00 UTC (rev 67134)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
 
 \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	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2023-05-16 20:22:00 UTC (rev 67134)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
 
 \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	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2023-05-16 20:22:00 UTC (rev 67134)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
 
 \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	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2023-05-16 20:22:00 UTC (rev 67134)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-05-11}
+\date{Released 2023-05-15}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -24,7 +24,7 @@
 %
 %<*driver|generic|package|2ekernel>
 %</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-05-11}%
+\def\ExplFileDate{2023-05-15}%
 %<*driver>
 \documentclass[full]{l3doc}
 \usepackage{graphicx}
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -1631,12 +1631,8 @@
 %    \end{macrocode}
 %
 % \begin{macro}[EXP]{\use:e}
-%   In non-\LuaTeX engines older than 2019, \cs{expanded} is emulated.
 %    \begin{macrocode}
 \cs_set:Npn \use:e #1 { \tex_expanded:D {#1} }
-\tex_ifdefined:D \tex_expanded:D \tex_else:D
-  \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} }
-\tex_fi:D
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -133,35 +133,6 @@
 %<@@=kernel>
 %    \end{macrocode}
 %
-% \subsection{\LuaTeX{}-specific code}
-%
-% Depending on the versions available, the \LaTeX{} format may not have
-% the raw |\Umath| primitive names available. We fix that globally:
-% it should cause no issues. Older \LuaTeX{} versions do not have
-% a pre-built table of the primitive names here so sort one out
-% ourselves. These end up globally-defined but at that is true with
-% a newer format anyway and as they all start |\U| this should be
-% reasonably safe.
-%    \begin{macrocode}
-\begingroup
-  \expandafter\ifx\csname directlua\endcsname\relax
-  \else
-    \directlua{%
-      local i
-      local t = { }
-      for _,i in pairs(tex.extraprimitives("luatex")) do
-        if string.match(i,"^U") then
-          if not string.match(i,"^Uchar$") then %$
-            table.insert(t,i)
-          end
-        end
-      end
-      tex.enableprimitives("", t)
-    }%
-  \fi
-\endgroup
-%    \end{macrocode}
-%
 % \subsection{The \tn{pdfstrcmp} primitive in \XeTeX{}}
 %
 % Only \pdfTeX{} has a primitive called \tn{pdfstrcmp}. The \XeTeX{}
@@ -222,12 +193,17 @@
 %
 % \subsection{Engine requirements}
 %
-% The code currently requires \eTeX{} and functionality equivalent to
-% \tn{pdfstrcmp}, and also driver and Unicode character support. This is
-% available in a reasonably-wide range of engines.
-%
+% The code currently requires \eTeX{}, the set of \enquote{\pdfTeX{}
+% extensions} \emph{including} \tn{expanded}, and for Unicode engines the
+% ability to generate arbitrary character tokens by expansion. That is covered
+% by all supported engines since \TeX{} Live 2019, which we therefore use
+% as a baseline for engine and \LaTeX{} format support.
 % For \LuaTeX, we require at least Lua 5.3 and the |token.set_lua| function.
-% This is available at least since \LuaTeX{} 1.10.
+% This is available at least since \LuaTeX{} 1.10, which again is the one
+% in \TeX{} Live 2019. (u)p\TeX{} only gained \tn{ifincsname} for \TeX{}
+% Live 2020, but at present that primitive is unused in \pkg{expl3} so for
+% the present it's not tested. If and when that changes, we will need to
+% revisit the code here.
 %    \begin{macrocode}
 \begingroup
   \def\next{\endgroup}%
@@ -234,27 +210,23 @@
   \def\ShortText{Required primitives not found}%
   \def\LongText%
     {%
-      The L3 programming layer requires the e-TeX primitives and additional
-      \LineBreak functionality as described in the README file.
+      The L3 programming layer requires the e-TeX primitives and the
+      \LineBreak 'pdfTeX extensions'  as described in the README file.
       \LineBreak
       These are available in the engines\LineBreak
-      - pdfTeX v1.40.0\LineBreak
-      - XeTeX v0.99992\LineBreak
+      - pdfTeX v1.40.20\LineBreak
+      - XeTeX v0.999991\LineBreak
       - LuaTeX v1.10\LineBreak
-      - e-(u)pTeX mid-2012\LineBreak
+      - e-(u)pTeX v3.8.2\LineBreak
       - Prote (2021)\LineBreak
       or later.\LineBreak
       \LineBreak
     }%
   \ifnum0%
-    \expandafter\ifx\csname expanded\endcsname\relax
-      \expandafter\ifx\csname pdfstrcmp\endcsname\relax\else 1\fi
+    \expandafter\ifx\csname luatexversion\endcsname\relax
+      \expandafter\ifx\csname expanded\endcsname\relax\else 1\fi
     \else
-      \expandafter\ifx\csname luatexversion\endcsname\relax
-        1%
-      \else
-        \ifnum\luatexversion<110 \else 1\fi
-      \fi
+      \ifnum\luatexversion<110 \else 1\fi
     \fi
     =0 %
       \newlinechar`\^^J %
@@ -282,44 +254,6 @@
 \next
 %    \end{macrocode}
 %
-% \subsection{Extending allocators}
-%
-% The ability to extend \TeX{}'s allocation routine to allow for \eTeX{} has
-% been around since 1997 in the \pkg{etex} package.
-% Loading this support is delayed until here as we are now sure that the
-% \eTeX{} extensions and \tn{pdfstrcmp} or equivalent are available. Thus
-% there is no danger of an \enquote{uncontrolled} error if the engine
-% requirements are not met.
-%
-% For \LaTeXe{} we need to make sure that the extended pool is being used:
-% \pkg{expl3} uses a lot of registers. For formats from 2015 onward there is
-% nothing to do as this is automatic. For older formats, the \pkg{etex}
-% package needs to be loaded to do the job. In that case, some inserts are
-% reserved also as these have to be from the standard pool. Note that
-% \tn{reserveinserts} is \tn{outer} and so is accessed here by csname. In
-% earlier versions, loading \pkg{etex} was done directly and so
-% \tn{reserveinserts} appeared in the code: this then required a \tn{relax}
-% after \tn{RequirePackage} to prevent an error with \enquote{unsafe}
-% definitions as seen for example with \pkg{capoptions}. The optional loading
-% here is done using a group and \tn{ifx} test as we are not quite in the
-% position to have a single name for \tn{pdfstrcmp} just yet.
-%    \begin{macrocode}
-\begingroup
-  \def\@tempa{LaTeX2e}%
-  \def\next{}%
-  \ifx\fmtname\@tempa
-    \expandafter\ifx\csname extrafloats\endcsname\relax
-      \def\next
-        {%
-          \RequirePackage{etex}%
-          \csname reserveinserts\endcsname{32}%
-        }%
-    \fi
-  \fi
-\expandafter\endgroup
-\next
-%    \end{macrocode}
-%
 % \subsection{The \LaTeX3 code environment}
 %
 % The code environment is now set up.

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -85,7 +85,7 @@
 %    require you to do updates, if the class changes.}}
 %
 % \author{\Team}
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -1043,18 +1043,10 @@
 % \end{macro}
 %
 % \begin{macro}[EXP]{\::e}
-%   With the \tn{expanded} primitive available, just expand.  Otherwise
-%   defer to \cs{exp_args:Ne} implemented later.
+%   With the \tn{expanded} primitive available, just expand.
 %    \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \::e #1 \::: #2#3
-      { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } }
-  }
-  {
-    \cs_new:Npn \::e #1 \::: #2#3
-      { \exp_args:Ne \@@_arg_next:nnn {#3} {#1} {#2} }
-  }
+\cs_new:Npn \::e #1 \::: #2#3
+  { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1242,21 +1234,10 @@
 % \end{macro}
 %
 % \begin{macro}[EXP]{\exp_args:Ne}
-%   When the \tn{expanded} primitive is available, use it.  Otherwise
-%   use \cs{@@_e:nn}, defined later, to fully expand tokens.
+%   When the \tn{expanded} primitive is available, use it.
 %    \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \exp_args:Ne #1#2
-      { \exp_after:wN #1 \tex_expanded:D { {#2} } }
-  }
-  {
-    \cs_new:Npn \exp_args:Ne #1#2
-      {
-        \exp_after:wN #1 \exp_after:wN
-          { \exp:w \@@_e:nn {#2} { } }
-      }
-  }
+\cs_new:Npn \exp_args:Ne #1#2
+  { \exp_after:wN #1 \tex_expanded:D { {#2} } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1300,16 +1281,12 @@
     \exp_after:wN #2
     \exp_after:wN { \exp:w \@@_eval_register:c {#3} }
   }
-\cs_if_exist:NTF \tex_expanded:D
+\cs_new:Npn \exp_args:NNe #1#2#3
   {
-    \cs_new:Npn \exp_args:NNe #1#2#3
-      {
-        \exp_after:wN #1
-        \exp_after:wN #2
-        \tex_expanded:D { {#3} }
-      }
+    \exp_after:wN #1
+    \exp_after:wN #2
+    \tex_expanded:D { {#3} }
   }
-  { \cs_new:Npn \exp_args:NNe { \::N \::e \::: } }
 \cs_new:Npn \exp_args:NNf #1#2#3
   {
     \exp_after:wN #1
@@ -1428,15 +1405,8 @@
     \exp_after:wN \@@_arg_last_unbraced:nn
       \exp_after:wN { \exp:w \@@_eval_register:c {#2} } {#1}
   }
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \::e_unbraced \::: #1#2
-      { \tex_expanded:D { \exp_not:n {#1} #2 } }
-  }
-  {
-    \cs_new:Npn \::e_unbraced \::: #1#2
-      { \exp:w \@@_e:nn {#2} {#1} }
-  }
+\cs_new:Npn \::e_unbraced \::: #1#2
+  { \tex_expanded:D { \exp_not:n {#1} #2 } }
 \cs_new:Npn \::f_unbraced \::: #1#2
   {
     \exp_after:wN \@@_arg_last_unbraced:nn
@@ -1487,12 +1457,8 @@
   { \exp_after:wN #1 \exp:w \@@_eval_register:N #2 }
 \cs_new:Npn \exp_last_unbraced:Nv #1#2
   { \exp_after:wN #1 \exp:w \@@_eval_register:c {#2} }
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \exp_last_unbraced:Ne #1#2
-      { \exp_after:wN #1 \tex_expanded:D {#2} }
-  }
-  { \cs_new:Npn \exp_last_unbraced:Ne { \::e_unbraced \::: } }
+\cs_new:Npn \exp_last_unbraced:Ne #1#2
+  { \exp_after:wN #1 \tex_expanded:D {#2} }
 \cs_new:Npn \exp_last_unbraced:Nf #1#2
   { \exp_after:wN #1 \exp:w \exp_end_continue_f:w #2 }
 \cs_new:Npn \exp_last_unbraced:NNo #1#2#3
@@ -1591,15 +1557,8 @@
 %    \begin{macrocode}
 \cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: }
 \cs_new:Npn \exp_not:o #1 { \__kernel_exp_not:w \exp_after:wN {#1} }
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \exp_not:e #1
-      { \__kernel_exp_not:w \tex_expanded:D { {#1} } }
-  }
-  {
-    \cs_new:Npn \exp_not:e
-      { \__kernel_exp_not:w \exp_args:Ne \prg_do_nothing: }
-  }
+\cs_new:Npn \exp_not:e #1
+  { \__kernel_exp_not:w \tex_expanded:D { {#1} } }
 \cs_new:Npn \exp_not:f #1
   { \__kernel_exp_not:w \exp_after:wN { \exp:w \exp_end_continue_f:w #1 } }
 \cs_new:Npn \exp_not:V #1
@@ -1685,475 +1644,6 @@
 % \end{macro}
 % \end{macro}
 %
-%
-% \subsection{Emulating \texttt{e}-type expansion}
-%
-% When the \tn{expanded} primitive is available it is used to implement
-% \texttt{e}-type expansion; otherwise we emulate it.
-%
-%    \begin{macrocode}
-\cs_if_exist:NF \tex_expanded:D
-  {
-%    \end{macrocode}
-%
-% \begin{macro}[EXP]{\@@_e:nn, \@@_e_end:nn}
-%   Repeatedly expand tokens, keeping track of fully-expanded tokens in
-%   the second argument to \cs{@@_e:nn}; this function eventually
-%   calls \cs{@@_e_end:nn} to leave \cs{exp_end:} in the input
-%   stream, followed by the result of the expansion.  There are many
-%   special cases: spaces, brace groups, \tn{noexpand}, \tn{unexpanded},
-%   \tn{the}, \tn{primitive}.
-%   While we use brace tricks \cs{if_false:} |{| \cs{fi:}, the expansion
-%   of this function is always triggered by \cs{exp:w} so brace balance
-%   is eventually restored after that is hit with a single step of
-%   expansion.  Otherwise we could not nest \texttt{e}-type expansions
-%   within each other.
-%    \begin{macrocode}
-    \cs_new:Npn \@@_e:nn #1
-      {
-        \if_false: { \fi:
-          \tl_if_head_is_N_type:nTF {#1}
-            { \@@_e:N }
-            {
-              \tl_if_head_is_group:nTF {#1}
-                { \@@_e_group:n }
-                {
-                  \tl_if_empty:nTF {#1}
-                    { \exp_after:wN \@@_e_end:nn }
-                    { \exp_after:wN \@@_e_space:nn }
-                  \exp_after:wN { \if_false: } \fi:
-                }
-            }
-          #1
-        }
-      }
-    \cs_new:Npn \@@_e_end:nn #1#2 { \exp_end: #2 }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_space:nn}
-%   For an explicit space character, remove it by \texttt{f}-expansion
-%   and put it in the (future) output.
-%    \begin{macrocode}
-    \cs_new:Npn \@@_e_space:nn #1#2
-      { \exp_args:Nf \@@_e:nn {#1} { #2 ~ } }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_group:n, \@@_e_put:nn, \@@_e_put:nnn}
-%   For a group, expand its contents, wrap it in two pairs of braces,
-%   and call \cs{@@_e_put:nn}.  This function places the first item (the
-%   double-brace wrapped result) into the output.  Importantly,
-%   \cs{tl_head:n} works even if the input contains quarks.
-%    \begin{macrocode}
-    \cs_new:Npn \@@_e_group:n #1
-      {
-        \exp_after:wN \@@_e_put:nn
-        \exp_after:wN { \exp_after:wN { \exp_after:wN {
-              \exp:w \if_false: } \fi: \@@_e:nn {#1} { } } }
-      }
-    \cs_new:Npn \@@_e_put:nn #1
-      {
-        \exp_args:NNo \exp_args:No \@@_e_put:nnn
-          { \tl_head:n {#1} } {#1}
-      }
-    \cs_new:Npn \@@_e_put:nnn #1#2#3
-      { \exp_args:No \@@_e:nn { \use_none:n #2 } { #3 #1 } }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]
-%   {\@@_e:N, \@@_e:Nnn, \@@_e_protected:Nnn, \@@_e_expandable:Nnn}
-%   For an \texttt{N}-type token, call \cs{@@_e:Nnn} with arguments the
-%   \meta{first token}, the remaining tokens to expand and what's
-%   already been expanded.  If the \meta{first token} is non-expandable,
-%   including \tn{protected} (\tn{long} or not) macros, it is put in the
-%   result by \cs{@@_e_protected:Nnn}.  The four special primitives
-%   \tn{unexpanded}, \tn{noexpand}, \tn{the}, \tn{primitive} are
-%   detected; otherwise the token is expanded by
-%   \cs{@@_e_expandable:Nnn}.
-%    \begin{macrocode}
-    \cs_new:Npn \@@_e:N #1
-      {
-        \exp_after:wN \@@_e:Nnn
-        \exp_after:wN #1
-        \exp_after:wN { \if_false: } \fi:
-      }
-    \cs_new:Npn \@@_e:Nnn #1
-      {
-        \if_case:w
-          \exp_after:wN \if_meaning:w \exp_not:N #1 #1 1 ~ \fi:
-          \token_if_protected_macro:NT #1 { 1 ~ }
-          \token_if_protected_long_macro:NT #1 { 1 ~ }
-          \if_meaning:w \exp_not:n #1 2 ~ \fi:
-          \if_meaning:w \exp_not:N #1 3 ~ \fi:
-          \if_meaning:w \tex_the:D #1 4 ~ \fi:
-          \if_meaning:w \tex_primitive:D #1 5 ~ \fi:
-          0 ~
-          \exp_after:wN \@@_e_expandable:Nnn
-        \or: \exp_after:wN \@@_e_protected:Nnn
-        \or: \exp_after:wN \@@_e_unexpanded:Nnn
-        \or: \exp_after:wN \@@_e_noexpand:Nnn
-        \or: \exp_after:wN \@@_e_the:Nnn
-        \or: \exp_after:wN \@@_e_primitive:Nnn
-        \fi:
-        #1
-      }
-    \cs_new:Npn \@@_e_protected:Nnn #1#2#3
-      { \@@_e:nn {#2} { #3 #1 } }
-    \cs_new:Npn \@@_e_expandable:Nnn #1#2
-      { \exp_args:No \@@_e:nn { #1 #2 } }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]
-%   {
-%     \@@_e_primitive:Nnn,
-%     \@@_e_primitive_aux:NNw,
-%     \@@_e_primitive_aux:NNnn,
-%     \@@_e_primitive_other:NNnn,
-%     \@@_e_primitive_other_aux:nNNnn
-%   }
-%   We don't try hard to make sensible error recovery since the error
-%   recovery of \cs{tex_primitive:D} when followed by something else
-%   than a primitive depends on the engine.  The only valid case is when
-%   what follows is \texttt{N}-type.  Then distinguish special
-%   primitives \tn{unexpanded}, \tn{noexpand}, \tn{the}, \tn{primitive}
-%   from other primitives.  In the \enquote{other} case, the only
-%   reasonable way to check if the primitive that follows
-%   \cs{tex_primitive:D} is expandable is to expand and compare the
-%   before-expansion and after-expansion results.  If they coincide then
-%   probably the primitive is non-expandable and should be put in the
-%   output together with \cs{tex_primitive:D} (one can cook up contrived
-%   counter-examples where the true \tn{expanded} would have an infinite
-%   loop), and otherwise one should continue expanding.
-%    \begin{macrocode}
-    \cs_new:Npn \@@_e_primitive:Nnn #1#2
-      {
-        \if_false: { \fi:
-          \tl_if_head_is_N_type:nTF {#2}
-            { \@@_e_primitive_aux:NNw #1 }
-            {
-              \msg_expandable_error:nnn { kernel } { e-type }
-                { Missing~primitive~name }
-              \@@_e_primitive_aux:NNw #1 \c_empty_tl
-            }
-          #2
-        }
-      }
-    \cs_new:Npn \@@_e_primitive_aux:NNw #1#2
-      {
-        \exp_after:wN \@@_e_primitive_aux:NNnn
-        \exp_after:wN #1
-        \exp_after:wN #2
-        \exp_after:wN { \if_false: } \fi:
-      }
-    \cs_new:Npn \@@_e_primitive_aux:NNnn #1#2
-      {
-        \exp_args:Nf \str_case_e:nnTF { \cs_to_str:N #2 }
-          {
-            { unexpanded } { \@@_e_unexpanded:Nnn \exp_not:n }
-            { noexpand } { \@@_e_noexpand:Nnn \exp_not:N }
-            { the } { \@@_e_the:Nnn \tex_the:D }
-            {
-              \sys_if_engine_xetex:T { pdf }
-              \sys_if_engine_luatex:T { pdf }
-              primitive
-            } { \@@_e_primitive:Nnn #1 }
-          }
-          { \@@_e_primitive_other:NNnn #1 #2 }
-      }
-    \cs_new:Npn \@@_e_primitive_other:NNnn #1#2#3
-      {
-        \exp_args:No \@@_e_primitive_other_aux:nNNnn
-          { #1 #2 #3 }
-          #1 #2 {#3}
-      }
-    \cs_new:Npn \@@_e_primitive_other_aux:nNNnn #1#2#3#4#5
-      {
-        \str_if_eq:nnTF {#1} { #2 #3 #4 }
-          { \@@_e:nn {#4} { #5 #2 #3 } }
-          { \@@_e:nn {#1} {#5} }
-      }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_noexpand:Nnn}
-%   The \tn{noexpand} primitive has no effect when followed by a token
-%   that is not \texttt{N}-type; otherwise \cs{@@_e_put:nn} can grab the
-%   next token and put it in the result unchanged.
-%    \begin{macrocode}
-    \cs_new:Npn \@@_e_noexpand:Nnn #1#2
-      {
-        \tl_if_head_is_N_type:nTF {#2}
-          { \@@_e_put:nn } { \@@_e:nn } {#2}
-      }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]
-%   {
-%     \@@_e_unexpanded:Nnn, \@@_e_unexpanded:nn,
-%     \@@_e_unexpanded:nN, \@@_e_unexpanded:N
-%   }
-%   The \tn{unexpanded} primitive expands and ignores any space,
-%   \cs{scan_stop:}, or token affected by \cs{exp_not:N}, then expects a
-%   brace group.  Since we only support brace-balanced token lists it is
-%   impossible to support the case where the argument of \tn{unexpanded}
-%   starts with an implicit brace.  Even though we want to expand and
-%   ignore spaces we cannot blindly \texttt{f}-expand because tokens
-%   affected by \cs{exp_not:N} should discarded without being expanded
-%   further.
-%
-%   As usual distinguish four cases: brace group (the normal case, where
-%   we just put the item in the result), space (just \texttt{f}-expand
-%   to remove the space), empty (an error), or \texttt{N}-type
-%   \meta{token}.  In the last case call \cs{@@_e_unexpanded:nN}
-%   triggered by an \texttt{f}-expansion.  Having a non-expandable
-%   \meta{token} after \tn{unexpanded} is an error (we recover by
-%   passing |{}| to \tn{unexpanded}; this is different from \TeX{}
-%   because the error recovery of \tn{unexpanded} changes the balance of
-%   braces), unless that \meta{token} is \cs{scan_stop:} or a space
-%   (recall that we don't implement the case of an implicit begin-group
-%   token).  An expandable \meta{token} is instead expanded, unless it
-%   is \tn{noexpand}.  The latter primitive can be followed by an expandable
-%   \texttt{N}-type token (removed), by a non-expandable one (kept
-%   and later causing an error), by a space (removed by
-%   \texttt{f}-expansion), or by a brace group or nothing (later causing
-%   an error).
-%    \begin{macrocode}
-    \cs_new:Npn \@@_e_unexpanded:Nnn #1 { \@@_e_unexpanded:nn }
-    \cs_new:Npn \@@_e_unexpanded:nn #1
-      {
-        \tl_if_head_is_N_type:nTF {#1}
-          {
-            \exp_args:Nf \@@_e_unexpanded:nn
-              { \@@_e_unexpanded:nN {#1} #1 }
-          }
-          {
-            \tl_if_head_is_group:nTF {#1}
-              { \@@_e_put:nn }
-              {
-                \tl_if_empty:nTF {#1}
-                  {
-                    \msg_expandable_error:nnn
-                      { kernel } { e-type }
-                      { \unexpanded missing~brace }
-                    \@@_e_end:nn
-                  }
-                  { \exp_args:Nf \@@_e_unexpanded:nn }
-              }
-            {#1}
-          }
-      }
-    \cs_new:Npn \@@_e_unexpanded:nN #1#2
-      {
-        \exp_after:wN \if_meaning:w \exp_not:N #2 #2
-          \exp_after:wN \use_i:nn
-        \else:
-          \exp_after:wN \use_ii:nn
-        \fi:
-        {
-          \token_if_eq_catcode:NNTF #2 \c_space_token
-            { \exp_stop_f: }
-            {
-              \token_if_eq_meaning:NNTF #2 \scan_stop:
-                { \exp_stop_f: }
-                {
-                  \msg_expandable_error:nnn
-                    { kernel } { e-type }
-                    { \unexpanded missing~brace }
-                  { }
-                }
-            }
-        }
-        {
-          \token_if_eq_meaning:NNTF #2 \exp_not:N
-            {
-              \exp_args:No \tl_if_head_is_N_type:nT { \use_none:n #1 }
-                { \@@_e_unexpanded:N }
-            }
-            { \exp_after:wN \exp_stop_f: #2 }
-        }
-      }
-    \cs_new:Npn \@@_e_unexpanded:N #1
-      {
-        \exp_after:wN \if_meaning:w \exp_not:N #1 #1 \else:
-          \exp_after:wN \use_i:nn
-        \fi:
-        \exp_stop_f: #1
-      }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_the:Nnn, \@@_e_the:N, \@@_e_the_toks_reg:N}
-%   Finally implement \tn{the}.  Followed by anything other than an
-%   \texttt{N}-type \meta{token} this causes an error (we just let
-%   \TeX{} make one), otherwise we test the \meta{token}.  If the
-%   \meta{token} is expandable, expand it.  Otherwise it could be any
-%   kind of register, or things like \tn{numexpr}, so there is no way to
-%   deal with all cases.  Thankfully, only \tn{toks} data needs to be
-%   protected from expansion since everything else gives a string of
-%   characters.  If the \meta{token} is \tn{toks} we find a number and
-%   unpack using the |the_toks| functions.  If it is a token register we
-%   unpack it in a brace group and call \cs{@@_e_put:nn} to move it to
-%   the result.  Otherwise we unpack and continue expanding (useless but
-%   safe) since it is basically impossible to have a handle on where the
-%   result of \tn{the} ends.
-%    \begin{macrocode}
-    \cs_new:Npn \@@_e_the:Nnn #1#2
-      {
-        \tl_if_head_is_N_type:nTF {#2}
-          { \if_false: { \fi: \@@_e_the:N #2 } }
-          { \exp_args:No \@@_e:nn { \tex_the:D #2 } }
-      }
-    \cs_new:Npn \@@_e_the:N #1
-      {
-        \exp_after:wN \if_meaning:w \exp_not:N #1 #1
-          \exp_after:wN \use_i:nn
-        \else:
-          \exp_after:wN \use_ii:nn
-        \fi:
-        {
-          \if_meaning:w \tex_toks:D #1
-            \exp_after:wN \@@_e_the_toks:wnn \int_value:w
-            \exp_after:wN \@@_e_the_toks:n
-            \exp_after:wN { \int_value:w \if_false: } \fi:
-          \else:
-            \@@_e_if_toks_register:NTF #1
-              { \exp_after:wN \@@_e_the_toks_reg:N }
-              {
-                \exp_after:wN \@@_e:nn \exp_after:wN {
-                  \tex_the:D \if_false: } \fi:
-              }
-            \exp_after:wN #1
-          \fi:
-        }
-        {
-          \exp_after:wN \@@_e_the:Nnn \exp_after:wN ?
-          \exp_after:wN { \exp:w \if_false: } \fi:
-          \exp_after:wN \exp_end: #1
-        }
-      }
-    \cs_new:Npn \@@_e_the_toks_reg:N #1
-      {
-        \exp_after:wN \@@_e_put:nn \exp_after:wN {
-          \exp_after:wN {
-            \tex_the:D \if_false: } \fi: #1 }
-      }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_the_toks:wnn, \@@_e_the_toks:n, \@@_e_the_toks:N}
-%   The calling function has applied \cs{int_value:w} so we collect
-%   digits with \cs{@@_e_the_toks:n} (which gets the token list as an
-%   argument) and \cs{@@_e_the_toks:N} (which gets the first token in
-%   case it is \texttt{N}-type).  The digits are themselves collected
-%   into an \cs{int_value:w} argument to \cs{@@_e_the_toks:wnn}.  Then
-%   that function unpacks the \tn{toks}\meta{number} into the result.
-%   We include |?| because \cs{@@_e_put:nnn} removes one item from its
-%   second argument.  Note that our approach is rather crude: in cases
-%   like |\the\toks12~34| the first \cs{int_value:w} removes the space
-%   and we will incorrectly unpack the |\the\toks1234|.
-%    \begin{macrocode}
-    \cs_new:Npn \@@_e_the_toks:wnn #1; #2
-      {
-        \exp_args:No \@@_e_put:nnn
-          { \tex_the:D \tex_toks:D #1 } { ? #2 }
-      }
-    \cs_new:Npn \@@_e_the_toks:n #1
-      {
-        \tl_if_head_is_N_type:nTF {#1}
-          { \exp_after:wN \@@_e_the_toks:N \if_false: { \fi: #1 } }
-          { ; {#1} }
-      }
-    \cs_new:Npn \@@_e_the_toks:N #1
-      {
-        \if_int_compare:w 10 < 9 \token_to_str:N #1 \exp_stop_f:
-          \exp_after:wN \use_i:nn
-        \else:
-          \exp_after:wN \use_ii:nn
-        \fi:
-        {
-          #1
-          \exp_after:wN \@@_e_the_toks:n
-          \exp_after:wN { \if_false: } \fi:
-        }
-        {
-          \exp_after:wN ;
-          \exp_after:wN { \if_false: } \fi: #1
-        }
-      }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_if_toks_register:NTF}
-% \begin{macro}[EXP]
-%   {
-%     \@@_e_the_XeTeXinterchartoks:,
-%     \@@_e_the_errhelp:,
-%     \@@_e_the_everycr:,
-%     \@@_e_the_everydisplay:,
-%     \@@_e_the_everyeof:,
-%     \@@_e_the_everyhbox:,
-%     \@@_e_the_everyjob:,
-%     \@@_e_the_everymath:,
-%     \@@_e_the_everypar:,
-%     \@@_e_the_everyvbox:,
-%     \@@_e_the_output:,
-%     \@@_e_the_pdfpageattr:,
-%     \@@_e_the_pdfpageresources:,
-%     \@@_e_the_pdfpagesattr:,
-%     \@@_e_the_pdfpkmode:
-%   }
-%   We need to detect both \tn{toks} registers like \tn{toks@} in
-%   \LaTeXe{} and parameters such as \tn{everypar}, as the result of
-%   unpacking the register should not expand further.  Registers are
-%   found by \cs{token_if_toks_register:NTF} by inspecting the meaning.
-%   The list of parameters is finite so we just use a
-%   \cs{cs_if_exist:cTF} test to look up in a table.  We abuse
-%   \cs{cs_to_str:N}'s ability to remove a leading escape character
-%   whatever it is.
-%    \begin{macrocode}
-    \prg_new_conditional:Npnn \@@_e_if_toks_register:N #1 { TF }
-      {
-        \token_if_toks_register:NTF #1 { \prg_return_true: }
-          {
-            \cs_if_exist:cTF
-              {
-                @@_e_the_
-                \exp_after:wN \cs_to_str:N
-                \token_to_meaning:N #1
-                :
-              } { \prg_return_true: } { \prg_return_false: }
-          }
-      }
-    \cs_new_eq:NN \@@_e_the_XeTeXinterchartoks: ?
-    \cs_new_eq:NN \@@_e_the_errhelp: ?
-    \cs_new_eq:NN \@@_e_the_everycr: ?
-    \cs_new_eq:NN \@@_e_the_everydisplay: ?
-    \cs_new_eq:NN \@@_e_the_everyeof: ?
-    \cs_new_eq:NN \@@_e_the_everyhbox: ?
-    \cs_new_eq:NN \@@_e_the_everyjob: ?
-    \cs_new_eq:NN \@@_e_the_everymath: ?
-    \cs_new_eq:NN \@@_e_the_everypar: ?
-    \cs_new_eq:NN \@@_e_the_everyvbox: ?
-    \cs_new_eq:NN \@@_e_the_output: ?
-    \cs_new_eq:NN \@@_e_the_pdfpageattr: ?
-    \cs_new_eq:NN \@@_e_the_pdfpageresources: ?
-    \cs_new_eq:NN \@@_e_the_pdfpagesattr: ?
-    \cs_new_eq:NN \@@_e_the_pdfpkmode: ?
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% We are done emulating \texttt{e}-type argument expansion when
-% \tn{expanded} is unavailable.
-%    \begin{macrocode}
-  }
-%    \end{macrocode}
-%
-%
 % \subsection{Defining function variants}
 %
 %    \begin{macrocode}
@@ -2638,22 +2128,8 @@
       }
     \cs_new_protected:Npn \@@_generate_internal_test_aux:w
         ##1 #1 ##2 \s_@@_mark ##3 ##4 \s_@@_stop {##3}
-    \cs_if_exist:NTF \tex_expanded:D
-      {
-        \cs_new_eq:NN \@@_generate_internal_test:Nw
-          \@@_generate_internal_test_aux:w
-      }
-      {
-        \cs_new_protected:Npn \@@_generate_internal_test:Nw ##1
-          {
-            \if_meaning:w \tex_expanded:D ##1
-              \exp_after:wN \@@_generate_internal_test_aux:w
-              \exp_after:wN #1
-            \else:
-              \exp_after:wN \@@_generate_internal_test_aux:w
-            \fi:
-          }
-      }
+    \cs_new_eq:NN \@@_generate_internal_test:Nw
+      \@@_generate_internal_test_aux:w
   }
 \exp_args:No \@@_tmp:w { \token_to_str:N p }
 \cs_new_protected:Npn \@@_generate_internal_one_go:NNn #1#2#3

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -2817,7 +2817,7 @@
 %
 % \begin{macro}[EXP]{\file_full_name:n, \@@_full_name:n, \@@_full_name_aux:n}
 % \begin{macro}[EXP]{\@@_full_name_auxi:nn, \@@_full_name_auxii:nn}
-% \begin{macro}[EXP]{\@@_full_name_aux:Nnn}
+% \begin{macro}[EXP]{\@@_full_name_aux:Nnnn}
 % \begin{macro}[EXP]{\@@_full_name_aux:nN}
 % \begin{macro}[EXP]{\@@_full_name_aux:nnN}
 % \begin{macro}[EXP]{\@@_name_cleanup:w}
@@ -2887,11 +2887,11 @@
     \tl_if_blank:nTF {#2}
       {
         \seq_map_tokens:Nn \l_file_search_path_seq
-          { \@@_full_name_aux:Nnn \seq_map_break:n {#1} }
+          { \@@_full_name_aux:Nnnn \seq_map_break:n {#1} { / } }
         \cs_if_exist:NT \input at path
           {
             \tl_map_tokens:Nn \input at path
-              { \@@_full_name_aux:Nnn \tl_map_break:n {#1} }
+              { \@@_full_name_aux:Nnnn \tl_map_break:n {#1} { } }
           }
         \@@_name_end:
       }
@@ -2901,8 +2901,8 @@
 %   Two pars to the auxiliary here so we can avoid doing quoting
 %   twice in the event we find the right file.
 %    \begin{macrocode}
-\cs_new:Npn \@@_full_name_aux:Nnn #1#2#3
-  { \exp_args:Ne \@@_full_name_aux:nN { \tl_to_str:n {#3} / #2 } #1 }
+\cs_new:Npn \@@_full_name_aux:Nnnn #1#2#3#4
+  { \exp_args:Ne \@@_full_name_aux:nN { \tl_to_str:n {#4} #3 #2 } #1 }
 \cs_new:Npn \@@_full_name_aux:nN #1
   { \exp_args:Nne \@@_full_name_aux:nnN {#1} { \@@_full_name_aux:n {#1} } }
 \cs_new:Npn \@@_full_name_aux:nnN #1 #2 #3
@@ -2958,24 +2958,6 @@
       }
   }
 %    \end{macrocode}
-%   Deal with the fact that the primitive might not be available.
-%    \begin{macrocode}
-\cs_if_exist:NF \tex_filesize:D
-  {
-    \cs_gset:Npn \file_full_name:n #1
-      {
-        \msg_expandable_error:nnn
-          { kernel } { primitive-not-available }
-          { \(pdf)filesize }
-      }
-  }
-\msg_new:nnnn { kernel } { primitive-not-available }
-  { Primitive~\token_to_str:N #1 not~available }
-  {
-    The~version~of~your~TeX~engine~does~not~provide~functionality~equivalent~to~
-    the~#1~primitive.
-  }
-%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
@@ -3014,68 +2996,12 @@
 \cs_generate_variant:Nn \file_get_full_name:nNF  { V }
 \cs_generate_variant:Nn \file_get_full_name:nNTF { V }
 %    \end{macrocode}
-%   If \cs{tex_filesize:D} is not available, the
-%   way to test if a file exists is to try to open it: if it does
-%   not exist then \TeX{} reports end-of-file. A search is made
-%   looking at each potential path in turn (starting from the current
-%   directory). The first location is of course treated as the correct
-%   one: this is done by jumping to \cs{prg_break_point:}. If nothing
-%   is found, |#2| is returned empty. A special case when there is no
-%   extension is that once the first location is found we test the
-%   existence of the file with |.tex| extension in that directory, and
-%   if it exists we include the |.tex| extension in the result.
-%    \begin{macrocode}
-\cs_if_exist:NF \tex_filesize:D
-  {
-    \prg_set_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF }
-      {
-        \__kernel_tl_set:Nx \l_@@_base_name_tl
-          { \__kernel_file_name_sanitize:n {#1} }
-        \@@_get_full_name_search:nN { } \use:n
-        \seq_map_inline:Nn \l_file_search_path_seq
-          { \@@_get_full_name_search:nN { ##1 / } \seq_map_break:n }
-        \cs_if_exist:NT \input at path
-          {
-            \tl_map_inline:Nn \input at path
-              { \@@_get_full_name_search:nN { ##1 } \tl_map_break:n }
-          }
-        \tl_set:Nn \l_@@_full_name_tl { \q_no_value }
-        \prg_break_point:
-        \quark_if_no_value:NTF \l_@@_full_name_tl
-          {
-            \ior_close:N \g_@@_internal_ior
-            \prg_return_false:
-          }
-          {
-            \file_parse_full_name:VNNN \l_@@_full_name_tl
-              \l_@@_dir_str \l_@@_name_str \l_@@_ext_str
-            \str_if_empty:NT \l_@@_ext_str
-              {
-                \__kernel_ior_open:No \g_@@_internal_ior
-                  { \l_@@_full_name_tl .tex }
-                \ior_if_eof:NF \g_@@_internal_ior
-                   { \tl_put_right:Nn \l_@@_full_name_tl { .tex } }
-              }
-            \ior_close:N \g_@@_internal_ior
-            \tl_set_eq:NN #2 \l_@@_full_name_tl
-            \prg_return_true:
-          }
-      }
-  }
-\cs_new_protected:Npn \@@_get_full_name_search:nN #1#2
-  {
-    \__kernel_tl_set:Nx \l_@@_full_name_tl
-      { \tl_to_str:n {#1} \l_@@_base_name_tl }
-    \__kernel_ior_open:No \g_@@_internal_ior \l_@@_full_name_tl
-    \ior_if_eof:NF \g_@@_internal_ior { #2 { \prg_break: } }
-  }
-%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
+%
 % \begin{variable}{\g_@@_internal_ior}
-%   A reserved stream to test for file existence (if required), and for
-%   opening a shell.
+%   A reserved stream to test for opening a shell.
 %    \begin{macrocode}
 \ior_new:N \g_@@_internal_ior
 %    \end{macrocode}
@@ -3226,30 +3152,6 @@
       { \prg_return_true: }
   }
 %    \end{macrocode}
-%   Where the primitive is not available, issue an error: this is a little
-%   more conservative than absolutely needed, but does work.
-%    \begin{macrocode}
-\cs_if_exist:NF \tex_filesize:D
-  {
-    \cs_set_protected:Npn \@@_get_details:nnN #1#2#3
-       {
-        \tl_clear:N #3
-        \msg_error:nnx
-          { kernel } { primitive-not-available }
-          {
-            \token_to_str:N \(pdf)file
-            \str_case:nn {#2}
-              {
-                { hex_dump } { dump }
-                { mdfive_hash } { mdfivesum }
-                { timestamp } { moddate }
-                { size } { size }
-              }
-          }
-        \prg_return_false:
-      }
-  }
-%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
@@ -3328,17 +3230,6 @@
       }
   }
 \cs_new_eq:NN \@@_timestamp:n \tex_filemoddate:D
-\cs_if_exist:NF \@@_timestamp:n
-  {
-    \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
-      { p , T , F , TF }
-      {
-        \msg_expandable_error:nnn
-          { kernel } { primitive-not-available }
-          { \(pdf)filemoddate }
-        \prg_return_false:
-      }
-  }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -1113,28 +1113,16 @@
 %   The use of \cs{s_@@_mark} here prevents loss of braces from the key
 %   argument.
 %    \begin{macrocode}
-      \cs_if_exist:NTF \tex_expanded:D
+      \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
         {
-          \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
+          \__kernel_exp_not:w \tex_expanded:D
             {
-              \__kernel_exp_not:w \tex_expanded:D
-                {
-                  {
-                    \@@_loop_active:nnw {##1} {##2}
-                      \s_@@_mark ##3 #1 \s_@@_tail #1
-                  }
-                }
+              {
+                \@@_loop_active:nnw {##1} {##2}
+                  \s_@@_mark ##3 #1 \s_@@_tail #1
+              }
             }
         }
-        {
-          \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
-            {
-              \group_align_safe_begin:
-              \@@_loop_active:nnw {##1} {##2}
-                \s_@@_mark ##3 #1 \s_@@_tail #1
-              \group_align_safe_end:
-            }
-        }
       \cs_new_eq:NN \keyval_parse:NNn \keyval_parse:nnn
 %    \end{macrocode}
 % \end{macro}
@@ -1415,9 +1403,7 @@
           \@@_loop_other:nnw {##2}
         }
     }
-  \cs_if_exist:NTF \tex_expanded:D
-    { \@@_tmp:w { } { } }
-    { \@@_tmp:w \group_align_safe_end: \group_align_safe_begin: }
+  \@@_tmp:w { } { }
 \group_end:
 %    \end{macrocode}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -2077,11 +2077,6 @@
   { Relation~'#1'~not~among~=,<,>,==,!=,<=,>=. }
 \msg_new:nnn { kernel } { zero-step }
   { Zero~step~size~for~function~#1. }
-\cs_if_exist:NF \tex_expanded:D
-  {
-    \msg_new:nnn { kernel } { e-type }
-      { #1 ~ in~e-type~argument }
-  }
 %    \end{macrocode}
 %
 % Messages used by the \enquote{\texttt{show}} functions.

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -1333,72 +1333,6 @@
   \tex_fi:D
 \tex_fi:D
 %    \end{macrocode}
-% That is also true for the \LuaTeX{} primitives under \LaTeXe{}
-% (depending on the format-building date). There are a few primitives
-% that get the right names anyway so are missing here!
-%    \begin{macrocode}
-\tex_ifdefined:D \luatexsuppressfontnotfounderror
-  \tex_let:D \tex_alignmark:D           \luatexalignmark
-  \tex_let:D \tex_aligntab:D            \luatexaligntab
-  \tex_let:D \tex_attribute:D           \luatexattribute
-  \tex_let:D \tex_attributedef:D        \luatexattributedef
-  \tex_let:D \tex_catcodetable:D        \luatexcatcodetable
-  \tex_let:D \tex_clearmarks:D          \luatexclearmarks
-  \tex_let:D \tex_crampeddisplaystyle:D \luatexcrampeddisplaystyle
-  \tex_let:D \tex_crampedscriptscriptstyle:D
-    \luatexcrampedscriptscriptstyle
-  \tex_let:D \tex_crampedscriptstyle:D  \luatexcrampedscriptstyle
-  \tex_let:D \tex_crampedtextstyle:D    \luatexcrampedtextstyle
-  \tex_let:D \tex_fontid:D              \luatexfontid
-  \tex_let:D \tex_formatname:D          \luatexformatname
-  \tex_let:D \tex_gleaders:D            \luatexgleaders
-  \tex_let:D \tex_initcatcodetable:D    \luatexinitcatcodetable
-  \tex_let:D \tex_latelua:D             \luatexlatelua
-  \tex_let:D \tex_luaescapestring:D     \luatexluaescapestring
-  \tex_let:D \tex_luafunction:D         \luatexluafunction
-  \tex_let:D \tex_mathstyle:D           \luatexmathstyle
-  \tex_let:D \tex_nokerns:D             \luatexnokerns
-  \tex_let:D \tex_noligs:D              \luatexnoligs
-  \tex_let:D \tex_outputbox:D           \luatexoutputbox
-  \tex_let:D \tex_pageleftoffset:D      \luatexpageleftoffset
-  \tex_let:D \tex_pagetopoffset:D       \luatexpagetopoffset
-  \tex_let:D \tex_postexhyphenchar:D    \luatexpostexhyphenchar
-  \tex_let:D \tex_posthyphenchar:D      \luatexposthyphenchar
-  \tex_let:D \tex_preexhyphenchar:D     \luatexpreexhyphenchar
-  \tex_let:D \tex_prehyphenchar:D       \luatexprehyphenchar
-  \tex_let:D \tex_savecatcodetable:D    \luatexsavecatcodetable
-  \tex_let:D \tex_scantextokens:D       \luatexscantextokens
-  \tex_let:D \tex_suppressifcsnameerror:D
-    \luatexsuppressifcsnameerror
-  \tex_let:D \tex_suppresslongerror:D   \luatexsuppresslongerror
-  \tex_let:D \tex_suppressmathparerror:D
-    \luatexsuppressmathparerror
-  \tex_let:D \tex_suppressoutererror:D  \luatexsuppressoutererror
-  \tex_let:D \tex_Uchar:D                  \luatexUchar
-  \tex_let:D \tex_suppressfontnotfounderror:D
-    \luatexsuppressfontnotfounderror
-%    \end{macrocode}
-% Which also covers those slightly odd ones.
-%    \begin{macrocode}
-  \tex_let:D \tex_bodydir:D             \luatexbodydir
-  \tex_let:D \tex_boxdir:D              \luatexboxdir
-  \tex_let:D \tex_leftghost:D           \luatexleftghost
-  \tex_let:D \tex_localbrokenpenalty:D  \luatexlocalbrokenpenalty
-  \tex_let:D \tex_localinterlinepenalty:D
-    \luatexlocalinterlinepenalty
-  \tex_let:D \tex_localleftbox:D        \luatexlocalleftbox
-  \tex_let:D \tex_localrightbox:D       \luatexlocalrightbox
-  \tex_let:D \tex_mathdir:D             \luatexmathdir
-  \tex_let:D \tex_pagebottomoffset:D    \luatexpagebottomoffset
-  \tex_let:D \tex_pagedir:D             \luatexpagedir
-  \tex_let:D \tex_pageheight:D             \luatexpageheight
-  \tex_let:D \tex_pagerightoffset:D     \luatexpagerightoffset
-  \tex_let:D \tex_pagewidth:D              \luatexpagewidth
-  \tex_let:D \tex_pardir:D              \luatexpardir
-  \tex_let:D \tex_rightghost:D          \luatexrightghost
-  \tex_let:D \tex_textdir:D             \luatextextdir
-\tex_fi:D
-%    \end{macrocode}
 % Only \pdfTeX{} and \LuaTeX{} define \tn{pdfmapfile} and \tn{pdfmapline}:
 % Tidy up the fact that some format-building processes leave
 % a couple of questionable decisions about that!
@@ -1440,16 +1374,6 @@
   \tex_fi:D
 \tex_endgroup:D
 %    \end{macrocode}
-% Up to v0.80, \LuaTeX{} defines the \pdfTeX{} version data: rather
-% confusing. Removing them means that \cs{tex_pdftexversion:D} is
-% a marker for \pdfTeX{} alone: useful in engine-dependent code later.
-%    \begin{macrocode}
-\tex_ifdefined:D \tex_luatexversion:D
-  \tex_let:D \tex_pdftexbanner:D   \tex_undefined:D
-  \tex_let:D \tex_pdftexrevision:D \tex_undefined:D
-  \tex_let:D \tex_pdftexversion:D  \tex_undefined:D
-\tex_fi:D
-%    \end{macrocode}
 % \pkg{cslatex} moves a couple of primitives which we recover here; as there
 % is no other marker, we can only work by looking for the names.
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -1087,16 +1087,7 @@
 %   have to make sure that the behaviour is as good as possible. Using a space
 %   before the opening brace we get the correct brace stripping behaviour for
 %   most of the key--value parsers available in \LaTeX.
-%   If \cs{tex_expanded:D} is available this function makes use of it, so there
-%   are two different implementations here. They both start with
-%   \cs{__kernel_exp_not:w} to start the expansion context to expand in two
-%   steps. If the \meta{property list} is empty they just leave an empty set of
-%   braces in the input stream for \cs{__kernel_exp_not:w}.
-%    \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
-  {
-%    \end{macrocode}
-%   The variant using \cs{tex_expanded:D} can just iterate over the
+%   Iterate over the
 %   \meta{property list} and remove the leading comma afterwards. Only the value
 %   has to be protected in \cs{__kernel_exp_not:w} as the property name is
 %   always a string. After the loop the leading comma is removed by
@@ -1103,51 +1094,25 @@
 %   \cs{use_none:n} and afterwards \cs{__kernel_exp_not:w} eventually finds the
 %   opening brace of its argument.
 %    \begin{macrocode}
-    \cs_new:Npn \prop_to_keyval:N #1
-      {
-        \__kernel_exp_not:w
-          \prop_if_empty:NTF #1
-            { {} }
-            {
-              \exp_after:wN \exp_after:wN \exp_after:wN
+\cs_new:Npn \prop_to_keyval:N #1
+  {
+    \__kernel_exp_not:w
+      \prop_if_empty:NTF #1
+        { {} }
+        {
+          \exp_after:wN \exp_after:wN \exp_after:wN
+          {
+            \tex_expanded:D
               {
-                \tex_expanded:D
-                  {
-                    \__kernel_exp_not:w { \use_none:n }
-                    \prop_map_function:NN #1 \@@_to_keyval:nn
-                  }
+                \__kernel_exp_not:w { \use_none:n }
+                \prop_map_function:NN #1 \@@_to_keyval:nn
               }
-            }
-      }
-    \cs_new:Npn \@@_to_keyval:nn #1#2
-      { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } }
+          }
+        }
   }
+\cs_new:Npn \@@_to_keyval:nn #1#2
+  { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } }
 %    \end{macrocode}
-%   The other variant will iterate over the \meta{property list} and has to
-%   output the result in a group after the marker
-%   \cs{@@_to_keyval_exp_after:wN}. As a result this is considerably slower than
-%   the \cs{tex_expanded:D} using variant as it has to read the entire contents
-%   of the \meta{property list} for each item.  Since the marker is just
-%   \cs{exp_after:wN} with another name, after the loop the leading comma is
-%   gobbled by \cs{use_none:n}, leaving the result as the argument to
-%   \cs{__kernel_exp_not:w}.
-%    \begin{macrocode}
-  {
-    \cs_new:Npn \prop_to_keyval:N #1
-      {
-        \__kernel_exp_not:w
-          \prop_if_empty:NTF #1
-            { {} }
-            {
-              \prop_map_function:NN #1 \@@_to_keyval:nnw
-              \@@_to_keyval_exp_after:wN { \use_none:n }
-            }
-      }
-    \cs_new_eq:NN \@@_to_keyval_exp_after:wN \exp_after:wN
-    \cs_new:Npn \@@_to_keyval:nnw #1#2#3 \@@_to_keyval_exp_after:wN #4
-      { #3 \@@_to_keyval_exp_after:wN { #4 , ~ {#1} =~ {#2} } }
-  }
-%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -2882,49 +2882,18 @@
 %   empty result. The result is returned within the \tn{unexpanded} primitive.
 %   The approach here is to use \cs{if_false:} to allow us to use |}| as
 %   the closing delimiter: this is the only safe choice, as any other token
-%   would not be able to parse it's own code. If the \tn{expanded} primitive
-%   is available it is used to get a fast and safe code variant in which we
-%   don't have to ensure that the left-most token is an internal to not break
-%   in an |f|-type expansion. If \tn{expanded} isn't available, using a marker,
-%   we can see if what we are grabbing is exactly the marker, or there is
-%   anything else to deal with. If there is, there is a loop. If not, tidy up
-%   and leave the item in the output stream. More detail in
+%   would not be able to parse it's own code. More detail in
 %   \url{http://tex.stackexchange.com/a/70168}.
 %    \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
+\cs_new:Npn \tl_head:n #1
   {
-    \cs_new:Npn \tl_head:n #1
-      {
-        \__kernel_exp_not:w \tex_expanded:D
-          { { \if_false: { \fi: \@@_head_aux:n #1 { } } } }
-      }
-    \cs_new:Npn \@@_head_aux:n #1
-      {
-        \__kernel_exp_not:w {#1}
-        \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
-      }
+    \__kernel_exp_not:w \tex_expanded:D
+      { { \if_false: { \fi: \@@_head_aux:n #1 { } } } }
   }
+\cs_new:Npn \@@_head_aux:n #1
   {
-    \cs_new:Npn \tl_head:n #1
-      {
-        \__kernel_exp_not:w
-          \if_false: { \fi: \@@_head_auxi:nw #1 { } \s_@@_stop }
-      }
-    \cs_new:Npn \@@_head_auxi:nw #1#2 \s_@@_stop
-      {
-        \exp_after:wN \@@_head_auxii:n \exp_after:wN {
-          \if_false: } \fi: {#1}
-      }
-    \exp_args:Nno \use:n
-      { \cs_new:Npn \@@_head_auxii:n #1 }
-      {
-        \@@_if_empty_if:o { \use_none:n #1 }
-          \exp_after:wN \use_ii:nnn
-        \fi:
-        \use_ii:nn
-          {#1}
-          { \if_false: { \fi: \@@_head_auxi:nw #1 } }
-      }
+    \__kernel_exp_not:w {#1}
+    \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
   }
 \cs_generate_variant:Nn \tl_head:n { V , v , f }
 \cs_new:Npn \tl_head:w #1#2 \q_stop {#1}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %
@@ -1584,20 +1584,6 @@
           \exp_after:wN \exp_end:
           \tex_Ucharcat:D #1 \exp_stop_f: #2 \exp_stop_f:
         }
-      \cs_if_exist:NF \tex_expanded:D
-        {
-          \cs_new_eq:NN \@@_generate_auxii:nnw \@@_generate_aux:nnw
-          \cs_gset:Npn \@@_generate_aux:nnw #1#2#3 \exp_end:
-            {
-              #3
-              \if_int_compare:w #2 = 13 \exp_stop_f:
-                \msg_expandable_error:nn { char } { active }
-              \else:
-                \@@_generate_auxii:nnw {#1} {#2}
-              \fi:
-              \exp_end:
-            }
-        }
   \else:
 %    \end{macrocode}
 %   For engines where \tn{Ucharcat} isn't available or emulated, we have

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-05-16 20:22:00 UTC (rev 67134)
@@ -71,7 +71,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-05-11}%
+\def\ExplFileDate{2023-05-15}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -129,23 +129,6 @@
       L3 programming layer (code)%
   }%
 %% File: l3bootstrap.dtx
-\begingroup
-  \expandafter\ifx\csname directlua\endcsname\relax
-  \else
-    \directlua{%
-      local i
-      local t = { }
-      for _,i in pairs(tex.extraprimitives("luatex")) do
-        if string.match(i,"^U") then
-          if not string.match(i,"^Uchar$") then %$
-            table.insert(t,i)
-          end
-        end
-      end
-      tex.enableprimitives("", t)
-    }%
-  \fi
-\endgroup
 \begingroup\expandafter\expandafter\expandafter\endgroup
   \expandafter\ifx\csname pdfstrcmp\endcsname\relax
   \let\pdfstrcmp\strcmp
@@ -183,27 +166,23 @@
   \def\ShortText{Required primitives not found}%
   \def\LongText%
     {%
-      The L3 programming layer requires the e-TeX primitives and additional
-      \LineBreak functionality as described in the README file.
+      The L3 programming layer requires the e-TeX primitives and the
+      \LineBreak 'pdfTeX extensions'  as described in the README file.
       \LineBreak
       These are available in the engines\LineBreak
-      - pdfTeX v1.40.0\LineBreak
-      - XeTeX v0.99992\LineBreak
+      - pdfTeX v1.40.20\LineBreak
+      - XeTeX v0.999991\LineBreak
       - LuaTeX v1.10\LineBreak
-      - e-(u)pTeX mid-2012\LineBreak
+      - e-(u)pTeX v3.8.2\LineBreak
       - Prote (2021)\LineBreak
       or later.\LineBreak
       \LineBreak
     }%
   \ifnum0%
-    \expandafter\ifx\csname expanded\endcsname\relax
-      \expandafter\ifx\csname pdfstrcmp\endcsname\relax\else 1\fi
+    \expandafter\ifx\csname luatexversion\endcsname\relax
+      \expandafter\ifx\csname expanded\endcsname\relax\else 1\fi
     \else
-      \expandafter\ifx\csname luatexversion\endcsname\relax
-        1%
-      \else
-        \ifnum\luatexversion<110 \else 1\fi
-      \fi
+      \ifnum\luatexversion<110 \else 1\fi
     \fi
     =0 %
       \newlinechar`\^^J %
@@ -229,20 +208,6 @@
         }%
   \fi
 \next
-\begingroup
-  \def\@tempa{LaTeX2e}%
-  \def\next{}%
-  \ifx\fmtname\@tempa
-    \expandafter\ifx\csname extrafloats\endcsname\relax
-      \def\next
-        {%
-          \RequirePackage{etex}%
-          \csname reserveinserts\endcsname{32}%
-        }%
-    \fi
-  \fi
-\expandafter\endgroup
-\next
 \protected\edef\ExplSyntaxOff
   {%
     \protected\def\noexpand\ExplSyntaxOff{}%
@@ -1389,64 +1354,6 @@
     \tex_fi:D
   \tex_fi:D
 \tex_fi:D
-\tex_ifdefined:D \luatexsuppressfontnotfounderror
-  \tex_let:D \tex_alignmark:D           \luatexalignmark
-  \tex_let:D \tex_aligntab:D            \luatexaligntab
-  \tex_let:D \tex_attribute:D           \luatexattribute
-  \tex_let:D \tex_attributedef:D        \luatexattributedef
-  \tex_let:D \tex_catcodetable:D        \luatexcatcodetable
-  \tex_let:D \tex_clearmarks:D          \luatexclearmarks
-  \tex_let:D \tex_crampeddisplaystyle:D \luatexcrampeddisplaystyle
-  \tex_let:D \tex_crampedscriptscriptstyle:D
-    \luatexcrampedscriptscriptstyle
-  \tex_let:D \tex_crampedscriptstyle:D  \luatexcrampedscriptstyle
-  \tex_let:D \tex_crampedtextstyle:D    \luatexcrampedtextstyle
-  \tex_let:D \tex_fontid:D              \luatexfontid
-  \tex_let:D \tex_formatname:D          \luatexformatname
-  \tex_let:D \tex_gleaders:D            \luatexgleaders
-  \tex_let:D \tex_initcatcodetable:D    \luatexinitcatcodetable
-  \tex_let:D \tex_latelua:D             \luatexlatelua
-  \tex_let:D \tex_luaescapestring:D     \luatexluaescapestring
-  \tex_let:D \tex_luafunction:D         \luatexluafunction
-  \tex_let:D \tex_mathstyle:D           \luatexmathstyle
-  \tex_let:D \tex_nokerns:D             \luatexnokerns
-  \tex_let:D \tex_noligs:D              \luatexnoligs
-  \tex_let:D \tex_outputbox:D           \luatexoutputbox
-  \tex_let:D \tex_pageleftoffset:D      \luatexpageleftoffset
-  \tex_let:D \tex_pagetopoffset:D       \luatexpagetopoffset
-  \tex_let:D \tex_postexhyphenchar:D    \luatexpostexhyphenchar
-  \tex_let:D \tex_posthyphenchar:D      \luatexposthyphenchar
-  \tex_let:D \tex_preexhyphenchar:D     \luatexpreexhyphenchar
-  \tex_let:D \tex_prehyphenchar:D       \luatexprehyphenchar
-  \tex_let:D \tex_savecatcodetable:D    \luatexsavecatcodetable
-  \tex_let:D \tex_scantextokens:D       \luatexscantextokens
-  \tex_let:D \tex_suppressifcsnameerror:D
-    \luatexsuppressifcsnameerror
-  \tex_let:D \tex_suppresslongerror:D   \luatexsuppresslongerror
-  \tex_let:D \tex_suppressmathparerror:D
-    \luatexsuppressmathparerror
-  \tex_let:D \tex_suppressoutererror:D  \luatexsuppressoutererror
-  \tex_let:D \tex_Uchar:D                  \luatexUchar
-  \tex_let:D \tex_suppressfontnotfounderror:D
-    \luatexsuppressfontnotfounderror
-  \tex_let:D \tex_bodydir:D             \luatexbodydir
-  \tex_let:D \tex_boxdir:D              \luatexboxdir
-  \tex_let:D \tex_leftghost:D           \luatexleftghost
-  \tex_let:D \tex_localbrokenpenalty:D  \luatexlocalbrokenpenalty
-  \tex_let:D \tex_localinterlinepenalty:D
-    \luatexlocalinterlinepenalty
-  \tex_let:D \tex_localleftbox:D        \luatexlocalleftbox
-  \tex_let:D \tex_localrightbox:D       \luatexlocalrightbox
-  \tex_let:D \tex_mathdir:D             \luatexmathdir
-  \tex_let:D \tex_pagebottomoffset:D    \luatexpagebottomoffset
-  \tex_let:D \tex_pagedir:D             \luatexpagedir
-  \tex_let:D \tex_pageheight:D             \luatexpageheight
-  \tex_let:D \tex_pagerightoffset:D     \luatexpagerightoffset
-  \tex_let:D \tex_pagewidth:D              \luatexpagewidth
-  \tex_let:D \tex_pardir:D              \luatexpardir
-  \tex_let:D \tex_rightghost:D          \luatexrightghost
-  \tex_let:D \tex_textdir:D             \luatextextdir
-\tex_fi:D
 \tex_ifnum:D 0
   \tex_ifdefined:D \tex_pdftexversion:D 1 \tex_fi:D
   \tex_ifdefined:D \tex_luatexversion:D 1 \tex_fi:D
@@ -1480,11 +1387,6 @@
     \tex_global:D \tex_let:D \tex_year:D \tex_undefined:D
   \tex_fi:D
 \tex_endgroup:D
-\tex_ifdefined:D \tex_luatexversion:D
-  \tex_let:D \tex_pdftexbanner:D   \tex_undefined:D
-  \tex_let:D \tex_pdftexrevision:D \tex_undefined:D
-  \tex_let:D \tex_pdftexversion:D  \tex_undefined:D
-\tex_fi:D
 \tex_ifdefined:D \orieveryjob
   \tex_let:D \tex_everyjob:D \orieveryjob
 \tex_fi:D
@@ -1615,9 +1517,6 @@
     \l__exp_internal_tl
   }
 \cs_set:Npn \use:e #1 { \tex_expanded:D {#1} }
-\tex_ifdefined:D \tex_expanded:D \tex_else:D
-  \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} }
-\tex_fi:D
 \cs_set:Npn \use:n    #1       {#1}
 \cs_set:Npn \use:nn   #1#2     {#1#2}
 \cs_set:Npn \use:nnn  #1#2#3   {#1#2#3}
@@ -2372,15 +2271,8 @@
   { \exp_after:wN \__exp_arg_next:Nnn \cs:w #3 \cs_end: {#1} {#2} }
 \cs_new:Npn \::o #1 \::: #2#3
   { \exp_after:wN \__exp_arg_next:nnn \exp_after:wN {#3} {#1} {#2} }
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \::e #1 \::: #2#3
-      { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } }
-  }
-  {
-    \cs_new:Npn \::e #1 \::: #2#3
-      { \exp_args:Ne \__exp_arg_next:nnn {#3} {#1} {#2} }
-  }
+\cs_new:Npn \::e #1 \::: #2#3
+  { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } }
 \cs_new:Npn \::f #1 \::: #2#3
   {
     \exp_after:wN \__exp_arg_next:nnn
@@ -2442,18 +2334,8 @@
   { \exp_after:wN #1 \exp_after:wN #2 \exp_after:wN {#3} }
 \cs_new:Npn \exp_args:NNNo #1#2#3#4
   { \exp_after:wN #1 \exp_after:wN#2 \exp_after:wN #3 \exp_after:wN {#4} }
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \exp_args:Ne #1#2
-      { \exp_after:wN #1 \tex_expanded:D { {#2} } }
-  }
-  {
-    \cs_new:Npn \exp_args:Ne #1#2
-      {
-        \exp_after:wN #1 \exp_after:wN
-          { \exp:w \__exp_e:nn {#2} { } }
-      }
-  }
+\cs_new:Npn \exp_args:Ne #1#2
+  { \exp_after:wN #1 \tex_expanded:D { {#2} } }
 \cs_new:Npn \exp_args:Nf #1#2
   { \exp_after:wN #1 \exp_after:wN { \exp:w \exp_end_continue_f:w #2 } }
 \cs_new:Npn \exp_args:Nv #1#2
@@ -2478,16 +2360,12 @@
     \exp_after:wN #2
     \exp_after:wN { \exp:w \__exp_eval_register:c {#3} }
   }
-\cs_if_exist:NTF \tex_expanded:D
+\cs_new:Npn \exp_args:NNe #1#2#3
   {
-    \cs_new:Npn \exp_args:NNe #1#2#3
-      {
-        \exp_after:wN #1
-        \exp_after:wN #2
-        \tex_expanded:D { {#3} }
-      }
+    \exp_after:wN #1
+    \exp_after:wN #2
+    \tex_expanded:D { {#3} }
   }
-  { \cs_new:Npn \exp_args:NNe { \::N \::e \::: } }
 \cs_new:Npn \exp_args:NNf #1#2#3
   {
     \exp_after:wN #1
@@ -2575,15 +2453,8 @@
     \exp_after:wN \__exp_arg_last_unbraced:nn
       \exp_after:wN { \exp:w \__exp_eval_register:c {#2} } {#1}
   }
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \::e_unbraced \::: #1#2
-      { \tex_expanded:D { \exp_not:n {#1} #2 } }
-  }
-  {
-    \cs_new:Npn \::e_unbraced \::: #1#2
-      { \exp:w \__exp_e:nn {#2} {#1} }
-  }
+\cs_new:Npn \::e_unbraced \::: #1#2
+  { \tex_expanded:D { \exp_not:n {#1} #2 } }
 \cs_new:Npn \::f_unbraced \::: #1#2
   {
     \exp_after:wN \__exp_arg_last_unbraced:nn
@@ -2599,12 +2470,8 @@
   { \exp_after:wN #1 \exp:w \__exp_eval_register:N #2 }
 \cs_new:Npn \exp_last_unbraced:Nv #1#2
   { \exp_after:wN #1 \exp:w \__exp_eval_register:c {#2} }
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \exp_last_unbraced:Ne #1#2
-      { \exp_after:wN #1 \tex_expanded:D {#2} }
-  }
-  { \cs_new:Npn \exp_last_unbraced:Ne { \::e_unbraced \::: } }
+\cs_new:Npn \exp_last_unbraced:Ne #1#2
+  { \exp_after:wN #1 \tex_expanded:D {#2} }
 \cs_new:Npn \exp_last_unbraced:Nf #1#2
   { \exp_after:wN #1 \exp:w \exp_end_continue_f:w #2 }
 \cs_new:Npn \exp_last_unbraced:NNo #1#2#3
@@ -2667,15 +2534,8 @@
 \cs_new_eq:NN \__kernel_exp_not:w \tex_unexpanded:D
 \cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: }
 \cs_new:Npn \exp_not:o #1 { \__kernel_exp_not:w \exp_after:wN {#1} }
-\cs_if_exist:NTF \tex_expanded:D
-  {
-    \cs_new:Npn \exp_not:e #1
-      { \__kernel_exp_not:w \tex_expanded:D { {#1} } }
-  }
-  {
-    \cs_new:Npn \exp_not:e
-      { \__kernel_exp_not:w \exp_args:Ne \prg_do_nothing: }
-  }
+\cs_new:Npn \exp_not:e #1
+  { \__kernel_exp_not:w \tex_expanded:D { {#1} } }
 \cs_new:Npn \exp_not:f #1
   { \__kernel_exp_not:w \exp_after:wN { \exp:w \exp_end_continue_f:w #1 } }
 \cs_new:Npn \exp_not:V #1
@@ -2698,282 +2558,6 @@
   \fi:
   \cs_new:Npn \exp_end_continue_f:nw #1 { `^^@ #1 }
 \group_end:
-\cs_if_exist:NF \tex_expanded:D
-  {
-    \cs_new:Npn \__exp_e:nn #1
-      {
-        \if_false: { \fi:
-          \tl_if_head_is_N_type:nTF {#1}
-            { \__exp_e:N }
-            {
-              \tl_if_head_is_group:nTF {#1}
-                { \__exp_e_group:n }
-                {
-                  \tl_if_empty:nTF {#1}
-                    { \exp_after:wN \__exp_e_end:nn }
-                    { \exp_after:wN \__exp_e_space:nn }
-                  \exp_after:wN { \if_false: } \fi:
-                }
-            }
-          #1
-        }
-      }
-    \cs_new:Npn \__exp_e_end:nn #1#2 { \exp_end: #2 }
-    \cs_new:Npn \__exp_e_space:nn #1#2
-      { \exp_args:Nf \__exp_e:nn {#1} { #2 ~ } }
-    \cs_new:Npn \__exp_e_group:n #1
-      {
-        \exp_after:wN \__exp_e_put:nn
-        \exp_after:wN { \exp_after:wN { \exp_after:wN {
-              \exp:w \if_false: } \fi: \__exp_e:nn {#1} { } } }
-      }
-    \cs_new:Npn \__exp_e_put:nn #1
-      {
-        \exp_args:NNo \exp_args:No \__exp_e_put:nnn
-          { \tl_head:n {#1} } {#1}
-      }
-    \cs_new:Npn \__exp_e_put:nnn #1#2#3
-      { \exp_args:No \__exp_e:nn { \use_none:n #2 } { #3 #1 } }
-    \cs_new:Npn \__exp_e:N #1
-      {
-        \exp_after:wN \__exp_e:Nnn
-        \exp_after:wN #1
-        \exp_after:wN { \if_false: } \fi:
-      }
-    \cs_new:Npn \__exp_e:Nnn #1
-      {
-        \if_case:w
-          \exp_after:wN \if_meaning:w \exp_not:N #1 #1 1 ~ \fi:
-          \token_if_protected_macro:NT #1 { 1 ~ }
-          \token_if_protected_long_macro:NT #1 { 1 ~ }
-          \if_meaning:w \exp_not:n #1 2 ~ \fi:
-          \if_meaning:w \exp_not:N #1 3 ~ \fi:
-          \if_meaning:w \tex_the:D #1 4 ~ \fi:
-          \if_meaning:w \tex_primitive:D #1 5 ~ \fi:
-          0 ~
-          \exp_after:wN \__exp_e_expandable:Nnn
-        \or: \exp_after:wN \__exp_e_protected:Nnn
-        \or: \exp_after:wN \__exp_e_unexpanded:Nnn
-        \or: \exp_after:wN \__exp_e_noexpand:Nnn
-        \or: \exp_after:wN \__exp_e_the:Nnn
-        \or: \exp_after:wN \__exp_e_primitive:Nnn
-        \fi:
-        #1
-      }
-    \cs_new:Npn \__exp_e_protected:Nnn #1#2#3
-      { \__exp_e:nn {#2} { #3 #1 } }
-    \cs_new:Npn \__exp_e_expandable:Nnn #1#2
-      { \exp_args:No \__exp_e:nn { #1 #2 } }
-    \cs_new:Npn \__exp_e_primitive:Nnn #1#2
-      {
-        \if_false: { \fi:
-          \tl_if_head_is_N_type:nTF {#2}
-            { \__exp_e_primitive_aux:NNw #1 }
-            {
-              \msg_expandable_error:nnn { kernel } { e-type }
-                { Missing~primitive~name }
-              \__exp_e_primitive_aux:NNw #1 \c_empty_tl
-            }
-          #2
-        }
-      }
-    \cs_new:Npn \__exp_e_primitive_aux:NNw #1#2
-      {
-        \exp_after:wN \__exp_e_primitive_aux:NNnn
-        \exp_after:wN #1
-        \exp_after:wN #2
-        \exp_after:wN { \if_false: } \fi:
-      }
-    \cs_new:Npn \__exp_e_primitive_aux:NNnn #1#2
-      {
-        \exp_args:Nf \str_case_e:nnTF { \cs_to_str:N #2 }
-          {
-            { unexpanded } { \__exp_e_unexpanded:Nnn \exp_not:n }
-            { noexpand } { \__exp_e_noexpand:Nnn \exp_not:N }
-            { the } { \__exp_e_the:Nnn \tex_the:D }
-            {
-              \sys_if_engine_xetex:T { pdf }
-              \sys_if_engine_luatex:T { pdf }
-              primitive
-            } { \__exp_e_primitive:Nnn #1 }
-          }
-          { \__exp_e_primitive_other:NNnn #1 #2 }
-      }
-    \cs_new:Npn \__exp_e_primitive_other:NNnn #1#2#3
-      {
-        \exp_args:No \__exp_e_primitive_other_aux:nNNnn
-          { #1 #2 #3 }
-          #1 #2 {#3}
-      }
-    \cs_new:Npn \__exp_e_primitive_other_aux:nNNnn #1#2#3#4#5
-      {
-        \str_if_eq:nnTF {#1} { #2 #3 #4 }
-          { \__exp_e:nn {#4} { #5 #2 #3 } }
-          { \__exp_e:nn {#1} {#5} }
-      }
-    \cs_new:Npn \__exp_e_noexpand:Nnn #1#2
-      {
-        \tl_if_head_is_N_type:nTF {#2}
-          { \__exp_e_put:nn } { \__exp_e:nn } {#2}
-      }
-    \cs_new:Npn \__exp_e_unexpanded:Nnn #1 { \__exp_e_unexpanded:nn }
-    \cs_new:Npn \__exp_e_unexpanded:nn #1
-      {
-        \tl_if_head_is_N_type:nTF {#1}
-          {
-            \exp_args:Nf \__exp_e_unexpanded:nn
-              { \__exp_e_unexpanded:nN {#1} #1 }
-          }
-          {
-            \tl_if_head_is_group:nTF {#1}
-              { \__exp_e_put:nn }
-              {
-                \tl_if_empty:nTF {#1}
-                  {
-                    \msg_expandable_error:nnn
-                      { kernel } { e-type }
-                      { \unexpanded missing~brace }
-                    \__exp_e_end:nn
-                  }
-                  { \exp_args:Nf \__exp_e_unexpanded:nn }
-              }
-            {#1}
-          }
-      }
-    \cs_new:Npn \__exp_e_unexpanded:nN #1#2
-      {
-        \exp_after:wN \if_meaning:w \exp_not:N #2 #2
-          \exp_after:wN \use_i:nn
-        \else:
-          \exp_after:wN \use_ii:nn
-        \fi:
-        {
-          \token_if_eq_catcode:NNTF #2 \c_space_token
-            { \exp_stop_f: }
-            {
-              \token_if_eq_meaning:NNTF #2 \scan_stop:
-                { \exp_stop_f: }
-                {
-                  \msg_expandable_error:nnn
-                    { kernel } { e-type }
-                    { \unexpanded missing~brace }
-                  { }
-                }
-            }
-        }
-        {
-          \token_if_eq_meaning:NNTF #2 \exp_not:N
-            {
-              \exp_args:No \tl_if_head_is_N_type:nT { \use_none:n #1 }
-                { \__exp_e_unexpanded:N }
-            }
-            { \exp_after:wN \exp_stop_f: #2 }
-        }
-      }
-    \cs_new:Npn \__exp_e_unexpanded:N #1
-      {
-        \exp_after:wN \if_meaning:w \exp_not:N #1 #1 \else:
-          \exp_after:wN \use_i:nn
-        \fi:
-        \exp_stop_f: #1
-      }
-    \cs_new:Npn \__exp_e_the:Nnn #1#2
-      {
-        \tl_if_head_is_N_type:nTF {#2}
-          { \if_false: { \fi: \__exp_e_the:N #2 } }
-          { \exp_args:No \__exp_e:nn { \tex_the:D #2 } }
-      }
-    \cs_new:Npn \__exp_e_the:N #1
-      {
-        \exp_after:wN \if_meaning:w \exp_not:N #1 #1
-          \exp_after:wN \use_i:nn
-        \else:
-          \exp_after:wN \use_ii:nn
-        \fi:
-        {
-          \if_meaning:w \tex_toks:D #1
-            \exp_after:wN \__exp_e_the_toks:wnn \int_value:w
-            \exp_after:wN \__exp_e_the_toks:n
-            \exp_after:wN { \int_value:w \if_false: } \fi:
-          \else:
-            \__exp_e_if_toks_register:NTF #1
-              { \exp_after:wN \__exp_e_the_toks_reg:N }
-              {
-                \exp_after:wN \__exp_e:nn \exp_after:wN {
-                  \tex_the:D \if_false: } \fi:
-              }
-            \exp_after:wN #1
-          \fi:
-        }
-        {
-          \exp_after:wN \__exp_e_the:Nnn \exp_after:wN ?
-          \exp_after:wN { \exp:w \if_false: } \fi:
-          \exp_after:wN \exp_end: #1
-        }
-      }
-    \cs_new:Npn \__exp_e_the_toks_reg:N #1
-      {
-        \exp_after:wN \__exp_e_put:nn \exp_after:wN {
-          \exp_after:wN {
-            \tex_the:D \if_false: } \fi: #1 }
-      }
-    \cs_new:Npn \__exp_e_the_toks:wnn #1; #2
-      {
-        \exp_args:No \__exp_e_put:nnn
-          { \tex_the:D \tex_toks:D #1 } { ? #2 }
-      }
-    \cs_new:Npn \__exp_e_the_toks:n #1
-      {
-        \tl_if_head_is_N_type:nTF {#1}
-          { \exp_after:wN \__exp_e_the_toks:N \if_false: { \fi: #1 } }
-          { ; {#1} }
-      }
-    \cs_new:Npn \__exp_e_the_toks:N #1
-      {
-        \if_int_compare:w 10 < 9 \token_to_str:N #1 \exp_stop_f:
-          \exp_after:wN \use_i:nn
-        \else:
-          \exp_after:wN \use_ii:nn
-        \fi:
-        {
-          #1
-          \exp_after:wN \__exp_e_the_toks:n
-          \exp_after:wN { \if_false: } \fi:
-        }
-        {
-          \exp_after:wN ;
-          \exp_after:wN { \if_false: } \fi: #1
-        }
-      }
-    \prg_new_conditional:Npnn \__exp_e_if_toks_register:N #1 { TF }
-      {
-        \token_if_toks_register:NTF #1 { \prg_return_true: }
-          {
-            \cs_if_exist:cTF
-              {
-                __exp_e_the_
-                \exp_after:wN \cs_to_str:N
-                \token_to_meaning:N #1
-                :
-              } { \prg_return_true: } { \prg_return_false: }
-          }
-      }
-    \cs_new_eq:NN \__exp_e_the_XeTeXinterchartoks: ?
-    \cs_new_eq:NN \__exp_e_the_errhelp: ?
-    \cs_new_eq:NN \__exp_e_the_everycr: ?
-    \cs_new_eq:NN \__exp_e_the_everydisplay: ?
-    \cs_new_eq:NN \__exp_e_the_everyeof: ?
-    \cs_new_eq:NN \__exp_e_the_everyhbox: ?
-    \cs_new_eq:NN \__exp_e_the_everyjob: ?
-    \cs_new_eq:NN \__exp_e_the_everymath: ?
-    \cs_new_eq:NN \__exp_e_the_everypar: ?
-    \cs_new_eq:NN \__exp_e_the_everyvbox: ?
-    \cs_new_eq:NN \__exp_e_the_output: ?
-    \cs_new_eq:NN \__exp_e_the_pdfpageattr: ?
-    \cs_new_eq:NN \__exp_e_the_pdfpageresources: ?
-    \cs_new_eq:NN \__exp_e_the_pdfpagesattr: ?
-    \cs_new_eq:NN \__exp_e_the_pdfpkmode: ?
-  }
 \cs_new_eq:NN \s__cs_mark \scan_stop:
 \cs_new_eq:NN \s__cs_stop \scan_stop:
 \cs_new:Npn \q__cs_recursion_stop { \q__cs_recursion_stop }
@@ -3214,22 +2798,8 @@
       }
     \cs_new_protected:Npn \__cs_generate_internal_test_aux:w
         ##1 #1 ##2 \s__cs_mark ##3 ##4 \s__cs_stop {##3}
-    \cs_if_exist:NTF \tex_expanded:D
-      {
-        \cs_new_eq:NN \__cs_generate_internal_test:Nw
-          \__cs_generate_internal_test_aux:w
-      }
-      {
-        \cs_new_protected:Npn \__cs_generate_internal_test:Nw ##1
-          {
-            \if_meaning:w \tex_expanded:D ##1
-              \exp_after:wN \__cs_generate_internal_test_aux:w
-              \exp_after:wN #1
-            \else:
-              \exp_after:wN \__cs_generate_internal_test_aux:w
-            \fi:
-          }
-      }
+    \cs_new_eq:NN \__cs_generate_internal_test:Nw
+      \__cs_generate_internal_test_aux:w
   }
 \exp_args:No \__cs_tmp:w { \token_to_str:N p }
 \cs_new_protected:Npn \__cs_generate_internal_one_go:NNn #1#2#3
@@ -4415,40 +3985,15 @@
     \cs_new:Npn \__tl_trim_mark: {}
   }
 \__tl_tmp:w { ~ }
-\cs_if_exist:NTF \tex_expanded:D
+\cs_new:Npn \tl_head:n #1
   {
-    \cs_new:Npn \tl_head:n #1
-      {
-        \__kernel_exp_not:w \tex_expanded:D
-          { { \if_false: { \fi: \__tl_head_aux:n #1 { } } } }
-      }
-    \cs_new:Npn \__tl_head_aux:n #1
-      {
-        \__kernel_exp_not:w {#1}
-        \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
-      }
+    \__kernel_exp_not:w \tex_expanded:D
+      { { \if_false: { \fi: \__tl_head_aux:n #1 { } } } }
   }
+\cs_new:Npn \__tl_head_aux:n #1
   {
-    \cs_new:Npn \tl_head:n #1
-      {
-        \__kernel_exp_not:w
-          \if_false: { \fi: \__tl_head_auxi:nw #1 { } \s__tl_stop }
-      }
-    \cs_new:Npn \__tl_head_auxi:nw #1#2 \s__tl_stop
-      {
-        \exp_after:wN \__tl_head_auxii:n \exp_after:wN {
-          \if_false: } \fi: {#1}
-      }
-    \exp_args:Nno \use:n
-      { \cs_new:Npn \__tl_head_auxii:n #1 }
-      {
-        \__tl_if_empty_if:o { \use_none:n #1 }
-          \exp_after:wN \use_ii:nnn
-        \fi:
-        \use_ii:nn
-          {#1}
-          { \if_false: { \fi: \__tl_head_auxi:nw #1 } }
-      }
+    \__kernel_exp_not:w {#1}
+    \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
   }
 \cs_generate_variant:Nn \tl_head:n { V , v , f }
 \cs_new:Npn \tl_head:w #1#2 \q_stop {#1}
@@ -8927,20 +8472,6 @@
           \exp_after:wN \exp_end:
           \tex_Ucharcat:D #1 \exp_stop_f: #2 \exp_stop_f:
         }
-      \cs_if_exist:NF \tex_expanded:D
-        {
-          \cs_new_eq:NN \__char_generate_auxii:nnw \__char_generate_aux:nnw
-          \cs_gset:Npn \__char_generate_aux:nnw #1#2#3 \exp_end:
-            {
-              #3
-              \if_int_compare:w #2 = 13 \exp_stop_f:
-                \msg_expandable_error:nn { char } { active }
-              \else:
-                \__char_generate_auxii:nnw {#1} {#2}
-              \fi:
-              \exp_end:
-            }
-        }
   \else:
     \char_set_catcode_active:n { 0 }
     \tl_set:Nn \l__char_tmp_tl { \exp_not:N ^^@ \exp_not:N \or: }
@@ -9803,42 +9334,24 @@
   }
 \cs_new:Npn \__prop_count:nn #1#2 { + 1 }
 \cs_generate_variant:Nn \prop_count:N { c }
-\cs_if_exist:NTF \tex_expanded:D
+\cs_new:Npn \prop_to_keyval:N #1
   {
-    \cs_new:Npn \prop_to_keyval:N #1
-      {
-        \__kernel_exp_not:w
-          \prop_if_empty:NTF #1
-            { {} }
-            {
-              \exp_after:wN \exp_after:wN \exp_after:wN
+    \__kernel_exp_not:w
+      \prop_if_empty:NTF #1
+        { {} }
+        {
+          \exp_after:wN \exp_after:wN \exp_after:wN
+          {
+            \tex_expanded:D
               {
-                \tex_expanded:D
-                  {
-                    \__kernel_exp_not:w { \use_none:n }
-                    \prop_map_function:NN #1 \__prop_to_keyval:nn
-                  }
+                \__kernel_exp_not:w { \use_none:n }
+                \prop_map_function:NN #1 \__prop_to_keyval:nn
               }
-            }
-      }
-    \cs_new:Npn \__prop_to_keyval:nn #1#2
-      { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } }
+          }
+        }
   }
-  {
-    \cs_new:Npn \prop_to_keyval:N #1
-      {
-        \__kernel_exp_not:w
-          \prop_if_empty:NTF #1
-            { {} }
-            {
-              \prop_map_function:NN #1 \__prop_to_keyval:nnw
-              \__prop_to_keyval_exp_after:wN { \use_none:n }
-            }
-      }
-    \cs_new_eq:NN \__prop_to_keyval_exp_after:wN \exp_after:wN
-    \cs_new:Npn \__prop_to_keyval:nnw #1#2#3 \__prop_to_keyval_exp_after:wN #4
-      { #3 \__prop_to_keyval_exp_after:wN { #4 , ~ {#1} =~ {#2} } }
-  }
+\cs_new:Npn \__prop_to_keyval:nn #1#2
+  { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } }
 \prg_new_protected_conditional:Npnn \prop_pop:NnN #1#2#3 { T , F , TF }
   {
     \__prop_split:NnTF #1 {#2}
@@ -10870,11 +10383,6 @@
   { Relation~'#1'~not~among~=,<,>,==,!=,<=,>=. }
 \msg_new:nnn { kernel } { zero-step }
   { Zero~step~size~for~function~#1. }
-\cs_if_exist:NF \tex_expanded:D
-  {
-    \msg_new:nnn { kernel } { e-type }
-      { #1 ~ in~e-type~argument }
-  }
 \msg_new:nnn { clist } { show }
   {
     The~comma~list~ \tl_if_empty:nF {#1} { #1 ~ }
@@ -11880,18 +11388,18 @@
     \tl_if_blank:nTF {#2}
       {
         \seq_map_tokens:Nn \l_file_search_path_seq
-          { \__file_full_name_aux:Nnn \seq_map_break:n {#1} }
+          { \__file_full_name_aux:Nnnn \seq_map_break:n {#1} { / } }
         \cs_if_exist:NT \input at path
           {
             \tl_map_tokens:Nn \input at path
-              { \__file_full_name_aux:Nnn \tl_map_break:n {#1} }
+              { \__file_full_name_aux:Nnnn \tl_map_break:n {#1} { } }
           }
         \__file_name_end:
       }
       { \__file_ext_check:nn {#1} {#2} }
   }
-\cs_new:Npn \__file_full_name_aux:Nnn #1#2#3
-  { \exp_args:Ne \__file_full_name_aux:nN { \tl_to_str:n {#3} / #2 } #1 }
+\cs_new:Npn \__file_full_name_aux:Nnnn #1#2#3#4
+  { \exp_args:Ne \__file_full_name_aux:nN { \tl_to_str:n {#4} #3 #2 } #1 }
 \cs_new:Npn \__file_full_name_aux:nN #1
   { \exp_args:Nne \__file_full_name_aux:nnN {#1} { \__file_full_name_aux:n {#1} } }
 \cs_new:Npn \__file_full_name_aux:nnN #1 #2 #3
@@ -11941,21 +11449,6 @@
           {#3}
       }
   }
-\cs_if_exist:NF \tex_filesize:D
-  {
-    \cs_gset:Npn \file_full_name:n #1
-      {
-        \msg_expandable_error:nnn
-          { kernel } { primitive-not-available }
-          { \(pdf)filesize }
-      }
-  }
-\msg_new:nnnn { kernel } { primitive-not-available }
-  { Primitive~\token_to_str:N #1 not~available }
-  {
-    The~version~of~your~TeX~engine~does~not~provide~functionality~equivalent~to~
-    the~#1~primitive.
-  }
 \cs_new_protected:Npn \file_get_full_name:nN #1#2
   {
     \file_get_full_name:nNF {#1} #2
@@ -11973,50 +11466,6 @@
 \cs_generate_variant:Nn \file_get_full_name:nNT  { V }
 \cs_generate_variant:Nn \file_get_full_name:nNF  { V }
 \cs_generate_variant:Nn \file_get_full_name:nNTF { V }
-\cs_if_exist:NF \tex_filesize:D
-  {
-    \prg_set_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF }
-      {
-        \__kernel_tl_set:Nx \l__file_base_name_tl
-          { \__kernel_file_name_sanitize:n {#1} }
-        \__file_get_full_name_search:nN { } \use:n
-        \seq_map_inline:Nn \l_file_search_path_seq
-          { \__file_get_full_name_search:nN { ##1 / } \seq_map_break:n }
-        \cs_if_exist:NT \input at path
-          {
-            \tl_map_inline:Nn \input at path
-              { \__file_get_full_name_search:nN { ##1 } \tl_map_break:n }
-          }
-        \tl_set:Nn \l__file_full_name_tl { \q_no_value }
-        \prg_break_point:
-        \quark_if_no_value:NTF \l__file_full_name_tl
-          {
-            \ior_close:N \g__file_internal_ior
-            \prg_return_false:
-          }
-          {
-            \file_parse_full_name:VNNN \l__file_full_name_tl
-              \l__file_dir_str \l__file_name_str \l__file_ext_str
-            \str_if_empty:NT \l__file_ext_str
-              {
-                \__kernel_ior_open:No \g__file_internal_ior
-                  { \l__file_full_name_tl .tex }
-                \ior_if_eof:NF \g__file_internal_ior
-                   { \tl_put_right:Nn \l__file_full_name_tl { .tex } }
-              }
-            \ior_close:N \g__file_internal_ior
-            \tl_set_eq:NN #2 \l__file_full_name_tl
-            \prg_return_true:
-          }
-      }
-  }
-\cs_new_protected:Npn \__file_get_full_name_search:nN #1#2
-  {
-    \__kernel_tl_set:Nx \l__file_full_name_tl
-      { \tl_to_str:n {#1} \l__file_base_name_tl }
-    \__kernel_ior_open:No \g__file_internal_ior \l__file_full_name_tl
-    \ior_if_eof:NF \g__file_internal_ior { #2 { \prg_break: } }
-  }
 \ior_new:N \g__file_internal_ior
 \cs_new:Npn \file_size:n #1
   { \__file_details:nn {#1} { size } }
@@ -12125,26 +11574,6 @@
       { \prg_return_false: }
       { \prg_return_true: }
   }
-\cs_if_exist:NF \tex_filesize:D
-  {
-    \cs_set_protected:Npn \__file_get_details:nnN #1#2#3
-       {
-        \tl_clear:N #3
-        \msg_error:nnx
-          { kernel } { primitive-not-available }
-          {
-            \token_to_str:N \(pdf)file
-            \str_case:nn {#2}
-              {
-                { hex_dump } { dump }
-                { mdfive_hash } { mdfivesum }
-                { timestamp } { moddate }
-                { size } { size }
-              }
-          }
-        \prg_return_false:
-      }
-  }
 \cs_new_protected:Npn \file_get_hex_dump:nnnN #1#2#3#4
   {
     \file_get_hex_dump:nnnNF {#1} {#2} {#3} #4
@@ -12201,17 +11630,6 @@
       }
   }
 \cs_new_eq:NN \__file_timestamp:n \tex_filemoddate:D
-\cs_if_exist:NF \__file_timestamp:n
-  {
-    \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
-      { p , T , F , TF }
-      {
-        \msg_expandable_error:nnn
-          { kernel } { primitive-not-available }
-          { \(pdf)filemoddate }
-        \prg_return_false:
-      }
-  }
 \prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF }
   {
     \file_get_full_name:nNTF {#1} \l__file_full_name_tl
@@ -13053,28 +12471,16 @@
 \group_begin:
   \cs_set_protected:Npn \__keyval_tmp:w #1#2
     {
-      \cs_if_exist:NTF \tex_expanded:D
+      \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
         {
-          \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
+          \__kernel_exp_not:w \tex_expanded:D
             {
-              \__kernel_exp_not:w \tex_expanded:D
-                {
-                  {
-                    \__keyval_loop_active:nnw {##1} {##2}
-                      \s__keyval_mark ##3 #1 \s__keyval_tail #1
-                  }
-                }
+              {
+                \__keyval_loop_active:nnw {##1} {##2}
+                  \s__keyval_mark ##3 #1 \s__keyval_tail #1
+              }
             }
         }
-        {
-          \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3
-            {
-              \group_align_safe_begin:
-              \__keyval_loop_active:nnw {##1} {##2}
-                \s__keyval_mark ##3 #1 \s__keyval_tail #1
-              \group_align_safe_end:
-            }
-        }
       \cs_new_eq:NN \keyval_parse:NNn \keyval_parse:nnn
       \cs_new:Npn \__keyval_loop_active:nnw ##1 ##2 ##3 #1
         {
@@ -13211,9 +12617,7 @@
           \__keyval_loop_other:nnw {##2}
         }
     }
-  \cs_if_exist:NTF \tex_expanded:D
-    { \__keyval_tmp:w { } { } }
-    { \__keyval_tmp:w \group_align_safe_end: \group_align_safe_begin: }
+  \__keyval_tmp:w { } { }
 \group_end:
 \cs_new:Npn \__keyval_if_empty:w #1 \s__keyval_mark \s__keyval_stop { }
 \cs_new:Npn \__keyval_if_blank:w \s__keyval_mark #1 { \__keyval_if_empty:w \s__keyval_mark }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2023-05-16 20:22:00 UTC (rev 67134)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-05-11}%
+\def\ExplFileDate{2023-05-15}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-05-16 20:22:00 UTC (rev 67134)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-05-11}%
+\def\ExplFileDate{2023-05-15}%
 \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	2023-05-16 20:21:30 UTC (rev 67133)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-05-16 20:22:00 UTC (rev 67134)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-05-11}%
+\def\ExplFileDate{2023-05-15}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%



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