texlive[68507] Master/texmf-dist: l3 (10oct23)

commits+karl at tug.org commits+karl at tug.org
Tue Oct 10 22:27:01 CEST 2023


Revision: 68507
          https://tug.org/svn/texlive?view=revision&revision=68507
Author:   karl
Date:     2023-10-10 22:27:00 +0200 (Tue, 10 Oct 2023)
Log Message:
-----------
l3 (10oct23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3backend/README.md
    trunk/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3bitset/l3bitset.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/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/l3obsolete.txt
    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/doc/latex/l3kernel/source3body.tex
    trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3packages/README.md
    trunk/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
    trunk/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
    trunk/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
    trunk/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
    trunk/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/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/source/latex/l3packages/l3keys2e/l3keys2e.dtx
    trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
    trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
    trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
    trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
    trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
    trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
    trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
    trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
    trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2023-10-10 20:27:00 UTC (rev 68507)
@@ -6,6 +6,11 @@
 
 ## [Unreleased]
 
+## [2023-10-10]
+
+### Changed
+- Track `expl3` changes
+
 ## [2023-04-19]
 
 ### Changed
@@ -296,7 +301,8 @@
 - Include `l3backend` in file names
 - Moved backend code to internal for each 'parent' module
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-04-19...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD
+[2023-10-10]: https://github.com/latex3/latex3/compare/2023-04-19...2023-10-10
 [2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
 [2023-03-30]: https://github.com/latex3/latex3/compare/2023-01-16...2023-03-30
 [2023-01-16]: https://github.com/latex3/latex3/compare/2022-10-26...2023-01-16

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2023-10-10 20:27:00 UTC (rev 68507)
@@ -1,7 +1,7 @@
 LaTeX3 Backend Drivers
 ======================
 
-Release 2023-04-19
+Release 2023-10-10
 
 This package forms parts of `expl3`, and contains the code used to interface
 with backends (drivers) across the `expl3` codebase. The functions here are

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

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2023-10-10 20:27:00 UTC (rev 68507)
@@ -7,6 +7,12 @@
 
 ## [Unreleased]
 
+## [2023-10-10]
+
+### Changed
+- Slowdown a l3benchmark slow branch code slightly to gain test suite
+  robustness (issue \#1274)
+
 ## [2023-05-11]
 
 ### Changed
@@ -275,7 +281,8 @@
 - New `l3color` module using `xcolor`-like expression syntax
 - New `l3draw` module, based on `pgf` layer of the TikZ system
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-11...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD
+[2023-10-10]: https://github.com/latex3/latex3/compare/2023-05-11...2023-10-10
 [2023-05-11]: https://github.com/latex3/latex3/compare/2023-04-19...2023-05-11
 [2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
 [2023-03-30]: https://github.com/latex3/latex3/compare/2023-01-24...2023-03-30

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2023-10-10 20:27:00 UTC (rev 68507)
@@ -1,7 +1,7 @@
 Experimental LaTeX3 Concepts
 ============================
 
-Release 2023-05-11
+Release 2023-10-10
 
 Overview
 --------

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

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

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

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-10-10 20:27:00 UTC (rev 68507)
@@ -7,6 +7,32 @@
 
 ## [Unreleased]
 
+## [2023-10-10]
+
+### Added
+- `\iow_shipout_e:Nn`
+- Documentation for `\sys_if_timer_exist_p:` and `\sys_if_timer_exist:(TF)`.
+  They were supported since l3kernel 2021-05-25, along with `\sys_timer:`.
+- l3doc.dtx: Support for footnotes in the function and variable environment  
+- Variants `\tl_if_single:c(TF)` and `\tl_if_single_p:c` (issue \#1272)
+- Key properties `.str_(g)set_e:N` and `.tl_(g)set_e:N`
+
+### Changed
+- Switch generally from `x`- to `e`-type variants
+- Convert `\file_if_exist:n(TF)` to expandable status,
+  adding predicate version
+- Standardise variants for `\prop_(g)pop:NnN(TF)`
+- Standardise variants for `\prop_(g)put:Nnn`
+- Standardise variants for `\prop_(g)put_if_new:Nnn`
+- Standardise variants for `\prop_(g)remove:Nn`
+
+### Deprecated
+- `\iow_shipout_x:Nn` in favor of `e`-type naming
+- Key properties `.str_(g)set_x:N` and `.tl_(g)set_x:N`
+
+### Fixed
+- Rare rounding error in divisions (issue \#1264)
+
 ## [2023-08-29]
 
 ### Added
@@ -1512,7 +1538,8 @@
 - Step functions have been added for dim variables,
   e.g. `\dim_step_inline:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-08-29...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD
+[2023-10-10]: https://github.com/latex3/latex3/compare/2023-08-29...2023-10-10
 [2023-08-29]: https://github.com/latex3/latex3/compare/2023-08-11...2023-08-29
 [2023-08-11]: https://github.com/latex3/latex3/compare/2023-08-03...2023-08-11
 [2023-08-03]: https://github.com/latex3/latex3/compare/2023-06-30...2023-08-03

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-10-10 20:27:00 UTC (rev 68507)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2023-08-29
+Release 2023-10-10
 
 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-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2023-10-10 20:27:00 UTC (rev 68507)
@@ -48,6 +48,8 @@
   { \texttt{ \__codedoc_meta:n {#1} } }
 \ExplSyntaxOff
 
+\newif\ifinterface
+\interfacetrue
 
 \listfiles
 
@@ -62,7 +64,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-08-29}
+\date{Released 2023-10-10}
 
 \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/l3obsolete.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt	2023-10-10 20:27:00 UTC (rev 68507)
@@ -70,6 +70,7 @@
 \tl_mixed_case:nn                        2020-01-03
 \tl_upper_case:n                         2020-01-03
 \tl_upper_case:nn                        2020-01-03
+[x-type variants]                        2023-09-27
 ---------------------------------------------------
 
 Removed functions and variables
@@ -349,6 +350,7 @@
 \iow_now_when_avail:Nn                          2012-06-05
 \iow_now_when_avail:Nx                          2012-06-05
 \iow_open_streams:                              2011-09-08
+\iow_shipout_x:Nn                               2023-09-17
 \iow_wrap:xnnnN                                 2013-01-08
 \KV_process_no_space_removal_no_sanitize:NNn    2011-09-08
 \KV_process_space_removal_no_sanitize:NNn       2011-09-08

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv	2023-10-10 20:27:00 UTC (rev 68507)
@@ -12,6 +12,7 @@
 ampersand,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,
 apfs,apfontspec,Qing Lee,https://github.com/CTeX-org/apfontspec,https://github.com/CTeX-org/apfontspec.git,https://github.com/CTeX-org/apfontspec/issues,2020-05-17,2020-05-17,
 arch,archaeologie,Lukas C. Bossert,http://www.biblatex-archaeologie.de,https://github.com/LukasCBossert/biblatex-archaeologie.git,https://github.com/LukasCBossert/biblatex-archaeologie/issues,2017-03-24,2017-03-24,
+arsenal,arsenal,Boris Veytsman,https://github.com/borisveytsman/arsenal,https://github.com/borisveytsman/arsenal,https://github.com/borisveytsman/arsenal/issues
 array,hobby,Andrew Stacey,https://github.com/loopspace/hobby,https://github.com/loopspace/hobby,https://github.com/loopspace/hobby/issues,2013-03-16,2020-10-29,
 atsign,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,
 avm,langsci-avm,Felix Kopecky,https://ctan.org/pkg/langsci-avm,https://github.com/langsci/langsci-avm,https://github.com/langsci/langsci-avm/issues,2020-03-11,2020-03-11,
@@ -120,6 +121,7 @@
 ior,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,
 iot,iot,Island of TeX,https://islandoftex.gitlab.io,https://gitlab.com/islandoftex/texmf,https://gitlab.com/groups/islandoftex/texmf/-/issues,2023-07-18,2023-07-18,
 iow,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,
+iwonamath,iwonamath,Boris Veytsman,https://github.com/borisveytsman/iwonamath,https://github.com/borisveytsman/iwonamath,https://github.com/borisveytsman/iwonamath/issues
 jiazhu,jiazhu,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2020-05-17,2020-05-17,
 job,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,
 kernel,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,
@@ -197,6 +199,7 @@
 prg,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,
 primargs,morewrites,Bruno Le Floch,https://github.com/blefloch/latex-morewrites,https://github.com/blefloch/latex-morewrites.git,https://github.com/blefloch/latex-morewrites/issues,2013-03-16,2015-09-22,
 prop,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,
+property,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,
 pseudo,pseudo,Magnus Lie Hetland,https://github.com/mlhetland/pseudo.sty,https://github.com/mlhetland/pseudo.sty.git,https://github.com/mlhetland/pseudo.sty/issues,2019-06-24,2019-06-24,
 ptex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2015-07-28,2015-07-28,
 ptxcd,ptxcd, Marei Peischl,,,,2020-07-27,2020-07-27,Used for specific corporate design templates
@@ -238,6 +241,7 @@
 tasks,tasks,Clemens Niederberger,https://github.com/cgnieder/tasks/,https://github.com/cgnieder/tasks.git,https://github.com/cgnieder/cgnieder/tasks/issues,2013-03-16,2020-04-14,
 tblr,tabularray,Jianrui Lyu,https://github.com/lvjr/tabularray,https://github.com/lvjr/tabularray.git,https://github.com/lvjr/tabularray/issues,2022-04-02,2022-04-02,
 tcobox,tcolorbox,Thomas F. Sturm,https://github.com/T-F-S/tcolorbox,https://github.com/T-F-S/tcolorbox.git,https://github.com/T-F-S/tcolorbox/issues,2020-02-19,2020-02-19,
+template,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,
 term,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,
 tex,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,
 text,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2020-01-15,2020-01-15,

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-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2023-10-10 20:27:00 UTC (rev 68507)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-08-29}
+\date{Released 2023-10-10}
 
 \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-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2023-10-10 20:27:00 UTC (rev 68507)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-08-29}
+\date{Released 2023-10-10}
 
 \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-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2023-10-10 20:27:00 UTC (rev 68507)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-08-29}
+\date{Released 2023-10-10}
 
 \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-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,6 +40,10 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \documentclass[kernel]{l3doc}
+
+\newif\ifinterface
+\interfacefalse
+
 \listfiles
 
 \begin{document}
@@ -53,7 +57,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-08-29}
+\date{Released 2023-10-10}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,8 +44,16 @@
 \setlength\parskip{\baselineskip}
 
 \noindent
+\ifinterface
 This is the reference documentation for the \pkg{expl3}
-programming environment. The \pkg{expl3} modules set up an experimental
+programming environment; see the matching \pkg{source3} PDF
+for the typeset sources.
+\else
+This is the typset sources for the \pkg{expl3}
+programming environment; see the matching \pkg{interface3} PDF
+for the API reference manual.
+\fi
+The \pkg{expl3} modules set up a
 naming scheme for \LaTeX{} commands, which allow the \LaTeX{} programmer
 to systematically name functions and variables, and specify the argument
 types of functions.

Modified: trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md	2023-10-10 20:27:00 UTC (rev 68507)
@@ -7,8 +7,14 @@
 
 ## [Unreleased]
 
+## [2023-10-10]
+
+### Changed
+- Track `expl3` changes
+
 ## [2023-08-29]
 
+### Added
 - Re-add `\GetDocumentCommandArgSpec`, etc., to `xparse` stub
 
 ## [2023-02-02]
@@ -231,7 +237,8 @@
 - Switch to ISO date format
 - Improve cross-module use of internal functions
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-08-29...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD
+[2023-10-10]: https://github.com/latex3/latex3/compare/2023-08-29...2023-10-10
 [2023-08-29]: https://github.com/latex3/latex3/compare/2023-02-02...2023-08-29
 [2023-02-02]: https://github.com/latex3/latex3/compare/2023-02-01...2023-02-02
 [2023-02-01]: https://github.com/latex3/latex3/compare/2023-01-16...2023-02-01

Modified: trunk/Master/texmf-dist/doc/latex/l3packages/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3packages/README.md	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/doc/latex/l3packages/README.md	2023-10-10 20:27:00 UTC (rev 68507)
@@ -1,7 +1,7 @@
 LaTeX3 High-Level Concepts
 ==========================
 
-Release 2023-08-29
+Release 2023-10-10
 
 Overview
 --------
@@ -20,13 +20,13 @@
 
 Currently included in the CTAN release of `l3packages` are the following
 bundles:
-* `l3keys2e`
+* `l3keys2e` (deprecated in favor of updated LaTeX kernel methods)
 * `xfp`     (from 2022-06-01 part of the LaTeX format)
-* `xfrac`
-* `xparse`
+* `xfrac`   
+* `xparse`  (deprecated in favor of elements move to the LaTeX kernel)
 * `xtemplate`
 
-`l3keys2e`
+`l3keys2e` (deprecated)
 ----------
 
 The `l3keys2e` package allows keys defined using `l3keys` to be used as package

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

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

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

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

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

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -70,27 +70,27 @@
 %    \begin{macrocode}
 \ProvidesExplFile
 %<*dvipdfmx>
-  {l3backend-dvipdfmx.def}{2023-04-19}{}
+  {l3backend-dvipdfmx.def}{2023-10-10}{}
   {L3 backend support: dvipdfmx}
 %</dvipdfmx>
 %<*dvips>
-  {l3backend-dvips.def}{2023-04-19}{}
+  {l3backend-dvips.def}{2023-10-10}{}
   {L3 backend support: dvips}
 %</dvips>
 %<*dvisvgm>
-  {l3backend-dvisvgm.def}{2023-04-19}{}
+  {l3backend-dvisvgm.def}{2023-10-10}{}
   {L3 backend support: dvisvgm}
 %</dvisvgm>
 %<*luatex>
-  {l3backend-luatex.def}{2023-04-19}{}
+  {l3backend-luatex.def}{2023-10-10}{}
   {L3 backend support: PDF output (LuaTeX)}
 %</luatex>
 %<*pdftex>
-  {l3backend-pdftex.def}{2023-04-19}{}
+  {l3backend-pdftex.def}{2023-10-10}{}
   {L3 backend support: PDF output (pdfTeX)}
 %</pdftex>
 %<*xetex>
-  {l3backend-xetex.def}{2023-04-19}{}
+  {l3backend-xetex.def}{2023-10-10}{}
   {L3 backend support: XeTeX}
 %</xetex>
 %    \end{macrocode}
@@ -137,8 +137,7 @@
 % \begin{macro}
 %   {
 %     \__kernel_backend_literal:e,
-%     \__kernel_backend_literal:n,
-%     \__kernel_backend_literal:x
+%     \__kernel_backend_literal:n
 %   }
 %  The one shared function for all backends is access to the basic
 %  \tn{special} primitive: it has slightly odd expansion behaviour
@@ -147,7 +146,6 @@
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
   { \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -175,7 +173,7 @@
 %    \end{macrocode}
 %
 % \begin{macro}
-%   {\__kernel_backend_literal_postscript:n, \__kernel_backend_literal_postscript:x}
+%   {\__kernel_backend_literal_postscript:n, \__kernel_backend_literal_postscript:e}
 %   Literal PostScript can be included using a few low-level formats. Here,
 %   we use the form with no positioning: this is overall more convenient as
 %   a wrapper. Note that this does require that where position is important,
@@ -183,11 +181,11 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \__kernel_backend_literal_postscript:n #1
   { \__kernel_backend_literal:n { ps:: #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_postscript:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_postscript:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\__kernel_backend_postscript:n, \__kernel_backend_postscript:x}
+% \begin{macro}{\__kernel_backend_postscript:n, \__kernel_backend_postscript:e}
 %   PostScript data that does have positioning, and also applying
 %   a shift to |SDict| (which is not done automatically by
 %   |ps:| or |ps::|, in contrast to |!| or |"|).
@@ -194,7 +192,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \__kernel_backend_postscript:n #1
   { \__kernel_backend_literal:n { ps: SDict ~ begin ~ #1 ~ end } }
-\cs_generate_variant:Nn \__kernel_backend_postscript:n { x }
+\cs_generate_variant:Nn \__kernel_backend_postscript:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -265,7 +263,7 @@
 % to have more code in Lua means we create two independent files using
 % shared DocStrip code.
 %
-% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:x}
+% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:e}
 %   This is equivalent to \verb|\special{pdf:}| but the engine can
 %   track it. Without the \texttt{direct} keyword everything is kept in
 %   sync: the transformation matrix is set to the current point automatically.
@@ -282,11 +280,11 @@
 %</pdftex>
       { \exp_not:n {#1} }
   }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\__kernel_backend_literal_page:n}
+% \begin{macro}{\__kernel_backend_literal_page:n, \__kernel_backend_literal_page:e}
 %  Page literals are pretty simple. To avoid an expansion, we write out
 %  by hand.
 %    \begin{macrocode}
@@ -300,6 +298,16 @@
 %</pdftex>
         page { \exp_not:n {#1} }
   }
+\cs_new_protected:Npn \__kernel_backend_literal_page:e #1
+  {
+%<*luatex>
+    \tex_pdfextension:D literal ~
+%</luatex>
+%<*pdftex>
+    \tex_pdfliteral:D
+%</pdftex>
+        page {#1}
+  }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -327,7 +335,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\__kernel_backend_matrix:n, \__kernel_backend_matrix:x}
+% \begin{macro}{\__kernel_backend_matrix:n, \__kernel_backend_matrix:e}
 %   Here the appropriate function is set up to insert an affine matrix
 %   into the PDF. With \pdfTeX{} and \LuaTeX{} in direct PDF output mode there
 %   is a primitive for this, which only needs the rotation/scaling/skew part.
@@ -342,7 +350,7 @@
 %</pdftex>
         { \exp_not:n {#1} }
   }
-\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
+\cs_generate_variant:Nn \__kernel_backend_matrix:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -362,7 +370,7 @@
 % for both backends, with some \texttt{clean up} for \XeTeX{} as
 % required.
 %
-% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:x}
+% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:e}
 %   Undocumented but equivalent to \pdfTeX{}'s |literal| keyword. It's similar to
 %   be not the same as the documented |contents| keyword as that adds a |q|/|Q|
 %   pair.
@@ -369,7 +377,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
   { \__kernel_backend_literal:n { pdf:literal~ #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -404,7 +412,7 @@
 %<*dvisvgm>
 %    \end{macrocode}
 %
-% \begin{macro}{\__kernel_backend_literal_svg:n, \__kernel_backend_literal_svg:x}
+% \begin{macro}{\__kernel_backend_literal_svg:n, \__kernel_backend_literal_svg:e}
 %   Unlike the other backends, the requirements for making SVG files mean
 %   that we can't conveniently transform all operations to the current point.
 %   That makes life a bit more tricky later as that needs to be accounted for.
@@ -413,7 +421,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \__kernel_backend_literal_svg:n #1
   { \__kernel_backend_literal:n { dvisvgm:raw~ #1 { ?nl } } }
-\cs_generate_variant:Nn \__kernel_backend_literal_svg:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_svg:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -427,8 +435,8 @@
 % \end{variable}
 %
 % \begin{macro}{\__kernel_backend_scope_begin:, \__kernel_backend_scope_end:}
-% \begin{macro}{\__kernel_backend_scope_begin:n, \__kernel_backend_scope_begin:x}
-% \begin{macro}{\__kernel_backend_scope:n, \__kernel_backend_scope:x}
+% \begin{macro}{\__kernel_backend_scope_begin:n, \__kernel_backend_scope_begin:e}
+% \begin{macro}{\__kernel_backend_scope:n, \__kernel_backend_scope:e}
 %   In SVG, the need to attach concepts to a scope means we need to be sure we
 %   will close all of the open scopes. That is easiest done if we only need
 %   an outer \enquote{wrapper} \texttt{begin}/\texttt{end} pair, and within
@@ -464,13 +472,13 @@
     \group_begin:
       \int_gset:Nn \g__kernel_backend_scope_int { 1 }
   }
-\cs_generate_variant:Nn \__kernel_backend_scope_begin:n { x }
+\cs_generate_variant:Nn \__kernel_backend_scope_begin:n { e }
 \cs_new_protected:Npn \__kernel_backend_scope:n #1
   {
     \__kernel_backend_literal_svg:n { <g ~ #1 > }
     \int_gincr:N \g__kernel_backend_scope_int
   }
-\cs_generate_variant:Nn \__kernel_backend_scope:n { x }
+\cs_generate_variant:Nn \__kernel_backend_scope:n { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -82,7 +82,7 @@
     \__kernel_backend_literal_postscript:n
       { Resolution~72~div~VResolution~72~div~scale }
     \__kernel_backend_literal_postscript:n { DVImag~dup~scale }
-    \__kernel_backend_literal_postscript:x
+    \__kernel_backend_literal_postscript:e
       {
         0 ~
         \dim_to_decimal_in_bp:n { \box_dp:N #1 } ~
@@ -111,7 +111,7 @@
   {
     \__kernel_backend_scope_begin:
     \__kernel_backend_align_begin:
-    \__kernel_backend_literal_postscript:x
+    \__kernel_backend_literal_postscript:e
       {
         \fp_compare:nNnTF {#2} = \c_zero_fp
           { 0 }
@@ -134,7 +134,7 @@
   {
     \__kernel_backend_scope_begin:
     \__kernel_backend_align_begin:
-    \__kernel_backend_literal_postscript:x
+    \__kernel_backend_literal_postscript:e
       {
         \fp_eval:n { round ( #2 , 5 ) } ~
         \fp_eval:n { round ( #3 , 5 ) } ~
@@ -169,7 +169,7 @@
 \cs_new_protected:Npn \@@_backend_clip:N #1
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal_pdf:x
+    \__kernel_backend_literal_pdf:e
       {
         0~
         \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -204,7 +204,7 @@
     \fp_compare:nNnT \l_@@_backend_cos_fp = \c_zero_fp
       { \fp_zero:N \l_@@_backend_cos_fp }
     \fp_set:Nn \l_@@_backend_sin_fp { round ( sind ( #2 ) , 5 ) }
-    \__kernel_backend_matrix:x
+    \__kernel_backend_matrix:e
       {
         \fp_use:N \l_@@_backend_cos_fp \c_space_tl
         \fp_compare:nNnTF \l_@@_backend_sin_fp = \c_zero_fp
@@ -234,7 +234,7 @@
 \cs_new_protected:Npn \@@_backend_scale:Nnn #1#2#3
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_matrix:x
+    \__kernel_backend_matrix:e
       {
         \fp_eval:n { round ( #2 , 5 ) } ~
         0~0~
@@ -263,7 +263,7 @@
 \cs_new_protected:Npn \@@_backend_clip:N #1
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal_pdf:x
+    \__kernel_backend_literal_pdf:e
       {
         0~
         \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -293,7 +293,7 @@
 \cs_new_protected:Npn \@@_backend_rotate_aux:Nn #1#2
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:rotate~
         \fp_compare:nNnTF {#2} = \c_zero_fp
@@ -314,7 +314,7 @@
 \cs_new_protected:Npn \@@_backend_scale:Nnn #1#2#3
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:scale~
         \fp_eval:n { round ( #2 , 5 ) } ~
@@ -350,9 +350,9 @@
 \cs_new_protected:Npn \@@_backend_clip:N #1
   {
     \int_gincr:N \g__kernel_clip_path_int
-    \__kernel_backend_literal_svg:x
+    \__kernel_backend_literal_svg:e
       { < clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " > }
-    \__kernel_backend_literal_svg:x
+    \__kernel_backend_literal_svg:e
       {
         <
           path ~ d =
@@ -387,7 +387,7 @@
             scale ( 1 , -1 )
           "
       }
-    \__kernel_backend_scope:x
+    \__kernel_backend_scope:e
       {
         clip-path =
           "url ( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int ) "
@@ -416,7 +416,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_rotate:Nn #1#2
   {
-    \__kernel_backend_scope_begin:x
+    \__kernel_backend_scope_begin:e
       {
         transform =
           "
@@ -437,7 +437,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_scale:Nnn #1#2#3
   {
-    \__kernel_backend_scope_begin:x
+    \__kernel_backend_scope_begin:e
       {
         transform =
           "

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -322,7 +322,7 @@
 % \begin{macro}[EXP]{\@@_backend_devicen_colorants:n}
 % \begin{macro}[EXP]{\@@_backend_devicen_colorants:w}
 %    \begin{macrocode}
-\cs_new:Npx \@@_backend_devicen_colorants:n #1
+\cs_new:Npe \@@_backend_devicen_colorants:n #1
   {
     \exp_not:N \tl_if_blank:nF {#1}
       {
@@ -377,7 +377,7 @@
 % \begin{macro}
 %   {
 %     \@@_backend_separation_init:nnnnn,
-%     \@@_backend_separation_init:nxxnn
+%     \@@_backend_separation_init:neenn
 %   }
 % \begin{macro}
 %   {\@@_backend_separation_init_aux:nnnnnn}
@@ -402,17 +402,17 @@
 %   ideas from \url{https://tex.stackexchange.com/q/560093} plus using
 %   the PostScript manual for other aspects.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_separation_init:nnnnn #1#2#3#4#5
+\cs_new_protected:Npe \@@_backend_separation_init:nnnnn #1#2#3#4#5
   {
     \bool_if:NT \g__kernel_backend_header_bool
       {
-        \exp_args:Nx \__kernel_backend_first_shipout:n
+        \exp_not:N \exp_args:Ne \__kernel_backend_first_shipout:n
           {
             \exp_not:N \@@_backend_separation_init_aux:nnnnnn
               { \exp_not:N \int_use:N \g_@@_model_int }
               {#1} {#2} {#3} {#4} {#5}
           }
-        \prop_gput:Nxx \exp_not:N \g_@@_backend_colorant_prop
+        \prop_gput:Nee \exp_not:N \g_@@_backend_colorant_prop
           { / \exp_not:N \str_convert_pdfname:n {#1} }
           {
             << ~
@@ -423,7 +423,7 @@
           }
       }
   }
-\cs_generate_variant:Nn \@@_backend_separation_init:nnnnn { nxx }
+\cs_generate_variant:Nn \@@_backend_separation_init:nnnnn { nee }
 \cs_new_protected:Npn \@@_backend_separation_init_aux:nnnnnn #1#2#3#4#5#6
   {
     \__kernel_backend_literal:e
@@ -552,7 +552,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_separation_init_CIELAB:nnn #1#2#3
   {
-    \@@_backend_separation_init:nxxnn
+    \@@_backend_separation_init:neenn
       {#2}
       {
         /CIEBasedABC ~
@@ -678,7 +678,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_select_iccbased:nn #1#2
   {
-    \__kernel_backend_literal_svg:x
+    \__kernel_backend_literal_svg:e
       {
         <style>
           @color-profile ~
@@ -712,7 +712,7 @@
 %    \begin{macrocode}
 %<*dvipdfmx|xetex>
 \cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
-  { \__kernel_backend_literal:x { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
+  { \__kernel_backend_literal:e { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
 %</dvipdfmx|xetex>
 %<*luatex|pdftex>
 \cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
@@ -734,7 +734,7 @@
       { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
       { \pdfmanagement_if_active_p: }
       {
-        \use:x
+        \use:e
           {
             \pdfmanagement_add:nnn
               { Page / Resources / ColorSpace }
@@ -759,7 +759,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5
   {
-    \pdf_object_unnamed_write:nx { dict }
+    \pdf_object_unnamed_write:ne { dict }
       {
         /FunctionType ~ 2
         /Domain ~ [0 ~ 1]
@@ -767,19 +767,19 @@
         /C0 ~ [#4] ~
         /C1 ~ [#5] /N ~ 1
       }
-    \exp_args:Nx \@@_backend_separation_init:nn
+    \exp_args:Ne \@@_backend_separation_init:nn
       { \str_convert_pdfname:n {#1} } {#2}
     \@@_backend_init_resource:n { color \int_use:N \g_@@_model_int }
   }
 \cs_new_protected:Npn \@@_backend_separation_init:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g_@@_model_int }
         \pdf_object_write:nnn { color \int_use:N \g_@@_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
-    \prop_gput:Nnx \g_@@_backend_colorant_prop { /#1 }
+    \prop_gput:Nne \g_@@_backend_colorant_prop { /#1 }
       { \pdf_object_ref_last: }
   }
 %    \end{macrocode}
@@ -791,7 +791,7 @@
     \pdf_object_if_exist:nF { @@_illuminant_CIELAB_ #1 }
       {
         \pdf_object_new:n { @@_illuminant_CIELAB_ #1 }
-        \pdf_object_write:nnx { @@_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nne { @@_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -820,7 +820,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_devicen_init:nnn #1#2#3
   {
-    \pdf_object_unnamed_write:nx { stream }
+    \pdf_object_unnamed_write:ne { stream }
       {
         {
           /FunctionType ~ 4 ~
@@ -842,7 +842,7 @@
         }
         { {#3} }
      }
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g_@@_model_int }
         \pdf_object_write:nnn { color \int_use:N \g_@@_model_int } { array }
@@ -875,7 +875,7 @@
     \pdf_object_if_exist:nF { @@_icc_ #1 }
       {
         \pdf_object_new:n { @@_icc_ #1 }
-        \pdf_object_write:nnx { @@_icc_ #1 } { fstream }
+        \pdf_object_write:nne { @@_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -884,7 +884,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { @@_icc_ #1 } }
     \@@_backend_init_resource:n { color \int_use:N \g_@@_model_int }
   }
@@ -906,7 +906,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { @@_icc_ #1 } }
     \@@_backend_init_resource:n { Default #2 }
   }
@@ -965,12 +965,12 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_fill_separation:nn #1#2
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       { pdf : bc ~ fill ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
   }
 \cs_new_protected:Npn \@@_backend_stroke_separation:nn #1#2
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       { pdf : bc ~ stroke ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
   }
 \cs_new_eq:NN \@@_backend_fill_devicen:nn \@@_backend_fill_separation:nn
@@ -1171,7 +1171,7 @@
 \cs_new_protected:Npn \@@_backend_stroke_cmyk:w
   #1 ~ #2 ~ #3 ~ #4 \s_@@_stop
   {
-    \use:x
+    \use:e
       {
         \@@_backend:nnn
           { \fp_eval:n { -100 * ( 1 - min ( 1 , #1 + #4 ) ) } }
@@ -1181,7 +1181,7 @@
   }
 \cs_new_protected:Npn \@@_backend_stroke_gray:n #1
   {
-    \use:x
+    \use:e
       {
         \@@_backend_stroke_gray_aux:n
           { \fp_eval:n { 100 * (#1) } }
@@ -1194,7 +1194,7 @@
 \cs_new_protected:Npn \@@_backend_stroke_rgb:w
   #1 ~ #2 ~ #3 \s_@@_stop
   {
-    \use:x
+    \use:e
       {
         \@@_backend:nnn
           { \fp_eval:n { 100 * (#1) } }
@@ -1202,7 +1202,7 @@
           { \fp_eval:n { 100 * (#3) } }
       }
   }
-\cs_new_protected:Npx \@@_backend:nnn #1#2#3
+\cs_new_protected:Npe \@@_backend:nnn #1#2#3
   {
     \__kernel_backend_scope:n
       {

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -66,12 +66,12 @@
 %<*dvips>
 %    \end{macrocode}
 %
-% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:x}
+% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
 %   The same as literal PostScript: same arguments about positioning apply
 %   her.
 %    \begin{macrocode}
 \cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_postscript:n
-\cs_generate_variant:Nn \@@_backend_literal:n { x }
+\cs_generate_variant:Nn \@@_backend_literal:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -125,7 +125,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_moveto:nn #1#2
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~
         \dim_to_decimal_in_bp:n {#2} ~ moveto
@@ -133,7 +133,7 @@
   }
 \cs_new_protected:Npn \@@_backend_lineto:nn #1#2
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~
         \dim_to_decimal_in_bp:n {#2} ~ lineto
@@ -141,7 +141,7 @@
   }
 \cs_new_protected:Npn \@@_backend_rectangle:nnnn #1#2#3#4
   {
-     \@@_backend_literal:x
+     \@@_backend_literal:e
        {
          \dim_to_decimal_in_bp:n {#4} ~ \dim_to_decimal_in_bp:n {#3} ~
          \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
@@ -150,7 +150,7 @@
   }
 \cs_new_protected:Npn \@@_backend_curveto:nnnnnn #1#2#3#4#5#6
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -205,7 +205,7 @@
     \@@_backend_literal:n { grestore }
     \bool_if:NT \g_@@_draw_clip_bool
       {
-        \@@_backend_literal:x
+        \@@_backend_literal:e
           {
             \bool_if:NT \g_@@_draw_eor_bool { eo }
             clip
@@ -221,7 +221,7 @@
   }
 \cs_new_protected:Npn \@@_backend_fill:
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       {
         \bool_if:NT \g_@@_draw_eor_bool { eo }
         fill
@@ -228,7 +228,7 @@
       }
     \bool_if:NT \g_@@_draw_clip_bool
       {
-        \@@_backend_literal:x
+        \@@_backend_literal:e
           {
             \bool_if:NT \g_@@_draw_eor_bool { eo }
             clip
@@ -239,7 +239,7 @@
   }
 \cs_new_protected:Npn \@@_backend_fillstroke:
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       {
         \bool_if:NT \g_@@_draw_eor_bool { eo }
         fill
@@ -250,7 +250,7 @@
     \@@_backend_literal:n { grestore }
     \bool_if:NT \g_@@_draw_clip_bool
       {
-        \@@_backend_literal:x
+        \@@_backend_literal:e
           {
             \bool_if:NT \g_@@_draw_eor_bool { eo }
             clip
@@ -266,7 +266,7 @@
   {
     \bool_if:NT \g_@@_draw_clip_bool
       {
-        \@@_backend_literal:x
+        \@@_backend_literal:e
           {
             \bool_if:NT \g_@@_draw_eor_bool { eo }
             clip
@@ -293,7 +293,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_dash_pattern:nn #1#2
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       {
         [
           \exp_args:Nf \use:n
@@ -306,7 +306,7 @@
   { ~ \dim_to_decimal_in_bp:n {#1} }
 \cs_new_protected:Npn \@@_backend_linewidth:n #1
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ setlinewidth }
   }
 \cs_new_protected:Npn \@@_backend_miterlimit:n #1
@@ -400,11 +400,11 @@
 %
 % \subsubsection{Drawing}
 %
-% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:x}
+% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
 %   Pass data through using a dedicated interface.
 %    \begin{macrocode}
 \cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \@@_backend_literal:n { x }
+\cs_generate_variant:Nn \@@_backend_literal:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -434,17 +434,17 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_moveto:nn #1#2
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
   }
 \cs_new_protected:Npn \@@_backend_lineto:nn #1#2
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
   }
 \cs_new_protected:Npn \@@_backend_curveto:nnnnnn #1#2#3#4#5#6
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -454,7 +454,7 @@
  }
 \cs_new_protected:Npn \@@_backend_rectangle:nnnn #1#2#3#4
   {
-     \@@_backend_literal:x
+     \@@_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -500,17 +500,17 @@
   { \@@_backend_literal:n { s } }
 \cs_new_protected:Npn \@@_backend_fill:
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       { f \bool_if:NT \g_@@_draw_eor_bool * }
   }
 \cs_new_protected:Npn \@@_backend_fillstroke:
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       { B \bool_if:NT \g_@@_draw_eor_bool * }
   }
 \cs_new_protected:Npn \@@_backend_clip:
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       { W \bool_if:NT \g_@@_draw_eor_bool * }
   }
 \cs_new_protected:Npn \@@_backend_discardpath:
@@ -532,7 +532,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_dash_pattern:nn #1#2
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       {
         [
           \exp_args:Nf \use:n
@@ -545,11 +545,11 @@
   { ~ \dim_to_decimal_in_bp:n {#1} }
 \cs_new_protected:Npn \@@_backend_linewidth:n #1
   {
-    \@@_backend_literal:x
+    \@@_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ w }
   }
 \cs_new_protected:Npn \@@_backend_miterlimit:n #1
-  { \@@_backend_literal:x { #1 ~ M } }
+  { \@@_backend_literal:e { #1 ~ M } }
 \cs_new_protected:Npn \@@_backend_cap_butt:
   { \@@_backend_literal:n { 0 ~ J } }
 \cs_new_protected:Npn \@@_backend_cap_round:
@@ -594,7 +594,7 @@
 %<*dvipdfmx|xetex>
 \cs_new_protected:Npn \@@_backend_cm_aux:nnnn #1#2#3#4
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:rotate~
         \fp_compare:nNnTF {#1} = \c_zero_fp
@@ -601,13 +601,13 @@
           { 0 }
           { \fp_eval:n { round ( -#1 , 5 ) } }
       }
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:scale~
         \fp_eval:n { round ( #2 , 5 ) } ~
         \fp_eval:n { round ( #3 , 5 ) }
       }
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:rotate~
         \fp_compare:nNnTF {#4} = \c_zero_fp
@@ -678,7 +678,7 @@
 %<*dvipdfmx|xetex>
 \cs_new_protected:Npn \@@_backend_cm_decompose:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \@@_backend_cm_decompose_auxi:nnnnN
           { \fp_eval:n { (#1 + #4) / 2 } }
@@ -690,7 +690,7 @@
   }
 \cs_new_protected:Npn \@@_backend_cm_decompose_auxi:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \@@_backend_cm_decompose_auxii:nnnnN
           { \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
@@ -702,7 +702,7 @@
   }
 \cs_new_protected:Npn \@@_backend_cm_decompose_auxii:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \@@_backend_cm_decompose_auxiii:nnnnN
           { \fp_eval:n { ( #4 - #3 ) / 2 } }
@@ -760,11 +760,11 @@
 %<*dvisvgm>
 %    \end{macrocode}
 %
-% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:x}
+% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
 %   The same as the more general literal call.
 %    \begin{macrocode}
 \cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_svg:n
-\cs_generate_variant:Nn \@@_backend_literal:n { x }
+\cs_generate_variant:Nn \@@_backend_literal:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -834,7 +834,7 @@
   }
 \cs_new_protected:Npn \@@_backend_add_to_path:n #1
   {
-    \tl_gset:Nx \g_@@_backend_path_tl
+    \tl_gset:Ne \g_@@_backend_path_tl
       {
         \g_@@_backend_path_tl
         \tl_if_empty:NF \g_@@_backend_path_tl { \c_space_tl }
@@ -885,7 +885,7 @@
     \bool_if:NTF \g_@@_draw_clip_bool
       {
         \int_gincr:N \g__kernel_clip_path_int
-        \@@_backend_literal:x
+        \@@_backend_literal:e
           {
             < clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " >
               { ?nl }
@@ -897,7 +897,7 @@
                 #1
             />
           }
-        \__kernel_backend_scope:x
+        \__kernel_backend_scope:e
           {
             clip-path =
               "url( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int)"
@@ -904,7 +904,7 @@
           }
       }
       {
-        \@@_backend_literal:x
+        \@@_backend_literal:e
           { <path ~ d=" \g_@@_backend_path_tl " ~ #1 /> }
       }
     \tl_gclear:N \g_@@_backend_path_tl
@@ -930,7 +930,7 @@
     \bool_if:NT \g_@@_draw_clip_bool
       {
         \int_gincr:N \g__kernel_clip_path_int
-        \@@_backend_literal:x
+        \@@_backend_literal:e
           {
             < clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " >
               { ?nl }
@@ -937,7 +937,7 @@
             <path~d=" \g_@@_backend_path_tl "/> { ?nl }
             < /clipPath >
           }
-        \__kernel_backend_scope:x
+        \__kernel_backend_scope:e
           {
             clip-path =
               "url( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int)"
@@ -968,7 +968,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_dash_pattern:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \@@_backend_dash_aux:nn
           { \clist_map_function:nN {#1} \@@_backend_dash:n }
@@ -979,7 +979,7 @@
   { , \dim_to_decimal_in_bp:n {#1} }
 \cs_new_protected:Npn \@@_backend_dash_aux:nn #1#2
   {
-    \__kernel_backend_scope:x
+    \__kernel_backend_scope:e
       {
         stroke-dasharray =
           "
@@ -991,9 +991,9 @@
       }
   }
 \cs_new_protected:Npn \@@_backend_linewidth:n #1
-  { \__kernel_backend_scope:x { stroke-width=" \dim_to_decimal:n {#1} " } }
+  { \__kernel_backend_scope:e { stroke-width=" \dim_to_decimal:n {#1} " } }
 \cs_new_protected:Npn \@@_backend_miterlimit:n #1
-  { \__kernel_backend_scope:x { stroke-miterlimit=" #1 " } }
+  { \__kernel_backend_scope:e { stroke-miterlimit=" #1 " } }
 \cs_new_protected:Npn \@@_backend_cap_butt:
   { \__kernel_backend_scope:n { stroke-linecap="butt" } }
 \cs_new_protected:Npn \@@_backend_cap_round:

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -107,7 +107,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_include_eps:n #1
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         PSfile = #1 \c_space_tl
         llx = \dim_to_decimal_in_bp:n \l_@@_llx_dim \c_space_tl
@@ -185,7 +185,7 @@
   {
     \int_zero:N \l_@@_page_int
     \tl_clear:N \l_@@_pagebox_tl
-    \tl_set:Nx \l_@@_attr_tl
+    \tl_set:Ne \l_@@_attr_tl
       {
         \tl_if_empty:NF \l_@@_decodearray_str
           { :D \l_@@_decodearray_str }
@@ -202,7 +202,7 @@
   {
     \tl_clear:N \l_@@_decodearray_str
     \bool_set_false:N \l_@@_interpolate_bool
-    \tl_set:Nx \l_@@_attr_tl
+    \tl_set:Ne \l_@@_attr_tl
       {
         : \l_@@_pagebox_tl
         \int_compare:nNnT \l_@@_page_int > 1
@@ -214,7 +214,7 @@
   }
 \cs_new_protected:Npn \@@_backend_getbb_auxi:n #1
   {
-    \@@_bb_restore:xF { #1 \l_@@_attr_tl }
+    \@@_bb_restore:eF { #1 \l_@@_attr_tl }
       { \@@_backend_getbb_auxii:n {#1} }
   }
 %    \end{macrocode}
@@ -230,7 +230,7 @@
       { \@@_backend_dequote:w #1 " #1 " \s_@@_stop }
     \int_const:cn { c_@@_ #1 \l_@@_attr_tl _int }
       { \tex_the:D \tex_pdflastximage:D }
-    \@@_bb_save:x { #1 \l_@@_attr_tl }
+    \@@_bb_save:e { #1 \l_@@_attr_tl }
   }
 \cs_new_protected:Npn \@@_backend_getbb_auxiii:n #1
   {
@@ -310,7 +310,7 @@
           \l_@@_backend_dir_str
           \l_@@_backend_name_str
           \l_@@_backend_ext_str
-        \exp_args:Nx \@@_backend_getbb_eps:nn
+        \exp_args:Ne \@@_backend_getbb_eps:nn
           {
             \exp_args:Ne \__kernel_file_name_quote:n
               {
@@ -336,7 +336,7 @@
       {
         \file_parse_full_name:nNNN {#1}
           \l_@@_backend_dir_str \l_@@_backend_name_str \l_@@_backend_ext_str
-        \exp_args:Nx \@@_backend_include_pdf:n
+        \exp_args:Ne \@@_backend_include_pdf:n
           {
             \exp_args:Ne \__kernel_file_name_quote:n
               {
@@ -436,7 +436,7 @@
 %     \@@_backend_include_bmp:n ,
 %   }
 %  \begin{macro}{\@@_backend_include_auxi:nn}
-%  \begin{macro}{\@@_backend_include_auxii:nnn, \@@_backend_include_auxii:xnn}
+%  \begin{macro}{\@@_backend_include_auxii:nnn, \@@_backend_include_auxii:enn}
 %  \begin{macro}{\@@_backend_include_auxiii:nnn}
 %   The special syntax depends on the file type. There is a difference in
 %   how PDF graphics are best handled between |dvipdfmx| and \XeTeX{}: for
@@ -445,7 +445,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_include_eps:n #1
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         PSfile = #1 \c_space_tl
         llx = \dim_to_decimal_in_bp:n \l_@@_llx_dim \c_space_tl
@@ -472,7 +472,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_include_auxi:nn #1#2
   {
-    \@@_backend_include_auxii:xnn
+    \@@_backend_include_auxii:enn
       {
         \tl_if_empty:NF \l_@@_pagebox_tl
           { : \l_@@_pagebox_tl }
@@ -489,12 +489,12 @@
   {
     \int_if_exist:cTF { c_@@_ #2#1 _int }
       {
-        \__kernel_backend_literal:x
+        \__kernel_backend_literal:e
           { pdf:usexobj~@graphic \int_use:c { c_@@_ #2#1 _int } }
       }
       { \@@_backend_include_auxiii:nnn {#2} {#1} {#3} }
   }
-\cs_generate_variant:Nn \@@_backend_include_auxii:nnn { x }
+\cs_generate_variant:Nn \@@_backend_include_auxii:nnn { e }
 %    \end{macrocode}
 %  Inclusion using the specials is relatively straight-forward, but there
 %  is one wrinkle. To get the |pagebox| correct for PDF graphics in all cases,
@@ -505,7 +505,7 @@
   {
     \int_gincr:N \g_@@_track_int
     \int_const:cn { c_@@_ #1#2 _int } { \g_@@_track_int }
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         pdf:#3~
         @graphic \int_use:c { c_@@_ #1#2 _int } ~
@@ -612,7 +612,7 @@
   }
 \cs_new_protected:Npn \@@_backend_getbb_auxiv:nnNnn #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \@@_backend_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
           {
@@ -750,10 +750,10 @@
   }
 \cs_new_protected:Npn \@@_backend_getbb_svg_auxi:nNn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \cs_set_protected:Npn \@@_backend_getbb_svg_auxii:w
-          ####1 \tl_to_str:n {#1} = ####2 \tl_to_str:n {#1} = ####3
+          ##1 \tl_to_str:n {#1} = ##2 \tl_to_str:n {#1} = ##3
           \s_@@_stop
       }
       {
@@ -772,7 +772,7 @@
                 ##2 \s_@@_stop
           }
       }
-    \use:x
+    \use:e
       {
         \@@_backend_getbb_svg_auxii:w #3
           \tl_to_str:n {#1} = \tl_to_str:n {#1} =
@@ -855,7 +855,7 @@
   { \@@_backend_include:nn { pdffile } {#1} }
 \cs_new_protected:Npn \@@_backend_include:nn #1#2
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         #1 = #2 \c_space_tl
         llx = \dim_to_decimal_in_bp:n \l_@@_llx_dim \c_space_tl
@@ -892,7 +892,7 @@
       {
         \hbox:n
           {
-            \__kernel_backend_literal:x
+            \__kernel_backend_literal:e
               {
                 dvisvgm:img~
                 \dim_to_decimal:n { \l_@@_urx_dim } ~

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -73,7 +73,7 @@
 %
 % \begin{macro}{\@@_backend_select:n,\@@_backend_select_aux:n}
 % \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
-% \begin{macro}{\@@_backend:nnn, \@@_backend:xnn}
+% \begin{macro}{\@@_backend:nnn, \@@_backend:enn}
 %   No stack so set values directly. The need to deal with Distiller and
 %   Ghostscript separately means we use a common auxiliary: the two
 %   systems require different PostScript for transparency. This is
@@ -83,7 +83,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_select:n #1
   {
-    \exp_args:Nx \@@_backend_select_aux:n
+    \exp_args:Ne \@@_backend_select_aux:n
       { \fp_eval:n { min(max(0,#1),1) } }
   }
 \cs_new_protected:Npn \@@_backend_select_aux:n #1
@@ -93,7 +93,7 @@
   }
 \cs_new_protected:Npn \@@_backend_fill:n #1
   {
-    \@@_backend:xnn
+    \@@_backend:enn
       { \fp_eval:n { min(max(0,#1),1) } }
       { fill }
       { ca }
@@ -100,7 +100,7 @@
   }
 \cs_new_protected:Npn \@@_backend_stroke:n #1
   {
-    \@@_backend:xnn
+    \@@_backend:enn
       { \fp_eval:n { min(max(0,#1),1) } }
       { stroke }
       { CA }
@@ -124,7 +124,7 @@
         ifelse
       }
   }
-\cs_generate_variant:Nn \@@_backend:nnn { x }
+\cs_generate_variant:Nn \@@_backend:nnn { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -170,7 +170,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_select:n #1
  {
-   \exp_args:Nx \@@_backend_select_aux:n
+   \exp_args:Ne \@@_backend_select_aux:n
      { \fp_eval:n { min(max(0,#1),1) } }
  }
 \cs_new_protected:Npn \@@_backend_select_aux:n #1
@@ -210,19 +210,19 @@
 % \end{macro}
 %
 % \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
-% \begin{macro}{\@@_backend_fillstroke:nn, \@@_backend_fillstroke:xx}
+% \begin{macro}{\@@_backend_fillstroke:nn, \@@_backend_fillstroke:ee}
 %   For separate fill and stroke, we need to work out if we need to do
 %   more work or if we can stick to a single setting.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_fill:n #1
   {
-    \@@_backend_fill_stroke:xx
+    \@@_backend_fill_stroke:ee
       { \fp_eval:n { min(max(0,#1),1) } }
       \l_@@_backend_stroke_tl
   }
 \cs_new_protected:Npn \@@_backend_stroke:n #1
   {
-    \@@_backend_fill_stroke:xx
+    \@@_backend_fill_stroke:ee
       \l_@@_backend_fill_tl
       { \fp_eval:n { min(max(0,#1),1) } }
   }
@@ -249,7 +249,7 @@
         \group_insert_after:N \@@_backend_reset:
       }
   }
-\cs_generate_variant:Nn \@@_backend_fill_stroke:nn { xx }
+\cs_generate_variant:Nn \@@_backend_fill_stroke:nn { ee }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -274,7 +274,7 @@
 \cs_new_protected:Npn \@@_backend_stroke:n #1
   { \@@_backend:nn { {#1} } { stroke- } }
 \cs_new_protected:Npn \@@_backend:nn #1#2
-  { \__kernel_backend_scope:x { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
+  { \__kernel_backend_scope:e { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -91,12 +91,12 @@
 %<*dvips>
 %    \end{macrocode}
 %
-% \begin{macro}{\@@_backend_pdfmark:n, \@@_backend_pdfmark:x}
+% \begin{macro}{\@@_backend_pdfmark:n, \@@_backend_pdfmark:e}
 %   Used often enough it should be a separate function.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_pdfmark:n #1
   { \__kernel_backend_postscript:n { mark #1 ~ pdfmark } }
-\cs_generate_variant:Nn \@@_backend_pdfmark:n { x }
+\cs_generate_variant:Nn \@@_backend_pdfmark:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -138,7 +138,7 @@
 %
 % \begin{macro}
 %   {
-%     \@@_backend_object_write:nnn, \@@_backend_object_write:nnx,
+%     \@@_backend_object_write:nnn, \@@_backend_object_write:nne,
 %     \@@_backend_object_write_aux:nnn
 %   }
 % \begin{macro}
@@ -159,10 +159,10 @@
       { \@@_backend_object_ref:n {#1} }
       {#2} {#3}
   }
-\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nne }
 \cs_new_protected:Npn \@@_backend_object_write_aux:nnn #1#2#3
   {
-    \@@_backend_pdfmark:x
+    \@@_backend_pdfmark:e
       {
         /_objdef ~ #1
         /type
@@ -179,17 +179,17 @@
   }
 \cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2
   {
-    \@@_backend_pdfmark:x
+    \@@_backend_pdfmark:e
       { #1 ~0~ [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL }
   }
 \cs_new_protected:Npn \@@_backend_object_write_dict:nn #1#2
   {
-    \@@_backend_pdfmark:x
+    \@@_backend_pdfmark:e
       { #1 << \exp_not:n {#2} >> /PUT }
   }
 \cs_new_protected:Npn \@@_backend_object_write_fstream:nn #1#2
   {
-    \exp_args:Nx
+    \exp_args:Ne
       \@@_backend_object_write_fstream:nnn {#1} #2
   }
 \cs_new_protected:Npn \@@_backend_object_write_fstream:nnn #1#2#3
@@ -204,7 +204,7 @@
   }
 \cs_new_protected:Npn \@@_backend_object_write_stream:nn #1#2
   {
-    \exp_args:Nx
+    \exp_args:Ne
       \@@_backend_object_write_stream:nnn {#1} #2
   }
 \cs_new_protected:Npn \@@_backend_object_write_stream:nnn #1#2#3
@@ -220,7 +220,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:ne}
 %   No anonymous objects, so things are done manually.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_object_now:nn #1#2
@@ -230,7 +230,7 @@
       { { pdf.obj \int_use:N \g_@@_backend_object_int } }
       {#1} {#2}
   }
-\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_now:nn { ne }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -304,7 +304,7 @@
       }
     \int_gincr:N \g_@@_backend_object_int
     \int_gset_eq:NN \g_@@_backend_annotation_int \g_@@_backend_object_int
-    \@@_backend_pdfmark:x
+    \@@_backend_pdfmark:e
       {
         /_objdef { pdf.obj \int_use:N \g_@@_backend_object_int }
         pdf.rect
@@ -468,7 +468,7 @@
     \hbox_set_end:
     \@@_backend_link_minima:
     \hbox_set:Nn \l_@@_backend_model_box { Gg }
-    \exp_args:Nx \@@_backend_link_outerbox:n
+    \exp_args:Ne \@@_backend_link_outerbox:n
       {
          \int_if_odd:nTF { \value { page } }
            { \oddsidemargin }
@@ -486,7 +486,7 @@
       }
     \int_gincr:N \g_@@_backend_object_int
     \int_gset_eq:NN \g_@@_backend_link_int \g_@@_backend_object_int
-    \__kernel_backend_postscript:x
+    \__kernel_backend_postscript:e
       {
         mark
         /_objdef { pdf.obj \int_use:N \g_@@_backend_link_int }
@@ -500,7 +500,7 @@
 \cs_new_protected:Npn \@@_backend_link_minima:
   {
     \hbox_set:Nn \l_@@_backend_model_box { Gg }
-    \__kernel_backend_postscript:x
+    \__kernel_backend_postscript:e
       {
         /pdf.linkdp.pad ~
           \dim_to_decimal:n
@@ -528,7 +528,7 @@
   }
 \cs_new_protected:Npn \@@_backend_link_outerbox:n #1
   {
-    \__kernel_backend_postscript:x
+    \__kernel_backend_postscript:e
       {
         /pdf.outerbox
           [
@@ -583,9 +583,9 @@
       {
         \tl_put_right:Nn \@makecol at hook
           {
-            \box_if_empty:NF \@cclv
+            \box_if_empty:NF \l_shipout_box
               {
-                \vbox_set:Nn \@cclv
+                \vbox_set:Nn \l_shipout_box
                   {
                     \__kernel_backend_postscript:n
                       {
@@ -593,7 +593,7 @@
                           { pdf.bordertracking.continue }
                         if
                       }
-                    \vbox_unpack_drop:N \@cclv
+                    \vbox_unpack_drop:N \l_shipout_box
                     \__kernel_backend_postscript:n
                       { pdf.bordertracking.endpage }
                   }
@@ -620,7 +620,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_link_margin:n #1
   {
-    \__kernel_backend_postscript:x
+    \__kernel_backend_postscript:e
       {
         /pdf.linkmargin { \dim_to_decimal:n {#1} ~ pdf.pt.dvi } def
       }
@@ -638,7 +638,7 @@
 \cs_new_protected:Npn \@@_backend_destination:nn #1#2
   {
     \__kernel_backend_postscript:n { pdf.dest.anchor }
-    \@@_backend_pdfmark:x
+    \@@_backend_pdfmark:e
       {
         /View
         [
@@ -737,11 +737,11 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_version_major_gset:n #1
   {
-    \cs_gset:Npx \@@_backend_version_major: { \int_eval:n {#1} }
+    \cs_gset:Npe \@@_backend_version_major: { \int_eval:n {#1} }
   }
 \cs_new_protected:Npn \@@_backend_version_minor_gset:n #1
   {
-    \cs_gset:Npx \@@_backend_version_minor: { \int_eval:n {#1} }
+    \cs_gset:Npe \@@_backend_version_minor: { \int_eval:n {#1} }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -805,7 +805,7 @@
 %   space in the \LuaTeX{} version is \emph{required} as it is consumed in
 %   finding the end of the keyword.
 %    \begin{macrocode}
-\cs_new:Npx \@@_backend_annotation_last:
+\cs_new:Npe \@@_backend_annotation_last:
   {
     \exp_not:N \int_value:w
 %<*luatex>
@@ -857,7 +857,7 @@
 % \begin{macro}{\@@_backend_link_last:}
 %   Formatted for direct use.
 %    \begin{macrocode}
-\cs_new:Npx \@@_backend_link_last:
+\cs_new:Npe \@@_backend_link_last:
   {
     \exp_not:N \int_value:w
 %<*luatex>
@@ -1000,7 +1000,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nne}
 % \begin{macro}[EXP]{\@@_backend_object_write:nn}
 % \begin{macro}[EXP]{\@@_exp_not_i:nn, \@@_exp_not_ii:nn}
 %   Writing the data needs a little information about the structure of the
@@ -1037,7 +1037,7 @@
             }
         }
   }
-\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nne }
 \cs_new:Npn \@@_exp_not_i:nn #1#2 { \exp_not:n {#1} }
 \cs_new:Npn \@@_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
 %    \end{macrocode}
@@ -1045,7 +1045,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:ne}
 %   Much like writing, but direct creation.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_object_now:nn #1#2
@@ -1058,7 +1058,7 @@
 %</pdftex>
       \@@_backend_object_write:nn {#1} {#2}
   }
-\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_now:nn { ne }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1065,7 +1065,7 @@
 % \begin{macro}[EXP]{\@@_backend_object_last:}
 %   Much like annotation.
 %    \begin{macrocode}
-\cs_new:Npx \@@_backend_object_last:
+\cs_new:Npe \@@_backend_object_last:
   {
     \exp_not:N \int_value:w
 %<*luatex>
@@ -1082,7 +1082,7 @@
 % \begin{macro}[EXP]{\@@_backend_pageobject_ref:n}
 %   The usual wrapper situation; the three spaces here are essential.
 %    \begin{macrocode}
-\cs_new:Npx \@@_backend_pageobject_ref:n #1
+\cs_new:Npe \@@_backend_pageobject_ref:n #1
   {
     \exp_not:N \int_value:w
 %<*luatex>
@@ -1141,7 +1141,7 @@
 %   The availability of the primitive is not universal, so we have to test
 %   at load time.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_version_major_gset:n #1
+\cs_new_protected:Npe \@@_backend_version_major_gset:n #1
   {
 %<*luatex>
     \int_compare:nNnT \tex_luatexversion:D > { 106 }
@@ -1175,7 +1175,7 @@
 % \begin{macro}[EXP]{\@@_backend_version_major:, \@@_backend_version_minor:}
 %   As above.
 %    \begin{macrocode}
-\cs_new:Npx \@@_backend_version_major:
+\cs_new:Npe \@@_backend_version_major:
   {
 %<*luatex>
     \int_compare:nNnTF \tex_luatexversion:D > { 106 }
@@ -1226,12 +1226,12 @@
 %<*dvipdfmx|xetex>
 %    \end{macrocode}
 %
-% \begin{macro}{\@@_backend:n, \@@_backend:x}
+% \begin{macro}{\@@_backend:n, \@@_backend:e}
 %   A generic function for the backend PDF specials: used where we can.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_backend:n #1
+\cs_new_protected:Npe \@@_backend:n #1
   { \__kernel_backend_literal:n { pdf: #1 } }
-\cs_generate_variant:Nn \@@_backend:n { x }
+\cs_generate_variant:Nn \@@_backend:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1274,7 +1274,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nne}
 % \begin{macro}
 %   {
 %     \@@_backend_object_write_array:nn   ,
@@ -1290,15 +1290,15 @@
     \use:c { @@_backend_object_write_ #2 :nn }
       { \@@_backend_object_ref:n {#1} } {#3}
   }
-\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nne }
 \cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2
   {
-    \@@_backend:x
+    \@@_backend:e
       { obj ~ #1 ~ [ ~ \exp_not:n {#2} ~ ] }
   }
 \cs_new_protected:Npn \@@_backend_object_write_dict:nn #1#2
   {
-    \@@_backend:x
+    \@@_backend:e
       { obj ~ #1 ~ << ~ \exp_not:n {#2} ~ >> }
   }
 \cs_new_protected:Npn \@@_backend_object_write_fstream:nn #1#2
@@ -1307,7 +1307,7 @@
   { \@@_backend_object_write_stream:nnnn { } {#1} #2 }
 \cs_new_protected:Npn \@@_backend_object_write_stream:nnnn #1#2#3#4
   {
-    \@@_backend:x
+    \@@_backend:e
       {
         #1 stream ~ #2 ~
           ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
@@ -1318,7 +1318,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:ne}
 %   No anonymous objects with \texttt{dvipdfmx} so we have to give an
 %   object name.
 %    \begin{macrocode}
@@ -1325,11 +1325,11 @@
 \cs_new_protected:Npn \@@_backend_object_now:nn #1#2
   {
     \int_gincr:N \g_@@_backend_object_int
-    \exp_args:Nnx \use:c { @@_backend_object_write_ #1 :nn }
+    \exp_args:Nne \use:c { @@_backend_object_write_ #1 :nn }
       { @pdf.obj \int_use:N \g_@@_backend_object_int }
       {#2}
   }
-\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_now:nn { ne }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1364,7 +1364,7 @@
   {
     \int_gincr:N \g_@@_backend_object_int
     \int_gset_eq:NN \g_@@_backend_annotation_int \g_@@_backend_object_int
-    \@@_backend:x
+    \@@_backend:e
       {
         ann ~ @pdf.obj \int_use:N \g_@@_backend_object_int \c_space_tl
         width  ~ \dim_eval:n {#1} ~
@@ -1400,10 +1400,10 @@
   { \@@_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
 \cs_new_protected:Npn \@@_backend_link_begin_user:nnw #1#2
   { \@@_backend_link_begin:n {#1#2} }
-\cs_new_protected:Npx \@@_backend_link_begin:n #1
+\cs_new_protected:Npe \@@_backend_link_begin:n #1
   {
     \exp_not:N \int_gincr:N \exp_not:N  \g_@@_backend_link_int
-    \@@_backend:x
+    \@@_backend:e
       {
          bann ~
          @pdf.lnk
@@ -1435,7 +1435,7 @@
 %   Pass to \texttt{dvipdfmx}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_link_margin:n #1
-  { \__kernel_backend_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
+  { \__kernel_backend_literal:e { dvipdfmx:config~g~ \dim_eval:n {#1} } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1449,7 +1449,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_destination:nn #1#2
   {
-    \@@_backend:x
+    \@@_backend:e
       {
         dest ~ ( \exp_not:n {#1} )
         [
@@ -1518,7 +1518,7 @@
 %   Pass data to the backend: these are a one-shot.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_compresslevel:n #1
-  { \__kernel_backend_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
+  { \__kernel_backend_literal:e { dvipdfmx:config~z~ \int_eval:n {#1} } }
 \cs_new_protected:Npn \@@_backend_compress_objects:n #1
   {
     \bool_if:nF {#1}
@@ -1534,13 +1534,13 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_backend_version_major_gset:n #1
   {
-    \cs_gset:Npx \@@_backend_version_major: { \int_eval:n {#1} }
-    \__kernel_backend_literal:x { pdf:majorversion~ \@@_backend_version_major: }
+    \cs_gset:Npe \@@_backend_version_major: { \int_eval:n {#1} }
+    \__kernel_backend_literal:e { pdf:majorversion~ \@@_backend_version_major: }
   }
 \cs_new_protected:Npn \@@_backend_version_minor_gset:n #1
   {
-    \cs_gset:Npx \@@_backend_version_minor: { \int_eval:n {#1} }
-    \__kernel_backend_literal:x { pdf:minorversion~ \@@_backend_version_minor: }
+    \cs_gset:Npe \@@_backend_version_minor: { \int_eval:n {#1} }
+    \__kernel_backend_literal:e { pdf:minorversion~ \@@_backend_version_minor: }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1608,7 +1608,7 @@
 %
 % \begin{macro}{\@@_backend_link_last:}
 %    \begin{macrocode}
-\cs_new:Npx \@@_backend_link_last: { }
+\cs_new:Npe \@@_backend_link_last: { }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1642,8 +1642,8 @@
 %
 % \begin{macro}{\@@_backend_object_new:n}
 % \begin{macro}[EXP]{\@@_backend_object_ref:n}
-% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nx}
-% \begin{macro}{\@@_backend_object_now:nn, , \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:ne}
+% \begin{macro}{\@@_backend_object_now:nn, , \@@_backend_object_now:ne}
 % \begin{macro}{\@@_backend_object_last:}
 % \begin{macro}[EXP]{\@@_backend_pageobject_ref:n}
 %   All no-ops here.
@@ -1651,9 +1651,9 @@
 \cs_new_protected:Npn \@@_backend_object_new:nn #1 { }
 \cs_new:Npn \@@_backend_object_ref:n #1 { }
 \cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3 { }
-\cs_new_protected:Npn \@@_backend_object_write:nnx #1#2#3 { }
+\cs_new_protected:Npn \@@_backend_object_write:nne #1#2#3 { }
 \cs_new_protected:Npn \@@_backend_object_now:nn #1#2 { }
-\cs_new_protected:Npn \@@_backend_object_now:nx #1#2 { }
+\cs_new_protected:Npn \@@_backend_object_now:ne #1#2 { }
 \cs_new:Npn \@@_backend_object_last: { }
 \cs_new:Npn \@@_backend_pageobject_ref:n #1 { }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -122,7 +122,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2023-05-11}{}
+\ProvidesExplPackage{l3benchmark}{2023-10-10}{}
   {L3 Experimental benchmarking}
 %    \end{macrocode}
 %
@@ -225,13 +225,13 @@
   }
 \cs_new_protected:Npn \@@_raw_replicate_large:nnN #1#2
   {
-    \cs_set:Npx \@@_tmp:w ##1 { \prg_replicate:nn { 5000 } {##1} }
+    \cs_set:Npe \@@_tmp:w ##1 { \prg_replicate:nn { 5000 } {##1} }
     \exp_args:Nno \@@_raw_replicate:nnN { #1 / 5000 }
       { \@@_tmp:w {#2} }
   }
 \cs_new_protected:Npn \@@_raw_replicate_small:nnN #1#2
   {
-    \cs_set:Npx \@@_tmp:w ##1##2 { \prg_replicate:nn {#1} {##1} }
+    \cs_set:Npe \@@_tmp:w ##1##2 { \prg_replicate:nn {#1} {##1} }
     \@@_raw:nN { \@@_tmp:w {#2} { } } \g_@@_time_int
     \exp_args:No \@@_raw_replicate_aux:nnN
       { \int_use:N \g_@@_time_int } {#2}
@@ -439,7 +439,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_display:
   {
-    \iow_term:x
+    \iow_term:e
       {
         \@@_fp_to_tl:N \g_benchmark_time_fp \c_space_tl seconds \c_space_tl
         ( \@@_fp_to_tl:N \g_benchmark_ops_fp \c_space_tl ops)
@@ -474,7 +474,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \benchmark_tic:
   {
-    \iow_term:x { \@@_tictoc_prefix: TIC }
+    \iow_term:e { \@@_tictoc_prefix: TIC }
     \exp_args:NNf \seq_gput_right:Nn \g_@@_tictoc_seq { \sys_timer: }
     \int_gincr:N \g_@@_tictoc_int
   }
@@ -494,7 +494,7 @@
     \int_gdecr:N \g_@@_tictoc_int
     \fp_gset:Nn \g_benchmark_time_fp
       { ( \sys_timer: - \l_@@_tictoc_pop_tl ) / 65536 }
-    \iow_term:x
+    \iow_term:e
       {
         \@@_tictoc_prefix:
         TOC: \c_space_tl

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 % \begin{documentation}
@@ -264,7 +264,7 @@
 %<@@=bitset>
 %    \end{macrocode}
 %    \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2023-05-11}{}
+\ProvidesExplPackage{l3bitset}{2023-10-10}{}
   {L3 Experimental bitset support}
 %    \end{macrocode}
 % A bitset is a string variable.
@@ -337,13 +337,13 @@
 % then inserting an $1$. It is not checked if the value was already $1$.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_set_true:Nn #1#2
-  { \@@_set:NNnN \str_set:Nx #1 {#2} 1 }
+  { \@@_set:NNnN \str_set:Ne #1 {#2} 1 }
 \cs_new_protected:Npn \@@_gset_true:Nn #1#2
-  { \@@_set:NNnN \str_gset:Nx #1 {#2} 1 }
+  { \@@_set:NNnN \str_gset:Ne #1 {#2} 1 }
 \cs_new_protected:Npn \@@_set_false:Nn #1#2
-  { \@@_set:NNnN \str_set:Nx #1 {#2} 0 }
+  { \@@_set:NNnN \str_set:Ne #1 {#2} 0 }
 \cs_new_protected:Npn \@@_gset_false:Nn #1#2
-  { \@@_set:NNnN \str_gset:Nx #1 {#2} 0 }
+  { \@@_set:NNnN \str_gset:Ne #1 {#2} 0 }
 \cs_new_protected:Npn \@@_set:NNnN #1#2#3#4
   {
     \int_compare:nNnT {#3} > { 0 }
@@ -434,7 +434,7 @@
             \prop_gput:cnn { g_@@_ \cs_to_str:N #2 _name_prop } {#3} {#3}
           }
           {
-            \msg_warning:nnxx { bitset } { unknown-name }
+            \msg_warning:nnee { bitset } { unknown-name }
               { \token_to_str:N #2 }
               { \tl_to_str:n {#3} }
           }
@@ -531,11 +531,11 @@
 %     \bitset_log:N,  \bitset_log:c
 %   }
 %    \begin{macrocode}
-\cs_new_protected:Npn   \bitset_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn   \bitset_show:N { \@@_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \bitset_show:N { c }
-\cs_new_protected:Npn   \bitset_log:N  { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn   \bitset_log:N  { \@@_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \bitset_log:N  { c }
-\cs_new_protected:Npn   \bitset_show_named_index:N { \@@_show_named_index:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn   \bitset_show_named_index:N { \@@_show_named_index:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \bitset_show_named_index:N { c }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -102,7 +102,7 @@
     \group_begin:
       \hbox_set:Nn \l_@@_tmp_box
         {
-          \use:x
+          \use:e
             {
               \@@_backend_box_use:Nnnnn #1
                 { \fp_use:N \l_@@_matrix_a_fp }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -346,7 +346,7 @@
   {
     \fp_set:Nn \l_@@_path_tmpa_fp { \c_@@_path_curveto_b_fp * #1 }
     \fp_set:Nn \l_@@_path_tmpb_fp { \c_@@_path_curveto_b_fp * #2 }
-    \use:x
+    \use:e
       {
          \@@_path_mark_corner:
          \@@_path_curveto:nnnnnn
@@ -409,7 +409,7 @@
   { \draw_path_arc:nnnn {#1} {#2} {#3} {#3} }
 \cs_new_protected:Npn \draw_path_arc:nnnn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \@@_path_arc:nnnn
           { \fp_eval:n {#1} }
@@ -464,7 +464,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_path_arc_auxi:nnnnNnn #1#2#3#4#5#6#7
   {
-    \use:x
+    \use:e
       {
         \@@_path_arc_auxii:nnnNnnnn
           {#1} {#2} {#4} #5 {#6} {#7}
@@ -564,7 +564,7 @@
   }
 \cs_new_protected:Npn \@@_path_arc_aux_add:nn #1#2
   {
-    \tl_put_right:Nx \l_@@_path_tmp_tl
+    \tl_put_right:Ne \l_@@_path_tmp_tl
       { { \fp_to_dim:n {#1} } { \fp_to_dim:n {#2} } }
   }
 \fp_new:N \l_@@_path_arc_delta_fp
@@ -624,7 +624,7 @@
   }
 \cs_new_protected:Npn \@@_path_ellipse:nnnnnn #1#2#3#4#5#6
   {
-    \use:x
+    \use:e
       {
         \@@_path_moveto:nn
           { \fp_to_dim:n { #1 + #3 } } { \fp_to_dim:n { #2 + #4 } }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -247,7 +247,7 @@
   {
     \bool_if:NTF \l_@@_baseline_bool
       {
-        \use:x
+        \use:e
           {
             \exp_not:n {#1}
             \@@_finalise_baseline:n { \dim_use:N \l_@@_baseline_dim }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -96,11 +96,11 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\@@_softpath_add:n, \@@_softpath_add:o, \@@_softpath_add:x}
+% \begin{macro}{\@@_softpath_add:n, \@@_softpath_add:o, \@@_softpath_add:e}
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_softpath_add:n
   { \tl_build_gput_right:Nn \g_@@_softpath_main_tl }
-\cs_generate_variant:Nn \@@_softpath_add:n { o, x }
+\cs_generate_variant:Nn \@@_softpath_add:n { o, e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -150,7 +150,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_softpath_closepath:
   {
-    \@@_softpath_add:x
+    \@@_softpath_add:e
       {
         \@@_softpath_close_op:nn
           { \dim_use:N \g_@@_softpath_lastx_dim }
@@ -466,19 +466,19 @@
 %   corner, in order to work out where the curve we are adding will start
 %   and end. From those, plus the points we already have, we work out where
 %   the control points will lie.  All of this is done in an expansion to
-%   avoid multiple calls to |\tl_put_right:Nx|. The end point of the line
+%   avoid multiple calls to |\tl_put_right:Ne|. The end point of the line
 %   is worked out up-front and saved: we need that if dealing with a
 %   close-path operation.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_softpath_round_calc:NnnNnn #1#2#3#4#5#6
   {
-    \tl_set:Nx \l_@@_softpath_curve_end_tl
+    \tl_set:Ne \l_@@_softpath_curve_end_tl
       {
         \draw_point_interpolate_distance:nnn
           \l_@@_softpath_cornerii_dim
           { #5 , #6 } { #2 , #3 }
       }
-    \tl_put_right:Nx \l_@@_softpath_part_tl
+    \tl_put_right:Ne \l_@@_softpath_part_tl
       {
         \exp_not:N #4
         \@@_softpath_round_calc:fVnnnn
@@ -546,11 +546,11 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_softpath_round_close:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \@@_softpath_round_calc:NnnNnn
           {
-            \tl_set:Nx \exp_not:N \l_@@_softpath_move_tl
+            \tl_set:Ne \exp_not:N \l_@@_softpath_move_tl
               {
                 \@@_softpath_moveto_op:nn
                 \exp_not:N \exp_after:wN
@@ -558,7 +558,7 @@
                   \exp_not:N \l_@@_softpath_curve_end_tl
                     \s_@@_stop
               }
-            \use:x
+            \use:e
               {
                 \exp_not:N \exp_not:N \exp_not:N \use_i:nnnn
                   {

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -107,7 +107,7 @@
       \seq_set_from_clist:Nn \l_@@_tmp_seq {#1}
       \seq_set_map:NNn \l_@@_tmp_seq \l_@@_tmp_seq
         { \fp_to_dim:n {##1} }
-      \use:x
+      \use:e
         {
           \@@_backend_dash_pattern:nn
             { \seq_use:Nn \l_@@_tmp_seq { , } }
@@ -124,7 +124,7 @@
 %   Pass through to the driver layer.
 %    \begin{macrocode}
 \cs_new_protected:Npn \draw_miterlimit:n #1
-  { \exp_args:Nx \@@_backend_miterlimit:n { \fp_eval:n {#1} } }
+  { \exp_args:Ne \@@_backend_miterlimit:n { \fp_eval:n {#1} } }
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -172,7 +172,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \draw_transform_matrix:nnnn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \@@_transform:nnnn
           { \fp_eval:n {#1} }
@@ -183,7 +183,7 @@
   }
 \cs_new_protected:Npn \@@_transform:nnnn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \draw_transform_matrix_absolute:nnnn
           { #1 * \l_@@_matrix_a_fp + #2 * \l_@@_matrix_c_fp }
@@ -269,7 +269,7 @@
   }
 \cs_new_protected:Npn \@@_transform_triangle:nnnnnn #1#2#3#4#5#6
   {
-    \use:x
+    \use:e
       {
         \draw_transform_matrix_absolute:nnnn
           { #3 - #1 }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -110,7 +110,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -1173,7 +1173,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2023-05-11}{}
+\ProvidesExplPackage{l3draw}{2023-10-10}{}
   {L3 Experimental core drawing support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -184,7 +184,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2023-05-11}{}
+\ProvidesExplPackage{l3graphics}{2023-10-10}{}
   {L3 Experimental graphics inclusion support}
 %    \end{macrocode}
 %
@@ -236,8 +236,8 @@
     pagebox .choices:nn =
       { art , bleed , crop , media , trim }
       {
-        \tl_set:Nx \l_@@_pagebox_tl
-           { \tl_use:N \l_keys_choice_tl box }
+        \tl_set:Ne \l_@@_pagebox_tl
+           { \l_keys_choice_tl box }
       } ,
     pagebox .initial:n =
       crop ,
@@ -267,8 +267,8 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\@@_bb_save:n, \@@_bb_save:x}
-% \begin{macro}{\@@_bb_restore:nF, \@@_bb_restore:xF}
+% \begin{macro}{\@@_bb_save:n, \@@_bb_save:e}
+% \begin{macro}{\@@_bb_restore:nF, \@@_bb_restore:eF}
 %   Caching graphic bounding boxes is sensible, and these functions are needed both
 %   here and for drive-specific work. So they are made available as documented
 %   functions. To save on registers, the \enquote{origin} is only saved if it is
@@ -287,7 +287,7 @@
         \dim_const:cn { c_@@_ #1 _ury_dim } { \l_@@_ury_dim }
       }
   }
-\cs_generate_variant:Nn \@@_bb_save:n { x }
+\cs_generate_variant:Nn \@@_bb_save:n { e }
 \cs_new_protected:Npn \@@_bb_restore:nF #1#2
   {
     \dim_if_exist:cTF { c_@@_ #1 _urx_dim }
@@ -303,7 +303,7 @@
       }
       {#2}
   }
-\cs_generate_variant:Nn \@@_bb_restore:nF { x }
+\cs_generate_variant:Nn \@@_bb_restore:nF { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -375,7 +375,7 @@
     \@@_bb_restore:nF {#1#2}
       { \@@_read_bb_auxii:nnnn {#3} {#4} {#1} {#2} }
   }
-\cs_new_protected:Npx \@@_read_bb_auxii:nnnn #1#2#3#4
+\cs_new_protected:Npe \@@_read_bb_auxii:nnnn #1#2#3#4
   {
     #1
     \exp_not:N \ior_if_eof:NTF \exp_not:N \l_@@_internal_ior
@@ -390,15 +390,15 @@
       }
     \ior_close:N \exp_not:N \l_@@_internal_ior
   }
-\use:x
+\use:e
   {
     \cs_new_protected:Npn \exp_not:N \@@_read_bb_auxiii:w
-      ##1 \c_colon_str ##2 \s_@@_stop
+      #1 \c_colon_str #2 \s_@@_stop
       {
         \exp_not:N \str_if_eq:nnT
           { \c_percent_str \c_percent_str BoundingBox }
-          {##1}
-          { \exp_not:N \@@_read_bb_auxiv:w ##2 ( ) \s_@@_stop }
+          {#1}
+          { \exp_not:N \@@_read_bb_auxiv:w #2 ( ) \s_@@_stop }
       }
   }
 %    \end{macrocode}
@@ -413,7 +413,7 @@
   {
     \str_if_eq:nnF {#2} { atend }
       {
-        \tl_set_rescan:Nnx \l_@@_internal_tl
+        \tl_set_rescan:Nne \l_@@_internal_tl
           {
             \char_set_catcode_space:n {  9 }
             \char_set_catcode_space:n { 32 }
@@ -552,7 +552,7 @@
     \cs_if_exist:cTF { @@_backend_include_ #1 :n }
       {
         \tl_set_eq:NN \l_@@_final_name_str \l_@@_full_name_str
-        \str_set:Nx \l_@@_full_name_str
+        \str_set:Ne \l_@@_full_name_str
          { \exp_args:NV \__kernel_file_name_quote:n \l_@@_full_name_str }
         \exp_args:NnV \use:c { @@_backend_getbb_ #1 :n }
           \l_@@_full_name_str
@@ -615,8 +615,8 @@
 % \begin{macro}[EXP]{\@@_list_aux:n}
 %   A function to list all graphic files used.
 %    \begin{macrocode}
-\cs_new_protected:Npn \graphics_show_list: { \@@_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \graphics_log_list: { \@@_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \graphics_show_list: { \@@_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \graphics_log_list: { \@@_list:N \msg_log:nneeee }
 \cs_new_protected:Npn \@@_list:N #1
   {
     \seq_remove_duplicates:N \g_@@_record_seq
@@ -714,7 +714,7 @@
     \exp_args:NNNV \group_end:
     \tl_set:Nn #2 #2
   }
-\cs_new_protected:Npx \@@_get_pagecount:n #1
+\cs_new_protected:Npe \@@_get_pagecount:n #1
   {
     \ior_shell_open:Nn \exp_not:N \l_@@_internal_ior
       { extractbb~-O~#1 }
@@ -731,16 +731,16 @@
       }
     \ior_close:N \exp_not:N \l_@@_internal_ior
   }
-\use:x
+\use:e
   {
     \cs_new_protected:Npn \exp_not:N \@@_get_pagecount:nw
-      ##1##2 \c_colon_str ##3 \c_colon_str ##4 \s_@@_stop
+      #1#2 \c_colon_str #3 \c_colon_str #4 \s_@@_stop
       {
         \exp_not:N \str_if_eq:nnT
           { \c_percent_str \c_percent_str Pages }
-          {##2}
+          {#2}
           {
-            \int_const:cn { c_@@_ ##1 _pages_int } {##3}
+            \int_const:cn { c_@@_ #1 _pages_int } {#3}
             \exp_not:N \ior_map_break:
           }
       }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -96,7 +96,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2023-05-11}{}
+\ProvidesExplPackage{l3opacity}{2023-10-10}{}
   {L3 Experimental opacity support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -48,7 +48,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -166,7 +166,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2023-05-11}{}
+\ProvidesExplPackage{l3str-format}{2023-10-10}{}
   {L3 Experimental string formatting}
 %    \end{macrocode}
 %
@@ -256,7 +256,7 @@
     \exp_last_unbraced:Nf \@@_format_parse_auxi:NN
       { \__kernel_str_to_other:n {#1} } \s_@@_stop \s_@@_stop {#1}
   }
-\cs_new:Npx \@@_format_parse_auxi:NN #1#2
+\cs_new:Npe \@@_format_parse_auxi:NN #1#2
   {
     \exp_not:N \@@_format_if_in:nNTF { < > = ^ } #2
       { \exp_not:N \@@_format_parse_auxiii:nN { #1 #2 } }
@@ -271,7 +271,7 @@
       { \@@_format_parse_auxiii:nN { #1 #2 } }
       { \@@_format_parse_auxiii:nN { #1 ? } #2 }
   }
-\cs_new:Npx \@@_format_parse_auxiii:nN #1#2
+\cs_new:Npe \@@_format_parse_auxiii:nN #1#2
   {
     \exp_not:N \@@_format_if_in:nNTF
       { + - \c_catcode_other_space_tl }

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -151,7 +151,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2023-05-11}{}
+\ProvidesExplPackage{l3sys-shell}{2023-10-10}{}
   {L3 Experimental system shell functions}
 %    \end{macrocode}
 %
@@ -213,11 +213,11 @@
 %   Simple Unix-like file copying: at some stage we may need a directory-only
 %   version as Windows and Unix have different requirements here.
 %    \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_cp:nn #1#2
+\cs_new_protected:Npe \sys_shell_cp:nn #1#2
   {
     \sys_if_shell_unrestricted:T
       {
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               { 
@@ -240,11 +240,11 @@
 %   issues a warning if the directory already exists: avoid by including a
 %   test.
 %    \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_mkdir:n #1
+\cs_new_protected:Npe \sys_shell_mkdir:n #1
   {
     \sys_if_shell_unrestricted:T
       {
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} }
@@ -264,11 +264,11 @@
 %   On Windows we do not have a single |mv| operation, so copy-and-delete
 %   instead.
 %    \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_mv:nn #1#2
+\cs_new_protected:Npe \sys_shell_mv:nn #1#2
   {
     \sys_if_shell_unrestricted:T
       {
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               {
@@ -291,11 +291,11 @@
 % \begin{macro}{\sys_shell_rm:n}
 %   Deletion: obviously a big health warning here!
 %    \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_rm:n #1
+\cs_new_protected:Npe \sys_shell_rm:n #1
   {
     \sys_if_shell_unrestricted:T
       {
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               { rm~-f~ \exp_not:N \tl_to_str:n {#1}  }
@@ -311,12 +311,12 @@
 %   When removing a directory, we create it first as that avoids errors in
 %   the Windows case.
 %    \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_rmdir:n #1
+\cs_new_protected:Npe \sys_shell_rmdir:n #1
   {
     \sys_if_shell_unrestricted:T
       {
         \sys_shell_mkdir:n {#1}
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               { rm~-rf~ \exp_not:N \tl_to_str:n {#1} }
@@ -341,7 +341,7 @@
 %   that does not require shell escape. However, it's hard to see how it might
 %   be useful without the other file functions.)
 %    \begin{macrocode}
-\cs_new_protected:Npx \sys_get_shell_pwd:N #1
+\cs_new_protected:Npe \sys_get_shell_pwd:N #1
   {
     \sys_if_shell_unrestricted:T
       {
@@ -371,7 +371,7 @@
 %   just a case of tidying up. The listing always ends in |^^M| so there is an
 %   extra entry to trim.
 %    \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_split_ls:nN #1#2
+\cs_new_protected:Npe \sys_shell_split_ls:nN #1#2
   {
     \sys_if_shell_unrestricted:T
       {

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -53,7 +53,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -672,7 +672,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2023-05-11}{}
+\ProvidesExplPackage{xcoffins}{2023-10-10}{}
   {L3 Experimental design level coffins}
 %    \end{macrocode}
 %
@@ -781,7 +781,7 @@
   {
     \group_begin:
       \@@_design_names:N #1
-    \use:x
+    \use:e
       {
         \group_end:
         \coffin_set_horizontal_pole:Nnn #1
@@ -792,7 +792,7 @@
   {
     \group_begin:
       \@@_design_names:N #1
-    \use:x
+    \use:e
       {
         \group_end:
         \coffin_set_vertical_pole:Nnn #1
@@ -831,7 +831,7 @@
       {
         \group_begin:
           \keys_set:nn { coffin } {#1}
-          \tl_set:Nx \l_@@_tmp_tl
+          \tl_set:Ne \l_@@_tmp_tl
             {
               \group_end:
               \bool_if:NTF \l_@@_bound_box_grow_bool

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -686,7 +686,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2023-05-11}{}
+\ProvidesExplPackage{l3galley}{2023-10-10}{}
   {L3 Experimental galley code}
 %    \end{macrocode}
 %
@@ -1325,7 +1325,7 @@
   {
      \tl_if_empty:NF #1
        {
-         \tl_gput_right:Nx \g_galley_restore_running_tl
+         \tl_gput_right:Ne \g_galley_restore_running_tl
            {
              \int_gset:Nn \exp_not:N \g_galley_penalty_int
                { \int_use:N \g_galley_penalty_int }
@@ -1337,7 +1337,7 @@
   {
      \tl_if_empty:NF #1
        {
-         \tl_gput_right:Nx \g_galley_restore_running_tl
+         \tl_gput_right:Ne \g_galley_restore_running_tl
            {
              \skip_gset:Nn \exp_not:N \g_galley_vspace_skip
                { \skip_use:N \g_galley_vspace_skip }
@@ -1755,7 +1755,7 @@
       {
         \seq_gpop_left:NNF #2 \l_@@_tmp_tl
           { \tl_set:Nn \l_@@_tmp_tl { 0pt } }
-        \seq_put_right:Nx \l_@@_tmp_seq
+        \seq_put_right:Ne \l_@@_tmp_seq
           { \dim_eval:n { ##1 + \l_@@_tmp_tl } }
       }
   }
@@ -1950,10 +1950,10 @@
 %   deals with this nicely.
 %    \begin{macrocode}
 \cs_new_protected:Npn \galley_penalty_set_single:n #1
-  { \tl_gset:Nx \g_@@_interpar_penalty_user_tl { \int_eval:n {#1} } }
+  { \tl_gset:Ne \g_@@_interpar_penalty_user_tl { \int_eval:n {#1} } }
 \cs_new_protected:Npn \galley_penalty_add_single:n #1
   {
-    \tl_gset:Nx \g_@@_interpar_penalty_user_tl
+    \tl_gset:Ne \g_@@_interpar_penalty_user_tl
       {
         \int_eval:n
           {
@@ -1964,10 +1964,10 @@
       }
   }
 \cs_new_protected:Npn \galley_vspace_set_single:n #1
-  { \tl_gset:Nx \g_@@_interpar_vspace_user_tl { \skip_eval:n {#1} } }
+  { \tl_gset:Ne \g_@@_interpar_vspace_user_tl { \skip_eval:n {#1} } }
 \cs_new_protected:Npn \galley_vspace_add_single:n #1
   {
-    \tl_gset:Nx \g_@@_interpar_vspace_user_tl
+    \tl_gset:Ne \g_@@_interpar_vspace_user_tl
       {
         \skip_eval:n
           {
@@ -2408,11 +2408,11 @@
   { \clist_set_eq:NN #1 \l_galley_line_penalties_clist }
 %    \end{macrocode}
 %   These all require appropriate mappings, using the fact that
-%   \cs{clist_set:Nx} will tidy up the excess comma.
+%   \cs{clist_set:Ne} will tidy up the excess comma.
 %    \begin{macrocode}
 \cs_new_protected:Npn \galley_save_display_club_penalties:N #1
   {
-    \clist_set:Nx #1
+    \clist_set:Ne #1
       {
         \int_step_function:nN { \tex_clubpenalties:D 0 - 1 }
           \@@_save_display_club_penalties:n
@@ -2422,7 +2422,7 @@
   { \int_value:w \tex_clubpenalties:D \int_eval:n {#1} , }
 \cs_new_protected:Npn \galley_save_display_widow_penalties:N #1
   {
-    \clist_set:Nx #1
+    \clist_set:Ne #1
       {
         \int_step_function:nN { \tex_displaywidowpenalties:D 0 - 1 }
           \@@_save_display_widow_penalties:n
@@ -2435,7 +2435,7 @@
   }
 \cs_new_protected:Npn \galley_save_widow_penalties:N #1
   {
-    \clist_set:Nx #1
+    \clist_set:Ne #1
       {
         \int_step_function:nN { \tex_widowpenalties:D 0 - 1 }
           \@@_save_widow_penalties:n

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -731,7 +731,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2023-05-11}{}
+\ProvidesExplPackage{xgalley}{2023-10-10}{}
   {L3 Experimental galley}
 \RequirePackage{xtemplate,l3galley}
 %    \end{macrocode}
@@ -1057,7 +1057,7 @@
     stretch-last-line  = \l_galley_par_stretch_last_bool
   }
   {
-    \tl_put_left:Nx \l_@@_justification_other_tl
+    \tl_put_left:Ne \l_@@_justification_other_tl
       {
         \skip_set:Nn \exp_not:N \l_galley_par_end_skip
           { \skip_use:N \l_galley_par_end_skip }
@@ -1355,7 +1355,7 @@
 %    \begin{macrocode}
     \tl_if_empty:NF \l_@@_interline_penalty_tl
       {
-        \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+        \tl_gput_right:Ne \g_galley_par_reset_hook_tl
           {
             \int_set:Nn \exp_not:N \l_@@_interline_penalty_int
               { \galley_interline_penalty: }
@@ -1365,7 +1365,7 @@
       }
     \tl_if_empty:NF \l_@@_parbreak_fuzz_tl
       {
-        \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+        \tl_gput_right:Ne \g_galley_par_reset_hook_tl
           {
             \dim_set:Nn \exp_not:N \l_galley_parbreak_fuzz_dim
               { \dim_use:N \l_galley_parbreak_fuzz_dim }
@@ -1380,7 +1380,7 @@
       {
         \tl_if_empty:cF { l_galley_ ##1 _tl }
           {
-            \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+            \tl_gput_right:Ne \g_galley_par_reset_hook_tl
               {
                 \int_set:Nn \exp_not:c { l_galley_ ##1 _int }
                   { \int_use:c { l_galley_ ##1 _int } }
@@ -1399,7 +1399,7 @@
         \tl_if_empty:cF { l_galley_ ##1 _tl }
           {
             \use:c { galley_save_ ##1 :N } \l_@@_tmpa_clist
-            \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+            \tl_gput_right:Ne \g_galley_par_reset_hook_tl
               {
                 \exp_not:c { galley_set_ ##1 :n }
                   { \exp_not:o \l_@@_tmpa_clist }
@@ -1486,22 +1486,22 @@
   {
     \tl_if_empty:NF \l_galley_display_begin_par_vpenalty_tl
       {
-        \tl_set:Nx \l_galley_display_begin_par_vpenalty_tl
+        \tl_set:Ne \l_galley_display_begin_par_vpenalty_tl
           { \int_eval:n { \l_galley_display_begin_par_vpenalty_tl } }
       }
     \tl_if_empty:NF \l_galley_display_begin_par_vspace_tl
       {
-        \tl_set:Nx \l_galley_display_begin_par_vspace_tl
+        \tl_set:Ne \l_galley_display_begin_par_vspace_tl
           { \skip_eval:n { \l_galley_display_begin_par_vspace_tl } }
       }
     \tl_if_empty:NF \l_galley_display_begin_vpenalty_tl
       {
-        \tl_set:Nx \l_galley_display_begin_vpenalty_tl
+        \tl_set:Ne \l_galley_display_begin_vpenalty_tl
           { \int_eval:n { \l_galley_display_begin_vpenalty_tl } }
       }
     \tl_if_empty:NF \l_galley_display_begin_vspace_tl
       {
-        \tl_set:Nx \l_galley_display_begin_vspace_tl
+        \tl_set:Ne \l_galley_display_begin_vspace_tl
           { \skip_eval:n { \l_galley_display_begin_vspace_tl } }
       }
   }
@@ -1515,22 +1515,22 @@
   {
     \tl_if_empty:NF \l_galley_display_end_par_vpenalty_tl
       {
-        \tl_set:Nx \l_galley_display_end_par_vpenalty_tl
+        \tl_set:Ne \l_galley_display_end_par_vpenalty_tl
           { \int_eval:n { \l_galley_display_end_par_vpenalty_tl } }
       }
     \tl_if_empty:NF \l_galley_display_end_par_vspace_tl
       {
-        \tl_set:Nx \l_galley_display_end_par_vspace_tl
+        \tl_set:Ne \l_galley_display_end_par_vspace_tl
           { \skip_eval:n { \l_galley_display_end_par_vspace_tl } }
       }
     \tl_if_empty:NF \l_galley_display_end_vpenalty_tl
       {
-        \tl_set:Nx \l_galley_display_end_vpenalty_tl
+        \tl_set:Ne \l_galley_display_end_vpenalty_tl
           { \int_eval:n { \l_galley_display_end_vpenalty_tl } }
       }
     \tl_if_empty:NF \l_galley_display_end_vspace_tl
       {
-        \tl_set:Nx \l_galley_display_end_vspace_tl
+        \tl_set:Ne \l_galley_display_end_vspace_tl
           { \skip_eval:n { \l_galley_display_end_vspace_tl } }
       }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -24,7 +24,7 @@
 %
 %<*driver|generic|package|2ekernel>
 %</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-08-29}%
+\def\ExplFileDate{2023-10-10}%
 %<*driver>
 \documentclass[full]{l3doc}
 \usepackage{graphicx}
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -311,8 +311,9 @@
 % or private.
 %
 % To allow clear separation of these two cases, the following convention
-% is used. Private functions should be defined with |__| added to the beginning
-% of the module name. Thus
+% is used. In private functions and variables, two |_| characters are
+% added to the start of the module name. On the other hand, public
+% interfaces to not have these two |_| character. Thus
 % \begin{verbatim}
 %   \module_foo:nnn
 % \end{verbatim}
@@ -323,8 +324,9 @@
 % is private to the module, and should \emph{not} be used outside of that
 % module.
 %
-% Similarly, private variables should use |__| to separate scope and
-% module name, such that
+% For variables, to avoid three |_| in a row, the separator for the variable
+% scope and any leading |_| for a private interface in the module part are
+% combined. Thus
 % \begin{verbatim}
 %   \l_module_foo_tl
 % \end{verbatim}
@@ -334,12 +336,12 @@
 % \end{verbatim}
 % is private.
 %
-% \subsubsection{Using \texttt{@@} and \pkg{l3docstrip} to mark private code}
+% \subsubsection{Using \texttt{@@} and \pkg{DocStrip} to mark private code}
 %
 % The formal syntax for internal functions allows clear separation of public
 % and private code, but includes redundant information (every internal function
 % or variable includes \texttt{__\meta{module}}). To aid programmers, the
-% \pkg{l3docstrip} program introduces the syntax
+% \pkg{DocStrip} program introduces the syntax
 % \begin{quote}
 %   \ttfamily
 %   |%<@@=|\meta{module}|>|
@@ -354,7 +356,7 @@
 %   \tl_new:N \l_@@_my_tl
 %   %    \end{macrocode}
 % \end{verbatim}
-% is converted by \pkg{l3docstrip} to
+% is converted by \pkg{DocStrip} to
 % \begin{verbatim}
 %   \cs_new:Npn \__foo_function:n #1
 %     ...
@@ -365,13 +367,6 @@
 % distinguish variables from functions in the source when the |@@|
 % convention is used.
 %
-% Please note that you have to use the \pkg{l3docstrip} and
-% \textbf{not} the \pkg{docstrip} program in your \texttt{.ins} files
-% to make this work---the original \LaTeXe{} \pkg{docstrip} doesn't
-% understand the \texttt{@@} and will just copy it into your code
-% unmodified!
-%
-%
 % \subsubsection{Variables: declaration}
 %
 % In well-formed \pkg{expl3} code, variables should always be declared before
@@ -653,20 +648,10 @@
 %     variables which have a \cs{\meta{var}_use:N} function (other than
 %     boxes), and which therefore deliver a single
 %     \enquote{value}.
-%   \item[x]  Fully-expanded token or braced token list.\\
+%   \item[e]  Fully-expanded token or braced token list.\\
 %     This means that the argument is expanded as in the replacement
-%     text of an~\tn{edef}, and the expansion is passed to the function as
-%     a braced token list.  Expansion takes place until only unexpandable
-%     tokens are left.  |x|-type arguments cannot be nested.
-%   \item[e]  Fully-expanded token or braced token list.\\
-%     This expansion is very similar to |x|-type but may be nested and does
-%     not require that |#| tokens are doubled.  It uses \tn{expanded} primitive.
-%   \item[f] Expanding the first token recursively in a braced token
-%     list.\\ Almost the same as the |x| type except here the token list
-%     is expanded fully until the first unexpandable token is found and
-%     the rest is left unchanged. Note that if this function finds a
-%     space at the beginning of the argument it gobbles it and does not
-%     expand the next token.
+%     text of a~\tn{message}, and the expansion is passed to the function as
+%     a braced token list.
 %   \item[o]  One-level-expanded token or braced token list.\\
 %     This means that the argument is expanded one level, as by
 %     \tn{expandafter}, and the expansion is passed to the function as a
@@ -674,6 +659,19 @@
 %     token list then only the first token in that list is expanded.
 %     In general, using \texttt{V} should be preferred to using
 %     \texttt{o} for simple variable retrieval.
+%   \item[f] Expanding the first token recursively in a braced token
+%     list.\\ Almost the same as the |e| type except here the token list
+%     is expanded fully until the first unexpandable token is found and
+%     the rest is left unchanged. Note that if this function finds a
+%     space at the beginning of the argument it gobbles it and does not
+%     expand the next token.
+%   \item[x]  Fully-expanded token or braced token list.\\
+%     This expansion is very similar to |e|-type but is not nestable,
+%     can only be used to create non-expandable functions, and requires
+%     that |#| tokens are doubled in the argument. In almost all cases,
+%     |e|-type should be preferred: retained largely for historical
+%     reasons, and should where possible be replaced by the |e|-type
+%     equivalent.
 % \end{description}
 %
 % \subsection{Simpler means better}
@@ -761,17 +759,17 @@
 %
 % To illustrate this let us suppose you have a \enquote{base function}
 % |\demo_cmd:Nnn| that takes three normal arguments, and that you need
-% to construct the variant |\demo_cmd:cnx|, for which the first argument
+% to construct the variant |\demo_cmd:cne|, for which the first argument
 % is used to construct the \emph{name} of a command, whilst the third
 % argument must be fully expanded before being passed to
 % |\demo_cmd:Nnn|.
 % To produce the variant form from the base form, simply use this:
 % \begin{verbatim}
-%   \cs_generate_variant:Nn \demo_cmd:Nnn { cnx }
+%   \cs_generate_variant:Nn \demo_cmd:Nnn { cne }
 % \end{verbatim}
 % This defines the variant form so that you can then write, for example:
 % \begin{verbatim}
-%   \demo_cmd:cnx { abc } { pq } { \rst \xyz }
+%   \demo_cmd:cne { abc } { pq } { \rst \xyz }
 % \end{verbatim}
 % rather than \ldots\ well, something like this!
 % \begin{verbatim}
@@ -793,13 +791,13 @@
 % \end{verbatim}
 %
 % Another example: you may wish to declare a function
-% |\demo_cmd_b:xcxcx|, a variant of an existing function
+% |\demo_cmd_b:enene|, a variant of an existing function
 % |\demo_cmd_b:nnnnn|, that fully
 % expands arguments 1,~3 and~5, and produces commands to pass as
 % arguments 2 and~4 using~\tn{csname}.
 % The definition you need is simply
 % \begin{verbatim}
-%   \cs_generate_variant:Nn \demo_cmd_b:nnnnn { xcxcx }
+%   \cs_generate_variant:Nn \demo_cmd_b:nnnnn { enene }
 % \end{verbatim}
 %
 % This extension mechanism is written so that if the same new form of
@@ -854,7 +852,7 @@
 % \begin{itemize}
 %   \item \pkg{expl3} is mainly focused on programming. This means that
 %     some areas still require the use of \LaTeXe{} internal macros.
-%     For example, you may well need \tn{@ifpackageloaded}, as there
+%     For example, you may well need \tn{IfPackageLoadedTF}, as there
 %     is currently no native \pkg{expl3} package loading module.
 %   \item User level macros should be generated using the mechanism
 %     available in the \pkg{xparse} package, which is part of the
@@ -1541,12 +1539,12 @@
   }
 \cs_gset_protected:Npn \@expl at push@filename@@@@
   {
-    \exp_args:Nx \__kernel_file_input_push:n
+    \exp_args:Ne \__kernel_file_input_push:n
       {
         \tl_to_str:N \@currname .
         \tl_to_str:N \@currext
       }
-    \tl_put_left:Nx \l_@@_status_stack_tl
+    \tl_put_left:Ne \l_@@_status_stack_tl
       {
         \bool_if:NTF \l__kernel_expl_bool
           { 1 }
@@ -1742,7 +1740,7 @@
     \cs_set_protected:Npn \ProvidesExplFileAux ##1##2##3##4
       {
         \group_end:
-        \iow_log:x { File:~##1~##2~v##3~##4 }
+        \iow_log:e { File:~##1~##2~v##3~##4 }
       }
     \tex_input:D #1 .def \scan_stop:
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -200,7 +200,12 @@
 % \subsection{Defining new functions using parameter text}
 % \label{sec:l3basics:defining-new-function-1}
 %
-% \begin{function}{\cs_new:Npn, \cs_new:cpn, \cs_new:Npx, \cs_new:cpx}
+% \begin{function}
+%   {
+%     \cs_new:Npn, \cs_new:cpn,
+%     \cs_new:Npe, \cs_new:cpe,
+%     \cs_new:Npx, \cs_new:cpx
+%   }
 %   \begin{syntax}
 %     \cs{cs_new:Npn} \meta{function} \meta{parameters} \Arg{code}
 %   \end{syntax}
@@ -214,6 +219,7 @@
 % \begin{function}
 %   {
 %     \cs_new_nopar:Npn, \cs_new_nopar:cpn,
+%     \cs_new_nopar:Npe, \cs_new_nopar:cpe,
 %     \cs_new_nopar:Npx, \cs_new_nopar:cpx
 %   }
 %   \begin{syntax}
@@ -230,6 +236,7 @@
 % \begin{function}
 %   {
 %     \cs_new_protected:Npn, \cs_new_protected:cpn,
+%     \cs_new_protected:Npe, \cs_new_protected:cpe,
 %     \cs_new_protected:Npx, \cs_new_protected:cpx
 %   }
 %   \begin{syntax}
@@ -247,6 +254,7 @@
 % \begin{function}
 %   {
 %     \cs_new_protected_nopar:Npn, \cs_new_protected_nopar:cpn ,
+%     \cs_new_protected_nopar:Npe, \cs_new_protected_nopar:cpe ,
 %     \cs_new_protected_nopar:Npx, \cs_new_protected_nopar:cpx
 %   }
 %   \begin{syntax}
@@ -261,7 +269,12 @@
 %   and an error results if the \meta{function} is already defined.
 % \end{function}
 %
-% \begin{function}{\cs_set:Npn, \cs_set:cpn, \cs_set:Npx, \cs_set:cpx}
+% \begin{function}
+%   {
+%     \cs_set:Npn, \cs_set:cpn,
+%     \cs_set:Npe, \cs_set:cpe,
+%     \cs_set:Npx, \cs_set:cpx
+%   }
 %   \begin{syntax}
 %     \cs{cs_set:Npn} \meta{function} \meta{parameters} \Arg{code}
 %   \end{syntax}
@@ -275,6 +288,7 @@
 % \begin{function}
 %   {
 %     \cs_set_nopar:Npn, \cs_set_nopar:cpn,
+%     \cs_set_nopar:Npe, \cs_set_nopar:cpe,
 %     \cs_set_nopar:Npx, \cs_set_nopar:cpx
 %   }
 %   \begin{syntax}
@@ -292,6 +306,7 @@
 % \begin{function}
 %   {
 %     \cs_set_protected:Npn, \cs_set_protected:cpn,
+%     \cs_set_protected:Npe, \cs_set_protected:cpe,
 %     \cs_set_protected:Npx, \cs_set_protected:cpx
 %   }
 %   \begin{syntax}
@@ -308,6 +323,7 @@
 % \begin{function}
 %   {
 %     \cs_set_protected_nopar:Npn, \cs_set_protected_nopar:cpn ,
+%     \cs_set_protected_nopar:Npe, \cs_set_protected_nopar:cpe ,
 %     \cs_set_protected_nopar:Npx, \cs_set_protected_nopar:cpx ,
 %   }
 %   \begin{syntax}
@@ -323,7 +339,12 @@
 %   \texttt{x}-type or \texttt{e}-type argument.
 % \end{function}
 %
-% \begin{function}{\cs_gset:Npn, \cs_gset:cpn, \cs_gset:Npx, \cs_gset:cpx}
+% \begin{function}
+%   {
+%     \cs_gset:Npn, \cs_gset:cpn,
+%     \cs_gset:Npe, \cs_gset:cpe,
+%     \cs_gset:Npx, \cs_gset:cpx
+%   }
 %   \begin{syntax}
 %     \cs{cs_gset:Npn} \meta{function} \meta{parameters} \Arg{code}
 %   \end{syntax}
@@ -338,6 +359,7 @@
 % \begin{function}
 %   {
 %     \cs_gset_nopar:Npn, \cs_gset_nopar:cpn,
+%     \cs_gset_nopar:Npe, \cs_gset_nopar:cpe,
 %     \cs_gset_nopar:Npx, \cs_gset_nopar:cpx
 %   }
 %   \begin{syntax}
@@ -355,6 +377,7 @@
 % \begin{function}
 %   {
 %     \cs_gset_protected:Npn, \cs_gset_protected:cpn,
+%     \cs_gset_protected:Npe, \cs_gset_protected:cpe,
 %     \cs_gset_protected:Npx, \cs_gset_protected:cpx
 %   }
 %   \begin{syntax}
@@ -372,6 +395,7 @@
 % \begin{function}
 %   {
 %     \cs_gset_protected_nopar:Npn, \cs_gset_protected_nopar:cpn,
+%     \cs_gset_protected_nopar:Npe, \cs_gset_protected_nopar:cpe,
 %     \cs_gset_protected_nopar:Npx, \cs_gset_protected_nopar:cpx
 %   }
 %   \begin{syntax}
@@ -393,7 +417,7 @@
 % \begin{function}
 %   {
 %     \cs_new:Nn, \cs_new:cn,
-%     \cs_new:Nx, \cs_new:cx
+%     \cs_new:Ne, \cs_new:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_new:Nn} \meta{function} \Arg{code}
@@ -409,7 +433,7 @@
 % \begin{function}
 %   {
 %     \cs_new_nopar:Nn, \cs_new_nopar:cn,
-%     \cs_new_nopar:Nx, \cs_new_nopar:cx
+%     \cs_new_nopar:Ne, \cs_new_nopar:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_new_nopar:Nn} \meta{function} \Arg{code}
@@ -426,7 +450,7 @@
 % \begin{function}
 %   {
 %     \cs_new_protected:Nn, \cs_new_protected:cn,
-%     \cs_new_protected:Nx, \cs_new_protected:cx
+%     \cs_new_protected:Ne, \cs_new_protected:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_new_protected:Nn} \meta{function} \Arg{code}
@@ -443,7 +467,7 @@
 % \begin{function}
 %   {
 %     \cs_new_protected_nopar:Nn, \cs_new_protected_nopar:cn,
-%     \cs_new_protected_nopar:Nx, \cs_new_protected_nopar:cx
+%     \cs_new_protected_nopar:Ne, \cs_new_protected_nopar:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_new_protected_nopar:Nn} \meta{function} \Arg{code}
@@ -461,7 +485,7 @@
 % \begin{function}
 %   {
 %     \cs_set:Nn, \cs_set:cn,
-%     \cs_set:Nx, \cs_set:cx
+%     \cs_set:Ne, \cs_set:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_set:Nn} \meta{function} \Arg{code}
@@ -478,7 +502,7 @@
 % \begin{function}
 %   {
 %     \cs_set_nopar:Nn, \cs_set_nopar:cn,
-%     \cs_set_nopar:Nx, \cs_set_nopar:cx
+%     \cs_set_nopar:Ne, \cs_set_nopar:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_set_nopar:Nn} \meta{function} \Arg{code}
@@ -496,7 +520,7 @@
 % \begin{function}
 %   {
 %     \cs_set_protected:Nn, \cs_set_protected:cn,
-%     \cs_set_protected:Nx, \cs_set_protected:cx
+%     \cs_set_protected:Ne, \cs_set_protected:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_set_protected:Nn} \meta{function} \Arg{code}
@@ -514,7 +538,7 @@
 % \begin{function}
 %   {
 %     \cs_set_protected_nopar:Nn, \cs_set_protected_nopar:cn,
-%     \cs_set_protected_nopar:Nx, \cs_set_protected_nopar:cx
+%     \cs_set_protected_nopar:Ne, \cs_set_protected_nopar:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_set_protected_nopar:Nn} \meta{function} \Arg{code}
@@ -533,7 +557,7 @@
 % \begin{function}
 %   {
 %     \cs_gset:Nn, \cs_gset:cn,
-%     \cs_gset:Nx, \cs_gset:cx
+%     \cs_gset:Ne, \cs_gset:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_gset:Nn} \meta{function} \Arg{code}
@@ -549,7 +573,7 @@
 % \begin{function}
 %   {
 %     \cs_gset_nopar:Nn, \cs_gset_nopar:cn,
-%     \cs_gset_nopar:Nx, \cs_gset_nopar:cx
+%     \cs_gset_nopar:Ne, \cs_gset_nopar:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_gset_nopar:Nn} \meta{function} \Arg{code}
@@ -566,7 +590,7 @@
 % \begin{function}
 %   {
 %     \cs_gset_protected:Nn, \cs_gset_protected:cn,
-%     \cs_gset_protected:Nx, \cs_gset_protected:cx
+%     \cs_gset_protected:Ne, \cs_gset_protected:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_gset_protected:Nn} \meta{function} \Arg{code}
@@ -583,7 +607,7 @@
 % \begin{function}
 %   {
 %     \cs_gset_protected_nopar:Nn, \cs_gset_protected_nopar:cn,
-%     \cs_gset_protected_nopar:Nx, \cs_gset_protected_nopar:cx
+%     \cs_gset_protected_nopar:Ne, \cs_gset_protected_nopar:ce
 %   }
 %   \begin{syntax}
 %     \cs{cs_gset_protected_nopar:Nn} \meta{function} \Arg{code}
@@ -1034,15 +1058,6 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[updated = 2011-12-31]{\use:x}
-%   \begin{syntax}
-%     \cs{use:x} \Arg{expandable tokens}
-%   \end{syntax}
-%   Fully expands the \meta{expandable tokens} and inserts the
-%   result into the input stream at the current location.
-%   Any hash characters (|#|) in the argument must be doubled.
-% \end{function}
-%
 % \subsection{Selecting tokens from delimited arguments}
 %
 % A different kind of function for selecting tokens from the token
@@ -1520,10 +1535,10 @@
 %
 % \begin{macro}
 %   {
-%     \cs_set_nopar:Npn           , \cs_set_nopar:Npx           ,
-%     \cs_set:Npn                 , \cs_set:Npx                 ,
-%     \cs_set_protected_nopar:Npn , \cs_set_protected_nopar:Npx ,
-%     \cs_set_protected:Npn       , \cs_set_protected:Npx
+%     \cs_set_nopar:Npn           , \cs_set_nopar:Npe           , \cs_set_nopar:Npx           ,
+%     \cs_set:Npn                 , \cs_set:Npe                 , \cs_set:Npx                 ,
+%     \cs_set_protected_nopar:Npn , \cs_set_protected_nopar:Npe , \cs_set_protected_nopar:Npx ,
+%     \cs_set_protected:Npn       , \cs_set_protected:Npe       , \cs_set_protected:Npx
 %   }
 %   All assignment functions in \LaTeX3 should be naturally protected;
 %   after all, the \TeX{} primitives for assignments are and it can be
@@ -1530,45 +1545,53 @@
 %   a cause of problems if others aren't.
 %    \begin{macrocode}
 \tex_let:D \cs_set_nopar:Npn            \tex_def:D
+\tex_let:D \cs_set_nopar:Npe            \tex_edef:D
 \tex_let:D \cs_set_nopar:Npx            \tex_edef:D
 \tex_protected:D \tex_long:D \tex_def:D \cs_set:Npn
   { \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npx
+\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npe
   { \tex_long:D \tex_edef:D }
+\tex_let:D \cs_set:Npx \cs_set:Npe
 \tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npn
   { \tex_protected:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npx
+\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npe
   { \tex_protected:D \tex_edef:D }
+\tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe
 \tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npn
   { \tex_protected:D \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npx
+\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npe
   { \tex_protected:D \tex_long:D \tex_edef:D }
+\tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}
 %   {
-%     \cs_gset_nopar:Npn           , \cs_gset_nopar:Npx           ,
-%     \cs_gset:Npn                 , \cs_gset:Npx                 ,
-%     \cs_gset_protected_nopar:Npn , \cs_gset_protected_nopar:Npx ,
-%     \cs_gset_protected:Npn       , \cs_gset_protected:Npx
+%     \cs_gset_nopar:Npn           , \cs_gset_nopar:Npe           , \cs_gset_nopar:Npx           ,
+%     \cs_gset:Npn                 , \cs_gset:Npe                 , \cs_gset:Npx                 ,
+%     \cs_gset_protected_nopar:Npn , \cs_gset_protected_nopar:Npe , \cs_gset_protected_nopar:Npx ,
+%     \cs_gset_protected:Npn       , \cs_gset_protected:Npe       , \cs_gset_protected:Npx
 %   }
 %   Global versions of the above functions.
 %    \begin{macrocode}
 \tex_let:D \cs_gset_nopar:Npn           \tex_gdef:D
+\tex_let:D \cs_gset_nopar:Npe           \tex_xdef:D
 \tex_let:D \cs_gset_nopar:Npx           \tex_xdef:D
 \cs_set_protected:Npn \cs_gset:Npn
   { \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset:Npx
+\cs_set_protected:Npn \cs_gset:Npe
   { \tex_long:D \tex_xdef:D }
+\tex_let:D \cs_gset:Npx \cs_gset:Npe
 \cs_set_protected:Npn \cs_gset_protected_nopar:Npn
   { \tex_protected:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected_nopar:Npx
+\cs_set_protected:Npn \cs_gset_protected_nopar:Npe
   { \tex_protected:D \tex_xdef:D }
+\tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe
 \cs_set_protected:Npn \cs_gset_protected:Npn
   { \tex_protected:D \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected:Npx
+\cs_set_protected:Npn \cs_gset_protected:Npe
   { \tex_protected:D \tex_long:D \tex_xdef:D }
+\tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1921,7 +1944,7 @@
   { \@@_generate_conditional_parm:NNNpnn \cs_new_protected:Npn p }
 \cs_set_protected:Npn \@@_generate_conditional_parm:NNNpnn #1#2#3#4#
   {
-    \use:x
+    \use:e
       {
         \@@_generate_conditional:nnNNNnnn
           \cs_split_function:N #3
@@ -1973,7 +1996,7 @@
   { \@@_generate_conditional_count:NNNnn \cs_new_protected:Npn p }
 \cs_set_protected:Npn \@@_generate_conditional_count:NNNnn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \@@_generate_conditional_count:nnNNNnn
         \cs_split_function:N #3
@@ -1986,7 +2009,7 @@
       { \@@_generate_conditional:nnNNNnnn {#1} {#2} #3 #4 #5 }
       { \tl_count:n {#2} }
       {
-        \msg_error:nnxx { kernel } { bad-number-of-arguments }
+        \msg_error:nnee { kernel } { bad-number-of-arguments }
           { \token_to_str:c { #1 : #2 } }
           { \tl_count:n {#2} }
         \use_none:nn
@@ -2024,11 +2047,11 @@
 \cs_set_protected:Npn \@@_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8
   {
     \if_meaning:w \c_false_bool #3
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \use_none:nn
     \fi:
-    \use:x
+    \use:e
       {
         \exp_not:N \@@_generate_conditional:NNnnnnNw
         \exp_not:n { #4 #5 {#1} {#2} {#6} }
@@ -2064,7 +2087,7 @@
     \use:c { @@_generate_ #8 _form:wNNnnnnN }
         \tl_if_empty:nF {#8}
           {
-            \msg_error:nnxx
+            \msg_error:nnee
               { kernel } { conditional-form-unknown }
               {#8} { \token_to_str:c { #3 : #4 } }
           }
@@ -2118,7 +2141,7 @@
           { #7 \@@_p_true:w \fi: \c_false_bool }
       }
       {
-        \msg_error:nnx { kernel } { protected-predicate }
+        \msg_error:nne { kernel } { protected-predicate }
           { \token_to_str:c { #4 _p: #5 } }
       }
   }
@@ -2176,7 +2199,7 @@
   { \@@_set_eq_conditional:NNNn \cs_new_eq:cc }
 \cs_set_protected:Npn \@@_set_eq_conditional:NNNn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \exp_not:N \@@_set_eq_conditional:nnNnnNNw
           \cs_split_function:N #2
@@ -2216,12 +2239,12 @@
 \cs_set_protected:Npn \@@_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6
   {
     \if_meaning:w \c_false_bool #3
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
     \fi:
     \if_meaning:w \c_false_bool #6
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#4} }
       \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
     \fi:
@@ -2235,7 +2258,7 @@
     \use:c { @@_set_eq_conditional_ #6 _form:wNnnnn }
         \tl_if_empty:nF {#6}
           {
-            \msg_error:nnxx
+            \msg_error:nnee
               { kernel } { conditional-form-unknown }
               {#6} { \token_to_str:c { #1 : #2 } }
           }
@@ -2554,7 +2577,7 @@
 %    only temporary, they will be redefined later on.
 %
 % \begin{macro}
-%   {\msg_error:nnxx, \msg_error:nnx, \msg_error:nn}
+%   {\msg_error:nnee, \msg_error:nne, \msg_error:nn}
 %   If an internal error occurs before \LaTeX3 has loaded \pkg{l3msg} then
 %   the code should issue a usable if terse error message and halt. This
 %   can only happen if a coding error is made by the team, so this is
@@ -2561,7 +2584,7 @@
 %   a reasonable response.  Setting the \tn{newlinechar} is needed, to
 %   turn |^^J| into a proper line break in plain \TeX{}.
 %    \begin{macrocode}
-\cs_set_protected:Npn \msg_error:nnxx #1#2#3#4
+\cs_set_protected:Npn \msg_error:nnee #1#2#3#4
   {
     \tex_newlinechar:D = `\^^J \scan_stop:
     \tex_errmessage:D
@@ -2574,10 +2597,10 @@
       }
     \tex_end:D
   }
-\cs_set_protected:Npn \msg_error:nnx #1#2#3
-  { \msg_error:nnxx {#1} {#2} {#3} { } }
+\cs_set_protected:Npn \msg_error:nne #1#2#3
+  { \msg_error:nnee {#1} {#2} {#3} { } }
 \cs_set_protected:Npn \msg_error:nn #1#2
-  { \msg_error:nnxx {#1} {#2} { } { } }
+  { \msg_error:nnee {#1} {#2} { } { } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2589,14 +2612,14 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[documented-as=\iow_log:n]{\iow_log:x, \iow_term:x}
+% \begin{macro}[documented-as=\iow_log:n]{\iow_log:e, \iow_term:e}
 %    We define a routine to write only to the log file. And a
 %    similar one for writing to both the log file and the terminal.
-%    These will be redefined later by \pkg{l3io}.
+%    These will be redefined later by \pkg{l3file}.
 %    \begin{macrocode}
-\cs_set_protected:Npn \iow_log:x
+\cs_set_protected:Npn \iow_log:e
   { \tex_immediate:D \tex_write:D -1 }
-\cs_set_protected:Npn \iow_term:x
+\cs_set_protected:Npn \iow_term:e
   { \tex_immediate:D \tex_write:D 16 }
 %    \end{macrocode}
 % \end{macro}
@@ -2614,7 +2637,7 @@
   {
     \cs_if_free:NF #1
       {
-        \msg_error:nnxx { kernel } { command-already-defined }
+        \msg_error:nnee { kernel } { command-already-defined }
           { \token_to_str:N #1 } { \token_to_meaning:N #1 }
       }
   }
@@ -2631,10 +2654,10 @@
 %
 % \begin{macro}
 %   {
-%     \cs_new_nopar:Npn           , \cs_new_nopar:Npx           ,
-%     \cs_new:Npn                 , \cs_new:Npx                 ,
-%     \cs_new_protected_nopar:Npn , \cs_new_protected_nopar:Npx ,
-%     \cs_new_protected:Npn       , \cs_new_protected:Npx
+%     \cs_new_nopar:Npn           , \cs_new_nopar:Npe           , \cs_new_nopar:Npx           ,
+%     \cs_new:Npn                 , \cs_new:Npe                 , \cs_new:Npx                 ,
+%     \cs_new_protected_nopar:Npn , \cs_new_protected_nopar:Npe , \cs_new_protected_nopar:Npx ,
+%     \cs_new_protected:Npn       , \cs_new_protected:Npe       , \cs_new_protected:Npx
 %   }
 % \begin{macro}{\@@_tmp:w}
 %   Function which check that the control sequence is free before
@@ -2649,12 +2672,16 @@
       }
   }
 \@@_tmp:w \cs_new_nopar:Npn           \cs_gset_nopar:Npn
+\@@_tmp:w \cs_new_nopar:Npe           \cs_gset_nopar:Npe
 \@@_tmp:w \cs_new_nopar:Npx           \cs_gset_nopar:Npx
 \@@_tmp:w \cs_new:Npn                 \cs_gset:Npn
+\@@_tmp:w \cs_new:Npe                 \cs_gset:Npe
 \@@_tmp:w \cs_new:Npx                 \cs_gset:Npx
 \@@_tmp:w \cs_new_protected_nopar:Npn \cs_gset_protected_nopar:Npn
+\@@_tmp:w \cs_new_protected_nopar:Npe \cs_gset_protected_nopar:Npe
 \@@_tmp:w \cs_new_protected_nopar:Npx \cs_gset_protected_nopar:Npx
 \@@_tmp:w \cs_new_protected:Npn       \cs_gset_protected:Npn
+\@@_tmp:w \cs_new_protected:Npe       \cs_gset_protected:Npe
 \@@_tmp:w \cs_new_protected:Npx       \cs_gset_protected:Npx
 %    \end{macrocode}
 % \end{macro}
@@ -2662,9 +2689,9 @@
 %
 % \begin{macro}[documented-as=\cs_set_nopar:Npn]
 %   {
-%     \cs_set_nopar:cpn  , \cs_set_nopar:cpx  ,
-%     \cs_gset_nopar:cpn , \cs_gset_nopar:cpx ,
-%     \cs_new_nopar:cpn  , \cs_new_nopar:cpx
+%     \cs_set_nopar:cpn  , \cs_set_nopar:cpe  , \cs_set_nopar:cpx  ,
+%     \cs_gset_nopar:cpn , \cs_gset_nopar:cpe , \cs_gset_nopar:cpx ,
+%     \cs_new_nopar:cpn  , \cs_new_nopar:cpe  , \cs_new_nopar:cpx
 %   }
 %   Like \cs{cs_set_nopar:Npn} and \cs{cs_new_nopar:Npn}, except that the
 %   first argument consists of the sequence of characters that should
@@ -2680,10 +2707,13 @@
 \cs_set:Npn \@@_tmp:w #1#2
   { \cs_new_protected_nopar:Npn #1 { \exp_args:Nc #2 } }
 \@@_tmp:w \cs_set_nopar:cpn  \cs_set_nopar:Npn
+\@@_tmp:w \cs_set_nopar:cpe  \cs_set_nopar:Npe
 \@@_tmp:w \cs_set_nopar:cpx  \cs_set_nopar:Npx
 \@@_tmp:w \cs_gset_nopar:cpn \cs_gset_nopar:Npn
+\@@_tmp:w \cs_gset_nopar:cpe \cs_gset_nopar:Npe
 \@@_tmp:w \cs_gset_nopar:cpx \cs_gset_nopar:Npx
 \@@_tmp:w \cs_new_nopar:cpn  \cs_new_nopar:Npn
+\@@_tmp:w \cs_new_nopar:cpe  \cs_new_nopar:Npe
 \@@_tmp:w \cs_new_nopar:cpx  \cs_new_nopar:Npx
 %    \end{macrocode}
 % \end{macro}
@@ -2690,18 +2720,21 @@
 %
 % \begin{macro}[documented-as=\cs_set:Npn]
 %   {
-%     \cs_set:cpn  , \cs_set:cpx  ,
-%     \cs_gset:cpn , \cs_gset:cpx ,
-%     \cs_new:cpn  , \cs_new:cpx
+%     \cs_set:cpn  , \cs_set:cpe  , \cs_set:cpx  ,
+%     \cs_gset:cpn , \cs_gset:cpe , \cs_gset:cpx ,
+%     \cs_new:cpn  , \cs_new:cpe  , \cs_new:cpx
 %   }
 %   Variants of the \cs{cs_set:Npn} versions which make a csname out
 %   of the first arguments. We may also do this globally.
 %    \begin{macrocode}
 \@@_tmp:w \cs_set:cpn  \cs_set:Npn
+\@@_tmp:w \cs_set:cpe  \cs_set:Npe
 \@@_tmp:w \cs_set:cpx  \cs_set:Npx
 \@@_tmp:w \cs_gset:cpn \cs_gset:Npn
+\@@_tmp:w \cs_gset:cpe \cs_gset:Npe
 \@@_tmp:w \cs_gset:cpx \cs_gset:Npx
 \@@_tmp:w \cs_new:cpn  \cs_new:Npn
+\@@_tmp:w \cs_new:cpe  \cs_new:Npe
 \@@_tmp:w \cs_new:cpx  \cs_new:Npx
 %    \end{macrocode}
 % \end{macro}
@@ -2708,18 +2741,21 @@
 %
 % \begin{macro}[documented-as=\cs_set_protected_nopar:Npn]
 %   {
-%     \cs_set_protected_nopar:cpn  , \cs_set_protected_nopar:cpx  ,
-%     \cs_gset_protected_nopar:cpn , \cs_gset_protected_nopar:cpx ,
-%     \cs_new_protected_nopar:cpn  , \cs_new_protected_nopar:cpx
+%     \cs_set_protected_nopar:cpn  , \cs_set_protected_nopar:cpe  , \cs_set_protected_nopar:cpx  ,
+%     \cs_gset_protected_nopar:cpn , \cs_gset_protected_nopar:cpe , \cs_gset_protected_nopar:cpx ,
+%     \cs_new_protected_nopar:cpn  , \cs_new_protected_nopar:cpe  , \cs_new_protected_nopar:cpx
 %   }
 %   Variants of the \cs{cs_set_protected_nopar:Npn} versions which make
 %   a csname out of the first arguments. We may also do this globally.
 %    \begin{macrocode}
 \@@_tmp:w \cs_set_protected_nopar:cpn  \cs_set_protected_nopar:Npn
+\@@_tmp:w \cs_set_protected_nopar:cpe  \cs_set_protected_nopar:Npe
 \@@_tmp:w \cs_set_protected_nopar:cpx  \cs_set_protected_nopar:Npx
 \@@_tmp:w \cs_gset_protected_nopar:cpn \cs_gset_protected_nopar:Npn
+\@@_tmp:w \cs_gset_protected_nopar:cpe \cs_gset_protected_nopar:Npe
 \@@_tmp:w \cs_gset_protected_nopar:cpx \cs_gset_protected_nopar:Npx
 \@@_tmp:w \cs_new_protected_nopar:cpn  \cs_new_protected_nopar:Npn
+\@@_tmp:w \cs_new_protected_nopar:cpe  \cs_new_protected_nopar:Npe
 \@@_tmp:w \cs_new_protected_nopar:cpx  \cs_new_protected_nopar:Npx
 %    \end{macrocode}
 % \end{macro}
@@ -2726,18 +2762,21 @@
 %
 % \begin{macro}[documented-as=\cs_set_protected:Npn]
 %   {
-%     \cs_set_protected:cpn  , \cs_set_protected:cpx  ,
-%     \cs_gset_protected:cpn , \cs_gset_protected:cpx ,
-%     \cs_new_protected:cpn  , \cs_new_protected:cpx
+%     \cs_set_protected:cpn  , \cs_set_protected:cpe  , \cs_set_protected:cpx  ,
+%     \cs_gset_protected:cpn , \cs_gset_protected:cpe , \cs_gset_protected:cpx , 
+%     \cs_new_protected:cpn  , \cs_new_protected:cpe  , \cs_new_protected:cpx
 %   }
 %   Variants of the \cs{cs_set_protected:Npn} versions which make a csname
 %   out of the first arguments. We may also do this globally.
 %    \begin{macrocode}
 \@@_tmp:w \cs_set_protected:cpn  \cs_set_protected:Npn
+\@@_tmp:w \cs_set_protected:cpe  \cs_set_protected:Npe
 \@@_tmp:w \cs_set_protected:cpx  \cs_set_protected:Npx
 \@@_tmp:w \cs_gset_protected:cpn \cs_gset_protected:Npn
+\@@_tmp:w \cs_gset_protected:cpe \cs_gset_protected:Npe
 \@@_tmp:w \cs_gset_protected:cpx \cs_gset_protected:Npx
 \@@_tmp:w \cs_new_protected:cpn  \cs_new_protected:Npn
+\@@_tmp:w \cs_new_protected:cpe  \cs_new_protected:Npe
 \@@_tmp:w \cs_new_protected:cpx  \cs_new_protected:Npx
 %    \end{macrocode}
 % \end{macro}
@@ -2827,7 +2866,7 @@
 %    \begin{macrocode}
 \cs_set_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2
   {
-    \exp_args:Nx \@@_parm_from_arg_count_test:nnF
+    \exp_args:Ne \@@_parm_from_arg_count_test:nnF
       {
         \exp_after:wN \exp_not:n
         \if_case:w \int_eval:n {#2}
@@ -2914,7 +2953,7 @@
   {
     \__kernel_cs_parm_from_arg_count:nnF { \use:nnn #2 #1 } {#3}
       {
-        \msg_error:nnxx { kernel } { bad-number-of-arguments }
+        \msg_error:nnee { kernel } { bad-number-of-arguments }
           { \token_to_str:N #1 } { \int_eval:n {#3} }
         \use_none:n
       }
@@ -2944,18 +2983,18 @@
 %
 % \begin{macro}
 %   {
-%     \cs_set:Nn                  , \cs_set:Nx                  ,
-%     \cs_set_nopar:Nn            , \cs_set_nopar:Nx            ,
-%     \cs_set_protected:Nn        , \cs_set_protected:Nx        ,
-%     \cs_set_protected_nopar:Nn  , \cs_set_protected_nopar:Nx  ,
-%     \cs_gset:Nn                 , \cs_gset:Nx                 ,
-%     \cs_gset_nopar:Nn           , \cs_gset_nopar:Nx           ,
-%     \cs_gset_protected:Nn       , \cs_gset_protected:Nx       ,
-%     \cs_gset_protected_nopar:Nn , \cs_gset_protected_nopar:Nx ,
-%     \cs_new:Nn                  , \cs_new:Nx                  ,
-%     \cs_new_nopar:Nn            , \cs_new_nopar:Nx            ,
-%     \cs_new_protected:Nn        , \cs_new_protected:Nx        ,
-%     \cs_new_protected_nopar:Nn  , \cs_new_protected_nopar:Nx  ,
+%     \cs_set:Nn                  , \cs_set:Ne                  , \cs_set:Nx                  ,
+%     \cs_set_nopar:Nn            , \cs_set_nopar:Ne            , \cs_set_nopar:Nx            ,
+%     \cs_set_protected:Nn        , \cs_set_protected:Ne        , \cs_set_protected:Nx        ,
+%     \cs_set_protected_nopar:Nn  , \cs_set_protected_nopar:Ne  , \cs_set_protected_nopar:Nx  ,
+%     \cs_gset:Nn                 , \cs_gset:Ne                 , \cs_gset:Nx                 ,
+%     \cs_gset_nopar:Nn           , \cs_gset_nopar:Ne           , \cs_gset_nopar:Nx           ,
+%     \cs_gset_protected:Nn       , \cs_gset_protected:Ne       , \cs_gset_protected:Nx       ,
+%     \cs_gset_protected_nopar:Nn , \cs_gset_protected_nopar:Ne , \cs_gset_protected_nopar:Nx ,
+%     \cs_new:Nn                  , \cs_new:Ne                  , \cs_new:Nx                  ,
+%     \cs_new_nopar:Nn            , \cs_new_nopar:Ne            , \cs_new_nopar:Nx            ,
+%     \cs_new_protected:Nn        , \cs_new_protected:Ne        , \cs_new_protected:Nx        ,
+%     \cs_new_protected_nopar:Nn  , \cs_new_protected_nopar:Ne  , \cs_new_protected_nopar:Nx  ,
 %   }
 %   We want to define \cs{cs_set:Nn} as
 %   \begin{verbatim}
@@ -2980,7 +3019,7 @@
   }
 \cs_new_protected:Npn \@@_generate_from_signature:NNn #1#2
   {
-    \use:x
+    \use:e
       {
         \@@_generate_from_signature:nnNNNn
         \cs_split_function:N #2
@@ -2995,7 +3034,7 @@
           { \tl_map_function:nN {#2} \@@_generate_from_signature:n }
         \tl_if_empty:oF \@@_tmp:w
           {
-            \msg_error:nnxxx { kernel } { non-base-function }
+            \msg_error:nneee { kernel } { non-base-function }
               { \token_to_str:N #5 } {#2} { \@@_tmp:w }
           }
         \cs_generate_from_arg_count:NNnn
@@ -3002,7 +3041,7 @@
           #5 #4 { \tl_count:n {#2} } {#6}
       }
       {
-        \msg_error:nnx { kernel } { missing-colon }
+        \msg_error:nne { kernel } { missing-colon }
           { \token_to_str:N #5 }
       }
   }
@@ -3015,28 +3054,40 @@
 %   Then we define the 24 variants beginning with |N|.
 %    \begin{macrocode}
 \@@_tmp:w { set }                  { Nn } { Npn }
+\@@_tmp:w { set }                  { Ne } { Npe }
 \@@_tmp:w { set }                  { Nx } { Npx }
 \@@_tmp:w { set_nopar }            { Nn } { Npn }
+\@@_tmp:w { set_nopar }            { Ne } { Npe }
 \@@_tmp:w { set_nopar }            { Nx } { Npx }
 \@@_tmp:w { set_protected }        { Nn } { Npn }
+\@@_tmp:w { set_protected }        { Ne } { Npe }
 \@@_tmp:w { set_protected }        { Nx } { Npx }
 \@@_tmp:w { set_protected_nopar }  { Nn } { Npn }
+\@@_tmp:w { set_protected_nopar }  { Ne } { Npe }
 \@@_tmp:w { set_protected_nopar }  { Nx } { Npx }
 \@@_tmp:w { gset }                 { Nn } { Npn }
+\@@_tmp:w { gset }                 { Ne } { Npe }
 \@@_tmp:w { gset }                 { Nx } { Npx }
 \@@_tmp:w { gset_nopar }           { Nn } { Npn }
+\@@_tmp:w { gset_nopar }           { Ne } { Npe }
 \@@_tmp:w { gset_nopar }           { Nx } { Npx }
 \@@_tmp:w { gset_protected }       { Nn } { Npn }
+\@@_tmp:w { gset_protected }       { Ne } { Npe }
 \@@_tmp:w { gset_protected }       { Nx } { Npx }
 \@@_tmp:w { gset_protected_nopar } { Nn } { Npn }
+\@@_tmp:w { gset_protected_nopar } { Ne } { Npe }
 \@@_tmp:w { gset_protected_nopar } { Nx } { Npx }
 \@@_tmp:w { new }                  { Nn } { Npn }
+\@@_tmp:w { new }                  { Ne } { Npe }
 \@@_tmp:w { new }                  { Nx } { Npx }
 \@@_tmp:w { new_nopar }            { Nn } { Npn }
+\@@_tmp:w { new_nopar }            { Ne } { Npe }
 \@@_tmp:w { new_nopar }            { Nx } { Npx }
 \@@_tmp:w { new_protected }        { Nn } { Npn }
+\@@_tmp:w { new_protected }        { Ne } { Npe }
 \@@_tmp:w { new_protected }        { Nx } { Npx }
 \@@_tmp:w { new_protected_nopar }  { Nn } { Npn }
+\@@_tmp:w { new_protected_nopar }  { Ne } { Npe }
 \@@_tmp:w { new_protected_nopar }  { Nx } { Npx }
 %    \end{macrocode}
 % \end{macro}
@@ -3043,18 +3094,18 @@
 %
 % \begin{macro}[documented-as=\cs_set:Nn]
 %   {
-%     \cs_set:cn                  , \cs_set:cx                  ,
-%     \cs_set_nopar:cn            , \cs_set_nopar:cx            ,
-%     \cs_set_protected:cn        , \cs_set_protected:cx        ,
-%     \cs_set_protected_nopar:cn  , \cs_set_protected_nopar:cx  ,
-%     \cs_gset:cn                 , \cs_gset:cx                 ,
-%     \cs_gset_nopar:cn           , \cs_gset_nopar:cx           ,
-%     \cs_gset_protected:cn       , \cs_gset_protected:cx       ,
-%     \cs_gset_protected_nopar:cn , \cs_gset_protected_nopar:cx ,
-%     \cs_new:cn                  , \cs_new:cx                  ,
-%     \cs_new_nopar:cn            , \cs_new_nopar:cx            ,
-%     \cs_new_protected:cn        , \cs_new_protected:cx        ,
-%     \cs_new_protected_nopar:cn  , \cs_new_protected_nopar:cx  ,
+%     \cs_set:cn                  , \cs_set:ce                  , \cs_set:cx                  ,
+%     \cs_set_nopar:cn            , \cs_set_nopar:ce            , \cs_set_nopar:cx            ,
+%     \cs_set_protected:cn        , \cs_set_protected:ce        , \cs_set_protected:cx        ,
+%     \cs_set_protected_nopar:cn  , \cs_set_protected_nopar:ce  , \cs_set_protected_nopar:cx  ,
+%     \cs_gset:cn                 , \cs_gset:ce                 , \cs_gset:cx                 ,
+%     \cs_gset_nopar:cn           , \cs_gset_nopar:ce           , \cs_gset_nopar:cx           ,
+%     \cs_gset_protected:cn       , \cs_gset_protected:ce       , \cs_gset_protected:cx       ,
+%     \cs_gset_protected_nopar:cn , \cs_gset_protected_nopar:ce , \cs_gset_protected_nopar:cx ,
+%     \cs_new:cn                  , \cs_new:ce                  , \cs_new:cx                  ,
+%     \cs_new_nopar:cn            , \cs_new_nopar:ce            , \cs_new_nopar:cx            ,
+%     \cs_new_protected:cn        , \cs_new_protected:ce        , \cs_new_protected:cx        ,
+%     \cs_new_protected_nopar:cn  , \cs_new_protected_nopar:ce  , \cs_new_protected_nopar:cx  ,
 %   }
 %   The 24 |c| variants simply use \cs{exp_args:Nc}.
 %    \begin{macrocode}
@@ -3067,28 +3118,40 @@
       }
   }
 \@@_tmp:w { set }                  { n }
+\@@_tmp:w { set }                  { e }
 \@@_tmp:w { set }                  { x }
 \@@_tmp:w { set_nopar }            { n }
+\@@_tmp:w { set_nopar }            { e }
 \@@_tmp:w { set_nopar }            { x }
 \@@_tmp:w { set_protected }        { n }
+\@@_tmp:w { set_protected }        { e }
 \@@_tmp:w { set_protected }        { x }
 \@@_tmp:w { set_protected_nopar }  { n }
+\@@_tmp:w { set_protected_nopar }  { e }
 \@@_tmp:w { set_protected_nopar }  { x }
 \@@_tmp:w { gset }                 { n }
+\@@_tmp:w { gset }                 { e }
 \@@_tmp:w { gset }                 { x }
 \@@_tmp:w { gset_nopar }           { n }
+\@@_tmp:w { gset_nopar }           { e }
 \@@_tmp:w { gset_nopar }           { x }
 \@@_tmp:w { gset_protected }       { n }
+\@@_tmp:w { gset_protected }       { e }
 \@@_tmp:w { gset_protected }       { x }
 \@@_tmp:w { gset_protected_nopar } { n }
+\@@_tmp:w { gset_protected_nopar } { e }
 \@@_tmp:w { gset_protected_nopar } { x }
 \@@_tmp:w { new }                  { n }
+\@@_tmp:w { new }                  { e }
 \@@_tmp:w { new }                  { x }
 \@@_tmp:w { new_nopar }            { n }
+\@@_tmp:w { new_nopar }            { e }
 \@@_tmp:w { new_nopar }            { x }
 \@@_tmp:w { new_protected }        { n }
+\@@_tmp:w { new_protected }        { e }
 \@@_tmp:w { new_protected }        { x }
 \@@_tmp:w { new_protected_nopar }  { n }
+\@@_tmp:w { new_protected_nopar }  { e }
 \@@_tmp:w { new_protected_nopar }  { x }
 %    \end{macrocode}
 % \end{macro}
@@ -3133,7 +3196,7 @@
     \cs_if_exist:NTF #1
       {#2}
       {
-        \msg_error:nnx { kernel } { variable-not-defined }
+        \msg_error:nne { kernel } { variable-not-defined }
           { \token_to_str:N #1 }
       }
   }
@@ -3196,7 +3259,7 @@
   {
     \group_begin:
       \int_set:Nn \tex_escapechar:D { `\\ }
-      \exp_args:NNx
+      \exp_args:NNe
     \group_end:
     #1 { \token_to_str:N #2 = \cs_meaning:N #2 }
   }
@@ -3214,7 +3277,7 @@
   { \@@_group_show:NN \int_zero:N 0 }
 \cs_new_protected:Npn \@@_group_show:NN #1#2
   {
-    \use:x
+    \use:e
       {
         #1 \tex_interactionmode:D
         \int_set:Nn \tex_tracingonline:D  {#2}
@@ -3247,7 +3310,7 @@
 %   catcode~$12$. If the token in question isn't a macro, the token
 %   \cs{scan_stop:} is returned instead.
 %    \begin{macrocode}
-\use:x
+\use:e
   {
     \exp_not:n { \cs_new:Npn \@@_prefix_arg_replacement:wN #1 }
     \tl_to_str:n { macro : } \exp_not:n { #2 -> #3 \s_@@_stop #4 }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -313,7 +313,7 @@
   {
     \bool_if:NF \l_@@_expl_bool
       {
-        \cs_set_protected:Npx \ExplSyntaxOff
+        \cs_set_protected:Npe \ExplSyntaxOff
           {
             \char_set_catcode:nn { 9 }   { \char_value_catcode:n { 9 } }
             \char_set_catcode:nn { 32 }  { \char_value_catcode:n { 32 } }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -1372,7 +1372,7 @@
         \group_end:
       }
       {
-        \msg_error:nnx { kernel } { variable-not-defined }
+        \msg_error:nne { kernel } { variable-not-defined }
           { \token_to_str:N #2 }
       }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -129,10 +129,10 @@
 %
 % \begin{function}[added = 2018-04-01]
 %   {
-%     \tl_build_put_left:Nn, \tl_build_put_left:Nx,
-%     \tl_build_gput_left:Nn, \tl_build_gput_left:Nx,
-%     \tl_build_put_right:Nn, \tl_build_put_right:Nx,
-%     \tl_build_gput_right:Nn, \tl_build_gput_right:Nx,
+%     \tl_build_put_left:Nn, \tl_build_put_left:Ne,
+%     \tl_build_gput_left:Nn, \tl_build_gput_left:Ne,
+%     \tl_build_put_right:Nn, \tl_build_put_right:Ne,
+%     \tl_build_gput_right:Nn, \tl_build_gput_right:Ne
 %   }
 %   \begin{syntax}
 %     \cs{tl_build_put_left:Nn} \meta{tl~var} \Arg{tokens}
@@ -198,9 +198,9 @@
 %   hence in the \texttt{x}-expanding assignment.
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_set_filter:NNn
-  { \@@_set_filter:NNNn \__kernel_tl_set:Nx }
+  { \@@_set_filter:NNNn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gset_filter:NNn
-  { \@@_set_filter:NNNn \__kernel_tl_gset:Nx }
+  { \@@_set_filter:NNNn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_set_filter:NNNn #1#2#3#4
   {
     \@@_push_item_def:n { \bool_if:nT {#4} { \@@_wrap_item:n {##1} } }
@@ -231,8 +231,8 @@
 % name is that of \meta{tl~var} followed by~|'|.  There are between $0$
 % and $4$ \cs{exp_end:} to keep track of when \meta{left} and
 % \meta{right} should be put into the \meta{next~tl}.  The
-% \meta{assignment} is \cs{cs_set_nopar:Npx} if the variable is local,
-% and \cs{cs_gset_nopar:Npx} if it is global.
+% \meta{assignment} is \cs{cs_set_nopar:Npe} if the variable is local,
+% and \cs{cs_gset_nopar:Npe} if it is global.
 %
 % \begin{macro}{\tl_build_begin:N, \tl_build_gbegin:N}
 % \begin{macro}{\@@_build_begin:NN, \@@_build_begin:NNN}
@@ -241,7 +241,7 @@
 %   derived from |#1| without any external data such as a counter.
 %   Empty that \meta{next~tl} and setup the structure.  The local and
 %   global versions only differ by a single function
-%   \cs[no-index]{cs_(g)set_nopar:Npx} used for all assignments: this is
+%   \cs[no-index]{cs_(g)set_nopar:Npe} used for all assignments: this is
 %   important because only that function is stored in the \meta{tl~var}
 %   and \meta{next~tl} for subsequent assignments.  In principle
 %   \cs{@@_build_begin:NNN} could use \cs[no-index]{tl_(g)clear_new:N}
@@ -250,9 +250,9 @@
 %   clear it locally or globally as appropriate.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_build_begin:N #1
-  { \@@_build_begin:NN \cs_set_nopar:Npx #1 }
+  { \@@_build_begin:NN \cs_set_nopar:Npe #1 }
 \cs_new_protected:Npn \tl_build_gbegin:N #1
-  { \@@_build_begin:NN \cs_gset_nopar:Npx #1 }
+  { \@@_build_begin:NN \cs_gset_nopar:Npe #1 }
 \cs_new_protected:Npn \@@_build_begin:NN #1#2
   { \exp_args:Nc \@@_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 }
 \cs_new_protected:Npn \@@_build_begin:NNN #1#2#3
@@ -283,8 +283,8 @@
 %
 % \begin{macro}
 %   {
-%     \tl_build_put_right:Nn, \tl_build_put_right:Nx,
-%     \tl_build_gput_right:Nn, \tl_build_gput_right:Nx,
+%     \tl_build_put_right:Nn, \tl_build_put_right:Ne, \tl_build_put_right:Nx,
+%     \tl_build_gput_right:Nn, \tl_build_gput_right:Ne, \tl_build_gput_right:Nx,
 %     \@@_build_last:NNn, \@@_build_put:nn, \@@_build_put:nw
 %   }
 %   Similar to \cs{tl_put_right:Nn}, but apply \cs{exp:w} to |#1|.  Most
@@ -299,8 +299,8 @@
 %   place without ever becoming a macro argument).  We use
 %   \cs{exp_after:wN} rather than some \cs{exp_args:No} to avoid reading
 %   arguments that are likely very long token lists.  We use
-%   \cs[no-index]{cs_(g)set_nopar:Npx} rather than
-%   \cs[no-index]{tl_(g)set:Nx} partly for the same reason and partly
+%   \cs[no-index]{cs_(g)set_nopar:Npe} rather than
+%   \cs[no-index]{tl_(g)set:Ne} partly for the same reason and partly
 %   because the assignments are interrupted by brace tricks, which
 %   implies that the assignment does not simply set the token list to an
 %   |x|-expansion of the second argument.
@@ -307,24 +307,16 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_build_put_right:Nn #1#2
   {
-    \cs_set_nopar:Npx #1
+    \cs_set_nopar:Npe #1
       { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
   }
-\cs_new_protected:Npn \tl_build_put_right:Nx #1#2
-  {
-    \cs_set_nopar:Npx #1
-      { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 } #2 }
-  }
+\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx }
 \cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
   {
-    \cs_gset_nopar:Npx #1
+    \cs_gset_nopar:Npe #1
       { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
   }
-\cs_new_protected:Npn \tl_build_gput_right:Nx #1#2
-  {
-    \cs_gset_nopar:Npx #1
-      { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 } #2 }
-  }
+\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx }
 \cs_new_protected:Npn \@@_build_last:NNn #1#2
   {
     \if_false: { { \fi:
@@ -350,8 +342,9 @@
 %
 % \begin{macro}
 %   {
-%     \tl_build_put_left:Nn, \tl_build_put_left:Nx,
-%     \tl_build_gput_left:Nn, \tl_build_gput_left:Nx, \@@_build_put_left:NNn
+%     \tl_build_put_left:Nn, \tl_build_put_left:Ne, \tl_build_put_left:Nx,
+%     \tl_build_gput_left:Nn, \tl_build_gput_left:Ne, \tl_build_gput_left:Nx,
+%     \@@_build_put_left:NNn
 %   }
 %   See \cs{tl_build_put_right:Nn} for all the machinery.  We could
 %   easily provide \cs[no-index]{tl_build_put_left_right:Nnn}, by just
@@ -359,11 +352,11 @@
 %   |x|-expanding assignment.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_build_put_left:Nn #1
-  { \@@_build_put_left:NNn \cs_set_nopar:Npx #1 }
-\cs_generate_variant:Nn \tl_build_put_left:Nn { Nx }
+  { \@@_build_put_left:NNn \cs_set_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx }
 \cs_new_protected:Npn \tl_build_gput_left:Nn #1
-  { \@@_build_put_left:NNn \cs_gset_nopar:Npx #1 }
-\cs_generate_variant:Nn \tl_build_gput_left:Nn { Nx }
+  { \@@_build_put_left:NNn \cs_gset_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx }
 \cs_new_protected:Npn \@@_build_put_left:NNn #1#2#3
   {
     #1 #2
@@ -389,7 +382,7 @@
 %   trick to wrap all the \meta{right} parts together.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_build_get:NN
-  { \@@_build_get:NNN \__kernel_tl_set:Nx }
+  { \@@_build_get:NNN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \@@_build_get:NNN #1#2#3
   { #1 #3 { \if_false: { \fi: \exp_after:wN \@@_build_get:w #2 } } }
 \cs_new:Npn \@@_build_get:w #1 \@@_build_last:NNn #2#3#4
@@ -410,16 +403,16 @@
 %   Get the data then clear the \meta{next~tl} recursively until finding
 %   an empty one.  It is perhaps wasteful to repeatedly use
 %   \cs{cs_to_str:N}.  The local/global scope is checked by
-%   \cs{tl_set:Nx} or \cs{tl_gset:Nx}.
+%   \cs{tl_set:Ne} or \cs{tl_gset:Ne}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_build_end:N #1
   {
-    \@@_build_get:NNN \__kernel_tl_set:Nx #1 #1
+    \@@_build_get:NNN \__kernel_tl_set:Ne #1 #1
     \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
   }
 \cs_new_protected:Npn \tl_build_gend:N #1
   {
-    \@@_build_get:NNN \__kernel_tl_gset:Nx #1 #1
+    \@@_build_get:NNN \__kernel_tl_gset:Ne #1 #1
     \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
   }
 \cs_new_protected:Npn \@@_build_end_loop:NN #1#2

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -543,7 +543,7 @@
       {
         \seq_gpop:NNF \g_@@_unused_seq \l_@@_internal_a_tl
           { \@@_begin_aux: }
-        \exp_args:Nx \@@_chk_group_begin:n
+        \@@_chk_group_begin:e
           { \@@_nesting_number:N \l_@@_internal_a_tl }
         \seq_gpush:NV \g_@@_stack_seq \l_@@_internal_a_tl
         \exp_args:NV \@@_gset:n \l_@@_internal_a_tl
@@ -566,7 +566,7 @@
     \seq_gpop:NNTF \g_@@_stack_seq \l_@@_internal_a_tl
       {
         \seq_gpush:NV \g_@@_unused_seq \l_@@_internal_a_tl
-        \exp_args:Nx \@@_chk_group_end:n
+        \exp_args:Ne \@@_chk_group_end:n
           { \@@_nesting_number:N \l_@@_internal_a_tl }
         \@@_select:N \l_@@_internal_a_tl
       }
@@ -575,7 +575,8 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_chk_group_begin:n,\@@_chk_group_end:n}
+% \begin{macro}
+%   {\@@_chk_group_begin:n,\@@_chk_group_begin:e, \@@_chk_group_end:n}
 %   Catcode tables are not allowed to be intermixed with groups, so here
 %   we check that they are properly nested regarding \TeX{} groups.
 %   \cs{@@_chk_group_begin:n} stores the current group level in a stack,
@@ -636,10 +637,11 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_chk_group_begin:n #1
   {
-    \seq_gpush:Nx \g_@@_group_seq
+    \seq_gpush:Ne \g_@@_group_seq
       { \int_use:N \tex_currentgrouplevel:D }
     \cs_set_eq:cN { @@_group_ #1 _chk: } \prg_do_nothing:
   }
+\cs_generate_variant:Nn \@@_chk_group_begin:n { e }
 \cs_new_protected:Npn \@@_chk_group_end:n #1
   {
     \seq_gpop:NN \g_@@_group_seq \l_@@_internal_b_tl
@@ -650,7 +652,7 @@
       }
       { \cs_if_exist_p:c { @@_group_ #1 _chk: } }
       {
-        \msg_error:nnx { cctab } { group-mismatch }
+        \msg_error:nne { cctab } { group-mismatch }
           {
             \int_sign:n
               { \tex_currentgrouplevel:D - \l_@@_internal_b_tl }
@@ -675,10 +677,10 @@
         \exp_after:wN \exp_after:wN \exp_after:wN \@@_nesting_number:w
           \exp_after:wN \token_to_str:N #1
       }
-    \use:x
+    \use:e
       {
         \cs_new:Npn \exp_not:N \@@_nesting_number:w
-          ##1 \tl_to_str:n { g_@@_ } ##2 \tl_to_str:n { _cctab } {##2}
+          #1 \tl_to_str:n { g_@@_ } #2 \tl_to_str:n { _cctab } {#2}
       }
   }
 %    \end{macrocode}
@@ -754,13 +756,13 @@
         \@@_chk_if_valid_aux:NTF #1
           { \prg_return_true: }
           {
-            \msg_error:nnx { cctab } { invalid-cctab }
+            \msg_error:nne { cctab } { invalid-cctab }
               { \token_to_str:N #1 }
             \prg_return_false:
           }
       }
       {
-        \msg_error:nnx { kernel } { command-not-defined }
+        \msg_error:nne { kernel } { command-not-defined }
           { \token_to_str:N #1 }
         \prg_return_false:
       }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -123,8 +123,8 @@
 %
 % \begin{function}[added = 2014-07-05]
 %   {
-%     \clist_const:Nn, \clist_const:Nx,
-%     \clist_const:cn, \clist_const:cx
+%     \clist_const:Nn, \clist_const:Ne,
+%     \clist_const:cn, \clist_const:ce
 %   }
 %   \begin{syntax}
 %     \cs{clist_const:Nn} \meta{clist~var} \Arg{comma list}
@@ -216,14 +216,14 @@
 %
 % \begin{function}[added = 2011-09-06]
 %   {
-%     \clist_set:Nn,  \clist_set:NV,
-%     \clist_set:No,  \clist_set:Nx,
-%     \clist_set:cn,  \clist_set:cV,
-%     \clist_set:co,  \clist_set:cx,
-%     \clist_gset:Nn, \clist_gset:NV,
-%     \clist_gset:No, \clist_gset:Nx,
-%     \clist_gset:cn, \clist_gset:cV,
-%     \clist_gset:co, \clist_gset:cx
+%     \clist_set:Nn,  \clist_set:NV, \clist_set:Ne,
+%     \clist_set:No,
+%     \clist_set:cn,  \clist_set:cV, \clist_set:ce,
+%     \clist_set:co,
+%     \clist_gset:Nn, \clist_gset:NV, \clist_gset:Ne,
+%     \clist_gset:No,
+%     \clist_gset:cn, \clist_gset:cV, \clist_gset:ce,
+%     \clist_gset:co
 %   }
 %   \begin{syntax}
 %     \cs{clist_set:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}|
@@ -241,17 +241,17 @@
 % \begin{function}[updated = 2011-09-05]
 %   {
 %     \clist_put_left:Nn,  \clist_put_left:NV,
-%     \clist_put_left:Nv,
-%     \clist_put_left:No,  \clist_put_left:Nx,
+%     \clist_put_left:Nv,  \clist_put_left:Ne,
+%     \clist_put_left:No,
 %     \clist_put_left:cn,  \clist_put_left:cV,
-%     \clist_put_left:cv,
-%     \clist_put_left:co,  \clist_put_left:cx,
+%     \clist_put_left:cv,  \clist_put_left:ce,
+%     \clist_put_left:co,
 %     \clist_gput_left:Nn, \clist_gput_left:NV,
-%     \clist_gput_left:Nv,
-%     \clist_gput_left:No, \clist_gput_left:Nx,
+%     \clist_gput_left:Nv, \clist_gput_left:Ne,
+%     \clist_gput_left:No,
 %     \clist_gput_left:cn, \clist_gput_left:cV,
-%     \clist_gput_left:cv,
-%     \clist_gput_left:co, \clist_gput_left:cx
+%     \clist_gput_left:cv, \clist_gput_left:ce,
+%     \clist_gput_left:co
 %   }
 %   \begin{syntax}
 %     \cs{clist_put_left:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}|
@@ -268,17 +268,17 @@
 % \begin{function}[updated = 2011-09-05]
 %   {
 %     \clist_put_right:Nn,  \clist_put_right:NV,
-%     \clist_put_right:Nv,
-%     \clist_put_right:No,  \clist_put_right:Nx,
+%     \clist_put_right:Nv,  \clist_put_right:Ne,
+%     \clist_put_right:No,
 %     \clist_put_right:cn,  \clist_put_right:cV,
-%     \clist_put_right:cv,
-%     \clist_put_right:co,  \clist_put_right:cx,
+%     \clist_put_right:cv,  \clist_put_right:ce,
+%     \clist_put_right:co,
 %     \clist_gput_right:Nn, \clist_gput_right:NV,
-%     \clist_gput_right:Nv,
-%     \clist_gput_right:No, \clist_gput_right:Nx,
+%     \clist_gput_right:Nv, \clist_gput_right:Ne,
+%     \clist_gput_right:No,
 %     \clist_gput_right:cn, \clist_gput_right:cV,
-%     \clist_gput_right:cv,
-%     \clist_gput_right:co, \clist_gput_right:cx
+%     \clist_gput_right:cv, \clist_gput_right:ce,
+%     \clist_gput_right:co
 %   }
 %   \begin{syntax}
 %     \cs{clist_put_right:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}|
@@ -444,7 +444,7 @@
 % \texttt{n}-type comma lists.
 %
 % \begin{function}[rEXP, updated = 2012-06-29]
-%   {\clist_map_function:NN, \clist_map_function:cN, \clist_map_function:nN}
+%   {\clist_map_function:NN, \clist_map_function:cN, \clist_map_function:nN, \clist_map_function:eN}
 %   \begin{syntax}
 %     \cs{clist_map_function:NN} \meta{clist~var} \meta{function}
 %   \end{syntax}
@@ -548,7 +548,7 @@
 % \end{function}
 %
 % \begin{function}[EXP, added = 2012-07-13]
-%   {\clist_count:N, \clist_count:c, \clist_count:n}
+%   {\clist_count:N, \clist_count:c, \clist_count:n, \clist_count:e}
 %   \begin{syntax}
 %     \cs{clist_count:N} \meta{clist~var}
 %   \end{syntax}
@@ -706,10 +706,10 @@
 %
 % \begin{function}
 %   {
-%     \clist_push:Nn,  \clist_push:NV,  \clist_push:No,  \clist_push:Nx,
-%     \clist_push:cn,  \clist_push:cV,  \clist_push:co,  \clist_push:cx,
-%     \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, \clist_gpush:Nx,
-%     \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx
+%     \clist_push:Nn,  \clist_push:NV,  \clist_push:No,
+%     \clist_push:cn,  \clist_push:cV,  \clist_push:co,
+%     \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No,
+%     \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co,
 %   }
 %   \begin{syntax}
 %     \cs{clist_push:Nn} \meta{clist~var} \Arg{items}
@@ -722,7 +722,7 @@
 % \section{Using a single item}
 %
 % \begin{function}[added = 2014-07-17, EXP]
-%   {\clist_item:Nn, \clist_item:cn, \clist_item:nn}
+%   {\clist_item:Nn, \clist_item:cn, \clist_item:nn, \clist_item:en}
 %   \begin{syntax}
 %     \cs{clist_item:Nn} \meta{clist~var} \Arg{int expr}
 %   \end{syntax}
@@ -984,15 +984,16 @@
 %
 % \begin{macro}
 %   {
-%     \clist_const:Nn, \clist_const:cn,
-%     \clist_const:Nx, \clist_const:cx
+%     \clist_const:Nn, \clist_const:Ne, \clist_const:Nx,
+%     \clist_const:cn, \clist_const:ce, \clist_const:cx
 %   }
 %   Creating and initializing a constant comma list is done by
 %   sanitizing all items (stripping spaces and braces).
 %    \begin{macrocode}
 \cs_new_protected:Npn \clist_const:Nn #1#2
-  { \tl_const:Nx #1 { \@@_sanitize:n {#2} } }
-\cs_generate_variant:Nn \clist_const:Nn { c , Nx , cx }
+  { \tl_const:Ne #1 { \@@_sanitize:n {#2} } }
+\cs_generate_variant:Nn \clist_const:Nn { Ne , c , ce }
+\cs_generate_variant:Nn \clist_const:Nn { Nx , cx }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1066,9 +1067,9 @@
 %   in the case of an empty comma-list.
 %    \begin{macrocode}
 \cs_new_protected:Npn \clist_set_from_seq:NN
-  { \@@_set_from_seq:NNNN \clist_clear:N  \__kernel_tl_set:Nx  }
+  { \@@_set_from_seq:NNNN \clist_clear:N  \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \clist_gset_from_seq:NN
-  { \@@_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Nx }
+  { \@@_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_set_from_seq:NNNN #1#2#3#4
   {
     \seq_if_empty:NTF #4
@@ -1107,9 +1108,9 @@
 %   a little work to do.
 %    \begin{macrocode}
 \cs_new_protected:Npn \clist_concat:NNN
-  { \@@_concat:NNNN \__kernel_tl_set:Nx }
+  { \@@_concat:NNNN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \clist_gconcat:NNN
-  { \@@_concat:NNNN \__kernel_tl_gset:Nx }
+  { \@@_concat:NNNN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_concat:NNNN #1#2#3#4
   {
     #1 #2
@@ -1140,25 +1141,27 @@
 %
 % \begin{macro}
 %   {
-%     \clist_set:Nn, \clist_set:NV,
-%     \clist_set:No, \clist_set:Nx,
-%     \clist_set:cn, \clist_set:cV,
-%     \clist_set:co, \clist_set:cx
+%     \clist_set:Nn,  \clist_set:NV, \clist_set:Ne,
+%     \clist_set:No,  \clist_set:Nx,
+%     \clist_set:cn,  \clist_set:cV, \clist_set:ce,
+%     \clist_set:co,  \clist_set:cx
 %   }
 % \begin{macro}
 %   {
-%     \clist_gset:Nn, \clist_gset:NV,
+%     \clist_gset:Nn, \clist_gset:NV, \clist_gset:Ne,
 %     \clist_gset:No, \clist_gset:Nx,
-%     \clist_gset:cn, \clist_gset:cV,
-%     \clist_gset:co, \clist_gset:cx
+%     \clist_gset:cn, \clist_gset:cV, \clist_gset:ce,
+%     \clist_gset:co, \clist_gset:cx,
 %   }
 %    \begin{macrocode}
 \cs_new_protected:Npn \clist_set:Nn #1#2
-  { \__kernel_tl_set:Nx #1 { \@@_sanitize:n {#2} } }
+  { \__kernel_tl_set:Ne #1 { \@@_sanitize:n {#2} } }
 \cs_new_protected:Npn \clist_gset:Nn #1#2
-  { \__kernel_tl_gset:Nx #1 { \@@_sanitize:n {#2} } }
-\cs_generate_variant:Nn \clist_set:Nn  { NV , No , Nx , c , cV , co , cx }
-\cs_generate_variant:Nn \clist_gset:Nn { NV , No , Nx , c , cV , co , cx }
+  { \__kernel_tl_gset:Ne #1 { \@@_sanitize:n {#2} } }
+\cs_generate_variant:Nn \clist_set:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \clist_set:Nn  { No , Nx , co , cx }
+\cs_generate_variant:Nn \clist_gset:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \clist_gset:Nn { No , Nx , co , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1165,22 +1168,22 @@
 %
 % \begin{macro}
 %   {
-%     \clist_put_left:Nn, \clist_put_left:NV,
-%     \clist_put_left:Nv,
-%     \clist_put_left:No, \clist_put_left:Nx,
-%     \clist_put_left:cn, \clist_put_left:cV,
-%     \clist_put_left:cv,
-%     \clist_put_left:co, \clist_put_left:cx
+%     \clist_put_left:Nn,  \clist_put_left:NV,
+%     \clist_put_left:Nv,  \clist_put_left:Ne,
+%     \clist_put_left:No,  \clist_put_left:Nx,
+%     \clist_put_left:cn,  \clist_put_left:cV,
+%     \clist_put_left:cv,  \clist_put_left:ce,
+%     \clist_put_left:co,  \clist_put_left:cx,
 %   }
 % \UnitTested
 % \begin{macro}
 %   {
 %     \clist_gput_left:Nn, \clist_gput_left:NV,
-%     \clist_gput_left:Nv,
+%     \clist_gput_left:Nv, \clist_gput_left:Ne,
 %     \clist_gput_left:No, \clist_gput_left:Nx,
 %     \clist_gput_left:cn, \clist_gput_left:cV,
-%     \clist_gput_left:cv,
-%     \clist_gput_left:co, \clist_gput_left:cx
+%     \clist_gput_left:cv, \clist_gput_left:ce,
+%     \clist_gput_left:co, \clist_gput_left:cx,
 %   }
 % \UnitTested
 % \begin{macro}{\@@_put_left:NNNn}
@@ -1197,10 +1200,10 @@
     #2 \l_@@_internal_clist {#4}
     #1 #3 \l_@@_internal_clist #3
   }
-\cs_generate_variant:Nn \clist_put_left:Nn  {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_put_left:Nn  { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \clist_gput_left:Nn {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_put_left:Nn  { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_put_left:Nn  { No , Nx , co , cx }
+\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_gput_left:Nn { No , Nx , co , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1209,10 +1212,10 @@
 % \begin{macro}
 %   {
 %     \clist_put_right:Nn, \clist_put_right:NV,
-%     \clist_put_right:Nv,
+%     \clist_put_right:Nv, \clist_put_right:Ne,
 %     \clist_put_right:No, \clist_put_right:Nx,
 %     \clist_put_right:cn, \clist_put_right:cV,
-%     \clist_put_right:cv,
+%     \clist_put_right:cv, \clist_put_right:ce,
 %     \clist_put_right:co, \clist_put_right:cx
 %   }
 % \UnitTested
@@ -1219,11 +1222,11 @@
 % \begin{macro}
 %   {
 %     \clist_gput_right:Nn, \clist_gput_right:NV,
-%     \clist_gput_right:Nv,
+%     \clist_gput_right:Nv, \clist_gput_right:Ne,
 %     \clist_gput_right:No, \clist_gput_right:Nx,
 %     \clist_gput_right:cn, \clist_gput_right:cV,
-%     \clist_gput_right:cv,
-%     \clist_gput_right:co, \clist_gput_right:cx
+%     \clist_gput_right:cv, \clist_gput_right:ce,
+%     \clist_gput_right:cx, \clist_gput_right:co
 %   }
 % \UnitTested
 % \begin{macro}{\@@_put_right:NNNn}
@@ -1237,10 +1240,14 @@
     #2 \l_@@_internal_clist {#4}
     #1 #3 #3 \l_@@_internal_clist
   }
-\cs_generate_variant:Nn \clist_put_right:Nn  {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_put_right:Nn  { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \clist_gput_right:Nn {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_put_right:Nn
+  { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_put_right:Nn
+  { No , Nx , co , cx }
+\cs_generate_variant:Nn \clist_gput_right:Nn
+  { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_gput_right:Nn
+  { No , Nx , co , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1288,9 +1295,9 @@
 %   result can safely be an empty comma list.
 %    \begin{macrocode}
 \cs_new_protected:Npn \clist_pop:NN
-  { \@@_pop:NNN \__kernel_tl_set:Nx }
+  { \@@_pop:NNN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \clist_gpop:NN
-  { \@@_pop:NNN \__kernel_tl_gset:Nx }
+  { \@@_pop:NNN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_pop:NNN #1#2#3
   {
     \if_meaning:w #2 \c_empty_clist
@@ -1335,9 +1342,9 @@
   }
 \prg_generate_conditional_variant:Nnn \clist_get:NN { c } { T , F , TF }
 \prg_new_protected_conditional:Npnn \clist_pop:NN #1#2 { T , F , TF }
-  { \@@_pop_TF:NNN \__kernel_tl_set:Nx #1 #2 }
+  { \@@_pop_TF:NNN \__kernel_tl_set:Ne #1 #2 }
 \prg_new_protected_conditional:Npnn \clist_gpop:NN #1#2 { T , F , TF }
-  { \@@_pop_TF:NNN \__kernel_tl_gset:Nx #1 #2 }
+  { \@@_pop_TF:NNN \__kernel_tl_gset:Ne #1 #2 }
 \cs_new_protected:Npn \@@_pop_TF:NNN #1#2#3
   {
     \if_meaning:w #2 \c_empty_clist
@@ -1357,32 +1364,20 @@
 %
 % \begin{macro}{
 %   \clist_push:Nn, \clist_push:NV, \clist_push:No, \clist_push:Nx,
-%   \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx
+%   \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx,
 % }
 % \UnitTested
 % \begin{macro}{
 %   \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, \clist_gpush:Nx,
-%   \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx
+%   \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx,
 % }
 % \UnitTested
 %   Pushing to a comma list is the same as adding on the left.
 %    \begin{macrocode}
 \cs_new_eq:NN \clist_push:Nn  \clist_put_left:Nn
-\cs_new_eq:NN \clist_push:NV  \clist_put_left:NV
-\cs_new_eq:NN \clist_push:No  \clist_put_left:No
-\cs_new_eq:NN \clist_push:Nx  \clist_put_left:Nx
-\cs_new_eq:NN \clist_push:cn  \clist_put_left:cn
-\cs_new_eq:NN \clist_push:cV  \clist_put_left:cV
-\cs_new_eq:NN \clist_push:co  \clist_put_left:co
-\cs_new_eq:NN \clist_push:cx  \clist_put_left:cx
+\cs_generate_variant:Nn \clist_push:Nn { NV , No , Nx , c , cV , co , cx }
 \cs_new_eq:NN \clist_gpush:Nn \clist_gput_left:Nn
-\cs_new_eq:NN \clist_gpush:NV \clist_gput_left:NV
-\cs_new_eq:NN \clist_gpush:No \clist_gput_left:No
-\cs_new_eq:NN \clist_gpush:Nx \clist_gput_left:Nx
-\cs_new_eq:NN \clist_gpush:cn \clist_gput_left:cn
-\cs_new_eq:NN \clist_gpush:cV \clist_gput_left:cV
-\cs_new_eq:NN \clist_gpush:co \clist_gput_left:co
-\cs_new_eq:NN \clist_gpush:cx \clist_gput_left:cx
+\cs_generate_variant:Nn \clist_gpush:Nn { NV , No , Nx , c , cV , co , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1415,7 +1410,7 @@
       {
         \clist_if_in:NnF \l_@@_internal_remove_clist {##1}
           {
-            \tl_put_right:Nx \l_@@_internal_remove_clist
+            \tl_put_right:Ne \l_@@_internal_remove_clist
               {
                 \clist_if_empty:NF \l_@@_internal_remove_clist { , }
                 \@@_if_wrap:nTF {##1} { \exp_not:n { {##1} } } { \exp_not:n {##1} }
@@ -1478,9 +1473,9 @@
 %   the second step removes it.
 %    \begin{macrocode}
 \cs_new_protected:Npn \clist_remove_all:Nn
-  { \@@_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Nx }
+  { \@@_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \clist_gremove_all:Nn
-  { \@@_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Nx }
+  { \@@_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_remove_all:NNNn #1#2#3#4
   {
     \@@_if_wrap:nTF {#4}
@@ -1534,9 +1529,9 @@
 %   \texttt{N}-type comma lists, but the slow-down is not too bad.
 %    \begin{macrocode}
 \cs_new_protected:Npn \clist_reverse:N #1
-  { \__kernel_tl_set:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
+  { \__kernel_tl_set:Ne #1 { \exp_args:No \clist_reverse:n {#1} } }
 \cs_new_protected:Npn \clist_greverse:N #1
-  { \__kernel_tl_gset:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
+  { \__kernel_tl_gset:Ne #1 { \exp_args:No \clist_reverse:n {#1} } }
 \cs_generate_variant:Nn \clist_reverse:N { c }
 \cs_generate_variant:Nn \clist_greverse:N { c }
 %    \end{macrocode}
@@ -1657,7 +1652,7 @@
   {
     \@@_if_wrap:nTF {#2}
       {
-        \cs_set:Npx \@@_tmp:w ##1
+        \cs_set:Npe \@@_tmp:w ##1
           {
             \exp_not:N \tl_if_eq:nnT {##1}
             \exp_not:n
@@ -1726,7 +1721,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\clist_map_function:nN}
+% \begin{macro}{\clist_map_function:nN, \clist_map_function:eN}
 % \UnitTested
 % \begin{macro}{\@@_map_function_n:Nn}
 % \begin{macro}{\@@_map_unbrace:wn}
@@ -1745,6 +1740,7 @@
       \s_@@_stop \clist_map_break: ,
     \prg_break_point:Nn \clist_map_break: { }
   }
+\cs_generate_variant:Nn \clist_map_function:nN { e }
 \cs_new:Npn \@@_map_function_n:Nn #1 #2
   {
     \@@_use_none_delimit_by_s_stop:w #2 \s_@@_stop
@@ -1893,7 +1889,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\clist_count:N, \clist_count:c, \clist_count:n}
+% \begin{macro}{\clist_count:N, \clist_count:c, \clist_count:n, \clist_count:e}
 % \begin{macro}{\@@_count:n}
 % \begin{macro}{\@@_count:w}
 %   Counting the items in a comma list is done using the same approach as for
@@ -1933,6 +1929,7 @@
       }
   }
 \exp_args:No \@@_tmp:w \c_space_tl
+\cs_generate_variant:Nn \clist_count:n { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2110,7 +2107,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\clist_item:nn}
+% \begin{macro}{\clist_item:nn, \clist_item:en}
 % \begin{macro}{
 %     \@@_item_n:nw,
 %     \@@_item_n_loop:nw,
@@ -2130,6 +2127,7 @@
       {#1}
       \@@_item_n:nw
   }
+\cs_generate_variant:Nn \clist_item:nn { e }
 \cs_new:Npn \@@_item_n:nw #1
   { \@@_item_n_loop:nw {#1} \prg_do_nothing: }
 \cs_new:Npn \@@_item_n_loop:nw #1 #2,
@@ -2188,9 +2186,9 @@
 %   |#2| serving as a dummy code to prevent a check performed by this
 %   auxiliary.
 %    \begin{macrocode}
-\cs_new_protected:Npn \clist_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \clist_show:N { \@@_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \clist_show:N { c }
-\cs_new_protected:Npn \clist_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_log:N { \@@_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \clist_log:N { c }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {
@@ -2205,7 +2203,7 @@
               { } { }
           }
           {
-            \msg_error:nnxx { clist } { non-clist }
+            \msg_error:nnee { clist } { non-clist }
               { \token_to_str:N #2 } { \tl_to_str:N #2 }
           }
       }
@@ -2217,8 +2215,8 @@
 %   A variant of the above: no existence check, empty first argument for
 %   the message.
 %    \begin{macrocode}
-\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \msg_show:nnxxxx }
-\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \msg_show:nneeee }
+\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \msg_log:nneeee }
 \cs_new_protected:Npn \@@_show:Nn #1#2
   {
     #1 { clist } { show }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -602,7 +602,7 @@
     \coffin_if_exist:NTF #1
       { #2 }
       {
-        \msg_error:nnx { coffin } { unknown }
+        \msg_error:nne { coffin } { unknown }
           { \token_to_str:N #1 }
       }
   }
@@ -736,7 +736,7 @@
           }
         #5 #1
         \vbox_set_top:Nn \l_@@_internal_box { \vbox_unpack:N #1 }
-        \@@_set_pole:Nnx #1 { T }
+        \@@_set_pole:Nne #1 { T }
           {
             { 0pt }
             {
@@ -749,7 +749,7 @@
         \box_clear:N \l_@@_internal_box
       }
   }
-\cs_new_protected:Npx \@@_set_vertical_aux:
+\cs_new_protected:Npe \@@_set_vertical_aux:
   {
     \bool_lazy_and:nnT
       { \cs_if_exist_p:N \fmtname }
@@ -834,7 +834,7 @@
               #5
               #6 #1
               \vbox_set_top:Nn \l_@@_internal_box { \vbox_unpack:N #1 }
-              \@@_set_pole:Nnx #1 { T }
+              \@@_set_pole:Nne #1 { T }
                 {
                   { 0pt }
                   {
@@ -949,7 +949,7 @@
     \prop_get:cnNF
       { coffin ~ \@@_to_value:N #1 ~ poles } {#2} #3
       {
-        \msg_error:nnxx { coffin } { unknown-pole }
+        \msg_error:nnee { coffin } { unknown-pole }
           { \exp_not:n {#2} } { \token_to_str:N #1 }
         \tl_set:Nn #3 { { 0pt } { 0pt } { 0pt } { 0pt } }
       }
@@ -989,7 +989,7 @@
 %     \coffin_gset_vertical_pole:Nnn, \coffin_gset_vertical_pole:cnn
 %   }
 % \begin{macro}{\@@_set_vertical_pole:NnnN}
-% \begin{macro}{\@@_set_pole:Nnn, \@@_set_pole:Nnx}
+% \begin{macro}{\@@_set_pole:Nnn, \@@_set_pole:Nne}
 %   Setting the pole of a coffin at the user/designer level requires a
 %   bit more care. The idea here is to provide a reasonable interface to
 %   the system, then to do the setting with full expansion. The
@@ -996,10 +996,10 @@
 %   three-argument version is used internally to do a direct setting.
 %    \begin{macrocode}
 \cs_new_protected:Npn \coffin_set_horizontal_pole:Nnn #1#2#3
-  { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_put:cnx }
+  { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_put:cne }
 \cs_generate_variant:Nn \coffin_set_horizontal_pole:Nnn { c }
 \cs_new_protected:Npn \coffin_gset_horizontal_pole:Nnn #1#2#3
-  { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_gput:cnx }
+  { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_gput:cne }
 \cs_generate_variant:Nn \coffin_gset_horizontal_pole:Nnn { c }
 \cs_new_protected:Npn \@@_set_horizontal_pole:NnnN #1#2#3#4
   {
@@ -1014,10 +1014,10 @@
       }
   }
 \cs_new_protected:Npn \coffin_set_vertical_pole:Nnn #1#2#3
-  { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_put:cnx }
+  { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_put:cne }
 \cs_generate_variant:Nn \coffin_set_vertical_pole:Nnn { c }
 \cs_new_protected:Npn \coffin_gset_vertical_pole:Nnn #1#2#3
-  { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_gput:cnx }
+  { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_gput:cne }
   \cs_generate_variant:Nn \coffin_gset_vertical_pole:Nnn { c }
 \cs_new_protected:Npn \@@_set_vertical_pole:NnnN #1#2#3#4
   {
@@ -1036,7 +1036,7 @@
     \prop_put:cnn { coffin ~ \@@_to_value:N #1 ~ poles }
       {#2} {#3}
   }
-\cs_generate_variant:Nn \@@_set_pole:Nnn { Nnx }
+\cs_generate_variant:Nn \@@_set_pole:Nnn { Nne }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1070,9 +1070,9 @@
 %   of the underlying \TeX{} box.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_update_corners:N #1
-  { \@@_update_corners:NN #1 \prop_put:Nnx }
+  { \@@_update_corners:NN #1 \prop_put:Nne }
 \cs_new_protected:Npn \@@_gupdate_corners:N #1
-  { \@@_update_corners:NN #1 \prop_gput:Nnx }
+  { \@@_update_corners:NN #1 \prop_gput:Nne }
 \cs_new_protected:Npn \@@_update_corners:NN #1#2
   {
     \exp_args:Nc \@@_update_corners:NNN
@@ -1115,9 +1115,9 @@
 %   coffins.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_update_poles:N #1
-  { \@@_update_poles:NN #1 \prop_put:Nnx }
+  { \@@_update_poles:NN #1 \prop_put:Nne }
 \cs_new_protected:Npn \@@_gupdate_poles:N #1
-  { \@@_update_poles:NN #1 \prop_gput:Nnx }
+  { \@@_update_poles:NN #1 \prop_gput:Nne }
 \cs_new_protected:Npn \@@_update_poles:NN #1#2
   {
     \exp_args:Nc \@@_update_poles:NNN
@@ -1277,7 +1277,7 @@
 %   more complexity, we now work out both slopes and pass to an auxiliary.
 %    \begin{macrocode}
           {
-            \use:x
+            \use:e
               {
                 \@@_calculate_intersection:nnnnnn
                   { \dim_to_fp:n {#4} / \dim_to_fp:n {#3} }
@@ -1494,17 +1494,17 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_set_bounding:N #1
   {
-    \prop_put:Nnx \l_@@_bounding_prop { tl }
+    \prop_put:Nne \l_@@_bounding_prop { tl }
       { { 0pt } { \dim_eval:n { \box_ht:N #1 } } }
-    \prop_put:Nnx \l_@@_bounding_prop { tr }
+    \prop_put:Nne \l_@@_bounding_prop { tr }
       {
         { \dim_eval:n { \box_wd:N #1 } }
         { \dim_eval:n { \box_ht:N #1 } }
       }
     \dim_set:Nn \l_@@_internal_dim { -\box_dp:N #1 }
-    \prop_put:Nnx \l_@@_bounding_prop { bl }
+    \prop_put:Nne \l_@@_bounding_prop { bl }
       { { 0pt } { \dim_use:N \l_@@_internal_dim } }
-    \prop_put:Nnx \l_@@_bounding_prop { br }
+    \prop_put:Nne \l_@@_bounding_prop { br }
       {
         { \dim_eval:n { \box_wd:N #1 } }
         { \dim_use:N \l_@@_internal_dim }
@@ -1523,13 +1523,13 @@
 \cs_new_protected:Npn \@@_rotate_bounding:nnn #1#2#3
   {
     \@@_rotate_vector:nnNN {#2} {#3} \l_@@_x_dim \l_@@_y_dim
-    \prop_put:Nnx \l_@@_bounding_prop {#1}
+    \prop_put:Nne \l_@@_bounding_prop {#1}
       { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } }
   }
 \cs_new_protected:Npn \@@_rotate_corner:Nnnn #1#2#3#4
   {
     \@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim
-    \prop_put:Nnx \l_@@_corners_prop {#2}
+    \prop_put:Nne \l_@@_corners_prop {#2}
       { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } }
   }
 %    \end{macrocode}
@@ -1546,7 +1546,7 @@
     \@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim
     \@@_rotate_vector:nnNN {#5} {#6}
       \l_@@_x_prime_dim \l_@@_y_prime_dim
-    \prop_put:Nnx \l_@@_poles_prop {#2}
+    \prop_put:Nne \l_@@_poles_prop {#2}
       {
         { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim }
         { \dim_use:N \l_@@_x_prime_dim }
@@ -1647,7 +1647,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_shift_corner:Nnnn #1#2#3#4
   {
-    \prop_put:Nnx \l_@@_corners_prop {#2}
+    \prop_put:Nne \l_@@_corners_prop {#2}
       {
         { \dim_eval:n { #3 - \l_@@_left_corner_dim } }
         { \dim_eval:n { #4 - \l_@@_bottom_corner_dim } }
@@ -1655,7 +1655,7 @@
   }
 \cs_new_protected:Npn \@@_shift_pole:Nnnnnn #1#2#3#4#5#6
   {
-    \prop_put:Nnx \l_@@_poles_prop {#2}
+    \prop_put:Nne \l_@@_poles_prop {#2}
       {
         { \dim_eval:n { #3 - \l_@@_left_corner_dim } }
         { \dim_eval:n { #4 - \l_@@_bottom_corner_dim } }
@@ -1821,13 +1821,13 @@
 \cs_new_protected:Npn \@@_scale_corner:Nnnn #1#2#3#4
   {
     \@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim
-    \prop_put:Nnx \l_@@_corners_prop {#2}
+    \prop_put:Nne \l_@@_corners_prop {#2}
       { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } }
   }
 \cs_new_protected:Npn \@@_scale_pole:Nnnnnn #1#2#3#4#5#6
   {
     \@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim
-    \prop_put:Nnx \l_@@_poles_prop {#2}
+    \prop_put:Nne \l_@@_poles_prop {#2}
       {
         { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim }
         {#5} {#6}
@@ -1844,7 +1844,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_x_shift_corner:Nnnn #1#2#3#4
   {
-    \prop_put:Nnx \l_@@_corners_prop {#2}
+    \prop_put:Nne \l_@@_corners_prop {#2}
       {
         { \dim_eval:n { #3 + \box_wd:N #1 } } {#4}
       }
@@ -1851,7 +1851,7 @@
   }
 \cs_new_protected:Npn \@@_x_shift_pole:Nnnnnn #1#2#3#4#5#6
   {
-    \prop_put:Nnx \l_@@_poles_prop {#2}
+    \prop_put:Nne \l_@@_poles_prop {#2}
       {
         { \dim_eval:n { #3 + \box_wd:N #1 } } {#4}
         {#5} {#6}
@@ -2068,7 +2068,7 @@
     \tl_if_in:nnTF {#2} { - }
       { \tl_set:Nn \l_@@_internal_tl { {#2} } }
       { \tl_set:Nn \l_@@_internal_tl { { #1 - #2 } } }
-    \exp_last_unbraced:NNo \@@_set_pole:Nnx \l_@@_aligned_coffin
+    \exp_last_unbraced:NNo \@@_set_pole:Nne \l_@@_aligned_coffin
       { \l_@@_internal_tl }
       {
         { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim }
@@ -2092,7 +2092,7 @@
   }
 \cs_new_protected:Npn \@@_offset_corner:Nnnnn #1#2#3#4#5#6
   {
-    \prop_put:cnx
+    \prop_put:cne
       {
         coffin ~ \@@_to_value:N \l_@@_aligned_coffin
         \c_space_tl corners
@@ -2130,11 +2130,11 @@
   {
     \dim_compare:nNnTF {#2} < {#6}
       {
-        \@@_set_pole:Nnx #9 { T }
+        \@@_set_pole:Nne #9 { T }
           { { 0pt } {#6} { 1000pt } { 0pt } }
       }
       {
-        \@@_set_pole:Nnx #9 { T }
+        \@@_set_pole:Nne #9 { T }
           { { 0pt } {#2} { 1000pt } { 0pt } }
       }
   }
@@ -2142,11 +2142,11 @@
   {
     \dim_compare:nNnTF {#2} < {#6}
       {
-        \@@_set_pole:Nnx #9 { B }
+        \@@_set_pole:Nne #9 { B }
           { { 0pt } {#2}  { 1000pt } { 0pt } }
       }
       {
-        \@@_set_pole:Nnx #9 { B }
+        \@@_set_pole:Nne #9 { B }
           { { 0pt } {#6} { 1000pt } { 0pt } }
       }
   }
@@ -2490,10 +2490,10 @@
 %   structure then the code complains.
 %    \begin{macrocode}
 \cs_new_protected:Npn \coffin_show_structure:N
-  { \@@_show_structure:NN \msg_show:nnxxxx }
+  { \@@_show_structure:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \coffin_show_structure:N { c }
 \cs_new_protected:Npn \coffin_log_structure:N
-  { \@@_show_structure:NN \msg_log:nnxxxx }
+  { \@@_show_structure:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \coffin_log_structure:N { c }
 \cs_new_protected:Npn \@@_show_structure:NN #1#2
   {
@@ -2525,8 +2525,8 @@
 %   }
 %   Essentially a combination of \cs{coffin_show_structure:N} and
 %   \cs{box_show:Nnn}, but we need to avoid having two prompts, so we
-%   use \cs{msg_term:nnxxxx} instead of
-%   \cs{msg_show:nnxxxx} in the |show| case.
+%   use \cs{msg_term:nneeee} instead of
+%   \cs{msg_show:nneeee} in the |show| case.
 %    \begin{macrocode}
 \cs_new_protected:Npn \coffin_show:N #1
   { \coffin_show:Nnn #1 \c_max_int \c_max_int }
@@ -2535,10 +2535,10 @@
   { \coffin_log:Nnn #1 \c_max_int \c_max_int }
 \cs_generate_variant:Nn \coffin_log:N { c }
 \cs_new_protected:Npn \coffin_show:Nnn
-  { \@@_show:NNNnn \msg_term:nnxxxx \box_show:Nnn }
+  { \@@_show:NNNnn \msg_term:nneeee \box_show:Nnn }
 \cs_generate_variant:Nn \coffin_show:Nnn { c }
 \cs_new_protected:Npn \coffin_log:Nnn
-  { \@@_show:NNNnn \msg_log:nnxxxx \box_show:Nnn }
+  { \@@_show:NNNnn \msg_log:nneeee \box_show:Nnn }
 \cs_generate_variant:Nn \coffin_log:Nnn { c }
 \cs_new_protected:Npn \@@_show:NNNnn #1#2#3#4#5
   {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -720,7 +720,7 @@
 \cs_generate_variant:Nn \exp_last_unbraced:Nf { c }
 \cs_new_protected:Npn \@@_convert:nnnN #1#2#3#4
   {
-    \tl_set:Nx #4
+    \tl_set:Ne #4
       {
         \cs_if_exist_use:cTF { @@_convert_ #1 _ #2 :w }
           { #3 \s_@@_stop }
@@ -850,11 +850,11 @@
 %   otherwise expands, then starts working through the expression itself.
 %   At the end, we apply the payload.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_parse:nN #1#2
+\cs_new_protected:Npe \@@_parse:nN #1#2
   {
-    \tl_set:Nx \exp_not:c { l_@@_named_ . _tl }
+    \tl_set:Ne \exp_not:c { l_@@_named_ . _tl }
       { \exp_not:N \@@_model:N \exp_not:N \l_@@_current_tl }
-    \prop_put:NVx \exp_not:c { l_@@_named_ . _prop }
+    \prop_put:NVe \exp_not:c { l_@@_named_ . _prop }
       \exp_not:c { l_@@_named_ . _tl }
       { \exp_not:N \@@_values:N \exp_not:N \l_@@_current_tl }
     \exp_not:N \exp_args:Ne \exp_not:N \@@_parse_aux:nN
@@ -889,7 +889,7 @@
     \prop_get:cnNTF
       { l_@@_named_ #3 _prop } {#1}
       \l_@@_value_tl
-      { \tl_set:Nx #2 { {#1} { \l_@@_value_tl } } }
+      { \tl_set:Ne #2 { {#1} { \l_@@_value_tl } } }
       {
         \tl_set_eq:Nc \l_@@_model_tl { l_@@_named_ #3 _tl }
         \prop_get:cVN { l_@@_named_ #3 _prop } \l_@@_model_tl
@@ -896,7 +896,7 @@
           \l_@@_value_tl
          \@@_convert:nnN
            \l_@@_model_tl {#1} \l_@@_value_tl
-        \tl_set:Nx #2
+        \tl_set:Ne #2
           {
             {#1}
             { \l_@@_value_tl }
@@ -926,7 +926,7 @@
     \group_begin:
       \@@_extract:nNN {#2} \l_@@_model_tl \l_@@_value_tl
       \@@_parse_loop:w #3 ! ! ! ! \s_@@_stop
-      \tl_set:Nx \l_@@_internal_tl
+      \tl_set:Ne \l_@@_internal_tl
         { { \l_@@_model_tl } { \l_@@_value_tl } }
     \exp_args:NNNV \group_end:
     \tl_set:Nn #1 \l_@@_internal_tl
@@ -951,7 +951,7 @@
           { \fp_compare_p:nNn {#1} > { 0 } }
           { \fp_compare_p:nNn {#1} < { 100 } }
           {
-            \use:x
+            \use:e
               {
                 \@@_parse_loop:nn {#1}
                   { \tl_if_blank:nTF {#2} { white } {#2} }
@@ -1004,7 +1004,7 @@
               { \@@_parse_gray:n {#2} }
               { \@@_parse_std:n {#2} }
           }
-        \tl_set:Nx \l_@@_value_tl
+        \tl_set:Ne \l_@@_value_tl
           {
             \@@_parse_mix:NVVn
               \l_@@_model_tl \l_@@_value_tl \l_@@_next_value_tl {#1}
@@ -1400,7 +1400,7 @@
             \@@_convert:VVN \l_@@_model_tl \l_color_fixed_model_tl
               \l_@@_value_tl
           }
-        \tl_set:Nx #1
+        \tl_set:Ne #1
           { { \l_color_fixed_model_tl } { \l_@@_value_tl } }
       }
   }
@@ -1419,12 +1419,12 @@
 %   will therefore always be available. The finalisation is separate from the
 %   main function so it can also be applied to \emph{e.g.}~page color.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_finalise_current:
+\cs_new_protected:Npe \@@_finalise_current:
   {
-    \tl_set:Nx \exp_not:c { l_@@_named_ . _tl }
+    \tl_set:Ne \exp_not:c { l_@@_named_ . _tl }
       { \exp_not:N \@@_model:N \exp_not:N \l_@@_current_tl }
     \prop_clear:N \exp_not:c { l_@@_named_ . _prop }
-    \prop_put:NVx \exp_not:c { l_@@_named_ . _prop }
+    \prop_put:NVe \exp_not:c { l_@@_named_ . _prop }
       \exp_not:c { l_@@_named_ . _tl }
       { \exp_not:N \@@_values:N \exp_not:N \l_@@_current_tl }
   }
@@ -1488,7 +1488,7 @@
   {
     \cs_if_exist:cTF { @@_parse_model_ #1 :w }
       {
-        \tl_set:Nx #3
+        \tl_set:Ne #3
           { \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s_@@_stop }
       }
       { \msg_error:nnn { color } { unknown-model } {#1} }
@@ -1496,7 +1496,7 @@
 \cs_new_protected:Npn \@@_select_swap:Nnn #1#2#3
   {
     \@@_convert:nVnN {#2} \l_color_fixed_model_tl {#3} \l_@@_value_tl
-    \tl_set:Nx #1
+    \tl_set:Ne #1
       { { \l_color_fixed_model_tl } { \l_@@_value_tl } }
   }
 %    \end{macrocode}
@@ -1781,10 +1781,10 @@
       {
         \@@_parse:nN {#2} \l_@@_named_tl
         \tl_clear_new:c { l_@@_named_ #1 _tl }
-        \tl_set:cx { l_@@_named_ #1 _tl }
+        \tl_set:ce { l_@@_named_ #1 _tl }
           { \@@_model:N \l_@@_named_tl }
         \prop_clear_new:c { l_@@_named_ #1 _prop }
-        \prop_put:cvx { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl }
+        \prop_put:cve { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl }
           { \@@_values:N \l_@@_named_tl }
         \@@_set:nnw {#1} {#2} #2 ! \s_@@_stop
       }
@@ -1811,7 +1811,7 @@
                   \@@_parse:nN {#2} \l_@@_internal_tl
                 \exp_args:NNNV \group_end:
                 \tl_set:Nn \l_@@_internal_tl \l_@@_internal_tl
-                \prop_put:cxx { l_@@_named_ #1 _prop }
+                \prop_put:cee { l_@@_named_ #1 _prop }
                   { \@@_model:N \l_@@_internal_tl }
                   { \@@_values:N \l_@@_internal_tl }
               }
@@ -1828,16 +1828,16 @@
           {#1} {#3}
       }
   }
-\cs_new_protected:Npx \@@_set_aux:nnn #1#2#3
+\cs_new_protected:Npe \@@_set_aux:nnn #1#2#3
   {
     \exp_not:N \@@_set_colon:nnw {#2} {#3}
       #1 \c_colon_str \c_colon_str \exp_not:N \s_@@_stop
   }
-\use:x
+\use:e
   {
     \cs_new_protected:Npn \exp_not:N \@@_set_colon:nnw
-      ##1##2 ##3 \c_colon_str ##4 \c_colon_str
-      ##5 \exp_not:N \s_@@_stop
+      #1#2 #3 \c_colon_str #4 \c_colon_str
+      #5 \exp_not:N \s_@@_stop
   }
   {
     \tl_if_blank:nTF {#4}
@@ -1851,10 +1851,10 @@
     \tl_if_blank:nF {#2}
       {
         \@@_select:nnN {#2} {#4} \l_@@_named_tl
-        \tl_set:Nx \l_@@_internal_tl { \@@_model:N \l_@@_named_tl }
+        \tl_set:Ne \l_@@_internal_tl { \@@_model:N \l_@@_named_tl }
         \tl_if_empty:cT { l_@@_named_ #1 _tl }
           { \tl_set_eq:cN { l_@@_named_ #1 _tl } \l_@@_internal_tl }
-        \prop_put:cVx { l_@@_named_ #1 _prop } \l_@@_internal_tl
+        \prop_put:cVe { l_@@_named_ #1 _prop } \l_@@_internal_tl
           { \@@_values:N \l_@@_named_tl }
         \@@_set_loop:nw {#1} #3 \s_@@_mark #5 \s_@@_stop
       }
@@ -1867,9 +1867,9 @@
         \prop_clear_new:c { l_@@_named_ #1 _prop }
         \str_if_eq:nnTF {#2} { . }
           {
-            \tl_set:cx { l_@@_named_ #1 _tl }
+            \tl_set:ce { l_@@_named_ #1 _tl }
               { \@@_model:N \l_@@_current_tl }
-            \prop_put:cvx { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl }
+            \prop_put:cve { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl }
               { \@@_values:N \l_@@_current_tl }
           }
           {
@@ -1909,7 +1909,7 @@
 %    \begin{macrocode}
 \prop_new:c { l_@@_named_._prop }
 \tl_new:c { l_@@_named_._tl }
-\tl_set:cx { l_@@_named_._tl } { \@@_model:N \l_@@_current_tl }
+\tl_set:ce { l_@@_named_._tl } { \@@_model:N \l_@@_current_tl }
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2005,7 +2005,7 @@
 \group_begin:
   \cs_set_protected:Npn \@@_tmp:w #1#2
     {
-      \cs_new_protected:cpx { @@_export_format_ #1 :nnN } ##1##2##3
+      \cs_new_protected:cpe { @@_export_format_ #1 :nnN } ##1##2##3
         {
           \exp_not:N \@@_export:nnnNN {#2} {##1} {##2} ##3
             \exp_not:c { @@_export_ #1 :Nw }
@@ -2042,10 +2042,10 @@
 %   required, then do some simple maths.
 %    \begin{macrocode}
 \cs_new_protected:cpn { @@_export_comma-sep-rgb:Nw } #1#2 ~ #3 ~ #4 \s_@@_stop
-  { \tl_set:Nx #1 { #2 , #3 , #4 } }
+  { \tl_set:Ne #1 { #2 , #3 , #4 } }
 \cs_new_protected:Npn \@@_export_HTML:Nw #1#2 ~ #3 ~ #4 \s_@@_stop
   {
-    \tl_set:Nx #1
+    \tl_set:Ne #1
       {
         \@@_export_HTML:n {#2}
         \@@_export_HTML:n {#3}
@@ -2195,7 +2195,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_model_init:nnn, \@@_model_init:nnx}
+% \begin{macro}{\@@_model_init:nnn, \@@_model_init:nne}
 %   A shared auxiliary to do the basics of setting up a new model: reserve a
 %   number, create a white-equivalent, set up links to the backend.
 %    \begin{macrocode}
@@ -2204,13 +2204,13 @@
     \int_gincr:N \g_@@_model_int
     \clist_map_inline:nn { fill , stroke , select }
       {
-        \cs_new_protected:cpx { @@_backend_ ##1 _ #1 :n } ####1
+        \cs_new_protected:cpe { @@_backend_ ##1 _ #1 :n } ####1
           {
             \exp_not:c { @@_backend_ ##1 _ #2 :nn }
               { color \int_use:N \g_@@_model_int } {####1}
           }
       }
-    \cs_new_protected:cpx { @@_model_ #1 _white: }
+    \cs_new_protected:cpe { @@_model_ #1 _white: }
       {
         \prop_put:Nnn \exp_not:N \l_@@_named_white_prop {#1}
           { \exp_not:n {#3} }
@@ -2219,7 +2219,7 @@
       }
     \use:c { @@_model_ #1 _white: }
   }
-\cs_generate_variant:Nn \@@_model_init:nnn { nnx }
+\cs_generate_variant:Nn \@@_model_init:nnn { nne }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2309,7 +2309,7 @@
     \use:c { @@_model_separation_ #8 :nnnnnn }
       {#6} {#7} {#1} {#2} {#3} {#4}
     \prop_gput:Nnn \g_@@_alternative_model_prop {#6} {#8}
-    \prop_gput:Nnx \g_@@_colorants_prop {#6}
+    \prop_gput:Nne \g_@@_colorants_prop {#6}
       { \str_convert_pdfname:n {#7} }
   }
 \cs_new_protected:Npn \@@_model_separation_cmyk:nnnnnn #1#2#3#4#5#6
@@ -2355,7 +2355,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_model_convert:nnn #1#2#3
   {
-    \cs_new:cpx { @@_convert_ #1 _ #3 :w } ##1 \s_@@_stop
+    \cs_new:cpe { @@_convert_ #1 _ #3 :w } ##1 \s_@@_stop
       {
         \exp_not:N \exp_args:NNe \exp_not:N \use:nn
         \exp_not:c { @@_convert_  #2 _ #3 :w }
@@ -2520,7 +2520,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_model_devicen:nnn #1#2#3
   {
-    \exp_args:Nx \@@_model_devicen:nnnn
+    \exp_args:Ne \@@_model_devicen:nnnn
       { \clist_count:n {#2} } {#1} {#2} {#3}
   }
 %    \end{macrocode}
@@ -2531,7 +2531,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_model_devicen:nnnn #1#2#3#4
   {
-    \@@_model_init:nnx {#4} { devicen }
+    \@@_model_init:nne {#4} { devicen }
       {
         0 \prg_replicate:nn { #1 - 1 } { ~ 0 }
       }
@@ -2539,7 +2539,7 @@
       { \@@_model_devicen_parse_generic:nn }
         {#4} {#1}
     \@@_model_devicen_init:nnn {#1} {#2} {#3}
-    \@@_model_devicen_convert:nnnx {#4} {#2} {#3}
+    \@@_model_devicen_convert:nnne {#4} {#2} {#3}
       {
         1 \prg_replicate:nn { #1 - 1 } { ~ 1 }
       }
@@ -2602,7 +2602,7 @@
         {#1}
         { \@@_model_devicen_parse:nw {#2} ##1 , ##2 , \q_nil , \s_@@_stop }
       }
-    \cs_new:cpx { @@_parse_mix_ #1 :nw }
+    \cs_new:cpe { @@_parse_mix_ #1 :nw }
       ##1 ##2 \s_@@_mark ##3 \s_@@_stop
       {
         \exp_not:N \@@_model_devicen_mix:nw {##1}
@@ -2680,7 +2680,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_model_devicen_init:nnnn #1#2#3#4
   {
-    \tl_set:Nx \l_@@_internal_tl
+    \tl_set:Ne \l_@@_internal_tl
       { \prg_replicate:nn {#1} { 1.0 ~ }   }
     \int_zero:N \l_@@_internal_int
     \clist_map_inline:nn {#4}
@@ -2691,7 +2691,7 @@
         \exp_after:wN \@@_model_devicen_transform:w
           \l_@@_value_tl , 0 , 0 , 0 , \s_@@_stop {#1} {#2}
       }
-    \tl_put_right:Nx \l_@@_internal_tl
+    \tl_put_right:Ne \l_@@_internal_tl
       {
         \prg_replicate:nn {#1}
           { neg ~ 1.0 ~ add ~ #1 ~ -1 ~ roll ~ }
@@ -2699,7 +2699,7 @@
         \prg_replicate:nn {#2} { ~ pop } ~
         #1 ~ 1 ~ roll
       }
-    \use:x
+    \use:e
       {
         \@@_backend_devicen_init:nnn
           {
@@ -2737,7 +2737,7 @@
   }
 \cs_new_protected:Npn \@@_model_devicen_transform:nnn #1#2#3
   {
-    \tl_put_right:Nx \l_@@_internal_tl
+    \tl_put_right:Ne \l_@@_internal_tl
       {
         \fp_compare:nNnF {#3} = \c_zero_fp
           {
@@ -2761,7 +2761,7 @@
   {
     \use:c { @@_model_devicen_convert_ #2 :nnn } {#1} {#3}
   }
-\cs_generate_variant:Nn \@@_model_devicen_convert:nnnn { nnnx }
+\cs_generate_variant:Nn \@@_model_devicen_convert:nnnn { nnne }
 \cs_new_protected:Npn \@@_model_devicen_convert_cmyk:nnn #1#2
   {
     \tl_const:cn { c_@@_fallback_ #1 _tl } { cmyk }
@@ -2780,7 +2780,7 @@
 \cs_new_protected:Npn \@@_model_devicen_convert:nnnnn #1#2#3#4#5
   {
     \cs_new:cpn { @@_convert_ #2 _ #1 :w } ##1 \s_@@_stop {#5}
-    \cs_new:cpx { @@_convert_ #1 _ #2 :w } ##1 \s_@@_stop
+    \cs_new:cpe { @@_convert_ #1 _ #2 :w } ##1 \s_@@_stop
       {
         \exp_not:c { @@_convert_devicen_ #2 : \prg_replicate:nn {#3} { n } w }
           \prg_replicate:nn {#3} { { 1 } }
@@ -2963,7 +2963,7 @@
   }
 \cs_new_protected:Npn \@@_model_iccbased:nn #1#2
   {
-    \exp_args:NNx \prop_get:NnNTF \c_@@_icc_colorspace_signatures_prop
+    \prop_get:NeNTF \c_@@_icc_colorspace_signatures_prop
       { \file_hex_dump:nnn { #1 } { 17 } { 20 } } \l_@@_internal_tl
       {
         \exp_last_unbraced:NV \@@_model_iccbased_aux:nnnnnn
@@ -2986,7 +2986,7 @@
     \cs_new:cpn { @@_convert_ #5 _gray:w } ##1 \s_@@_stop { 0 }
     \cs_new:cpn { @@_convert_gray_ #5 :w } ##1 \s_@@_stop { #2 }
     \use:c { @@_model_devicen_parse_ #1 :nn } {#5} {#1}
-    \exp_args:Nx \@@_backend_iccbased_init:nnn
+    \exp_args:Ne \@@_backend_iccbased_init:nnn
       { \file_full_name:n {#6} } {#1} {#4}
   }
 %    \end{macrocode}
@@ -3047,9 +3047,9 @@
 %   is similar to the keys module here.
 %    \begin{macrocode}
 \cs_new_protected:Npn \color_show:n
-  { \@@_show:Nn \msg_show:nnxxxx }
+  { \@@_show:Nn \msg_show:nneeee }
 \cs_new_protected:Npn \color_log:n
-  { \@@_show:Nn \msg_log:nnxxxx }
+  { \@@_show:Nn \msg_log:nneeee }
 \cs_new_protected:Npn \@@_show:Nn #1#2
   {
     #1 { color } { show }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -108,12 +108,12 @@
 %   \cs{flag_if_exist_p:n}, and if not raises a kernel-level error.
 % \end{function}
 %
-% \begin{function}{\__kernel_debug_log:x}
+% \begin{function}{\__kernel_debug_log:e}
 %   \begin{syntax}
-%     \cs{__kernel_debug_log:x} \Arg{message text}
+%     \cs{__kernel_debug_log:e} \Arg{message text}
 %   \end{syntax}
 %   If the \texttt{log-functions} option is active, this function writes
-%   the \meta{message text} to the log file using \cs{iow_log:x}.
+%   the \meta{message text} to the log file using \cs{iow_log:e}.
 %   Otherwise, the \meta{message text} is ignored using \cs{use_none:n}.
 %   This function is only created if debugging is enabled.
 % \end{function}
@@ -220,7 +220,7 @@
   }
 \cs_set_protected:Npn \debug_resume:
   {
-    \__kernel_tl_set:Nx \l_@@_suspended_tl
+    \__kernel_tl_set:Ne \l_@@_suspended_tl
       { \tl_tail:N \l_@@_suspended_tl }
     \tl_if_empty:NT \l_@@_suspended_tl
       {
@@ -269,7 +269,7 @@
         \@@_suspended:T \use_none:nnn
         \cs_if_exist:NF ##1
           {
-            \msg_error:nnx { debug } { non-declared-variable }
+            \msg_error:nne { debug } { non-declared-variable }
               { \token_to_str:N ##1 }
           }
       }
@@ -278,7 +278,7 @@
         \@@_suspended:T \use_none:nnn
         \cs_if_exist:NF ##1
           {
-            \msg_error:nnx { kernel } { command-not-defined }
+            \msg_error:nne { kernel } { command-not-defined }
               { \token_to_str:N ##1 }
           }
       }
@@ -362,7 +362,7 @@
       \if:w #1 \scan_stop:
         \cs_gset_nopar:Npn #1 {#2}
       \else:
-        \msg_error:nnxxx { debug } { local-global }
+        \msg_error:nneee { debug } { local-global }
           {#1} {#2} { \iow_char:N \\ #3 }
       \fi:
     \fi:
@@ -374,19 +374,19 @@
 % \end{macro}
 %
 % \begin{macro}{\@@_log-functions_on:, \@@_log-functions_off:}
-% \begin{macro}{\__kernel_debug_log:x}
+% \begin{macro}{\__kernel_debug_log:e}
 %   These two functions (corresponding to the \pkg{expl3} option
-%   \texttt{log-functions}) control whether \cs{__kernel_debug_log:x}
+%   \texttt{log-functions}) control whether \cs{__kernel_debug_log:e}
 %   writes to the log file or not.  By default, logging is off.
 %    \begin{macrocode}
 \cs_new_protected:cpn { @@_log-functions_on: }
   {
-    \cs_set_protected:Npn \__kernel_debug_log:x
-      { \@@_suspended:T \use_none:nn \iow_log:x }
+    \cs_set_protected:Npn \__kernel_debug_log:e
+      { \@@_suspended:T \use_none:nn \iow_log:e }
   }
 \cs_new_protected:cpn { @@_log-functions_off: }
-  { \cs_set_protected:Npn \__kernel_debug_log:x { \use_none:n } }
-\cs_new_protected:Npn \__kernel_debug_log:x { \use_none:n }
+  { \cs_set_protected:Npn \__kernel_debug_log:e { \use_none:n } }
+\cs_new_protected:Npn \__kernel_debug_log:e { \use_none:n }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -510,11 +510,11 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_generate_parameter_list:NNN #1#2#3
   {
-    \__kernel_tl_set:Nx \l_@@_internal_tl
+    \__kernel_tl_set:Ne \l_@@_internal_tl
       { \exp_last_unbraced:Nf \use_ii:nnn \cs_split_function:N #1 }
-    \__kernel_tl_set:Nx #2
+    \__kernel_tl_set:Ne #2
       { \exp_args:NV \@@_build_parm_text:n \l_@@_internal_tl }
-    \__kernel_tl_set:Nx #3
+    \__kernel_tl_set:Ne #3
       { \exp_args:NV \@@_build_arg_list:n \l_@@_internal_tl }
   }
 \cs_new:Npn \@@_build_parm_text:n #1
@@ -658,7 +658,7 @@
     {
       \cs_gset_eq:cN { @@_ \cs_to_str:N #1 } #1
       \@@_generate_parameter_list:NNN #1 \l_@@_tmpa_tl \l_@@_tmpb_tl
-      \exp_args:Nx \tex_scantokens:D
+      \exp_args:Ne \tex_scantokens:D
         {
           \tex_global:D \cs_prefix_spec:N #1
           \tex_def:D \exp_not:N #1
@@ -673,23 +673,23 @@
     }
   \cs_set_protected:Npn \@@_add_to_debug_code:Nnn #1#2#3
     {
-      \use:x
+      \use:e
         {
           \cs_set:Npn \exp_not:N \@@_tmp:w
-            ####1 \tl_to_str:n { macro: }
-            ####2 \tl_to_str:n { -> }
-            ####3 \c_backslash_str \tl_to_str:n { @@_ }
+            ##1 \tl_to_str:n { macro: }
+            ##2 \tl_to_str:n { -> }
+            ##3 \c_backslash_str \tl_to_str:n { @@_ }
                     \cs_to_str:N #1
-            ####4 \s_@@_stop
+            ##4 \s_@@_stop
             {
-              \exp_not:N \exp_args:Nx \exp_not:N \tex_scantokens:D
+              \exp_not:N \exp_args:Ne \exp_not:N \tex_scantokens:D
                 {
-                  \tex_global:D ####1
-                  \tex_def:D \exp_not:N #1 ####2
+                  \tex_global:D ##1
+                  \tex_def:D \exp_not:N #1 ##2
                     {
-                      ####3 \tl_to_str:n {#2}
+                      ##3 \tl_to_str:n {#2}
                       \c_backslash_str @@_ \cs_to_str:N #1
-                      ####4 \tl_to_str:n {#3}
+                      ##4 \tl_to_str:n {#3}
                     }
                 }
             }
@@ -721,7 +721,7 @@
     }
   \cs_set_protected:Npn \@@_patch_weird:Nnn #1#2#3
     {
-      \use:x
+      \use:e
         {
           \tex_endlinechar:D -1 \scan_stop:
           \exp_not:N \tex_scantokens:D
@@ -790,8 +790,8 @@
 %
 %
 %    \begin{macrocode}
-\cs_gset_protected:Npn \__kernel_tl_set:Nx  { \cs_set_nopar:Npx }
-\cs_gset_protected:Npn \__kernel_tl_gset:Nx { \cs_gset_nopar:Npx }
+\cs_gset_protected:Npn \__kernel_tl_set:Ne  { \cs_set_nopar:Npe }
+\cs_gset_protected:Npn \__kernel_tl_gset:Ne { \cs_gset_nopar:Npe }
 %    \end{macrocode}
 %
 % Patching where the first argument to a function needs scope-checking:
@@ -838,20 +838,21 @@
       \skip_set_eq:NN
       \skip_add:Nn
       \skip_sub:Nn
-      \__kernel_tl_set:Nx
+      \__kernel_tl_set:Ne
       \tl_clear:N
       \tl_set_eq:NN
       \tl_put_left:Nn
       \tl_put_left:NV
+      \tl_put_left:Nv
+      \tl_put_left:Ne
       \tl_put_left:No
-      \tl_put_left:Nx
       \tl_put_right:Nn
       \tl_put_right:NV
+      \tl_put_right:Nv
+      \tl_put_right:Ne
       \tl_put_right:No
-      \tl_put_right:Nx
       \tl_build_begin:N
       \tl_build_put_right:Nn
-      \tl_build_put_right:Nx
       \tl_build_put_left:Nn
       \vbox_set:Nn
       \vbox_set_top:Nn
@@ -902,20 +903,21 @@
       \skip_gset_eq:NN
       \skip_gadd:Nn
       \skip_gsub:Nn
-      \__kernel_tl_gset:Nx
+      \__kernel_tl_gset:Ne
       \tl_gclear:N
       \tl_gset_eq:NN
       \tl_gput_left:Nn
       \tl_gput_left:NV
+      \tl_gput_left:Nv
+      \tl_gput_left:Ne
       \tl_gput_left:No
-      \tl_gput_left:Nx
       \tl_gput_right:Nn
       \tl_gput_right:NV
+      \tl_gput_right:Nv
+      \tl_gput_right:Ne
       \tl_gput_right:No
-      \tl_gput_right:Nx
       \tl_build_gbegin:N
       \tl_build_gput_right:Nn
-      \tl_build_gput_right:Nx
       \tl_build_gput_left:Nn
       \vbox_gset:Nn
       \vbox_gset_top:Nn
@@ -940,7 +942,6 @@
       \muskip_const:Nn
       \skip_const:Nn
       \tl_const:Nn
-      \tl_const:Nx
     }
 %    \end{macrocode}
 %
@@ -991,7 +992,7 @@
   \__kernel_patch:nnn
     { }
     {
-      \__kernel_debug_log:x
+      \__kernel_debug_log:e
         { Defining~\token_to_str:N #1~ \msg_line_context: }
     }
     { \__kernel_chk_if_free_cs:N }
@@ -1000,7 +1001,7 @@
     {
       \cs_if_free:NF #4
         {
-          \__kernel_debug_log:x
+          \__kernel_debug_log:e
             {
               Variant~\token_to_str:N #4~%
               already~defined;~ not~ changing~ it~ \msg_line_context:
@@ -1013,7 +1014,7 @@
   \__kernel_patch:nnn
     {
       \cs_if_exist:cF { \c_@@_code_root_str #1 }
-        { \__kernel_debug_log:x { Defining~key~#1~\msg_line_context: } }
+        { \__kernel_debug_log:e { Defining~key~#1~\msg_line_context: } }
     }
     { }
     { \@@_cmd_set_direct:nn }
@@ -1021,7 +1022,7 @@
   \__kernel_patch:nnn
     { }
     {
-      \__kernel_debug_log:x
+      \__kernel_debug_log:e
         { Defining~message~ #1 / #2 ~\msg_line_context: }
     }
     { \@@_chk_free:nn }
@@ -1059,7 +1060,7 @@
     {
       \@@_trace_push:nnN { regex } { 1 } \@@_escape_use:nnnn
       \group_begin:
-        \__kernel_tl_set:Nx \l_@@_internal_a_tl
+        \__kernel_tl_set:Ne \l_@@_internal_a_tl
           { \@@_trace_pop:nnN { regex } { 1 } \@@_escape_use:nnnn }
         \use_none:nnn
     }
@@ -1081,7 +1082,7 @@
     { \@@_build_for_cs:n }
   \__kernel_patch:nnn
     {
-      \@@_trace:nnx { regex } { 2 }
+      \@@_trace:nne { regex } { 2 }
         {
           regex~new~state~
           L=\int_use:N \l_@@_left_state_int ~ -> ~
@@ -1103,7 +1104,7 @@
   \__kernel_patch:nnn
     {
       \@@_trace_push:nnN { regex } { 1 } \@@_match:n
-      \@@_trace:nnx { regex } { 1 } { analyzing~query~token~list }
+      \@@_trace:nne { regex } { 1 } { analyzing~query~token~list }
     }
     { \@@_trace_pop:nnN { regex } { 1 } \@@_match:n }
     { \@@_match:n }
@@ -1110,17 +1111,17 @@
   \__kernel_patch:nnn
     {
       \@@_trace_push:nnN { regex } { 1 } \@@_match_cs:n
-      \@@_trace:nnx { regex } { 1 } { analyzing~query~token~list }
+      \@@_trace:nne { regex } { 1 } { analyzing~query~token~list }
     }
     { \@@_trace_pop:nnN { regex } { 1 } \@@_match_cs:n }
     { \@@_match_cs:n }
   \__kernel_patch:nnn
-    { \@@_trace:nnx { regex } { 1 } { initializing } }
+    { \@@_trace:nne { regex } { 1 } { initializing } }
     { }
     { \@@_match_init: }
   \__kernel_patch:nnn
     {
-      \@@_trace:nnx { regex } { 2 }
+      \@@_trace:nne { regex } { 2 }
         { state~\int_use:N \l_@@_curr_state_int }
     }
     { }
@@ -1153,7 +1154,7 @@
     {
         \char_set_catcode_parameter:N \#
         \tex_endlinechar:D -1 \scan_stop:
-        \exp_args:Nx \tex_scantokens:D
+        \exp_args:Ne \tex_scantokens:D
           {
             \tex_global:D \cs_prefix_spec:N #1 \tex_def:D \exp_not:N #1
               \cs_parameter_spec:N #1
@@ -1172,7 +1173,7 @@
     {
       \tl_map_inline:nn {#1}
         {
-          \exp_args:NNx \__kernel_patch:Nn ##1
+          \exp_args:NNe \__kernel_patch:Nn ##1
             {
               { \c_hash_str 1 }
               {
@@ -1238,7 +1239,7 @@
     {
       \tl_map_inline:nn {#1}
         {
-          \exp_args:NNx \__kernel_patch:Nn ##1
+          \exp_args:NNe \__kernel_patch:Nn ##1
             {
               {
                 \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
@@ -1286,7 +1287,7 @@
     {
       \tl_map_inline:nn {#1}
         {
-          \exp_args:NNx \__kernel_patch:Nn ##1
+          \exp_args:NNe \__kernel_patch:Nn ##1
             {
               {
                 \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
@@ -1325,7 +1326,7 @@
     {
       \clist_map_inline:nn { :nNnT , :nNnF , :nNnTF , _p:nNn }
         {
-          \exp_args:Ncx \__kernel_patch:Nn { #1 ##1 }
+          \exp_args:Nce \__kernel_patch:Nn { #1 ##1 }
             {
               {
                 \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
@@ -1349,7 +1350,7 @@
     {
       \clist_map_inline:nn { :nT , :nF , :nTF , _p:n }
         {
-          \exp_args:Ncx \__kernel_patch:Nn { #1 ##1 }
+          \exp_args:Nce \__kernel_patch:Nn { #1 ##1 }
             {
               {
                 \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -145,11 +145,11 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_warn_once:nnNnn #1#2#3#4#5
   {
-    \cs_gset_protected:Npx #3
+    \cs_gset_protected:Npe #3
       {
         \__kernel_if_debug:TF
           {
-            \exp_not:N \msg_warning:nnxxx
+            \exp_not:N \msg_warning:nneee
               { deprecation } { deprecated-command }
               {#1}
               { \token_to_str:N #3 }
@@ -193,7 +193,7 @@
         \exp_not:N \msg_expandable_error:nnnnn
           { deprecation } { deprecated-command }
           { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
-        \exp_not:N \msg_error:nnxxx
+        \exp_not:N \msg_error:nneee
           { deprecation } { deprecated-command }
           { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
       }
@@ -682,25 +682,25 @@
     { meaning } { meaning_remove }
   }
   {
-    \use:x
+    \use:e
       {
         \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
-        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NTF } ####1####2####3
+        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NTF } ##1##2##3
           {
             \peek_remove_spaces:n
-              { \exp_not:c { peek_ #1 :NTF } ####1 {####2} {####3} }
+              { \exp_not:c { peek_ #1 :NTF } ##1 {##2} {##3} }
           }
         \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
-        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NT } ####1####2
+        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NT } ##1##2
           {
             \peek_remove_spaces:n
-              { \exp_not:c { peek_ #1 :NT } ####1 {####2} }
+              { \exp_not:c { peek_ #1 :NT } ##1 {##2} }
           }
         \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
-        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NF } ####1####2
+        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NF } ##1##2
           {
             \peek_remove_spaces:n
-              { \exp_not:c { peek_ #1 :NF } ####1 {####2} }
+              { \exp_not:c { peek_ #1 :NF } ##1 {##2} }
           }
       }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -85,7 +85,7 @@
 %    require you to do updates, if the class changes.}}
 %
 % \author{\Team}
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 % \maketitle
 % \tableofcontents
 %
@@ -957,7 +957,7 @@
 %     \seq_set_split:NoV,
 %     \str_case:fn,
 %     \tl_count:f,
-%     \tl_greplace_all:Nxn,
+%     \tl_greplace_all:Nen,
 %     \tl_greplace_all:Nno,
 %     \tl_if_head_eq_charcode:oNTF,
 %     \tl_if_head_eq_charcode:oNT,
@@ -968,17 +968,14 @@
 %     \tl_if_in:NoTF,
 %     \tl_if_in:NoT,
 %     \tl_if_in:NoF,
-%     \tl_remove_all:Nx,
-%     \tl_replace_all:Nxn,
-%     \tl_replace_all:Nnx,
+%     \tl_remove_all:Ne,
+%     \tl_replace_all:Nen,
+%     \tl_replace_all:Nne,
 %     \tl_replace_all:Non,
 %     \tl_replace_all:Nno,
 %     \tl_replace_once:Noo,
 %     \tl_to_str:f,
 %     \tl_to_str:o,
-%     \prop_get:NxNTF,
-%     \prop_put:Nxn,
-%     \prop_gput:NVx,
 %   }
 %   A few missing variants.
 %    \begin{macrocode}
@@ -1001,9 +998,6 @@
 \cs_generate_variant:Nn \tl_replace_once:Nnn { Noo }
 \cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV }
 \cs_generate_variant:Nn \tl_to_str:n { f , o }
-\cs_generate_variant:Nn \prop_get:NnNTF { Nx }
-\cs_generate_variant:Nn \prop_put:Nnn { Nx }
-\cs_generate_variant:Nn \prop_gput:Nnn { NVx }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1033,7 +1027,7 @@
 \cs_new_protected:Npn \@@_trim_right:Nn #1#2
   {
     \cs_set:Npn \@@_tmp:w ##1 #2 ##2 \q_stop { \exp_not:n {##1} }
-    \__kernel_tl_set:Nx #1 { \exp_after:wN \@@_tmp:w #1 #2 \q_stop }
+    \__kernel_tl_set:Ne #1 { \exp_after:wN \@@_tmp:w #1 #2 \q_stop }
   }
 \cs_generate_variant:Nn \@@_trim_right:Nn { No }
 %    \end{macrocode}
@@ -1076,7 +1070,7 @@
           #1 \g_@@_module_name_tl
       }
   }
-\cs_new_protected:Npx \@@_replace_at_at_aux:Nn #1#2
+\cs_new_protected:Npe \@@_replace_at_at_aux:Nn #1#2
   {
     \tl_replace_all:Nnn #1 { \token_to_str:N @ } { @ }
     \tl_replace_all:Nnn #1 { \token_to_str:N _ } { _ }
@@ -1130,7 +1124,7 @@
               \@@_trim_right:Nn \l_@@_detect_internals_tl _
               \@@_trim_right:Nn \l_@@_detect_internals_tl :
               \@@_trim_right:No \l_@@_detect_internals_tl { \token_to_str:N : }
-              \msg_warning:nnxxx { l3doc } { foreign-internal }
+              \msg_warning:nneee { l3doc } { foreign-internal }
                 { \tl_to_str:N \l_@@_detect_internals_cs_tl }
                 { \tl_to_str:N \l_@@_detect_internals_tl }
                 { \tl_to_str:N \g_@@_module_name_tl }
@@ -1253,14 +1247,14 @@
     \@@_if_almost_str:nTF {#1}
       {
         \@@_key_get_base_TF:nN {#1} \l_@@_tmpa_tl
-        \__kernel_tl_set:Nx #2
+        \__kernel_tl_set:Ne #2
           { \@@_split_function_do:on \l_@@_tmpa_tl { \@@_base_form_aux:nnN } }
       }
       { \tl_set:Nn #2 {#1} }
   }
-\cs_new:Npx \@@_key_get_base_TF:nN #1#2
+\cs_new:Npe \@@_key_get_base_TF:nN #1#2
   {
-    \__kernel_tl_set:Nx #2 { \exp_not:N \tl_to_str:n {#1} }
+    \__kernel_tl_set:Ne #2 { \exp_not:N \tl_to_str:n {#1} }
     \tl_if_in:NoF #2 { \tl_to_str:n {:} }
       { \exp_not:N \prg_break: }
     \tl_if_in:onT { #2 z } { \tl_to_str:n {TF} z }
@@ -1312,7 +1306,7 @@
         \tl_if_head_eq_charcode:nNTF {#4} :
           { #2 {#1} }
           {
-            \use:x
+            \use:e
               {
                 \exp_not:n {#3}
                 { \@@_base_form_aux:nnN {#4} {#5} #6 }
@@ -1602,7 +1596,7 @@
 %    \begin{macrocode}
 \cs_set_protected:Npn \ifnot at excluded
   {
-    \exp_args:Nxx \expanded at notin
+    \exp_args:Nee \expanded at notin
       { \c_backslash_str \tl_to_str:N \macro at namepart , }
       { \exp_args:NV \tl_to_str:n \index at excludelist }
   }
@@ -2016,7 +2010,7 @@
         \verbatim at font
         \@@_if_almost_str:VT \l_@@_cmd_tl
           {
-            \__kernel_tl_set:Nx \l_@@_cmd_tl { \tl_to_str:N \l_@@_cmd_tl }
+            \__kernel_tl_set:Ne \l_@@_cmd_tl { \tl_to_str:N \l_@@_cmd_tl }
             \bool_if:NT \g_@@_cs_break_bool
               {
                 \regex_replace_all:nnN
@@ -2038,13 +2032,13 @@
        {
         \quark_if_no_value:NF \l_@@_cmd_index_tl
           {
-            \__kernel_tl_set:Nx \l_@@_cmd_tl
+            \__kernel_tl_set:Ne \l_@@_cmd_tl
               { \c_backslash_str \exp_not:o { \l_@@_cmd_index_tl } }
           }
         \exp_args:No \@@_key_get:n { \l_@@_cmd_tl }
         \quark_if_no_value:NF \l_@@_cmd_module_tl
           {
-            \__kernel_tl_set:Nx \l_@@_index_module_tl
+            \__kernel_tl_set:Ne \l_@@_index_module_tl
               { \tl_to_str:N \l_@@_cmd_module_tl }
           }
         \@@_special_index_module:ooonN
@@ -2153,7 +2147,7 @@
 % \end{macro}
 %
 % \begin{macro}
-%   {\@@_get_hyper_target:nN, \@@_get_hyper_target:oN, \@@_get_hyper_target:xN}
+%   {\@@_get_hyper_target:nN, \@@_get_hyper_target:oN, \@@_get_hyper_target:eN}
 %   Create a \pkg{hyperref} anchor from a macro name~|#1| and stores it
 %   in the token list variable~|#2|.  For instance, |\prg_replicate:nn|
 %   gives |doc/function//prg/replicate:nn|.
@@ -2160,12 +2154,12 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_get_hyper_target:nN #1#2
   {
-    \__kernel_tl_set:Nx #2 { \tl_to_str:n {#1} }
-    \tl_replace_all:Nxn #2 { \c_underscore_str } { / }
-    \tl_remove_all:Nx   #2 { \c_backslash_str }
+    \__kernel_tl_set:Ne #2 { \tl_to_str:n {#1} }
+    \tl_replace_all:Nen #2 { \c_underscore_str } { / }
+    \tl_remove_all:Ne   #2 { \c_backslash_str }
     \tl_put_left:Nn #2 { doc/function// }
   }
-\cs_generate_variant:Nn \@@_get_hyper_target:nN { o , x }
+\cs_generate_variant:Nn \@@_get_hyper_target:nN { o , e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2183,7 +2177,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_names_get_seq:nN #1#2
   {
-    \__kernel_tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:n {#1} }
+    \__kernel_tl_set:Ne \l_@@_tmpa_tl { \tl_to_str:n {#1} }
     \bool_if:NTF \l_@@_names_verb_bool
       {
         \seq_clear:N #2
@@ -2190,14 +2184,14 @@
         \seq_put_right:NV #2 \l_@@_tmpa_tl
       }
       {
-        \tl_remove_all:Nx \l_@@_tmpa_tl
+        \tl_remove_all:Ne \l_@@_tmpa_tl
           { \iow_char:N \^^M \c_percent_str }
-        \tl_remove_all:Nx \l_@@_tmpa_tl { \tl_to_str:n { ^ ^ A } }
-        \tl_remove_all:Nx \l_@@_tmpa_tl { \iow_char:N \^^I }
-        \tl_remove_all:Nx \l_@@_tmpa_tl { \iow_char:N \^^M }
+        \tl_remove_all:Ne \l_@@_tmpa_tl { \tl_to_str:n { ^ ^ A } }
+        \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^I }
+        \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^M }
         \@@_detect_internals:N \l_@@_tmpa_tl
         \@@_replace_at_at:N \l_@@_tmpa_tl
-        \exp_args:NNx \seq_set_from_clist:Nn #2
+        \exp_args:NNe \seq_set_from_clist:Nn #2
           { \tl_to_str:N \l_@@_tmpa_tl }
       }
   }
@@ -2238,7 +2232,7 @@
         \tl_if_head_eq_charcode:nNTF {#2} :
           { \@@_names_parse_aux:nnn {#4} {#4} { \scan_stop: } }
           {
-            \exp_args:Nx \@@_names_parse_aux:nnn
+            \exp_args:Ne \@@_names_parse_aux:nnn
               { \@@_base_form_aux:nnN {#1} {#2} #3 }
               {#1} {#2}
           }
@@ -2245,7 +2239,7 @@
       }
       {
         \bool_if:NT \l_@@_macro_TF_bool
-          { \msg_error:nnx { l3doc } { no-signature-TF } {#4} }
+          { \msg_error:nne { l3doc } { no-signature-TF } {#4} }
         \@@_names_parse_aux:nnn {#4} {#4} { \scan_stop: }
       }
   }
@@ -2294,12 +2288,12 @@
     \str_if_eq:VnTF \l_@@_tmpa_tl { \scan_stop: }
       {
         \seq_gclear:N \g_@@_variants_seq
-        \@@_names_typeset_auxii:x { \g_@@_base_name_tl }
+        \@@_names_typeset_auxii:e { \g_@@_base_name_tl }
       }
       {
         \seq_gset_eq:NN \g_@@_variants_seq #1
         \seq_gpop:NN \g_@@_variants_seq \l_@@_tmpb_tl
-        \@@_names_typeset_auxii:x
+        \@@_names_typeset_auxii:e
           { \g_@@_base_name_tl : \l_@@_tmpb_tl }
       }
   }
@@ -2308,7 +2302,7 @@
 % \end{macro}
 %
 % \begin{macro}
-%   {\@@_names_typeset_auxii:n, \@@_names_typeset_auxii:x}
+%   {\@@_names_typeset_auxii:n, \@@_names_typeset_auxii:e}
 %   In case the option |pTF| was given, typeset predicates before the
 %   |TF| functions.  In case the option |noTF| was given, typeset the
 %   non-|TF| function as well.  Pass the relevant boolean in both cases
@@ -2318,7 +2312,7 @@
   {
     \bool_if:NT \l_@@_macro_pTF_bool
       {
-        \@@_names_typeset_block:xN
+        \@@_names_typeset_block:eN
           { \@@_predicate_from_base:n {#1} }
           \c_false_bool
       }
@@ -2326,11 +2320,11 @@
       { \@@_names_typeset_block:nN {#1} \c_false_bool }
     \@@_names_typeset_block:nN {#1} \l_@@_macro_TF_bool
   }
-\cs_generate_variant:Nn \@@_names_typeset_auxii:n { x }
+\cs_generate_variant:Nn \@@_names_typeset_auxii:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_names_typeset_block:nN, \@@_names_typeset_block:xN}
+% \begin{macro}{\@@_names_typeset_block:nN, \@@_names_typeset_block:eN}
 %   Names in \env{function} and \env{macro} environments are typeset
 %   differently.  To distinguish the two note that
 %   \cs{l_@@_nested_macro_int} is at least one when in an \env{macro}
@@ -2343,7 +2337,7 @@
       { \@@_typeset_function_block:nN }
       { \@@_macro_typeset_block:nN }
   }
-\cs_generate_variant:Nn \@@_names_typeset_block:nN { x }
+\cs_generate_variant:Nn \@@_names_typeset_block:nN { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2391,7 +2385,7 @@
           \seq_set_eq:NN \l_@@_tmpa_seq ##1
           \seq_pop:NN \l_@@_tmpa_seq \l_@@_tmpa_tl
           \seq_get:NN \l_@@_tmpa_seq \l_@@_tmpb_tl
-          \exp_args:NNx
+          \exp_args:NNe
         \group_end:
         #1
           {
@@ -2479,7 +2473,7 @@
     \exp_args:No \@@_date_compare:nNnT
       {#1} > { \c_sys_year_int - \c_sys_month_int - \c_sys_day_int }
       {
-        \msg_error:nnxx { l3doc } { future-date }
+        \msg_error:nnee { l3doc } { future-date }
           { \tl_to_str:N \l_@@_macro_argument_tl }
           {#1}
       }
@@ -2707,15 +2701,15 @@
 %
 % ^^A TODO: collect all index targets from a given function environment in a box and stick it at the top.
 % \begin{macro}
-%   {\@@_typeset_function_block:nN, \@@_typeset_function_block:xN}
-% \begin{macro}{\@@_function_index:n, \@@_function_index:x}
+%   {\@@_typeset_function_block:nN, \@@_typeset_function_block:eN}
+% \begin{macro}{\@@_function_index:n, \@@_function_index:e}
 %   |#1| is a csname, |#2| a boolean indicating whether to add |TF| or not.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_typeset_function_block:nN #1#2
   {
-    \@@_function_index:x
+    \@@_function_index:e
       { #1 \bool_if:NT #2 { \tl_to_str:n {TF} } }
-    \@@_function_label:xN {#1} #2
+    \@@_function_label:eN {#1} #2
     #1
     \bool_if:NT #2 { \@@_typeset_TF: }
     \@@_typeset_expandability:
@@ -2723,13 +2717,13 @@
       { \@@_typeset_variant_list:nN {#1} #2 }
     \\
   }
-\cs_generate_variant:Nn \@@_typeset_function_block:nN { x }
+\cs_generate_variant:Nn \@@_typeset_function_block:nN { e }
 \cs_new_protected:Npn \@@_function_index:n #1
   {
     \seq_gput_right:Nn \g_doc_functions_seq {#1}
     \@@_special_index:nn {#1} { usage }
   }
-\cs_generate_variant:Nn \@@_function_index:n { x }
+\cs_generate_variant:Nn \@@_function_index:n { e }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -2796,7 +2790,7 @@
   {
     \bool_if:NF \l_@@_no_label_bool
       {
-        \@@_get_hyper_target:xN
+        \@@_get_hyper_target:eN
           {
             \exp_not:n {#1}
             \bool_if:NT #2 { \tl_to_str:n {TF} }
@@ -2805,7 +2799,7 @@
         \exp_args:No \label { \l_@@_tmpa_tl }
       }
   }
-\cs_generate_variant:Nn \@@_function_label:nN { x }
+\cs_generate_variant:Nn \@@_function_label:nN { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -3064,7 +3058,7 @@
           \l_@@_macro_do_not_index_tl
         \exp_args:NNV \seq_set_from_clist:Nn
           \l_@@_tmpa_seq \l_@@_macro_do_not_index_tl
-        \__kernel_tl_set:Nx \l_@@_macro_do_not_index_tl
+        \__kernel_tl_set:Ne \l_@@_macro_do_not_index_tl
           { \seq_use:Nn \l_@@_tmpa_seq { , } }
         \exp_args:NV \DoNotIndex \l_@@_macro_do_not_index_tl
       }
@@ -3105,7 +3099,7 @@
     \@@_macro_single:nNN {#1} \c_true_bool #2
     \seq_if_empty:NF \g_@@_variants_seq
       {
-        \@@_macro_typeset_variant_list:xN
+        \@@_macro_typeset_variant_list:eN
           { \@@_get_function_name:n {#1} } #2
       }
   }
@@ -3115,7 +3109,7 @@
     \seq_map_inline:Nn \g_@@_variants_seq
       { \@@_macro_single:nNN { #1 : ##1 } \c_false_bool #2 }
   }
-\cs_generate_variant:Nn \@@_macro_typeset_variant_list:nN { x }
+\cs_generate_variant:Nn \@@_macro_typeset_variant_list:nN { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3137,7 +3131,7 @@
     \tl_set:Nn \saved at macroname {#1}
     \@@_macro_typeset_one:nN {#1} #3
     \bool_if:NT #3 { \DoNotIndex {#1} }
-    \exp_args:Nx \@@_macro_index:nN
+    \exp_args:Ne \@@_macro_index:nN
       { #1 \bool_if:NT #3 { \tl_to_str:n { TF } } }
       #2
   }
@@ -3191,7 +3185,7 @@
 \cs_new_protected:Npn \@@_print_macroname:nN #1#2
   {
     \strut
-    \@@_get_hyper_target:xN
+    \@@_get_hyper_target:eN
       {
         \exp_not:n {#1}
         \bool_if:NT #2 { \tl_to_str:n {TF} }
@@ -3295,7 +3289,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_test_missing:n #1
   {
-    \@@_test_missing_aux:Nxn
+    \@@_test_missing_aux:Nen
       \g_@@_missing_tests_prop
       { \seq_use:Nn \l_@@_names_seq { , } }
       { { \g_file_curr_name_str \c_space_tl (#1) } }
@@ -3307,7 +3301,7 @@
       { \tl_set:Nn \l_@@_tmpa_tl {#3} }
     \prop_put:Nno #1 {#2} \l_@@_tmpa_tl
   }
-\cs_generate_variant:Nn \@@_test_missing_aux:Nnn { Nx }
+\cs_generate_variant:Nn \@@_test_missing_aux:Nnn { Ne }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3345,7 +3339,7 @@
      {
        \seq_set_filter:NNn \l_@@_tmpa_seq \l_@@_names_seq
          { ! \@@_if_macro_internal_p:n {##1} }
-       \seq_gput_right:Nx \g_@@_not_tested_seq
+       \seq_gput_right:Ne \g_@@_not_tested_seq
          {
            \seq_use:Nn \l_@@_tmpa_seq { , }
            \bool_if:NTF \l_@@_macro_pTF_bool {~(pTF)}
@@ -3415,10 +3409,10 @@
         \bool_if:NTF \l_@@_macro_var_bool {variable} {function}
         \int_compare:nNnTF \l_@@_tmpa_int = 1 {~is~} {s~are~}
         documented~on~page~
-        \@@_get_hyper_target:xN
+        \@@_get_hyper_target:eN
           { \seq_item:Nn \g_@@_nested_names_seq { 1 } }
           \l_@@_tmpa_tl
-        \exp_args:Nx \pageref { \l_@@_tmpa_tl } .
+        \exp_args:Ne \pageref { \l_@@_tmpa_tl } .
       }
     \seq_gclear:N \g_@@_nested_names_seq
   }
@@ -3540,6 +3534,39 @@
 %    \end{macrocode}
 % \end{environment}
 %
+% \subsection{Footnote support}
+% The environments \env{function} and \env{variable} are boxes
+% and so looses footnotes. The following implements support.
+% It relies currently on an internal from hyperref to get the correct targets.
+% 
+%    \begin{macrocode}
+\providecommand\Hy at footnote@currentHref{}
+\prop_new:N\g_@@_fnmark_prop
+\cs_new_protected:Npn \@@_fn_store: 
+ { 
+   \prop_gput:Nee\g_@@_fnmark_prop 
+     {fn\int_use:N\c at footnote}{{\Hy at footnote@currentHref}{\int_use:N\c at footnote}}
+ }
+\cs_new_protected:Npn \@@_fn_restore:n  #1
+ {
+   \prop_get:NnN \g_@@_fnmark_prop {fn#1}\l_@@_tmpa_tl
+   \tl_gset:Ne\Hy at footnote@currentHref
+     {\exp_last_unbraced:NV\use_i:nn \l_@@_tmpa_tl }
+   \setcounter{footnote}{\exp_last_unbraced:NV\use_ii:nn \l_@@_tmpa_tl}
+ }  
+
+\cs_generate_variant:Nn \hook_gput_next_code:nn {ne}
+\cs_new_protected:Npn \@@_fn_footnote:nn #1 #2
+  {
+    \footnotemark
+    \@@_fn_store: 
+    \hook_gput_next_code:ne {env/#1/after}
+      {\exp_not:N\@@_fn_restore:n{\int_use:N\c at footnote}{\exp_not:n{\footnotetext{#2}}}}}
+
+\AddToHook{env/function/begin}{\def\footnote{\@@_fn_footnote:nn{function}}}
+\AddToHook{env/variable/begin}{\def\footnote{\@@_fn_footnote:nn{variable}}} 
+%    \end{macrocode}
+%
 % \subsection{Documenting templates}
 %
 %    \begin{macrocode}
@@ -3713,7 +3740,7 @@
     \@tempswatrue
     \if at partsw
       \@tempswafalse
-      \cs_set:Npx \@tempb {#1}
+      \cs_set:Npe \@tempb {#1}
       \clist_map_inline:Nn \@partlist
         {
           \if_meaning:w \@tempa \@tempb
@@ -3734,7 +3761,7 @@
       \part{\currentfile}
       {
         \cs_set_eq:NN \ttfamily\relax
-        \cs_gset:Npx \filekey
+        \cs_gset:Npe \filekey
           { \filekey,~ \thepart = { \ttfamily \currentfile } }
       }
       \DocInput{\currentfile}
@@ -3920,6 +3947,8 @@
 \tl_new:N \l_@@_doc_def_tl
 \tl_new:N \l_@@_doc_undef_tl
 \tl_new:N \l_@@_undoc_def_tl
+\tl_const:Nn \c_@@_iow_separator_tl { ---- }
+\tl_const:Nn \c_@@_iow_midrule_tl  { -- }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -3928,7 +3957,7 @@
     \bool_lazy_and:nnT
       { \g_@@_typeset_implementation_bool } { \g_@@_checkfunc_bool }
       {
-        \iow_term:x { \c_@@_iow_separator_tl \iow_newline: }
+        \iow_term:e { \c_@@_iow_separator_tl \iow_newline: }
         \iow_open:Nn \g_@@_func_iow { \c_sys_jobname_str .cmds }
 
         \tl_clear:N \l_@@_doc_def_tl
@@ -3938,12 +3967,12 @@
           {
             \seq_if_in:NnTF \g_doc_macros_seq {##1}
               {
-                \tl_put_right:Nx \l_@@_doc_def_tl
+                \tl_put_right:Ne \l_@@_doc_def_tl
                   { ##1 \iow_newline: }
                 \iow_now:Nn \g_@@_func_iow { > ~ ##1 }
               }
               {
-                \tl_put_right:Nx \l_@@_doc_undef_tl
+                \tl_put_right:Ne \l_@@_doc_undef_tl
                   { ##1 \iow_newline: }
                 \iow_now:Nn \g_@@_func_iow { ! ~ ##1 }
               }
@@ -3952,7 +3981,7 @@
           {
             \seq_if_in:NnF \g_doc_functions_seq {##1}
               {
-                \tl_put_right:Nx \l_@@_undoc_def_tl
+                \tl_put_right:Ne \l_@@_undoc_def_tl
                   { ##1 \iow_newline: }
                 \iow_now:Nn \g_@@_func_iow { ? ~ ##1 }
               }
@@ -3971,13 +4000,13 @@
           \l_@@_undoc_def_tl
 
         \iow_close:N \g_@@_func_iow
-        \iow_term:x { \c_@@_iow_separator_tl }
+        \iow_term:e { \c_@@_iow_separator_tl }
       }
   }
 \AtEndDocument { \@@_show_functions_defined: }
 %    \end{macrocode}
 %
-% TODO: use \cs{iow_term:x}.
+% TODO: use \cs{iow_term:e}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_functions_typeout:nN #1#2
   {
@@ -4014,7 +4043,7 @@
                 \iow_newline:
                 \space\space\space\space\space\space * ~ ##1
               }
-            \tl_put_right:Nx \l_@@_tmpa_tl
+            \tl_put_right:Ne \l_@@_tmpa_tl
               {
                 \iow_newline: \iow_newline:
                 The~ following~ macro(s)~ have~ incomplete~ tests:
@@ -4032,7 +4061,7 @@
                 \iow_newline:
                 \space\space\space\space ##1
               }
-            \tl_put_right:Nx \l_@@_tmpa_tl
+            \tl_put_right:Ne \l_@@_tmpa_tl
               {
                 \iow_newline:
                 \iow_newline:
@@ -4073,7 +4102,7 @@
 %    \end{macrocode}
 % Force targets on every code line.
 %    \begin{macrocode}
-\cs_set_nopar:Npx \theCodelineNo
+\cs_set_nopar:Npe \theCodelineNo
   {
     \group_begin:
       \exp_not:N \HD at savedestfalse
@@ -4091,7 +4120,7 @@
 %    \begin{macrocode}
 \bool_new:N \l_@@_allow_indexing_bool
 \bool_set_true:N \l_@@_allow_indexing_bool
-\use:x
+\use:e
   {
     \exp_not:n { \cs_set_nopar:Npn \@starttoc #1 }
       {
@@ -4162,7 +4191,7 @@
 %    \begin{macrocode}
 \cs_gset_protected:Npn \it at is@a #1
   {
-    \use:x
+    \use:e
       {
         \@@_special_index_module:nnnnN
           {#1}
@@ -4223,7 +4252,7 @@
 % \end{arguments}
 %    \begin{macrocode}
   {
-    \use:x
+    \use:e
       {
         \exp_not:n { \@@_special_index_aux:nnnnnn {#1} {#2} }
           \tl_if_empty:nTF {#3}
@@ -4297,7 +4326,7 @@
 %    \begin{macrocode}
 \group_begin:
 \char_set_active_eq:NN - \scan_stop:
-\tl_const:Nx \c_@@_active_minus_tl { \char_generate:nn { `- } { 13 } }
+\tl_const:Ne \c_@@_active_minus_tl { \char_generate:nn { `- } { 13 } }
 \group_end:
 \cs_new_eq:NN \@@_old_hdpindex:nn \hdpindex
 \cs_new_eq:NN \@@_old_hdclindex:nnn \hdclindex
@@ -4308,7 +4337,7 @@
 \cs_new_protected:Npn \@@_hdindex:nn #1#2
   {
     \tl_set:Nn \l_@@_tmpa_tl {#2}
-    \tl_replace_all:Nxn \l_@@_tmpa_tl
+    \tl_replace_all:Nen \l_@@_tmpa_tl
       { \exp_not:V \c_@@_active_minus_tl \exp_not:V \c_@@_active_minus_tl }
       { -- }
     \seq_set_split:NnV \l_@@_tmpa_seq { -- } \l_@@_tmpa_tl
@@ -4322,11 +4351,11 @@
     \tl_replace_all:Nnn \l_@@_tmpa_tl { MMMM } { \use_none:nn }
     \tl_if_in:NnT \l_@@_tmpa_tl { MMMD }
       {
-        \tl_replace_all:Nxn \l_@@_tmpa_tl
+        \tl_replace_all:Nen \l_@@_tmpa_tl
           { \exp_not:V \c_@@_active_minus_tl MMMD } { - MMMD }
         \tl_replace_all:Nnn \l_@@_tmpa_tl { - MMMD } { \@@_hdindex_aux:w }
       }
-    \use:x { \exp_not:n {#1} { \exp_not:V \l_@@_tmpa_tl } }
+    \use:e { \exp_not:n {#1} { \exp_not:V \l_@@_tmpa_tl } }
   }
 \cs_new_protected:Npn \@@_hdindex_aux:w #1 M { }
 %    \end{macrocode}
@@ -4335,7 +4364,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_special_index_set:Nn #1#2
   {
-    \__kernel_tl_set:Nx #1 { \tl_to_str:n {#2} }
+    \__kernel_tl_set:Ne #1 { \tl_to_str:n {#2} }
     \@@_if_almost_str:nTF {#2}
       {
         \tl_replace_all:Non #1 { \tl_to_str:n { __ } }
@@ -4344,7 +4373,7 @@
             \token_to_str:N \_ \token_to_str:N \_
             \token_to_str:N \verb * \verbatimchar
           }
-        \exp_args:Nx \tl_map_inline:nn
+        \exp_args:Ne \tl_map_inline:nn
           { \tl_to_str:N \verbatimchar \token_to_str:N _ }
           {
             \tl_replace_all:Nnn #1 {##1}
@@ -4353,7 +4382,7 @@
                 \token_to_str:N \verb * \verbatimchar
               }
           }
-        \__kernel_tl_set:Nx #1
+        \__kernel_tl_set:Ne #1
           {
             \token_to_str:N \verb * \verbatimchar
             #1 \verbatimchar
@@ -4377,7 +4406,7 @@
   {
     \tl_map_inline:nn { \quotechar \actualchar \encapchar \levelchar \bslash }
       {
-        \tl_replace_all:Nxn #1
+        \tl_replace_all:Nen #1
           { \tl_to_str:N ##1 } { \quotechar \tl_to_str:N ##1 }
       }
   }
@@ -4404,7 +4433,7 @@
 \cs_new_protected:Npn \@@_key_get:n #1
   {
     \@@_key_get_base:nN {#1} \l_@@_index_macro_tl
-    \__kernel_tl_set:Nx \l_@@_index_key_tl
+    \__kernel_tl_set:Ne \l_@@_index_key_tl
       { \tl_to_str:N \l_@@_index_macro_tl }
     \tl_clear:N \l_@@_index_module_tl
     \tl_if_in:NoTF \l_@@_index_key_tl { \tl_to_str:n { __ } }
@@ -4427,7 +4456,7 @@
   }
 \cs_new_protected:Npn \@@_key_pop:
   {
-    \__kernel_tl_set:Nx \l_@@_index_key_tl
+    \__kernel_tl_set:Ne \l_@@_index_key_tl
       { \tl_tail:N \l_@@_index_key_tl }
   }
 %    \end{macrocode}
@@ -4442,7 +4471,7 @@
   {
     \cs_set:Npn \@@_tmpa:w ##1 #1 ##2 \q_stop
       { \exp_not:n {##1} }
-    \__kernel_tl_set:Nx \l_@@_index_module_tl
+    \__kernel_tl_set:Ne \l_@@_index_module_tl
       { \exp_after:wN \@@_tmpa:w \l_@@_index_module_tl #1 \q_stop }
   }
 \cs_new_protected:Npn \@@_key_drop_underscores:
@@ -4495,7 +4524,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_key_var:
   {
-    \exp_args:Nx \tl_if_head_eq_charcode:nNTF
+    \exp_args:Ne \tl_if_head_eq_charcode:nNTF
       { \exp_args:No \str_tail:n \l_@@_index_key_tl } _
       {
         \str_case:fn { \str_head:N \l_@@_index_key_tl }
@@ -4535,7 +4564,7 @@
 %   sorted differently in an index.
 %    \begin{macrocode}
 \clist_new:N \g_@@_non_modules_clist
-\clist_gset:Nx \g_@@_non_modules_clist
+\clist_gset:Ne \g_@@_non_modules_clist
   {
     \tl_to_str:n
       {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -501,6 +501,7 @@
 %     \exp_args:NNNo,
 %     \exp_args:NNNV,
 %     \exp_args:NNNv,
+%     \exp_args:NNNe,
 %     \exp_args:Nccc,
 %     \exp_args:NcNc,
 %     \exp_args:NcNo,
@@ -664,8 +665,8 @@
 %     This is the \TeX{} \tn{noexpand} primitive.  It only prevents
 %     expansion.  At the beginning of an |f|-type argument, a space
 %     \meta{token} is removed even if it appears as \cs{exp_not:N}
-%     \cs{c_space_token}.  In an |x|-expanding definition
-%     (\cs{cs_new:Npx}), a macro parameter introduces an argument even
+%     \cs{c_space_token}.  In an |e|-expanding definition
+%     (\cs{cs_new:Npe}), a macro parameter introduces an argument even
 %     if it appears as \cs{exp_not:N} |#| |1|.  This differs from
 %     \cs{exp_not:n}.
 %   \end{texnote}
@@ -692,7 +693,7 @@
 %   \emph{must} be surrounded by braces.
 %   \begin{texnote}
 %     This is the \eTeX{} \tn{unexpanded} primitive.  In an
-%     |x|-expanding definition (\cs{cs_new:Npx}), \cs{exp_not:n}~|{#1}|
+%     |x|-expanding definition (\cs{cs_new:Npe}), \cs{exp_not:n}~|{#1}|
 %     is equivalent to |##1| rather than to~|#1|, namely it inserts the
 %     two characters |#| and~|1|.  In an |e|-type argument
 %     \cs{exp_not:n}~|{#}| is equivalent to |#|, namely it inserts the
@@ -947,7 +948,7 @@
 % In this section a general mechanism for defining functions that handle
 % arguments is defined.  These general expansion functions are
 % expandable unless |x| is used.  (Any version of |x| is going to have
-% to use one of the \LaTeX3 names for \cs{cs_set:Npx} at some
+% to use one of the \LaTeX3 names for \cs{cs_set:Npe} at some
 % point, and so is never going to be expandable.)
 %
 % The definition of expansion functions with this technique happens
@@ -1080,7 +1081,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \::x #1 \::: #2#3
   {
-    \cs_set_nopar:Npx \l_@@_internal_tl
+    \cs_set_nopar:Npe \l_@@_internal_tl
       { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } }
     \l_@@_internal_tl
   }
@@ -1325,7 +1326,7 @@
 %
 % \begin{macro}[EXP]
 %   {
-%     \exp_args:NNNV, \exp_args:NNNv,
+%     \exp_args:NNNV, \exp_args:NNNv, \exp_args:NNNe,
 %     \exp_args:NcNc, \exp_args:NcNo,
 %     \exp_args:Ncco,
 %   }
@@ -1345,6 +1346,13 @@
     \exp_after:wN #3
     \exp_after:wN { \exp:w \@@_eval_register:c {#4} }
   }
+\cs_new:Npn \exp_args:NNNe #1#2#3#4
+  {
+    \exp_after:wN #1
+    \exp_after:wN #2
+    \exp_after:wN #3
+    \tex_expanded:D { {#4} }
+  }
 \cs_new:Npn \exp_args:NcNc #1#2#3#4
   {
     \exp_after:wN #1
@@ -1410,7 +1418,7 @@
   }
 \cs_new_protected:Npn \::x_unbraced \::: #1#2
   {
-    \cs_set_nopar:Npx \l_@@_internal_tl { \exp_not:n {#1} #2 }
+    \cs_set_nopar:Npe \l_@@_internal_tl { \exp_not:n {#1} #2 }
     \l_@@_internal_tl
   }
 %    \end{macrocode}
@@ -1682,7 +1690,7 @@
 %   \end{arguments}
 %   After making sure that the base form exists, test whether it is
 %   protected or not and define \cs{@@_tmp:w} as either
-%   \cs{cs_new:Npx} or \cs{cs_new_protected:Npx}, which is
+%   \cs{cs_new:Npe} or \cs{cs_new_protected:Npe}, which is
 %   then used to define all the variants (except those involving
 %   \texttt{x}-expansion, always protected).  Split up the original base
 %   function only once, to grab its name and signature.  Then we wish to
@@ -1692,7 +1700,7 @@
 \cs_new_protected:Npn \cs_generate_variant:Nn #1#2
   {
     \@@_generate_variant:N #1
-    \use:x
+    \use:e
       {
         \@@_generate_variant:nnNN
           \cs_split_function:N #1
@@ -1728,21 +1736,21 @@
 %   |\bot|, |\splittop|, or |\splitbot|, with |\| replaced by the
 %   appropriate escape character.  If |pr| appears in the part before
 %   |ma|, the first \cs{s_@@_mark} is taken as an argument of the |wwNw|
-%   auxiliary, and |#3| is \cs{cs_new_protected:Npx}, otherwise it
-%   is \cs{cs_new:Npx}.
+%   auxiliary, and |#3| is \cs{cs_new_protected:Npe}, otherwise it
+%   is \cs{cs_new:Npe}.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_generate_variant:N #1
+\cs_new_protected:Npe \@@_generate_variant:N #1
   {
     \exp_not:N \exp_after:wN \exp_not:N \if_meaning:w
       \exp_not:N \exp_not:N #1 #1
-      \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npx
+      \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npe
     \exp_not:N \else:
       \exp_not:N \exp_after:wN \exp_not:N \@@_generate_variant:ww
         \exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma }
           \s_@@_mark
-        \s_@@_mark \cs_new_protected:Npx
+        \s_@@_mark \cs_new_protected:Npe
         \tl_to_str:n { pr }
-        \s_@@_mark \cs_new:Npx
+        \s_@@_mark \cs_new:Npe
         \s_@@_stop
     \exp_not:N \fi:
   }
@@ -1773,7 +1781,7 @@
 \cs_new_protected:Npn \@@_generate_variant:nnNN #1#2#3#4
   {
     \if_meaning:w \c_false_bool #3
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
     \fi:
@@ -1837,7 +1845,7 @@
     \if_meaning:w \scan_stop: #4
       \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
     \fi:
-    \use:x
+    \use:e
       {
         \exp_not:N \@@_generate_variant:wwNN
         \@@_generate_variant_loop:nNwN { }
@@ -1976,7 +1984,7 @@
     \exp_not:n
       {
         \s_@@_mark
-        \msg_error:nnxx { kernel } { variant-too-long }
+        \msg_error:nnee { kernel } { variant-too-long }
           {#5} { \token_to_str:N #3 }
         \use_none:nnn
         \s_@@_stop
@@ -1991,7 +1999,7 @@
     \exp_not:n
       {
         \s_@@_mark
-        \msg_error:nnxxxx { kernel } { invalid-variant }
+        \msg_error:nneeee { kernel } { invalid-variant }
           {#7} { \token_to_str:N #5 } {#1} {#2}
         \use_none:nnn
         \s_@@_stop
@@ -2005,7 +2013,7 @@
     #3 \s_@@_stop #4 #5 {#6} {#7}
     \exp_not:n
       {
-        \msg_error:nnxxxx
+        \msg_error:nneeee
           { kernel } { deprecated-variant }
           {#7} { \token_to_str:N #5 } {#1} {#2}
       }
@@ -2039,7 +2047,7 @@
 %   (provided \texttt{log-functions} is active).
 %   Otherwise, make sure that the |\exp_args:N #3| form is defined, and
 %   if it contains |x|, change \cs{@@_tmp:w} locally to
-%   \cs{cs_new_protected:Npx}.  Then define the variant by
+%   \cs{cs_new_protected:Npe}.  Then define the variant by
 %   combining the |\exp_args:N #3| variant and the base function.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_generate_variant:wwNN
@@ -2074,11 +2082,11 @@
 %   the \cs[no-index]{exp_args:N\dots} function as a macro taking up to
 %   $9$~arguments and expanding them using \cs{use:x} or \cs{tex_expanded:D}.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_generate_internal_variant:n #1
+\cs_new_protected:Npe \@@_generate_internal_variant:n #1
   {
     \exp_not:N \@@_generate_internal_variant:wwnNwn
       #1 \s_@@_mark
-        { \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npx }
+        { \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npe }
         \cs_new_protected:cpn
         \use:x
       \token_to_str:N x \s_@@_mark
@@ -2111,7 +2119,7 @@
         ##3
         \s_@@_mark
         {
-          \use:x
+          \use:e
             {
               ##1 { exp_args:N ##3 }
                 { \@@_generate_internal_variant_loop:n ##3 { : \use_i:nn } }
@@ -2206,7 +2214,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \prg_generate_conditional_variant:Nnn #1
   {
-    \use:x
+    \use:e
       {
         \@@_generate_variant:nnNnn
           \cs_split_function:N #1
@@ -2215,7 +2223,7 @@
 \cs_new_protected:Npn \@@_generate_variant:nnNnn #1#2#3#4#5
   {
     \if_meaning:w \c_false_bool #3
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \@@_use_i_delimit_by_s_stop:nw
     \fi:
@@ -2235,7 +2243,7 @@
       \cs_if_exist_use:cTF { @@_generate_variant_#1_form:nnn }
         { {#3} {#4} {#5} }
         {
-          \msg_error:nnxx
+          \msg_error:nnee
             { kernel } { conditional-form-unknown }
             {#1} { \token_to_str:c { #3 : #4 } }
         }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -448,7 +448,10 @@
 % \subsection{Writing to files}
 %
 % \begin{function}[updated = 2012-06-05]
-%   {\iow_now:Nn, \iow_now:NV, \iow_now:Nx, \iow_now:cn, \iow_now:cV, \iow_now:cx}
+%   {
+%     \iow_now:Nn, \iow_now:NV, \iow_now:Ne,
+%     \iow_now:cn, \iow_now:cV, \iow_now:ce
+%   }
 %   \begin{syntax}
 %     \cs{iow_now:Nn} \meta{stream} \Arg{tokens}
 %   \end{syntax}
@@ -457,7 +460,7 @@
 %   on expansion of \cs{iow_now:Nn}).
 % \end{function}
 %
-% \begin{function}{\iow_log:n, \iow_log:x}
+% \begin{function}{\iow_log:n, \iow_log:e}
 %   \begin{syntax}
 %     \cs{iow_log:n} \Arg{tokens}
 %   \end{syntax}
@@ -465,7 +468,7 @@
 %   file immediately: it is a dedicated version of \cs{iow_now:Nn}.
 % \end{function}
 %
-% \begin{function}{\iow_term:n, \iow_term:x}
+% \begin{function}{\iow_term:n, \iow_term:e}
 %   \begin{syntax}
 %     \cs{iow_term:n} \Arg{tokens}
 %   \end{syntax}
@@ -475,8 +478,8 @@
 %
 % \begin{function}
 %   {
-%     \iow_shipout:Nn, \iow_shipout:Nx,
-%     \iow_shipout:cn, \iow_shipout:cx
+%     \iow_shipout:Nn, \iow_shipout:Ne,
+%     \iow_shipout:cn, \iow_shipout:ce
 %   }
 %   \begin{syntax}
 %     \cs{iow_shipout:Nn} \meta{stream} \Arg{tokens}
@@ -486,7 +489,7 @@
 %   shipout). The \texttt{x}-type variants expand the \meta{tokens}
 %   at the point where the function is used but \emph{not} when the
 %   resulting tokens are written to the \meta{stream}
-%   (\emph{cf.}~\cs{iow_shipout_x:Nn}).
+%   (\emph{cf.}~\cs{iow_shipout_e:Nn}).
 %   \begin{texnote}
 %     When using \pkg{expl3} with a format other than \LaTeX{}, new line
 %     characters inserted using \cs{iow_newline:} or using the
@@ -496,13 +499,13 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[updated = 2012-09-08]
+% \begin{function}[updated = 2023-09-17]
 %   {
-%     \iow_shipout_x:Nn, \iow_shipout_x:Nx,
-%     \iow_shipout_x:cn, \iow_shipout_x:cx
+%     \iow_shipout_e:Nn, \iow_shipout_e:Ne,
+%     \iow_shipout_e:cn, \iow_shipout_e:ce
 %   }
 %   \begin{syntax}
-%     \cs{iow_shipout_x:Nn} \meta{stream} \Arg{tokens}
+%     \cs{iow_shipout_e:Nn} \meta{stream} \Arg{tokens}
 %   \end{syntax}
 %   This function writes \meta{tokens} to the specified
 %   \meta{stream} when the current page is finalised (\emph{i.e.}~at
@@ -528,7 +531,7 @@
 %   write difficult characters such as |%|, |{|, |}|,
 %   \emph{etc.}~in messages, for example:
 %   \begin{verbatim}
-%     \iow_now:Nx \g_my_iow { \iow_char:N \{ text \iow_char:N \} }
+%     \iow_now:Ne \g_my_iow { \iow_char:N \{ text \iow_char:N \} }
 %   \end{verbatim}
 %   The function has no effect if writing is taking place without
 %   expansion (\emph{e.g.}~in the second argument of \cs{iow_now:Nn}).
@@ -546,7 +549,7 @@
 %     character inserted by \cs{iow_newline:} is not recognized by
 %     \TeX{}, which may lead to the insertion of additional unwanted
 %     line-breaks.  This issue only affects \cs{iow_shipout:Nn},
-%     \cs{iow_shipout_x:Nn} and direct uses of primitive operations.
+%     \cs{iow_shipout_e:Nn} and direct uses of primitive operations.
 %   \end{texnote}
 % \end{function}
 %
@@ -553,7 +556,7 @@
 % \subsection{Wrapping lines in output}
 %
 % \begin{function}[added = 2012-06-28, updated = 2017-12-04]
-%   {\iow_wrap:nnnN, \iow_wrap:nxnN}
+%   {\iow_wrap:nnnN, \iow_wrap:nenN}
 %   \begin{syntax}
 %     \cs{iow_wrap:nnnN} \Arg{text} \Arg{run-on text} \Arg{set up} \meta{function}
 %   \end{syntax}
@@ -705,8 +708,10 @@
 %   \end{texnote}
 % \end{variable}
 %
-% \begin{function}[TF, updated = 2012-02-10]{\file_if_exist:n, \file_if_exist:V}
+% \begin{function}[EXP, pTF, updated = 2023-09-18]
+%   {\file_if_exist:n, \file_if_exist:V}
 %   \begin{syntax}
+%     \cs{file_if_exist_p:n} \Arg{file name}
 %     \cs{file_if_exist:nTF} \Arg{file name} \Arg{true code} \Arg{false code}
 %   \end{syntax}
 %   Searches for \meta{file name} using the current \TeX{} search
@@ -714,7 +719,8 @@
 %   \cs{l_file_search_path_seq}.
 % \end{function}
 %
-% \begin{function}[noTF, added = 2019-01-16, updated = 2019-02-16]{\file_get:nnN}
+% \begin{function}[noTF, added = 2019-01-16, updated = 2019-02-16]
+%   {\file_get:nnN, \file_get:VnN}
 %   \begin{syntax}
 %     \cs{file_get:nnN} \Arg{filename} \Arg{setup} \meta{tl}
 %     \cs{file_get:nnNTF} \Arg{filename} \Arg{setup} \meta{tl} \Arg{true code} \Arg{false code}
@@ -782,7 +788,8 @@
 %   Quotes (|"|) are invalid in file names and are discarded from the input.
 % \end{function}
 %
-% \begin{function}[EXP, added = 2020-06-24]{\file_parse_full_name:n}
+% \begin{function}[EXP, added = 2020-06-24]
+%   {\file_parse_full_name:n, \file_parse_full_name:V}
 %   \begin{syntax}
 %     \cs{file_parse_full_name:n} \Arg{full name}
 %   \end{syntax}
@@ -791,7 +798,8 @@
 %   each inside a pair of braces.
 % \end{function}
 %
-% \begin{function}[EXP, added = 2020-06-24]{\file_parse_full_name_apply:nN}
+% \begin{function}[EXP, added = 2020-06-24]
+%   {\file_parse_full_name_apply:nN, \file_parse_full_name_apply:VN}
 %   \begin{syntax}
 %     \cs{file_parse_full_name_apply:nN} \Arg{full name} \meta{function}
 %   \end{syntax}
@@ -801,7 +809,10 @@
 % \end{function}
 %
 % \begin{function}[rEXP, added = 2019-11-19]
-%   {\file_hex_dump:n, \file_hex_dump:nnn}
+%   {
+%     \file_hex_dump:n,   \file_hex_dump:V,
+%     \file_hex_dump:nnn, \file_hex_dump:Vnn
+%   }
 %   \begin{syntax}
 %     \cs{file_hex_dump:n} \Arg{file name}
 %     \cs{file_hex_dump:nnn} \Arg{file name} \Arg{start index} \Arg{end index}
@@ -819,7 +830,10 @@
 % \end{function}
 %
 % \begin{function}[noTF, added = 2019-11-19]
-%   {\file_get_hex_dump:nN, \file_get_hex_dump:nnnN}
+%   {
+%     \file_get_hex_dump:nN, \file_get_hex_dump:VN,
+%     \file_get_hex_dump:nnnN, \file_get_hex_dump:VnnN
+%   }
 %   \begin{syntax}
 %     \cs{file_get_hex_dump:nN} \Arg{file name} \meta{tl var}
 %     \cs{file_get_hex_dump:nnnN} \Arg{file name} \Arg{start index} \Arg{end index} \meta{tl var}
@@ -829,7 +843,8 @@
 %   If the file is not found, the \meta{tl var} will be set to \cs{q_no_value}.
 % \end{function}
 %
-% \begin{function}[rEXP, added = 2019-09-03]{\file_mdfive_hash:n}
+% \begin{function}[rEXP, added = 2019-09-03]
+%   {\file_mdfive_hash:n, \file_mdfive_hash:V}
 %   \begin{syntax}
 %     \cs{file_mdfive_hash:n} \Arg{file name}
 %   \end{syntax}
@@ -845,7 +860,7 @@
 % \end{function}
 %
 % \begin{function}[noTF, added = 2017-07-11, updated = 2019-02-16]
-%   {\file_get_mdfive_hash:nN}
+%   {\file_get_mdfive_hash:nN, \file_get_mdfive_hash:VN}
 %   \begin{syntax}
 %     \cs{file_get_mdfive_hash:nN} \Arg{file name} \meta{tl var}
 %   \end{syntax}
@@ -854,7 +869,7 @@
 %   the \meta{tl var} will be set to \cs{q_no_value}.
 % \end{function}
 %
-% \begin{function}[rEXP, added = 2019-09-03]{\file_size:n}
+% \begin{function}[rEXP, added = 2019-09-03]{\file_size:n, \file_size:V}
 %   \begin{syntax}
 %     \cs{file_size:n} \Arg{file name}
 %   \end{syntax}
@@ -865,7 +880,7 @@
 % \end{function}
 %
 % \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16]
-%   {\file_get_size:nN}
+%   {\file_get_size:nN, \file_get_size:VN}
 %   \begin{syntax}
 %     \cs{file_get_size:nN} \Arg{file name} \meta{tl var}
 %   \end{syntax}
@@ -875,7 +890,8 @@
 %   This is not available in older versions of \XeTeX{}.
 % \end{function}
 %
-% \begin{function}[rEXP, added = 2019-09-03]{\file_timestamp:n}
+% \begin{function}[rEXP, added = 2019-09-03]
+%   {\file_timestamp:n, \file_timestamp:V}
 %   \begin{syntax}
 %     \cs{file_timestamp:n} \Arg{file name}
 %   \end{syntax}
@@ -891,7 +907,7 @@
 % \end{function}
 %
 % \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16]
-%   {\file_get_timestamp:nN}
+%   {\file_get_timestamp:nN, \file_get_timestamp:VN}
 %   \begin{syntax}
 %     \cs{file_get_timestamp:nN} \Arg{file name} \meta{tl var}
 %   \end{syntax}
@@ -902,7 +918,12 @@
 % \end{function}
 %
 % \begin{function}[added = 2019-05-13, updated = 2019-09-20, pTF, EXP]
-%   {\file_compare_timestamp:nNn}
+%   {
+%     \file_compare_timestamp:nNn,
+%     \file_compare_timestamp:nNV,
+%     \file_compare_timestamp:VNn,
+%     \file_compare_timestamp:VNV
+%   }
 %   \begin{syntax}
 %     \cs{file_compare_timestamp_p:nNn} \Arg{file-1} \meta{comparator} \Arg{file-2}
 %     \cs{file_compare_timestamp:nNnTF} \Arg{file-1} \meta{comparator} \Arg{file-2} \Arg{true code} \Arg{false code}
@@ -935,7 +956,8 @@
 %   function. An error is raised if the file is not found.
 % \end{function}
 %
-% \begin{function}[added = 2023-05-18, EXP]{\file_input_raw:n}
+% \begin{function}[added = 2023-05-18, EXP]
+%   {\file_input_raw:n, \file_input_raw:V}
 %   \begin{syntax}
 %     \cs{file_input_raw:n} \Arg{file name}
 %   \end{syntax}
@@ -950,7 +972,13 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[added = 2014-07-02]{\file_if_exist_input:n, \file_if_exist_input:nF}
+% \begin{function}[added = 2014-07-02]
+%   {
+%     \file_if_exist_input:n,
+%     \file_if_exist_input:V,
+%     \file_if_exist_input:nF,
+%     \file_if_exist_input:VF
+%   }
 %   \begin{syntax}
 %     \cs{file_if_exist_input:n} \Arg{file name}
 %     \cs{file_if_exist_input:nF} \Arg{file name} \Arg{false code}
@@ -1169,7 +1197,7 @@
       { \@@_open_stream:Nn #1 {#2} }
       {
         \@@_new:N #1
-        \__kernel_tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} }
+        \__kernel_tl_set:Ne \l_@@_stream_tl { \int_eval:n {#1} }
         \@@_open_stream:Nn #1 {#2}
       }
   }
@@ -1178,7 +1206,7 @@
 %   Here, we act defensively in case \LuaTeX{} is in use with an
 %   extensionless file name.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_open_stream:Nn #1#2
+\cs_new_protected:Npe \@@_open_stream:Nn #1#2
   {
     \tex_global:D \tex_chardef:D #1 = \exp_not:N \l_@@_stream_tl \scan_stop:
     \prop_gput:NVn \exp_not:N \g_@@_streams_prop #1 {#2}
@@ -1192,7 +1220,7 @@
 % \end{macro}
 %
 % \begin{macro}{\ior_shell_open:Nn}
-% \begin{macro}{\@@_shell_open:nN}
+% \begin{macro}{\@@_shell_open:nN, \@@_shell_open:oN}
 %   Actually much easier than either the standard open or input versions!
 %   When calling \cs{__kernel_ior_open:Nn} the file the pipe is added to
 %   signal a shell command, but the quotes are not added yet---they are
@@ -1201,7 +1229,7 @@
 \cs_new_protected:Npn \ior_shell_open:Nn #1#2
   {
     \sys_if_shell:TF
-      { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 }
+      { \@@_shell_open:oN { \tl_to_str:n {#2} } #1 }
       { \msg_error:nn { kernel } { pipe-failed } }
   }
 \cs_new_protected:Npn \@@_shell_open:nN #1#2
@@ -1208,11 +1236,12 @@
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \msg_error:nnx
+        \msg_error:nne
           { kernel } { quote-in-shell } {#1}
       }
       { \__kernel_ior_open:Nn #2 { |#1 } }
   }
+\cs_generate_variant:Nn \@@_shell_open:nN { o }
 \msg_new:nnnn { kernel } { pipe-failed }
   { Cannot~run~piped~system~commands. }
   {
@@ -1259,10 +1288,10 @@
       {
         \prop_get:NVNTF \g_@@_streams_prop #2 \l_@@_internal_tl
           {
-            \exp_args:Nx #1
+            \exp_args:Ne #1
               { \token_to_str:N #2 ~ open: ~ \l_@@_internal_tl }
           }
-          { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } }
+          { \exp_args:Ne #1 { \token_to_str:N #2 ~ closed } }
       }
   }
 %    \end{macrocode}
@@ -1278,8 +1307,8 @@
 %   \texttt{show-streams} takes care of translating |ior|/|iow| to
 %   English.
 %    \begin{macrocode}
-\cs_new_protected:Npn \ior_show_list: { \@@_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \ior_log_list: { \@@_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \ior_show_list: { \@@_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \ior_log_list: { \@@_list:N \msg_log:nneeee }
 \cs_new_protected:Npn \@@_list:N #1
   {
     #1 { kernel } { show-streams }
@@ -1643,7 +1672,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \iow_open:Nn #1#2
   {
-    \__kernel_tl_set:Nx \l_@@_file_name_tl
+    \__kernel_tl_set:Ne \l_@@_file_name_tl
       { \__kernel_file_name_sanitize:n {#2} }
     \iow_close:N #1
     \seq_gpop:NNTF \g_@@_streams_seq \l_@@_stream_tl
@@ -1650,7 +1679,7 @@
       { \@@_open_stream:NV #1 \l_@@_file_name_tl }
       {
         \@@_new:N #1
-        \__kernel_tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} }
+        \__kernel_tl_set:Ne \l_@@_stream_tl { \int_eval:n {#1} }
         \@@_open_stream:NV #1 \l_@@_file_name_tl
       }
   }
@@ -1668,13 +1697,13 @@
 % \end{macro}
 %
 % \begin{macro}{\iow_shell_open:Nn}
-% \begin{macro}{\@@_shell_open:nN}
+% \begin{macro}{\@@_shell_open:nN, \@@_shell_open:oN}
 %   Very similar to the \texttt{ior} version
 %    \begin{macrocode}
 \cs_new_protected:Npn \iow_shell_open:Nn #1#2
   {
     \sys_if_shell:TF
-      { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 }
+      { \@@_shell_open:oN { \tl_to_str:n {#2} } #1 }
       { \msg_error:nn { kernel } { pipe-failed } }
   }
 \cs_new_protected:Npn \@@_shell_open:nN #1#2
@@ -1681,11 +1710,12 @@
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \msg_error:nnx
+        \msg_error:nne
           { kernel } { quote-in-shell } {#1}
       }
       { \__kernel_iow_open:Nn #2 { |#1 } }
   }
+\cs_generate_variant:Nn \@@_shell_open:nN { o }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1725,10 +1755,10 @@
       {
         \prop_get:NVNTF \g_@@_streams_prop #2 \l_@@_internal_tl
           {
-            \exp_args:Nx #1
+            \exp_args:Ne #1
               { \token_to_str:N #2 ~ open: ~ \l_@@_internal_tl }
           }
-          { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } }
+          { \exp_args:Ne #1 { \token_to_str:N #2 ~ closed } }
       }
   }
 %    \end{macrocode}
@@ -1738,8 +1768,8 @@
 % \begin{macro}{\@@_list:N}
 %   Done as for input, but with a copy of the auxiliary so the name is correct.
 %    \begin{macrocode}
-\cs_new_protected:Npn \iow_show_list: { \@@_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \iow_log_list: { \@@_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \iow_show_list: { \@@_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \iow_log_list: { \@@_list:N \msg_log:nneeee }
 \cs_new_protected:Npn \@@_list:N #1
   {
     #1 { kernel } { show-streams }
@@ -1756,22 +1786,33 @@
 %
 % \subsubsection{Deferred writing}
 %
-% \begin{macro}{\iow_shipout_x:Nn, \iow_shipout_x:Nx, \iow_shipout_x:cn, \iow_shipout_x:cx}
+% \begin{macro}
+%   {
+%     \iow_shipout_e:Nn, \iow_shipout_e:Ne,
+%     \iow_shipout_e:cn, \iow_shipout_e:ce
+%   }
 %   First the easy part, this is the primitive, which expects its
 %   argument to be braced.
 %    \begin{macrocode}
-\cs_new_protected:Npn \iow_shipout_x:Nn #1#2
+\cs_new_protected:Npn \iow_shipout_e:Nn #1#2
   { \tex_write:D #1 {#2} }
-\cs_generate_variant:Nn \iow_shipout_x:Nn { c, Nx, cx }
+\cs_generate_variant:Nn \iow_shipout_e:Nn { Ne , c, ce }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\iow_shipout:Nn, \iow_shipout:Nx, \iow_shipout:cn, \iow_shipout:cx}
+% \begin{macro}
+%   {
+%     \iow_shipout:Nn, \iow_shipout:Ne,
+%     \iow_shipout:Nx,
+%     \iow_shipout:cn, \iow_shipout:ce,
+%     \iow_shipout:cx
+%   }
 %   With \eTeX{} available deferred writing without expansion is easy.
 %    \begin{macrocode}
 \cs_new_protected:Npn \iow_shipout:Nn #1#2
   { \tex_write:D #1 { \exp_not:n {#2} } }
-\cs_generate_variant:Nn \iow_shipout:Nn { c, Nx, cx }
+\cs_generate_variant:Nn \iow_shipout:Nn { Ne , c, ce }
+\cs_generate_variant:Nn \iow_shipout:Nn { Nx , cx }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1778,7 +1819,7 @@
 % \subsubsection{Immediate writing}
 %
 % \begin{macro}{\__kernel_iow_with:Nnn}
-% \begin{macro}{\@@_with:nNnn}
+% \begin{macro}{\@@_with:nNnn, \@@_with:oNnn}
 %   If the integer~|#1| is equal to~|#2|, just leave~|#3| in the input
 %   stream.  Otherwise, pass the old value to an auxiliary, which sets
 %   the integer to the new value, runs the code, and restores the
@@ -1788,7 +1829,7 @@
   {
     \int_compare:nNnTF {#1} = {#2}
       { \use:n }
-      { \exp_args:No \@@_with:nNnn { \int_use:N #1 } #1 {#2} }
+      { \@@_with:oNnn { \int_use:N #1 } #1 {#2} }
   }
 \cs_new_protected:Npn \@@_with:nNnn #1#2#3#4
   {
@@ -1796,6 +1837,7 @@
     #4
     \int_set:Nn #2 {#1}
   }
+\cs_generate_variant:Nn \@@_with:nNnn { o }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1802,8 +1844,10 @@
 %
 % \begin{macro}
 %   {
-%     \iow_now:Nn, \iow_now:NV, \iow_now:Nx,
-%     \iow_now:cn, \iow_now:cV, \iow_now:cx
+%     \iow_now:Nn, \iow_now:NV, \iow_now:Ne,
+%     \iow_now:Nx,
+%     \iow_now:cn, \iow_now:cV, \iow_now:ce,
+%     \iow_now:cx
 %   }
 %   This routine writes the second argument onto the output stream without
 %   expansion. If this stream isn't open, the output goes to the terminal
@@ -1822,18 +1866,23 @@
     \__kernel_iow_with:Nnn \tex_newlinechar:D { `\^^J }
       { \tex_immediate:D \tex_write:D #1 { \exp_not:n {#2} } }
   }
-\cs_generate_variant:Nn \iow_now:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \iow_now:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \iow_now:Nn { Nx , cx }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\iow_log:n, \iow_log:x}
-% \begin{macro}{\iow_term:n, \iow_term:x}
-%   Writing to the log and the terminal directly are relatively easy.
+% \begin{macro}{\iow_log:n, \iow_log:e, \iow_log:x}
+% \begin{macro}{\iow_term:n, \iow_term:e, \iow_term:x}
+%   Writing to the log and the terminal directly are relatively easy;
+%   as we need the two \texttt{e}-type variants for bootstrapping,
+%   they are redefinitions here.
 %    \begin{macrocode}
-\cs_set_protected:Npn \iow_log:x  { \iow_now:Nx \c_log_iow  }
 \cs_new_protected:Npn \iow_log:n  { \iow_now:Nn \c_log_iow  }
-\cs_set_protected:Npn \iow_term:x { \iow_now:Nx \c_term_iow }
+\cs_set_protected:Npn \iow_log:e  { \iow_now:Ne \c_log_iow  }
+\cs_generate_variant:Nn \iow_log:n { x }
 \cs_new_protected:Npn \iow_term:n { \iow_now:Nn \c_term_iow }
+\cs_set_protected:Npn \iow_term:e { \iow_now:Ne \c_term_iow }
+\cs_generate_variant:Nn \iow_term:n { x }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1902,7 +1951,7 @@
 \cs_new:Npn \@@_unindent:w { }
 \cs_new_protected:Npn \@@_set_indent:n #1
   {
-    \__kernel_tl_set:Nx \l_@@_one_indent_tl
+    \__kernel_tl_set:Ne \l_@@_one_indent_tl
       { \exp_args:No \__kernel_str_to_other_fast:n { \tl_to_str:n {#1} } }
     \int_set:Nn \l_@@_one_indent_int
       { \str_count:N \l_@@_one_indent_tl }
@@ -1909,7 +1958,7 @@
     \exp_last_unbraced:NNo
       \cs_set:Npn \@@_unindent:w \l_@@_one_indent_tl { }
   }
-\exp_args:Nx \@@_set_indent:n { \prg_replicate:nn { 4 } { ~ } }
+\exp_args:Ne \@@_set_indent:n { \prg_replicate:nn { 4 } { ~ } }
 %    \end{macrocode}
 % \end{variable}
 % \end{macro}
@@ -1968,13 +2017,13 @@
 %    \begin{macrocode}
 \group_begin:
   \int_set:Nn \tex_escapechar:D { -1 }
-  \tl_const:Nx \c_@@_wrap_marker_tl
+  \tl_const:Ne \c_@@_wrap_marker_tl
     { \tl_to_str:n { \^^I \^^O \^^W \^^_ \^^W \^^R \^^A \^^P } }
 \group_end:
 \tl_map_inline:nn
   { { end } { newline } { allow_break } { indent } { unindent } }
   {
-    \tl_const:cx { c_@@_wrap_ #1 _marker_tl }
+    \tl_const:ce { c_@@_wrap_ #1 _marker_tl }
       {
         \c_@@_wrap_marker_tl
         #1
@@ -1998,7 +2047,7 @@
     \msg_error:nnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_wrap_allow_break: }
   }
-\cs_new:Npx \@@_wrap_allow_break: { \c_@@_wrap_allow_break_marker_tl }
+\cs_new:Npe \@@_wrap_allow_break: { \c_@@_wrap_allow_break_marker_tl }
 \cs_new:Npn \@@_wrap_allow_break_error:
   {
     \msg_expandable_error:nnnn { kernel } { iow-indent }
@@ -2026,7 +2075,7 @@
       { \iow_wrap:nnnN } { \iow_indent:n } {#1}
     #1
   }
-\cs_new:Npx \@@_indent:n #1
+\cs_new:Npe \@@_indent:n #1
   {
     \c_@@_wrap_indent_marker_tl
     #1
@@ -2043,7 +2092,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\iow_wrap:nnnN, \iow_wrap:nxnN}
+% \begin{macro}{\iow_wrap:nnnN, \iow_wrap:nenN}
 %   The main wrapping function works as follows.  First give |\\|,
 %   \verb*|\ | and other formatting commands the correct definition for
 %   messages and perform the given setup~|#3|.  The definition of
@@ -2059,11 +2108,11 @@
     \group_begin:
       \cs_if_exist_use:N \conditionally at traceoff
       \int_set:Nn \tex_escapechar:D { -1 }
-      \cs_set:Npx \{ { \token_to_str:N \{ }
-      \cs_set:Npx \# { \token_to_str:N \# }
-      \cs_set:Npx \} { \token_to_str:N \} }
-      \cs_set:Npx \% { \token_to_str:N \% }
-      \cs_set:Npx \~ { \token_to_str:N \~ }
+      \cs_set:Npe \{ { \token_to_str:N \{ }
+      \cs_set:Npe \# { \token_to_str:N \# }
+      \cs_set:Npe \} { \token_to_str:N \} }
+      \cs_set:Npe \% { \token_to_str:N \% }
+      \cs_set:Npe \~ { \token_to_str:N \~ }
       \int_set:Nn \tex_escapechar:D { 92 }
       \cs_set_eq:NN \\ \iow_newline:
       \cs_set_eq:NN \  \c_catcode_other_space_tl
@@ -2079,7 +2128,7 @@
 %   \cs{iow_wrap:nnnN}.
 %    \begin{macrocode}
       \cs_set_eq:NN \protect \token_to_str:N
-      \__kernel_tl_set:Nx \l_@@_wrap_tl {#1}
+      \__kernel_tl_set:Ne \l_@@_wrap_tl {#1}
       \cs_set_eq:NN \iow_wrap_allow_break: \@@_wrap_allow_break_error:
       \cs_set_eq:NN \iow_indent:n \@@_indent_error:n
 %    \end{macrocode}
@@ -2087,8 +2136,8 @@
 %   then convert to a string) and initialize the target count for lines
 %   (the first line has target count \cs{l_iow_line_count_int} instead).
 %    \begin{macrocode}
-      \__kernel_tl_set:Nx \l_@@_newline_tl { \iow_newline: #2 }
-      \__kernel_tl_set:Nx \l_@@_newline_tl { \tl_to_str:N \l_@@_newline_tl }
+      \__kernel_tl_set:Ne \l_@@_newline_tl { \iow_newline: #2 }
+      \__kernel_tl_set:Ne \l_@@_newline_tl { \tl_to_str:N \l_@@_newline_tl }
       \int_set:Nn \l_@@_line_target_int
         { \l_iow_line_count_int - \str_count:N \l_@@_newline_tl + 1 }
 %    \end{macrocode}
@@ -2112,7 +2161,7 @@
     \exp_args:NNf \group_end:
     #4 { \tl_to_str:N \l_@@_wrap_tl }
   }
-\cs_generate_variant:Nn \iow_wrap:nnnN { nx }
+\cs_generate_variant:Nn \iow_wrap:nnnN { ne }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2128,12 +2177,12 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_wrap_do:
   {
-    \__kernel_tl_set:Nx \l_@@_wrap_tl
+    \__kernel_tl_set:Ne \l_@@_wrap_tl
       {
         \exp_args:No \__kernel_str_to_other_fast:n \l_@@_wrap_tl
         \c_@@_wrap_end_marker_tl
       }
-    \__kernel_tl_set:Nx \l_@@_wrap_tl
+    \__kernel_tl_set:Ne \l_@@_wrap_tl
       {
         \exp_after:wN \@@_wrap_fix_newline:w \l_@@_wrap_tl
           ^^J \q_@@_nil ^^J \s_@@_stop
@@ -2397,7 +2446,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_wrap_allow_break:n #1
   {
-    \__kernel_tl_set:Nx \l_@@_line_tl
+    \__kernel_tl_set:Ne \l_@@_line_tl
       { \l_@@_line_tl \@@_wrap_trim:N \l_@@_line_part_tl }
     \bool_set_false:N \l_@@_line_break_bool
     \tl_if_empty:NTF \l_@@_line_part_tl
@@ -2417,7 +2466,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_wrap_indent:n #1
   {
-    \tl_put_right:Nx \l_@@_line_tl { \l_@@_line_part_tl }
+    \tl_put_right:Ne \l_@@_line_tl { \l_@@_line_part_tl }
     \bool_set_false:N \l_@@_line_break_bool
     \int_add:Nn \l_@@_indent_int { \l_@@_one_indent_int }
     \tl_put_right:No \l_@@_indent_tl { \l_@@_one_indent_tl }
@@ -2425,10 +2474,10 @@
   }
 \cs_new_protected:Npn \@@_wrap_unindent:n #1
   {
-    \tl_put_right:Nx \l_@@_line_tl { \l_@@_line_part_tl }
+    \tl_put_right:Ne \l_@@_line_tl { \l_@@_line_part_tl }
     \bool_set_false:N \l_@@_line_break_bool
     \int_sub:Nn \l_@@_indent_int { \l_@@_one_indent_int }
-    \__kernel_tl_set:Nx \l_@@_indent_tl
+    \__kernel_tl_set:Ne \l_@@_indent_tl
       { \exp_after:wN \@@_unindent:w \l_@@_indent_tl }
     \@@_wrap_chunk:nw {#1}
   }
@@ -2467,9 +2516,9 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_wrap_store_do:n #1
   {
-    \__kernel_tl_set:Nx \l_@@_line_tl
+    \__kernel_tl_set:Ne \l_@@_line_tl
       { \l_@@_line_tl \l_@@_line_part_tl }
-    \__kernel_tl_set:Nx \l_@@_wrap_tl
+    \__kernel_tl_set:Ne \l_@@_wrap_tl
       {
         \l_@@_wrap_tl
         \l_@@_newline_tl
@@ -2495,7 +2544,22 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsection{Deprecated functions}
+%
+% \begin{macro}
+%   {
+%     \iow_shipout_x:Nn, \iow_shipout_x:Nx,
+%     \iow_shipout_x:cn, \iow_shipout_x:cx
+%   }
+%   Previously described as \texttt{x}-type, but the hash behaviour is really
+%   \texttt{e}-type.
 %    \begin{macrocode}
+\cs_new_eq:NN \iow_shipout_x:Nn \iow_shipout_e:Nn
+\cs_generate_variant:Nn \iow_shipout_x:Nn { Nx , c, cx }
+%    \end{macrocode}
+% \end{macro}
+%
+%    \begin{macrocode}
 %<@@=file>
 %    \end{macrocode}
 %
@@ -2539,7 +2603,7 @@
         {
           \cs_set:Npn \@@_tmp:w ##1 " ##2 " ##3 \s_@@_stop
             { { } {##2} {  } }
-          \seq_gput_right:Nx \g_@@_stack_seq
+          \seq_gput_right:Ne \g_@@_stack_seq
             {
               \exp_after:wN \@@_tmp:w \tex_jobname:D
                 " \tex_jobname:D " \s_@@_stop
@@ -2811,11 +2875,11 @@
 %   The same idea as the marker for rescanning token lists: this pair of
 %   tokens cannot appear in a file that is being input.
 %    \begin{macrocode}
-\tl_const:Nx \c_@@_marker_tl { : \token_to_str:N : }
+\tl_const:Ne \c_@@_marker_tl { : \token_to_str:N : }
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}[TF]{\file_get:nnN}
+% \begin{macro}[TF]{\file_get:nnN, \file_get:VnN}
 % \begin{macro}{\file_get:nnN,\@@_get_aux:nnN,\@@_get_do:Nw}
 %   The approach here is similar to that for \cs{tl_set_rescan:Nnn}.
 %   The file contents are grabbed as an argument delimited by
@@ -2830,6 +2894,7 @@
     \file_get:nnNF {#1} {#2} #3
       { \tl_set:Nn #3 { \q_no_value } }
   }
+\cs_generate_variant:Nn \file_get:nnN { V }
 \prg_new_protected_conditional:Npnn \file_get:nnN #1#2#3 { T , F , TF }
   {
     \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
@@ -2841,7 +2906,8 @@
       }
       { \prg_return_false: }
   }
-\cs_new_protected:Npx \@@_get_aux:nnN #1#2#3
+\prg_generate_conditional_variant:Nnn \file_get:nnN { V } { T , F , TF }
+\cs_new_protected:Npe \@@_get_aux:nnN #1#2#3
   {
     \exp_not:N \if_false: { \exp_not:N \fi:
     \group_begin:
@@ -2901,6 +2967,7 @@
     \exp_args:Ne \@@_full_name:n
       { \__kernel_file_name_sanitize:n {#1} }
   }
+\cs_generate_variant:Nn \file_full_name:n { V }
 %    \end{macrocode}
 %   First, we check of the file is just here: no mapping so we do not
 %   need the break part of the broader auxiliary. We are using the fact
@@ -3011,7 +3078,7 @@
       }
       { \@@_ext_check:nnw {#1} { #2 #3 / } #4 / #5 \s_@@_stop }
   }
-\cs_new:Npx \@@_ext_check:nnnw #1#2#3#4 . #5 . #6 \s_@@_stop
+\cs_new:Npe \@@_ext_check:nnnw #1#2#3#4 . #5 . #6 \s_@@_stop
   {
     \exp_not:N \@@_quark_if_nil:nTF {#5}
       {
@@ -3065,15 +3132,14 @@
 \cs_generate_variant:Nn \file_get_full_name:nN { V }
 \prg_new_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF }
   {
-    \__kernel_tl_set:Nx #2
+    \__kernel_tl_set:Ne #2
       { \file_full_name:n {#1} }
     \tl_if_empty:NTF #2
       { \prg_return_false: }
       { \prg_return_true: }
   }
-\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 }
+\prg_generate_conditional_variant:Nnn \file_get_full_name:nN
+  { V } { T , F ,  TF }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -3086,7 +3152,12 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}[rEXP]{\file_mdfive_hash:n, \file_size:n, \file_timestamp:n}
+% \begin{macro}[rEXP]
+%   {
+%     \file_mdfive_hash:n, \file_mdfive_hash:V,
+%     \file_size:n, \file_size:V,
+%     \file_timestamp:n, \file_timestamp:V
+%   }
 % \begin{macro}[rEXP]{\@@_details:nn, \@@_details_aux:nn}
 % \begin{macro}[rEXP]{\@@_mdfive_hash:n}
 %   Getting file details by expansion is relatively easy if a bit repetitive.
@@ -3095,8 +3166,10 @@
 %    \begin{macrocode}
 \cs_new:Npn \file_size:n #1
   { \@@_details:nn {#1} { size } }
+\cs_generate_variant:Nn \file_size:n { V }
 \cs_new:Npn \file_timestamp:n #1
   { \@@_details:nn {#1} { moddate } }
+\cs_generate_variant:Nn \file_timestamp:n { V }
 \cs_new:Npn \@@_details:nn #1#2
   {
     \exp_args:Ne \@@_details_aux:nn
@@ -3109,6 +3182,7 @@
   }
 \cs_new:Npn \file_mdfive_hash:n #1
   { \exp_args:Ne \@@_mdfive_hash:n { \file_full_name:n {#1} } }
+\cs_generate_variant:Nn \file_mdfive_hash:n { V }
 \cs_new:Npn \@@_mdfive_hash:n #1
   { \tex_mdfivesum:D file {#1} }
 %    \end{macrocode}
@@ -3116,10 +3190,10 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[rEXP]{\file_hex_dump:nnn, \@@_hex_dump_auxi:nnn}
+% \begin{macro}[rEXP]{\file_hex_dump:nnn, \file_hex_dump:Vnn, \@@_hex_dump_auxi:nnn}
 % \begin{macro}[rEXP]{\@@_hex_dump_auxii:nnnn, \@@_hex_dump_auxiii:nnnn}
 % \begin{macro}[rEXP]{\@@_hex_dump_auxiiv:nnn}
-% \begin{macro}[rEXP]{\file_hex_dump:n, \@@_hex_dump:n}
+% \begin{macro}[rEXP]{\file_hex_dump:n, \file_hex_dump:V, \@@_hex_dump:n}
 %   These are separate as they need multiple arguments \emph{or} the
 %   file size. For \LuaTeX{}, the emulation does not need the file
 %   size so we save a little on expansion.
@@ -3131,6 +3205,7 @@
       { \int_eval:n {#2} }
       { \int_eval:n {#3} }
   }
+\cs_generate_variant:Nn \file_hex_dump:nnn { V }
 \cs_new:Npn \@@_hex_dump_auxi:nnn #1#2#3
   {
     \bool_lazy_any:nF
@@ -3174,6 +3249,7 @@
   }
 \cs_new:Npn \file_hex_dump:n #1
   { \exp_args:Ne \@@_hex_dump:n { \file_full_name:n {#1} } }
+\cs_generate_variant:Nn \file_hex_dump:n { V }
 \sys_if_engine_luatex:TF
   {
     \cs_new:Npn \@@_hex_dump:n #1
@@ -3197,10 +3273,10 @@
 %
 % \begin{macro}[noTF]
 %   {
-%     \file_get_hex_dump:nN,
-%     \file_get_mdfive_hash:nN
-%     \file_get_size:nN,
-%     \file_get_timestamp:nN
+%     \file_get_hex_dump:nN, \file_get_hex_dump:VN,
+%     \file_get_mdfive_hash:nN, \file_get_mdfive_hash:VN,
+%     \file_get_size:nN, \file_get_size:VN,
+%     \file_get_timestamp:nN, \file_get_timestamp:VN
 %   }
 % \begin{macro}{\@@_get_details:nnN}
 %   Non-expandable wrappers around the above in the case where appropriate
@@ -3208,23 +3284,35 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \file_get_hex_dump:nN #1#2
   { \file_get_hex_dump:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_hex_dump:nN { V }
 \cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2
   { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_mdfive_hash:nN { V }
 \cs_new_protected:Npn \file_get_size:nN #1#2
   { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_size:nN { V }
 \cs_new_protected:Npn \file_get_timestamp:nN #1#2
   { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_timestamp:nN { V }
 \prg_new_protected_conditional:Npnn \file_get_hex_dump:nN #1#2 { T , F , TF }
   { \@@_get_details:nnN {#1} { hex_dump } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_hex_dump:nN
+  { V } { T , F , TF }
 \prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF }
   { \@@_get_details:nnN {#1} { mdfive_hash } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_mdfive_hash:nN
+  { V } { T , F , TF }
 \prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF }
   { \@@_get_details:nnN {#1} { size } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_size:nN
+  { V } { T , F , TF }
 \prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF }
   { \@@_get_details:nnN {#1} { timestamp } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_timestamp:nN
+  { V } { T , F , TF }
 \cs_new_protected:Npn \@@_get_details:nnN #1#2#3
   {
-    \__kernel_tl_set:Nx #3
+    \__kernel_tl_set:Ne #3
       { \use:c { file_ #2 :n } {#1} }
     \tl_if_empty:NTF #3
       { \prg_return_false: }
@@ -3234,7 +3322,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[noTF]{\file_get_hex_dump:nnnN}
+% \begin{macro}[noTF]{\file_get_hex_dump:nnnN, \file_get_hex_dump:VnnN}
 %   Custom code due to the additional arguments.
 %    \begin{macrocode}
 \cs_new_protected:Npn \file_get_hex_dump:nnnN #1#2#3#4
@@ -3242,15 +3330,18 @@
     \file_get_hex_dump:nnnNF {#1} {#2} {#3} #4
       { \tl_set:Nn #4 { \q_no_value } }
   }
+\cs_generate_variant:Nn \file_get_hex_dump:nnnN { V }
 \prg_new_protected_conditional:Npnn \file_get_hex_dump:nnnN #1#2#3#4
   { T , F , TF }
   {
-    \__kernel_tl_set:Nx #4
+    \__kernel_tl_set:Ne #4
       { \file_hex_dump:nnn {#1} {#2} {#3} }
     \tl_if_empty:NTF #4
       { \prg_return_false: }
       { \prg_return_true: }
   }
+\prg_generate_conditional_variant:Nnn \file_get_hex_dump:nnnN
+  { V } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3262,7 +3353,13 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[EXP, pTF]{\file_compare_timestamp:nNn}
+% \begin{macro}[EXP, pTF]
+%   {
+%     \file_compare_timestamp:nNn,
+%     \file_compare_timestamp:nNV,
+%     \file_compare_timestamp:VNn
+%     \file_compare_timestamp:VNV
+%   }
 % \begin{macro}[EXP]{\@@_compare_timestamp:nnN}
 % \begin{macro}[EXP]{\@@_timestamp:n}
 %   Comparison of file date can be done by using the low-level nature of the
@@ -3276,6 +3373,8 @@
       { \file_full_name:n {#3} }
       #2
    }
+\prg_generate_conditional_variant:Nnn \file_compare_timestamp:nNn
+  { nNV , V , VNV } { p , T , F , TF }
 \cs_new:Npn \@@_compare_timestamp:nnN #1#2#3
   {
     \tl_if_blank:nTF {#1}
@@ -3320,17 +3419,23 @@
 %   something, whereas if the file was not located then the return value
 %   is empty.
 %    \begin{macrocode}
-\prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF }
+\prg_new_conditional:Npnn \file_if_exist:n #1 { p , T , F , TF }
   {
-    \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
+    \tl_if_blank:eTF { \file_full_name:n {#1} }
+      { \prg_return_false: }
       { \prg_return_true: }
-      { \prg_return_false: }
   }
-\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { p , T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\file_if_exist_input:n, \file_if_exist_input:nF}
+% \begin{macro}
+%   {
+%     \file_if_exist_input:n,
+%     \file_if_exist_input:V,
+%     \file_if_exist_input:nF,
+%     \file_if_exist_input:VF
+%   }
 %   Input of a file with a test for existence.  We do not define the |T|
 %   or |TF| variants because the most useful place to place the
 %   \meta{true code} would be inconsistent with other conditionals.
@@ -3340,6 +3445,7 @@
     \file_get_full_name:nNT {#1} \l_@@_full_name_tl
       { \@@_input:V \l_@@_full_name_tl }
   }
+\cs_generate_variant:Nn \file_if_exist_input:n { V }
 \cs_new_protected:Npn \file_if_exist_input:nF #1#2
   {
     \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
@@ -3346,6 +3452,7 @@
       { \@@_input:V \l_@@_full_name_tl }
       {#2}
   }
+\cs_generate_variant:Nn \file_if_exist_input:nF { V }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3361,7 +3468,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \__kernel_file_missing:n #1
   {
-    \msg_error:nnx { kernel } { file-not-found }
+    \msg_error:nne { kernel } { file-not-found }
       { \__kernel_file_name_sanitize:n {#1} }
   }
 %    \end{macrocode}
@@ -3384,7 +3491,7 @@
       { \__kernel_file_missing:n {#1} }
   }
 \cs_generate_variant:Nn \file_input:n { V }
-\cs_new_protected:Npx \@@_input:n #1
+\cs_new_protected:Npe \@@_input:n #1
   {
     \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist
       { \exp_not:N \@addtofilelist {#1} }
@@ -3403,7 +3510,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_input_push:n #1
   {
-    \seq_gpush:Nx \g_@@_stack_seq
+    \seq_gpush:Ne \g_@@_stack_seq
       {
         { \g_file_curr_dir_str }
         { \g_file_curr_name_str }
@@ -3435,12 +3542,13 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\file_input_raw:n, \@@_input_raw:nn}
+% \begin{macro}{\file_input_raw:n, \file_input_raw:V, \@@_input_raw:nn}
 %   No error checking, no tracking.
 %    \begin{macrocode}
 \cs_new:Npn \file_input_raw:n #1
   { \exp_args:Ne \@@_input_raw:nn { \file_full_name:n {#1} } {#1} }
-\cs_new:Npx \@@_input_raw:nn #1#2
+\cs_generate_variant:Nn \file_input_raw:n { V }
+\cs_new:Npe \@@_input_raw:nn #1#2
   {
     \exp_not:N \tl_if_blank:nTF {#1}
       {
@@ -3459,7 +3567,8 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\file_parse_full_name:n, \file_parse_full_name_apply:nN}
+% \begin{macro}{\file_parse_full_name:n, \file_parse_full_name:nV}
+% \begin{macro}{\file_parse_full_name_apply:nN \file_parse_full_name_apply:VN}
 %   The main parsing macro \cs{file_parse_full_name_apply:nN} passes the
 %   file name |#1| through \cs{__kernel_file_name_sanitize:n} so that we
 %   have a single normalised way to treat files internally.
@@ -3472,11 +3581,13 @@
     \file_parse_full_name_apply:nN {#1}
       \prg_do_nothing:
   }
+\cs_generate_variant:Nn \file_parse_full_name:n { V }
 \cs_new:Npn \file_parse_full_name_apply:nN #1
   {
     \exp_args:Ne \@@_parse_full_name_auxi:nN
       { \__kernel_file_name_sanitize:n {#1} }
   }
+\cs_generate_variant:Nn \file_parse_full_name_apply:nN { V }
 %    \end{macrocode}
 %
 % \begin{macro}{\@@_parse_full_name_auxi:nN}
@@ -3549,6 +3660,7 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\file_parse_full_name:nNNN, \file_parse_full_name:VNNN}
 %    \begin{macrocode}
@@ -3575,14 +3687,14 @@
 %   \cs{AtBeginDocument} into \cs{g_@@_record_seq}), turning it to a
 %   string (this does not affect the commas of this comma list).
 %    \begin{macrocode}
-\cs_new_protected:Npn \file_show_list: { \@@_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \file_log_list: { \@@_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \file_show_list: { \@@_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \file_log_list: { \@@_list:N \msg_log:nneeee }
 \cs_new_protected:Npn \@@_list:N #1
   {
     \seq_clear:N \l_@@_tmp_seq
     \clist_if_exist:NT \@filelist
       {
-        \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
+        \exp_args:NNe \seq_set_from_clist:Nn \l_@@_tmp_seq
           { \tl_to_str:N \@filelist }
       }
     \seq_concat:NNN \l_@@_tmp_seq \l_@@_tmp_seq \g_@@_record_seq
@@ -3605,7 +3717,7 @@
   {
     \AtBeginDocument
       {
-        \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
+        \exp_args:NNe \seq_set_from_clist:Nn \l_@@_tmp_seq
           { \tl_to_str:N \@filelist }
         \seq_gconcat:NNN
           \g_@@_record_seq
@@ -3738,7 +3850,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_mismatched_dependency_error:nn #1 #2
   {
-    \exp_args:NNx \ior_shell_open:Nn \g_@@_internal_ior
+    \exp_args:NNe \ior_shell_open:Nn \g_@@_internal_ior
       {
         kpsewhich ~ --all ~
           --engine = \c_sys_engine_exec_str
@@ -3869,7 +3981,7 @@
 %    \begin{macrocode}
 \sys_if_engine_luatex:TF
   {
-    \str_const:Nx \c_sys_platform_str
+    \str_const:Ne \c_sys_platform_str
       { \tex_directlua:D { tex.print(os.type) } }
   }
   {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -243,7 +243,7 @@
   {
     \exp_args:Nc \__kernel_chk_defined:NT { flag~#2 }
       {
-        \exp_args:Nx #1
+        \exp_args:Ne #1
           { \tl_to_str:n { flag~#2~height } = \flag_height:n {#2} }
       }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 % \maketitle
 %
 % \begin{documentation}
@@ -80,11 +80,11 @@
 %   assignments.
 %    \begin{macrocode}
 \cs_new_protected:Npn \fp_set:Nn   #1#2
-  { \__kernel_tl_set:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } }
+  { \__kernel_tl_set:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } }
 \cs_new_protected:Npn \fp_gset:Nn  #1#2
-  { \__kernel_tl_gset:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } }
+  { \__kernel_tl_gset:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } }
 \cs_new_protected:Npn \fp_const:Nn #1#2
-  { \tl_const:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } }
+  { \tl_const:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } }
 \cs_generate_variant:Nn \fp_set:Nn {c}
 \cs_generate_variant:Nn \fp_gset:Nn {c}
 \cs_generate_variant:Nn \fp_const:Nn {c}
@@ -183,7 +183,7 @@
             \s_@@ \@@_chk:w ??? ; \s_@@_stop
           }
       }
-      { \exp_args:Nx #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
+      { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
   }
 \cs_new:Npn \@@_show_validate:w
     #1 \s_@@ \@@_chk:w #2#3#4#5 ; #6 \s_@@_stop

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -226,7 +226,7 @@
 %   stream and its contents reach \TeX{}'s stomach.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_misused:n #1
-  { \msg_error:nnx { fp } { misused } { \fp_to_tl:n {#1} } }
+  { \msg_error:nne { fp } { misused } { \fp_to_tl:n {#1} } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -338,7 +338,7 @@
 %   point numbers.  This replaces infinities when converting to formats
 %   that do not support infinities.
 %    \begin{macrocode}
-\tl_const:Nx \c_@@_overflowing_fp
+\tl_const:Ne \c_@@_overflowing_fp
   {
     \s_@@ \@@_chk:w 1 0
       { \int_eval:n { \c_@@_max_exponent_int + 1 } }
@@ -596,7 +596,7 @@
       \s_@@ { \@@_type_from_scan_other:N #1 }
       \s_@@_stop
   }
-\cs_new:Npx \@@_type_from_scan_other:N #1
+\cs_new:Npe \@@_type_from_scan_other:N #1
   {
     \exp_not:N \exp_after:wN \exp_not:N \@@_type_from_scan:w
     \exp_not:N \token_to_str:N #1 \s_@@_mark

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -129,7 +129,7 @@
 %   that \cs{@@_+_o:ww} can still perform the sanity check that it was
 %   followed by \cs{s_@@}.
 %    \begin{macrocode}
-\cs_new:cpx { @@_-_o:ww } \s_@@
+\cs_new:cpe { @@_-_o:ww } \s_@@
   {
     \exp_not:c { @@_+_o:ww }
     \exp_not:n { \s_@@ \@@_neg_sign:N }
@@ -1429,11 +1429,11 @@
   {
     + 5 * #1
     \exp_after:wN \@@_div_significand_vi:Nw
-    \int_value:w \@@_int_eval:w -20 + 2*#2#3 - #1*#6#7 +
+    \int_value:w \@@_int_eval:w -50 + 2*#2#3 - #1*#6#7 +
       \exp_after:wN \@@_div_significand_v:NN
-      \int_value:w \@@_int_eval:w 199980 + 2*#4 - #1*#8 +
+      \int_value:w \@@_int_eval:w 499950 + 2*#4 - #1*#8 +
         \exp_after:wN \@@_div_significand_v:NN
-        \int_value:w \@@_int_eval:w 200000 + 2*#5 - #1*#9 ;
+        \int_value:w \@@_int_eval:w 500000 + 2*#5 - #1*#9 ;
   }
 \cs_new:Npn \@@_div_significand_v:NN #1#2 { #1#2 \@@_int_eval_end: + }
 \cs_new:Npn \@@_div_significand_vi:Nw #1#2;

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -487,7 +487,7 @@
   {
     \int_gincr:N \g__kernel_prg_map_int
     \exp_args:NNc \@@_step:NNnnnn
-      \cs_gset_protected:Npx
+      \cs_gset_protected:Npe
       { @@_map_ \int_use:N \g__kernel_prg_map_int :w }
       {#1} {#2} {#3}
       {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -864,7 +864,7 @@
         \exp_after:wN \@@_parse_exponent:N
         \exp:w \@@_parse_expand:w
   }
-\cs_new:Npx \@@_parse_one_register_aux:Nw #1
+\cs_new:Npe \@@_parse_one_register_aux:Nw #1
   {
     \exp_not:n
       {
@@ -1937,7 +1937,7 @@
     \fi:
     \@@_parse_expand:w
   }
-\cs_new:Npx \@@_parse_lparen_after:NwN #1#2 @ #3
+\cs_new:Npe \@@_parse_lparen_after:NwN #1#2 @ #3
   {
     \exp_not:N \token_if_eq_meaning:NNTF #3
       \exp_not:c { @@_parse_infix_):N }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 % \maketitle
 %
 % \begin{documentation}
@@ -127,11 +127,11 @@
           { invalid_operation , division_by_zero , overflow , underflow }
           {#1}
           {
-            \msg_error:nnxx { fp }
+            \msg_error:nnee { fp }
               { unknown-fpu-trap-type } {#1} {#2}
           }
           {
-            \msg_error:nnx
+            \msg_error:nne
               { fp } { unknown-fpu-exception } {#1}
           }
       }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -91,13 +91,13 @@
     {cos} {cot} {csc} {sec} {sin} {tan}
   }
   {
-    \cs_new:cpx { @@_parse_word_#1:N }
+    \cs_new:cpe { @@_parse_word_#1:N }
       {
         \exp_not:N \@@_parse_unary_function:NNN
         \exp_not:c { @@_#1_o:w }
         \exp_not:N \use_i:nn
       }
-    \cs_new:cpx { @@_parse_word_#1d:N }
+    \cs_new:cpe { @@_parse_word_#1d:N }
       {
         \exp_not:N \@@_parse_unary_function:NNN
         \exp_not:c { @@_#1_o:w }
@@ -1201,7 +1201,7 @@
       { #1 { acot } { acotd } }
       { \@@_atan_default:w \@@_acotii_o:Nww #1 }
   }
-\cs_new:Npx \@@_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ }
+\cs_new:Npe \@@_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ }
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -250,7 +250,7 @@
 \cs_generate_variant:Nn \fparray_gset:Nnn { c }
 \cs_new_protected:Npn \@@_array_gset:NNNNww #1#2#3#4#5 ; #6 ;
   {
-    \@@_array_bounds:NNnTF \msg_error:nnxxx #4 {#5}
+    \@@_array_bounds:NNnTF \msg_error:nneee #4 {#5}
       {
         \exp_after:wN \@@_change_func_type:NNN
           \@@_use_i_until_s:nw #6 ;

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -1353,7 +1353,7 @@
 % \end{macro}
 %
 % \begin{macro}{\int_const:Nn, \int_const:cn}
-% \begin{macro}{\@@_const:nN}
+% \begin{macro}{\@@_const:nN, \@@_const:eN}
 % \begin{macro}{\@@_constdef:Nw}
 % \begin{variable}{\c_@@_max_constdef_int}
 % \UnitTested
@@ -1365,7 +1365,8 @@
 %   enabled) this runs some checks that constants would fail.
 %    \begin{macrocode}
 \cs_new_protected:Npn \int_const:Nn #1#2
-  { \exp_args:Nx \@@_const:nN { \int_eval:n {#2} } #1 }
+  { \@@_const:eN { \int_eval:n {#2} } #1 }
+\cs_generate_variant:Nn \int_const:Nn { c }
 \cs_new_protected:Npn \@@_const:nN #1#2
   {
     \int_compare:nNnTF {#1} < \c_zero_int
@@ -1386,7 +1387,7 @@
       }
     #2 = \@@_eval:w #1 \@@_eval_end:
   }
-\cs_generate_variant:Nn \int_const:Nn { c }
+\cs_generate_variant:Nn \@@_const:nN { e }
 \if_int_odd:w 0
   \cs_if_exist:NT \tex_luatexversion:D { 1 }
   \cs_if_exist:NT \tex_omathchardef:D  { 1 }
@@ -2003,7 +2004,7 @@
   {
     \int_gincr:N \g__kernel_prg_map_int
     \exp_args:NNc \@@_step:NNnnnn
-      \cs_gset_protected:Npx
+      \cs_gset_protected:Npe
       { @@_map_ \int_use:N \g__kernel_prg_map_int :w }
       {#1}{#2}{#3}
       {
@@ -2035,7 +2036,7 @@
 %
 % \begin{macro}{\int_to_symbols:nnn}
 % \UnitTested
-% \begin{macro}{\@@_to_symbols:nnnn}
+% \begin{macro}{\@@_to_symbols:nnnn, \@@_to_symbols:ennn}
 %   For conversion of integers to arbitrary symbols the method is in
 %   general as follows. The input number (|#1|) is compared to the total
 %   number of symbols available at each place (|#2|). If the input is larger
@@ -2050,7 +2051,7 @@
   {
     \int_compare:nNnTF {#1} > {#2}
       {
-        \exp_args:NNo \exp_args:No \@@_to_symbols:nnnn
+        \@@_to_symbols:ennn
           {
             \int_case:nn
               { 1 + \int_mod:nn { #1 - 1 } {#2} }
@@ -2066,6 +2067,7 @@
       { \int_div_truncate:nn { #2 - 1 } {#3} } {#3} {#4}
     #1
   }
+\cs_generate_variant:Nn \@@_to_symbols:nnnn { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -238,7 +238,7 @@
       {
         \__kernel_chk_if_free_cs:N #1
         \int_gincr:N \g_@@_table_int
-        \cs_gset_nopar:Npx #1 { \@@:w \int_use:N \g_@@_table_int \c_space_tl }
+        \cs_gset_nopar:Npe #1 { \@@:w \int_use:N \g_@@_table_int \c_space_tl }
       }
     \cs_new_protected:Npn \intarray_new:Nn #1#2
       {
@@ -246,7 +246,7 @@
         \@@_gset_count:Nw #1 \int_eval:n {#2} \scan_stop:
         \int_compare:nNnT { \intarray_count:N #1 } < 0
           {
-            \msg_error:nnx { kernel } { negative-array-size }
+            \msg_error:nne { kernel } { negative-array-size }
               { \intarray_count:N #1 }
           }
       }
@@ -387,7 +387,7 @@
       {
         \@@_gset:wF \int_eval:n {#2} #1 \int_eval:n{#3}
           {
-            \msg_error:nnxxx { kernel } { out-of-bounds }
+            \msg_error:nneee { kernel } { out-of-bounds }
               { \token_to_str:N #1 } { \int_use:N \l_@@_bad_index_int } { \intarray_count:N #1 }
           }
       }
@@ -640,7 +640,7 @@
         \@@_count:w #1 = \int_eval:n {#2} \scan_stop:
         \int_compare:nNnT { \intarray_count:N #1 } < 0
           {
-            \msg_error:nnx { kernel } { negative-array-size }
+            \msg_error:nne { kernel } { negative-array-size }
               { \intarray_count:N #1 }
           }
         \int_compare:nNnT { \intarray_count:N #1 } > 0
@@ -716,7 +716,7 @@
     \cs_generate_variant:Nn \intarray_gset:Nnn { c }
     \cs_new_protected:Npn \@@_gset:Nww #1#2 ; #3 ;
       {
-        \@@_bounds:NNnTF \msg_error:nnxxx #1 {#2}
+        \@@_bounds:NNnTF \msg_error:nneee #1 {#2}
           {
             \@@_gset_overflow_test:nw {#3}
             \__kernel_intarray_gset:Nnn #1 {#2} {#3}
@@ -742,7 +742,7 @@
       }
     \cs_new_protected:Npn \@@_gset_overflow:NNnn #1#2#3#4
       {
-        \msg_error:nnxxxx { kernel } { overflow }
+        \msg_error:nneeee { kernel } { overflow }
           { \token_to_str:N #2 } {#3} {#4} {  \@@_signed_max_dim:n {#4} }
         #1 #2 {#3} { \@@_signed_max_dim:n {#4} }
       }
@@ -915,9 +915,9 @@
 % \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:N, \intarray_log:c}
 %   Convert the list to a comma list (with spaces after each comma)
 %    \begin{macrocode}
-\cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \intarray_show:N { c }
-\cs_new_protected:Npn \intarray_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \intarray_log:N { \@@_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \intarray_log:N { c }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -491,9 +491,9 @@
 %   only a single expansion.
 % \end{function}
 %
-% \begin{function}{\__kernel_tl_set:Nx, \__kernel_tl_gset:Nx}
+% \begin{function}{\__kernel_tl_set:Ne, \__kernel_tl_gset:Ne}
 %   \begin{syntax}
-%     \cs{__kernel_tl_set:Nx} \meta{tl~var} \Arg{tokens}
+%     \cs{__kernel_tl_set:Ne} \meta{tl~var} \Arg{tokens}
 %   \end{syntax}
 %   Fully expands \meta{tokens} and assigns the result to \meta{tl~var}.
 %   \meta{tokens} must be given in braces and there must be no token between
@@ -545,7 +545,7 @@
 %  {
 %    \__kernel_backend_literal:n,
 %    \__kernel_backend_literal:e,
-%    \__kernel_backend_literal:x
+%    \__kernel_backend_literal:e
 %  }
 %   \begin{syntax}
 %     \cs{__kernel_backend_literal:n} \Arg{content}
@@ -558,7 +558,7 @@
 % \begin{function}
 %  {
 %    \__kernel_backend_literal_postscript:n,
-%    \__kernel_backend_literal_postscript:x
+%    \__kernel_backend_literal_postscript:e
 %  }
 %   \begin{syntax}
 %     \cs{__kernel_backend_literal_postscript:n} \Arg{PostScript}
@@ -570,7 +570,7 @@
 % \begin{function}
 %  {
 %    \__kernel_backend_literal_pdf:n,
-%    \__kernel_backend_literal_pdf:x
+%    \__kernel_backend_literal_pdf:e
 %  }
 %   \begin{syntax}
 %     \cs{__kernel_backend_literal_pdf:n} \Arg{PDF instructions}
@@ -582,7 +582,7 @@
 % \begin{function}
 %  {
 %    \__kernel_backend_literal_svg:n,
-%    \__kernel_backend_literal_svg:x
+%    \__kernel_backend_literal_svg:e
 %  }
 %   \begin{syntax}
 %     \cs{__kernel_backend_literal_svg:n} \Arg{SVG instructions}
@@ -594,7 +594,7 @@
 % \begin{function}
 %  {
 %    \__kernel_backend_postscript:n,
-%    \__kernel_backend_postscript:x
+%    \__kernel_backend_postscript:e
 %  }
 %   \begin{syntax}
 %     \cs{__kernel_backend_postscript:n} \Arg{PostScript}
@@ -626,7 +626,7 @@
 % \begin{function}
 %  {
 %    \__kernel_backend_matrix:n,
-%    \__kernel_backend_matrix:x
+%    \__kernel_backend_matrix:e
 %  }
 %   \begin{syntax}
 %     \cs{__kernel_backend_matrix:n} \Arg{matrix}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -124,7 +124,8 @@
 %
 % \section{Creating keys}
 %
-% \begin{function}[updated = 2017-11-14]{\keys_define:nn}
+% \begin{function}[updated = 2017-11-14]
+%   {\keys_define:nn, \keys_define:ne}
 %   \begin{syntax}
 %     \cs{keys_define:nn} \Arg{module} \Arg{keyval list}
 %   \end{syntax}
@@ -216,7 +217,7 @@
 % \end{function}
 %
 % \begin{function}[added = 2011-08-21, updated = 2013-07-10]
-%   {.choices:nn, .choices:Vn, .choices:on, .choices:xn}
+%   {.choices:nn, .choices:Vn, .choices:en, .choices:on}
 %   \begin{syntax}
 %     \meta{key} .choices:nn = \Arg{choices} \Arg{code}
 %   \end{syntax}
@@ -263,7 +264,7 @@
 % \end{function}
 %
 % \begin{function}[updated = 2013-07-09]
-%   {.default:n, .default:V, .default:o, .default:x}
+%   {.default:n, .default:V, .default:e, .default:o}
 %   \begin{syntax}
 %     \meta{key} .default:n = \Arg{default}
 %   \end{syntax}
@@ -355,7 +356,7 @@
 % \end{function}
 %
 % \begin{function}[updated = 2013-07-09]
-%   {.initial:n, .initial:V, .initial:o, .initial:x}
+%   {.initial:n, .initial:V, .initial:e, .initial:o}
 %   \begin{syntax}
 %     \meta{key} .initial:n = \Arg{value}
 %   \end{syntax}
@@ -424,7 +425,7 @@
 % \end{function}
 %
 % \begin{function}[added = 2011-08-21, updated = 2013-07-10]
-%   {.multichoices:nn, .multichoices:Vn, .multichoices:on, .multichoices:xn}
+%   {.multichoices:nn, .multichoices:Vn, .multichoices:en, .multichoices:on}
 %   \begin{syntax}
 %     \meta{key} .multichoices:nn \Arg{choices} \Arg{code}
 %   \end{syntax}
@@ -480,14 +481,14 @@
 %   at the point that the key is set up.
 % \end{function}
 %
-% \begin{function}[added = 2021-10-30]
-%   {.str_set_x:N, .str_set_x:c, .str_gset_x:N, .str_gset_x:c}
+% \begin{function}[added = 2023-09-18]
+%   {.str_set_e:N, .str_set_e:c, .str_gset_e:N, .str_gset_e:c}
 %   \begin{syntax}
-%     \meta{key} .str_set_x:N = \meta{string variable}
+%     \meta{key} .str_set_e:N = \meta{string variable}
 %   \end{syntax}
 %   Defines \meta{key} to set \meta{string variable} to \meta{value},
-%   which will be subjected to an \texttt{x}-type expansion
-%   (\emph{i.e.}~using \cs{str_set:Nx}). If the variable does not exist,
+%   which will be subjected to an \texttt{e}-type expansion
+%   (\emph{i.e.}~using \cs{str_set:Ne}). If the variable does not exist,
 %   it is created globally at the point that the key is set up.
 % \end{function}
 %
@@ -500,13 +501,14 @@
 %   at the point that the key is set up.
 % \end{function}
 %
-% \begin{function}{.tl_set_x:N, .tl_set_x:c, .tl_gset_x:N, .tl_gset_x:c}
+% \begin{function}[added = 2023-09-18]
+%   {.tl_set_e:N, .tl_set_e:c, .tl_gset_e:N, .tl_gset_e:c}
 %   \begin{syntax}
-%     \meta{key} .tl_set_x:N = \meta{token list variable}
+%     \meta{key} .tl_set_e:N = \meta{token list variable}
 %   \end{syntax}
 %   Defines \meta{key} to set \meta{token list variable} to \meta{value},
-%   which will be subjected to an \texttt{x}-type expansion
-%   (\emph{i.e.}~using \cs{tl_set:Nx}). If the variable does not exist,
+%   which will be subjected to an \texttt{e}-type expansion
+%   (\emph{i.e.}~using \cs{tl_set:Ne}). If the variable does not exist,
 %   it is created globally at the point that the key is set up.
 % \end{function}
 %
@@ -637,7 +639,7 @@
 %       key / choice-b .code:n = code-b,
 %       key / choice-c .code:n = code-c,
 %       key / unknown  .code:n =
-%         \msg_error:nnxxx { mymodule } { unknown-choice }
+%         \msg_error:nneee { mymodule } { unknown-choice }
 %           { key }                              % Name of choice key
 %           { choice-a , choice-b ,  choice-c }  % Valid choices
 %           { \exp_not:n {#1} }                  % Invalid choice given
@@ -724,7 +726,10 @@
 % \section{Setting keys}
 %
 % \begin{function}[updated = 2017-11-14]
-%   {\keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no, \keys_set:nx}
+%   {
+%     \keys_set:nn, \keys_set:nV, \keys_set:nv,  \keys_set:ne,
+%     \keys_set:no,
+%   }
 %   \begin{syntax}
 %     \cs{keys_set:nn} \Arg{module} \Arg{keyval list}
 %   \end{syntax}
@@ -782,11 +787,14 @@
 % \begin{function}[added = 2011-08-23, updated = 2019-01-29]
 %   {
 %     \keys_set_known:nn, \keys_set_known:nV,
-%     \keys_set_known:nv, \keys_set_known:no,
+%     \keys_set_known:nv, \keys_set_known:ne,
+%     \keys_set_known:no
 %     \keys_set_known:nnN, \keys_set_known:nVN,
-%     \keys_set_known:nvN, \keys_set_known:noN,
+%     \keys_set_known:nvN, \keys_set_known:neN,
+%     \keys_set_known:noN
 %     \keys_set_known:nnnN, \keys_set_known:nVnN,
-%     \keys_set_known:nvnN, \keys_set_known:nonN
+%     \keys_set_known:nvnN, \keys_set_known:nenN,
+%     \keys_set_known:nonN
 %   }
 %   \begin{syntax}
 %     \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list}
@@ -1730,7 +1738,7 @@
 %
 % \subsection{The key defining mechanism}
 %
-% \begin{macro}{\keys_define:nn}
+% \begin{macro}{\keys_define:nn, \keys_define:ne, \keys_define:nx}
 % \begin{macro}{\@@_define:nnn, \@@_define:onn}
 %   The public function for definitions is just a wrapper for the lower
 %   level mechanism, more or less. The outer function is designed to
@@ -1739,9 +1747,10 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \keys_define:nn
   { \@@_define:onn \l_@@_module_str }
+\cs_generate_variant:Nn \keys_define:nn { ne , nx }
 \cs_new_protected:Npn \@@_define:nnn #1#2#3
   {
-    \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} }
+    \str_set:Ne \l_@@_module_str { \@@_trim_spaces:n {#2} }
     \keyval_parse:NNn \@@_define:n \@@_define:nn {#3}
     \str_set:Nn \l_@@_module_str {#1}
   }
@@ -1776,7 +1785,7 @@
       {
         \str_if_empty:NF \l_@@_property_str
           {
-            \msg_error:nnxx { keys } { property-unknown }
+            \msg_error:nnee { keys } { property-unknown }
               \l_@@_property_str \l_keys_path_str
           }
       }
@@ -1798,12 +1807,12 @@
 %   and storing the text before and after it. Everything is turned into
 %   strings, so there is no problem using an \texttt{x}-type expansion. Since
 %   \cs{@@_trim_spaces:n} will turn its argument into a string anyway, this
-%   function uses \cs{cs_set_nopar:Npx} instead of \cs{tl_set:Nx} to gain some
+%   function uses \cs{cs_set_nopar:Npe} instead of \cs{tl_set:Ne} to gain some
 %   speed.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_property_find:n #1
   {
-    \cs_set_nopar:Npx \l_@@_property_str { \@@_trim_spaces:n { #1 } }
+    \cs_set_nopar:Npe \l_@@_property_str { \@@_trim_spaces:n { #1 } }
     \exp_after:wN \@@_property_find_auxi:w \l_@@_property_str
       \s_@@_nil \@@_property_find_auxii:w
       . \s_@@_nil \@@_property_find_err:w
@@ -1816,7 +1825,7 @@
     #1 \s_@@_mark #2 \s_@@_nil \@@_property_find_auxii:w . \s_@@_nil
     \@@_property_find_err:w
   {
-    \cs_set_nopar:Npx \l_keys_path_str
+    \cs_set_nopar:Npe \l_keys_path_str
       { \str_if_empty:NF \l_@@_module_str { \l_@@_module_str / } #1 }
     \@@_property_find_auxi:w #2 \s_@@_nil \@@_property_find_auxiii:w . \s_@@_nil
       \@@_property_find_auxiv:w
@@ -1823,7 +1832,7 @@
   }
 \cs_new_protected:Npn \@@_property_find_auxiii:w #1 \s_@@_mark
   {
-    \cs_set_nopar:Npx \l_keys_path_str { \l_keys_path_str . #1 }
+    \cs_set_nopar:Npe \l_keys_path_str { \l_keys_path_str . #1 }
     \@@_property_find_auxi:w
   }
 \cs_new_protected:Npn \@@_property_find_auxiv:w
@@ -1830,8 +1839,8 @@
     #1 \s_@@_nil \@@_property_find_auxiii:w
     \s_@@_mark \s_@@_nil \@@_property_find_auxiv:w
   {
-    \cs_set_nopar:Npx \l_@@_property_str { . #1 }
-    \cs_set_nopar:Npx \l_keys_path_str
+    \cs_set_nopar:Npe \l_@@_property_str { . #1 }
+    \cs_set_nopar:Npe \l_keys_path_str
       { \exp_after:wN \@@_trim_spaces:n \exp_after:wN { \l_keys_path_str } }
     \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
   }
@@ -1861,7 +1870,7 @@
           \l_@@_property_str \s_@@_stop
           { \use:c { \c_@@_props_root_str \l_@@_property_str } }
           {
-            \msg_error:nnxx { keys } { property-requires-value }
+            \msg_error:nnee { keys } { property-requires-value }
               \l_@@_property_str \l_keys_path_str
           }
       }
@@ -1896,13 +1905,13 @@
   {
     \bool_if_exist:NF #1 { \bool_new:N #1 }
     \@@_choice_make:
-    \@@_cmd_set:nx { \l_keys_path_str / true }
+    \@@_cmd_set:ne { \l_keys_path_str / true }
       { \exp_not:c { bool_ #2 set_ #3 :N } \exp_not:N #1 }
-    \@@_cmd_set:nx { \l_keys_path_str / false }
+    \@@_cmd_set:ne { \l_keys_path_str / false }
       { \exp_not:c { bool_ #2 set_ #4 :N } \exp_not:N #1 }
     \@@_cmd_set_direct:nn { \l_keys_path_str / unknown }
       {
-        \msg_error:nnx { keys } { boolean-values-only }
+        \msg_error:nne { keys } { boolean-values-only }
           \l_keys_path_str
       }
     \@@_default_set:n { true }
@@ -1932,7 +1941,7 @@
           { \c_@@_type_root_str \@@_parent:o \l_keys_path_str }
           { choice }
           {
-            \msg_error:nnxx { keys } { nested-choice-key }
+            \msg_error:nnee { keys } { nested-choice-key }
               \l_keys_path_tl { \@@_parent:o \l_keys_path_str }
           }
           { \@@_choice_make_aux:N #1 }
@@ -1946,7 +1955,7 @@
     \@@_cmd_set_direct:nn \l_keys_path_str { #1 {##1} }
     \@@_cmd_set_direct:nn { \l_keys_path_str / unknown }
       {
-        \msg_error:nnxx { keys } { choice-unknown }
+        \msg_error:nnee { keys } { choice-unknown }
           \l_keys_path_str {##1}
       }
   }
@@ -1971,7 +1980,7 @@
     \clist_map_inline:nn {#2}
       {
         \int_incr:N \l_keys_choice_int
-        \@@_cmd_set:nx
+        \@@_cmd_set:ne
           { \l_keys_path_str / \@@_trim_spaces:n {##1} }
           {
             \tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
@@ -1987,7 +1996,7 @@
 %
 % \begin{macro}
 %   {
-%     \@@_cmd_set:nn, \@@_cmd_set:nx, \@@_cmd_set:Vn, \@@_cmd_set:Vo,
+%     \@@_cmd_set:nn, \@@_cmd_set:Vn, \@@_cmd_set:ne, \@@_cmd_set:Vo,
 %     \@@_cmd_set_direct:nn
 %   }
 %   Setting the code for a key first logs if appropriate that we are
@@ -1995,7 +2004,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_cmd_set:nn #1#2
   {  \@@_cmd_set_direct:nn {#1} { \@@_precompile:n {#2} } }
-\cs_generate_variant:Nn \@@_cmd_set:nn { nx , Vn , Vo }
+\cs_generate_variant:Nn \@@_cmd_set:nn { ne , Vn , Vo }
 \cs_new_protected:Npn \@@_cmd_set_direct:nn #1#2
   { \cs_set_protected:cpn { \c_@@_code_root_str #1 } ##1 {#2} }
 %    \end{macrocode}
@@ -2008,7 +2017,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_cs_set:NNpn #1#2#3#
   {
-    \cs_set_protected:cpx { \c_@@_code_root_str \l_keys_path_str } ##1
+    \cs_set_protected:cpe { \c_@@_code_root_str \l_keys_path_str } ##1
       {
         \@@_precompile:n
           { #1 \exp_not:N #2 \exp_not:n {#3} {##1} }
@@ -2020,7 +2029,7 @@
 % \end{macro}
 %
 % \begin{macro}{\@@_default_set:n}
-%   Setting a default value is easy. These are stored using \cs{cs_set_nopar:cpx} as this
+%   Setting a default value is easy. These are stored using \cs{cs_set_nopar:cpe} as this
 %   avoids any worries about whether a token list exists.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_default_set:n #1
@@ -2032,7 +2041,7 @@
           \tex_undefined:D
       }
       {
-        \cs_set_nopar:cpx
+        \cs_set_nopar:cpe
           { \c_@@_default_root_str \l_keys_path_str }
           { \exp_not:n {#1} }
         \@@_value_requirement:nn { required } { false }
@@ -2114,13 +2123,13 @@
 \cs_new_protected:Npn \@@_legacy_if_set:nnnn #1#2#3#4
   {
     \@@_choice_make:
-    \@@_cmd_set:nx { \l_keys_path_str / true }
+    \@@_cmd_set:ne { \l_keys_path_str / true }
       { \exp_not:c { legacy_if_#2  set_ #3 :n } { \exp_not:n {#1} } }
-    \@@_cmd_set:nx { \l_keys_path_str / false }
+    \@@_cmd_set:ne { \l_keys_path_str / false }
       { \exp_not:c { legacy_if_#2  set_ #4 :n } { \exp_not:n {#1} } }
     \@@_cmd_set:nn { \l_keys_path_str / unknown }
       {
-        \msg_error:nnx { keys } { boolean-values-only }
+        \msg_error:nne { keys } { boolean-values-only }
           \l_keys_path_str
       }
     \@@_default_set:n { true }
@@ -2165,7 +2174,7 @@
     \prop_if_exist:NF #1 { \prop_new:N #1 }
     \exp_after:wN \@@_find_key_module:wNN \l_keys_path_str \s_@@_stop
       \l_@@_tmpa_tl \l_@@_tmpb_tl
-    \@@_cmd_set:nx \l_keys_path_str
+    \@@_cmd_set:ne \l_keys_path_str
       {
         \exp_not:c { prop_ #2 put:Nnn }
         \exp_not:N #1
@@ -2225,7 +2234,7 @@
           }
       }
       {
-        \msg_error:nnx { keys }
+        \msg_error:nne { keys }
           { boolean-values-only }
           { .value_ #1 :n }
       }
@@ -2234,7 +2243,7 @@
   {
     \bool_if:NF \l_@@_no_value_bool
       {
-        \msg_error:nnxx { keys } { value-forbidden }
+        \msg_error:nnee { keys } { value-forbidden }
           \l_keys_path_str \l_keys_value_tl
         \use_none:nnn
       }
@@ -2243,7 +2252,7 @@
   {
     \bool_if:NT \l_@@_no_value_bool
       {
-        \msg_error:nnx { keys } { value-required }
+        \msg_error:nne { keys } { value-required }
           \l_keys_path_str
         \use_none:nnn
       }
@@ -2294,7 +2303,7 @@
   {
     \prop_get:NVNF #1 \l_@@_module_str \l_@@_tmpa_tl
       { \tl_clear:N \l_@@_tmpa_tl }
-    \tl_set:Nx \l_@@_tmpb_tl
+    \tl_set:Ne \l_@@_tmpb_tl
       { \exp_after:wN \@@_usage:w \l_keys_path_str \s_@@_stop }
     \bool_if:NTF #2
       { \clist_put_right:NV \l_@@_tmpa_tl \l_@@_tmpb_tl }
@@ -2316,7 +2325,7 @@
 \cs_new_protected:Npn \@@_variable_set:NnnN #1#2#3#4
   {
     \use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 }
-    \@@_cmd_set:nx \l_keys_path_str
+    \@@_cmd_set:ne \l_keys_path_str
       {
         \exp_not:c { #2 _ #3 set:N #4 }
         \exp_not:N #1
@@ -2386,8 +2395,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}
-%   {.choices:nn, .choices:Vn, .choices:on, .choices:xn}
+% \begin{macro}{.choices:nn, .choices:Vn, .choices:en, .choices:on, .choices:xn}
 %   For auto-generation of a series of mutually-exclusive choices.
 %   Here, |#1| consists of two separate
 %   arguments, hence the slightly odd-looking implementation.
@@ -2396,6 +2404,8 @@
   { \@@_choices_make:nn #1 }
 \cs_new_protected:cpn { \c_@@_props_root_str .choices:Vn } #1
   { \exp_args:NV \@@_choices_make:nn #1 }
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:en } #1
+  { \exp_args:Ne \@@_choices_make:nn #1 }
 \cs_new_protected:cpn { \c_@@_props_root_str .choices:on } #1
   { \exp_args:No \@@_choices_make:nn #1 }
 \cs_new_protected:cpn { \c_@@_props_root_str .choices:xn } #1
@@ -2452,7 +2462,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{.default:n, .default:V, .default:o, .default:x}
+% \begin{macro}{.default:n, .default:V, .default:e, .default:o, .default:x}
 %   Expansion is left to the internal functions.
 %    \begin{macrocode}
 \cs_new_protected:cpn { \c_@@_props_root_str .default:n } #1
@@ -2459,6 +2469,8 @@
   { \@@_default_set:n {#1} }
 \cs_new_protected:cpn { \c_@@_props_root_str .default:V } #1
   { \exp_args:NV \@@_default_set:n #1 }
+\cs_new_protected:cpn { \c_@@_props_root_str .default:e } #1
+  { \exp_args:Ne \@@_default_set:n {#1} }
 \cs_new_protected:cpn { \c_@@_props_root_str .default:o } #1
   { \exp_args:No \@@_default_set:n {#1} }
 \cs_new_protected:cpn { \c_@@_props_root_str .default:x } #1
@@ -2514,7 +2526,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{.initial:n, .initial:V, .initial:o, .initial:x}
+% \begin{macro}{.initial:n, .initial:V, .initial:e, .initial:o, .initial:x}
 %   The standard hand-off approach.
 %    \begin{macrocode}
 \cs_new_protected:cpn { \c_@@_props_root_str .initial:n } #1
@@ -2521,6 +2533,8 @@
   { \@@_initialise:n {#1} }
 \cs_new_protected:cpn { \c_@@_props_root_str .initial:V } #1
   { \exp_args:NV \@@_initialise:n #1 }
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:e } #1
+  { \exp_args:Ne \@@_initialise:n {#1} }
 \cs_new_protected:cpn { \c_@@_props_root_str .initial:o } #1
   { \exp_args:No \@@_initialise:n {#1} }
 \cs_new_protected:cpn { \c_@@_props_root_str .initial:x } #1
@@ -2579,11 +2593,7 @@
 % \end{macro}
 %
 % \begin{macro}{.multichoice:}
-% \begin{macro}
-%   {
-%     .multichoices:nn, .multichoices:Vn, .multichoices:on,
-%       .multichoices:xn,
-%   }
+% \begin{macro}{.multichoices:nn, .multichoices:Vn, .multichoices:en, .multichoices:on, .multichoices:xn}
 %   The same idea as \texttt{.choice:} and \texttt{.choices:nn}, but
 %   where more than one choice is allowed.
 %    \begin{macrocode}
@@ -2593,6 +2603,8 @@
   { \@@_multichoices_make:nn #1 }
 \cs_new_protected:cpn { \c_@@_props_root_str .multichoices:Vn } #1
   { \exp_args:NV \@@_multichoices_make:nn #1 }
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:en } #1
+  { \exp_args:Ne \@@_multichoices_make:nn #1 }
 \cs_new_protected:cpn { \c_@@_props_root_str .multichoices:on } #1
   { \exp_args:No \@@_multichoices_make:nn #1 }
 \cs_new_protected:cpn { \c_@@_props_root_str .multichoices:xn } #1
@@ -2647,8 +2659,8 @@
 %
 % \begin{macro}{.str_set:N, .str_set:c}
 % \begin{macro}{.str_gset:N, .str_gset:c}
-% \begin{macro}{.str_set_x:N, .str_set_x:c}
-% \begin{macro}{.str_gset_x:N, .str_gset_x:c}
+% \begin{macro}{.str_set_e:N, .str_set_e:c}
+% \begin{macro}{.str_gset_e:N, .str_gset_e:c}
 %   Setting a variable is very easy: just pass the data along.
 %    \begin{macrocode}
 \cs_new_protected:cpn { \c_@@_props_root_str .str_set:N } #1
@@ -2655,18 +2667,18 @@
   { \@@_variable_set:NnnN #1 { str } { } n }
 \cs_new_protected:cpn { \c_@@_props_root_str .str_set:c } #1
   { \@@_variable_set:cnnN {#1} { str } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:N } #1
-  { \@@_variable_set:NnnN #1 { str } { } x }
-\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:c } #1
-  { \@@_variable_set:cnnN {#1} { str } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_set_e:N } #1
+  { \@@_variable_set:NnnN #1 { str } { } e }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_set_e:c } #1
+  { \@@_variable_set:cnnN {#1} { str } { } e }
 \cs_new_protected:cpn { \c_@@_props_root_str .str_gset:N } #1
   { \@@_variable_set:NnnN #1 { str } { g } n }
 \cs_new_protected:cpn { \c_@@_props_root_str .str_gset:c } #1
   { \@@_variable_set:cnnN {#1} { str } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:N } #1
-  { \@@_variable_set:NnnN #1 { str } { g } x }
-\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:c } #1
-  { \@@_variable_set:cnnN {#1} { str } { g } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_e:N } #1
+  { \@@_variable_set:NnnN #1 { str } { g } e }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_e:c } #1
+  { \@@_variable_set:cnnN {#1} { str } { g } e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2675,8 +2687,8 @@
 %
 % \begin{macro}{.tl_set:N, .tl_set:c}
 % \begin{macro}{.tl_gset:N, .tl_gset:c}
-% \begin{macro}{.tl_set_x:N, .tl_set_x:c}
-% \begin{macro}{.tl_gset_x:N, .tl_gset_x:c}
+% \begin{macro}{.tl_set_e:N, .tl_set_e:c}
+% \begin{macro}{.tl_gset_e:N, .tl_gset_e:c}
 %   Setting a variable is very easy: just pass the data along.
 %    \begin{macrocode}
 \cs_new_protected:cpn { \c_@@_props_root_str .tl_set:N } #1
@@ -2683,18 +2695,18 @@
   { \@@_variable_set:NnnN #1 { tl } { } n }
 \cs_new_protected:cpn { \c_@@_props_root_str .tl_set:c } #1
   { \@@_variable_set:cnnN {#1} { tl } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:N } #1
-  { \@@_variable_set:NnnN #1 { tl } { } x }
-\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:c } #1
-  { \@@_variable_set:cnnN {#1} { tl } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_e:N } #1
+  { \@@_variable_set:NnnN #1 { tl } { } e }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_e:c } #1
+  { \@@_variable_set:cnnN {#1} { tl } { } e }
 \cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:N } #1
   { \@@_variable_set:NnnN #1 { tl } { g } n }
 \cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:c } #1
   { \@@_variable_set:cnnN {#1} { tl } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:N } #1
-  { \@@_variable_set:NnnN #1 { tl } { g } x }
-\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:c } #1
-  { \@@_variable_set:cnnN {#1} { tl } { g } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_e:N } #1
+  { \@@_variable_set:NnnN #1 { tl } { g } e }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_e:c } #1
+  { \@@_variable_set:cnnN {#1} { tl } { g } e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2732,7 +2744,8 @@
 %
 % \begin{macro}
 %   {
-%     \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no, \keys_set:nx,
+%     \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:ne,
+%     \keys_set:no, \keys_set:nx,
 %     \@@_set:nn
 %   }
 % \begin{macro}{\@@_set:nnn}
@@ -2740,7 +2753,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \keys_set:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \bool_set_false:N \exp_not:N \l_@@_only_known_bool
         \bool_set_false:N \exp_not:N \l_@@_filtered_bool
@@ -2758,12 +2771,12 @@
           { \exp_not:o \l_@@_relative_tl }
       }
   }
-\cs_generate_variant:Nn \keys_set:nn { nV , nv , no , nx }
+\cs_generate_variant:Nn \keys_set:nn { nV , nv , ne , no , nx }
 \cs_new_protected:Npn \@@_set:nn #1#2
   { \exp_args:No \@@_set:nnn \l_@@_module_str {#1} {#2} }
 \cs_new_protected:Npn \@@_set:nnn #1#2#3
   {
-    \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} }
+    \str_set:Ne \l_@@_module_str { \@@_trim_spaces:n {#2} }
     \keyval_parse:NNn \@@_set_keyval:n \@@_set_keyval:nn {#3}
     \str_set:Nn \l_@@_module_str {#1}
   }
@@ -2774,18 +2787,21 @@
 % \begin{macro}
 %   {
 %     \keys_set_known:nnN, \keys_set_known:nVN,
-%     \keys_set_known:nvN, \keys_set_known:noN
+%     \keys_set_known:nvN, \keys_set_known:neN,
+%     \keys_set_known:noN
 %   }
 % \begin{macro}
 %   {
 %     \keys_set_known:nnnN, \keys_set_known:nVnN,
-%     \keys_set_known:nvnN, \keys_set_known:nonN
+%     \keys_set_known:nvnN, \keys_set_known:nenN,
+%     \keys_set_known:nonN
 %   }
 % \begin{macro}{\@@_set_known:nnnnN}
 % \begin{macro}
 %   {
 %     \keys_set_known:nn, \keys_set_known:nV,
-%     \keys_set_known:nv, \keys_set_known:no
+%     \keys_set_known:nv, \keys_set_known:ne,
+%     \keys_set_known:no
 %   }
 %  \begin{macro}{\@@_set_known:nnn}
 %   Setting known keys simply means setting the appropriate flag, then
@@ -2799,26 +2815,26 @@
     \exp_args:No \@@_set_known:nnnnN
       \l_@@_unused_clist \q_@@_no_value {#1} {#2} #3
   }
-\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no }
+\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , ne , no }
 \cs_new_protected:Npn \keys_set_known:nnnN #1#2#3#4
   {
     \exp_args:No \@@_set_known:nnnnN
       \l_@@_unused_clist {#3} {#1} {#2} #4
   }
-\cs_generate_variant:Nn \keys_set_known:nnnN { nV , nv , no }
+\cs_generate_variant:Nn \keys_set_known:nnnN { nV , nv , ne , no }
 \cs_new_protected:Npn \@@_set_known:nnnnN #1#2#3#4#5
   {
     \clist_clear:N \l_@@_unused_clist
     \@@_set_known:nnn {#2} {#3} {#4}
-    \__kernel_tl_set:Nx #5 { \exp_not:o \l_@@_unused_clist }
+    \__kernel_tl_set:Ne #5 { \exp_not:o \l_@@_unused_clist }
     \tl_set:Nn \l_@@_unused_clist {#1}
   }
 \cs_new_protected:Npn \keys_set_known:nn #1#2
   { \@@_set_known:nnn \q_@@_no_value {#1} {#2} }
-\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no }
+\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , ne , no }
 \cs_new_protected:Npn \@@_set_known:nnn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \bool_set_true:N \exp_not:N \l_@@_only_known_bool
         \bool_set_false:N \exp_not:N \l_@@_filtered_bool
@@ -2888,7 +2904,7 @@
   {
     \clist_clear:N \l_@@_unused_clist
     \@@_set_filter:nnnn {#2} {#3} {#4} {#5}
-    \__kernel_tl_set:Nx #6 { \exp_not:o \l_@@_unused_clist }
+    \__kernel_tl_set:Ne #6 { \exp_not:o \l_@@_unused_clist }
     \tl_set:Nn \l_@@_unused_clist {#1}
   }
 \cs_new_protected:Npn \keys_set_filter:nnn #1#2#3
@@ -2896,7 +2912,7 @@
 \cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno }
 \cs_new_protected:Npn \@@_set_filter:nnnn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \bool_set_false:N \exp_not:N \l_@@_only_known_bool
         \bool_set_true:N \exp_not:N \l_@@_filtered_bool
@@ -2915,7 +2931,7 @@
   }
 \cs_new_protected:Npn \keys_set_groups:nnn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \bool_set_false:N \exp_not:N \l_@@_only_known_bool
         \bool_set_false:N \exp_not:N \l_@@_filtered_bool
@@ -3001,7 +3017,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_set_keyval:nnn #1#2#3
   {
-    \__kernel_tl_set:Nx \l_keys_path_str
+    \__kernel_tl_set:Ne \l_keys_path_str
       {
         \tl_if_blank:nF {#1}
           { #1 / }
@@ -3020,7 +3036,7 @@
   }
 \cs_generate_variant:Nn \@@_set_keyval:nnn { o }
 %    \end{macrocode}
-%   This function uses \cs{cs_set_nopar:Npx} internally for performance reasons,
+%   This function uses \cs{cs_set_nopar:Npe} internally for performance reasons,
 %   the argument |#1| is already a string in every usage, so turning it into a
 %   string again seems unnecessary.
 %    \begin{macrocode}
@@ -3036,12 +3052,12 @@
 \cs_new_protected:Npn \@@_find_key_module_auxii:Nw
     #1 #2 \s_@@_mark #3 \s_@@_nil \@@_find_key_module_auxii:Nw
   {
-    \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+    \cs_set_nopar:Npe #1 { \tl_if_empty:NF #1 { #1 / } #2 }
     \@@_find_key_module_auxi:Nw #1 #3 \s_@@_nil \@@_find_key_module_auxiii:Nw
   }
 \cs_new_protected:Npn \@@_find_key_module_auxiii:Nw #1 #2 \s_@@_mark
   {
-    \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+    \cs_set_nopar:Npe #1 { \tl_if_empty:NF #1 { #1 / } #2 }
     \@@_find_key_module_auxi:Nw #1
   }
 \cs_new_protected:Npn \@@_find_key_module_auxiv:Nw
@@ -3209,7 +3225,7 @@
           { \c_@@_code_root_str \l_@@_module_str / unknown }
           { \@@_execute:no { \l_@@_module_str / unknown } \l_keys_value_tl }
           {
-            \msg_error:nnxx { keys } { unknown }
+            \msg_error:nnee { keys } { unknown }
               \l_keys_path_str \l_@@_module_str
           }
       }
@@ -3248,7 +3264,7 @@
   {
     \@@_quark_if_no_value:NTF \l_@@_relative_tl
       {
-        \clist_put_right:Nx \l_@@_unused_clist
+        \clist_put_right:Ne \l_@@_unused_clist
           {
             \l_keys_key_str
             \bool_if:NF \l_@@_no_value_bool
@@ -3258,7 +3274,7 @@
       {
         \tl_if_empty:NTF \l_@@_relative_tl
           {
-            \clist_put_right:Nx \l_@@_unused_clist
+            \clist_put_right:Ne \l_@@_unused_clist
               {
                 \l_keys_path_str
                 \bool_if:NF \l_@@_no_value_bool
@@ -3270,23 +3286,23 @@
   }
 \cs_new_protected:Npn \@@_store_unused_aux:
   {
-    \__kernel_tl_set:Nx \l_@@_relative_tl
+    \__kernel_tl_set:Ne \l_@@_relative_tl
       { \exp_args:No \@@_trim_spaces:n \l_@@_relative_tl }
-    \use:x
+    \use:e
       {
         \cs_set_protected:Npn \@@_store_unused:w
-          ####1 \l_@@_relative_tl /
-          ####2 \l_@@_relative_tl /
-          ####3 \s_@@_stop
+          ##1 \l_@@_relative_tl /
+          ##2 \l_@@_relative_tl /
+          ##3 \s_@@_stop
       }
         {
           \tl_if_blank:nF {##1}
             {
-              \msg_error:nnxx { keys } { bad-relative-key-path }
+              \msg_error:nnee { keys } { bad-relative-key-path }
                 \l_keys_path_str
                 \l_@@_relative_tl
             }
-          \clist_put_right:Nx \l_@@_unused_clist
+          \clist_put_right:Ne \l_@@_unused_clist
             {
               \exp_not:n {##2}
               \bool_if:NF \l_@@_no_value_bool
@@ -3293,7 +3309,7 @@
                 { = { \exp_not:o \l_keys_value_tl } }
             }
         }
-    \use:x
+    \use:e
       {
         \@@_store_unused:w \l_keys_path_str
           \l_@@_relative_tl / \l_@@_relative_tl /
@@ -3458,9 +3474,9 @@
 %   To show a key, show its code using a message.
 %    \begin{macrocode}
 \cs_new_protected:Npn \keys_show:nn
-  { \@@_show:Nnn \msg_show:nnxxxx }
+  { \@@_show:Nnn \msg_show:nneeee }
 \cs_new_protected:Npn \keys_log:nn
-  { \@@_show:Nnn \msg_log:nnxxxx }
+  { \@@_show:Nnn \msg_log:nneeee }
 \cs_new_protected:Npn \@@_show:Nnn #1#2#3
   {
     #1 { keys } { show-key }
@@ -3483,7 +3499,7 @@
       }
       { } { }
   }
-\cs_new:Npx \@@_show:n #1
+\cs_new:Npe \@@_show:n #1
   {
     \exp_not:N \@@_show:w
       #1
@@ -3492,12 +3508,12 @@
       \tl_to_str:n { \@@_precompile:n }
       \exp_not:N \s_@@_stop
   }
-\use:x
+\use:e
   {
     \cs_new:Npn \exp_not:N \@@_show:w
-      ##1 \tl_to_str:n { \@@_precompile:n }
-      ##2 \tl_to_str:n { \@@_precompile:n }
-      ##3 \exp_not:N \s_@@_stop
+      #1 \tl_to_str:n { \@@_precompile:n }
+      #2 \tl_to_str:n { \@@_precompile:n }
+      #3 \exp_not:N \s_@@_stop
   }
   {
     \tl_if_blank:nTF {#2}
@@ -3504,9 +3520,9 @@
       {#1}
       { \@@_show:Nw #2 \s_@@_stop }
   }
-\use:x
+\use:e
   {
-    \cs_new:Npn \exp_not:N \@@_show:Nw ##1##2
+    \cs_new:Npn \exp_not:N \@@_show:Nw #1#2
       \c_right_brace_str \exp_not:N \s_@@_stop
   }
   {#2}
@@ -3568,7 +3584,39 @@
 \prop_gput:Nnn \g_msg_module_type_prop { keys } { }
 %    \end{macrocode}
 %
+% \subsection{Deprecated functions}
+%
+% \begin{macro}{.str_set_x:N, .str_set_x:c}
+% \begin{macro}{.str_gset_x:N, .str_gset_x:c}
 %    \begin{macrocode}
+\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:N } #1
+  { \@@_variable_set:NnnN #1 { str } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:c } #1
+  { \@@_variable_set:cnnN {#1} { str } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:N } #1
+  { \@@_variable_set:NnnN #1 { str } { g } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:c } #1
+  { \@@_variable_set:cnnN {#1} { str } { g } x }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{.tl_set_x:N, .tl_set_x:c}
+% \begin{macro}{.tl_gset_x:N, .tl_gset_x:c}
+%    \begin{macrocode}
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:N } #1
+  { \@@_variable_set:NnnN #1 { tl } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:c } #1
+  { \@@_variable_set:cnnN {#1} { tl } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:N } #1
+  { \@@_variable_set:NnnN #1 { tl } { g } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:c } #1
+  { \@@_variable_set:cnnN {#1} { tl } { g } x }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%    \begin{macrocode}
 %</package>
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -105,8 +105,8 @@
 %
 % \begin{function}[updated = 2011-08-16]
 %   {
-%     \msg_new:nnnn, \msg_new:nnxx,
-%     \msg_new:nnn, \msg_new:nnx
+%     \msg_new:nnnn, \msg_new:nnee,
+%     \msg_new:nnn,  \msg_new:nne
 %   }
 %   \begin{syntax}
 %     \cs{msg_new:nnnn} \Arg{module} \Arg{message} \Arg{text} \Arg{more text}
@@ -320,12 +320,12 @@
 %     \msg_fatal:nnVn   ,
 %     \msg_fatal:nnnV   ,
 %     \msg_fatal:nnV    ,
-%     \msg_fatal:nnxxxx ,
-%     \msg_fatal:nnxxx  ,
-%     \msg_fatal:nnnxx  ,
-%     \msg_fatal:nnxx   ,
-%     \msg_fatal:nnnx   ,
-%     \msg_fatal:nnx
+%     \msg_fatal:nneeee ,
+%     \msg_fatal:nneee  ,
+%     \msg_fatal:nnnee  ,
+%     \msg_fatal:nnee   ,
+%     \msg_fatal:nnne   ,
+%     \msg_fatal:nne
 %   }
 %   \begin{syntax}
 %     \cs{msg_fatal:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -347,12 +347,12 @@
 %     \msg_critical:nnVn   ,
 %     \msg_critical:nnnV   ,
 %     \msg_critical:nnV    ,
-%     \msg_critical:nnxxxx ,
-%     \msg_critical:nnxxx  ,
-%     \msg_critical:nnnxx  ,
-%     \msg_critical:nnxx   ,
-%     \msg_critical:nnnx   ,
-%     \msg_critical:nnx
+%     \msg_critical:nneeee ,
+%     \msg_critical:nneee  ,
+%     \msg_critical:nnnee  ,
+%     \msg_critical:nnee   ,
+%     \msg_critical:nnne   ,
+%     \msg_critical:nne
 %   }
 %   \begin{syntax}
 %     \cs{msg_critical:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -380,12 +380,12 @@
 %     \msg_error:nnVn   ,
 %     \msg_error:nnnV   ,
 %     \msg_error:nnV    ,
-%     \msg_error:nnxxxx ,
-%     \msg_error:nnxxx  ,
-%     \msg_error:nnnxx  ,
-%     \msg_error:nnxx   ,
-%     \msg_error:nnnx   ,
-%     \msg_error:nnx
+%     \msg_error:nneeee ,
+%     \msg_error:nneee  ,
+%     \msg_error:nnnee  ,
+%     \msg_error:nnee   ,
+%     \msg_error:nnne   ,
+%     \msg_error:nne
 %   }
 %   \begin{syntax}
 %     \cs{msg_error:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -402,21 +402,20 @@
 %     \msg_warning:nnnnn  ,
 %     \msg_warning:nnnn   ,
 %     \msg_warning:nnn    ,
-%     \msg_warning:nnn    ,
 %     \msg_warning:nn     ,
 %     \msg_warning:nnVV   ,
 %     \msg_warning:nnVn   ,
 %     \msg_warning:nnnV   ,
 %     \msg_warning:nnV    ,
-%     \msg_warning:nnxxxx ,
-%     \msg_warning:nnxxx  ,
-%     \msg_warning:nnnxx  ,
-%     \msg_warning:nnxx   ,
-%     \msg_warning:nnnx   ,
-%     \msg_warning:nnx
+%     \msg_warning:nneeee ,
+%     \msg_warning:nneee  ,
+%     \msg_warning:nnnee  ,
+%     \msg_warning:nnee   ,
+%     \msg_warning:nnne   ,
+%     \msg_warning:nne
 %   }
 %   \begin{syntax}
-%     \cs{msg_warning:nnxxxx} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
+%     \cs{msg_warning:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
 %   \end{syntax}
 %   Issues \meta{module} warning \meta{message}, passing \meta{arg one}
 %   to \meta{arg four} to the text-creating functions. The warning text
@@ -435,12 +434,12 @@
 %     \msg_note:nnVn   ,
 %     \msg_note:nnnV   ,
 %     \msg_note:nnV    ,
-%     \msg_note:nnxxxx ,
-%     \msg_note:nnxxx  ,
-%     \msg_note:nnnxx  ,
-%     \msg_note:nnxx   ,
-%     \msg_note:nnnx   ,
-%     \msg_note:nnx    ,
+%     \msg_note:nneeee ,
+%     \msg_note:nneee  ,
+%     \msg_note:nnnee  ,
+%     \msg_note:nnee   ,
+%     \msg_note:nnne   ,
+%     \msg_note:nne    ,
 %     \msg_info:nnnnnn ,
 %     \msg_info:nnnnn  ,
 %     \msg_info:nnnn   ,
@@ -450,12 +449,12 @@
 %     \msg_info:nnVn   ,
 %     \msg_info:nnnV   ,
 %     \msg_info:nnV    ,
-%     \msg_info:nnxxxx ,
-%     \msg_info:nnxxx  ,
-%     \msg_info:nnnxx  ,
-%     \msg_info:nnxx   ,
-%     \msg_info:nnnx   ,
-%     \msg_info:nnx
+%     \msg_info:nneeee ,
+%     \msg_info:nneee  ,
+%     \msg_info:nnnee  ,
+%     \msg_info:nnee   ,
+%     \msg_info:nnne   ,
+%     \msg_info:nne
 %   }
 %   \begin{syntax}
 %     \cs{msg_note:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -480,12 +479,12 @@
 %     \msg_term:nnVn   ,
 %     \msg_term:nnnV   ,
 %     \msg_term:nnV    ,
-%     \msg_term:nnxxxx ,
-%     \msg_term:nnxxx  ,
-%     \msg_term:nnnxx  ,
-%     \msg_term:nnxx   ,
-%     \msg_term:nnnx   ,
-%     \msg_term:nnx    ,
+%     \msg_term:nneeee ,
+%     \msg_term:nneee  ,
+%     \msg_term:nnnee  ,
+%     \msg_term:nnee   ,
+%     \msg_term:nnne   ,
+%     \msg_term:nne    ,
 %     \msg_log:nnnnnn ,
 %     \msg_log:nnnnn  ,
 %     \msg_log:nnnn   ,
@@ -495,12 +494,12 @@
 %     \msg_log:nnVn   ,
 %     \msg_log:nnnV   ,
 %     \msg_log:nnV    ,
-%     \msg_log:nnxxxx ,
-%     \msg_log:nnxxx  ,
-%     \msg_log:nnnxx  ,
-%     \msg_log:nnxx   ,
-%     \msg_log:nnnx   ,
-%     \msg_log:nnx
+%     \msg_log:nneeee ,
+%     \msg_log:nneee  ,
+%     \msg_log:nnnee  ,
+%     \msg_log:nnee   ,
+%     \msg_log:nnne   ,
+%     \msg_log:nne
 %   }
 %   \begin{syntax}
 %     \cs{msg_term:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -525,12 +524,12 @@
 %     \msg_none:nnVn   ,
 %     \msg_none:nnnV   ,
 %     \msg_none:nnV    ,
-%     \msg_none:nnxxxx ,
-%     \msg_none:nnxxx  ,
-%     \msg_none:nnnxx  ,
-%     \msg_none:nnxx   ,
-%     \msg_none:nnnx   ,
-%     \msg_none:nnx
+%     \msg_none:nneeee ,
+%     \msg_none:nneee  ,
+%     \msg_none:nnnee  ,
+%     \msg_none:nnee   ,
+%     \msg_none:nnne   ,
+%     \msg_none:nne
 %   }
 %   \begin{syntax}
 %     \cs{msg_none:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -552,12 +551,12 @@
 %     \msg_show:nnVn   ,
 %     \msg_show:nnnV   ,
 %     \msg_show:nnV    ,
-%     \msg_show:nnxxxx ,
-%     \msg_show:nnxxx  ,
-%     \msg_show:nnnxx  ,
-%     \msg_show:nnxx   ,
-%     \msg_show:nnnx   ,
-%     \msg_show:nnx
+%     \msg_show:nneeee ,
+%     \msg_show:nneee  ,
+%     \msg_show:nnnee  ,
+%     \msg_show:nnee   ,
+%     \msg_show:nnne   ,
+%     \msg_show:nne
 %   }
 %   \begin{syntax}
 %     \cs{msg_show:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -579,7 +578,7 @@
 %     \cs{seq_map_function:NN} \meta{seq} \cs{msg_show_item:n}
 %     \cs{prop_map_function:NN} \meta{prop} \cs{msg_show_item:nn}
 %   \end{syntax}
-%   Used in the text of messages for \cs{msg_show:nnxxxx} to show or log
+%   Used in the text of messages for \cs{msg_show:nnnnnn} to show or log
 %   a list of items or key--value pairs.  The output of
 %   \cs{msg_show_item:n} produces a newline, the prefix |>|, two spaces,
 %   then the braced string representation of its argument.
@@ -798,7 +797,7 @@
   {
     \msg_if_exist:nnT {#1} {#2}
       {
-        \msg_error:nnxx { msg } { already-defined }
+        \msg_error:nnnn { msg } { already-defined }
           {#1} {#2}
       }
   }
@@ -805,7 +804,11 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\msg_new:nnnn, \msg_new:nnxx, \msg_new:nnn, \msg_new:nnx}
+% \begin{macro}
+%   {
+%     \msg_new:nnnn, \msg_new:nnee, \msg_new:nnxx,
+%     \msg_new:nnn,  \msg_new:nne,  \msg_new:nnx
+%   }
 % \begin{macro}{\msg_gset:nnnn, \msg_gset:nnn}
 % \begin{macro}{\msg_set:nnnn, \msg_set:nnn}
 %   Setting a message simply means saving the appropriate text
@@ -816,10 +819,10 @@
     \@@_chk_free:nn {#1} {#2}
     \msg_gset:nnnn {#1} {#2}
   }
-\cs_generate_variant:Nn \msg_new:nnnn { nnxx }
+\cs_generate_variant:Nn \msg_new:nnnn { nnee , nnxx }
 \cs_new_protected:Npn \msg_new:nnn #1#2#3
   { \msg_new:nnnn {#1} {#2} {#3} { } }
-\cs_generate_variant:Nn \msg_new:nnn { nnx }
+\cs_generate_variant:Nn \msg_new:nnn { nne , nnx }
 \cs_new_protected:Npn \msg_set:nnnn #1#2#3#4
   {
     \cs_set:cpn { \c_@@_text_prefix_tl #1 / #2 }
@@ -923,8 +926,8 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_interrupt:NnnnN #1#2#3#4#5
   {
-    \str_set:Nx \l_@@_text_str { #1 {#2} }
-    \str_set:Nx \l_@@_name_str { \msg_module_name:n {#2} }
+    \str_set:Ne \l_@@_text_str { #1 {#2} }
+    \str_set:Ne \l_@@_name_str { \msg_module_name:n {#2} }
     \cs_if_eq:cNTF
       { \c_@@_more_text_prefix_tl #2 / #3 }
       \@@_no_more_text:nnnn
@@ -972,7 +975,7 @@
     \iow_wrap:nnnN { \\ #3 } { } { } \@@_interrupt_more_text:n
     \group_begin:
       \int_sub:Nn \l_iow_line_count_int { 2 }
-      \iow_wrap:nxnN { \l_@@_text_str : ~ #1 }
+      \iow_wrap:nenN { \l_@@_text_str : ~ #1 }
         {
           ( \l_@@_name_str )
           \prg_replicate:nn
@@ -993,7 +996,7 @@
     \tl_set:Nn \l_@@_internal_tl {#1}
   }
 \cs_new_protected:Npn \@@_interrupt_more_text:n #1
-  { \exp_args:Nx \tex_errhelp:D { #1 \iow_newline: } }
+  { \exp_args:Ne \tex_errhelp:D { #1 \iow_newline: } }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1165,7 +1168,7 @@
           ##1##2##3##4##5##6 {#2}
       \cs_new_protected:cpn { msg_ #1 :nnnnnn } ##1##2##3##4##5##6
         {
-          \use:x
+          \use:e
             {
               \exp_not:n { \@@_use:nnnnnnn {#1} {##1} {##2} }
                 { \tl_to_str:n {##3} } { \tl_to_str:n {##4} }
@@ -1172,32 +1175,21 @@
                 { \tl_to_str:n {##5} } { \tl_to_str:n {##6} }
             }
         }
-      \cs_new_protected:cpx { msg_ #1 :nnnnn } ##1##2##3##4##5
+      \cs_new_protected:cpe { msg_ #1 :nnnnn } ##1##2##3##4##5
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} {##5} { } }
-      \cs_new_protected:cpx { msg_ #1 :nnnn } ##1##2##3##4
+      \cs_new_protected:cpe { msg_ #1 :nnnn } ##1##2##3##4
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} { } { } }
-      \cs_new_protected:cpx { msg_ #1 :nnn } ##1##2##3
+      \cs_new_protected:cpe { msg_ #1 :nnn } ##1##2##3
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } }
-      \cs_new_protected:cpx { msg_ #1 :nn } ##1##2
+      \cs_new_protected:cpe { msg_ #1 :nn } ##1##2
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} { } { } { } { } }
-      \cs_generate_variant:cn { msg_ #1 :nnn } { nnV }
-      \cs_generate_variant:cn { msg_ #1 :nnnn } { nnVV , nnVn , nnnV , nnnx }
-      \cs_generate_variant:cn { msg_ #1 :nnnnn } { nnnxx }
-      \cs_new_protected:cpx { msg_ #1 :nnxxxx } ##1##2##3##4##5##6
-        {
-          \use:x
-            {
-              \exp_not:N \exp_not:n
-                { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} }
-                {##3} {##4} {##5} {##6}
-            }
-        }
-      \cs_new_protected:cpx { msg_ #1 :nnxxx } ##1##2##3##4##5
-        { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { } }
-      \cs_new_protected:cpx { msg_ #1 :nnxx } ##1##2##3##4
-        { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { } }
-      \cs_new_protected:cpx { msg_ #1 :nnx } ##1##2##3
-        { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} { } { } { } }
+      \cs_generate_variant:cn { msg_ #1 :nnn }
+        { nnV , nne , nnx }
+      \cs_generate_variant:cn { msg_ #1 :nnnn }
+        { nnVV , nnVn , nnnV , nnne , nnnx , nnee , nnxx }
+      \cs_generate_variant:cn { msg_ #1 :nnnnn }
+        { nnnee , nnnxx , nneee , nnxxx }
+       \cs_generate_variant:cn { msg_ #1 :nnnnnn } { nneeee , nnxxxx }
     }
 %    \end{macrocode}
 % \end{macro}
@@ -1213,11 +1205,17 @@
 %     \msg_fatal:nnVn   ,
 %     \msg_fatal:nnnV   ,
 %     \msg_fatal:nnV    ,
+%     \msg_fatal:nneeee ,
+%     \msg_fatal:nneee  ,
 %     \msg_fatal:nnxxxx ,
 %     \msg_fatal:nnxxx  ,
+%     \msg_fatal:nnnee  ,
+%     \msg_fatal:nnee   ,
 %     \msg_fatal:nnnxx  ,
 %     \msg_fatal:nnxx   ,
 %     \msg_fatal:nnnx   ,
+%     \msg_fatal:nnne   ,
+%     \msg_fatal:nne    ,
 %     \msg_fatal:nnx
 %   }
 %  \begin{macro}{\@@_fatal_exit:}
@@ -1253,11 +1251,17 @@
 %     \msg_critical:nnVn   ,
 %     \msg_critical:nnnV   ,
 %     \msg_critical:nnV    ,
+%     \msg_critical:nneeee ,
+%     \msg_critical:nneee  ,
 %     \msg_critical:nnxxxx ,
 %     \msg_critical:nnxxx  ,
+%     \msg_critical:nnnee  ,
+%     \msg_critical:nnee   ,
 %     \msg_critical:nnnxx  ,
 %     \msg_critical:nnxx   ,
 %     \msg_critical:nnnx   ,
+%     \msg_critical:nnne   ,
+%     \msg_critical:nne    ,
 %     \msg_critical:nnx
 %   }
 %   Not quite so bad: just end the current file.
@@ -1284,11 +1288,17 @@
 %     \msg_error:nnVn   ,
 %     \msg_error:nnnV   ,
 %     \msg_error:nnV    ,
+%     \msg_error:nneeee ,
+%     \msg_error:nneee  ,
 %     \msg_error:nnxxxx ,
 %     \msg_error:nnxxx  ,
+%     \msg_error:nnnee  ,
+%     \msg_error:nnee   ,
 %     \msg_error:nnnxx  ,
 %     \msg_error:nnxx   ,
 %     \msg_error:nnnx   ,
+%     \msg_error:nnne   ,
+%     \msg_error:nne    ,
 %     \msg_error:nnx
 %   }
 %   For an error, the interrupt routine is called.  We check if there is
@@ -1296,8 +1306,8 @@
 %   permanently empty text. We have to undefine the bootstrap versions
 %   here.
 %    \begin{macrocode}
-  \cs_undefine:N \msg_error:nnxx
-  \cs_undefine:N \msg_error:nnx
+  \cs_undefine:N \msg_error:nnee
+  \cs_undefine:N \msg_error:nne
   \cs_undefine:N \msg_error:nn
   \@@_class_new:nn { error }
     {
@@ -1321,11 +1331,17 @@
 %     \msg_warning:nnVn   ,
 %     \msg_warning:nnnV   ,
 %     \msg_warning:nnV    ,
+%     \msg_warning:nneeee ,
+%     \msg_warning:nneee  ,
 %     \msg_warning:nnxxxx ,
 %     \msg_warning:nnxxx  ,
+%     \msg_warning:nnnee  ,
+%     \msg_warning:nnee   ,
 %     \msg_warning:nnnxx  ,
 %     \msg_warning:nnxx   ,
 %     \msg_warning:nnnx   ,
+%     \msg_warning:nnne   ,
+%     \msg_warning:nne    ,
 %     \msg_warning:nnx    ,
 %     \msg_note:nnnnnn ,
 %     \msg_note:nnnnn  ,
@@ -1336,11 +1352,17 @@
 %     \msg_note:nnVn   ,
 %     \msg_note:nnnV   ,
 %     \msg_note:nnV    ,
+%     \msg_note:nneeee ,
+%     \msg_note:nneee  ,
 %     \msg_note:nnxxxx ,
 %     \msg_note:nnxxx  ,
+%     \msg_note:nnnee  ,
+%     \msg_note:nnee   ,
 %     \msg_note:nnnxx  ,
 %     \msg_note:nnxx   ,
 %     \msg_note:nnnx   ,
+%     \msg_note:nnne   ,
+%     \msg_note:nne    ,
 %     \msg_note:nnx    ,
 %     \msg_info:nnnnnn ,
 %     \msg_info:nnnnn  ,
@@ -1351,12 +1373,18 @@
 %     \msg_info:nnVn   ,
 %     \msg_info:nnnV   ,
 %     \msg_info:nnV    ,
+%     \msg_info:nneeee ,
+%     \msg_info:nneee  ,
 %     \msg_info:nnxxxx ,
 %     \msg_info:nnxxx  ,
+%     \msg_info:nnnee  ,
+%     \msg_info:nnee   ,
 %     \msg_info:nnnxx  ,
 %     \msg_info:nnxx   ,
 %     \msg_info:nnnx   ,
-%     \msg_info:nnx    ,
+%     \msg_info:nnne   ,
+%     \msg_info:nne    ,
+%     \msg_info:nnx
 %   }
 %   Warnings and information messages have no decoration.  Warnings are
 %   printed to the terminal while information can either go to the log
@@ -1364,10 +1392,10 @@
 %    \begin{macrocode}
   \cs_new_protected:Npn \@@_info_aux:NNnnnnnn #1#2#3#4#5#6#7#8
     {
-      \str_set:Nx \l_@@_text_str { #2 {#3} }
-      \str_set:Nx \l_@@_name_str { \msg_module_name:n {#3} }
+      \str_set:Ne \l_@@_text_str { #2 {#3} }
+      \str_set:Ne \l_@@_name_str { \msg_module_name:n {#3} }
       #1 { }
-      \iow_wrap:nxnN
+      \iow_wrap:nenN
         {
           \l_@@_text_str : ~
           \use:c { \c_@@_text_prefix_tl #3 / #4 } {#5} {#6} {#7} {#8}
@@ -1404,21 +1432,6 @@
 %
 % \begin{macro}
 %   {
-%     \msg_log:nnnnnn ,
-%     \msg_log:nnnnn  ,
-%     \msg_log:nnnn   ,
-%     \msg_log:nnn    ,
-%     \msg_log:nn     ,
-%     \msg_log:nnVV   ,
-%     \msg_log:nnVn   ,
-%     \msg_log:nnnV   ,
-%     \msg_log:nnV    ,
-%     \msg_log:nnxxxx ,
-%     \msg_log:nnxxx  ,
-%     \msg_log:nnnxx  ,
-%     \msg_log:nnxx   ,
-%     \msg_log:nnnx   ,
-%     \msg_log:nnx    ,
 %     \msg_term:nnnnnn ,
 %     \msg_term:nnnnn  ,
 %     \msg_term:nnnn   ,
@@ -1428,12 +1441,39 @@
 %     \msg_term:nnVn   ,
 %     \msg_term:nnnV   ,
 %     \msg_term:nnV    ,
+%     \msg_term:nneeee ,
+%     \msg_term:nneee  ,
 %     \msg_term:nnxxxx ,
 %     \msg_term:nnxxx  ,
+%     \msg_term:nnnee  ,
+%     \msg_term:nnee   ,
 %     \msg_term:nnnxx  ,
 %     \msg_term:nnxx   ,
 %     \msg_term:nnnx   ,
+%     \msg_term:nnne   ,
+%     \msg_term:nne    ,
 %     \msg_term:nnx    ,
+%     \msg_log:nnnnnn ,
+%     \msg_log:nnnnn  ,
+%     \msg_log:nnnn   ,
+%     \msg_log:nnn    ,
+%     \msg_log:nn     ,
+%     \msg_log:nnVV   ,
+%     \msg_log:nnVn   ,
+%     \msg_log:nnnV   ,
+%     \msg_log:nnV    ,
+%     \msg_log:nneeee ,
+%     \msg_log:nneee  ,
+%     \msg_log:nnxxxx ,
+%     \msg_log:nnxxx  ,
+%     \msg_log:nnnee  ,
+%     \msg_log:nnee   ,
+%     \msg_log:nnnxx  ,
+%     \msg_log:nnxx   ,
+%     \msg_log:nnnx   ,
+%     \msg_log:nnne   ,
+%     \msg_log:nne    ,
+%     \msg_log:nnx
 %   }
 %   \enquote{Log} data is very similar to information, but with no extras
 %   added.
@@ -1467,11 +1507,17 @@
 %     \msg_none:nnVn   ,
 %     \msg_none:nnnV   ,
 %     \msg_none:nnV    ,
+%     \msg_none:nneeee ,
+%     \msg_none:nneee  ,
 %     \msg_none:nnxxxx ,
 %     \msg_none:nnxxx  ,
+%     \msg_none:nnnee  ,
+%     \msg_none:nnee   ,
 %     \msg_none:nnnxx  ,
 %     \msg_none:nnxx   ,
 %     \msg_none:nnnx   ,
+%     \msg_none:nnne   ,
+%     \msg_none:nne    ,
 %     \msg_none:nnx
 %   }
 %   The \texttt{none} message type is needed so that input can be gobbled.
@@ -1491,11 +1537,17 @@
 %     \msg_show:nnVn   ,
 %     \msg_show:nnnV   ,
 %     \msg_show:nnV    ,
+%     \msg_show:nneeee ,
+%     \msg_show:nneee  ,
 %     \msg_show:nnxxxx ,
 %     \msg_show:nnxxx  ,
+%     \msg_show:nnnee  ,
+%     \msg_show:nnee   ,
 %     \msg_show:nnnxx  ,
 %     \msg_show:nnxx   ,
-%     \msg_show:nnx    ,
+%     \msg_show:nnnx   ,
+%     \msg_show:nnne   ,
+%     \msg_show:nne    ,
 %     \msg_show:nnx
 %   }
 % \begin{macro}{\@@_show:n, \@@_show:w, \@@_show_dot:w, \@@_show:nn}
@@ -1563,11 +1615,11 @@
 %   the messages. We need to use |^^J| here directly as \pkg{l3file} is
 %   not yet loaded.
 %    \begin{macrocode}
-\cs_new:Npx \msg_show_item:n #1
+\cs_new:Npe \msg_show_item:n #1
   { ^^J > ~ \c_space_tl \exp_not:N \tl_to_str:n { {#1} } }
-\cs_new:Npx \msg_show_item_unbraced:n #1
+\cs_new:Npe \msg_show_item_unbraced:n #1
   { ^^J > ~ \c_space_tl \exp_not:N \tl_to_str:n {#1} }
-\cs_new:Npx \msg_show_item:nn #1#2
+\cs_new:Npe \msg_show_item:nn #1#2
   {
     ^^J > \use:nn { ~ } { ~ }
     \exp_not:N \tl_to_str:n { {#1} }
@@ -1574,7 +1626,7 @@
     \use:nn { ~ } { ~ } => \use:nn { ~ } { ~ }
     \exp_not:N \tl_to_str:n { {#2} }
   }
-\cs_new:Npx \msg_show_item_unbraced:nn #1#2
+\cs_new:Npe \msg_show_item_unbraced:nn #1#2
   {
     ^^J > \use:nn { ~ } { ~ }
     \exp_not:N \tl_to_str:n {#1}
@@ -1595,7 +1647,7 @@
 \cs_new:Npn \@@_class_chk_exist:nT #1
   {
     \cs_if_free:cTF { @@_ #1 _code:nnnnnn }
-      { \msg_error:nnx { msg } { class-unknown } {#1} }
+      { \msg_error:nnn { msg } { class-unknown } {#1} }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1654,7 +1706,7 @@
         \@@_class_chk_exist:nT {#1}
           {
             \tl_set:Nn \l_@@_current_class_tl {#1}
-            \cs_set_protected:Npx \@@_use_code:
+            \cs_set_protected:Npe \@@_use_code:
               {
                 \exp_not:n
                   {
@@ -1665,7 +1717,7 @@
             \@@_use_redirect_name:n { #2 / #3 }
           }
       }
-      { \msg_error:nnxx { msg } { unknown } {#2} {#3} }
+      { \msg_error:nnnn { msg } { unknown } {#2} {#3} }
     \cs_if_exist_use:N \conditionally at traceon
   }
 \cs_new_protected:Npn \@@_use_code: { }
@@ -1815,7 +1867,7 @@
             \tl_if_eq:NNTF \l_@@_class_tl \l_@@_current_class_tl
               {
                 \prop_put:cnn { l_@@_redirect_ #2 _prop } {#3} {#2}
-                \msg_warning:nnxxxx
+                \msg_warning:nneeee
                   { msg } { redirect-loop }
                   { \seq_item:Nn \l_@@_class_loop_seq { 1 } }
                   { \seq_item:Nn \l_@@_class_loop_seq { 2 } }
@@ -1871,26 +1923,26 @@
 %
 % \begin{macro}
 %   {
-%     \__kernel_msg_info:nnxx    ,
-%     \__kernel_msg_warning:nnx  ,
-%     \__kernel_msg_warning:nnxx ,
-%     \__kernel_msg_error:nnx    ,
-%     \__kernel_msg_error:nnxx   ,
-%     \__kernel_msg_error:nnxxx
+%     \__kernel_msg_info:nnee    ,
+%     \__kernel_msg_warning:nne  ,
+%     \__kernel_msg_warning:nnee ,
+%     \__kernel_msg_error:nne    ,
+%     \__kernel_msg_error:nnee   ,
+%     \__kernel_msg_error:nneee
 %   }
 %    \begin{macrocode}
-\cs_new_protected:Npn \__kernel_msg_info:nnxx #1
-  { \msg_info:nnxx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_warning:nnx #1
-  { \msg_warning:nnx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_warning:nnxx #1
-  { \msg_warning:nnxx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnx #1
-  { \msg_error:nnx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnxx #1
-  { \msg_error:nnxx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnxxx #1
-  { \msg_error:nnxxx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_info:nnee #1
+  { \msg_info:nnee { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nne #1
+  { \msg_warning:nne { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nnee #1
+  { \msg_warning:nnee { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nne #1
+  { \msg_error:nne { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nnee #1
+  { \msg_error:nnee { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nneee #1
+  { \msg_error:nneee { LaTeX / #1 } }
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -60,7 +60,7 @@
 % \end{function}
 %
 % \begin{function}[added = 2022-08-23]
-%   {\pdf_object_write:nnn, \pdf_object_write:nnx}
+%   {\pdf_object_write:nnn, \pdf_object_write:nne}
 %   \begin{syntax}
 %     \cs{pdf_object_write:nn} \Arg{object} \Arg{type} \Arg{content}
 %   \end{syntax}
@@ -87,7 +87,7 @@
 % \end{function}
 %
 % \begin{function}[added = 2021-02-10]
-%   {\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:nx}
+%   {\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:ne}
 %   \begin{syntax}
 %     \cs{pdf_object_unnamed_write:nn} \Arg{type} \Arg{content}
 %   \end{syntax}
@@ -312,9 +312,14 @@
 % \subsection{Objects}
 %
 % \begin{macro}{\pdf_object_new:n}
-% \begin{macro}{\pdf_object_write:nnn, \pdf_object_write:nnx}
+% \begin{macro}
+%   {\pdf_object_write:nnn, \pdf_object_write:nne, \pdf_object_write:nnx}
 % \begin{macro}{\pdf_object_ref:n}
-% \begin{macro}{\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:nx}
+% \begin{macro}
+%   {
+%     \pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:ne,
+%     \pdf_object_unnamed_write:nx
+%   }
 % \begin{macro}{\pdf_object_ref_last:}
 % \begin{macro}[pTF]{\pdf_object_if_exist:n}
 %   Simple to do: all objects create a constant |int| so it is not a
@@ -332,7 +337,7 @@
     \@@_backend_object_write:nnn {#1} {#2} {#3}
     \bool_gset_true:N \g_@@_init_bool
   }
-\cs_generate_variant:Nn \pdf_object_write:nnn { nnx }
+\cs_generate_variant:Nn \pdf_object_write:nnn { nne , nnx }
 \cs_new:Npn \pdf_object_ref:n #1 { \@@_backend_object_ref:n {#1} }
 \cs_new_protected:Npn \pdf_object_unnamed_write:nn #1#2
   {
@@ -339,7 +344,7 @@
     \@@_backend_object_now:nn {#1} {#2}
     \bool_gset_true:N \g_@@_init_bool
   }
-\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { nx }
+\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { ne , nx }
 \cs_new:Npn \pdf_object_ref_last: { \@@_backend_object_last: }
 \prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF }
   {
@@ -536,7 +541,7 @@
   }
 \cs_new_protected:Npn \pdf_object_write:nn #1#2
   {
-    \exp_args:Nnx \@@_backend_object_write:nnn
+    \exp_args:Nne \@@_backend_object_write:nnn
       {#1} { \prop_item:Nn \g_@@_object_prop {#1} } {#2}
     \bool_gset_true:N \g_@@_init_bool
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -1079,11 +1079,11 @@
       {
         \token_case_meaning:NnF #2
           {
-            \c_true_bool { \exp_args:Nx #1 { \token_to_str:N #2 = true } }
-            \c_false_bool { \exp_args:Nx #1 { \token_to_str:N #2 = false } }
+            \c_true_bool { \exp_args:Ne #1 { \token_to_str:N #2 = true } }
+            \c_false_bool { \exp_args:Ne #1 { \token_to_str:N #2 = false } }
           }
           {
-            \msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nneee { kernel } { bad-type }
               { \token_to_str:N #2 } { \token_to_meaning:N #2 } { bool }
           }
       }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -165,18 +165,28 @@
 %
 % \begin{function}[updated = 2012-07-09]
 %   {
-%     \prop_put:Nnn,  \prop_put:NnV,  \prop_put:Nno,  \prop_put:Nne, \prop_put:Nnx,
-%     \prop_put:NVn,  \prop_put:NVV,  \prop_put:NVx,  \prop_put:Nvx,
-%     \prop_put:Non,  \prop_put:Nxn,  \prop_put:NxV,  \prop_put:Noo, \prop_put:Nxx,
-%     \prop_put:cnn,  \prop_put:cnV,  \prop_put:cno,  \prop_put:cne, \prop_put:cnx,
-%     \prop_put:cVn,  \prop_put:cVV,  \prop_put:cVx,  \prop_put:cvx,
-%     \prop_put:con,  \prop_put:cxn,  \prop_put:cxV,  \prop_put:coo,  \prop_put:cxx,
-%     \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx,
-%     \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_gput:Nvx,
-%     \prop_gput:Non, \prop_gput:Nxn, \prop_gput:NxV, \prop_gput:Noo, \prop_gput:Nxx,
-%     \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx,
-%     \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx,
-%     \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx
+%     \prop_put:Nnn,  \prop_put:NnV,  \prop_put:Nnv,  \prop_put:Nne,
+%     \prop_put:NVn,  \prop_put:NVV,  \prop_put:NVv,  \prop_put:NVe,
+%     \prop_put:Nvn,  \prop_put:NvV,  \prop_put:Nvv,  \prop_put:Nve, 
+%     \prop_put:Nen,  \prop_put:NeV,  \prop_put:Nev,  \prop_put:Nee,
+%     \prop_put:Nno,  \prop_put:Non,  \prop_put:Noo,
+%     \prop_put:cnn,  \prop_put:cnV,  \prop_put:cnv,  \prop_put:cne,
+%     \prop_put:cno,
+%     \prop_put:cVn,  \prop_put:cVV,  \prop_put:cVv,  \prop_put:cVe,
+%     \prop_put:cvn,  \prop_put:cvV,  \prop_put:cvv,  \prop_put:cve, 
+%     \prop_put:cen,  \prop_put:ceV,  \prop_put:cev,  \prop_put:cee,
+%     \prop_put:con,  \prop_put:coo,
+%     \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nnv, \prop_gput:Nne,
+%     \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVv, \prop_gput:NVe,
+%     \prop_gput:Nvn, \prop_gput:NvV, \prop_gput:Nvv, \prop_gput:Nve, 
+%     \prop_gput:Nen, \prop_gput:NeV, \prop_gput:Nev, \prop_gput:Nee,
+%     \prop_gput:Nno, \prop_gput:Non, \prop_gput:Noo,
+%     \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cnv, \prop_gput:cne,
+%     \prop_gput:cno,
+%     \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVv, \prop_gput:cVe,
+%     \prop_gput:cvn, \prop_gput:cvV, \prop_gput:cvv, \prop_gput:cve, 
+%     \prop_gput:cen, \prop_gput:ceV, \prop_gput:cev, \prop_gput:cee,
+%     \prop_gput:con, \prop_gput:coo
 %   }
 %   \begin{syntax}
 %     \cs{prop_put:Nnn} \meta{property list} \Arg{key} \Arg{value}
@@ -192,8 +202,10 @@
 %
 % \begin{function}
 %   {
-%     \prop_put_if_new:Nnn,  \prop_put_if_new:cnn,
-%     \prop_gput_if_new:Nnn, \prop_gput_if_new:cnn
+%     \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV,
+%     \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV,
+%     \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV,
+%     \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV
 %   }
 %   \begin{syntax}
 %     \cs{prop_put_if_new:Nnn} \meta{property list} \Arg{key} \Arg{value}
@@ -250,8 +262,10 @@
 %
 % \begin{function}[updated = 2011-08-28]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN,
+%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN,
+%     \prop_get:NoN,
+%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN,
+%     \prop_get:coN,
 %     \prop_get:cnc
 %   }
 %   \begin{syntax}
@@ -267,7 +281,12 @@
 % \end{function}
 %
 % \begin{function}[updated = 2011-08-18]
-%   {\prop_pop:NnN, \prop_pop:NoN, \prop_pop:cnN, \prop_pop:coN}
+%   {
+%     \prop_pop:NnN, \prop_pop:NVN,
+%     \prop_pop:NoN, 
+%     \prop_pop:cnN, \prop_pop:cVN,
+%     \prop_pop:coN
+%   }
 %   \begin{syntax}
 %     \cs{prop_pop:NnN} \meta{property list} \Arg{key} \meta{tl var}
 %   \end{syntax}
@@ -281,7 +300,12 @@
 % \end{function}
 %
 % \begin{function}[updated = 2011-08-18]
-%   {\prop_gpop:NnN, \prop_gpop:NoN, \prop_gpop:cnN, \prop_gpop:coN}
+%   {
+%     \prop_gpop:NnN, \prop_gpop:NVN,
+%     \prop_gpop:NoN,
+%     \prop_gpop:cnN, \prop_gpop:cVN,
+%     \prop_gpop:coN
+%   }
 %   \begin{syntax}
 %     \cs{prop_gpop:NnN} \meta{property list} \Arg{key} \meta{tl var}
 %   \end{syntax}
@@ -297,8 +321,8 @@
 %
 % \begin{function}[added = 2014-07-17, EXP]
 %   {
-%     \prop_item:Nn, \prop_item:NV, \prop_item:No, \prop_item:Ne,
-%     \prop_item:cn, \prop_item:cV, \prop_item:co, \prop_item:ce
+%     \prop_item:Nn, \prop_item:NV, \prop_item:Ne, \prop_item:No,
+%     \prop_item:cn, \prop_item:cV, \prop_item:ce, \prop_item:co
 %   }
 %   \begin{syntax}
 %     \cs{prop_item:Nn} \meta{property list} \Arg{key}
@@ -343,8 +367,10 @@
 %
 % \begin{function}[added = 2012-05-12]
 %   {
-%     \prop_remove:Nn,  \prop_remove:NV,  \prop_remove:cn,  \prop_remove:cV,
-%     \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:cn, \prop_gremove:cV
+%     \prop_remove:Nn,  \prop_remove:NV,  \prop_remove:Ne,
+%     \prop_remove:cn,  \prop_remove:cV,  \prop_remove:ce,
+%     \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:Ne,
+%     \prop_gremove:cn, \prop_gremove:cV, \prop_gremove:ce,
 %   }
 %   \begin{syntax}
 %     \cs{prop_remove:Nn} \meta{property list} \Arg{key}
@@ -378,8 +404,8 @@
 %
 % \begin{function}[updated = 2011-09-15, EXP, pTF]
 %   {
-%     \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:No,
-%     \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:co
+%     \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:Ne, \prop_if_in:No,
+%     \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:ce, \prop_if_in:co
 %   }
 %   \begin{syntax}
 %     \cs{prop_if_in_p:Nn} \meta{property list} \Arg{key}
@@ -404,8 +430,10 @@
 %
 % \begin{function}[updated = 2012-05-19, TF]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN,
+%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN,
+%     \prop_get:NoN,
+%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN,
+%     \prop_get:coN,
 %     \prop_get:cnc
 %   }
 %   \begin{syntax}
@@ -423,7 +451,12 @@
 % \end{function}
 %
 % \begin{function}[TF, added = 2011-08-18, updated = 2012-05-19]
-%   {\prop_pop:NnN, \prop_pop:cnN}
+%   {
+%     \prop_pop:NnN, \prop_pop:NVN,
+%     \prop_pop:NoN,
+%     \prop_pop:cnN, \prop_pop:cVN,
+%     \prop_pop:coN
+%   }
 %   \begin{syntax}
 %     \cs{prop_pop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \Arg{true code} \Arg{false code}
 %   \end{syntax}
@@ -439,7 +472,12 @@
 % \end{function}
 %
 % \begin{function}[TF, added = 2011-08-18, updated = 2012-05-19]
-%   {\prop_gpop:NnN, \prop_gpop:cnN}
+%   {
+%     \prop_gpop:NnN, \prop_gpop:NVN,
+%     \prop_gpop:NoN,
+%     \prop_gpop:cnN, \prop_gpop:cVN,
+%     \prop_gpop:coN
+%   }
 %   \begin{syntax}
 %     \cs{prop_gpop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \Arg{true code} \Arg{false code}
 %   \end{syntax}
@@ -874,7 +912,7 @@
 \cs_new_protected:Npn \prop_const_from_keyval:Nn #1#2
   {
     \prop_set_from_keyval:Nn \l_@@_internal_prop {#2}
-    \tl_const:Nx #1 { \exp_not:o \l_@@_internal_prop }
+    \tl_const:Ne #1 { \exp_not:o \l_@@_internal_prop }
     \prop_clear:N \l_@@_internal_prop
   }
 \cs_generate_variant:Nn \prop_const_from_keyval:Nn { c }
@@ -959,9 +997,15 @@
 % \end{macro}
 %
 % \begin{macro}[tested = m3prop002]
-%   {\prop_remove:Nn, \prop_remove:NV, \prop_remove:cn, \prop_remove:cV}
+%   {
+%     \prop_remove:Nn, \prop_remove:NV, \prop_remove:Ne,
+%     \prop_remove:cn, \prop_remove:cV, \prop_remove:ce
+%   }
 % \begin{macro}[tested = m3prop002]
-%   {\prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:cn, \prop_gremove:cV}
+%   {
+%     \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:Ne,
+%     \prop_gremove:cn, \prop_gremove:cV, \prop_gremove:ce
+%   }
 %   Deleting from a property starts by splitting the list.
 %   If the key is present in the property list, the returned value is ignored.
 %   If the key is missing, nothing happens.
@@ -978,10 +1022,8 @@
       { \tl_gset:Nn #1 { ##1 ##3 } }
       { }
   }
-\cs_generate_variant:Nn \prop_remove:Nn  {     NV }
-\cs_generate_variant:Nn \prop_remove:Nn  { c , cV }
-\cs_generate_variant:Nn \prop_gremove:Nn {     NV }
-\cs_generate_variant:Nn \prop_gremove:Nn { c , cV }
+\cs_generate_variant:Nn \prop_remove:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \prop_gremove:Nn { NV , Ne , c , cV , ce }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -988,8 +1030,10 @@
 %
 % \begin{macro}[tested = m3prop002]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN,
+%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN,
+%     \prop_get:NoN, \prop_get:NxN,
+%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN,
+%     \prop_get:coN, \prop_get:cxN,
 %     \prop_get:cnc
 %   }
 %   Getting an item from a list is very easy: after splitting,
@@ -1002,15 +1046,26 @@
       { \tl_set:Nn #3 {##2} }
       { \tl_set:Nn #3 { \q_no_value } }
   }
-\cs_generate_variant:Nn \prop_get:NnN {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co , cx , cnc }
+\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \prop_get:NnN { No , Nx , co , cx }
+\cs_generate_variant:Nn \prop_get:NnN { cnc }
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}[tested = m3prop002]
-%   {\prop_pop:NnN, \prop_pop:NoN, \prop_pop:cnN, \prop_pop:coN}
+%   {
+%     \prop_pop:NnN, \prop_pop:NVN, 
+%     \prop_pop:NoN,
+%     \prop_pop:cnN, \prop_pop:cVN,
+%     \prop_pop:coN,
+%   }
 % \begin{macro}[tested = m3prop002]
-%   {\prop_gpop:NnN, \prop_gpop:NoN, \prop_gpop:cnN, \prop_gpop:coN}
+%   {
+%     \prop_gpop:NnN, \prop_gpop:NVN,
+%     \prop_gpop:NoN,
+%     \prop_gpop:cnN, \prop_gpop:cVN,
+%     \prop_gpop:coN,
+%   }
 %   Popping a value also starts by doing the split.
 %   If the key is present, save the value in the token list and update the
 %   property list as when deleting.
@@ -1034,10 +1089,10 @@
       }
       { \tl_set:Nn #3 { \q_no_value } }
   }
-\cs_generate_variant:Nn \prop_pop:NnN  {     No }
-\cs_generate_variant:Nn \prop_pop:NnN  { c , co }
-\cs_generate_variant:Nn \prop_gpop:NnN {     No }
-\cs_generate_variant:Nn \prop_gpop:NnN { c , co }
+\cs_generate_variant:Nn \prop_pop:NnN  {     NV , No }
+\cs_generate_variant:Nn \prop_pop:NnN  { c , cV , co }
+\cs_generate_variant:Nn \prop_gpop:NnN {     NV , No }
+\cs_generate_variant:Nn \prop_gpop:NnN { c , cV , co }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1129,7 +1184,13 @@
 % \end{macro}
 %
 % \begin{macro}[TF, tested = m3prop004]
-%   {\prop_pop:NnN, \prop_pop:cnN, \prop_gpop:NnN, \prop_gpop:cnN}
+%   {
+%     \prop_pop:NnN,  \prop_pop:NVN, 
+%     \prop_pop:cnN,  \prop_pop:cVN,
+%     \prop_gpop:NnN, \prop_gpop:NVN,
+%     \prop_gpop:NoN,
+%     \prop_gpop:cnN, \prop_gpop:cVN,
+%   }
 %   Popping an item from a property list, keeping track of whether
 %   the key was present or not, is implemented as a conditional.
 %   If the key was missing, neither the property list, nor the token
@@ -1156,28 +1217,40 @@
       }
       { \prg_return_false: }
   }
-\prg_generate_conditional_variant:Nnn \prop_pop:NnN { c } { T , F , TF }
-\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { c } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_pop:NnN  { NV , c , cV } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { NV , c , cV } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}[tested = m3prop002]
 %   {
-%     \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx,
-%     \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx,
-%     \prop_put:Non, \prop_put:Nxn, \prop_put:NxV, \prop_put:Noo, \prop_put:Nxx,
-%     \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx,
-%     \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx,
-%     \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \prop_put:cxx
+%     \prop_put:Nnn,  \prop_put:NnV,  \prop_put:Nnv,  \prop_put:Nne,
+%     \prop_put:NVn,  \prop_put:NVV,  \prop_put:NVv,  \prop_put:NVe,
+%     \prop_put:Nvn,  \prop_put:NvV,  \prop_put:Nvv,  \prop_put:Nve, 
+%     \prop_put:Nen,  \prop_put:NeV,  \prop_put:Nev,  \prop_put:Nee,
+%     \prop_put:Nno,  \prop_put:Nnx,  \prop_put:NVx,
+%     \prop_put:Non,  \prop_put:Noo,  \prop_put:NxV,  \prop_put:Nxx,
+%     \prop_put:cnn,  \prop_put:cnV,  \prop_put:cnv,  \prop_put:cne,
+%     \prop_put:cno,  \prop_put:cnx,  
+%     \prop_put:cVn,  \prop_put:cVV,  \prop_put:cVv,  \prop_put:cVe,
+%     \prop_put:cvn,  \prop_put:cvV,  \prop_put:cvv,  \prop_put:cve, 
+%     \prop_put:cen,  \prop_put:ceV,  \prop_put:cev,  \prop_put:cee,
+%     \prop_put:con,  \prop_put:coo,  \prop_put:cxV,  \prop_put:cxx
 %   }
 % \begin{macro}[tested = m3prop002]
 %   {
-%     \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx,
-%     \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_hput:Nvx,
-%     \prop_gput:Non, \prop_gput:Nxn, \prop_pgut:NxV, \prop_gput:Noo, \prop_gput:Nxx,
-%     \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx,
-%     \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx,
-%     \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx
+%     \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nnv, \prop_gput:Nne,
+%     \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVv, \prop_gput:NVe,
+%     \prop_gput:Nvn, \prop_gput:NvV, \prop_gput:Nvv, \prop_gput:Nve, 
+%     \prop_gput:Nen, \prop_gput:NeV, \prop_gput:Nev, \prop_gput:Nee,
+%     \prop_gput:Nno, \prop_gput:Non, \prop_gput:Noo,
+%     \prop_gput:Nnx, \prop_gput:NVx, \prop_gput:Nxn, \prop_gput:Nxx,
+%     \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cnv, \prop_gput:cne,
+%     \prop_gput:cno, \prop_gput:cnx,
+%     \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVv, \prop_gput:cVe,
+%     \prop_gput:cvn, \prop_gput:cvV, \prop_gput:cvv, \prop_gput:cve, 
+%     \prop_gput:cen, \prop_gput:ceV, \prop_gput:cev, \prop_gput:cee,
+%     \prop_gput:cno, \prop_gput:con, \prop_gput:cxn, \prop_gput:cxx
 %   }
 % \begin{macro}{\@@_put:NNnn}
 %   Since the branches of \cs{@@_split:NnTF} are used as the replacement
@@ -1193,8 +1266,8 @@
 %   updated entry is placed at the same spot as the original \meta{key}
 %   in the property list, preserving the order of entries.
 %    \begin{macrocode}
-\cs_new_protected:Npn \prop_put:Nnn  { \@@_put:NNnn \__kernel_tl_set:Nx }
-\cs_new_protected:Npn \prop_gput:Nnn { \@@_put:NNnn \__kernel_tl_gset:Nx }
+\cs_new_protected:Npn \prop_put:Nnn  { \@@_put:NNnn \__kernel_tl_set:Ne }
+\cs_new_protected:Npn \prop_gput:Nnn { \@@_put:NNnn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_put:NNnn #1#2#3#4
   {
     \tl_set:Nn \l_@@_internal_tl
@@ -1207,13 +1280,33 @@
       { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } }
   }
 \cs_generate_variant:Nn \prop_put:Nnn
-  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
+  {
+         NnV , Nnv , Nne , NV , NVV , NVv , NVe ,
+    Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee
+  }
 \cs_generate_variant:Nn \prop_put:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
+  { Nno , No , Noo , Nnx , NVx , NxV , Nxx }
+\cs_generate_variant:Nn \prop_put:Nnn
+  {
+    c  , cnV , cnv , cne , cV , cVV , cVv , cVe ,
+    cv , cvV , cvv , cve , ce , ceV , cev , cee
+  }
+\cs_generate_variant:Nn \prop_put:Nnn
+  { cno , co , coo , cnx , cVx , cxV , cxx }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
+  {
+         NnV , Nnv , Nne , NV , NVV , NVv , NVe ,
+    Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee
+  }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
+  { Nno , No , Noo , Nnx , NVx , NxV , Nxx }
+\cs_generate_variant:Nn \prop_gput:Nnn
+  {
+    c  , cnV , cnv , cne , cV , cVV , cVv , cVe ,
+    cv , cvV , cvv , cve , ce , ceV , cev , cee
+  }
+\cs_generate_variant:Nn \prop_gput:Nnn
+  { cno , co , coo , cnx , cVx , cxV , cxx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1220,9 +1313,15 @@
 % \end{macro}
 %
 % \begin{macro}[tested = m3prop002]
-%   {\prop_put_if_new:Nnn, \prop_put_if_new:cnn}
+%   {
+%     \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV,
+%     \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV
+%   }
 % \begin{macro}[tested = m3prop002]
-%   {\prop_gput_if_new:Nnn, \prop_gput_if_new:cnn}
+%   {
+%     \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV,
+%     \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV
+%   }
 % \begin{macro}{\@@_put_if_new:NNnn}
 %   Adding conditionally also splits. If the key is already present,
 %   the three brace groups given by \cs{@@_split:NnTF} are removed.
@@ -1230,9 +1329,9 @@
 %   convert the key to a string using \cs{tl_to_str:n}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \prop_put_if_new:Nnn
-  { \@@_put_if_new:NNnn \__kernel_tl_set:Nx }
+  { \@@_put_if_new:NNnn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \prop_gput_if_new:Nnn
-  { \@@_put_if_new:NNnn \__kernel_tl_gset:Nx }
+  { \@@_put_if_new:NNnn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_put_if_new:NNnn #1#2#3#4
   {
     \tl_set:Nn \l_@@_internal_tl
@@ -1244,8 +1343,10 @@
       { }
       { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } }
   }
-\cs_generate_variant:Nn \prop_put_if_new:Nnn  { c }
-\cs_generate_variant:Nn \prop_gput_if_new:Nnn { c }
+\cs_generate_variant:Nn \prop_put_if_new:Nnn
+  { NnV , NV , cnV , cV }
+\cs_generate_variant:Nn \prop_gput_if_new:Nnn
+  { NnV , NV , cnV , cV }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1278,8 +1379,8 @@
 %
 % \begin{macro}[pTF, tested = m3prop003]
 %   {
-%     \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:No,
-%     \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:co
+%     \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:Ne, \prop_if_in:No,
+%     \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:ce, \prop_if_in:co
 %   }
 % \begin{macro}[EXP]{\@@_if_in:nnn}
 %   Testing expandably if a key is in a property list
@@ -1309,7 +1410,7 @@
       { \prop_map_break:n { \use_i:nn \prg_return_true: } }
   }
 \prg_generate_conditional_variant:Nnn \prop_if_in:Nn
-  { NV , No , c , cV , co } { p , T , F , TF }
+  { NV , Ne , No , c , cV , ce , co } { p , T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1318,8 +1419,10 @@
 %
 % \begin{macro}[TF, tested = m3prop004]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN,
+%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN,
+%     \prop_get:NoN, \prop_get:NxN,
+%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN,
+%     \prop_get:coN, \prop_get:cxN,
 %     \prop_get:cnc
 %   }
 %   Getting the value corresponding to a key, keeping track of whether
@@ -1336,7 +1439,11 @@
       { \prg_return_false: }
   }
 \prg_generate_conditional_variant:Nnn \prop_get:NnN
-  { NV , Nv , No , Nx , c , cV , cv , co , cx , cnc } { T , F , TF }
+  { NV , Nv , Ne , c , cV , cv , ce } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_get:NnN
+  { No , Nx , co , cx } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_get:NnN
+  { cnc } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1471,9 +1578,9 @@
 %   we use \cs{msg_show_item:nn} to format both the key and the value
 %   for each pair.
 %    \begin{macrocode}
-\cs_new_protected:Npn \prop_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \prop_show:N { \@@_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \prop_show:N { c }
-\cs_new_protected:Npn \prop_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \prop_log:N { \@@_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \prop_log:N { c }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -633,14 +633,14 @@
 %
 % \begin{macro}{\@@_new_test:NNNn, \@@_new_test:Nccn,
 %   \@@_new_test_aux:nnNNnnnn}
-% \begin{macro}{\@@_new_conditional:Nnnn, \@@_new_conditional:Nxxn}
+% \begin{macro}{\@@_new_conditional:Nnnn, \@@_new_conditional:Neen}
 %    \begin{macrocode}
 \cs_new_protected:Npn \__kernel_quark_new_test:N #1
-  { \@@_new_test_aux:Nx #1 { \@@_module_name:N #1 } }
+  { \@@_new_test_aux:Ne #1 { \@@_module_name:N #1 } }
 \cs_new_protected:Npn \@@_new_test_aux:Nn #1 #2
   {
     \if_meaning:w \q_nil #2 \q_nil
-      \msg_error:nnx { quark } { invalid-function }
+      \msg_error:nne { quark } { invalid-function }
         { \token_to_str:N #1 }
     \else:
       \@@_new_test:Nccn #1
@@ -647,7 +647,7 @@
         { q__#2_recursion_tail } { q__#2_recursion_stop } { __#2 }
     \fi:
   }
-\cs_generate_variant:Nn \@@_new_test_aux:Nn { Nx }
+\cs_generate_variant:Nn \@@_new_test_aux:Nn { Ne }
 \cs_new_protected:Npn \@@_new_test:NNNn #1
   {
     \exp_last_unbraced:Nf \@@_new_test_aux:nnNNnnnn
@@ -657,7 +657,7 @@
 \cs_generate_variant:Nn \@@_new_test:NNNn { Ncc }
 \cs_new_protected:Npn \__kernel_quark_new_conditional:Nn #1
   {
-    \@@_new_conditional:Nxxn #1
+    \@@_new_conditional:Neen #1
       { \@@_quark_conditional_name:N #1 }
       { \@@_module_name:N #1 }
   }
@@ -664,11 +664,11 @@
 \cs_new_protected:Npn \@@_new_conditional:Nnnn #1#2#3#4
   {
     \if_meaning:w \q_nil #2 \q_nil
-      \msg_error:nnx { quark } { invalid-function }
+      \msg_error:nne { quark } { invalid-function }
         { \token_to_str:N #1 }
     \else:
       \if_meaning:w \q_nil #3 \q_nil
-        \msg_error:nnx { quark } { invalid-function }
+        \msg_error:nne { quark } { invalid-function }
           { \token_to_str:N #1 }
       \else:
         \exp_last_unbraced:Nf \@@_new_test_aux:nnNNnnnn
@@ -678,12 +678,12 @@
       \fi:
     \fi:
   }
-\cs_generate_variant:Nn \@@_new_conditional:Nnnn { Nxx }
+\cs_generate_variant:Nn \@@_new_conditional:Nnnn { Nee }
 \cs_new_protected:Npn \@@_new_test_aux:nnNNnnnn #1 #2 #3 #4 #5
   {
     \cs_if_exist_use:cTF { @@_new_#5_#2:Nnnn } { #4 }
       {
-        \msg_error:nnxx { quark } { invalid-function }
+        \msg_error:nnee { quark } { invalid-function }
           { \token_to_str:N #4 } {#2}
         \use_none:nnn
       }
@@ -951,7 +951,7 @@
   {
     \tl_if_in:NnTF \g_@@_marks_tl { #1 }
       {
-        \msg_error:nnx { scanmark } { already-defined }
+        \msg_error:nne { scanmark } { already-defined }
           { \token_to_str:N #1 }
       }
       {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -1158,24 +1158,24 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_toks_put_left:Nx}
-% \begin{macro}{\@@_toks_put_right:Nx, \@@_toks_put_right:Nn}
+% \begin{macro}{\@@_toks_put_left:Ne}
+% \begin{macro}{\@@_toks_put_right:Ne, \@@_toks_put_right:Nn}
 %   During the building phase we wish to add \texttt{x}-expanded
 %   material to \tn{toks}, either to the left or to the right. The
 %   expansion is done \enquote{by hand} for optimization (these
 %   operations are used quite a lot). The \texttt{Nn} version of
-%   \cs{@@_toks_put_right:Nx} is provided because it is more
+%   \cs{@@_toks_put_right:Ne} is provided because it is more
 %   efficient than \texttt{x}-expanding with \cs{exp_not:n}.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_toks_put_left:Nx #1#2
+\cs_new_protected:Npn \@@_toks_put_left:Ne #1#2
   {
-    \cs_set_nopar:Npx \@@_tmp:w { #2 }
+    \cs_set_nopar:Npe \@@_tmp:w { #2 }
     \tex_toks:D #1 \exp_after:wN \exp_after:wN \exp_after:wN
       { \exp_after:wN \@@_tmp:w \tex_the:D \tex_toks:D #1 }
   }
-\cs_new_protected:Npn \@@_toks_put_right:Nx #1#2
+\cs_new_protected:Npn \@@_toks_put_right:Ne #1#2
   {
-    \cs_set_nopar:Npx \@@_tmp:w {#2}
+    \cs_set_nopar:Npe \@@_tmp:w {#2}
     \tex_toks:D #1 \exp_after:wN
       { \tex_the:D \tex_toks:D \exp_after:wN #1 \@@_tmp:w }
   }
@@ -1541,7 +1541,7 @@
   {
     \int_compare:nNnTF \l_@@_curr_catcode_int = 0
       {
-        \__kernel_tl_set:Nx \l_@@_internal_a_tl
+        \__kernel_tl_set:Ne \l_@@_internal_a_tl
           { \scan_stop: \@@_curr_cs_to_str: \scan_stop: }
         \tl_if_in:noTF { \scan_stop: #1 \scan_stop: }
           \l_@@_internal_a_tl
@@ -1568,7 +1568,7 @@
           \@@_build_for_cs:n {#1}
           \bool_set_eq:NN \l_@@_saved_success_bool
             \g_@@_success_bool
-          \exp_args:Nx \@@_match_cs:n { \@@_curr_cs_to_str: }
+          \exp_args:Ne \@@_match_cs:n { \@@_curr_cs_to_str: }
           \if_meaning:w \c_true_bool \g_@@_success_bool
             \group_insert_after:N \@@_break_true:w
           \fi:
@@ -1729,9 +1729,9 @@
       \cs_set:Npn \@@_escape_escaped:N ##1 { #2 }
       \cs_set:Npn \@@_escape_raw:N ##1 { #3 }
       \@@_standard_escapechar:
-      \__kernel_tl_gset:Nx \g_@@_internal_tl
+      \__kernel_tl_gset:Ne \g_@@_internal_tl
         { \__kernel_str_to_other_fast:n {#4} }
-      \tl_put_right:Nx \l_@@_internal_a_tl
+      \tl_put_right:Ne \l_@@_internal_a_tl
         {
           \exp_after:wN \@@_escape_loop:N \g_@@_internal_tl
           \scan_stop: \prg_break_point:
@@ -1797,17 +1797,17 @@
     \prg_break:
   }
 \cs_new:cpn { @@_escape_~:w } { }
-\cs_new:cpx { @@_escape_/a:w }
+\cs_new:cpe { @@_escape_/a:w }
   { \exp_not:N \@@_escape_raw:N \iow_char:N \^^G }
-\cs_new:cpx { @@_escape_/t:w }
+\cs_new:cpe { @@_escape_/t:w }
   { \exp_not:N \@@_escape_raw:N \iow_char:N \^^I }
-\cs_new:cpx { @@_escape_/n:w }
+\cs_new:cpe { @@_escape_/n:w }
   { \exp_not:N \@@_escape_raw:N \iow_char:N \^^J }
-\cs_new:cpx { @@_escape_/f:w }
+\cs_new:cpe { @@_escape_/f:w }
   { \exp_not:N \@@_escape_raw:N \iow_char:N \^^L }
-\cs_new:cpx { @@_escape_/r:w }
+\cs_new:cpe { @@_escape_/r:w }
   { \exp_not:N \@@_escape_raw:N \iow_char:N \^^M }
-\cs_new:cpx { @@_escape_/e:w }
+\cs_new:cpe { @@_escape_/e:w }
   { \exp_not:N \@@_escape_raw:N \iow_char:N \^^[ }
 %    \end{macrocode}
 % \end{macro}
@@ -2421,7 +2421,7 @@
         }
         { }
       \if_int_compare:w \l_@@_group_level_int > \c_zero_int
-        \msg_error:nnx { regex } { missing-rparen }
+        \msg_error:nne { regex } { missing-rparen }
           { \int_use:N \l_@@_group_level_int }
         \prg_replicate:nn
           { \l_@@_group_level_int }
@@ -2440,7 +2440,7 @@
       \fi:
       \tl_build_put_right:Nn \l_@@_build_tl { \if_false: { \fi: } }
       \tl_build_end:N \l_@@_build_tl
-      \exp_args:NNNx
+      \exp_args:NNNe
     \group_end:
     \tl_set:Nn \l_@@_internal_regex { \l_@@_build_tl }
   }
@@ -2550,7 +2550,7 @@
         \tl_build_put_right:Nn \l_@@_build_tl
           { \@@_class:NnnnN \c_true_bool { \if_false: } \fi: }
       }
-    \tl_build_put_right:Nx \l_@@_build_tl
+    \tl_build_put_right:Ne \l_@@_build_tl
       {
         \if_int_compare:w \l_@@_catcodes_int <
           \c_@@_all_catcodes_int
@@ -2567,19 +2567,19 @@
 % \end{macro}
 %
 % \begin{macro}
-%   {\@@_compile_abort_tokens:n, \@@_compile_abort_tokens:x}
+%   {\@@_compile_abort_tokens:n, \@@_compile_abort_tokens:e}
 %   This function places the collected tokens back in the input stream,
 %   each as a raw character. Spaces are not preserved.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_compile_abort_tokens:n #1
   {
-    \use:x
+    \use:e
       {
         \exp_args:No \tl_map_function:nN { \tl_to_str:n {#1} }
           \@@_compile_raw:N
       }
   }
-\cs_generate_variant:Nn \@@_compile_abort_tokens:n { x }
+\cs_generate_variant:Nn \@@_compile_abort_tokens:n { e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2617,7 +2617,7 @@
 % \end{macro}
 %
 % \begin{macro}{\@@_compile_quantifier_none:}
-% \begin{macro}{\@@_compile_quantifier_abort:xNN}
+% \begin{macro}{\@@_compile_quantifier_abort:eNN}
 %   Those functions are called whenever there is no quantifier, or a
 %   braced construction is invalid (equivalent to no quantifier, and
 %   whatever characters were grabbed are left raw).
@@ -2627,11 +2627,11 @@
     \tl_build_put_right:Nn \l_@@_build_tl
       { \if_false: { \fi: } { 1 } { 0 } \c_false_bool }
   }
-\cs_new_protected:Npn \@@_compile_quantifier_abort:xNN #1#2#3
+\cs_new_protected:Npn \@@_compile_quantifier_abort:eNN #1#2#3
   {
     \@@_compile_quantifier_none:
-    \msg_warning:nnxx { regex } { invalid-quantifier } {#1} {#3}
-    \@@_compile_abort_tokens:x {#1}
+    \msg_warning:nnee { regex } { invalid-quantifier } {#1} {#3}
+    \@@_compile_abort_tokens:e {#1}
     #2 #3
   }
 %    \end{macrocode}
@@ -2703,7 +2703,7 @@
   {
     \@@_get_digits:NTFw \l_@@_internal_a_int
       { \@@_compile_quantifier_braced_auxi:w }
-      { \@@_compile_quantifier_abort:xNN { \c_left_brace_str } }
+      { \@@_compile_quantifier_abort:eNN { \c_left_brace_str } }
   }
 \cs_new_protected:Npn \@@_compile_quantifier_braced_auxi:w #1#2
   {
@@ -2722,7 +2722,7 @@
           }
       }
       {
-        \@@_compile_quantifier_abort:xNN
+        \@@_compile_quantifier_abort:eNN
           { \c_left_brace_str \int_use:N \l_@@_internal_a_int }
         #1 #2
       }
@@ -2735,7 +2735,7 @@
           { \int_use:N \l_@@_internal_a_int } { -1 }
       }
       {
-        \@@_compile_quantifier_abort:xNN
+        \@@_compile_quantifier_abort:eNN
           { \c_left_brace_str \int_use:N \l_@@_internal_a_int , }
         #1 #2
       }
@@ -2746,7 +2746,7 @@
       {
         \if_int_compare:w \l_@@_internal_a_int >
           \l_@@_internal_b_int
-          \msg_error:nnxx { regex } { backwards-quantifier }
+          \msg_error:nnee { regex } { backwards-quantifier }
             { \int_use:N \l_@@_internal_a_int }
             { \int_use:N \l_@@_internal_b_int }
           \int_zero:N \l_@@_internal_b_int
@@ -2758,7 +2758,7 @@
           { \int_use:N \l_@@_internal_b_int }
       }
       {
-        \@@_compile_quantifier_abort:xNN
+        \@@_compile_quantifier_abort:eNN
           {
             \c_left_brace_str
             \int_use:N \l_@@_internal_a_int ,
@@ -2780,7 +2780,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_compile_raw_error:N #1
   {
-    \msg_error:nnx { regex } { bad-escape } {#1}
+    \msg_error:nne { regex } { bad-escape } {#1}
     \@@_compile_raw:N #1
   }
 %    \end{macrocode}
@@ -2839,9 +2839,9 @@
     \@@_if_end_range:NNTF #2 #3
       {
         \if_int_compare:w `#1 > `#3 \exp_stop_f:
-          \msg_error:nnxx { regex } { range-backwards } {#1} {#3}
+          \msg_error:nnee { regex } { range-backwards } {#1} {#3}
         \else:
-          \tl_build_put_right:Nx \l_@@_build_tl
+          \tl_build_put_right:Ne \l_@@_build_tl
             {
               \if_int_compare:w `#1 = `#3 \exp_stop_f:
                 \@@_item_equal:n
@@ -2853,9 +2853,9 @@
         \fi:
       }
       {
-        \msg_warning:nnxx { regex } { range-missing-end }
+        \msg_warning:nnee { regex } { range-missing-end }
           {#1} { \c_backslash_str #3 }
-        \tl_build_put_right:Nx \l_@@_build_tl
+        \tl_build_put_right:Ne \l_@@_build_tl
           {
             \@@_item_equal:n { \int_value:w `#1 \exp_stop_f: }
             \@@_item_equal:n { \int_value:w `- \exp_stop_f: }
@@ -2873,7 +2873,7 @@
 %   \cs{@@_prop_.:}, which matches any character or control
 %   sequence, and refuses $-2$ (end-marker).
 %    \begin{macrocode}
-\cs_new_protected:cpx { @@_compile_.: }
+\cs_new_protected:cpe { @@_compile_.: }
   {
     \exp_not:N \@@_if_in_class:TF
       { \@@_compile_raw:N . }
@@ -2904,9 +2904,9 @@
 %    \begin{macrocode}
 \cs_set_protected:Npn \@@_tmp:w #1#2
   {
-    \cs_new_protected:cpx { @@_compile_/#1: }
+    \cs_new_protected:cpe { @@_compile_/#1: }
       { \@@_compile_one:n \exp_not:c { @@_prop_#1: } }
-    \cs_new_protected:cpx { @@_compile_/#2: }
+    \cs_new_protected:cpe { @@_compile_/#2: }
       {
         \@@_compile_one:n
           { \@@_item_reverse:n { \exp_not:c { @@_prop_#1: } } }
@@ -2967,8 +2967,8 @@
           }
       }
   }
-\exp_args:Nx \@@_tmp:w { \iow_char:N \^ } { \@@_A_test: }
-\exp_args:Nx \@@_tmp:w { \iow_char:N \$ } { \@@_Z_test: }
+\exp_args:Ne \@@_tmp:w { \iow_char:N \^ } { \@@_A_test: }
+\exp_args:Ne \@@_tmp:w { \iow_char:N \$ } { \@@_Z_test: }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -3117,11 +3117,11 @@
           {
             : { \@@_compile_class_posix:NNNNw }
             = {
-                \msg_warning:nnx { regex }
+                \msg_warning:nne { regex }
                   { posix-unsupported } { = }
               }
             . {
-                \msg_warning:nnx { regex }
+                \msg_warning:nne { regex }
                   { posix-unsupported } { . }
               }
           }
@@ -3133,12 +3133,12 @@
     \@@_two_if_eq:NNNNTF #5 #6 \@@_compile_special:N ^
       {
         \bool_set_false:N \l_@@_internal_bool
-        \__kernel_tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi:
+        \__kernel_tl_set:Ne \l_@@_internal_a_tl { \if_false: } \fi:
           \@@_compile_class_posix_loop:w
       }
       {
         \bool_set_true:N \l_@@_internal_bool
-        \__kernel_tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi:
+        \__kernel_tl_set:Ne \l_@@_internal_a_tl { \if_false: } \fi:
           \@@_compile_class_posix_loop:w #5 #6
       }
   }
@@ -3163,9 +3163,9 @@
               }
           }
           {
-            \msg_warning:nnx { regex } { posix-unknown }
+            \msg_warning:nne { regex } { posix-unknown }
               { \l_@@_internal_a_tl }
-            \@@_compile_abort_tokens:x
+            \@@_compile_abort_tokens:e
               {
                 [: \bool_if:NF \l_@@_internal_bool { ^ }
                 \l_@@_internal_a_tl :]
@@ -3173,9 +3173,9 @@
           }
       }
       {
-        \msg_error:nnxx { regex } { posix-missing-close }
+        \msg_error:nnee { regex } { posix-missing-close }
           { [: \l_@@_internal_a_tl } { #2 #4 }
-        \@@_compile_abort_tokens:x { [: \l_@@_internal_a_tl }
+        \@@_compile_abort_tokens:e { [: \l_@@_internal_a_tl }
         #1 #2 #3 #4
       }
   }
@@ -3213,7 +3213,7 @@
     \if_int_compare:w \l_@@_group_level_int > \c_zero_int
         \tl_build_put_right:Nn \l_@@_build_tl { \if_false: { \fi: } }
         \tl_build_end:N \l_@@_build_tl
-        \exp_args:NNNx
+        \exp_args:NNNe
       \group_end:
       \tl_build_put_right:Nn \l_@@_build_tl { \l_@@_build_tl }
       \int_set_eq:NN \l_@@_catcodes_int \l_@@_default_catcodes_int
@@ -3252,7 +3252,7 @@
         \cs_if_exist_use:cF
           { @@_compile_special_group_\token_to_str:N #4 :w }
           {
-            \msg_warning:nnx { regex } { special-group-unknown }
+            \msg_warning:nne { regex } { special-group-unknown }
               { (? #4 }
             \@@_compile_group_begin:N \@@_group:nnnN
               \@@_compile_raw:N ? #3 #4
@@ -3321,7 +3321,7 @@
           { \@@_item_caseless_range:nn }
       }
       {
-        \msg_warning:nnx { regex } { unknown-option } { (?i #2 }
+        \msg_warning:nne { regex } { unknown-option } { (?i #2 }
         \@@_compile_raw:N (
         \@@_compile_raw:N ?
         \@@_compile_raw:N i
@@ -3340,7 +3340,7 @@
           { \@@_item_caseful_range:nn }
       }
       {
-        \msg_warning:nnx { regex } { unknown-option } { (?-#2#4 }
+        \msg_warning:nne { regex } { unknown-option } { (?-#2#4 }
         \@@_compile_raw:N (
         \@@_compile_raw:N ?
         \@@_compile_raw:N -
@@ -3379,7 +3379,7 @@
       }
       { \cs_if_exist_use:cF { @@_compile_c_#2:w } }
           {
-            \msg_error:nnx { regex } { c-missing-category } {#2}
+            \msg_error:nne { regex } { c-missing-category } {#2}
             #1 #2
           }
   }
@@ -3453,7 +3453,7 @@
           { \@@_compile_c_lbrack_end: }
       }
           {
-            \msg_error:nnx { regex } { c-missing-rbrack } {#2}
+            \msg_error:nne { regex } { c-missing-rbrack } {#2}
             \@@_compile_c_lbrack_end:
             #1 #2
           }
@@ -3534,12 +3534,12 @@
   {
     \@@_compile_end:
     \flag_clear:n { @@_cs }
-    \__kernel_tl_set:Nx \l_@@_internal_a_tl
+    \__kernel_tl_set:Ne \l_@@_internal_a_tl
       {
         \exp_after:wN \@@_compile_cs_aux:Nn \l_@@_internal_regex
         \q_@@_nil \q_@@_nil \q_@@_recursion_stop
       }
-    \exp_args:Nx \@@_compile_one:n
+    \exp_args:Ne \@@_compile_one:n
       {
         \flag_if_raised:nTF { @@_cs }
           { \@@_item_cs:n { \exp_not:o \l_@@_internal_regex } }
@@ -3622,7 +3622,7 @@
     \@@_two_if_eq:NNNNTF #2 #3 \@@_compile_special:N \c_left_brace_str
       {
         \tl_set:Nn \l_@@_internal_b_tl {#1}
-        \__kernel_tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi:
+        \__kernel_tl_set:Ne \l_@@_internal_a_tl { \if_false: } \fi:
         \@@_compile_u_loop:NN
       }
       {
@@ -3665,7 +3665,7 @@
           }
           {
             \if_false: { \fi: }
-            \msg_error:nnx { regex } { u-missing-rbrace } {#2}
+            \msg_error:nne { regex } { u-missing-rbrace } {#2}
             \l_@@_internal_b_tl
             #1 #2
           }
@@ -3691,7 +3691,7 @@
     \group_begin:
       \cs_set:Npn \@@_group:nnnN { \@@_group_no_capture:nnnN }
       \cs_set:Npn \@@_group_resetting:nnnN { \@@_group_no_capture:nnnN }
-      \exp_args:NNx
+      \exp_args:NNe
     \group_end:
     \@@_compile_ur:n { \use:c { \l_@@_internal_a_tl } }
   }
@@ -3756,12 +3756,12 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_compile_u_in_cs:
   {
-    \__kernel_tl_gset:Nx \g_@@_internal_tl
+    \__kernel_tl_gset:Ne \g_@@_internal_tl
       {
         \exp_args:No \__kernel_str_to_other_fast:n
           { \l_@@_internal_a_tl }
       }
-    \tl_build_put_right:Nx \l_@@_build_tl
+    \tl_build_put_right:Ne \l_@@_build_tl
       {
         \tl_map_function:NN \g_@@_internal_tl
           \@@_compile_u_in_cs_aux:n
@@ -3786,7 +3786,7 @@
   {
     \tl_analysis_map_inline:Nn \l_@@_internal_a_tl
       {
-        \tl_build_put_right:Nx \l_@@_build_tl
+        \tl_build_put_right:Ne \l_@@_build_tl
           {
             \@@_class:NnnnN \c_true_bool
               {
@@ -4096,7 +4096,7 @@
 \cs_new_protected:Npn \@@_show_one:n #1
   {
     \int_incr:N \l_@@_show_lines_int
-    \tl_build_put_right:Nx \l_@@_build_tl
+    \tl_build_put_right:Ne \l_@@_build_tl
       {
         \exp_not:N \iow_newline:
         \seq_map_function:NN \l_@@_show_prefix_seq \use:n
@@ -4113,7 +4113,7 @@
 %   second argument in a deeper level of nesting.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_show_push:n #1
-  { \seq_put_right:Nx \l_@@_show_prefix_seq { #1 ~ } }
+  { \seq_put_right:Ne \l_@@_show_prefix_seq { #1 ~ } }
 \cs_new_protected:Npn \@@_show_pop:
   { \seq_pop_right:NN \l_@@_show_prefix_seq \l_@@_internal_a_tl }
 \cs_new_protected:Npn \@@_show_scope:nn #1#2
@@ -4186,7 +4186,7 @@
                 \bool_if:NTF #1 { Match } { Don't~match }
                 \@@_msg_repeated:nnN {#3} {#4} #5
               }
-            \tl_build_put_right:Nx \l_@@_build_tl
+            \tl_build_put_right:Ne \l_@@_build_tl
               { \exp_not:o \l_@@_internal_a_tl }
           }
       }
@@ -4367,7 +4367,7 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\@@_case_build:n, \@@_case_build:x, \@@_case_build_aux:Nn, \@@_case_build_loop:n}
+% \begin{macro}{\@@_case_build:n, \@@_case_build:e, \@@_case_build_aux:Nn, \@@_case_build_loop:n}
 %   See \cs{@@_build:n}, but with a loop.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_case_build:n #1
@@ -4375,7 +4375,7 @@
     \@@_case_build_aux:Nn \c_true_bool {#1}
     \int_gzero:N \g_@@_case_int
   }
-\cs_generate_variant:Nn \@@_case_build:n { x }
+\cs_generate_variant:Nn \@@_case_build:n { e }
 \cs_new_protected:Npn \@@_case_build_aux:Nn #1#2
   {
     \@@_standard_escapechar:
@@ -4386,7 +4386,7 @@
       { \@@_action_start_wildcard:N #1 }
     %
     \@@_build_new_state:
-    \@@_toks_put_left:Nx \l_@@_left_state_int
+    \@@_toks_put_left:Ne \l_@@_left_state_int
       { \@@_action_submatch:nN { 0 } < }
     \@@_push_lr_states:
     \int_zero:N \l_@@_case_max_group_int
@@ -4410,7 +4410,7 @@
       }
     \seq_pop:NN \l_@@_right_state_seq \l_@@_internal_a_tl
     \int_set:Nn \l_@@_right_state_int \l_@@_internal_a_tl
-    \@@_toks_put_left:Nx \l_@@_right_state_int
+    \@@_toks_put_left:Ne \l_@@_right_state_int
       {
         \@@_action_submatch:nN { 0 } >
         \int_gset:Nn \g_@@_case_int
@@ -4498,9 +4498,9 @@
 %   differing usage later on. Both functions could be optimized.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_build_transition_left:NNN #1#2#3
-  { \@@_toks_put_left:Nx  #2 { #1 { \int_eval:n { #3 - #2 } } } }
+  { \@@_toks_put_left:Ne  #2 { #1 { \int_eval:n { #3 - #2 } } } }
 \cs_new_protected:Npn \@@_build_transition_right:nNn #1#2#3
-  { \@@_toks_put_right:Nx #2 { #1 { \int_eval:n { #3 - #2 } } } }
+  { \@@_toks_put_right:Ne #2 { #1 { \int_eval:n { #3 - #2 } } } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4529,7 +4529,7 @@
 \cs_new_protected:Npn \@@_build_transitions_lazyness:NNNNN #1#2#3#4#5
   {
     \@@_build_new_state:
-    \@@_toks_put_right:Nx \l_@@_left_state_int
+    \@@_toks_put_right:Ne \l_@@_left_state_int
       {
         \if_meaning:w \c_true_bool #1
           #2 { \int_eval:n { #3 - \l_@@_left_state_int } }
@@ -4557,7 +4557,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_class:NnnnN #1#2#3#4#5
   {
-    \cs_set:Npx \@@_tests_action_cost:n ##1
+    \cs_set:Npe \@@_tests_action_cost:n ##1
       {
         \exp_not:n { \exp_not:n {#2} }
         \bool_if:NTF #1
@@ -4791,8 +4791,8 @@
 \cs_new_protected:Npn \@@_group_submatches:nNN #1#2#3
   {
     \if_int_compare:w #1 > - \c_one_int
-      \@@_toks_put_left:Nx #2 { \@@_action_submatch:nN {#1} < }
-      \@@_toks_put_left:Nx #3 { \@@_action_submatch:nN {#1} > }
+      \@@_toks_put_left:Ne #2 { \@@_action_submatch:nN {#1} < }
+      \@@_toks_put_left:Ne #3 { \@@_action_submatch:nN {#1} > }
     \fi:
   }
 %    \end{macrocode}
@@ -4953,7 +4953,7 @@
 \cs_new_protected:Npn \@@_assertion:Nn #1#2
   {
     \@@_build_new_state:
-    \@@_toks_put_right:Nx \l_@@_left_state_int
+    \@@_toks_put_right:Ne \l_@@_left_state_int
       {
         \exp_not:n {#2}
         \@@_break_point:TF
@@ -5005,7 +5005,7 @@
 \cs_new_protected:Npn \@@_command_K:
   {
     \@@_build_new_state:
-    \@@_toks_put_right:Nx \l_@@_left_state_int
+    \@@_toks_put_right:Ne \l_@@_left_state_int
       {
         \@@_action_submatch:nN { 0 } <
         \bool_set_true:N \l_@@_fresh_thread_bool
@@ -5347,7 +5347,7 @@
     \fi:
     \int_set_eq:NN \l_@@_start_pos_int \l_@@_success_pos_int
     \bool_set_false:N \l_@@_match_success_bool
-    \tl_set:Nx \l_@@_curr_submatches_tl
+    \tl_set:Ne \l_@@_curr_submatches_tl
       { \prg_replicate:nn { 2 * \l_@@_capturing_group_int } { 0 , } }
     \int_set_eq:NN \l_@@_max_thread_int \l_@@_min_thread_int
     \@@_store_state:n { \l_@@_min_state_int }
@@ -5423,10 +5423,10 @@
     \tl_set:Nn \l_@@_curr_token_tl {#1}
     \int_set:Nn \l_@@_curr_char_int {#2}
     \int_set:Nn \l_@@_curr_catcode_int { "#3 }
-    \tl_build_put_right:Nx \l_@@_matched_analysis_tl
+    \tl_build_put_right:Ne \l_@@_matched_analysis_tl
       { \exp_not:o \l_@@_curr_analysis_tl }
     \tl_set:Nn \l_@@_curr_analysis_tl { { {#1} {#2} #3 } }
-    \use:x
+    \use:e
       {
         \int_set_eq:NN \l_@@_max_thread_int \l_@@_min_thread_int
         \int_step_function:nnN
@@ -5539,7 +5539,7 @@
   { \@@_action_free_aux:nn { < \l_@@_step_int } }
 \cs_new_protected:Npn \@@_action_free_aux:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \int_add:Nn \l_@@_curr_state_int {#2}
         \exp_not:n
@@ -5569,7 +5569,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_action_cost:n #1
   {
-    \exp_args:Nx \@@_store_state:n
+    \exp_args:Ne \@@_store_state:n
       { \int_eval:n { \l_@@_curr_state_int + #1 } }
   }
 %    \end{macrocode}
@@ -5627,7 +5627,7 @@
   }
 \cs_new_protected:Npn \@@_action_submatch_aux:w #1 ; #2#3
   {
-    \tl_set:Nx \l_@@_curr_submatches_tl
+    \tl_set:Ne \l_@@_curr_submatches_tl
       {
         \prg_replicate:nn
           { #2 \if_meaning:w > #3 + \l_@@_capturing_group_int \fi: }
@@ -5844,7 +5844,7 @@
 %
 % \subsubsection{Framework}
 %
-% \begin{macro}{\@@_replacement:n, \@@_replacement:x}
+% \begin{macro}{\@@_replacement:n, \@@_replacement:e}
 % \begin{macro}{\@@_replacement_apply:Nn, \@@_replacement_set:n}
 %   The replacement text is built incrementally. We keep track in
 %   \cs{l_@@_balance_int} of the balance of explicit begin- and
@@ -5882,18 +5882,18 @@
         {#2}
       \prg_do_nothing: \prg_do_nothing:
       \if_int_compare:w \l_@@_replacement_csnames_int > \c_zero_int
-        \msg_error:nnx { regex } { replacement-missing-rbrace }
+        \msg_error:nne { regex } { replacement-missing-rbrace }
           { \int_use:N \l_@@_replacement_csnames_int }
-        \tl_build_put_right:Nx \l_@@_build_tl
+        \tl_build_put_right:Ne \l_@@_build_tl
           { \prg_replicate:nn \l_@@_replacement_csnames_int \cs_end: }
       \fi:
       \seq_if_empty:NF \l_@@_replacement_category_seq
         {
-          \msg_error:nnx { regex } { replacement-missing-rparen }
+          \msg_error:nne { regex } { replacement-missing-rparen }
             { \seq_count:N \l_@@_replacement_category_seq }
           \seq_clear:N \l_@@_replacement_category_seq
         }
-      \tl_gput_right:Nx \g_@@_balance_tl
+      \tl_gput_right:Ne \g_@@_balance_tl
         { + \int_use:N \l_@@_balance_int }
       \tl_build_end:N \l_@@_build_tl
       \exp_args:NNo
@@ -5900,7 +5900,7 @@
     \group_end:
     #1 \l_@@_build_tl
   }
-\cs_generate_variant:Nn \@@_replacement:n { x }
+\cs_generate_variant:Nn \@@_replacement:n { e }
 \cs_new_protected:Npn \@@_replacement_set:n #1
   {
     \cs_set:Npn \@@_replacement_do_one_match:n ##1
@@ -5927,7 +5927,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_case_replacement:n, \@@_case_replacement:x}
+% \begin{macro}{\@@_case_replacement:n, \@@_case_replacement:e}
 %    \begin{macrocode}
 \tl_new:N \g_@@_case_replacement_tl
 \tl_new:N \g_@@_case_balance_tl
@@ -5947,7 +5947,7 @@
     \exp_args:No \@@_replacement_set:n
       { \g_@@_case_replacement_tl \fi: }
   }
-\cs_generate_variant:Nn \@@_case_replacement:n { x }
+\cs_generate_variant:Nn \@@_case_replacement:n { e }
 \cs_new_protected:Npn \@@_case_replacement_aux:n #1
   {
     \tl_gput_right:Nn \g_@@_case_replacement_tl { \or: #1 }
@@ -6458,7 +6458,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_replacement_error:NNN #1#2#3
   {
-    \msg_error:nnx { regex } { replacement-#1 } {#3}
+    \msg_error:nne { regex } { replacement-#1 } {#3}
     #2 #3
   }
 %    \end{macrocode}
@@ -6502,7 +6502,7 @@
 \cs_new_protected:Npn \regex_const:Nn #1#2
   {
     \@@_compile:n {#2}
-    \tl_const:Nx #1 { \exp_not:o \l_@@_internal_regex }
+    \tl_const:Ne #1 { \exp_not:o \l_@@_internal_regex }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -6516,8 +6516,8 @@
 %   Then show the variable with some appropriate text. The auxiliary
 %   \cs{@@_show:N} is defined in a different section.
 %    \begin{macrocode}
-\cs_new_protected:Npn \regex_show:n { \@@_show:Nn \msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:n { \@@_show:Nn \msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:n { \@@_show:Nn \msg_show:nneeee }
+\cs_new_protected:Npn \regex_log:n { \@@_show:Nn \msg_log:nneeee }
 \cs_new_protected:Npn \@@_show:Nn #1#2
   {
     \@@_compile:n {#2}
@@ -6526,8 +6526,8 @@
       { \tl_to_str:n {#2} } { }
       { \l_@@_internal_a_tl } { }
   }
-\cs_new_protected:Npn \regex_show:N { \@@_show:NN \msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:N { \@@_show:NN \msg_show:nneeee }
+\cs_new_protected:Npn \regex_log:N { \@@_show:NN \msg_log:nneeee }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {
     \__kernel_chk_tl_type:NnnT #2 { regex }
@@ -6663,7 +6663,7 @@
   {
     \int_if_odd:nTF { \tl_count:n {#1} }
       {
-        \msg_error:nnxxxx { regex } { case-odd }
+        \msg_error:nneeee { regex } { case-odd }
           { \token_to_str:N \regex_replace_case_once:nN(TF) } { code }
           { \tl_count:n {#1} } { \tl_to_str:n {#1} }
         \use_ii:nn
@@ -6670,8 +6670,8 @@
       }
       {
         \@@_replace_once_aux:nnN
-          { \@@_case_build:x { \@@_tl_odd_items:n {#1} } }
-          { \@@_replacement:x { \tl_item:nn {#1} { 2 * \g_@@_case_int } } }
+          { \@@_case_build:e { \@@_tl_odd_items:n {#1} } }
+          { \@@_replacement:e { \tl_item:nn {#1} { 2 * \g_@@_case_int } } }
           #2
         \bool_if:NTF \g_@@_success_bool
       }
@@ -6695,7 +6695,7 @@
   {
     \int_if_odd:nTF { \tl_count:n {#1} }
       {
-        \msg_error:nnxxxx { regex } { case-odd }
+        \msg_error:nneeee { regex } { case-odd }
           { \token_to_str:N \regex_replace_case_all:nN(TF) } { code }
           { \tl_count:n {#1} } { \tl_to_str:n {#1} }
         \use_ii:nn
@@ -6702,8 +6702,8 @@
       }
       {
         \@@_replace_all_aux:nnN
-          { \@@_case_build:x { \@@_tl_odd_items:n {#1} } }
-          { \@@_case_replacement:x { \@@_tl_even_items:n {#1} } }
+          { \@@_case_build:e { \@@_tl_odd_items:n {#1} } }
+          { \@@_case_replacement:e { \@@_tl_even_items:n {#1} } }
           #2
         \bool_if:NTF \g_@@_success_bool
       }
@@ -6857,7 +6857,7 @@
   {
     \int_if_odd:nTF { \tl_count:n {#1} }
       {
-        \msg_error:nnxxxx { regex } { case-odd }
+        \msg_error:nneeee { regex } { case-odd }
           { \token_to_str:N \regex_match_case:nn(TF) } { code }
           { \tl_count:n {#1} } { \tl_to_str:n {#1} }
         \use_ii:nn
@@ -6864,7 +6864,7 @@
       }
       {
         \@@_if_match:nn
-          { \@@_case_build:x { \@@_tl_odd_items:n {#1} } }
+          { \@@_case_build:e { \@@_tl_odd_items:n {#1} } }
           {#2}
         \bool_if:NTF \g_@@_success_bool
       }
@@ -7001,7 +7001,7 @@
       \flag_clear:n { @@_begin }
       \flag_clear:n { @@_end }
       \cs_set_eq:NN \@@_tmp:w \scan_stop:
-      \__kernel_tl_gset:Nx \g_@@_internal_tl
+      \__kernel_tl_gset:Ne \g_@@_internal_tl
         {
           \int_step_function:nnN { \l_@@_min_submatch_int }
             { \l_@@_submatch_int - 1 } \@@_extract_seq_aux:n
@@ -7012,12 +7012,12 @@
       \int_set:Nn \l_@@_added_end_int
         { \flag_height:n { @@_end } }
       \tex_afterassignment:D \@@_extract_check:w
-      \__kernel_tl_gset:Nx \g_@@_internal_tl
+      \__kernel_tl_gset:Ne \g_@@_internal_tl
         { \g_@@_internal_tl \if_false: { \fi: } }
       \int_compare:nNnT
         { \l_@@_added_begin_int + \l_@@_added_end_int } > 0
         {
-          \msg_error:nnxxx { regex } { result-unbalanced }
+          \msg_error:nneee { regex } { result-unbalanced }
             { splitting~or~extracting~submatches }
             { \int_use:N \l_@@_added_begin_int }
             { \int_use:N \l_@@_added_end_int }
@@ -7087,17 +7087,17 @@
 %   In \cs{@@_group_end_extract_seq:N} we had to expand
 %   \cs{g_@@_internal_tl} to turn \cs{if_false:} constructions into
 %   actual begin-group and end-group tokens.  This is done with a
-%   \cs{__kernel_tl_gset:Nx} assignment, and \cs{@@_extract_check:w} is
+%   \cs{__kernel_tl_gset:Ne} assignment, and \cs{@@_extract_check:w} is
 %   run immediately after this assignment ends, thanks to the
 %   \tn{afterassignment} primitive.  If all of the items were properly
 %   balanced (enough begin-group tokens before end-group tokens, so |}{|
 %   is not) then \cs{@@_extract_check:w} is called just before the
-%   closing brace of the \cs{__kernel_tl_gset:Nx} (thanks to our sneaky
+%   closing brace of the \cs{__kernel_tl_gset:Ne} (thanks to our sneaky
 %   \cs{if_false:} |{| \cs{fi:} |}| construction), and finds that there
 %   is nothing left to expand.  If any of the items is unbalanced, the
 %   assignment gets ended early by an extra end-group token, and our
 %   check finds more tokens needing to be expanded in a new
-%   \cs{__kernel_tl_gset:Nx} assignment.  We need to add a begin-group
+%   \cs{__kernel_tl_gset:Ne} assignment.  We need to add a begin-group
 %   and an end-group tokens to the unbalanced item, namely to the last
 %   item found so far, which we reach through a loop.
 %    \begin{macrocode}
@@ -7113,7 +7113,7 @@
         \int_incr:N \l_@@_added_begin_int
         \int_incr:N \l_@@_added_end_int
         \tex_afterassignment:D \@@_extract_check:w
-        \__kernel_tl_gset:Nx \g_@@_internal_tl
+        \__kernel_tl_gset:Ne \g_@@_internal_tl
           {
             \exp_after:wN \@@_extract_check_loop:w
             \g_@@_internal_tl
@@ -7234,7 +7234,7 @@
             \@@_replacement_balance_one_match:n
               { \l_@@_zeroth_submatch_int }
           }
-        \__kernel_tl_set:Nx \l_@@_internal_a_tl
+        \__kernel_tl_set:Ne \l_@@_internal_a_tl
           {
             \@@_replacement_do_one_match:n
               { \l_@@_zeroth_submatch_int }
@@ -7283,7 +7283,7 @@
             { \l_@@_submatch_int - 1 }
             \@@_replacement_balance_one_match:n
         }
-      \__kernel_tl_set:Nx \l_@@_internal_a_tl
+      \__kernel_tl_set:Ne \l_@@_internal_a_tl
         {
           \int_step_function:nnnN
             { \l_@@_min_submatch_int }
@@ -7327,7 +7327,7 @@
     \@@_group_end_replace_try:
     \int_compare:nNnT { \l_@@_added_begin_int + \l_@@_added_end_int } > 0
       {
-        \msg_error:nnxxx { regex } { result-unbalanced }
+        \msg_error:nneee { regex } { result-unbalanced }
           { replacing } { \int_use:N \l_@@_added_begin_int }
           { \int_use:N \l_@@_added_end_int }
       }
@@ -7337,7 +7337,7 @@
 \cs_new_protected:Npn \@@_group_end_replace_try:
   {
     \tex_afterassignment:D \@@_group_end_replace_check:w
-    \__kernel_tl_gset:Nx \g_@@_internal_tl
+    \__kernel_tl_gset:Ne \g_@@_internal_tl
       {
         \prg_replicate:nn { \l_@@_added_begin_int } { { \if_false: } \fi: }
         \l_@@_internal_a_tl
@@ -7592,11 +7592,11 @@
 %   \cs{@@_replacement:n}, which as usual defines
 %   \cs{@@_replacement_do_one_match:n} to insert the tokens from the
 %   start of the match attempt to the beginning of the match, followed
-%   by the replacement text.  The \cs{use:x} expands for instance the
+%   by the replacement text.  The \cs{use:e} expands for instance the
 %   trailing \cs{@@_query_range:nn} down to a sequence of
 %   \cs{@@_reinsert_item:n} \Arg{tokens} where \meta{tokens}
 %   \texttt{o}-expand to a single token that we want to insert.  After
-%   \texttt{x}-expansion, \cs{use:x} does \cs{use:n}, so we have
+%   \texttt{e}-expansion, \cs{use:e} does \cs{use:n}, so we have
 %   \cs{exp_after:wN} \cs{l_@@_peek_true_tl} \cs{exp:w} \ldots{}
 %   \cs{exp_end:}.  This is set up such as to obtain
 %   \cs{l_@@_peek_true_tl} followed by the replaced tokens (possibly
@@ -7615,7 +7615,7 @@
         \cs_set_eq:NN \@@_replacement_exp_not:N \@@_peek_replacement_token:n
         \cs_set_eq:NN \@@_replacement_exp_not:V \@@_peek_replacement_var:N
         \exp_args:No \@@_replacement:n { \l_@@_replacement_tl }
-        \use:x
+        \use:e
           {
             \exp_not:n { \exp_after:wN \l_@@_peek_true_tl \exp:w }
             \@@_replacement_do_one_match:n
@@ -7736,7 +7736,7 @@
 %
 % Messages for the preparsing phase.
 %    \begin{macrocode}
-\use:x
+\use:e
   {
     \msg_new:nnn { regex } { trailing-backslash }
       { Trailing~'\iow_char:N\\'~in~regex~or~replacement. }
@@ -8107,20 +8107,20 @@
 % be merged.
 %
 % \begin{macro}
-%   {\@@_trace_push:nnN, \@@_trace_pop:nnN, \@@_trace:nnx}
+%   {\@@_trace_push:nnN, \@@_trace_pop:nnN, \@@_trace:nne}
 %   Here |#1| is the module name (\texttt{regex}) and |#2| is
 %   typically~1.  If the module's current tracing level is less than
 %   |#2| show nothing, otherwise write |#3| to the terminal.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_trace_push:nnN #1#2#3
-  { \@@_trace:nnx {#1} {#2} { entering~ \token_to_str:N #3 } }
+  { \@@_trace:nne {#1} {#2} { entering~ \token_to_str:N #3 } }
 \cs_new_protected:Npn \@@_trace_pop:nnN #1#2#3
-   { \@@_trace:nnx {#1} {#2} { leaving~ \token_to_str:N #3 } }
-\cs_new_protected:Npn \@@_trace:nnx #1#2#3
+   { \@@_trace:nne {#1} {#2} { leaving~ \token_to_str:N #3 } }
+\cs_new_protected:Npn \@@_trace:nne #1#2#3
   {
     \int_compare:nNnF
       { \int_use:c { g_@@_trace_#1_int } } < {#2}
-      { \iow_term:x { Trace:~#3 } }
+      { \iow_term:e { Trace:~#3 } }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -8143,7 +8143,7 @@
       \l_@@_min_state_int
       { \l_@@_max_state_int - 1 }
       {
-        \@@_trace:nnx { regex } {#1}
+        \@@_trace:nne { regex } {#1}
           { \iow_char:N \\toks ##1 = { \@@_toks_use:w ##1 } }
       }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -128,10 +128,10 @@
 %   {
 %     \seq_set_split:Nnn ,
 %     \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV ,
-%     \seq_set_split:Nnx , \seq_set_split:Nxx ,
+%     \seq_set_split:Nne , \seq_set_split:Nee ,
 %     \seq_gset_split:Nnn,
 %     \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV,
-%     \seq_gset_split:Nnx , \seq_gset_split:Nxx
+%     \seq_gset_split:Nne , \seq_gset_split:Nee
 %   }
 %   \begin{syntax}
 %     \cs{seq_set_split:Nnn} \meta{seq~var} \Arg{delimiter} \Arg{token list}
@@ -196,14 +196,14 @@
 % \section{Appending data to sequences}
 %
 % \begin{function}{
-%   \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv,
-%   \seq_put_left:No, \seq_put_left:Nx,
-%   \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv,
-%   \seq_put_left:co, \seq_put_left:cx,
-%   \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv,
-%   \seq_gput_left:No, \seq_gput_left:Nx,
-%   \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv,
-%   \seq_gput_left:co, \seq_gput_left:cx
+%   \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv, \seq_put_left:Ne,
+%   \seq_put_left:No,
+%   \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv, \seq_put_left:ce,
+%   \seq_put_left:co,
+%   \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv, \seq_gput_left:Ne,
+%   \seq_gput_left:No,
+%   \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv, \seq_gput_left:ce,
+%   \seq_gput_left:co
 % }
 %   \begin{syntax}
 %     \cs{seq_put_left:Nn} \meta{seq~var} \Arg{item}
@@ -212,14 +212,14 @@
 % \end{function}
 %
 % \begin{function}{
-%   \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv,
-%   \seq_put_right:No, \seq_put_right:Nx,
-%   \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv,
-%   \seq_put_right:co, \seq_put_right:cx,
-%   \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv,
-%   \seq_gput_right:No, \seq_gput_right:Nx,
-%   \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv,
-%   \seq_gput_right:co, \seq_gput_right:cx
+%   \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv, \seq_put_right:Ne,
+%   \seq_put_right:No,
+%   \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv, \seq_put_right:ce,
+%   \seq_put_right:co,
+%   \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv, \seq_gput_right:Ne,
+%   \seq_gput_right:No,
+%   \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv, \seq_gput_right:ce,
+%   \seq_gput_right:co,
 % }
 %   \begin{syntax}
 %     \cs{seq_put_right:Nn} \meta{seq~var} \Arg{item}
@@ -471,10 +471,10 @@
 %
 % \begin{function}
 %   {
-%     \seq_remove_all:Nn,  \seq_remove_all:NV,  \seq_remove_all:Nx, 
-%     \seq_remove_all:cn,  \seq_remove_all:cV,  \seq_remove_all:cx,
-%     \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Nx,
-%     \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:cx
+%     \seq_remove_all:Nn,  \seq_remove_all:NV,  \seq_remove_all:Ne, 
+%     \seq_remove_all:cn,  \seq_remove_all:cV,  \seq_remove_all:ce,
+%     \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Ne,
+%     \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:ce
 %   }
 %   \begin{syntax}
 %     \cs{seq_remove_all:Nn} \meta{seq~var} \Arg{item}
@@ -554,8 +554,10 @@
 %
 % \begin{function}[TF]
 %   {
-%     \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:No, \seq_if_in:Nx,
-%     \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv, \seq_if_in:co, \seq_if_in:cx
+%     \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv,  \seq_if_in:Ne,
+%     \seq_if_in:No,
+%     \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv, \seq_if_in:ce,
+%     \seq_if_in:co,
 %   }
 %   \begin{syntax}
 %     \cs{seq_if_in:NnTF} \meta{seq~var} \Arg{item} \Arg{true code} \Arg{false code}
@@ -905,12 +907,14 @@
 %
 % \begin{function}
 %   {
-%     \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:No, \seq_push:Nx,
-%     \seq_push:cn, \seq_push:cV, \seq_push:cv, \seq_push:co, \seq_push:cx,
-%     \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv,
-%     \seq_gpush:No, \seq_gpush:Nx,
-%     \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv,
-%     \seq_gpush:co, \seq_gpush:cx
+%     \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:Ne,
+%     \seq_push:No,
+%     \seq_push:cn, \seq_push:cV, \seq_push:cv,  \seq_push:ce,
+%     \seq_push:co,
+%     \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv,  \seq_gpush:Ne,
+%     \seq_gpush:No,
+%     \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv,  \seq_gpush:ce,
+%     \seq_gpush:co
 %   }
 %   \begin{syntax}
 %     \cs{seq_push:Nn} \meta{seq~var} \Arg{item}
@@ -1083,7 +1087,7 @@
 %   raised. The definition should always be set globally.
 % \end{function}
 %
-% \begin{function}{\@@_push_item_def:n, \@@_push_item_def:x}
+% \begin{function}{\@@_push_item_def:n, \@@_push_item_def:e}
 %   \begin{syntax}
 %     \cs{@@_push_item_def:n} \Arg{code}
 %   \end{syntax}
@@ -1234,22 +1238,22 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_set_from_clist:NN #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n }
   }
 \cs_new_protected:Npn \seq_set_from_clist:Nn #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n }
   }
 \cs_new_protected:Npn \seq_gset_from_clist:NN #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n }
   }
 \cs_new_protected:Npn \seq_gset_from_clist:Nn #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n }
   }
 \cs_generate_variant:Nn \seq_set_from_clist:NN  {     Nc }
@@ -1267,7 +1271,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_const_from_clist:Nn #1#2
   {
-    \tl_const:Nx #1
+    \tl_const:Ne #1
       { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n }
   }
 \cs_generate_variant:Nn \seq_const_from_clist:Nn { c }
@@ -1278,9 +1282,11 @@
 %   {
 %     \seq_set_split:Nnn ,
 %     \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV ,
+%     \seq_set_split:Nne , \seq_set_split:Nee ,
 %     \seq_set_split:Nnx , \seq_set_split:Nxx ,
 %     \seq_gset_split:Nnn,
-%     \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV,
+%     \seq_gset_split:NVn, \seq_gset_split:NnV, \seq_gset_split:NVV,
+%     \seq_gset_split:Nne, \seq_gset_split:Nee,
 %     \seq_gset_split:Nnx, \seq_gset_split:Nxx
 %   }
 % \begin{macro}
@@ -1316,13 +1322,13 @@
 %   braces which are outermost after space trimming.
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_set_split:Nnn
-  { \@@_set_split:NNNnn \__kernel_tl_set:Nx \tl_trim_spaces:n }
+  { \@@_set_split:NNNnn \__kernel_tl_set:Ne \tl_trim_spaces:n }
 \cs_new_protected:Npn \seq_gset_split:Nnn
-  { \@@_set_split:NNNnn \__kernel_tl_gset:Nx \tl_trim_spaces:n }
+  { \@@_set_split:NNNnn \__kernel_tl_gset:Ne \tl_trim_spaces:n }
 \cs_new_protected:Npn \seq_set_split_keep_spaces:Nnn
-  { \@@_set_split:NNNnn \__kernel_tl_set:Nx \exp_not:n }
+  { \@@_set_split:NNNnn \__kernel_tl_set:Ne \exp_not:n }
 \cs_new_protected:Npn \seq_gset_split_keep_spaces:Nnn
-  { \@@_set_split:NNNnn \__kernel_tl_gset:Nx \exp_not:n }
+  { \@@_set_split:NNNnn \__kernel_tl_gset:Ne \exp_not:n }
 \cs_new_protected:Npn \@@_set_split:NNNnn #1#2#3#4#5
   {
     \tl_if_empty:nTF {#4}
@@ -1342,7 +1348,7 @@
             \@@_set_split_end:
             \@@_set_split:Nw #2 \prg_do_nothing:
           }
-        \__kernel_tl_set:Nx \l_@@_internal_a_tl { \l_@@_internal_a_tl }
+        \__kernel_tl_set:Ne \l_@@_internal_a_tl { \l_@@_internal_a_tl }
       }
     #1 #3 { \s_@@ \l_@@_internal_a_tl }
   }
@@ -1354,8 +1360,10 @@
   }
 \cs_new:Npn \@@_set_split:w #1 \@@_set_split_end:
   { \@@_wrap_item:n {#1} }
-\cs_generate_variant:Nn \seq_set_split:Nnn  { NV , NnV , NVV , Nnx , Nxx }
-\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nnx , Nxx }
+\cs_generate_variant:Nn \seq_set_split:Nnn  { NV , NnV , NVV , Nne , Nee }
+\cs_generate_variant:Nn \seq_set_split:Nnn  { Nnx , Nxx }
+\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nne , Nee }
+\cs_generate_variant:Nn \seq_gset_split:Nnn { Nnx , Nxx }
 \cs_generate_variant:Nn \seq_set_split_keep_spaces:Nnn  { NnV }
 \cs_generate_variant:Nn \seq_gset_split_keep_spaces:Nnn { NnV }
 %    \end{macrocode}
@@ -1395,17 +1403,17 @@
 % \subsection{Appending data to either end}
 %
 % \begin{macro}{
-%   \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv,
+%   \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv, \seq_put_left:Ne,
 %   \seq_put_left:No, \seq_put_left:Nx,
-%   \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv,
+%   \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv,\seq_put_left:ce, 
 %   \seq_put_left:co, \seq_put_left:cx
 % }
 % \UnitTested
 % \begin{macro}{
-%   \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv,
+%   \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv, \seq_gput_left:Ne,
 %   \seq_gput_left:No, \seq_gput_left:Nx,
-%   \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv,
-%   \seq_gput_left:co, \seq_gput_left:cx
+%   \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv, \seq_gput_left:ce,
+%   \seq_gput_left:co, \seq_put_left:cx
 % }
 % \begin{macro}[EXP]{\@@_put_left_aux:w}
 %   When adding to the left of a sequence, remove \cs{s_@@}.  This is
@@ -1414,7 +1422,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_put_left:Nn #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       {
         \exp_not:n { \s_@@ \@@_item:n {#2} }
         \exp_not:f { \exp_after:wN \@@_put_left_aux:w #1 }
@@ -1422,7 +1430,7 @@
   }
 \cs_new_protected:Npn \seq_gput_left:Nn #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       {
         \exp_not:n { \s_@@ \@@_item:n {#2} }
         \exp_not:f { \exp_after:wN \@@_put_left_aux:w #1 }
@@ -1429,10 +1437,10 @@
       }
   }
 \cs_new:Npn \@@_put_left_aux:w \s_@@ { \exp_stop_f: }
-\cs_generate_variant:Nn \seq_put_left:Nn  {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_put_left:Nn  { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \seq_gput_left:Nn  {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_gput_left:Nn  { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \seq_put_left:Nn  {     NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_put_left:Nn  { c , cV , cv , ce , co ,cx }
+\cs_generate_variant:Nn \seq_gput_left:Nn {     NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_gput_left:Nn { c , cV , cv , ce , co , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1440,17 +1448,17 @@
 %
 % \begin{macro}
 %   {
-%     \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv,
+%     \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv, \seq_put_right:Ne,
 %     \seq_put_right:No, \seq_put_right:Nx,
-%     \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv,
+%     \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv, \seq_put_right:cx,
 %     \seq_put_right:co, \seq_put_right:cx
 %   }
 % \UnitTested
 % \begin{macro}
 %   {
-%     \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv,
+%     \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv, \seq_gput_right:Ne,
 %     \seq_gput_right:No, \seq_gput_right:Nx,
-%     \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv,
+%     \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv, \seq_gput_right:ce,
 %     \seq_gput_right:co, \seq_gput_right:cx
 %   }
 %   Since there is no trailing marker, adding an item to the right of a
@@ -1460,10 +1468,10 @@
   { \tl_put_right:Nn #1 { \@@_item:n {#2} } }
 \cs_new_protected:Npn \seq_gput_right:Nn #1#2
   { \tl_gput_right:Nn #1 { \@@_item:n {#2} } }
-\cs_generate_variant:Nn \seq_gput_right:Nn {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \seq_put_right:Nn {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_put_right:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \seq_put_right:Nn  {     NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_put_right:Nn  { c , cV , cv , ce , co , cx }
+\cs_generate_variant:Nn \seq_gput_right:Nn {     NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , ce , co , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1515,14 +1523,18 @@
 %
 % \begin{macro}
 %   {
-%     \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Nx,
-%     \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:cx
+%     \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Ne,
+%     \seq_remove_all:Nx,
+%     \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:ce
+%     \seq_remove_all:cx,
 %   }
 % \UnitTested
 % \begin{macro}
 %   {
-%     \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Nx,
-%     \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:cx
+%     \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Ne,
+%     \seq_gremove_all:Nx,
+%     \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:ce,
+%     \seq_gremove_all:Nx
 %   }
 % \UnitTested
 % \begin{macro}{\@@_remove_all_aux:NNn}
@@ -1541,9 +1553,9 @@
 %   \texttt{x}-type expansion (|#1 #2 {#2}|) ensures that nothing is lost.
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_remove_all:Nn
-  { \@@_remove_all_aux:NNn \__kernel_tl_set:Nx }
+  { \@@_remove_all_aux:NNn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gremove_all:Nn
-  { \@@_remove_all_aux:NNn \__kernel_tl_gset:Nx }
+  { \@@_remove_all_aux:NNn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_remove_all_aux:NNn #1#2#3
   {
     \@@_push_item_def:n
@@ -1564,8 +1576,10 @@
     #1 #2 {#2}
     \@@_pop_item_def:
   }
-\cs_generate_variant:Nn \seq_remove_all:Nn  { NV , Nx , c , cV , cx }
-\cs_generate_variant:Nn \seq_gremove_all:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \seq_remove_all:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \seq_remove_all:Nn  { Nx , cx }
+\cs_generate_variant:Nn \seq_gremove_all:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \seq_gremove_all:Nn { Nx , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1585,15 +1599,15 @@
 %   last argument \cs{use_ii:nn} vs \cs{use_i:nn}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_set_item:Nnn #1#2#3
-  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_i:nn }
+  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Ne \use_i:nn }
 \cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
-  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
+  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Ne \use_i:nn }
 \cs_generate_variant:Nn \seq_set_item:Nnn { c }
 \cs_generate_variant:Nn \seq_gset_item:Nnn { c }
 \prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
-  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
+  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Ne \use_ii:nn }
 \prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
-  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
+  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Ne \use_ii:nn }
 \prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
 \prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
 %    \end{macrocode}
@@ -1629,7 +1643,7 @@
   {
     #6
       {
-        \msg_error:nnxxx { seq } { item-too-large }
+        \msg_error:nneee { seq } { item-too-large }
           { \token_to_str:N #3 } {#2} {#1}
       }
       { \prg_return_false: }
@@ -1715,9 +1729,9 @@
 %   from the stack, and the memory consumption becomes linear.
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_reverse:N
-  { \@@_reverse:NN \__kernel_tl_set:Nx }
+  { \@@_reverse:NN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_greverse:N
-  { \@@_reverse:NN \__kernel_tl_gset:Nx }
+  { \@@_reverse:NN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_reverse:NN #1 #2
   {
     \cs_set_eq:NN \@@_tmp:w \@@_item:n
@@ -1780,7 +1794,7 @@
   {
     \int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int
       {
-        \msg_error:nnx { seq } { shuffle-too-large }
+        \msg_error:nne { seq } { shuffle-too-large }
           { \token_to_str:N #2 }
       }
       {
@@ -1793,7 +1807,7 @@
           \seq_gclear:N \g_@@_internal_seq
           \int_step_inline:nn \l_@@_internal_a_int
             {
-              \seq_gput_right:Nx \g_@@_internal_seq
+              \seq_gput_right:Ne \g_@@_internal_seq
                 { \tex_the:D \tex_toks:D ##1 }
             }
         \group_end:
@@ -1820,8 +1834,10 @@
 %
 % \begin{macro}[TF]
 %   {
-%     \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:No, \seq_if_in:Nx,
-%     \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv, \seq_if_in:co, \seq_if_in:cx
+%     \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:Ne,
+%     \seq_if_in:No, \seq_if_in:Nx,
+%     \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv,\seq_if_in:ce, 
+%     \seq_if_in:co, \seq_if_in:cx
 %   }
 % \UnitTested
 % \begin{macro}{\@@_if_in:}
@@ -1854,7 +1870,7 @@
 \cs_new:Npn \@@_if_in:
   { \prg_break:n { \group_end: \prg_return_true: } }
 \prg_generate_conditional_variant:Nnn \seq_if_in:Nn
-  { NV , Nv , No , Nx , c , cV , cv , co , cx } { T , F , TF }
+  { NV , Nv , Ne , No , Nx , c , cV , cv , ce , co , cx } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1896,7 +1912,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_get_left:NN #1#2
   {
-    \__kernel_tl_set:Nx #2
+    \__kernel_tl_set:Ne #2
       {
         \exp_after:wN \@@_get_left:wnw
         #1 \@@_item:n { \q_no_value } \s_@@_stop
@@ -1948,7 +1964,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_get_right:NN #1#2
   {
-    \__kernel_tl_set:Nx #2
+    \__kernel_tl_set:Ne #2
       {
         \exp_after:wN \use_i_ii:nnn
         \exp_after:wN \@@_get_right_loop:nw
@@ -1989,9 +2005,9 @@
 %   finally stops the loop.
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_pop_right:NN
-  { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_set:Nx }
+  { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gpop_right:NN
-  { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Nx }
+  { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_pop_right:NNN #1#2#3
   {
     \cs_set_eq:NN \@@_tmp:w \@@_item:n
@@ -2003,7 +2019,7 @@
         #2
         {
           \if_false: { \fi: }
-          \__kernel_tl_set:Nx #3
+          \__kernel_tl_set:Ne #3
         }
         { } \use_none:nn
     \cs_set_eq:NN \@@_item:n \@@_tmp:w
@@ -2051,10 +2067,10 @@
   { \@@_pop_TF:NNNN \@@_pop_left:NNN \tl_gset:Nn #1 #2 }
 \prg_new_protected_conditional:Npnn \seq_pop_right:NN #1#2
   { T , F , TF }
-  { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_set:Nx #1 #2 }
+  { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_set:Ne #1 #2 }
 \prg_new_protected_conditional:Npnn \seq_gpop_right:NN #1#2
   { T , F , TF }
-  { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Nx #1 #2 }
+  { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Ne #1 #2 }
 \prg_generate_conditional_variant:Nnn \seq_pop_left:NN { c }
   { T , F , TF }
 \prg_generate_conditional_variant:Nnn \seq_gpop_left:NN { c }
@@ -2174,7 +2190,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_push_item_def:n, \@@_push_item_def:x}
+% \begin{macro}{\@@_push_item_def:n, \@@_push_item_def:e}
 % \begin{macro}{\@@_push_item_def:}
 % \begin{macro}{\@@_pop_item_def:}
 %   The definition of \cs{@@_item:n} needs to be saved and restored at
@@ -2186,10 +2202,10 @@
     \@@_push_item_def:
     \cs_gset:Npn \@@_item:n ##1
   }
-\cs_new_protected:Npn \@@_push_item_def:x
+\cs_new_protected:Npn \@@_push_item_def:e
   {
     \@@_push_item_def:
-    \cs_gset:Npx \@@_item:n ##1
+    \cs_gset:Npe \@@_item:n ##1
   }
 \cs_new_protected:Npn \@@_push_item_def:
   {
@@ -2269,7 +2285,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_map_variable:NNn #1#2#3
   {
-    \@@_push_item_def:x
+    \@@_push_item_def:e
       {
         \tl_set:Nn \exp_not:N #2 {##1}
         \exp_not:n {#3}
@@ -2380,9 +2396,9 @@
 %   semantics.
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_set_map_x:NNn
-  { \@@_set_map_x:NNNn \__kernel_tl_set:Nx }
+  { \@@_set_map_x:NNNn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gset_map_x:NNn
-  { \@@_set_map_x:NNNn \__kernel_tl_gset:Nx }
+  { \@@_set_map_x:NNNn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_set_map_x:NNNn #1#2#3#4
   {
     \@@_push_item_def:n { \exp_not:N \@@_item:n {#4} }
@@ -2399,9 +2415,9 @@
 %   <inline function>.
 %    \begin{macrocode}
 \cs_new_protected:Npn \seq_set_map:NNn
-  { \@@_set_map:NNNn \__kernel_tl_set:Nx }
+  { \@@_set_map:NNNn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gset_map:NNn
-  { \@@_set_map:NNNn \__kernel_tl_gset:Nx }
+  { \@@_set_map:NNNn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \@@_set_map:NNNn #1#2#3#4
   {
     \@@_push_item_def:n { \exp_not:n { \@@_item:n {#4} } }
@@ -2507,37 +2523,27 @@
 % The same functions as for sequences, but with the correct naming.
 %
 % \begin{macro}{
-%   \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:No, \seq_push:Nx,
-%   \seq_push:cn, \seq_push:cV, \seq_push:cV, \seq_push:co, \seq_push:cx
+%     \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:Ne,
+%     \seq_push:No, \seq_push:Nx,
+%     \seq_push:cn, \seq_push:cV, \seq_push:cv,  \seq_push:ce,
+%     \seq_push:co, \seq_push:cx
 % }
 % \UnitTested
 % \begin{macro}{
-%   \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv, \seq_gpush:No, \seq_gpush:Nx,
-%   \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv, \seq_gpush:co, \seq_gpush:cx
+%     \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv,  \seq_gpush:Ne,
+%     \seq_gpush:No, \seq_gpush:Nx,
+%     \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv,  \seq_gpush:ce,
+%     \seq_gpush:co, \seq_gpush:cx
 % }
 % \UnitTested
 %   Pushing to a sequence is the same as adding on the left.
 %    \begin{macrocode}
-\cs_new_eq:NN \seq_push:Nn  \seq_put_left:Nn
-\cs_new_eq:NN \seq_push:NV  \seq_put_left:NV
-\cs_new_eq:NN \seq_push:Nv  \seq_put_left:Nv
-\cs_new_eq:NN \seq_push:No  \seq_put_left:No
-\cs_new_eq:NN \seq_push:Nx  \seq_put_left:Nx
-\cs_new_eq:NN \seq_push:cn  \seq_put_left:cn
-\cs_new_eq:NN \seq_push:cV  \seq_put_left:cV
-\cs_new_eq:NN \seq_push:cv  \seq_put_left:cv
-\cs_new_eq:NN \seq_push:co  \seq_put_left:co
-\cs_new_eq:NN \seq_push:cx  \seq_put_left:cx
+\cs_new_eq:NN \seq_push:Nn \seq_put_left:Nn
+\cs_generate_variant:Nn \seq_push:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \seq_push:Nn { No , Nx , co , cx }
 \cs_new_eq:NN \seq_gpush:Nn \seq_gput_left:Nn
-\cs_new_eq:NN \seq_gpush:NV \seq_gput_left:NV
-\cs_new_eq:NN \seq_gpush:Nv \seq_gput_left:Nv
-\cs_new_eq:NN \seq_gpush:No \seq_gput_left:No
-\cs_new_eq:NN \seq_gpush:Nx \seq_gput_left:Nx
-\cs_new_eq:NN \seq_gpush:cn \seq_gput_left:cn
-\cs_new_eq:NN \seq_gpush:cV \seq_gput_left:cV
-\cs_new_eq:NN \seq_gpush:cv \seq_gput_left:cv
-\cs_new_eq:NN \seq_gpush:co \seq_gput_left:co
-\cs_new_eq:NN \seq_gpush:cx \seq_gput_left:cx
+\cs_generate_variant:Nn \seq_gpush:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \seq_gpush:Nn { No , Nx , co , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2585,9 +2591,9 @@
 % \UnitTested
 %   Apply the general \cs{__kernel_chk_tl_type:NnnT}.
 %    \begin{macrocode}
-\cs_new_protected:Npn \seq_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \seq_show:N { \@@_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \seq_show:N { c }
-\cs_new_protected:Npn \seq_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \seq_log:N { \@@_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \seq_log:N { c }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -189,7 +189,7 @@
 %   between two integers, with all distances converted to scaled points.
 %   Thus
 %   \begin{verbatim}
-%     \tl_set:Nx \l_my_tl { \dim_ratio:nn { 5 pt } { 10 pt } }
+%     \tl_set:Ne \l_my_tl { \dim_ratio:nn { 5 pt } { 10 pt } }
 %     \tl_show:N \l_my_tl
 %   \end{verbatim}
 %   displays |327680/655360| on the terminal.
@@ -1654,7 +1654,7 @@
   {
     \int_gincr:N \g__kernel_prg_map_int
     \exp_args:NNc \@@_step:NNnnnn
-      \cs_gset_protected:Npx
+      \cs_gset_protected:Npe
       { @@_map_ \int_use:N \g__kernel_prg_map_int :w }
       {#1}{#2}{#3}
       {
@@ -1733,10 +1733,10 @@
     \exp_after:wN
       \@@_to_decimal:w \dim_use:N \@@_eval:w #1 \@@_eval_end:
   }
-\use:x
+\use:e
   {
     \cs_new:Npn \exp_not:N \@@_to_decimal:w
-      ##1 . ##2 \tl_to_str:n { pt }
+      #1 . #2 \tl_to_str:n { pt }
   }
       {
         \int_compare:nNnTF {#2} > \c_zero_int

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -124,8 +124,8 @@
 % \begin{variable}{\g_@@_internal_seq, \g_@@_internal_tl}
 %   Sorting happens in a group; the result is stored in those global
 %   variables before being copied outside the group to the proper
-%   places.  For seq and tl this is more efficient than using \cs{use:x}
-%   (or some \cs{exp_args:NNNx}) to smuggle the definition outside the
+%   places.  For seq and tl this is more efficient than using \cs{use:e}
+%   (or some \cs{exp_args:NNNe}) to smuggle the definition outside the
 %   group since \TeX{} does not need to re-read tokens.  For clist we
 %   don't gain anything since the result is converted from seq to clist
 %   anyways.
@@ -376,7 +376,7 @@
   {
     \group_begin:
       \@@_main:NNNn \tl_map_inline:Nn \tl_map_break:n #2 {#3}
-      \__kernel_tl_gset:Nx \g_@@_internal_tl
+      \__kernel_tl_gset:Ne \g_@@_internal_tl
         { \@@_tl_toks:w \l_@@_min_int ; }
     \group_end:
     #1 #2 \g_@@_internal_tl
@@ -432,7 +432,7 @@
       \int_step_inline:nnn
         \l_@@_min_int { \l_@@_top_int - 1 }
         {
-          \seq_gput_right:Nx \g_@@_internal_seq
+          \seq_gput_right:Ne \g_@@_internal_seq
             { \tex_the:D \tex_toks:D ##1 }
         }
     \group_end:
@@ -591,7 +591,7 @@
 \cs_new_protected:Npn \@@_return_mark:w #1 \s_@@_mark { }
 \cs_new_protected:Npn \@@_return_none_error:
   {
-    \msg_error:nnxx { sort } { return-none }
+    \msg_error:nnee { sort } { return-none }
       { \tex_the:D \tex_toks:D \l_@@_A_int }
       { \tex_the:D \tex_toks:D \l_@@_C_int }
     \@@_return_same:w \@@_return_none_error:
@@ -598,7 +598,7 @@
   }
 \cs_new_protected:Npn \@@_return_two_error:
   {
-    \msg_error:nnxx { sort } { return-two }
+    \msg_error:nnee { sort } { return-two }
       { \tex_the:D \tex_toks:D \l_@@_A_int }
       { \tex_the:D \tex_toks:D \l_@@_C_int }
   }
@@ -1026,7 +1026,7 @@
   { \cs_set_eq:NN \toksdef \@@_disabled_toksdef:n }
 \cs_new_protected:Npn \@@_disabled_toksdef:n #1
   {
-    \msg_error:nnx { sort } { toksdef }
+    \msg_error:nne { sort } { toksdef }
       { \token_to_str:N #1 }
     \@@_error:
     \tex_toksdef:D #1
@@ -1050,7 +1050,7 @@
 \cs_new_protected:Npn \@@_too_long_error:NNw #1#2 \fi:
   {
     \fi:
-    \msg_error:nnxxx { sort } { too-large }
+    \msg_error:nneee { sort } { too-large }
       { \token_to_str:N #2 }
       { \int_eval:n { \l_@@_true_max_int - \l_@@_min_int } }
       { \int_eval:n { \l_@@_top_int - \l_@@_min_int } }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -468,12 +468,12 @@
 %   an empty result for the input $-1$.
 %    \begin{macrocode}
 \group_begin:
-  \__kernel_tl_set:Nx \l_@@_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
+  \__kernel_tl_set:Ne \l_@@_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
    \tl_map_inline:Nn \l_@@_internal_tl
      {
         \tl_map_inline:Nn \l_@@_internal_tl
           {
-            \tl_const:cx { c_@@_byte_ \int_eval:n {"#1##1} _tl }
+            \tl_const:ce { c_@@_byte_ \int_eval:n {"#1##1} _tl }
                { \char_generate:nn { "#1##1 } { 12 } #1 ##1 }
           }
      }
@@ -554,7 +554,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_convert_gmap:N #1
   {
-    \__kernel_tl_gset:Nx \g_@@_result_tl
+    \__kernel_tl_gset:Ne \g_@@_result_tl
       {
         \exp_after:wN \@@_convert_gmap_loop:NN
         \exp_after:wN #1
@@ -579,7 +579,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_convert_gmap_internal:N #1
   {
-    \__kernel_tl_gset:Nx \g_@@_result_tl
+    \__kernel_tl_gset:Ne \g_@@_result_tl
       {
         \exp_after:wN \@@_convert_gmap_internal_loop:Nww
         \exp_after:wN #1
@@ -599,8 +599,8 @@
 %
 % \subsubsection{Error-reporting during conversion}
 %
-% \begin{macro}{\@@_if_flag_error:nnx}
-% \begin{macro}{\@@_if_flag_no_error:nnx}
+% \begin{macro}{\@@_if_flag_error:nne}
+% \begin{macro}{\@@_if_flag_no_error:nne}
 %   When converting using the function \cs{str_set_convert:Nnnn}, errors
 %   should be reported to the user after each step in the
 %   conversion. Errors are signalled by raising some flag (typically
@@ -608,16 +608,16 @@
 %   give the user an error, otherwise remove the arguments. On the other
 %   hand, in the conditional functions \cs{str_set_convert:NnnnTF},
 %   errors should be suppressed. This is done by changing
-%   \cs{@@_if_flag_error:nnx} into \cs{@@_if_flag_no_error:nnx}
+%   \cs{@@_if_flag_error:nne} into \cs{@@_if_flag_no_error:nne}
 %   locally.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_if_flag_error:nnx #1
+\cs_new_protected:Npn \@@_if_flag_error:nne #1
   {
     \flag_if_raised:nTF {#1}
-      { \msg_error:nnx { str } }
+      { \msg_error:nne { str } }
       { \use_none:nn }
   }
-\cs_new_protected:Npn \@@_if_flag_no_error:nnx #1#2#3
+\cs_new_protected:Npn \@@_if_flag_no_error:nne #1#2#3
   { \flag_if_raised:nT {#1} { \bool_gset_true:N \g_@@_error_bool } }
 %    \end{macrocode}
 % \end{macro}
@@ -675,7 +675,7 @@
 %   unescape and decode; encode and escape; exit the group and store the
 %   result in the user's variable. The various conversion functions all
 %   act on \cs{g_@@_result_tl}. Errors are silenced for the conditional
-%   functions by redefining \cs{@@_if_flag_error:nnx} locally.
+%   functions by redefining \cs{@@_if_flag_error:nne} locally.
 %    \begin{macrocode}
 \cs_new_protected:Npn \str_set_convert:Nnnn
   { \@@_convert:nNNnnn { } \tl_set_eq:NN }
@@ -686,7 +686,7 @@
   {
     \bool_gset_false:N \g_@@_error_bool
     \@@_convert:nNNnnn
-      { \cs_set_eq:NN \@@_if_flag_error:nnx \@@_if_flag_no_error:nnx }
+      { \cs_set_eq:NN \@@_if_flag_error:nne \@@_if_flag_no_error:nne }
       \tl_set_eq:NN #1 {#2} {#3} {#4}
     \bool_if:NTF \g_@@_error_bool \prg_return_false: \prg_return_true:
   }
@@ -695,7 +695,7 @@
   {
     \bool_gset_false:N \g_@@_error_bool
     \@@_convert:nNNnnn
-      { \cs_set_eq:NN \@@_if_flag_error:nnx \@@_if_flag_no_error:nnx }
+      { \cs_set_eq:NN \@@_if_flag_error:nne \@@_if_flag_no_error:nne }
       \tl_gset_eq:NN #1 {#2} {#3} {#4}
     \bool_if:NTF \g_@@_error_bool \prg_return_false: \prg_return_true:
   }
@@ -703,7 +703,7 @@
   {
     \group_begin:
       #1
-      \__kernel_tl_gset:Nx \g_@@_result_tl { \__kernel_str_to_other_fast:n {#4} }
+      \__kernel_tl_gset:Ne \g_@@_result_tl { \__kernel_str_to_other_fast:n {#4} }
       \exp_after:wN \@@_convert:wwwnn
         \tl_to_str:n {#5} /// \s_@@_stop
         { decode } { unescape }
@@ -758,7 +758,7 @@
   {
     \if_meaning:w #1 #5
       \tl_if_empty:nF {#3}
-        { \msg_error:nnx { str } { native-escaping } {#3} }
+        { \msg_error:nne { str } { native-escaping } {#3} }
       #1
     \else:
       #4 #2 #1
@@ -808,7 +808,7 @@
   {
     \cs_if_exist:cF { @@_convert_#2_#3: }
       {
-        \exp_args:Nx \@@_convert:nnnn
+        \exp_args:Ne \@@_convert:nnnn
           { \@@_convert_lowercase_alphanum:n {#3} }
           {#1} {#2} {#3}
       }
@@ -830,7 +830,7 @@
               }
               {
                 \tl_clear:N \l_@@_internal_tl
-                \msg_error:nnxx { str } { unknown-#2 } {#4} {#1}
+                \msg_error:nnee { str } { unknown-#2 } {#4} {#1}
               }
           }
         \cs_if_exist:cF { @@_convert_#3_#1: }
@@ -936,9 +936,9 @@
     \cs_new_protected:Npn \@@_convert_unescape_:
       {
         \flag_clear:n { str_byte }
-        \__kernel_tl_gset:Nx \g_@@_result_tl
+        \__kernel_tl_gset:Ne \g_@@_result_tl
           { \exp_args:No \@@_filter_bytes:n \g_@@_result_tl }
-        \@@_if_flag_error:nnx { str_byte } { non-byte } { bytes }
+        \@@_if_flag_error:nne { str_byte } { non-byte } { bytes }
       }
   }
   { \cs_new_protected:Npn \@@_convert_unescape_: { } }
@@ -997,7 +997,7 @@
       {
         \flag_clear:n { str_error }
         \@@_convert_gmap_internal:N \@@_encode_native_char:n
-        \@@_if_flag_error:nnx { str_error }
+        \@@_if_flag_error:nne { str_error }
           { native-overflow } { }
       }
     \cs_new:Npn \@@_encode_native_char:n #1
@@ -1032,7 +1032,7 @@
 \cs_new_protected:Npn \@@_convert_decode_clist:
   {
     \clist_gset:No \g_@@_result_tl \g_@@_result_tl
-    \__kernel_tl_gset:Nx \g_@@_result_tl
+    \__kernel_tl_gset:Ne \g_@@_result_tl
       {
         \exp_args:No \clist_map_function:nN
           \g_@@_result_tl \@@_decode_clist_char:n
@@ -1055,7 +1055,7 @@
 \cs_new_protected:Npn \@@_convert_encode_clist:
   {
     \@@_convert_gmap_internal:N \@@_encode_clist_char:n
-    \__kernel_tl_gset:Nx \g_@@_result_tl { \tl_tail:N \g_@@_result_tl }
+    \__kernel_tl_gset:Ne \g_@@_result_tl { \tl_tail:N \g_@@_result_tl }
   }
 \cs_new:Npn \@@_encode_clist_char:n #1 { , #1 }
 %    \end{macrocode}
@@ -1179,7 +1179,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_convert_decode_eight_bit:n #1
   {
-    \cs_set:Npx \@@_tmp:w
+    \cs_set:Npe \@@_tmp:w
       {
         \exp_not:N \@@_decode_eight_bit_aux:Nn
         \exp_not:c { g_@@_decode_#1_intarray }
@@ -1186,7 +1186,7 @@
       }
     \flag_clear:n { str_error }
     \@@_convert_gmap:N \@@_tmp:w
-    \@@_if_flag_error:nnx { str_error } { decode-8-bit } {#1}
+    \@@_if_flag_error:nne { str_error } { decode-8-bit } {#1}
   }
 \cs_new:Npn \@@_decode_eight_bit_aux:Nn #1#2
   {
@@ -1222,7 +1222,7 @@
 \int_new:N \l_@@_modulo_int
 \cs_new_protected:Npn \@@_convert_encode_eight_bit:n #1
   {
-    \cs_set:Npx \@@_tmp:w
+    \cs_set:Npe \@@_tmp:w
       {
         \exp_not:N \@@_encode_eight_bit_aux:NNn
         \exp_not:c { g_@@_encode_#1_intarray }
@@ -1230,7 +1230,7 @@
       }
     \flag_clear:n { str_error }
     \@@_convert_gmap_internal:N \@@_tmp:w
-    \@@_if_flag_error:nnx { str_error } { encode-8-bit } {#1}
+    \@@_if_flag_error:nne { str_error } { encode-8-bit } {#1}
   }
 \cs_new:Npn \@@_encode_eight_bit_aux:NNn #1#2#3
   {
@@ -1349,7 +1349,7 @@
     \group_begin:
       \flag_clear:n { str_error }
       \int_set:Nn \tex_escapechar:D { 92 }
-      \__kernel_tl_gset:Nx \g_@@_result_tl
+      \__kernel_tl_gset:Ne \g_@@_result_tl
         {
           \@@_output_byte:w "
             \exp_last_unbraced:Nf \@@_unescape_hex_auxi:N
@@ -1358,7 +1358,7 @@
             \prg_break_point:
           \@@_output_end:
         }
-      \@@_if_flag_error:nnx { str_error } { unescape-hex } { }
+      \@@_if_flag_error:nne { str_error } { unescape-hex } { }
     \group_end:
   }
 \cs_new:Npn \@@_unescape_hex_auxi:N #1
@@ -1428,14 +1428,14 @@
           \flag_clear:n { str_byte }
           \flag_clear:n { str_error }
           \int_set:Nn \tex_escapechar:D { 92 }
-          \__kernel_tl_gset:Nx \g_@@_result_tl
+          \__kernel_tl_gset:Ne \g_@@_result_tl
             {
               \exp_after:wN #3 \g_@@_result_tl
                 #1 ? { ? \prg_break: }
               \prg_break_point:
             }
-          \@@_if_flag_error:nnx { str_byte } { non-byte } { #2 }
-          \@@_if_flag_error:nnx { str_error } { unescape-#2 } { }
+          \@@_if_flag_error:nne { str_byte } { non-byte } { #2 }
+          \@@_if_flag_error:nne { str_error } { unescape-#2 } { }
         \group_end:
       }
     \cs_new:Npn #3 ##1#1##2##3
@@ -1514,20 +1514,20 @@
             \flag_clear:n { str_byte }
             \flag_clear:n { str_error }
             \int_set:Nn \tex_escapechar:D { 92 }
-            \__kernel_tl_gset:Nx \g_@@_result_tl
+            \__kernel_tl_gset:Ne \g_@@_result_tl
               {
                 \exp_after:wN \@@_unescape_string_newlines:wN
                   \g_@@_result_tl \prg_break: ^^M ?
                 \prg_break_point:
               }
-            \__kernel_tl_gset:Nx \g_@@_result_tl
+            \__kernel_tl_gset:Ne \g_@@_result_tl
               {
                 \exp_after:wN \@@_unescape_string_loop:wNNN
                   \g_@@_result_tl #1 ?? { ? \prg_break: }
                 \prg_break_point:
               }
-            \@@_if_flag_error:nnx { str_byte } { non-byte } { string }
-            \@@_if_flag_error:nnx { str_error } { unescape-string } { }
+            \@@_if_flag_error:nne { str_byte } { non-byte } { string }
+            \@@_if_flag_error:nne { str_error } { unescape-string } { }
           \group_end:
         }
     }
@@ -1664,7 +1664,7 @@
 %   (and including) \texttt{del}, are converted to octal.  One backslash
 %   is added before each parenthesis and backslash.
 %    \begin{macrocode}
-\str_const:Nx \c_@@_escape_string_str
+\str_const:Ne \c_@@_escape_string_str
   { \c_backslash_str ( ) }
 \cs_new_protected:Npn \@@_convert_escape_string:
   { \@@_convert_gmap:N \@@_escape_string_char:N }
@@ -1973,13 +1973,13 @@
     \flag_clear:n { str_extra }
     \flag_clear:n { str_overlong }
     \flag_clear:n { str_overflow }
-    \__kernel_tl_gset:Nx \g_@@_result_tl
+    \__kernel_tl_gset:Ne \g_@@_result_tl
       {
         \exp_after:wN \@@_decode_utf_viii_start:N \g_@@_result_tl
           { \prg_break: \@@_decode_utf_viii_end: }
         \prg_break_point:
       }
-    \@@_if_flag_error:nnx { str_error } { utf8-decode } { }
+    \@@_if_flag_error:nne { str_error } { utf8-decode } { }
   }
 \cs_new:Npn \@@_decode_utf_viii_start:N #1
   {
@@ -2109,7 +2109,7 @@
   \cs_new_protected:cpn { @@_convert_encode_utf16: }
     {
       \@@_encode_utf_xvi_aux:N \@@_output_byte_pair_be:n
-      \tl_gput_left:Nx \g_@@_result_tl { ^^fe ^^ff }
+      \tl_gput_left:Ne \g_@@_result_tl { ^^fe ^^ff }
     }
   \cs_new_protected:cpn { @@_convert_encode_utf16be: }
     { \@@_encode_utf_xvi_aux:N \@@_output_byte_pair_be:n }
@@ -2120,7 +2120,7 @@
       \flag_clear:n { str_error }
       \cs_set_eq:NN \@@_tmp:w #1
       \@@_convert_gmap_internal:N \@@_encode_utf_xvi_char:n
-      \@@_if_flag_error:nnx { str_error } { utf16-encode } { }
+      \@@_if_flag_error:nne { str_error } { utf16-encode } { }
     }
   \cs_new:Npn \@@_encode_utf_xvi_char:n #1
     {
@@ -2263,13 +2263,13 @@
       \flag_clear:n { str_extra }
       \flag_clear:n { str_end }
       \cs_set:Npn \@@_tmp:w ##1 ##2 { ` ## #1 }
-      \__kernel_tl_gset:Nx \g_@@_result_tl
+      \__kernel_tl_gset:Ne \g_@@_result_tl
         {
           \exp_after:wN \@@_decode_utf_xvi_pair:NN
             #2 \q_@@_nil \q_@@_nil
           \prg_break_point:
         }
-      \@@_if_flag_error:nnx { str_error } { utf16-decode } { }
+      \@@_if_flag_error:nne { str_error } { utf16-decode } { }
     }
 %    \end{macrocode}
 % \end{macro}
@@ -2422,7 +2422,7 @@
   \cs_new_protected:cpn { @@_convert_encode_utf32: }
     {
       \@@_convert_gmap_internal:N \@@_encode_utf_xxxii_be:n
-      \tl_gput_left:Nx \g_@@_result_tl { ^^00 ^^00 ^^fe ^^ff }
+      \tl_gput_left:Ne \g_@@_result_tl { ^^00 ^^00 ^^fe ^^ff }
     }
   \cs_new_protected:cpn { @@_convert_encode_utf32be: }
     { \@@_convert_gmap_internal:N \@@_encode_utf_xxxii_be:n }
@@ -2551,13 +2551,13 @@
       \flag_clear:n { str_end }
       \flag_clear:n { str_error }
       \cs_set:Npn \@@_tmp:w ##1 ##2 { ` ## #1 }
-      \__kernel_tl_gset:Nx \g_@@_result_tl
+      \__kernel_tl_gset:Ne \g_@@_result_tl
         {
           \exp_after:wN \@@_decode_utf_xxxii_loop:NNNN
             #2 \s_@@_stop \s_@@_stop \s_@@_stop \s_@@_stop
           \prg_break_point:
         }
-      \@@_if_flag_error:nnx { str_error } { utf32-decode } { }
+      \@@_if_flag_error:nne { str_error } { utf32-decode } { }
     }
   \cs_new:Npn \@@_decode_utf_xxxii_loop:NNNN #1#2#3#4
     {
@@ -2639,7 +2639,7 @@
       }
     \cs_new:Npn \@@_convert_pdfname_bytes_aux:n #1
       { \@@_convert_pdfname_bytes_aux:nnnn #1 }
-    \cs_new:Npx \@@_convert_pdfname_bytes_aux:nnnn #1#2#3#4
+    \cs_new:Npe \@@_convert_pdfname_bytes_aux:nnnn #1#2#3#4
       {
         \c_hash_str \exp_not:N \@@_output_hexadecimal:n {#1}
         \c_hash_str \exp_not:N \@@_output_hexadecimal:n {#2}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -108,8 +108,8 @@
 %
 % \begin{function}[added = 2015-09-18, updated = 2018-07-28]
 %   {
-%     \str_const:Nn, \str_const:NV, \str_const:Nx,
-%     \str_const:cn, \str_const:cV, \str_const:cx
+%     \str_const:Nn, \str_const:NV, \str_const:Ne,
+%     \str_const:cn, \str_const:cV, \str_const:ce
 %   }
 %   \begin{syntax}
 %     \cs{str_const:Nn} \meta{str~var} \Arg{token list}
@@ -178,10 +178,10 @@
 %
 % \begin{function}[added = 2015-09-18, updated = 2018-07-28]
 %   {
-%     \str_set:Nn,  \str_set:NV, \str_set:Nx,
-%     \str_set:cn,  \str_set:cV, \str_set:cx,
-%     \str_gset:Nn, \str_gset:NV, \str_gset:Nx,
-%     \str_gset:cn, \str_gset:cV, \str_gset:cx
+%     \str_set:Nn,  \str_set:NV, \str_set:Ne,
+%     \str_set:cn,  \str_set:cV, \str_set:ce,
+%     \str_gset:Nn, \str_gset:NV, \str_gset:Ne,
+%     \str_gset:cn, \str_gset:cV, \str_gset:ce
 %   }
 %   \begin{syntax}
 %     \cs{str_set:Nn} \meta{str var} \Arg{token list}
@@ -192,10 +192,10 @@
 %
 % \begin{function}[added = 2015-09-18, updated = 2018-07-28]
 %   {
-%     \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx,
-%     \str_put_left:cn, \str_put_left:cV, \str_put_left:cx,
-%     \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx,
-%     \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx
+%     \str_put_left:Nn, \str_put_left:NV, \str_put_left:Ne,
+%     \str_put_left:cn, \str_put_left:cV, \str_put_left:ce,
+%     \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Ne,
+%     \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:ce
 %   }
 %   \begin{syntax}
 %     \cs{str_put_left:Nn} \meta{str var} \Arg{token list}
@@ -207,10 +207,10 @@
 %
 % \begin{function}[added = 2015-09-18, updated = 2018-07-28]
 %   {
-%     \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx,
-%     \str_put_right:cn, \str_put_right:cV, \str_put_right:cx,
-%     \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx,
-%     \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx
+%     \str_put_right:Nn, \str_put_right:NV, \str_put_right:Ne,
+%     \str_put_right:cn, \str_put_right:cV, \str_put_right:Ne,
+%     \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Ne,
+%     \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:ce
 %   }
 %   \begin{syntax}
 %     \cs{str_put_right:Nn} \meta{str var} \Arg{token list}
@@ -595,10 +595,10 @@
 %   at positions $s$ for $s\le0$ or $s>l$.
 %   For instance,
 %   \begin{verbatim}
-%     \iow_term:x { \str_range:nnn { abcdef } { 2 } { 5 } }
-%     \iow_term:x { \str_range:nnn { abcdef } { -4 } { -1 } }
-%     \iow_term:x { \str_range:nnn { abcdef } { -2 } { -1 } }
-%     \iow_term:x { \str_range:nnn { abcdef } { 0 } { -1 } }
+%     \iow_term:e { \str_range:nnn { abcdef } { 2 } { 5 } }
+%     \iow_term:e { \str_range:nnn { abcdef } { -4 } { -1 } }
+%     \iow_term:e { \str_range:nnn { abcdef } { -2 } { -1 } }
+%     \iow_term:e { \str_range:nnn { abcdef } { 0 } { -1 } }
 %   \end{verbatim}
 %   prints \texttt{bcde}, \texttt{cdef}, \texttt{ef}, and an empty
 %   line to the terminal. The \meta{start index} must always be smaller than
@@ -605,8 +605,8 @@
 %   or equal to the \meta{end index}: if this is not the case then no output
 %   is generated. Thus
 %   \begin{verbatim}
-%     \iow_term:x { \str_range:nnn { abcdef } { 5 } { 2 } }
-%     \iow_term:x { \str_range:nnn { abcdef } { -1 } { -4 } }
+%     \iow_term:e { \str_range:nnn { abcdef } { 5 } { 2 } }
+%     \iow_term:e { \str_range:nnn { abcdef } { -1 } { -4 } }
 %   \end{verbatim}
 %   both yield empty strings.
 % \end{function}
@@ -617,25 +617,25 @@
 %   The behavior of \cs{str_range_ignore_spaces:nnn} is similar, but spaces
 %   are removed before starting the job. The input
 %   \begin{verbatim}
-%     \iow_term:x { \str_range:nnn { abcdefg } { 2 } { 5 } }
-%     \iow_term:x { \str_range:nnn { abcdefg } { 2 } { -3 } }
-%     \iow_term:x { \str_range:nnn { abcdefg } { -6 } { 5 } }
-%     \iow_term:x { \str_range:nnn { abcdefg } { -6 } { -3 } }
+%     \iow_term:e { \str_range:nnn { abcdefg } { 2 } { 5 } }
+%     \iow_term:e { \str_range:nnn { abcdefg } { 2 } { -3 } }
+%     \iow_term:e { \str_range:nnn { abcdefg } { -6 } { 5 } }
+%     \iow_term:e { \str_range:nnn { abcdefg } { -6 } { -3 } }
 %
-%     \iow_term:x { \str_range:nnn { abc~efg } { 2 } { 5 } }
-%     \iow_term:x { \str_range:nnn { abc~efg } { 2 } { -3 } }
-%     \iow_term:x { \str_range:nnn { abc~efg } { -6 } { 5 } }
-%     \iow_term:x { \str_range:nnn { abc~efg } { -6 } { -3 } }
+%     \iow_term:e { \str_range:nnn { abc~efg } { 2 } { 5 } }
+%     \iow_term:e { \str_range:nnn { abc~efg } { 2 } { -3 } }
+%     \iow_term:e { \str_range:nnn { abc~efg } { -6 } { 5 } }
+%     \iow_term:e { \str_range:nnn { abc~efg } { -6 } { -3 } }
 %
-%     \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { 5 } }
-%     \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { -3 } }
-%     \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { 5 } }
-%     \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { -3 } }
+%     \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { 5 } }
+%     \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { -3 } }
+%     \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { 5 } }
+%     \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { -3 } }
 %
-%     \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { 5 } }
-%     \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { -3 } }
-%     \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { 5 } }
-%     \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { -3 } }
+%     \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { 5 } }
+%     \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { -3 } }
+%     \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { 5 } }
+%     \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { -3 } }
 %   \end{verbatim}
 %   will print four instances of |bcde|, four instances of |bc e| and eight
 %   instances of |bcde|.
@@ -973,20 +973,20 @@
 %
 % \begin{macro}
 %   {
-%     \str_set:Nn, \str_set:NV, \str_set:Nx,
-%     \str_set:cn, \str_set:cV, \str_set:cx,
-%     \str_gset:Nn, \str_gset:NV, \str_gset:Nx,
-%     \str_gset:cn, \str_gset:cV, \str_gset:cx,
-%     \str_const:Nn, \str_const:NV, \str_const:Nx,
-%     \str_const:cn, \str_const:cV, \str_const:cx,
-%     \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx,
-%     \str_put_left:cn, \str_put_left:cV, \str_put_left:cx,
-%     \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx,
-%     \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx,
-%     \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx,
-%     \str_put_right:cn, \str_put_right:cV, \str_put_right:cx,
-%     \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx,
-%     \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx
+%     \str_set:Nn, \str_set:NV, \str_set:Ne, \str_set:Nx,
+%     \str_set:cn, \str_set:cV, \str_set:ce, \str_set:cx,
+%     \str_gset:Nn, \str_gset:NV, \str_gset:Ne, \str_gset:Nx,
+%     \str_gset:cn, \str_gset:cV, \str_gset:ce, \str_gset:cx,
+%     \str_const:Nn, \str_const:NV, \str_const:Ne, \str_const:Nx,
+%     \str_const:cn, \str_const:cV, \str_const:ce, \str_const:cx,
+%     \str_put_left:Nn, \str_put_left:NV, \str_put_left:Ne, \str_put_left:Nx,
+%     \str_put_left:cn, \str_put_left:cV, \str_put_left:ce, \str_put_left:cx,
+%     \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Ne, \str_gput_left:Nx,
+%     \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:ce, \str_gput_left:cx,
+%     \str_put_right:Nn, \str_put_right:NV, \str_put_right:Ne, \str_put_right:Nx,
+%     \str_put_right:cn, \str_put_right:cV, \str_put_right:ce, \str_put_right:cx,
+%     \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Ne, \str_gput_right:Nx,
+%     \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:ce, \str_gput_right:cx
 %   }
 %   Simply convert the token list inputs to \meta{strings}.
 %    \begin{macrocode}
@@ -995,12 +995,13 @@
     {
       \tl_if_blank:nF {#1}
         {
-          \cs_new_protected:cpx { str_ #1 :Nn } ##1##2
+          \cs_new_protected:cpe { str_ #1 :Nn } ##1##2
             {
-              \exp_not:c { tl_ #1 :Nx } ##1
+              \exp_not:c { tl_ #1 :Ne } ##1
                 { \exp_not:N \tl_to_str:n {##2} }
             }
-          \cs_generate_variant:cn { str_ #1 :Nn } { NV , Nx , cn , cV , cx }
+          \cs_generate_variant:cn { str_ #1 :Nn }
+            { NV , Ne , Nx , cn , cV , ce , cx }
           \@@_tmp:n
         }
     }
@@ -1041,13 +1042,13 @@
 %   hide in braces.
 %    \begin{macrocode}
 \cs_new_protected:Npn \str_replace_once:Nnn
-  { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Nx  }
+  { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \str_greplace_once:Nnn
-  { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_gset:Nx }
+  { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \str_replace_all:Nnn
-  { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_set:Nx  }
+  { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \str_greplace_all:Nnn
-  { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_gset:Nx }
+  { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_gset:Ne }
 \cs_generate_variant:Nn \str_replace_once:Nnn  { c }
 \cs_generate_variant:Nn \str_greplace_once:Nnn { c }
 \cs_generate_variant:Nn \str_replace_all:Nnn   { c }
@@ -1056,10 +1057,10 @@
   {
     \tl_if_empty:nTF {#4}
       {
-        \msg_error:nnx { kernel } { empty-search-pattern } {#5}
+        \msg_error:nne { kernel } { empty-search-pattern } {#5}
       }
       {
-        \use:x
+        \use:e
           {
             \exp_not:n { \@@_replace_aux:NNNnnn #1 #2 #3 }
               { \tl_to_str:N #3 }
@@ -1215,7 +1216,7 @@
 %    \begin{macrocode}
 \prg_new_protected_conditional:Npnn \str_if_in:Nn #1#2 { T , F , TF }
   {
-    \use:x
+    \use:e
       { \tl_if_in:nnTF { \tl_to_str:N #1 } { \tl_to_str:n {#2} } }
       { \prg_return_true: } { \prg_return_false: }
   }
@@ -1223,7 +1224,7 @@
   { c } { T , F , TF }
 \prg_new_protected_conditional:Npnn \str_if_in:nn #1#2 { T , F , TF }
   {
-    \use:x
+    \use:e
       { \tl_if_in:nnTF { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } }
       { \prg_return_true: } { \prg_return_false: }
   }
@@ -1369,7 +1370,7 @@
     \int_gincr:N \g__kernel_prg_map_int
     \cs_gset_protected:cpn
       { @@_map_ \int_use:N \g__kernel_prg_map_int :w } ##1 {#2}
-    \use:x
+    \use:e
       {
         \exp_not:N \@@_map_inline:NN
         \exp_not:c { @@_map_ \int_use:N \g__kernel_prg_map_int :w }
@@ -1390,7 +1391,7 @@
   }
 \cs_new_protected:Npn \str_map_variable:nNn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \exp_not:n { \@@_map_variable:NnN #2 {#3} }
         \__kernel_str_to_other_fast:n {#1}
@@ -1992,7 +1993,7 @@
   \cs_new:Npn \@@_change_case_codepoint:nN #1#2
     { \@@_change_case_char:fnn { \int_eval:n {`#2} } {#1} {#2} }
 \else:
-    \cs_new:Npx \@@_change_case_codepoint:nN #1#2
+    \cs_new:Npe \@@_change_case_codepoint:nN #1#2
       {
         \exp_not:N \int_compare:nNnTF {`#2} > { "80 }
           {
@@ -2121,19 +2122,19 @@
 %   For all of those strings, use \cs{cs_to_str:N} to get characters with
 %   the correct category code without worries
 %    \begin{macrocode}
-\str_const:Nx \c_ampersand_str   { \cs_to_str:N \& }
-\str_const:Nx \c_atsign_str      { \cs_to_str:N \@ }
-\str_const:Nx \c_backslash_str   { \cs_to_str:N \\ }
-\str_const:Nx \c_left_brace_str  { \cs_to_str:N \{ }
-\str_const:Nx \c_right_brace_str { \cs_to_str:N \} }
-\str_const:Nx \c_circumflex_str  { \cs_to_str:N \^ }
-\str_const:Nx \c_colon_str       { \cs_to_str:N \: }
-\str_const:Nx \c_dollar_str      { \cs_to_str:N \$ }
-\str_const:Nx \c_hash_str        { \cs_to_str:N \# }
-\str_const:Nx \c_percent_str     { \cs_to_str:N \% }
-\str_const:Nx \c_tilde_str       { \cs_to_str:N \~ }
-\str_const:Nx \c_underscore_str  { \cs_to_str:N \_ }
-\str_const:Nx \c_zero_str        { 0 }
+\str_const:Ne \c_ampersand_str   { \cs_to_str:N \& }
+\str_const:Ne \c_atsign_str      { \cs_to_str:N \@ }
+\str_const:Ne \c_backslash_str   { \cs_to_str:N \\ }
+\str_const:Ne \c_left_brace_str  { \cs_to_str:N \{ }
+\str_const:Ne \c_right_brace_str { \cs_to_str:N \} }
+\str_const:Ne \c_circumflex_str  { \cs_to_str:N \^ }
+\str_const:Ne \c_colon_str       { \cs_to_str:N \: }
+\str_const:Ne \c_dollar_str      { \cs_to_str:N \$ }
+\str_const:Ne \c_hash_str        { \cs_to_str:N \# }
+\str_const:Ne \c_percent_str     { \cs_to_str:N \% }
+\str_const:Ne \c_tilde_str       { \cs_to_str:N \~ }
+\str_const:Ne \c_underscore_str  { \cs_to_str:N \_ }
+\str_const:Ne \c_zero_str        { 0 }
 %    \end{macrocode}
 % \end{variable}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -148,7 +148,7 @@
 %   where the |u| part is only present for \upTeX{}.
 % \end{variable}
 %
-% \begin{function}[added = 2020-09-24, EXP]{\sys_timer:}
+% \begin{function}[added = 2021-05-12, EXP]{\sys_timer:}
 %   \begin{syntax}
 %     \cs{sys_timer:}
 %   \end{syntax}
@@ -159,6 +159,14 @@
 %   scaled seconds ($2^{-16}$ seconds).
 % \end{function}
 %
+% \begin{function}[added = 2021-05-12, EXP, pTF]{\sys_if_timer_exist:}
+%   \begin{syntax}
+%     \cs{sys_if_timer_exist_p:}
+%     \cs{sys_if_timer_exist:TF} \Arg{true code} \Arg{false code}
+%   \end{syntax}
+%   Tests whether current engine has timer support.
+% \end{function}
+%
 % \section{Output format}
 %
 % \begin{function}[added = 2015-09-19, EXP, pTF]
@@ -249,8 +257,8 @@
 %   \cs{q_no_value} in the non-branching version.
 %   Note that quote characters (|"|) \emph{cannot} be used inside the
 %   \meta{shell command}.  The \cs{sys_get_shell:nnNTF} conditional
-%   inserts the \texttt{true code} if the shell is available and no quote is
-%   detected, and the \texttt{false code} otherwise.
+%   inserts the \meta{true code} if the shell is available and no quote is
+%   detected, and the \meta{false code} otherwise.
 % \end{function}
 %
 % \begin{variable}[added = 2017-05-27]{\c_sys_shell_escape_int}
@@ -294,7 +302,8 @@
 %   shell escape is enabled use \cs{sys_if_shell:}.
 % \end{function}
 %
-% \begin{function}[added = 2017-05-27]{\sys_shell_now:n, \sys_shell_now:x}
+% \begin{function}[added = 2017-05-27]
+%   {\sys_shell_now:n, \sys_shell_now:e}
 %   \begin{syntax}
 %     \cs{sys_shell_now:n} \Arg{tokens}
 %   \end{syntax}
@@ -301,7 +310,8 @@
 %   Execute \meta{tokens} through shell escape immediately.
 % \end{function}
 %
-% \begin{function}[added = 2017-05-27]{\sys_shell_shipout:n, \sys_shell_shipout:x}
+% \begin{function}[added = 2017-05-27]
+%   {\sys_shell_shipout:n, \sys_shell_shipout:e}
 %   \begin{syntax}
 %     \cs{sys_shell_shipout:n} \Arg{tokens}
 %   \end{syntax}
@@ -411,7 +421,7 @@
 %   Set up the engine tests on the basis exactly one test should be true.
 %   Mainly a case of looking for the appropriate marker primitive.
 %    \begin{macrocode}
-\str_const:Nx \c_sys_engine_str
+\str_const:Ne \c_sys_engine_str
   {
     \cs_if_exist:NT \tex_luatexversion:D { luatex }
     \cs_if_exist:NT \tex_pdftexversion:D { pdftex }
@@ -448,7 +458,7 @@
 %    \begin{macrocode}
 \group_begin:
   \cs_set_eq:NN \lua_now:e    \tex_directlua:D
-  \str_const:Nx \c_sys_engine_exec_str
+  \str_const:Ne \c_sys_engine_exec_str
     {
       \sys_if_engine_pdftex:T { pdf }
       \sys_if_engine_xetex:T  { xe  }
@@ -466,7 +476,7 @@
       tex
     }
 \group_end:
-\str_const:Nx \c_sys_engine_format_str
+\str_const:Ne \c_sys_engine_format_str
   {
     \cs_if_exist:NTF \fmtname
       {
@@ -505,7 +515,7 @@
 %   Various different engines, various different ways to extract the
 %   data!
 %    \begin{macrocode}
-\str_const:Nx \c_sys_engine_version_str
+\str_const:Ne \c_sys_engine_version_str
   {
     \str_case:on \c_sys_engine_str
       {
@@ -594,7 +604,7 @@
         \tl_if_blank:nF {#1}
           { \tl_gset:Nn \g_@@_backend_tl {#1} }
         \@@_load_backend_check:N \g_@@_backend_tl
-        \str_const:Nx \c_sys_backend_str { \g_@@_backend_tl }
+        \str_const:Ne \c_sys_backend_str { \g_@@_backend_tl }
         \__kernel_sys_configuration_load:n
           { l3backend- \c_sys_backend_str }
       }
@@ -610,7 +620,7 @@
             { xetex }     { }
           }
           {
-            \msg_error:nnxx { sys } { wrong-backend }
+            \msg_error:nnee { sys } { wrong-backend }
               #1 { xetex }
             \tl_gset:Nn #1 { xetex }
           }
@@ -629,7 +639,7 @@
                   { \str_if_eq_p:Vn #1 { luatex } }
                   { \str_if_eq_p:Vn #1 { pdftex } }
                   {
-                    \msg_error:nnxx { sys } { wrong-backend }
+                    \msg_error:nnee { sys } { wrong-backend }
                       #1 { \sys_if_engine_luatex:TF { luatex } { pdftex } }
                     \sys_if_engine_luatex:TF
                       { \tl_gset:Nn #1 { luatex } }
@@ -645,7 +655,7 @@
                 { dvisvgm }  { }
               }
               {
-                \msg_error:nnxx { sys } { wrong-backend }
+                \msg_error:nnee { sys } { wrong-backend }
                   #1 { dvips }
                 \tl_gset:Nn #1 { dvips }
               }
@@ -697,7 +707,7 @@
 % \begin{variable}{\c_@@_marker_tl}
 %   The same idea as the marker for rescanning token lists.
 %    \begin{macrocode}
-\tl_const:Nx \c_@@_marker_tl { : \token_to_str:N : }
+\tl_const:Ne \c_@@_marker_tl { : \token_to_str:N : }
 %    \end{macrocode}
 % \end{variable}
 %
@@ -721,7 +731,7 @@
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \msg_error:nnx
+        \msg_error:nne
           { kernel } { quote-in-shell } {#1}
         \prg_return_false:
       }
@@ -759,7 +769,7 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\sys_shell_now:n}
+% \begin{macro}{\sys_shell_now:n, \sys_shell_now:e, \sys_shell_now:x}
 % \begin{macro}{\@@_shell_now:e}
 %   Execute commands through shell escape immediately.
 %
@@ -797,13 +807,13 @@
     \cs_new_protected:Npn \sys_shell_now:n #1
       { \iow_now:Nn \c_@@_shell_stream_int {#1} }
   }
-\cs_generate_variant:Nn \sys_shell_now:n { x }
+\cs_generate_variant:Nn \sys_shell_now:n { e, x }
 %</tex>
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\sys_shell_shipout:n}
+% \begin{macro}{\sys_shell_shipout:n, \sys_shell_shipout:e, \sys_shell_shipout:x}
 % \begin{macro}{\@@_shell_shipout:e}
 %   Execute commands through shell escape at shipout.
 %
@@ -843,7 +853,7 @@
     \cs_new_protected:Npn \sys_shell_shipout:n #1
       { \iow_shipout:Nn \c_@@_shell_stream_int {#1} }
   }
-\cs_generate_variant:Nn \sys_shell_shipout:n { x }
+\cs_generate_variant:Nn \sys_shell_shipout:n { e , x }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -940,7 +950,7 @@
 %    \begin{macrocode}
 \@@_everyjob:n
   {
-    \str_const:Nx \c_sys_timestamp_str
+    \str_const:Ne \c_sys_timestamp_str
       {
         \cs_if_exist:NTF \tex_directlua:D
           { \tex_directlua:D { tex.print(pdf.getcreationdate()) } }
@@ -1101,7 +1111,7 @@
 %    \begin{macrocode}
 \@@_finalise:n
   {
-    \str_const:Nx \c_sys_output_str
+    \str_const:Ne \c_sys_output_str
       {
         \int_compare:nNnTF
           { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
@@ -1126,7 +1136,7 @@
 \tl_new:N \g_@@_backend_tl
 \@@_finalise:n
   {
-    \__kernel_tl_gset:Nx \g_@@_backend_tl
+    \__kernel_tl_gset:Ne \g_@@_backend_tl
       {
         \sys_if_engine_xetex:TF
           { xetex }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -243,15 +243,15 @@
   }
 \cs_new:Npn \@@_change_case_auxi:nnn #1#2#3
   { \exp_args:No \@@_change_case_BCP:nnn { \tl_to_str:n {#3} } {#1} {#2} }
-\cs_new:Npx \@@_change_case_BCP:nnn #1#2#3
+\cs_new:Npe \@@_change_case_BCP:nnn #1#2#3
   {
     \exp_not:N \@@_change_case_BCP:nnw
       {#2} {#3} #1 \tl_to_str:n { -x- -x- } \exp_not:N \q_@@_stop
   }
-\use:x
+\use:e
   {
     \cs_new:Npn \exp_not:N \@@_change_case_BCP:nnw
-      ##1##2##3 \tl_to_str:n { -x- } ##4 \tl_to_str:n { -x- } ##5
+      #1#2#3 \tl_to_str:n { -x- } #4 \tl_to_str:n { -x- } #5
       \exp_not:N \q_@@_stop
   }
   { \@@_change_case_BCP:nnnnw {#1} {#2} {#4} {#3} #3 - - \q_@@_stop }
@@ -353,9 +353,9 @@
       }
     \@@_change_case_break:w
   }
-\use:x
+\use:e
   {
-    \cs_new:Npn \exp_not:N \@@_change_case_space:nnw ##1##2 \c_space_tl
+    \cs_new:Npn \exp_not:N \@@_change_case_space:nnw #1#2 \c_space_tl
   }
   {
     \@@_change_case_store:n { ~ }
@@ -427,9 +427,9 @@
     \@@_change_case_store:n { {#4} }
     \@@_change_case_math_loop:nnNw {#1} {#2} #3
   }
-\use:x
+\use:e
   {
-    \cs_new:Npn \exp_not:N \@@_change_case_math_space:nnNw ##1##2##3
+    \cs_new:Npn \exp_not:N \@@_change_case_math_space:nnNw #1#2#3
       \c_space_tl
   }
   {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -168,8 +168,8 @@
     }
     \@@_map_loop:Nnw #1 { }
   }
-\use:x
-  { \cs_new:Npn \exp_not:N \@@_map_space:Nnw ##1##2 \c_space_tl }
+\use:e
+  { \cs_new:Npn \exp_not:N \@@_map_space:Nnw #1#2 \c_space_tl }
   {
     \@@_map_output:Nn #1 {#2}
     #1 { ~ }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -349,7 +349,7 @@
 % \begin{macro}
 %   {
 %     \text_declare_purify_equivalent:Nn,
-%     \text_declare_purify_equivalent:Nx
+%     \text_declare_purify_equivalent:Ne
 %   }
 %    \begin{macrocode}
 \cs_new_protected:Npn \text_declare_purify_equivalent:Nn #1#2
@@ -357,7 +357,7 @@
     \tl_clear_new:c { l_@@_purify_ \token_to_str:N #1 _tl }
     \tl_set:cn { l_@@_purify_ \token_to_str:N #1 _tl } {#2}
   }
-\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Nx }
+\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Ne }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -436,7 +436,7 @@
 \text_declare_purify_equivalent:Nn \\ { }
 \tl_map_inline:nn
   { \{ \} \# \$ \% \_ }
-  { \text_declare_purify_equivalent:Nx #1 { \cs_to_str:N #1 } }
+  { \text_declare_purify_equivalent:Ne #1 { \cs_to_str:N #1 } }
 %    \end{macrocode}
 % Cross-referencing.
 %    \begin{macrocode}
@@ -449,7 +449,7 @@
 \use:n
   {
     \group_end:
-    \text_declare_purify_equivalent:Nx ~ { \c_space_tl }
+    \text_declare_purify_equivalent:Ne ~ { \c_space_tl }
   }
 \text_declare_purify_equivalent:Nn \nobreakspace { ~ }
 \text_declare_purify_equivalent:Nn \  { ~ }
@@ -471,7 +471,7 @@
 \cs_set_protected:Npn \@@_loop:Nn #1#2
   {
     \quark_if_recursion_tail_stop:N #1
-    \text_declare_purify_equivalent:Nx #1
+    \text_declare_purify_equivalent:Ne #1
       {
         \codepoint_generate:nn {"#2}
           { \char_value_catcode:n {"#2} }
@@ -535,7 +535,7 @@
   \cs_set_protected:Npn \@@_loop:Nn #1#2
     {
       \quark_if_recursion_tail_stop:N #1
-      \tl_const:cx { c_@@_purify_ \token_to_str:N #1 _tl }
+      \tl_const:ce { c_@@_purify_ \token_to_str:N #1 _tl }
         { \codepoint_generate:nn {"#2} { \char_value_catcode:n { "#2 } } }
       \@@_loop:Nn
     }
@@ -569,7 +569,7 @@
   \cs_set_protected:Npn \@@_loop:NNn #1#2#3
     {
       \quark_if_recursion_tail_stop:N #1
-      \tl_const:cx
+      \tl_const:ce
         { c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl }
         { \codepoint_generate:nn {"#3} { \char_value_catcode:n { "#3 } } }
       \@@_loop:NNn

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -268,7 +268,7 @@
 % \begin{function}[added = 2020-03-05]
 %   {
 %     \text_declare_purify_equivalent:Nn ,
-%     \text_declare_purify_equivalent:Nx
+%     \text_declare_purify_equivalent:Ne
 %   }
 %   \begin{syntax}
 %     \cs{text_declare_purify_equivalent:Nn} \meta{cmd} \Arg{replacement}
@@ -673,7 +673,7 @@
     \cs_new:Npn \@@_codepoint_process:nN #1#2 { #1 {#2} }
   }
   {
-    \cs_new:Npx \@@_codepoint_process:nN #1#2
+    \cs_new:Npe \@@_codepoint_process:nN #1#2
       {
         \exp_not:N \int_compare:nNnTF {`#2} > { "80 }
           {
@@ -742,7 +742,7 @@
             #2 {#3}
           \prg_return_true: \prg_return_false:
       }
-    \cs_new:Npx \@@_codepoint_from_chars:Nw #1
+    \cs_new:Npe \@@_codepoint_from_chars:Nw #1
       {
         \exp_not:N \if_int_compare:w `#1 > "80 \exp_not:N \exp_stop_f:
           \sys_if_engine_pdftex:TF
@@ -817,7 +817,7 @@
 %   applied to \cs{cite}.
 %    \begin{macrocode}
 \tl_new:N \l_text_case_exclude_arg_tl
-\tl_set:Nx \l_text_case_exclude_arg_tl
+\tl_set:Ne \l_text_case_exclude_arg_tl
   {
     \exp_not:n { \begin \cite \end \label \ref }
     \exp_not:c { cite ~ }
@@ -1230,7 +1230,7 @@
 %   token. There is also the case of a straight \tn{@protected at testopt} to
 %   cover.
 %    \begin{macrocode}
-\cs_new:Npx \@@_expand_cs:N #1
+\cs_new:Npe \@@_expand_cs:N #1
   {
     \exp_not:N \str_if_eq:nnTF {#1} { \exp_not:N \protect }
       { \exp_not:N \@@_expand_protect:w }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -233,7 +233,7 @@
 %    \begin{macrocode}
 \group_begin:
 \char_set_active_eq:NN \  \scan_stop:
-\tl_const:Nx \c_@@_peek_catcodes_tl
+\tl_const:Ne \c_@@_peek_catcodes_tl
   {
     \char_generate:nn { 32 } { 3 }   3
     \char_generate:nn { 32 } { 4 }   4
@@ -773,7 +773,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_analysis_b:n #1
   {
-    \__kernel_tl_gset:Nx \g_@@_analysis_result_tl
+    \__kernel_tl_gset:Ne \g_@@_analysis_result_tl
       {
         \@@_analysis_b_loop:w 0; #1
         \prg_break_point:
@@ -837,7 +837,7 @@
 %   in the input stream, and call \cs{@@_analysis_b_normals:ww}
 %   with its first argument decremented.
 %    \begin{macrocode}
-\cs_new:Npx \@@_analysis_b_char:Nn #1#2
+\cs_new:Npe \@@_analysis_b_char:Nn #1#2
   {
     \exp_not:N \if_meaning:w #2 \exp_not:N \tex_undefined:D
       \token_to_str:N D \exp_not:N \else:
@@ -1004,9 +1004,9 @@
 %   as \cs{tl_show:N} by simply calling that function.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_analysis_show:N
-  { \@@_analysis_show:NNN \msg_show:nnxxxx \tl_show:N }
+  { \@@_analysis_show:NNN \msg_show:nneeee \tl_show:N }
 \cs_new_protected:Npn \tl_analysis_log:N
-  { \@@_analysis_show:NNN \msg_log:nnxxxx \tl_log:N }
+  { \@@_analysis_show:NNN \msg_log:nneeee \tl_log:N }
 \cs_new_protected:Npn \@@_analysis_show:NNN #1#2#3
   {
     \tl_if_exist:NTF #3
@@ -1024,9 +1024,9 @@
 %   No existence test needed here.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_analysis_show:n
-  { \@@_analysis_show:Nn \msg_show:nnxxxx }
+  { \@@_analysis_show:Nn \msg_show:nneeee }
 \cs_new_protected:Npn \tl_analysis_log:n
-  { \@@_analysis_show:Nn \msg_log:nnxxxx }
+  { \@@_analysis_show:Nn \msg_log:nneeee }
 \cs_new_protected:Npn \@@_analysis_show:Nn #1#2
   {
     \@@_analysis:n {#2}
@@ -1234,7 +1234,7 @@
 \cs_new_protected:Npn \@@_peek_analysis_loop:NNn #1#2#3
   {
     \group_begin:
-    \tl_set:Nx \l_@@_peek_code_tl
+    \tl_set:Ne \l_@@_peek_code_tl
       {
         \exp_not:c
           { @@_analysis_map_ \int_use:N \g__kernel_prg_map_int :nnN }
@@ -1266,8 +1266,8 @@
 %   \tn{outer} macros, hence the need for \cs{exp_after:wN} and
 %   \cs{exp_not:N} in the code above, which allows the next function to
 %   safely grab the token as an argument.  We run some code that is
-%   expanded using the primitive \cs{cs_set_nopar:Npx} rather than
-%   \cs{tl_set:Nx} to avoid grabbing it as an argument as |#1| may be
+%   expanded using the primitive \cs{cs_set_nopar:Npe} rather than
+%   \cs{tl_set:Ne} to avoid grabbing it as an argument as |#1| may be
 %   \tn{outer}.  To allow~|#1| as an argument of the user's function
 %   (stored in \cs{l_@@_peek_code_tl}), we set it equal to
 %   \cs{scan_stop:}, but we do it at the last minute because |#1|
@@ -1293,7 +1293,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_peek_analysis_exp:N #1
   {
-    \cs_set_nopar:Npx \l_@@_peek_code_tl
+    \cs_set_nopar:Npe \l_@@_peek_code_tl
       {
         \tex_let:D \exp_not:N #1 \scan_stop:
         \exp_not:o \l_@@_peek_code_tl
@@ -1315,7 +1315,7 @@
       }
     \l_@@_peek_code_tl
   }
-\cs_new:Npx \@@_peek_analysis_exp_active:N #1
+\cs_new:Npe \@@_peek_analysis_exp_active:N #1
   { { \exp_not:N \int_value:w `#1 } \token_to_str:N D }
 %    \end{macrocode}
 %   For normal non-expandable tokens we must distinguish characters
@@ -1366,7 +1366,7 @@
 %    \begin{macrocode}
 \group_begin:
 \char_set_active_eq:NN \ \scan_stop:
-\cs_new_protected:Npx \@@_peek_analysis_char:N #1
+\cs_new_protected:Npe \@@_peek_analysis_char:N #1
   {
     \cs_set_eq:NN
       \char_generate:nn { 32 } { 13 }
@@ -1374,7 +1374,7 @@
     \tex_lccode:D `#1 = 32 \exp_stop_f:
     \tex_lowercase:D
       {
-        \tl_put_right:Nx \exp_not:N \l_@@_peek_code_tl
+        \tl_put_right:Ne \exp_not:N \l_@@_peek_code_tl
           { \exp_not:n { \@@_analysis_b_char:Nn \use_none:n } {#1} }
       }
     \exp_not:n
@@ -1501,7 +1501,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_peek_analysis_active_str:n #1
   {
-    \tl_put_right:Nx \l_@@_peek_code_tl
+    \tl_put_right:Ne \l_@@_peek_code_tl
       {
         { \char_generate:nn { `#1 } { 13 } }
         { \int_value:w `#1 }
@@ -1521,7 +1521,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_peek_analysis_explicit:n #1
   {
-    \tl_put_right:Nx \l_@@_peek_code_tl
+    \tl_put_right:Ne \l_@@_peek_code_tl
       {
         \if_meaning:w \l_peek_token \c_space_token
           { ~ } { 32 } \token_to_str:N A
@@ -1601,7 +1601,7 @@
 \cs_new_protected:Npn \@@_peek_analysis_collect_end:NNN #1#2#3
   {
     #1 #2
-    \tl_put_right:Nx \l_@@_peek_code_tl
+    \tl_put_right:Ne \l_@@_peek_code_tl
       {
         { \exp_not:N \exp_not:n { \exp_not:c { \l_@@_internal_a_tl } } }
         { -1 }
@@ -1619,7 +1619,7 @@
 %   and its meaning are too long to fit in one line
 %   of the terminal, the end is replaced by this token list.
 %    \begin{macrocode}
-\tl_const:Nx \c_@@_analysis_show_etc_str % (
+\tl_const:Ne \c_@@_analysis_show_etc_str % (
   { \token_to_str:N \ETC.) }
 %    \end{macrocode}
 % \end{variable}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -97,7 +97,11 @@
 %   \meta{tl~var} is initially empty.
 % \end{function}
 %
-% \begin{function}{\tl_const:Nn, \tl_const:Nx, \tl_const:cn, \tl_const:cx}
+% \begin{function}
+%   {
+%     \tl_const:Nn, \tl_const:Ne,
+%     \tl_const:cn, \tl_const:ce
+%   }
 %   \begin{syntax}
 %     \cs{tl_const:Nn} \meta{tl~var} \Arg{token list}
 %   \end{syntax}
@@ -161,12 +165,12 @@
 %
 % \begin{function}
 %   {
-%     \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Ne, \tl_set:Nf, \tl_set:Nx,
-%     \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:ce, \tl_set:cf, \tl_set:cx,
+%     \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Ne, \tl_set:Nf,
+%     \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:ce, \tl_set:cf,
 %     \tl_gset:Nn, \tl_gset:NV, \tl_gset:Nv,
-%     \tl_gset:No, \tl_gset:Ne, \tl_gset:Nf, \tl_gset:Nx,
+%     \tl_gset:No, \tl_gset:Ne, \tl_gset:Nf,
 %     \tl_gset:cn, \tl_gset:cV, \tl_gset:cv,
-%     \tl_gset:co, \tl_gset:ce, \tl_gset:cf, \tl_gset:cx
+%     \tl_gset:co, \tl_gset:ce, \tl_gset:cf
 %   }
 %   \begin{syntax}
 %     \cs{tl_set:Nn} \meta{tl~var} \Arg{tokens}
@@ -177,10 +181,14 @@
 %
 % \begin{function}
 %   {
-%     \tl_put_left:Nn,  \tl_put_left:NV,  \tl_put_left:Nv,  \tl_put_left:No,  \tl_put_left:Nx,
-%     \tl_put_left:cn,  \tl_put_left:cV,  \tl_put_left:cv,  \tl_put_left:co,  \tl_put_left:cx,
-%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx,
-%     \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx
+%     \tl_put_left:Nn,  \tl_put_left:NV,  \tl_put_left:Nv, \tl_put_left:Ne,
+%     \tl_put_left:No,
+%     \tl_put_left:cn,  \tl_put_left:cV,  \tl_put_left:cv, \tl_put_left:ce,
+%     \tl_put_left:co,
+%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:Ne,
+%     \tl_gput_left:No,
+%     \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:ce
+%     \tl_gput_left:co
 %   }
 %   \begin{syntax}
 %     \cs{tl_put_left:Nn} \meta{tl~var} \Arg{tokens}
@@ -191,10 +199,14 @@
 %
 % \begin{function}
 %   {
-%     \tl_put_right:Nn,  \tl_put_right:NV,  \tl_put_right:Nv,  \tl_put_right:No,  \tl_put_right:Nx,
-%     \tl_put_right:cn,  \tl_put_right:cV,  \tl_put_right:cv,  \tl_put_right:co,  \tl_put_right:cx,
-%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No, \tl_gput_right:Nx,
-%     \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co, \tl_gput_right:cx
+%     \tl_put_right:Nn,  \tl_put_right:NV,  \tl_put_right:Nv, \tl_put_right:Ne,
+%     \tl_put_right:No,
+%     \tl_put_right:cn,  \tl_put_right:cV,  \tl_put_right:cv, \tl_put_right:ce,
+%     \tl_put_right:co,
+%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:Ne,
+%     \tl_gput_right:No,
+%     \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:ce
+%     \tl_gput_right:co
 %   }
 %   \begin{syntax}
 %     \cs{tl_put_right:Nn} \meta{tl~var} \Arg{tokens}
@@ -249,7 +261,7 @@
 %   contain and the category codes of those characters). Thus for example
 %   \begin{verbatim}
 %     \tl_set:Nn \l_tmpa_tl { abc }
-%     \tl_set:Nx \l_tmpb_tl { \tl_to_str:n { abc } }
+%     \tl_set:Ne \l_tmpb_tl { \tl_to_str:n { abc } }
 %     \tl_if_eq:NNTF \l_tmpa_tl \l_tmpb_tl { true } { false }
 %   \end{verbatim}
 %   yields \texttt{false}.
@@ -269,7 +281,10 @@
 % \end{function}
 %
 % \begin{function}[TF]
-%   {\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx}
+%   {
+%     \tl_if_eq:nn, \tl_if_eq:nV, \tl_if_eq:ne, \tl_if_eq:Vn, \tl_if_eq:en,
+%       \tl_if_eq:ee
+%   }
 %   \begin{syntax}
 %     \cs{tl_if_eq:nnTF} \Arg{token list_1} \Arg{token list_2} \Arg{true code} \Arg{false code}
 %   \end{syntax}
@@ -594,7 +609,11 @@
 % \end{function}
 %
 % \begin{function}[added = 2011-07-09, updated = 2012-06-25, EXP]
-%   {\tl_trim_spaces:n, \tl_trim_spaces:o}
+%   {
+%     \tl_trim_spaces:n, \tl_trim_spaces:V, \tl_trim_spaces:v,
+%       \tl_trim_spaces:e,
+%     \tl_trim_spaces:o
+%   }
 %   \begin{syntax}
 %     \cs{tl_trim_spaces:n} \Arg{token list}
 %   \end{syntax}
@@ -646,7 +665,7 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[updated = 2015-08-07]{\tl_show:n, \tl_show:x}
+% \begin{function}[updated = 2015-08-07]{\tl_show:n, \tl_show:e}
 %   \begin{syntax}
 %     \cs{tl_show:n} \Arg{token list}
 %   \end{syntax}
@@ -665,7 +684,8 @@
 %   \cs{tl_show:N} which displays the result in the terminal.
 % \end{function}
 %
-% \begin{function}[added = 2014-08-22, updated = 2015-08-07]{\tl_log:n, \tl_log:x}
+% \begin{function}[added = 2014-08-22, updated = 2015-08-07]
+%   {\tl_log:n, \tl_log:e, \tl_log:x}
 %   \begin{syntax}
 %     \cs{tl_log:n} \Arg{token list}
 %   \end{syntax}
@@ -997,17 +1017,17 @@
 %   \end{verbatim}
 %   Here are some more interesting examples. The calls
 %   \begin{verbatim}
-%     \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { 5 } }
-%     \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { -3 } }
-%     \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { 5 } }
-%     \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { -3 } }
+%     \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { 2 } { 5 } }
+%     \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { 2 } { -3 } }
+%     \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { -6 } { 5 } }
+%     \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { -6 } { -3 } }
 %   \end{verbatim}
 %   are all equivalent and will print |bcd{e{}}| on the terminal; similarly
 %   \begin{verbatim}
-%     \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { 5 } }
-%     \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { -3 } }
-%     \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { 5 } }
-%     \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { -3 } }
+%     \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { 2 } { 5 } }
+%     \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { 2 } { -3 } }
+%     \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { -6 } { 5 } }
+%     \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { -6 } { -3 } }
 %   \end{verbatim}
 %   are all equivalent and will print |bcd {e{}}| on the
 %   terminal (note the space in the middle). To the contrary,
@@ -1074,13 +1094,13 @@
 % \begin{function}[updated = 2011-08-11]
 %   {
 %     \tl_replace_once:Nnn,  \tl_replace_once:NVn,  \tl_replace_once:NnV,
-%     \tl_replace_once:Nxn,  \tl_replace_once:Nnx,  \tl_replace_once:Nxx,
+%     \tl_replace_once:Nen,  \tl_replace_once:Nne,  \tl_replace_once:Nee,
 %     \tl_replace_once:cnn,  \tl_replace_once:cVn,  \tl_replace_once:cnV,
-%     \tl_replace_once:cxn,  \tl_replace_once:cnx,  \tl_replace_once:cxx,
-%     \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_rgeplace_once:NnV,
-%     \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx,
+%     \tl_replace_once:cen,  \tl_replace_once:cne,  \tl_replace_once:cee,
+%     \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_greplace_once:NnV,
+%     \tl_greplace_once:Nen, \tl_greplace_once:Nne, \tl_greplace_once:Nee,
 %     \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_greplace_once:cnV,
-%     \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx
+%     \tl_greplace_once:cen, \tl_greplace_once:cne, \tl_greplace_once:cee
 %   }
 %   \begin{syntax}
 %     \cs{tl_replace_once:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1094,14 +1114,14 @@
 %
 % \begin{function}[updated = 2011-08-11]
 %   {
-%     \tl_replace_all:Nnn,  \tl_replace_all:NVn,   \tl_replace_all:NnV,
-%     \tl_replace_all:Nxn,  \tl_replace_all:Nnx,   \tl_replace_all:Nxx,
-%     \tl_replace_all:cnn,  \tl_replace_all:cVn,   \tl_replace_all:cnV,
-%     \tl_replace_all:cxn,  \tl_replace_all:cnx,   \tl_replace_all:cxx,
-%     \tl_greplace_all:Nnn, \tl_greplace_all:NVn,  \tl_greplace_all:cnV,
-%     \tl_greplace_all:Nxn, \tl_greplace_all:Nnx,  \tl_greplace_all:Nxx,
-%     \tl_greplace_all:cnn, \tl_greplace_all:cVn,  \tl_greplace_all:cnV,
-%     \tl_greplace_all:cxn, \tl_greplace_all:cnx,  \tl_greplace_all:cxx
+%     \tl_replace_all:Nnn,  \tl_replace_all:NVn,  \tl_replace_all:NnV,
+%     \tl_replace_all:Nen,  \tl_replace_all:Nne,  \tl_replace_all:Nee,
+%     \tl_replace_all:cnn,  \tl_replace_all:cVn,  \tl_replace_all:cnV,
+%     \tl_replace_all:cen,  \tl_replace_all:cne,  \tl_replace_all:cee,
+%     \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV,
+%     \tl_greplace_all:Nen, \tl_greplace_all:Nne, \tl_greplace_all:Nee,
+%     \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV,
+%     \tl_greplace_all:cen, \tl_greplace_all:cne, \tl_greplace_all:cee
 %   }
 %   \begin{syntax}
 %     \cs{tl_replace_all:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1119,10 +1139,10 @@
 %
 % \begin{function}[updated = 2011-08-11]
 %   {
-%     \tl_remove_once:Nn,  \tl_remove_once:NV,  \tl_remove_once:Nx,
-%     \tl_remove_once:cn,  \tl_remove_once:cV,  \tl_remove_once:cx,
-%     \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Nx
-%     \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:cx
+%     \tl_remove_once:Nn,  \tl_remove_once:NV,  \tl_remove_once:Ne,
+%     \tl_remove_once:cn,  \tl_remove_once:cV,  \tl_remove_once:ce,
+%     \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Ne,
+%     \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:ce
 %   }
 %   \begin{syntax}
 %     \cs{tl_remove_once:Nn} \meta{tl~var} \Arg{tokens}
@@ -1135,10 +1155,10 @@
 %
 % \begin{function}[updated = 2011-08-11]
 %   {
-%     \tl_remove_all:Nn,  \tl_remove_all:NV,  \tl_remove_all:Nx,
-%     \tl_remove_all:cn,  \tl_remove_all:cV,  \tl_remove_all:cx,
-%     \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Nx
-%     \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:cx
+%     \tl_remove_all:Nn,  \tl_remove_all:NV,  \tl_remove_all:Ne,
+%     \tl_remove_all:cn,  \tl_remove_all:cV,  \tl_remove_all:ce,
+%     \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Ne,
+%     \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:ce,
 %   }
 %   \begin{syntax}
 %     \cs{tl_remove_all:Nn} \meta{tl~var} \Arg{tokens}
@@ -1169,10 +1189,14 @@
 %
 % \begin{function}[updated = 2015-08-11]
 %   {
-%     \tl_set_rescan:Nnn,  \tl_set_rescan:NnV,  \tl_set_rescan:Nno,   \tl_set_rescan:Nnx,
-%     \tl_set_rescan:cnn,  \tl_set_rescan:cnV,  \tl_set_rescan:cno,   \tl_set_rescan:cnx,
-%     \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno,  \tl_gset_rescan:Nnx,
-%     \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno,  \tl_gset_rescan:cnx
+%     \tl_set_rescan:Nnn,  \tl_set_rescan:NnV, \tl_set_rescan:Nne,
+%     \tl_set_rescan:Nno,
+%     \tl_set_rescan:cnn,  \tl_set_rescan:cnV, \tl_set_rescan:cne,
+%     \tl_set_rescan:cno,
+%     \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nne,
+%     \tl_gset_rescan:Nno,
+%     \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cne,
+%     \tl_gset_rescan:cno,
 %   }
 %   \begin{syntax}
 %     \cs{tl_set_rescan:Nnn} \meta{tl~var} \Arg{setup} \Arg{tokens}
@@ -1300,12 +1324,12 @@
 %
 % \subsection{Functions}
 %
-% \begin{macro}{\__kernel_tl_set:Nx,\__kernel_tl_gset:Nx}
+% \begin{macro}{\__kernel_tl_set:Ne,\__kernel_tl_gset:Ne}
 %   These two are supplied to get better performance for macros which would
-%   otherwise use \cs{tl_set:Nx} or \cs{tl_gset:Nx} internally.
+%   otherwise use \cs{tl_set:Ne} or \cs{tl_gset:Ne} internally.
 %    \begin{macrocode}
-\cs_new_eq:NN \__kernel_tl_set:Nx  \cs_set_nopar:Npx
-\cs_new_eq:NN \__kernel_tl_gset:Nx \cs_gset_nopar:Npx
+\cs_new_eq:NN \__kernel_tl_set:Ne  \cs_set_nopar:Npe
+\cs_new_eq:NN \__kernel_tl_gset:Ne \cs_gset_nopar:Npe
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1322,23 +1346,22 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tl_const:Nn, \tl_const:Nx, \tl_const:cn, \tl_const:cx}
-%   Constants are also easy to generate. They use \cs{cs_gset_nopar:Npx} instead
-%   of \cs{__kernel_tl_gset:Nx} so that the correct scope checking is applied if
+% \begin{macro}
+%   {
+%     \tl_const:Nn, \tl_const:Ne, \tl_const:Nx,
+%     \tl_const:cn, \tl_const:ce, \tl_const:cx
+%   }
+%   Constants are also easy to generate. They use \cs{cs_gset_nopar:Npe} instead
+%   of \cs{__kernel_tl_gset:Ne} so that the correct scope checking is applied if
 %   \pkg{l3debug} is used.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_const:Nn #1#2
   {
     \__kernel_chk_if_free_cs:N #1
-    \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} }
+    \cs_gset_nopar:Npe #1 { \__kernel_exp_not:w {#2} }
   }
-\cs_new_protected:Npn \tl_const:Nx #1#2
-  {
-    \__kernel_chk_if_free_cs:N #1
-    \cs_gset_nopar:Npx #1 {#2}
-  }
-\cs_generate_variant:Nn \tl_const:Nn { c }
-\cs_generate_variant:Nn \tl_const:Nx { c }
+\cs_generate_variant:Nn \tl_const:Nn { Ne , c , ce }
+\cs_generate_variant:Nn \tl_const:Nn { Nx , cx }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1396,7 +1419,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_concat:NNN #1#2#3
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#2}
         \__kernel_exp_not:w \exp_after:wN {#3}
@@ -1404,7 +1427,7 @@
   }
 \cs_new_protected:Npn \tl_gconcat:NNN #1#2#3
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#2}
         \__kernel_exp_not:w \exp_after:wN {#3}
@@ -1439,7 +1462,7 @@
 %    \begin{macrocode}
 \group_begin:
 \tex_catcode:D `- = 11 ~
-\tl_const:Nx \c_novalue_tl { - NoValue \token_to_str:N - }
+\tl_const:Ne \c_novalue_tl { - NoValue \token_to_str:N - }
 \group_end:
 %    \end{macrocode}
 % \end{variable}
@@ -1471,25 +1494,21 @@
 %   by hand as it is used quite a lot.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_set:Nn #1#2
-  { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w {#2} } }
+  { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w {#2} } }
 \cs_new_protected:Npn \tl_set:No #1#2
-  { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
-\cs_new_protected:Npn \tl_set:Nx #1#2
-  { \__kernel_tl_set:Nx #1 {#2} }
+  { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
 \cs_new_protected:Npn \tl_gset:Nn #1#2
-  { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w {#2} } }
+  { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w {#2} } }
 \cs_new_protected:Npn \tl_gset:No #1#2
-  { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
-\cs_new_protected:Npn \tl_gset:Nx #1#2
-  { \__kernel_tl_gset:Nx #1 {#2} }
+  { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
 \cs_generate_variant:Nn \tl_set:Nn  {    NV , Nv , Ne , Nf }
 \cs_generate_variant:Nn \tl_set:Nn  { c, cV , cv , ce , cf }
-\cs_generate_variant:Nn \tl_set:Nx  { c }
 \cs_generate_variant:Nn \tl_set:No  { c }
+\cs_generate_variant:Nn \tl_set:Nn  { Nx , cx }
 \cs_generate_variant:Nn \tl_gset:Nn {    NV , Nv , Ne , Nf }
 \cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , ce , cf }
-\cs_generate_variant:Nn \tl_gset:Nx { c }
 \cs_generate_variant:Nn \tl_gset:No { c }
+\cs_generate_variant:Nn \tl_gset:Nn { Nx , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1496,76 +1515,94 @@
 %
 % \begin{macro}
 %   {
-%     \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:No, \tl_put_left:Nx,
-%     \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:co, \tl_put_left:cx
+%     \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:Ne,
+%     \tl_put_left:No, \tl_put_left:Nx,
+%     \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:ce,
+%     \tl_put_left:co, \tl_put_left:cx
 %   }
 % \begin{macro}
 %   {
-%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx,
-%     \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx
+%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:Ne,
+%     \tl_gput_left:No, \tl_gput_left:Nx,
+%     \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:ce,
+%     \tl_gput_left:co, \tl_gput_left:cx
 %   }
 % Adding to the left is done directly to gain a little performance.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_put_left:Nn #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
   }
 \cs_new_protected:Npn \tl_put_left:NV #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
   }
 \cs_new_protected:Npn \tl_put_left:Nv #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
   }
+\cs_new_protected:Npn \tl_put_left:Ne #1#2
+  {
+    \__kernel_tl_set:Ne #1
+      {
+        \__kernel_exp_not:w \tex_expanded:D { {#2} }
+        \__kernel_exp_not:w \exp_after:wN {#1}
+      }
+  }
 \cs_new_protected:Npn \tl_put_left:No #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#2}
         \__kernel_exp_not:w \exp_after:wN {#1}
       }
   }
-\cs_new_protected:Npn \tl_put_left:Nx #1#2
-  { \__kernel_tl_set:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } }
 \cs_new_protected:Npn \tl_gput_left:Nn #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
   }
 \cs_new_protected:Npn \tl_gput_left:NV #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
   }
 \cs_new_protected:Npn \tl_gput_left:Nv #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
   }
+\cs_new_protected:Npn \tl_gput_left:Ne #1#2
+  {
+    \__kernel_tl_gset:Ne #1
+      {
+        \__kernel_exp_not:w \tex_expanded:D { {#2} }
+        \__kernel_exp_not:w \exp_after:wN {#1}
+      }
+  }
 \cs_new_protected:Npn \tl_gput_left:No #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#2}
         \__kernel_exp_not:w \exp_after:wN {#1}
       }
   }
-\cs_new_protected:Npn \tl_gput_left:Nx #1#2
-  { \__kernel_tl_gset:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } }
 \cs_generate_variant:Nn \tl_put_left:Nn  { c }
 \cs_generate_variant:Nn \tl_put_left:NV  { c }
 \cs_generate_variant:Nn \tl_put_left:Nv  { c }
+\cs_generate_variant:Nn \tl_put_left:Ne  { c }
 \cs_generate_variant:Nn \tl_put_left:No  { c }
-\cs_generate_variant:Nn \tl_put_left:Nx  { c }
+\cs_generate_variant:Nn \tl_put_left:Nn  { Nx, cx }
 \cs_generate_variant:Nn \tl_gput_left:Nn { c }
 \cs_generate_variant:Nn \tl_gput_left:NV { c }
-\cs_generate_variant:Nn \tl_gput_left:NV { c }
+\cs_generate_variant:Nn \tl_gput_left:Nv { c }
+\cs_generate_variant:Nn \tl_gput_left:Ne { c }
 \cs_generate_variant:Nn \tl_gput_left:No { c }
-\cs_generate_variant:Nn \tl_gput_left:Nx { c }
+\cs_generate_variant:Nn \tl_gput_left:Nn { Nx , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1572,72 +1609,88 @@
 %
 % \begin{macro}
 %   {
-%     \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:No, \tl_put_right:Nx,
-%     \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:co, \tl_put_right:cx
+%     \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:Ne,
+%     \tl_put_right:No, \tl_put_right:Nx,
+%     \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:ce,
+%     \tl_put_right:co, \tl_put_right:cx
 %   }
 % \begin{macro}
 %   {
-%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No,
-%     \tl_gput_right:Nx,
-%     \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co,
-%     \tl_gput_right:cx
+%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv,  \tl_gput_right:Ne,
+%     \tl_gput_right:No, \tl_gput_right:Nx,
+%     \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv,  \tl_gput_right:ce,
+%     \tl_gput_right:co, \tl_gput_right:cx
 %   }
 % The same on the right.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_put_right:Nn #1#2
-  { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
+  { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
 \cs_new_protected:Npn \tl_put_right:NV #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
   }
 \cs_new_protected:Npn \tl_put_right:Nv #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
   }
+\cs_new_protected:Npn \tl_put_right:Ne #1#2
+  {
+    \__kernel_tl_set:Ne #1
+      {
+        \__kernel_exp_not:w \exp_after:wN {#1}
+        \__kernel_exp_not:w \tex_expanded:D { {#2} }
+      }
+  }
 \cs_new_protected:Npn \tl_put_right:No #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#1}
         \__kernel_exp_not:w \exp_after:wN {#2}
       }
   }
-\cs_new_protected:Npn \tl_put_right:Nx #1#2
-  { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } }
 \cs_new_protected:Npn \tl_gput_right:Nn #1#2
-  { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
+  { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
 \cs_new_protected:Npn \tl_gput_right:NV #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
   }
 \cs_new_protected:Npn \tl_gput_right:Nv #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
   }
+\cs_new_protected:Npn \tl_gput_right:Ne #1#2
+  {
+    \__kernel_tl_gset:Ne #1
+      {
+        \__kernel_exp_not:w \exp_after:wN {#1}
+        \__kernel_exp_not:w \tex_expanded:D { {#2} }
+      }
+  }
 \cs_new_protected:Npn \tl_gput_right:No #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#1}
         \__kernel_exp_not:w \exp_after:wN {#2}
       }
   }
-\cs_new_protected:Npn \tl_gput_right:Nx #1#2
-  { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } }
 \cs_generate_variant:Nn \tl_put_right:Nn  { c }
 \cs_generate_variant:Nn \tl_put_right:NV  { c }
 \cs_generate_variant:Nn \tl_put_right:Nv  { c }
+\cs_generate_variant:Nn \tl_put_right:Ne  { c }
 \cs_generate_variant:Nn \tl_put_right:No  { c }
-\cs_generate_variant:Nn \tl_put_right:Nx  { c }
+\cs_generate_variant:Nn \tl_put_right:Nn  { Nx , cx }
 \cs_generate_variant:Nn \tl_gput_right:Nn { c }
 \cs_generate_variant:Nn \tl_gput_right:NV { c }
 \cs_generate_variant:Nn \tl_gput_right:Nv { c }
+\cs_generate_variant:Nn \tl_gput_right:Ne { c }
 \cs_generate_variant:Nn \tl_gput_right:No { c }
-\cs_generate_variant:Nn \tl_gput_right:Nx { c }
+\cs_generate_variant:Nn \tl_gput_right:Nn { Nx, cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1679,19 +1732,23 @@
 %   codes: it cannot appear in the tokens being rescanned since all
 %   colons have the same category code.
 %    \begin{macrocode}
-\tl_const:Nx \c_@@_rescan_marker_tl { : \token_to_str:N : }
+\tl_const:Ne \c_@@_rescan_marker_tl { : \token_to_str:N : }
 %    \end{macrocode}
 % \end{variable}
 %
 % \begin{macro}
 %   {
-%     \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nno, \tl_set_rescan:Nnx,
-%     \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cno, \tl_set_rescan:cnx
+%     \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nne,
+%     \tl_set_rescan:Nno, \tl_set_rescan:Nnx,
+%     \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cne,
+%     \tl_set_rescan:cno, \tl_set_rescan:cnx,
 %   }
 % \begin{macro}
 %   {
-%     \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
-%     \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno, \tl_gset_rescan:cnx
+%     \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nne,
+%     \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
+%     \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cne,
+%     \tl_gset_rescan:cno, \tl_gset_rescan:cnx
 %   }
 % \begin{macro}{\tl_rescan:nn, \tl_rescan:nV}
 % \begin{macro}{\@@_rescan_aux:}
@@ -1790,10 +1847,10 @@
     \group_end:
     #1 #2 {#3}
   }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  {     NnV , Nno , Nnx }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  { c , cnV , cno , cnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn {     NnV , Nno , Nnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cnV , cno , cnx }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn  { NnV , Nne , c , cnV , cne }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn  { Nno , Nnx , cno , cnx }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn { NnV , Nne , c , cnV , cne }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nno , Nnx , cno , cnx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1913,38 +1970,46 @@
 %
 % \begin{macro}
 %   {
-%     \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV,
-%     \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx,
-%     \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV,
-%     \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx
+%     \tl_replace_once:Nnn,  \tl_replace_once:NVn,   \tl_replace_once:NnV,
+%     \tl_replace_once:Nen,  \tl_replace_once:Nne,   \tl_replace_once:Nee,
+%     \tl_replace_once:Nxn,  \tl_replace_once:Nnx,   \tl_replace_once:Nxx,
+%     \tl_replace_once:cnn,  \tl_replace_once:cVn,   \tl_replace_once:cnV,
+%     \tl_replace_once:cen,  \tl_replace_once:cne,   \tl_replace_once:cee,
+%     \tl_replace_once:cxn,  \tl_replace_once:cnx,   \tl_replace_once:cxx
 %   }
 % \begin{macro}
 %   {
-%     \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV,
-%     \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx,
-%     \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV,
-%     \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx
+%     \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_greplace_once:NnV,
+%     \tl_greplace_once:Nen, \tl_greplace_once:Nne, \tl_greplace_once:Nee,
+%     \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx,
+%     \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_greplace_once:cnV,
+%     \tl_greplace_once:cen, \tl_greplace_once:cne, \tl_greplace_once:cee,
+%     \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx
 %   }
 % \begin{macro}
 %   {
-%     \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV,
-%     \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx,
-%     \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV,
-%     \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx
+%     \tl_replace_all:Nnn,  \tl_replace_all:NVn,   \tl_replace_all:NnV,
+%     \tl_replace_all:Nen,  \tl_replace_all:Nne,   \tl_replace_all:Nee,
+%     \tl_replace_all:Nxn,  \tl_replace_all:Nnx,   \tl_replace_all:Nxx,
+%     \tl_replace_all:cnn,  \tl_replace_all:cVn,   \tl_replace_all:cnV,
+%     \tl_replace_all:cen,  \tl_replace_all:cne,   \tl_replace_all:cee,
+%     \tl_replace_all:cxn,  \tl_replace_all:cnx,   \tl_replace_all:cxx
 %   }
 % \begin{macro}
 %   {
-%     \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_replace_once:NnV,
-%     \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx,
-%     \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_replace_once:cnV,
-%     \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx
+%     \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV,
+%     \tl_greplace_all:Nen, \tl_greplace_all:Nne, \tl_greplace_all:Nee,
+%     \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx,
+%     \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV,
+%     \tl_greplace_all:cen, \tl_greplace_all:cne, \tl_greplace_all:cee,
+%     \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx
 %   }
 %   All of the \texttt{replace} functions call \cs{@@_replace:NnNNNnn}
 %   with appropriate arguments.  The first two arguments are explained
 %   later.  The next controls whether the replacement function calls
 %   itself (\cs{@@_replace_next:w}) or stops (\cs{@@_replace_wrap:w})
-%   after the first replacement.  Next comes an \texttt{x}-type
-%   assignment function \cs{tl_set:Nx} or \cs{tl_gset:Nx} for local or
+%   after the first replacement.  Next comes an \texttt{e}-type
+%   assignment function \cs{tl_set:Ne} or \cs{tl_gset:Ne} for local or
 %   global replacements.  Finally, the three arguments \meta{tl~var}
 %   \Arg{pattern} \Arg{replacement} provided by the user.  When
 %   describing the auxiliary functions below, we denote the contents of
@@ -1951,21 +2016,29 @@
 %   the \meta{tl~var} by \meta{token list}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_replace_once:Nnn
-  { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_set:Nx  }
+  { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \tl_greplace_once:Nnn
-  { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_gset:Nx }
+  { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \tl_replace_all:Nnn
-  { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Nx  }
+  { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \tl_greplace_all:Nnn
-  { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Nx }
+  { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Ne }
 \cs_generate_variant:Nn \tl_replace_once:Nnn
-  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+  { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_replace_once:Nnn
+  { Nx , Nnx , Nxx , cxn , cnx , cxx }
 \cs_generate_variant:Nn \tl_greplace_once:Nnn
-  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+  { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_greplace_once:Nnn
+  { Nx , Nnx , Nxx , cxn , cnx , cxx }
 \cs_generate_variant:Nn \tl_replace_all:Nnn
-  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+  { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_replace_all:Nnn
+  { Nx , Nnx , Nxx , cxn , cnx , cxx }
 \cs_generate_variant:Nn \tl_greplace_all:Nnn
-  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+  { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_greplace_all:Nnn
+  { Nx , Nnx , Nxx , cxn , cnx , cxx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2046,7 +2119,7 @@
   {
     \tl_if_empty:nTF {#6}
       {
-        \msg_error:nnx { kernel } { empty-search-pattern }
+        \msg_error:nne { kernel } { empty-search-pattern }
           { \tl_to_str:n {#7} }
       }
       {
@@ -2124,7 +2197,7 @@
     \group_align_safe_begin:
     \cs_set:Npn \@@_replace_wrap:w ##1 #1 ##2
       { \__kernel_exp_not:w \exp_after:wN { \use_none:nn ##1 } ##2 }
-    \cs_set:Npx \@@_replace_next:w ##1 #5
+    \cs_set:Npe \@@_replace_next:w ##1 #5
       {
         \exp_not:N \@@_replace_wrap:w ##1
         \exp_not:n { #1 }
@@ -2152,13 +2225,13 @@
 %
 % \begin{macro}
 %   {
-%     \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Nx,
-%     \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:cx
+%     \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Ne,
+%     \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:ce
 %   }
 % \begin{macro}
 %   {
-%     \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Nx,
-%     \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:cx
+%     \tl_gremove_once:Nn, \tl_gremove_once:NV,
+%     \tl_gremove_once:cn, \tl_gremove_once:cV,
 %   }
 %   Removal is just a special case of replacement.
 %    \begin{macrocode}
@@ -2166,8 +2239,8 @@
   { \tl_replace_once:Nnn #1 {#2} { } }
 \cs_new_protected:Npn \tl_gremove_once:Nn #1#2
   { \tl_greplace_once:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_once:Nn  { NV , Nx , c , cV , cx }
-\cs_generate_variant:Nn \tl_gremove_once:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \tl_remove_once:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \tl_gremove_once:Nn { NV , Ne , c , cV , ce }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2174,13 +2247,17 @@
 %
 % \begin{macro}
 %   {
-%     \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Nx,
-%     \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:cx
+%     \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Ne,
+%     \tl_remove_all:Nx,
+%     \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:ce,
+%     \tl_remove_all:cx,
 %   }
 % \begin{macro}
 %   {
-%     \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Nx,
-%     \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:cx
+%     \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Ne,
+%     \tl_gremove_all:Nx,
+%     \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:ce,
+%     \tl_gremove_all:cx,
 %   }
 %   Removal is just a special case of replacement.
 %    \begin{macrocode}
@@ -2188,8 +2265,10 @@
   { \tl_replace_all:Nnn #1 {#2} { } }
 \cs_new_protected:Npn \tl_gremove_all:Nn #1#2
   { \tl_greplace_all:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_all:Nn  { NV , Nx , c , cV , cx }
-\cs_generate_variant:Nn \tl_gremove_all:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \tl_remove_all:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \tl_remove_all:Nn  { Nx , cx }
+\cs_generate_variant:Nn \tl_gremove_all:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , cx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2328,7 +2407,12 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[TF]{\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx}
+% \begin{macro}[TF]
+%   {
+%     \tl_if_eq:nn, \tl_if_eq:nV, \tl_if_eq:ne, \tl_if_eq:Vn, \tl_if_eq:en,
+%       \tl_if_eq:ee,
+%     \tl_if_eq:xn, \tl_if_eq:nx, \tl_if_eq:xx, 
+%   }
 %   A simple store and compare routine.
 %    \begin{macrocode}
 \prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F ,  TF }
@@ -2344,7 +2428,9 @@
       \prg_return_false:
     \fi:
   }
-\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { V , nV , x , nx } { TF , T , F }
+\prg_generate_conditional_variant:Nnn \tl_if_eq:nn
+  { nV , ne , nx , e , ee , x , xx }
+  { TF , T , F }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2423,7 +2509,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[EXP,pTF]{\tl_if_single:N}
+% \begin{macro}[EXP,pTF]{\tl_if_single:N, \tl_if_single:c}
 %   Expand the token list and feed it to \cs{tl_if_single:nTF}.
 %    \begin{macrocode}
 \cs_new:Npn \tl_if_single_p:N { \exp_args:No \tl_if_single_p:n }
@@ -2430,6 +2516,7 @@
 \cs_new:Npn \tl_if_single:NT  { \exp_args:No \tl_if_single:nT  }
 \cs_new:Npn \tl_if_single:NF  { \exp_args:No \tl_if_single:nF  }
 \cs_new:Npn \tl_if_single:NTF { \exp_args:No \tl_if_single:nTF }
+\prg_generate_conditional_variant:Nnn \tl_if_single:N {c} { p , T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2751,7 +2838,12 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\tl_trim_spaces:n, \tl_trim_spaces:o}
+% \begin{macro}
+%   {
+%     \tl_trim_spaces:n, \tl_trim_spaces:V, \tl_trim_spaces:v,
+%       \tl_trim_spaces:e,
+%     \tl_trim_spaces:o, 
+%   }
 % \begin{macro}{\tl_trim_spaces_apply:nN, \tl_trim_spaces_apply:oN}
 % \begin{macro}
 %   {
@@ -2774,14 +2866,14 @@
       { \@@_trim_mark: #1 }
       { \__kernel_exp_not:w \exp_after:wN }
   }
-\cs_generate_variant:Nn \tl_trim_spaces:n { o }
+\cs_generate_variant:Nn \tl_trim_spaces:n { V , v , e , o }
 \cs_new:Npn \tl_trim_spaces_apply:nN #1#2
   { \@@_trim_spaces:nn { \@@_trim_mark: #1 } { \exp_args:No #2 } }
 \cs_generate_variant:Nn \tl_trim_spaces_apply:nN { o }
 \cs_new_protected:Npn \tl_trim_spaces:N #1
-  { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
+  { \__kernel_tl_set:Ne #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
 \cs_new_protected:Npn \tl_gtrim_spaces:N #1
-  { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
+  { \__kernel_tl_gset:Ne #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
 \cs_generate_variant:Nn \tl_trim_spaces:N  { c }
 \cs_generate_variant:Nn \tl_gtrim_spaces:N { c }
 %    \end{macrocode}
@@ -3237,7 +3329,7 @@
 %   or with a space, making sure that
 %   \cs{@@_act_space:wwNNN} gobbles the space.
 %    \begin{macrocode}
-\exp_args:Nnx \use:n { \cs_new:Npn \@@_act_loop:w #1 \s_@@_act_stop }
+\exp_args:Nne \use:n { \cs_new:Npn \@@_act_loop:w #1 \s_@@_act_stop }
   {
     \exp_not:o { \@@_act_if_head_is_space:nTF {#1} }
       \exp_not:N \@@_act_space:wwNNN
@@ -3346,9 +3438,9 @@
 %   which stops the \texttt{f}-expansion.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_reverse:N #1
-  { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
+  { \__kernel_tl_set:Ne #1 { \exp_args:No \tl_reverse:n { #1 } } }
 \cs_new_protected:Npn \tl_greverse:N #1
-  { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
+  { \__kernel_tl_gset:Ne #1 { \exp_args:No \tl_reverse:n { #1 } } }
 \cs_generate_variant:Nn \tl_reverse:N  { c }
 \cs_generate_variant:Nn \tl_greverse:N { c }
 %    \end{macrocode}
@@ -3563,7 +3655,7 @@
               { \token_to_str:N #2 = \__kernel_exp_not:w \exp_after:wN {#2} }
           }
           {
-            \msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nneee { kernel } { bad-type }
               { \token_to_str:N #2 } { \token_to_meaning:N #2 } { tl }
           }
       }
@@ -3571,7 +3663,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tl_show:n, \tl_show:x, \@@_show:n}
+% \begin{macro}{\tl_show:n, \tl_show:e, \tl_show:x, \@@_show:n}
 % \begin{macro}[EXP]{\@@_show:w}
 %   Many |show| functions are based on \cs{tl_show:n}.
 %   The argument of \cs{tl_show:n} is line-wrapped using
@@ -3591,7 +3683,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_show:n #1
   { \iow_wrap:nnnN { >~ \tl_to_str:n {#1} . } { } { } \@@_show:n }
-\cs_generate_variant:Nn \tl_show:n { x }
+\cs_generate_variant:Nn \tl_show:n { e , x }
 \cs_new_protected:Npn \@@_show:n #1
   {
     \tl_set:Nf \l_@@_internal_a_tl { \@@_show:w #1 \s_@@_stop }
@@ -3609,13 +3701,13 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\tl_log:n, \tl_log:x}
+% \begin{macro}{\tl_log:n, \tl_log:e, \tl_log:x}
 %   Logging is much easier, simply line-wrap.  The |>~| and trailing
 %   period is there to match the output of \cs{tl_show:n}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_log:n #1
   { \iow_wrap:nnnN { > ~ \tl_to_str:n {#1} . } { } { } \iow_log:n }
-\cs_generate_variant:Nn \tl_log:n { x }
+\cs_generate_variant:Nn \tl_log:n { e , x }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3635,17 +3727,17 @@
         \exp_args:Nf \tl_if_empty:nTF
           { \cs_prefix_spec:N #1 \cs_parameter_spec:N #1 }
           {
-            \tl_set:Nx \l_@@_internal_a_tl {#3}
+            \tl_set:Ne \l_@@_internal_a_tl {#3}
             \tl_if_eq:NNTF #1 \l_@@_internal_a_tl
               {#4}
               {
-                \msg_error:nnxxxx { kernel } { bad-type }
+                \msg_error:nneeee { kernel } { bad-type }
                   { \token_to_str:N #1 } { \tl_to_str:N #1 }
                   {#2} { \tl_to_str:N \l_@@_internal_a_tl }
               }
           }
           {
-            \msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nneee { kernel } { bad-type }
               { \token_to_str:N #1 } { \token_to_meaning:N #1 } {#2}
           }
       }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -1490,7 +1490,7 @@
             \char_set_lccode:nn { `\^^@ } { ##1 }
           \tex_lowercase:D { \group_end: #2 ^^@ }
         }
-      \cs_new_protected:cpx { #1 :NN } ##1
+      \cs_new_protected:cpe { #1 :NN } ##1
         { \exp_not:c { #1 : nN } { `##1 } }
     }
   \@@_tmp:nN { char_set_active_eq }  \cs_set_eq:NN
@@ -1614,7 +1614,7 @@
     \char_set_catcode_math_superscript:n { 0 }
     \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: }
     \char_set_catcode_parameter:n { 0 }
-    \tl_put_right:Nn \l_@@_tmp_tl { ^^@^^@ \exp_not:N \or: }
+    \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: }
     \tl_put_right:Nn \l_@@_tmp_tl { { \if_false: } \fi: \exp_not:N \or: }
     \char_set_catcode_alignment:n { 0 }
     \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: }
@@ -1627,7 +1627,7 @@
 %    \end{macrocode}
 %   Convert the above temporary list into a series of constant token
 %   lists, one for each character code, using \cs{tex_lowercase:D} to
-%   convert |^^@| in each case. The \texttt{x}-type expansion ensures
+%   convert |^^@| in each case. The \texttt{e}-type expansion ensures
 %   that \cs{tex_lowercase:D} receives the contents of the token list.
 %    \begin{macrocode}
       \cs_set_protected:Npn \@@_tmp:n #1
@@ -1634,9 +1634,9 @@
         {
           \char_set_lccode:nn { 0 } {#1}
           \char_set_lccode:nn { 32 } {#1}
-          \exp_args:Nx \tex_lowercase:D
+          \exp_args:Ne \tex_lowercase:D
             {
-              \tl_const:Nx
+              \tl_const:Ne
                 \exp_not:c { c_@@_ \@@_int_to_roman:w #1 _tl }
                 { \exp_not:o \l_@@_tmp_tl }
             }
@@ -1848,7 +1848,7 @@
 % \begin{macro}{\c_catcode_other_space_tl}
 %   Create a space with category code $12$: an \enquote{other} space.
 %    \begin{macrocode}
-\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\  } { 12 } }
+\tl_const:Ne \c_catcode_other_space_tl { \char_generate:nn { `\  } { 12 } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2127,17 +2127,17 @@
 %   detokenized.
 %
 %    \begin{macrocode}
-\use:x
+\use:e
   {
-    \prg_new_conditional:Npnn \exp_not:N \token_if_macro:N ##1
+    \prg_new_conditional:Npnn \exp_not:N \token_if_macro:N #1
       { p , T ,  F , TF }
       {
         \exp_not:N \exp_after:wN \exp_not:N \@@_if_macro_p:w
-        \exp_not:N \token_to_meaning:N ##1 \tl_to_str:n { ma : }
+        \exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma : }
           \s_@@_stop
       }
     \cs_new:Npn \exp_not:N  \@@_if_macro_p:w
-      ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \s_@@_stop
+      #1 \tl_to_str:n { ma } #2 \c_colon_str #3 \s_@@_stop
   }
       {
         \str_if_eq:nnTF { #2 } { cro }
@@ -2208,11 +2208,11 @@
 \group_begin:
 \cs_set_protected:Npn \@@_tmp:w #1
   {
-    \use:x
+    \use:e
       {
         \cs_new:Npn \exp_not:c { @@_delimit_by_ #1 :w }
-            ####1 \tl_to_str:n {#1} ####2 \s_@@_stop
-          { ####1 \tl_to_str:n {#1} }
+            ##1 \tl_to_str:n {#1} ##2 \s_@@_stop
+          { ##1 \tl_to_str:n {#1} }
       }
   }
 \@@_tmp:w { char" }
@@ -2283,17 +2283,17 @@
 \group_begin:
 \cs_set_protected:Npn \@@_tmp:w #1#2#3
   {
-    \use:x
+    \use:e
       {
-        \prg_new_conditional:Npnn \exp_not:c { token_if_ #1 :N } ####1
+        \prg_new_conditional:Npnn \exp_not:c { token_if_ #1 :N } ##1
           { p , T ,  F , TF }
           {
             \cs_if_exist:cT { tex_ #2 :D }
               {
-                \exp_not:N \if_meaning:w ####1 \exp_not:c { tex_ #2 :D }
+                \exp_not:N \if_meaning:w ##1 \exp_not:c { tex_ #2 :D }
                 \exp_not:N \prg_return_false:
                 \exp_not:N \else:
-                \exp_not:N \if_meaning:w ####1 \exp_not:c { tex_ #2 def:D }
+                \exp_not:N \if_meaning:w ##1 \exp_not:c { tex_ #2 def:D }
                 \exp_not:N \prg_return_false:
                 \exp_not:N \else:
               }
@@ -2301,7 +2301,7 @@
               {
                 \exp_not:N \exp_after:wN
                 \exp_not:c { @@_delimit_by_ #2 :w }
-                \exp_not:N \token_to_meaning:N ####1
+                \exp_not:N \token_to_meaning:N ##1
                 ? \tl_to_str:n {#2} \s_@@_stop
               }
               { \exp_not:n {#3} }
@@ -2464,26 +2464,26 @@
   }
   {
     \tex_chardef:D \c_@@_A_int = `A ~ %
-    \use:x
+    \use:e
       {
-        \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N ##1
+        \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N #1
           { p , T , F , TF }
           {
-            \exp_not:N \token_if_macro:NTF ##1
+            \exp_not:N \token_if_macro:NTF #1
               \exp_not:N \prg_return_false:
               {
                 \exp_not:N \exp_after:wN \exp_not:N \@@_if_primitive:NNw
-                \exp_not:N \token_to_meaning:N ##1
-                  \tl_to_str:n { : : : } \s_@@_stop ##1
+                \exp_not:N \token_to_meaning:N #1
+                  \tl_to_str:n { : : : } \s_@@_stop #1
               }
           }
         \cs_new:Npn \exp_not:N \@@_if_primitive:NNw
-          ##1##2 ##3 \c_colon_str ##4 \s_@@_stop
+          #1#2 #3 \c_colon_str #4 \s_@@_stop
           {
             \exp_not:N \tl_if_empty:oTF
-              { \exp_not:N \@@_if_primitive_space:w ##3 ~ }
+              { \exp_not:N \@@_if_primitive_space:w #3 ~ }
               {
-                \exp_not:N \@@_if_primitive_loop:N ##3
+                \exp_not:N \@@_if_primitive_loop:N #3
                   \c_colon_str \s_@@_stop
               }
               { \exp_not:N \@@_if_primitive_nullfont:N }
@@ -2694,7 +2694,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \peek_remove_spaces:n #1
   {
-    \cs_set:Npx \@@_false:w { \exp_not:n {#1} }
+    \cs_set:Npe \@@_false:w { \exp_not:n {#1} }
     \group_align_safe_begin:
     \cs_set:Npn \@@_true_aux:w { \peek_after:Nw \@@_remove_spaces: }
     \@@_true_aux:w
@@ -2723,7 +2723,7 @@
 \cs_new_protected:Npn \peek_remove_filler:n #1
   {
     \cs_set:Npn \@@_true_aux:w { \@@_remove_filler:w }
-    \cs_set:Npx \@@_false:w
+    \cs_set:Npe \@@_false:w
       {
         \exp_not:N \group_align_safe_end:
         \exp_not:n {#1}
@@ -2786,13 +2786,13 @@
     \group_align_safe_begin:
     \cs_set_eq:NN \l_@@_search_token #3
     \tl_set:Nn \l_@@_search_tl {#3}
-    \cs_set:Npx \@@_true_aux:w
+    \cs_set:Npe \@@_true_aux:w
       {
         \exp_not:N \group_align_safe_end:
         \exp_not:n {#4}
       }
     \cs_set_eq:NN \@@_true:w #1
-    \cs_set:Npx \@@_false:w
+    \cs_set:Npe \@@_false:w
       {
         \exp_not:N \group_align_safe_end:
         \exp_not:n {#5}
@@ -2928,7 +2928,7 @@
       {
         \tl_map_inline:nn { { TF } { T } { F } }
           {
-            \cs_new_protected:cpx { peek_ #1 ##1 :N ####1 }
+            \cs_new_protected:cpe { peek_ #1 ##1 :N ####1 }
               {
                 \exp_not:c { @@_token ##1 _generic:NN ####1 }
                 \exp_not:c { @@_execute_branches_ #1 : }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -549,7 +549,7 @@
     }
   \cs_set_protected:Npn \@@_data_auxii:w #1 ; #2 ~ #3 \q_stop
     {
-      \tl_const:cx
+      \tl_const:ce
         { c_@@_nfd_ \codepoint_str_generate:n {"#1} _tl }
         {
           {"#2}
@@ -607,11 +607,11 @@
       \@@_add:nn { lowercase } {#5}
       \int_compare:nNnF {#4} = { \@@_data_offset:nn {#1} {#6} }
         {
-          \tl_const:cx
+          \tl_const:ce
             { c_@@_titlecase_ \codepoint_str_generate:n {"#1} _tl }
             { {"#6} { } { } }
         }
-      \tl_set:Nx \l_@@_next_codepoint_fint_tl
+      \tl_set:Ne \l_@@_next_codepoint_fint_tl
         { \int_eval:n { "#1 + 1 } }
     }
   \cs_set_protected:Npn \@@_add:nn #1#2
@@ -626,7 +626,7 @@
 %  The general category for unassigned characters is \texttt{Cn}, so we
 %  find the correct value once and then use that.
 %    \begin{macrocode}
-  \cs_set_protected:Npx \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
+  \cs_set_protected:Npe \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
     {
        \exp_not:N \tl_if_blank:nTF {#6}
          {
@@ -679,7 +679,7 @@
      \int_compare:nNnF
        { \int_div_truncate:nn { #2 - #1 } \c_@@_block_size_int } = 0
        {
-         \tl_set:cx { l_@@_ #3 _block_clist }
+         \tl_set:ce { l_@@_ #3 _block_clist }
            {
              \exp_args:NNe \use:nn \use_none:n
                { \prg_replicate:nn { \c_@@_block_size_int } { , #4 } }
@@ -689,7 +689,7 @@
         }
      \prg_replicate:nn
        { \int_mod:nn { #2 - #1 } \c_@@_block_size_int }
-       { \clist_put_right:cx { l_@@_ #3 _block_clist } {#4} }
+       { \clist_put_right:ce { l_@@_ #3 _block_clist } {#4} }
     }
 %    \end{macrocode}
 %   To allow rapid comparison, each completed block is stored locally as a
@@ -716,12 +716,12 @@
                 \tl_use:c { l_@@_ #1 _block_tl } _clist
               }
               { l_@@_ #1 _block_clist }
-            \tl_set:cx { l_@@_ #1 _block_tl }
+            \tl_set:ce { l_@@_ #1 _block_tl }
               { \int_eval:n { \tl_use:c { l_@@_ #1 _block_tl } + 1 } }
           }
         \prg_replicate:nn {#2}
           {
-            \tl_set:cx { l_@@_ #1 _pos_tl }
+            \tl_set:ce { l_@@_ #1 _pos_tl }
               { \int_eval:n { \tl_use:c { l_@@_ #1 _pos_tl } + 1 } }
             \exp_args:Nc \__kernel_intarray_gset:Nnn
               { g_@@_ #1 _index_intarray }
@@ -846,7 +846,7 @@
         \reverse_if:N \if_int_compare:w
           \int_eval:n { \__kernel_codepoint_data:nn { lowercase } {"#1} + "#1 }
             = "#3 ~
-          \tl_const:cx
+          \tl_const:ce
             { c_@@_casefold_ \codepoint_str_generate:n {"#1} _tl }
             { {"#3} { } { } }
         \fi:
@@ -862,7 +862,7 @@
 %    \begin{macrocode}
   \cs_set_protected:Npn \@@_data_auxii:w #1 ~ #2 ~ #3 ~ #4 \q_stop
     {
-      \tl_const:cx { c_@@_casefold_ \codepoint_str_generate:n {"#1} _tl }
+      \tl_const:ce { c_@@_casefold_ \codepoint_str_generate:n {"#1} _tl }
         {
           {"#2}
           {"#3}
@@ -895,7 +895,7 @@
     {
       \tl_if_empty:nF {#4}
         {
-          \tl_const:cx { c_@@_ #2 case_ \codepoint_str_generate:n {"#1} _tl }
+          \tl_const:ce { c_@@_ #2 case_ \codepoint_str_generate:n {"#1} _tl }
             {
               {"#3}
               {"#4}
@@ -994,7 +994,7 @@
         {
           \str_if_empty:NF \l_@@_tmpb_str
             {
-              \clist_const:cx { c_@@_grapheme_ \l_@@_tmpb_str _clist }
+              \clist_const:ce { c_@@_grapheme_ \l_@@_tmpb_str _clist }
                 { \exp_after:wN \use_none:n \l_@@_tmpa_str }
               \cs_set_nopar:Npn \l_@@_tmpa_str { }
             }
@@ -1004,7 +1004,7 @@
     }
   \cs_set_protected:Npn \@@_data_auxii:w #1 .. #2 .. #3 \q_stop
     {
-      \cs_set_nopar:Npx \l_@@_tmpa_str
+      \cs_set_nopar:Npe \l_@@_tmpa_str
         {
           \l_@@_tmpa_str ,
           \tl_trim_spaces:n {#1} .. \tl_trim_spaces:n {#2}

Modified: trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -62,7 +62,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -154,7 +154,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2023-08-29}{}
+\ProvidesExplPackage{l3keys2e}{2023-10-10}{}
   {LaTeX2e option processing using LaTeX3 keys}
 %    \end{macrocode}
 %
@@ -206,7 +206,7 @@
           {
             unknown .code:n =
               {
-                \msg_error:nnxx { keyvalue } { option-unknown }
+                \msg_error:nnee { keyvalue } { option-unknown }
                   { \l_keys_key_str } { \@currname }
               }
           }
@@ -264,7 +264,7 @@
           {
             \clist_map_inline:cn { opt@ \@currname . \@currext }
               {
-                \keys_if_exist:nxTF {#1} { \@@_latexe_remove_equals:n {##1} }
+                \keys_if_exist:neTF {#1} { \@@_latexe_remove_equals:n {##1} }
                   { \clist_put_right:Nn \l_@@_latexe_options_clist {##1} }
                   { \clist_put_right:Nn \@unusedoptionlist {##1} }
               }
@@ -284,7 +284,7 @@
   {
     \clist_map_inline:Nn \@classoptionslist
       {
-        \keys_if_exist:nxT {#1} { \@@_latexe_remove_equals:n {##1} }
+        \keys_if_exist:neT {#1} { \@@_latexe_remove_equals:n {##1} }
           {
             \clist_put_right:Nn \l_@@_latexe_options_clist {##1}
             \clist_remove_all:Nn \@unusedoptionlist {##1}

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -171,7 +171,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xfp}{2023-08-29}{}
+\ProvidesExplPackage{xfp}{2023-10-10}{}
   {L3 Floating point unit}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -65,7 +65,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -535,7 +535,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2023-08-29}{}
+\ProvidesExplPackage{xfrac}{2023-10-10}{}
   {L3 Experimental split-level fractions}
 %    \end{macrocode}
 %
@@ -784,11 +784,11 @@
     \mode_if_math:TF
       {
         \cs_set_eq:NN \@@_text_or_math:n \text
-        \cs_set:Npx \@@_denominator_font_change:
+        \cs_set:Npe \@@_denominator_font_change:
           { \tex_fam:D \l_@@_denominator_font_tl }
-        \cs_set:Npx \@@_numerator_font_change:
+        \cs_set:Npe \@@_numerator_font_change:
           { \tex_fam:D \l_@@_numerator_font_tl }
-        \cs_set:Npx \@@_slash_symbol_font_change:
+        \cs_set:Npe \@@_slash_symbol_font_change:
           { \tex_fam:D \l_@@_slash_symbol_font_tl }
       }
       {

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -67,7 +67,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -1064,7 +1064,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xparse}{2023-08-29}{}
+\ProvidesExplPackage{xparse}{2023-10-10}{}
   {L3 Experimental document command parser}
 %    \end{macrocode}
 %
@@ -1091,7 +1091,7 @@
       { \msg_redirect_module:nnn {#1} { info } { none } }
     \cs_new_protected:Npn \@@_unknown_argument_type_error:n ##1
       {
-        \msg_error:nnxx {#1} { unknown-argument-type }
+        \msg_error:nnee {#1} { unknown-argument-type }
           { \@@_environment_or_command: } { \tl_to_str:n {##1} }
       }
   }
@@ -1126,7 +1126,7 @@
 %   These argument types are aliases of more general ones, for example
 %   with the default argument |-NoValue-|.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_normalize_type_g:w
+\cs_new_protected:Npe \@@_normalize_type_g:w
   { \exp_not:N \@@_normalize_type_G:w { \exp_not:V \c_novalue_tl } }
 %    \end{macrocode}
 % \end{macro}
@@ -1399,7 +1399,7 @@
 \cs_gset_protected:Npn \@@_get_arg_spec_error:n #1
   {
     \bool_set_true:N \l_@@_environment_bool
-    \str_set:Nx \l_@@_environment_str {#1}
+    \str_set:Ne \l_@@_environment_str {#1}
     \@@_get_arg_spec_error_aux:n
       { \cs_if_exist:cTF { \l_@@_environment_str } }
   }
@@ -1407,11 +1407,11 @@
   {
     #1
       {
-        \msg_error:nnx { cmd } { non-xparse }
+        \msg_error:nne { cmd } { non-xparse }
           { \@@_environment_or_command: }
       }
       {
-        \msg_error:nnx { cmd } { unknown }
+        \msg_error:nne { cmd } { unknown }
           { \@@_environment_or_command: }
       }
   }
@@ -1427,7 +1427,7 @@
   {
     \__kernel_cmd_if_xparse:NTF #1
       {
-        \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
+        \tl_set:Ne \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
         #2
       }
       {#3}

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
 %
 % \maketitle
 %
@@ -711,15 +711,10 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2023-08-29}{}
+\ProvidesExplPackage{xtemplate}{2023-10-10}{}
   {L3 Experimental prototype document functions}
 %    \end{macrocode}
 %
-%    \begin{macrocode}
-\cs_generate_variant:Nn \keys_define:nn { nx }
-\cs_generate_variant:Nn \tl_trim_spaces:n { e }
-%    \end{macrocode}
-%
 % \subsection{Variables and constants}
 %
 % \begin{variable}{\c_@@_code_root_tl}
@@ -943,7 +938,7 @@
     \int_compare:nNnTF {#2} = \l_@@_tmp_tl
        {#3}
        {
-         \msg_error:nnxxx { xtemplate }
+         \msg_error:nneee { xtemplate }
            { argument-number-mismatch } {#1} { \l_@@_tmp_tl } {#2}
        }
   }
@@ -959,7 +954,7 @@
     \cs_if_exist:cTF { \c_@@_code_root_tl #1 / #2 }
       {#3}
       {
-        \msg_error:nnxx { xtemplate } { no-template-code }
+        \msg_error:nnee { xtemplate } { no-template-code }
           {#1} {#2}
       }
   }
@@ -976,7 +971,7 @@
   {
     \cs_if_exist:cTF { @@_store_value_ #1 :n }
       {#2}
-      { \msg_error:nnx { xtemplate } { unknown-keytype } {#1} }
+      { \msg_error:nne { xtemplate } { unknown-keytype } {#1} }
   }
 \cs_generate_variant:Nn \@@_execute_if_keytype_exist:nT { o }
 %    \end{macrocode}
@@ -990,7 +985,7 @@
   {
     \prop_if_in:NnTF \g_@@_object_type_prop {#1}
       {#2}
-      { \msg_error:nnx { xtemplate } { unknown-object-type } {#1} }
+      { \msg_error:nne { xtemplate } { unknown-object-type } {#1} }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1005,7 +1000,7 @@
     \cs_if_exist:cTF { \c_@@_keytypes_root_tl #1 / #2 }
       {#3}
       {
-        \msg_error:nnxx { xtemplate } { unknown-template }
+        \msg_error:nnee { xtemplate } { unknown-template }
           {#1} {#2}
       }
    }
@@ -1191,13 +1186,13 @@
     \int_set:Nn \l_@@_tmp_int {#2}
     \int_compare:nTF { 0 <= \l_@@_tmp_int <= 9 }
       {
-        \msg_info:nnxx { xtemplate } { declare-object-type }
-          {#1} { \exp_not:V \l_@@_tmp_int }
+        \msg_info:nnnV { xtemplate } { declare-object-type }
+          {#1} \l_@@_tmp_int
         \prop_gput:NnV \g_@@_object_type_prop {#1}
           \l_@@_tmp_int
       }
       {
-        \msg_error:nnxx { xtemplate } { bad-number-of-arguments }
+        \msg_error:nnee { xtemplate } { bad-number-of-arguments }
           {#1} { \exp_not:V \l_@@_tmp_int }
       }
   }
@@ -1266,7 +1261,7 @@
                 \seq_if_in:NoTF \l_@@_key_order_seq
                   \l_@@_key_name_tl
                   {
-                    \msg_error:nnx { xtemplate }
+                    \msg_error:nne { xtemplate }
                       { duplicate-key-interface }
                       { \l_@@_key_name_tl }
                   }
@@ -1281,7 +1276,7 @@
       {
         \tl_if_empty:NT \l_@@_keytype_arg_tl
           {
-            \msg_error:nnx { xtemplate }
+            \msg_error:nne { xtemplate }
               { keytype-requires-argument } {#1}
             \bool_set_true:N \l_@@_error_bool
             \seq_map_break:
@@ -1290,7 +1285,7 @@
   }
 \cs_new:Npn \@@_parse_keys_elt_aux:
   {
-    \tl_set:Nx \l_@@_tmp_tl
+    \tl_set:Ne \l_@@_tmp_tl
       {
         \l_@@_keytype_tl
         \tl_if_empty:NF \l_@@_keytype_arg_tl
@@ -1331,7 +1326,7 @@
 %   that, the standard delimited argument method is used to separate the
 %   two parts.
 %    \begin{macrocode}
-\cs_new_protected:Npx \@@_split_keytype:n #1
+\cs_new_protected:Npe \@@_split_keytype:n #1
   {
     \exp_not:N \bool_set_false:N \exp_not:N \l_@@_error_bool
     \tl_set:Nn \exp_not:N \l_@@_tmp_tl {#1}
@@ -1347,32 +1342,32 @@
       }
       {
         \exp_not:N \bool_set_true:N \exp_not:N \l_@@_error_bool
-        \msg_error:nnx { xtemplate } { missing-keytype } {#1}
+        \msg_error:nne { xtemplate } { missing-keytype } {#1}
       }
   }
-\use:x
+\use:e
   {
     \cs_new_protected:Npn \exp_not:N \@@_split_keytype_aux:w
-      ##1 \token_to_str:N : ##2 \s_@@_stop
+      #1 \token_to_str:N : #2 \s_@@_stop
       {
-        \tl_put_right:Nx \exp_not:N \l_@@_key_name_tl
+        \tl_put_right:Ne \exp_not:N \l_@@_key_name_tl
           {
             \exp_not:N \tl_trim_spaces:e
-              { \exp_not:N \tl_to_str:n {##1} }
+              { \exp_not:N \tl_to_str:n {#1} }
           }
-        \tl_if_in:nnTF {##2} { \token_to_str:N : }
+        \tl_if_in:nnTF {#2} { \token_to_str:N : }
           {
             \tl_put_right:Nn \exp_not:N \l_@@_key_name_tl
               { \token_to_str:N : }
-            \exp_not:N \@@_split_keytype_aux:w ##2 \s_@@_stop
+            \exp_not:N \@@_split_keytype_aux:w #2 \s_@@_stop
           }
           {
             \exp_not:N \tl_if_empty:NTF \exp_not:N \l_@@_key_name_tl
               {
-                \msg_error:nnx { xtemplate } { empty-key-name }
-                  { \token_to_str:N : ##2 }
+                \msg_error:nne { xtemplate } { empty-key-name }
+                  { \token_to_str:N : #2 }
               }
-              { \exp_not:N \@@_split_keytype_arg:n {##2} }
+              { \exp_not:N \@@_split_keytype_arg:n {#2} }
           }
       }
   }
@@ -1395,7 +1390,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_split_keytype_arg:n #1
   {
-    \tl_set:Nx \l_@@_keytype_tl { \tl_trim_spaces:n {#1} }
+    \tl_set:Ne \l_@@_keytype_tl { \tl_trim_spaces:n {#1} }
     \tl_clear:N \l_@@_keytype_arg_tl
     \cs_set_protected:Npn \@@_split_keytype_arg_aux:n ##1
       {
@@ -1406,11 +1401,11 @@
               {
                 \tl_if_blank:nT {####1}
                   {
-                    \tl_set:Nx \l_@@_keytype_tl
+                    \tl_set:Ne \l_@@_keytype_tl
                       { \tl_trim_spaces:n {##1} }
                     \tl_if_blank:nF {####2}
                       {
-                        \tl_set:Nx \l_@@_keytype_arg_tl
+                        \tl_set:Ne \l_@@_keytype_arg_tl
                           { \use:n ####2 }
                       }
                     \seq_map_break:
@@ -1548,7 +1543,7 @@
     \@@_store_restrictions:n { #1 / #2 }
     \prop_map_inline:Nn \l_@@_keytypes_prop
       {
-        \msg_error:nnxxx { xtemplate } { key-not-implemented }
+        \msg_error:nneee { xtemplate } { key-not-implemented }
           {##1} {#2} {#1}
       }
   }
@@ -1560,7 +1555,7 @@
 % this is an error function.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_parse_vars_elt:n #1
-  { \msg_error:nnx { xtemplate } { key-no-variable } {#1} }
+  { \msg_error:nne { xtemplate } { key-no-variable } {#1} }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1572,7 +1567,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_parse_vars_elt:nnn #1#2#3
  {
-    \tl_set:Nx \l_@@_key_name_tl
+    \tl_set:Ne \l_@@_key_name_tl
       { \tl_trim_spaces:e { \tl_to_str:n {#2} } }
     \prop_get:NoNTF
       \l_@@_keytypes_prop
@@ -1583,7 +1578,7 @@
         \@@_parse_vars_elt_aux:nn {#1} {#3}
         \prop_remove:NV \l_@@_keytypes_prop \l_@@_key_name_tl
       }
-      { \msg_error:nnx { xtemplate } { unknown-key } {#2} }
+      { \msg_error:nne { xtemplate } { unknown-key } {#2} }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1606,7 +1601,7 @@
       {
         \tl_if_blank:nTF {#2}
           {
-            \exp_args:Nnnx \@@_parse_vars_elt_aux:nnn
+            \exp_args:Nnne \@@_parse_vars_elt_aux:nnn
               {#1} { global } { \tl_trim_spaces:n {#3} }
           }
           { \msg_error:nnn { xtemplate } { bad-variable } { #2 global #3 } }
@@ -1630,7 +1625,7 @@
                       \exp_not:c
                         { cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
                       { \exp_not:o \l_@@_keytype_arg_tl }
-                      {####1}
+                      {##1}
                   }
               }
             \prop_put:Non \l_@@_vars_prop
@@ -1644,7 +1639,7 @@
                   {
                     \exp_not:c
                       { cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
-                      \exp_not:N #3 { \UseInstance {####1} }
+                      \exp_not:N #3 { \UseInstance {##1} }
                   }
               }
             \prop_put:Non \l_@@_vars_prop
@@ -1665,12 +1660,12 @@
             \prop_put:Non \l_@@_vars_prop
               \l_@@_key_name_tl {#2#3}
           }
-          { \msg_error:nnx { xtemplate } { bad-variable } { #2#3 } }
+          { \msg_error:nne { xtemplate } { bad-variable } { #2#3 } }
       }
   }
 \cs_new_protected:Npn \@@_parse_vars_elt_key:nn #1#2
   {
-    \keys_define:nx { template / #1 }
+    \keys_define:ne { template / #1 }
       { \l_@@_key_name_tl #2 }
   }
 %    \end{macrocode}
@@ -1708,7 +1703,7 @@
   {
     \clist_set:No \l_@@_tmp_clist { \l_@@_keytype_arg_tl }
     \prop_put:Non \l_@@_vars_prop \l_@@_key_name_tl { }
-    \keys_define:nx { template / #1 } { \l_@@_key_name_tl .choice: }
+    \keys_define:ne { template / #1 } { \l_@@_key_name_tl .choice: }
     \keyval_parse:nnn
       { \@@_implement_choice_elt:n }
       { \@@_implement_choice_elt:nnn {#1} }
@@ -1720,7 +1715,7 @@
       {
         \clist_map_inline:Nn \l_@@_tmp_clist
           {
-            \msg_error:nnx { xtemplate } { choice-not-implemented }
+            \msg_error:nne { xtemplate } { choice-not-implemented }
               {##1}
           }
       }
@@ -1731,11 +1726,11 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_implement_choices_default:
   {
-    \tl_set:Nx \l_@@_tmp_tl
+    \tl_set:Ne \l_@@_tmp_tl
       { \l_@@_key_name_tl \c_space_tl \l_@@_tmp_tl }
     \prop_if_in:NoF \l_@@_vars_prop \l_@@_tmp_tl
       {
-        \tl_set:Nx \l_@@_tmp_tl
+        \tl_set:Ne \l_@@_tmp_tl
           { \l_@@_key_name_tl \c_space_tl \l_@@_tmp_tl }
         \prop_if_in:NoF \l_@@_vars_prop \l_@@_tmp_tl
           {
@@ -1744,7 +1739,7 @@
             \@@_split_keytype_arg:o \l_@@_tmp_tl
             \prop_get:NoN \l_@@_values_prop \l_@@_key_name_tl
               \l_@@_tmp_tl
-            \msg_error:nnxxx { xtemplate } { unknown-default-choice }
+            \msg_error:nneee { xtemplate } { unknown-default-choice }
               { \l_@@_key_name_tl } { \l_@@_key_name_tl }
               { \l_@@_keytype_arg_tl }
           }
@@ -1772,7 +1767,7 @@
             \prop_get:NoN \l_@@_keytypes_prop \l_@@_key_name_tl
               \l_@@_tmp_tl
             \@@_split_keytype_arg:o \l_@@_tmp_tl
-            \msg_error:nnxxx { xtemplate } { unknown-choice }
+            \msg_error:nneee { xtemplate } { unknown-choice }
               { \l_@@_key_name_tl } {#2}
               { \l_@@_keytype_arg_tl }
           }
@@ -1787,7 +1782,7 @@
             \prop_get:NoN \l_@@_keytypes_prop \l_@@_key_name_tl
               \l_@@_tmp_tl
             \@@_split_keytype_arg:o \l_@@_tmp_tl
-            \msg_error:nnxxx { xtemplate } { unknown-choice }
+            \msg_error:nneee { xtemplate } { unknown-choice }
               { \l_@@_key_name_tl } {#2}
               { \l_@@_keytype_arg_tl }
           }
@@ -1795,15 +1790,15 @@
   }
 \cs_new_protected:Npn \@@_implement_choice_elt_aux:nnn #1#2#3
   {
-    \keys_define:nx { template / #1 }
+    \keys_define:ne { template / #1 }
       { \l_@@_key_name_tl / #2 .code:n = { \exp_not:n {#3} } }
-    \tl_set:Nx \l_@@_tmp_tl
+    \tl_set:Ne \l_@@_tmp_tl
       { \l_@@_key_name_tl \c_space_tl #2 }
     \prop_put:Non \l_@@_vars_prop \l_@@_tmp_tl {#3}
   }
 \cs_new_protected:Npn \@@_implement_choice_elt:n #1
   {
-    \msg_error:nnxxx { xtemplate } { choice-requires-code }
+    \msg_error:nneee { xtemplate } { choice-requires-code }
       { \l_@@_key_name_tl } {#1}
   }
 %    \end{macrocode}
@@ -1886,7 +1881,7 @@
 \cs_new_protected:Npn \@@_parse_values_elt:n #1
   {
     \bool_set_true:N \l_@@_error_bool
-    \msg_error:nnx { xtemplate } { key-no-value } {#1}
+    \msg_error:nne { xtemplate } { key-no-value } {#1}
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1900,7 +1895,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_parse_values_elt:nn #1#2
   {
-    \tl_set:Nx \l_@@_key_name_tl
+    \tl_set:Ne \l_@@_key_name_tl
       { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
     \prop_get:NoNTF \l_@@_keytypes_prop \l_@@_key_name_tl
       \l_@@_tmp_tl
@@ -1914,7 +1909,7 @@
           { \@@_parse_values_elt_aux:n {#2} }
       }
       {
-        \msg_error:nnx { xtemplate } { unknown-key }
+        \msg_error:nne { xtemplate } { unknown-key }
           { \l_@@_key_name_tl }
       }
   }
@@ -1978,7 +1973,7 @@
         \prop_put:Nnn \l_@@_values_prop { from~template } {#2}
         \@@_store_values:n { #1 / #3 / #4 }
         \@@_convert_to_assignments:
-        \cs_set_protected:cpx { \c_@@_instances_root_tl #1 / #3 / #4 }
+        \cs_set_protected:cpe { \c_@@_instances_root_tl #1 / #3 / #4 }
           {
             \exp_not:N \@@_assignments_push:n
               { \exp_not:o \l_@@_assignments_tl }
@@ -2009,7 +2004,7 @@
           { \c_@@_instances_root_tl #1 / #2 / #3 }
       }
       {
-        \msg_error:nnxx { xtemplate } { unknown-instance }
+        \msg_error:nnee { xtemplate } { unknown-instance }
           {#1} {#3}
       }
   }
@@ -2035,7 +2030,7 @@
           {#2} {#3} {#4}
       }
       {
-        \msg_error:nnxx { xtemplate } { unknown-instance }
+        \msg_error:nnee { xtemplate } { unknown-instance }
           {#1} {#3}
       }
   }
@@ -2094,7 +2089,7 @@
             \tl_set:Nn \l_@@_key_name_tl {#1}
             \use:c { @@_assign_ \l_@@_keytype_tl : }
           }
-          { \msg_error:nnx { xtemplate } { unknown-attribute } {#1} }
+          { \msg_error:nne { xtemplate } { unknown-attribute } {#1} }
       }
   }
 \cs_generate_variant:Nn \@@_convert_to_assignments_aux:nn { no }
@@ -2170,7 +2165,7 @@
     \@@_if_key_value:oTF \l_@@_value_tl
       {
         \@@_key_to_value:
-        \tl_put_right:Nx \l_@@_assignments_tl
+        \tl_put_right:Ne \l_@@_assignments_tl
           {
             \exp_not:c { #1 _eq:NN }
             \exp_not:o \l_@@_var_tl
@@ -2178,7 +2173,7 @@
           }
       }
       {
-        \tl_put_right:Nx \l_@@_assignments_tl
+        \tl_put_right:Ne \l_@@_assignments_tl
           {
             \exp_not:c { #1 _ \l_@@_value_tl :N }
             \exp_not:o \l_@@_var_tl
@@ -2197,16 +2192,16 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_assign_choice:
   {
-    \@@_assign_choice_aux:xF
+    \@@_assign_choice_aux:eF
       { \l_@@_key_name_tl \c_space_tl \l_@@_value_tl }
       {
-        \@@_assign_choice_aux:xF
+        \@@_assign_choice_aux:eF
           { \l_@@_key_name_tl \c_space_tl unknown }
           {
             \prop_get:NoN \l_@@_keytypes_prop \l_@@_key_name_tl
               \l_@@_tmp_tl
             \@@_split_keytype_arg:o \l_@@_tmp_tl
-            \msg_error:nnxxx { xtemplate } { unknown-choice }
+            \msg_error:nneee { xtemplate } { unknown-choice }
               { \l_@@_key_name_tl } { \l_@@_value_tl }
               { \l_@@_keytype_arg_tl }
           }
@@ -2220,7 +2215,7 @@
       \l_@@_tmp_tl
       { \tl_put_right:No \l_@@_assignments_tl \l_@@_tmp_tl }
   }
-\cs_generate_variant:Nn \@@_assign_choice_aux:nF { x }
+\cs_generate_variant:Nn \@@_assign_choice_aux:nF { e }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2237,7 +2232,7 @@
   }
 \cs_new_protected:Npn \@@_assign_function_aux:N #1
   {
-    \tl_put_right:Nx \l_@@_assignments_tl
+    \tl_put_right:Ne \l_@@_assignments_tl
       {
         \cs_generate_from_arg_count:NNnn
           \exp_not:o \l_@@_var_tl
@@ -2264,7 +2259,7 @@
   }
 \cs_new_protected:Npn \@@_assign_instance_aux:N #1
   {
-    \tl_put_right:Nx \l_@@_assignments_tl
+    \tl_put_right:Ne \l_@@_assignments_tl
       {
         \exp_not:N #1 \exp_not:o \l_@@_var_tl
           {
@@ -2340,7 +2335,7 @@
     \@@_if_key_value:oTF \l_@@_value_tl
       {
         \@@_key_to_value:
-        \tl_put_right:Nx \l_@@_assignments_tl
+        \tl_put_right:Ne \l_@@_assignments_tl
           {
             #1 \exp_not:o \l_@@_var_tl
               \exp_not:o \l_@@_value_tl
@@ -2347,7 +2342,7 @@
           }
       }
       {
-        \tl_put_right:Nx \l_@@_assignments_tl
+        \tl_put_right:Ne \l_@@_assignments_tl
           {
             #2 \exp_not:o \l_@@_var_tl
               { \exp_not:o \l_@@_value_tl }
@@ -2379,7 +2374,7 @@
   {
     \@@_if_key_value:oT \l_@@_value_tl
       { \@@_key_to_value: }
-    \tl_put_right:Nx \l_@@_assignments_tl
+    \tl_put_right:Ne \l_@@_assignments_tl
       {
         #1 \exp_not:o \l_@@_var_tl
          { \exp_not:o \l_@@_value_tl }
@@ -2403,7 +2398,7 @@
   { \exp_after:wN \@@_key_to_value_auxi:w \l_@@_value_tl }
 \cs_new_protected:Npn \@@_key_to_value_auxi:w \KeyValue #1
   {
-    \tl_set:Nx \l_@@_tmp_tl { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
+    \tl_set:Ne \l_@@_tmp_tl { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
     \prop_get:NoNTF
       \l_@@_vars_prop
       \l_@@_tmp_tl
@@ -2413,7 +2408,7 @@
           \s_@@_mark global \q_@@_nil \s_@@_stop
       }
       {
-        \msg_error:nnx { xtemplate } { unknown-attribute }
+        \msg_error:nne { xtemplate } { unknown-attribute }
           { \l_@@_tmp_tl }
       }
   }
@@ -2450,7 +2445,7 @@
   {
     \str_if_eq:nnTF {#1} {#3}
       { \@@_use_template:nnn {#3} {#4} {#5} }
-      { \msg_error:nnxx { xtemplate } { type-mismatch } {#1} {#3} }
+      { \msg_error:nnee { xtemplate } { type-mismatch } {#1} {#3} }
 }
 \cs_new_protected:Npn \@@_use_instance_aux:nn #1#2
   {
@@ -2468,7 +2463,7 @@
           \@@_if_instance_exist:nnnTF {#1} { } {#2}
             { \use:c { \c_@@_instances_root_tl #1 / / #2 } }
             {
-              \msg_error:nnxx { xtemplate } { unknown-instance }
+              \msg_error:nnee { xtemplate } { unknown-instance }
                 {#1} {#2}
             }
         }
@@ -2570,7 +2565,7 @@
   }
 \cs_new_protected:Npn \@@_show:Nnnn #1#2#3#4
   {
-    \msg_show:nnxxxx { xtemplate } { show-attribute }
+    \msg_show:nneeee { xtemplate } { show-attribute }
       { \tl_to_str:n {#2} }
       { \tl_to_str:n {#3} }
       { \tl_to_str:n {#4} }
@@ -2589,7 +2584,7 @@
     \@@_if_instance_exist:nnnT {#1} {#2} {#3}
       {
         \@@_recover_values:n { #1 / #2 / #3 }
-        \msg_show:nnxxxx { xtemplate } { show-values }
+        \msg_show:nneeee { xtemplate } { show-values }
           { \tl_to_str:n {#1} }
           { \tl_to_str:n {#2} }
           { \tl_to_str:n {#3} }

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2023-10-10 20:27:00 UTC (rev 68507)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvipdfmx.def}{2023-04-19}{}
+  {l3backend-dvipdfmx.def}{2023-10-10}{}
   {L3 backend support: dvipdfmx}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -45,7 +45,6 @@
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
   { \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
 \cs_if_exist:NTF \@ifl at t@r
   {
     \@ifl at t@r \fmtversion { 2020-10-01 }
@@ -58,7 +57,7 @@
   { \cs_new_eq:NN \__kernel_backend_first_shipout:n \use:n }
 \cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
   { \__kernel_backend_literal:n { pdf:literal~ #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
 \cs_new_protected:Npn \__kernel_backend_literal_page:n #1
   { \__kernel_backend_literal:n { pdf:literal~direct~ #1 } }
 \cs_new_protected:Npn \__kernel_backend_scope_begin:
@@ -82,7 +81,7 @@
 \msg_new:nnn { color } { unknown-named-color }
   { Named~color~'#1'~is~not~known. }
 \prop_new:N \g__color_backend_colorant_prop
-\cs_new:Npx \__color_backend_devicen_colorants:n #1
+\cs_new:Npe \__color_backend_devicen_colorants:n #1
   {
     \exp_not:N \tl_if_blank:nF {#1}
       {
@@ -108,7 +107,7 @@
     \__color_backend_devicen_colorants:w
   }
 \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
-  { \__kernel_backend_literal:x { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
+  { \__kernel_backend_literal:e { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
 \cs_new_eq:NN \__color_backend_select_devicen:nn \__color_backend_select_separation:nn
 \cs_new_eq:NN \__color_backend_select_iccbased:nn \__color_backend_select_separation:nn
 \cs_new_protected:Npn \__color_backend_init_resource:n #1
@@ -116,7 +115,7 @@
   }
 \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
-    \pdf_object_unnamed_write:nx { dict }
+    \pdf_object_unnamed_write:ne { dict }
       {
         /FunctionType ~ 2
         /Domain ~ [0 ~ 1]
@@ -124,19 +123,19 @@
         /C0 ~ [#4] ~
         /C1 ~ [#5] /N ~ 1
       }
-    \exp_args:Nx \__color_backend_separation_init:nn
+    \exp_args:Ne \__color_backend_separation_init:nn
       { \str_convert_pdfname:n {#1} } {#2}
     \__color_backend_init_resource:n { color \int_use:N \g__color_model_int }
   }
 \cs_new_protected:Npn \__color_backend_separation_init:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g__color_model_int }
         \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
-    \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 }
+    \prop_gput:Nne \g__color_backend_colorant_prop { /#1 }
       { \pdf_object_ref_last: }
   }
 \cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
@@ -144,7 +143,7 @@
     \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
       {
         \pdf_object_new:n { __color_illuminant_CIELAB_ #1 }
-        \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nne { __color_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -163,7 +162,7 @@
   }
 \cs_new_protected:Npn \__color_backend_devicen_init:nnn #1#2#3
   {
-    \pdf_object_unnamed_write:nx { stream }
+    \pdf_object_unnamed_write:ne { stream }
       {
         {
           /FunctionType ~ 4 ~
@@ -185,7 +184,7 @@
         }
         { {#3} }
      }
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g__color_model_int }
         \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
@@ -210,7 +209,7 @@
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
         \pdf_object_new:n { __color_icc_ #1 }
-        \pdf_object_write:nnx { __color_icc_ #1 } { fstream }
+        \pdf_object_write:nne { __color_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -219,7 +218,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { __color_icc_ #1 } }
     \__color_backend_init_resource:n { color \int_use:N \g__color_model_int }
   }
@@ -234,7 +233,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { __color_icc_ #1 } }
     \__color_backend_init_resource:n { Default #2 }
   }
@@ -250,12 +249,12 @@
 \cs_new_eq:NN \__color_backend_stroke_rgb:n  \__color_backend_stroke:n
 \cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       { pdf : bc ~ fill ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
   }
 \cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       { pdf : bc ~ stroke ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
   }
 \cs_new_eq:NN \__color_backend_fill_devicen:nn \__color_backend_fill_separation:nn
@@ -266,7 +265,7 @@
 \cs_new_protected:Npn \__box_backend_clip:N #1
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal_pdf:x
+    \__kernel_backend_literal_pdf:e
       {
         0~
         \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -283,7 +282,7 @@
 \cs_new_protected:Npn \__box_backend_rotate_aux:Nn #1#2
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:rotate~
         \fp_compare:nNnTF {#2} = \c_zero_fp
@@ -296,7 +295,7 @@
 \cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:scale~
         \fp_eval:n { round ( #2 , 5 ) } ~
@@ -307,7 +306,7 @@
   }
 %% File: l3backend-draw.dtx
 \cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \__draw_backend_literal:n { x }
+\cs_generate_variant:Nn \__draw_backend_literal:n { e }
 \cs_new_protected:Npn \__draw_backend_begin:
   { \__draw_backend_scope_begin: }
 \cs_new_protected:Npn \__draw_backend_end:
@@ -316,17 +315,17 @@
 \cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
 \cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
   }
 \cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
   }
 \cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -336,7 +335,7 @@
  }
 \cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
   {
-     \__draw_backend_literal:x
+     \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -356,17 +355,17 @@
   { \__draw_backend_literal:n { s } }
 \cs_new_protected:Npn \__draw_backend_fill:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { f \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_fillstroke:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { B \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_clip:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { W \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_discardpath:
@@ -373,7 +372,7 @@
   { \__draw_backend_literal:n { n } }
 \cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         [
           \exp_args:Nf \use:n
@@ -386,11 +385,11 @@
   { ~ \dim_to_decimal_in_bp:n {#1} }
 \cs_new_protected:Npn \__draw_backend_linewidth:n #1
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ w }
   }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__draw_backend_literal:x { #1 ~ M } }
+  { \__draw_backend_literal:e { #1 ~ M } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__draw_backend_literal:n { 0 ~ J } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -410,7 +409,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_cm_aux:nnnn #1#2#3#4
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:rotate~
         \fp_compare:nNnTF {#1} = \c_zero_fp
@@ -417,13 +416,13 @@
           { 0 }
           { \fp_eval:n { round ( -#1 , 5 ) } }
       }
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:scale~
         \fp_eval:n { round ( #2 , 5 ) } ~
         \fp_eval:n { round ( #3 , 5 ) }
       }
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:rotate~
         \fp_compare:nNnTF {#4} = \c_zero_fp
@@ -433,7 +432,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_cm_decompose:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \__draw_backend_cm_decompose_auxi:nnnnN
           { \fp_eval:n { (#1 + #4) / 2 } }
@@ -445,7 +444,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_cm_decompose_auxi:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \__draw_backend_cm_decompose_auxii:nnnnN
           { \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
@@ -457,7 +456,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_cm_decompose_auxii:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \__draw_backend_cm_decompose_auxiii:nnnnN
           { \fp_eval:n { ( #4 - #3 ) / 2 } }
@@ -522,7 +521,7 @@
 \int_new:N \g__graphics_track_int
 \cs_new_protected:Npn \__graphics_backend_include_eps:n #1
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         PSfile = #1 \c_space_tl
         llx = \dim_to_decimal_in_bp:n \l__graphics_llx_dim \c_space_tl
@@ -541,7 +540,7 @@
   { \__graphics_backend_include_auxi:nn {#1} { epdf } }
 \cs_new_protected:Npn \__graphics_backend_include_auxi:nn #1#2
   {
-    \__graphics_backend_include_auxii:xnn
+    \__graphics_backend_include_auxii:enn
       {
         \tl_if_empty:NF \l__graphics_pagebox_tl
           { : \l__graphics_pagebox_tl }
@@ -558,17 +557,17 @@
   {
     \int_if_exist:cTF { c__graphics_ #2#1 _int }
       {
-        \__kernel_backend_literal:x
+        \__kernel_backend_literal:e
           { pdf:usexobj~@graphic \int_use:c { c__graphics_ #2#1 _int } }
       }
       { \__graphics_backend_include_auxiii:nnn {#2} {#1} {#3} }
   }
-\cs_generate_variant:Nn \__graphics_backend_include_auxii:nnn { x }
+\cs_generate_variant:Nn \__graphics_backend_include_auxii:nnn { e }
 \cs_new_protected:Npn \__graphics_backend_include_auxiii:nnn #1#2#3
   {
     \int_gincr:N \g__graphics_track_int
     \int_const:cn { c__graphics_ #1#2 _int } { \g__graphics_track_int }
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         pdf:#3~
         @graphic \int_use:c { c__graphics_ #1#2 _int } ~
@@ -601,9 +600,9 @@
   { \cs_new_eq:NN \__graphics_backend_get_pagecount:n \__graphics_get_pagecount:n }
 %% File: l3backend-pdf.dtx
 \box_new:N \l__pdf_internal_box
-\cs_new_protected:Npx \__pdf_backend:n #1
+\cs_new_protected:Npe \__pdf_backend:n #1
   { \__kernel_backend_literal:n { pdf: #1 } }
-\cs_generate_variant:Nn \__pdf_backend:n { x }
+\cs_generate_variant:Nn \__pdf_backend:n { e }
 \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2
   { \__pdf_backend:n { put ~ @catalog << /#1 ~ #2 >> } }
 \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2
@@ -624,15 +623,15 @@
     \use:c { __pdf_backend_object_write_ #2 :nn }
       { \__pdf_backend_object_ref:n {#1} } {#3}
   }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nne }
 \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2
   {
-    \__pdf_backend:x
+    \__pdf_backend:e
       { obj ~ #1 ~ [ ~ \exp_not:n {#2} ~ ] }
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_dict:nn #1#2
   {
-    \__pdf_backend:x
+    \__pdf_backend:e
       { obj ~ #1 ~ << ~ \exp_not:n {#2} ~ >> }
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_fstream:nn #1#2
@@ -641,7 +640,7 @@
   { \__pdf_backend_object_write_stream:nnnn { } {#1} #2 }
 \cs_new_protected:Npn \__pdf_backend_object_write_stream:nnnn #1#2#3#4
   {
-    \__pdf_backend:x
+    \__pdf_backend:e
       {
         #1 stream ~ #2 ~
           ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
@@ -650,11 +649,11 @@
 \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
   {
     \int_gincr:N \g__pdf_backend_object_int
-    \exp_args:Nnx \use:c { __pdf_backend_object_write_ #1 :nn }
+    \exp_args:Nne \use:c { __pdf_backend_object_write_ #1 :nn }
       { @pdf.obj \int_use:N \g__pdf_backend_object_int }
       {#2}
   }
-\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \__pdf_backend_object_now:nn { ne }
 \cs_new:Npn \__pdf_backend_object_last:
  { @pdf.obj \int_use:N \g__pdf_backend_object_int }
 \cs_new:Npn \__pdf_backend_pageobject_ref:n #1
@@ -664,7 +663,7 @@
   {
     \int_gincr:N \g__pdf_backend_object_int
     \int_gset_eq:NN \g__pdf_backend_annotation_int \g__pdf_backend_object_int
-    \__pdf_backend:x
+    \__pdf_backend:e
       {
         ann ~ @pdf.obj \int_use:N \g__pdf_backend_object_int \c_space_tl
         width  ~ \dim_eval:n {#1} ~
@@ -680,10 +679,10 @@
   { \__pdf_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
 \cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2
   { \__pdf_backend_link_begin:n {#1#2} }
-\cs_new_protected:Npx \__pdf_backend_link_begin:n #1
+\cs_new_protected:Npe \__pdf_backend_link_begin:n #1
   {
     \exp_not:N \int_gincr:N \exp_not:N  \g__pdf_backend_link_int
-    \__pdf_backend:x
+    \__pdf_backend:e
       {
          bann ~
          @pdf.lnk
@@ -700,10 +699,10 @@
 \cs_new:Npn \__pdf_backend_link_last:
   { @pdf.lnk \int_use:N \g__pdf_backend_link_int }
 \cs_new_protected:Npn \__pdf_backend_link_margin:n #1
-  { \__kernel_backend_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
+  { \__kernel_backend_literal:e { dvipdfmx:config~g~ \dim_eval:n {#1} } }
 \cs_new_protected:Npn \__pdf_backend_destination:nn #1#2
   {
-    \__pdf_backend:x
+    \__pdf_backend:e
       {
         dest ~ ( \exp_not:n {#1} )
         [
@@ -762,7 +761,7 @@
     \__kernel_kern:n { -#1 }
   }
 \cs_new_protected:Npn \__pdf_backend_compresslevel:n #1
-  { \__kernel_backend_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
+  { \__kernel_backend_literal:e { dvipdfmx:config~z~ \int_eval:n {#1} } }
 \cs_new_protected:Npn \__pdf_backend_compress_objects:n #1
   {
     \bool_if:nF {#1}
@@ -770,13 +769,13 @@
   }
 \cs_new_protected:Npn \__pdf_backend_version_major_gset:n #1
   {
-    \cs_gset:Npx \__pdf_backend_version_major: { \int_eval:n {#1} }
-    \__kernel_backend_literal:x { pdf:majorversion~ \__pdf_backend_version_major: }
+    \cs_gset:Npe \__pdf_backend_version_major: { \int_eval:n {#1} }
+    \__kernel_backend_literal:e { pdf:majorversion~ \__pdf_backend_version_major: }
   }
 \cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1
   {
-    \cs_gset:Npx \__pdf_backend_version_minor: { \int_eval:n {#1} }
-    \__kernel_backend_literal:x { pdf:minorversion~ \__pdf_backend_version_minor: }
+    \cs_gset:Npe \__pdf_backend_version_minor: { \int_eval:n {#1} }
+    \__kernel_backend_literal:e { pdf:minorversion~ \__pdf_backend_version_minor: }
   }
 \cs_new:Npn \__pdf_backend_version_major: { 1 }
 \cs_new:Npn \__pdf_backend_version_minor: { 5 }
@@ -808,7 +807,7 @@
 \tl_new:N \l__opacity_backend_stroke_tl
 \cs_new_protected:Npn \__opacity_backend_select:n #1
  {
-   \exp_args:Nx \__opacity_backend_select_aux:n
+   \exp_args:Ne \__opacity_backend_select_aux:n
      { \fp_eval:n { min(max(0,#1),1) } }
  }
 \cs_new_protected:Npn \__opacity_backend_select_aux:n #1
@@ -835,13 +834,13 @@
  }
 \cs_new_protected:Npn \__opacity_backend_fill:n #1
   {
-    \__opacity_backend_fill_stroke:xx
+    \__opacity_backend_fill_stroke:ee
       { \fp_eval:n { min(max(0,#1),1) } }
       \l__opacity_backend_stroke_tl
   }
 \cs_new_protected:Npn \__opacity_backend_stroke:n #1
   {
-    \__opacity_backend_fill_stroke:xx
+    \__opacity_backend_fill_stroke:ee
       \l__opacity_backend_fill_tl
       { \fp_eval:n { min(max(0,#1),1) } }
   }
@@ -863,7 +862,7 @@
         \group_insert_after:N \__opacity_backend_reset:
       }
   }
-\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { xx }
+\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee }
 %% 
 %%
 %% End of file `l3backend-dvipdfmx.def'.

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2023-10-10 20:27:00 UTC (rev 68507)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvips.def}{2023-04-19}{}
+  {l3backend-dvips.def}{2023-10-10}{}
   {L3 backend support: dvips}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -45,7 +45,6 @@
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
   { \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
 \cs_if_exist:NTF \@ifl at t@r
   {
     \@ifl at t@r \fmtversion { 2020-10-01 }
@@ -58,10 +57,10 @@
   { \cs_new_eq:NN \__kernel_backend_first_shipout:n \use:n }
 \cs_new_protected:Npn \__kernel_backend_literal_postscript:n #1
   { \__kernel_backend_literal:n { ps:: #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_postscript:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_postscript:n { e }
 \cs_new_protected:Npn \__kernel_backend_postscript:n #1
   { \__kernel_backend_literal:n { ps: SDict ~ begin ~ #1 ~ end } }
-\cs_generate_variant:Nn \__kernel_backend_postscript:n { x }
+\cs_generate_variant:Nn \__kernel_backend_postscript:n { e }
 \bool_if:NT \g__kernel_backend_header_bool
   {
     \__kernel_backend_first_shipout:n
@@ -99,7 +98,7 @@
 \cs_new_protected:Npn \__color_backend_reset:
   { \__kernel_backend_literal:n { color~pop } }
 \prop_new:N \g__color_backend_colorant_prop
-\cs_new:Npx \__color_backend_devicen_colorants:n #1
+\cs_new:Npe \__color_backend_devicen_colorants:n #1
   {
     \exp_not:N \tl_if_blank:nF {#1}
       {
@@ -128,17 +127,17 @@
   { \__color_backend_select:n { separation ~ #1 ~ #2 } }
 \cs_new_eq:NN \__color_backend_select_devicen:nn \__color_backend_select_separation:nn
 \cs_new_protected:Npn \__color_backend_select_iccbased:nn #1#2 { }
-\cs_new_protected:Npx \__color_backend_separation_init:nnnnn #1#2#3#4#5
+\cs_new_protected:Npe \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
     \bool_if:NT \g__kernel_backend_header_bool
       {
-        \exp_args:Nx \__kernel_backend_first_shipout:n
+        \exp_not:N \exp_args:Ne \__kernel_backend_first_shipout:n
           {
             \exp_not:N \__color_backend_separation_init_aux:nnnnnn
               { \exp_not:N \int_use:N \g__color_model_int }
               {#1} {#2} {#3} {#4} {#5}
           }
-        \prop_gput:Nxx \exp_not:N \g__color_backend_colorant_prop
+        \prop_gput:Nee \exp_not:N \g__color_backend_colorant_prop
           { / \exp_not:N \str_convert_pdfname:n {#1} }
           {
             << ~
@@ -149,7 +148,7 @@
           }
       }
   }
-\cs_generate_variant:Nn \__color_backend_separation_init:nnnnn { nxx }
+\cs_generate_variant:Nn \__color_backend_separation_init:nnnnn { nee }
 \cs_new_protected:Npn \__color_backend_separation_init_aux:nnnnnn #1#2#3#4#5#6
   {
     \__kernel_backend_literal:e
@@ -242,7 +241,7 @@
   }
 \cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
   {
-    \__color_backend_separation_init:nxxnn
+    \__color_backend_separation_init:neenn
       {#2}
       {
         /CIEBasedABC ~
@@ -339,7 +338,7 @@
     \__kernel_backend_literal_postscript:n
       { Resolution~72~div~VResolution~72~div~scale }
     \__kernel_backend_literal_postscript:n { DVImag~dup~scale }
-    \__kernel_backend_literal_postscript:x
+    \__kernel_backend_literal_postscript:e
       {
         0 ~
         \dim_to_decimal_in_bp:n { \box_dp:N #1 } ~
@@ -359,7 +358,7 @@
   {
     \__kernel_backend_scope_begin:
     \__kernel_backend_align_begin:
-    \__kernel_backend_literal_postscript:x
+    \__kernel_backend_literal_postscript:e
       {
         \fp_compare:nNnTF {#2} = \c_zero_fp
           { 0 }
@@ -374,7 +373,7 @@
   {
     \__kernel_backend_scope_begin:
     \__kernel_backend_align_begin:
-    \__kernel_backend_literal_postscript:x
+    \__kernel_backend_literal_postscript:e
       {
         \fp_eval:n { round ( #2 , 5 ) } ~
         \fp_eval:n { round ( #3 , 5 ) } ~
@@ -386,7 +385,7 @@
   }
 %% File: l3backend-draw.dtx
 \cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_postscript:n
-\cs_generate_variant:Nn \__draw_backend_literal:n { x }
+\cs_generate_variant:Nn \__draw_backend_literal:n { e }
 \cs_new_protected:Npn \__draw_backend_begin:
   {
     \__kernel_backend_literal:n { ps::[begin] }
@@ -403,7 +402,7 @@
   { \__draw_backend_literal:n { restore } }
 \cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~
         \dim_to_decimal_in_bp:n {#2} ~ moveto
@@ -411,7 +410,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~
         \dim_to_decimal_in_bp:n {#2} ~ lineto
@@ -419,7 +418,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
   {
-     \__draw_backend_literal:x
+     \__draw_backend_literal:e
        {
          \dim_to_decimal_in_bp:n {#4} ~ \dim_to_decimal_in_bp:n {#3} ~
          \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
@@ -428,7 +427,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -451,7 +450,7 @@
     \__draw_backend_literal:n { grestore }
     \bool_if:NT \g__draw_draw_clip_bool
       {
-        \__draw_backend_literal:x
+        \__draw_backend_literal:e
           {
             \bool_if:NT \g__draw_draw_eor_bool { eo }
             clip
@@ -467,7 +466,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_fill:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         \bool_if:NT \g__draw_draw_eor_bool { eo }
         fill
@@ -474,7 +473,7 @@
       }
     \bool_if:NT \g__draw_draw_clip_bool
       {
-        \__draw_backend_literal:x
+        \__draw_backend_literal:e
           {
             \bool_if:NT \g__draw_draw_eor_bool { eo }
             clip
@@ -485,7 +484,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_fillstroke:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         \bool_if:NT \g__draw_draw_eor_bool { eo }
         fill
@@ -496,7 +495,7 @@
     \__draw_backend_literal:n { grestore }
     \bool_if:NT \g__draw_draw_clip_bool
       {
-        \__draw_backend_literal:x
+        \__draw_backend_literal:e
           {
             \bool_if:NT \g__draw_draw_eor_bool { eo }
             clip
@@ -512,7 +511,7 @@
   {
     \bool_if:NT \g__draw_draw_clip_bool
       {
-        \__draw_backend_literal:x
+        \__draw_backend_literal:e
           {
             \bool_if:NT \g__draw_draw_eor_bool { eo }
             clip
@@ -523,7 +522,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         [
           \exp_args:Nf \use:n
@@ -536,7 +535,7 @@
   { ~ \dim_to_decimal_in_bp:n {#1} }
 \cs_new_protected:Npn \__draw_backend_linewidth:n #1
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ setlinewidth }
   }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
@@ -599,7 +598,7 @@
   }
 \cs_new_protected:Npn \__graphics_backend_include_eps:n #1
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         PSfile = #1 \c_space_tl
         llx = \dim_to_decimal_in_bp:n \l__graphics_llx_dim \c_space_tl
@@ -615,7 +614,7 @@
 \box_new:N \l__pdf_internal_box
 \cs_new_protected:Npn \__pdf_backend_pdfmark:n #1
   { \__kernel_backend_postscript:n { mark #1 ~ pdfmark } }
-\cs_generate_variant:Nn \__pdf_backend_pdfmark:n { x }
+\cs_generate_variant:Nn \__pdf_backend_pdfmark:n { e }
 \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2
   { \__pdf_backend_pdfmark:n { { Catalog } << /#1 ~ #2 >> /PUT } }
 \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2
@@ -636,10 +635,10 @@
       { \__pdf_backend_object_ref:n {#1} }
       {#2} {#3}
   }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nne }
 \cs_new_protected:Npn \__pdf_backend_object_write_aux:nnn #1#2#3
   {
-    \__pdf_backend_pdfmark:x
+    \__pdf_backend_pdfmark:e
       {
         /_objdef ~ #1
         /type
@@ -656,17 +655,17 @@
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2
   {
-    \__pdf_backend_pdfmark:x
+    \__pdf_backend_pdfmark:e
       { #1 ~0~ [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL }
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_dict:nn #1#2
   {
-    \__pdf_backend_pdfmark:x
+    \__pdf_backend_pdfmark:e
       { #1 << \exp_not:n {#2} >> /PUT }
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_fstream:nn #1#2
   {
-    \exp_args:Nx
+    \exp_args:Ne
       \__pdf_backend_object_write_fstream:nnn {#1} #2
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_fstream:nnn #1#2#3
@@ -681,7 +680,7 @@
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_stream:nn #1#2
   {
-    \exp_args:Nx
+    \exp_args:Ne
       \__pdf_backend_object_write_stream:nnn {#1} #2
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_stream:nnn #1#2#3
@@ -699,7 +698,7 @@
       { { pdf.obj \int_use:N \g__pdf_backend_object_int } }
       {#1} {#2}
   }
-\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \__pdf_backend_object_now:nn { ne }
 \cs_new:Npn \__pdf_backend_object_last:
   { { pdf.obj \int_use:N \g__pdf_backend_object_int } }
 \cs_new:Npn \__pdf_backend_pageobject_ref:n #1
@@ -727,7 +726,7 @@
       }
     \int_gincr:N \g__pdf_backend_object_int
     \int_gset_eq:NN \g__pdf_backend_annotation_int \g__pdf_backend_object_int
-    \__pdf_backend_pdfmark:x
+    \__pdf_backend_pdfmark:e
       {
         /_objdef { pdf.obj \int_use:N \g__pdf_backend_object_int }
         pdf.rect
@@ -786,7 +785,7 @@
     \hbox_set_end:
     \__pdf_backend_link_minima:
     \hbox_set:Nn \l__pdf_backend_model_box { Gg }
-    \exp_args:Nx \__pdf_backend_link_outerbox:n
+    \exp_args:Ne \__pdf_backend_link_outerbox:n
       {
          \int_if_odd:nTF { \value { page } }
            { \oddsidemargin }
@@ -804,7 +803,7 @@
       }
     \int_gincr:N \g__pdf_backend_object_int
     \int_gset_eq:NN \g__pdf_backend_link_int \g__pdf_backend_object_int
-    \__kernel_backend_postscript:x
+    \__kernel_backend_postscript:e
       {
         mark
         /_objdef { pdf.obj \int_use:N \g__pdf_backend_link_int }
@@ -818,7 +817,7 @@
 \cs_new_protected:Npn \__pdf_backend_link_minima:
   {
     \hbox_set:Nn \l__pdf_backend_model_box { Gg }
-    \__kernel_backend_postscript:x
+    \__kernel_backend_postscript:e
       {
         /pdf.linkdp.pad ~
           \dim_to_decimal:n
@@ -846,7 +845,7 @@
   }
 \cs_new_protected:Npn \__pdf_backend_link_outerbox:n #1
   {
-    \__kernel_backend_postscript:x
+    \__kernel_backend_postscript:e
       {
         /pdf.outerbox
           [
@@ -886,9 +885,9 @@
       {
         \tl_put_right:Nn \@makecol at hook
           {
-            \box_if_empty:NF \@cclv
+            \box_if_empty:NF \l_shipout_box
               {
-                \vbox_set:Nn \@cclv
+                \vbox_set:Nn \l_shipout_box
                   {
                     \__kernel_backend_postscript:n
                       {
@@ -896,7 +895,7 @@
                           { pdf.bordertracking.continue }
                         if
                       }
-                    \vbox_unpack_drop:N \@cclv
+                    \vbox_unpack_drop:N \l_shipout_box
                     \__kernel_backend_postscript:n
                       { pdf.bordertracking.endpage }
                   }
@@ -911,7 +910,7 @@
   { { pdf.obj \int_use:N \g__pdf_backend_link_int } }
 \cs_new_protected:Npn \__pdf_backend_link_margin:n #1
   {
-    \__kernel_backend_postscript:x
+    \__kernel_backend_postscript:e
       {
         /pdf.linkmargin { \dim_to_decimal:n {#1} ~ pdf.pt.dvi } def
       }
@@ -919,7 +918,7 @@
 \cs_new_protected:Npn \__pdf_backend_destination:nn #1#2
   {
     \__kernel_backend_postscript:n { pdf.dest.anchor }
-    \__pdf_backend_pdfmark:x
+    \__pdf_backend_pdfmark:e
       {
         /View
         [
@@ -1001,11 +1000,11 @@
   }
 \cs_new_protected:Npn \__pdf_backend_version_major_gset:n #1
   {
-    \cs_gset:Npx \__pdf_backend_version_major: { \int_eval:n {#1} }
+    \cs_gset:Npe \__pdf_backend_version_major: { \int_eval:n {#1} }
   }
 \cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1
   {
-    \cs_gset:Npx \__pdf_backend_version_minor: { \int_eval:n {#1} }
+    \cs_gset:Npe \__pdf_backend_version_minor: { \int_eval:n {#1} }
   }
 \cs_new:Npn \__pdf_backend_version_major: { -1 }
 \cs_new:Npn \__pdf_backend_version_minor: { -1 }
@@ -1026,7 +1025,7 @@
 %% File: l3backend-opacity.dtx
 \cs_new_protected:Npn \__opacity_backend_select:n #1
   {
-    \exp_args:Nx \__opacity_backend_select_aux:n
+    \exp_args:Ne \__opacity_backend_select_aux:n
       { \fp_eval:n { min(max(0,#1),1) } }
   }
 \cs_new_protected:Npn \__opacity_backend_select_aux:n #1
@@ -1036,7 +1035,7 @@
   }
 \cs_new_protected:Npn \__opacity_backend_fill:n #1
   {
-    \__opacity_backend:xnn
+    \__opacity_backend:enn
       { \fp_eval:n { min(max(0,#1),1) } }
       { fill }
       { ca }
@@ -1043,7 +1042,7 @@
   }
 \cs_new_protected:Npn \__opacity_backend_stroke:n #1
   {
-    \__opacity_backend:xnn
+    \__opacity_backend:enn
       { \fp_eval:n { min(max(0,#1),1) } }
       { stroke }
       { CA }
@@ -1067,7 +1066,7 @@
         ifelse
       }
   }
-\cs_generate_variant:Nn \__opacity_backend:nnn { x }
+\cs_generate_variant:Nn \__opacity_backend:nnn { e }
 %% 
 %%
 %% End of file `l3backend-dvips.def'.

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2023-10-10 20:27:00 UTC (rev 68507)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvisvgm.def}{2023-04-19}{}
+  {l3backend-dvisvgm.def}{2023-10-10}{}
   {L3 backend support: dvisvgm}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -45,7 +45,6 @@
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
   { \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
 \cs_if_exist:NTF \@ifl at t@r
   {
     \@ifl at t@r \fmtversion { 2020-10-01 }
@@ -58,7 +57,7 @@
   { \cs_new_eq:NN \__kernel_backend_first_shipout:n \use:n }
 \cs_new_protected:Npn \__kernel_backend_literal_svg:n #1
   { \__kernel_backend_literal:n { dvisvgm:raw~ #1 { ?nl } } }
-\cs_generate_variant:Nn \__kernel_backend_literal_svg:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_svg:n { e }
 \int_new:N \g__kernel_backend_scope_int
 \int_new:N \l__kernel_backend_scope_int
 \cs_new_protected:Npn \__kernel_backend_scope_begin:
@@ -89,13 +88,13 @@
     \group_begin:
       \int_gset:Nn \g__kernel_backend_scope_int { 1 }
   }
-\cs_generate_variant:Nn \__kernel_backend_scope_begin:n { x }
+\cs_generate_variant:Nn \__kernel_backend_scope_begin:n { e }
 \cs_new_protected:Npn \__kernel_backend_scope:n #1
   {
     \__kernel_backend_literal_svg:n { <g ~ #1 > }
     \int_gincr:N \g__kernel_backend_scope_int
   }
-\cs_generate_variant:Nn \__kernel_backend_scope:n { x }
+\cs_generate_variant:Nn \__kernel_backend_scope:n { e }
 %% File: l3backend-color.dtx
 \cs_new_protected:Npn \__color_backend_select_cmyk:n #1
   { \__color_backend_select:n { cmyk ~ #1 } }
@@ -117,7 +116,7 @@
 \cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnnnnn #1#2#3 { }
 \cs_new_protected:Npn \__color_backend_select_iccbased:nn #1#2
   {
-    \__kernel_backend_literal_svg:x
+    \__kernel_backend_literal_svg:e
       {
         <style>
           @color-profile ~
@@ -146,7 +145,7 @@
 \cs_new_protected:Npn \__color_backend_stroke_cmyk:w
   #1 ~ #2 ~ #3 ~ #4 \s__color_stop
   {
-    \use:x
+    \use:e
       {
         \__color_backend:nnn
           { \fp_eval:n { -100 * ( 1 - min ( 1 , #1 + #4 ) ) } }
@@ -156,7 +155,7 @@
   }
 \cs_new_protected:Npn \__color_backend_stroke_gray:n #1
   {
-    \use:x
+    \use:e
       {
         \__color_backend_stroke_gray_aux:n
           { \fp_eval:n { 100 * (#1) } }
@@ -169,7 +168,7 @@
 \cs_new_protected:Npn \__color_backend_stroke_rgb:w
   #1 ~ #2 ~ #3 \s__color_stop
   {
-    \use:x
+    \use:e
       {
         \__color_backend:nnn
           { \fp_eval:n { 100 * (#1) } }
@@ -177,7 +176,7 @@
           { \fp_eval:n { 100 * (#3) } }
       }
   }
-\cs_new_protected:Npx \__color_backend:nnn #1#2#3
+\cs_new_protected:Npe \__color_backend:nnn #1#2#3
   {
     \__kernel_backend_scope:n
       {
@@ -204,9 +203,9 @@
 \cs_new_protected:Npn \__box_backend_clip:N #1
   {
     \int_gincr:N \g__kernel_clip_path_int
-    \__kernel_backend_literal_svg:x
+    \__kernel_backend_literal_svg:e
       { < clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " > }
-    \__kernel_backend_literal_svg:x
+    \__kernel_backend_literal_svg:e
       {
         <
           path ~ d =
@@ -233,7 +232,7 @@
             scale ( 1 , -1 )
           "
       }
-    \__kernel_backend_scope:x
+    \__kernel_backend_scope:e
       {
         clip-path =
           "url ( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int ) "
@@ -253,7 +252,7 @@
 \int_new:N \g__kernel_clip_path_int
 \cs_new_protected:Npn \__box_backend_rotate:Nn #1#2
   {
-    \__kernel_backend_scope_begin:x
+    \__kernel_backend_scope_begin:e
       {
         transform =
           "
@@ -266,7 +265,7 @@
   }
 \cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
   {
-    \__kernel_backend_scope_begin:x
+    \__kernel_backend_scope_begin:e
       {
         transform =
           "
@@ -285,7 +284,7 @@
   }
 %% File: l3backend-draw.dtx
 \cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_svg:n
-\cs_generate_variant:Nn \__draw_backend_literal:n { x }
+\cs_generate_variant:Nn \__draw_backend_literal:n { e }
 \cs_new_eq:NN \__draw_backend_scope_begin: \__kernel_backend_scope_begin:
 \cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
 \cs_new_protected:Npn \__draw_backend_begin:
@@ -327,7 +326,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_add_to_path:n #1
   {
-    \tl_gset:Nx \g__draw_backend_path_tl
+    \tl_gset:Ne \g__draw_backend_path_tl
       {
         \g__draw_backend_path_tl
         \tl_if_empty:NF \g__draw_backend_path_tl { \c_space_tl }
@@ -346,7 +345,7 @@
     \bool_if:NTF \g__draw_draw_clip_bool
       {
         \int_gincr:N \g__kernel_clip_path_int
-        \__draw_backend_literal:x
+        \__draw_backend_literal:e
           {
             < clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " >
               { ?nl }
@@ -358,7 +357,7 @@
                 #1
             />
           }
-        \__kernel_backend_scope:x
+        \__kernel_backend_scope:e
           {
             clip-path =
               "url( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int)"
@@ -365,7 +364,7 @@
           }
       }
       {
-        \__draw_backend_literal:x
+        \__draw_backend_literal:e
           { <path ~ d=" \g__draw_backend_path_tl " ~ #1 /> }
       }
     \tl_gclear:N \g__draw_backend_path_tl
@@ -391,7 +390,7 @@
     \bool_if:NT \g__draw_draw_clip_bool
       {
         \int_gincr:N \g__kernel_clip_path_int
-        \__draw_backend_literal:x
+        \__draw_backend_literal:e
           {
             < clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " >
               { ?nl }
@@ -398,7 +397,7 @@
             <path~d=" \g__draw_backend_path_tl "/> { ?nl }
             < /clipPath >
           }
-        \__kernel_backend_scope:x
+        \__kernel_backend_scope:e
           {
             clip-path =
               "url( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int)"
@@ -409,7 +408,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \__draw_backend_dash_aux:nn
           { \clist_map_function:nN {#1} \__draw_backend_dash:n }
@@ -420,7 +419,7 @@
   { , \dim_to_decimal_in_bp:n {#1} }
 \cs_new_protected:Npn \__draw_backend_dash_aux:nn #1#2
   {
-    \__kernel_backend_scope:x
+    \__kernel_backend_scope:e
       {
         stroke-dasharray =
           "
@@ -432,9 +431,9 @@
       }
   }
 \cs_new_protected:Npn \__draw_backend_linewidth:n #1
-  { \__kernel_backend_scope:x { stroke-width=" \dim_to_decimal:n {#1} " } }
+  { \__kernel_backend_scope:e { stroke-width=" \dim_to_decimal:n {#1} " } }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__kernel_backend_scope:x { stroke-miterlimit=" #1 " } }
+  { \__kernel_backend_scope:e { stroke-miterlimit=" #1 " } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__kernel_backend_scope:n { stroke-linecap="butt" } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -527,10 +526,10 @@
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_svg_auxi:nNn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \cs_set_protected:Npn \__graphics_backend_getbb_svg_auxii:w
-          ####1 \tl_to_str:n {#1} = ####2 \tl_to_str:n {#1} = ####3
+          ##1 \tl_to_str:n {#1} = ##2 \tl_to_str:n {#1} = ##3
           \s__graphics_stop
       }
       {
@@ -549,7 +548,7 @@
                 ##2 \s__graphics_stop
           }
       }
-    \use:x
+    \use:e
       {
         \__graphics_backend_getbb_svg_auxii:w #3
           \tl_to_str:n {#1} = \tl_to_str:n {#1} =
@@ -596,7 +595,7 @@
   { \__graphics_backend_include:nn { pdffile } {#1} }
 \cs_new_protected:Npn \__graphics_backend_include:nn #1#2
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         #1 = #2 \c_space_tl
         llx = \dim_to_decimal_in_bp:n \l__graphics_llx_dim \c_space_tl
@@ -611,7 +610,7 @@
       {
         \hbox:n
           {
-            \__kernel_backend_literal:x
+            \__kernel_backend_literal:e
               {
                 dvisvgm:img~
                 \dim_to_decimal:n { \l__graphics_urx_dim } ~
@@ -635,7 +634,7 @@
 \cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2 { }
 \cs_new_protected:Npn \__pdf_backend_link_begin:nnnw #1#2#3 { }
 \cs_new_protected:Npn \__pdf_backend_link_end: { }
-\cs_new:Npx \__pdf_backend_link_last: { }
+\cs_new:Npe \__pdf_backend_link_last: { }
 \cs_new_protected:Npn \__pdf_backend_link_margin:n #1 { }
 \cs_new_protected:Npn \__pdf_backend_destination:nn #1#2 { }
 \cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { }
@@ -644,9 +643,9 @@
 \cs_new_protected:Npn \__pdf_backend_object_new:nn #1 { }
 \cs_new:Npn \__pdf_backend_object_ref:n #1 { }
 \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { }
-\cs_new_protected:Npn \__pdf_backend_object_write:nnx #1#2#3 { }
+\cs_new_protected:Npn \__pdf_backend_object_write:nne #1#2#3 { }
 \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { }
-\cs_new_protected:Npn \__pdf_backend_object_now:nx #1#2 { }
+\cs_new_protected:Npn \__pdf_backend_object_now:ne #1#2 { }
 \cs_new:Npn \__pdf_backend_object_last: { }
 \cs_new:Npn \__pdf_backend_pageobject_ref:n #1 { }
 \cs_new_protected:Npn \__pdf_backend_compresslevel:n #1 { }
@@ -666,7 +665,7 @@
 \cs_new_protected:Npn \__opacity_backend_stroke:n #1
   { \__opacity_backend:nn { {#1} } { stroke- } }
 \cs_new_protected:Npn \__opacity_backend:nn #1#2
-  { \__kernel_backend_scope:x { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
+  { \__kernel_backend_scope:e { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
 %% 
 %%
 %% End of file `l3backend-dvisvgm.def'.

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def	2023-10-10 20:27:00 UTC (rev 68507)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-luatex.def}{2023-04-19}{}
+  {l3backend-luatex.def}{2023-10-10}{}
   {L3 backend support: PDF output (LuaTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -45,7 +45,6 @@
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
   { \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
 \cs_if_exist:NTF \@ifl at t@r
   {
     \@ifl at t@r \fmtversion { 2020-10-01 }
@@ -61,12 +60,17 @@
     \tex_pdfextension:D literal
       { \exp_not:n {#1} }
   }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
 \cs_new_protected:Npn \__kernel_backend_literal_page:n #1
   {
     \tex_pdfextension:D literal ~
         page { \exp_not:n {#1} }
   }
+\cs_new_protected:Npn \__kernel_backend_literal_page:e #1
+  {
+    \tex_pdfextension:D literal ~
+        page {#1}
+  }
 \cs_new_protected:Npn \__kernel_backend_scope_begin:
   {
     \tex_pdfextension:D save \scan_stop:
@@ -80,7 +84,7 @@
     \tex_pdfextension:D setmatrix
         { \exp_not:n {#1} }
   }
-\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
+\cs_generate_variant:Nn \__kernel_backend_matrix:n { e }
 %% File: l3backend-color.dtx
 \int_new:N \l__color_backend_stack_int
 \cs_new_protected:Npn \__kernel_color_backend_stack_init:Nnn #1#2#3
@@ -121,7 +125,7 @@
 \cs_new_protected:Npn \__color_backend_reset:
   { \__kernel_color_backend_stack_pop:n \l__color_backend_stack_int }
 \prop_new:N \g__color_backend_colorant_prop
-\cs_new:Npx \__color_backend_devicen_colorants:n #1
+\cs_new:Npe \__color_backend_devicen_colorants:n #1
   {
     \exp_not:N \tl_if_blank:nF {#1}
       {
@@ -156,7 +160,7 @@
       { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
       { \pdfmanagement_if_active_p: }
       {
-        \use:x
+        \use:e
           {
             \pdfmanagement_add:nnn
               { Page / Resources / ColorSpace }
@@ -167,7 +171,7 @@
   }
 \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
-    \pdf_object_unnamed_write:nx { dict }
+    \pdf_object_unnamed_write:ne { dict }
       {
         /FunctionType ~ 2
         /Domain ~ [0 ~ 1]
@@ -175,19 +179,19 @@
         /C0 ~ [#4] ~
         /C1 ~ [#5] /N ~ 1
       }
-    \exp_args:Nx \__color_backend_separation_init:nn
+    \exp_args:Ne \__color_backend_separation_init:nn
       { \str_convert_pdfname:n {#1} } {#2}
     \__color_backend_init_resource:n { color \int_use:N \g__color_model_int }
   }
 \cs_new_protected:Npn \__color_backend_separation_init:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g__color_model_int }
         \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
-    \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 }
+    \prop_gput:Nne \g__color_backend_colorant_prop { /#1 }
       { \pdf_object_ref_last: }
   }
 \cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
@@ -195,7 +199,7 @@
     \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
       {
         \pdf_object_new:n { __color_illuminant_CIELAB_ #1 }
-        \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nne { __color_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -214,7 +218,7 @@
   }
 \cs_new_protected:Npn \__color_backend_devicen_init:nnn #1#2#3
   {
-    \pdf_object_unnamed_write:nx { stream }
+    \pdf_object_unnamed_write:ne { stream }
       {
         {
           /FunctionType ~ 4 ~
@@ -236,7 +240,7 @@
         }
         { {#3} }
      }
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g__color_model_int }
         \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
@@ -261,7 +265,7 @@
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
         \pdf_object_new:n { __color_icc_ #1 }
-        \pdf_object_write:nnx { __color_icc_ #1 } { fstream }
+        \pdf_object_write:nne { __color_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -270,7 +274,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { __color_icc_ #1 } }
     \__color_backend_init_resource:n { color \int_use:N \g__color_model_int }
   }
@@ -285,7 +289,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { __color_icc_ #1 } }
     \__color_backend_init_resource:n { Default #2 }
   }
@@ -326,7 +330,7 @@
 \cs_new_protected:Npn \__box_backend_clip:N #1
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal_pdf:x
+    \__kernel_backend_literal_pdf:e
       {
         0~
         \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -348,7 +352,7 @@
     \fp_compare:nNnT \l__box_backend_cos_fp = \c_zero_fp
       { \fp_zero:N \l__box_backend_cos_fp }
     \fp_set:Nn \l__box_backend_sin_fp { round ( sind ( #2 ) , 5 ) }
-    \__kernel_backend_matrix:x
+    \__kernel_backend_matrix:e
       {
         \fp_use:N \l__box_backend_cos_fp \c_space_tl
         \fp_compare:nNnTF \l__box_backend_sin_fp = \c_zero_fp
@@ -369,7 +373,7 @@
 \cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_matrix:x
+    \__kernel_backend_matrix:e
       {
         \fp_eval:n { round ( #2 , 5 ) } ~
         0~0~
@@ -380,7 +384,7 @@
   }
 %% File: l3backend-draw.dtx
 \cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \__draw_backend_literal:n { x }
+\cs_generate_variant:Nn \__draw_backend_literal:n { e }
 \cs_new_protected:Npn \__draw_backend_begin:
   { \__draw_backend_scope_begin: }
 \cs_new_protected:Npn \__draw_backend_end:
@@ -389,17 +393,17 @@
 \cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
 \cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
   }
 \cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
   }
 \cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -409,7 +413,7 @@
  }
 \cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
   {
-     \__draw_backend_literal:x
+     \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -429,17 +433,17 @@
   { \__draw_backend_literal:n { s } }
 \cs_new_protected:Npn \__draw_backend_fill:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { f \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_fillstroke:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { B \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_clip:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { W \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_discardpath:
@@ -446,7 +450,7 @@
   { \__draw_backend_literal:n { n } }
 \cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         [
           \exp_args:Nf \use:n
@@ -459,11 +463,11 @@
   { ~ \dim_to_decimal_in_bp:n {#1} }
 \cs_new_protected:Npn \__draw_backend_linewidth:n #1
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ w }
   }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__draw_backend_literal:x { #1 ~ M } }
+  { \__draw_backend_literal:e { #1 ~ M } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__draw_backend_literal:n { 0 ~ J } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -510,7 +514,7 @@
   {
     \int_zero:N \l__graphics_page_int
     \tl_clear:N \l__graphics_pagebox_tl
-    \tl_set:Nx \l__graphics_attr_tl
+    \tl_set:Ne \l__graphics_attr_tl
       {
         \tl_if_empty:NF \l__graphics_decodearray_str
           { :D \l__graphics_decodearray_str }
@@ -527,7 +531,7 @@
   {
     \tl_clear:N \l__graphics_decodearray_str
     \bool_set_false:N \l__graphics_interpolate_bool
-    \tl_set:Nx \l__graphics_attr_tl
+    \tl_set:Ne \l__graphics_attr_tl
       {
         : \l__graphics_pagebox_tl
         \int_compare:nNnT \l__graphics_page_int > 1
@@ -539,7 +543,7 @@
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxi:n #1
   {
-    \__graphics_bb_restore:xF { #1 \l__graphics_attr_tl }
+    \__graphics_bb_restore:eF { #1 \l__graphics_attr_tl }
       { \__graphics_backend_getbb_auxii:n {#1} }
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxii:n #1
@@ -548,7 +552,7 @@
       { \__graphics_backend_dequote:w #1 " #1 " \s__graphics_stop }
     \int_const:cn { c__graphics_ #1 \l__graphics_attr_tl _int }
       { \tex_the:D \tex_pdflastximage:D }
-    \__graphics_bb_save:x { #1 \l__graphics_attr_tl }
+    \__graphics_bb_save:e { #1 \l__graphics_attr_tl }
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxiii:n #1
   {
@@ -599,7 +603,7 @@
           \l__graphics_backend_dir_str
           \l__graphics_backend_name_str
           \l__graphics_backend_ext_str
-        \exp_args:Nx \__graphics_backend_getbb_eps:nn
+        \exp_args:Ne \__graphics_backend_getbb_eps:nn
           {
             \exp_args:Ne \__kernel_file_name_quote:n
               {
@@ -625,7 +629,7 @@
       {
         \file_parse_full_name:nNNN {#1}
           \l__graphics_backend_dir_str \l__graphics_backend_name_str \l__graphics_backend_ext_str
-        \exp_args:Nx \__graphics_backend_include_pdf:n
+        \exp_args:Ne \__graphics_backend_include_pdf:n
           {
             \exp_args:Ne \__kernel_file_name_quote:n
               {
@@ -653,7 +657,7 @@
       depth  ~ \dim_eval:n {#3} ~
       {#4}
   }
-\cs_new:Npx \__pdf_backend_annotation_last:
+\cs_new:Npe \__pdf_backend_annotation_last:
   {
     \exp_not:N \int_value:w
       \exp_not:N \tex_pdffeedback:D lastannot ~
@@ -673,7 +677,7 @@
   {
     \tex_pdfextension:D endlink \scan_stop:
   }
-\cs_new:Npx \__pdf_backend_link_last:
+\cs_new:Npe \__pdf_backend_link_last:
   {
     \exp_not:N \int_value:w
       \exp_not:N \tex_pdffeedback:D lastlink ~
@@ -758,7 +762,7 @@
             }
         }
   }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nne }
 \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} }
 \cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
 \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
@@ -766,14 +770,14 @@
     \tex_immediate:D \tex_pdfextension:D obj ~
       \__pdf_backend_object_write:nn {#1} {#2}
   }
-\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
-\cs_new:Npx \__pdf_backend_object_last:
+\cs_generate_variant:Nn \__pdf_backend_object_now:nn { ne }
+\cs_new:Npe \__pdf_backend_object_last:
   {
     \exp_not:N \int_value:w
       \exp_not:N \tex_pdffeedback:D lastobj ~
       \c_space_tl 0 ~ R
   }
-\cs_new:Npx \__pdf_backend_pageobject_ref:n #1
+\cs_new:Npe \__pdf_backend_pageobject_ref:n #1
   {
     \exp_not:N \int_value:w
       \exp_not:N \tex_pdffeedback:D pageref
@@ -797,7 +801,7 @@
       \tex_pdfvariable:D objcompresslevel
         #1 \scan_stop:
   }
-\cs_new_protected:Npx \__pdf_backend_version_major_gset:n #1
+\cs_new_protected:Npe \__pdf_backend_version_major_gset:n #1
   {
     \int_compare:nNnT \tex_luatexversion:D > { 106 }
       {
@@ -811,7 +815,7 @@
       \tex_pdfvariable:D minorversion
         \int_eval:n {#1} \scan_stop:
   }
-\cs_new:Npx \__pdf_backend_version_major:
+\cs_new:Npe \__pdf_backend_version_major:
   {
     \int_compare:nNnTF \tex_luatexversion:D > { 106 }
       { \exp_not:N \tex_the:D \tex_pdfvariable:D majorversion }
@@ -845,7 +849,7 @@
 \tl_new:N \l__opacity_backend_stroke_tl
 \cs_new_protected:Npn \__opacity_backend_select:n #1
  {
-   \exp_args:Nx \__opacity_backend_select_aux:n
+   \exp_args:Ne \__opacity_backend_select_aux:n
      { \fp_eval:n { min(max(0,#1),1) } }
  }
 \cs_new_protected:Npn \__opacity_backend_select_aux:n #1
@@ -871,13 +875,13 @@
  }
 \cs_new_protected:Npn \__opacity_backend_fill:n #1
   {
-    \__opacity_backend_fill_stroke:xx
+    \__opacity_backend_fill_stroke:ee
       { \fp_eval:n { min(max(0,#1),1) } }
       \l__opacity_backend_stroke_tl
   }
 \cs_new_protected:Npn \__opacity_backend_stroke:n #1
   {
-    \__opacity_backend_fill_stroke:xx
+    \__opacity_backend_fill_stroke:ee
       \l__opacity_backend_fill_tl
       { \fp_eval:n { min(max(0,#1),1) } }
   }
@@ -899,7 +903,7 @@
         \group_insert_after:N \__opacity_backend_reset:
       }
   }
-\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { xx }
+\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee }
 %% 
 %%
 %% End of file `l3backend-luatex.def'.

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def	2023-10-10 20:27:00 UTC (rev 68507)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-pdftex.def}{2023-04-19}{}
+  {l3backend-pdftex.def}{2023-10-10}{}
   {L3 backend support: PDF output (pdfTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -45,7 +45,6 @@
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
   { \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
 \cs_if_exist:NTF \@ifl at t@r
   {
     \@ifl at t@r \fmtversion { 2020-10-01 }
@@ -61,12 +60,17 @@
     \tex_pdfliteral:D
       { \exp_not:n {#1} }
   }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
 \cs_new_protected:Npn \__kernel_backend_literal_page:n #1
   {
     \tex_pdfliteral:D
         page { \exp_not:n {#1} }
   }
+\cs_new_protected:Npn \__kernel_backend_literal_page:e #1
+  {
+    \tex_pdfliteral:D
+        page {#1}
+  }
 \cs_new_protected:Npn \__kernel_backend_scope_begin:
   {
     \tex_pdfsave:D
@@ -80,7 +84,7 @@
     \tex_pdfsetmatrix:D
         { \exp_not:n {#1} }
   }
-\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
+\cs_generate_variant:Nn \__kernel_backend_matrix:n { e }
 %% File: l3backend-color.dtx
 \int_new:N \l__color_backend_stack_int
 \cs_new_protected:Npn \__kernel_color_backend_stack_init:Nnn #1#2#3
@@ -121,7 +125,7 @@
 \cs_new_protected:Npn \__color_backend_reset:
   { \__kernel_color_backend_stack_pop:n \l__color_backend_stack_int }
 \prop_new:N \g__color_backend_colorant_prop
-\cs_new:Npx \__color_backend_devicen_colorants:n #1
+\cs_new:Npe \__color_backend_devicen_colorants:n #1
   {
     \exp_not:N \tl_if_blank:nF {#1}
       {
@@ -156,7 +160,7 @@
       { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
       { \pdfmanagement_if_active_p: }
       {
-        \use:x
+        \use:e
           {
             \pdfmanagement_add:nnn
               { Page / Resources / ColorSpace }
@@ -167,7 +171,7 @@
   }
 \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
-    \pdf_object_unnamed_write:nx { dict }
+    \pdf_object_unnamed_write:ne { dict }
       {
         /FunctionType ~ 2
         /Domain ~ [0 ~ 1]
@@ -175,19 +179,19 @@
         /C0 ~ [#4] ~
         /C1 ~ [#5] /N ~ 1
       }
-    \exp_args:Nx \__color_backend_separation_init:nn
+    \exp_args:Ne \__color_backend_separation_init:nn
       { \str_convert_pdfname:n {#1} } {#2}
     \__color_backend_init_resource:n { color \int_use:N \g__color_model_int }
   }
 \cs_new_protected:Npn \__color_backend_separation_init:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g__color_model_int }
         \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
-    \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 }
+    \prop_gput:Nne \g__color_backend_colorant_prop { /#1 }
       { \pdf_object_ref_last: }
   }
 \cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
@@ -195,7 +199,7 @@
     \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
       {
         \pdf_object_new:n { __color_illuminant_CIELAB_ #1 }
-        \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nne { __color_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -214,7 +218,7 @@
   }
 \cs_new_protected:Npn \__color_backend_devicen_init:nnn #1#2#3
   {
-    \pdf_object_unnamed_write:nx { stream }
+    \pdf_object_unnamed_write:ne { stream }
       {
         {
           /FunctionType ~ 4 ~
@@ -236,7 +240,7 @@
         }
         { {#3} }
      }
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g__color_model_int }
         \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
@@ -261,7 +265,7 @@
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
         \pdf_object_new:n { __color_icc_ #1 }
-        \pdf_object_write:nnx { __color_icc_ #1 } { fstream }
+        \pdf_object_write:nne { __color_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -270,7 +274,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { __color_icc_ #1 } }
     \__color_backend_init_resource:n { color \int_use:N \g__color_model_int }
   }
@@ -285,7 +289,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { __color_icc_ #1 } }
     \__color_backend_init_resource:n { Default #2 }
   }
@@ -325,7 +329,7 @@
 \cs_new_protected:Npn \__box_backend_clip:N #1
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal_pdf:x
+    \__kernel_backend_literal_pdf:e
       {
         0~
         \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -347,7 +351,7 @@
     \fp_compare:nNnT \l__box_backend_cos_fp = \c_zero_fp
       { \fp_zero:N \l__box_backend_cos_fp }
     \fp_set:Nn \l__box_backend_sin_fp { round ( sind ( #2 ) , 5 ) }
-    \__kernel_backend_matrix:x
+    \__kernel_backend_matrix:e
       {
         \fp_use:N \l__box_backend_cos_fp \c_space_tl
         \fp_compare:nNnTF \l__box_backend_sin_fp = \c_zero_fp
@@ -368,7 +372,7 @@
 \cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_matrix:x
+    \__kernel_backend_matrix:e
       {
         \fp_eval:n { round ( #2 , 5 ) } ~
         0~0~
@@ -379,7 +383,7 @@
   }
 %% File: l3backend-draw.dtx
 \cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \__draw_backend_literal:n { x }
+\cs_generate_variant:Nn \__draw_backend_literal:n { e }
 \cs_new_protected:Npn \__draw_backend_begin:
   { \__draw_backend_scope_begin: }
 \cs_new_protected:Npn \__draw_backend_end:
@@ -388,17 +392,17 @@
 \cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
 \cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
   }
 \cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
   }
 \cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -408,7 +412,7 @@
  }
 \cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
   {
-     \__draw_backend_literal:x
+     \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -428,17 +432,17 @@
   { \__draw_backend_literal:n { s } }
 \cs_new_protected:Npn \__draw_backend_fill:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { f \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_fillstroke:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { B \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_clip:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { W \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_discardpath:
@@ -445,7 +449,7 @@
   { \__draw_backend_literal:n { n } }
 \cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         [
           \exp_args:Nf \use:n
@@ -458,11 +462,11 @@
   { ~ \dim_to_decimal_in_bp:n {#1} }
 \cs_new_protected:Npn \__draw_backend_linewidth:n #1
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ w }
   }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__draw_backend_literal:x { #1 ~ M } }
+  { \__draw_backend_literal:e { #1 ~ M } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__draw_backend_literal:n { 0 ~ J } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -509,7 +513,7 @@
   {
     \int_zero:N \l__graphics_page_int
     \tl_clear:N \l__graphics_pagebox_tl
-    \tl_set:Nx \l__graphics_attr_tl
+    \tl_set:Ne \l__graphics_attr_tl
       {
         \tl_if_empty:NF \l__graphics_decodearray_str
           { :D \l__graphics_decodearray_str }
@@ -526,7 +530,7 @@
   {
     \tl_clear:N \l__graphics_decodearray_str
     \bool_set_false:N \l__graphics_interpolate_bool
-    \tl_set:Nx \l__graphics_attr_tl
+    \tl_set:Ne \l__graphics_attr_tl
       {
         : \l__graphics_pagebox_tl
         \int_compare:nNnT \l__graphics_page_int > 1
@@ -538,7 +542,7 @@
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxi:n #1
   {
-    \__graphics_bb_restore:xF { #1 \l__graphics_attr_tl }
+    \__graphics_bb_restore:eF { #1 \l__graphics_attr_tl }
       { \__graphics_backend_getbb_auxii:n {#1} }
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxii:n #1
@@ -547,7 +551,7 @@
       { \__graphics_backend_dequote:w #1 " #1 " \s__graphics_stop }
     \int_const:cn { c__graphics_ #1 \l__graphics_attr_tl _int }
       { \tex_the:D \tex_pdflastximage:D }
-    \__graphics_bb_save:x { #1 \l__graphics_attr_tl }
+    \__graphics_bb_save:e { #1 \l__graphics_attr_tl }
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxiii:n #1
   {
@@ -598,7 +602,7 @@
           \l__graphics_backend_dir_str
           \l__graphics_backend_name_str
           \l__graphics_backend_ext_str
-        \exp_args:Nx \__graphics_backend_getbb_eps:nn
+        \exp_args:Ne \__graphics_backend_getbb_eps:nn
           {
             \exp_args:Ne \__kernel_file_name_quote:n
               {
@@ -624,7 +628,7 @@
       {
         \file_parse_full_name:nNNN {#1}
           \l__graphics_backend_dir_str \l__graphics_backend_name_str \l__graphics_backend_ext_str
-        \exp_args:Nx \__graphics_backend_include_pdf:n
+        \exp_args:Ne \__graphics_backend_include_pdf:n
           {
             \exp_args:Ne \__kernel_file_name_quote:n
               {
@@ -652,7 +656,7 @@
       depth  ~ \dim_eval:n {#3} ~
       {#4}
   }
-\cs_new:Npx \__pdf_backend_annotation_last:
+\cs_new:Npe \__pdf_backend_annotation_last:
   {
     \exp_not:N \int_value:w
       \exp_not:N \tex_pdflastannot:D
@@ -672,7 +676,7 @@
   {
     \tex_pdfendlink:D
   }
-\cs_new:Npx \__pdf_backend_link_last:
+\cs_new:Npe \__pdf_backend_link_last:
   {
     \exp_not:N \int_value:w
       \exp_not:N \tex_pdflastlink:D
@@ -757,7 +761,7 @@
             }
         }
   }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nne }
 \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} }
 \cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
 \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
@@ -765,14 +769,14 @@
     \tex_immediate:D \tex_pdfobj:D
       \__pdf_backend_object_write:nn {#1} {#2}
   }
-\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
-\cs_new:Npx \__pdf_backend_object_last:
+\cs_generate_variant:Nn \__pdf_backend_object_now:nn { ne }
+\cs_new:Npe \__pdf_backend_object_last:
   {
     \exp_not:N \int_value:w
       \exp_not:N \tex_pdflastobj:D
       \c_space_tl 0 ~ R
   }
-\cs_new:Npx \__pdf_backend_pageobject_ref:n #1
+\cs_new:Npe \__pdf_backend_pageobject_ref:n #1
   {
     \exp_not:N \int_value:w
       \exp_not:N \tex_pdfpageref:D
@@ -796,7 +800,7 @@
       \tex_pdfobjcompresslevel:D
         #1 \scan_stop:
   }
-\cs_new_protected:Npx \__pdf_backend_version_major_gset:n #1
+\cs_new_protected:Npe \__pdf_backend_version_major_gset:n #1
   {
     \cs_if_exist:NT \tex_pdfmajorversion:D
       {
@@ -810,7 +814,7 @@
       \tex_pdfminorversion:D
         \int_eval:n {#1} \scan_stop:
   }
-\cs_new:Npx \__pdf_backend_version_major:
+\cs_new:Npe \__pdf_backend_version_major:
   {
     \cs_if_exist:NTF \tex_pdfmajorversion:D
       { \exp_not:N \tex_the:D \tex_pdfmajorversion:D }
@@ -844,7 +848,7 @@
 \tl_new:N \l__opacity_backend_stroke_tl
 \cs_new_protected:Npn \__opacity_backend_select:n #1
  {
-   \exp_args:Nx \__opacity_backend_select_aux:n
+   \exp_args:Ne \__opacity_backend_select_aux:n
      { \fp_eval:n { min(max(0,#1),1) } }
  }
 \cs_new_protected:Npn \__opacity_backend_select_aux:n #1
@@ -870,13 +874,13 @@
  }
 \cs_new_protected:Npn \__opacity_backend_fill:n #1
   {
-    \__opacity_backend_fill_stroke:xx
+    \__opacity_backend_fill_stroke:ee
       { \fp_eval:n { min(max(0,#1),1) } }
       \l__opacity_backend_stroke_tl
   }
 \cs_new_protected:Npn \__opacity_backend_stroke:n #1
   {
-    \__opacity_backend_fill_stroke:xx
+    \__opacity_backend_fill_stroke:ee
       \l__opacity_backend_fill_tl
       { \fp_eval:n { min(max(0,#1),1) } }
   }
@@ -898,7 +902,7 @@
         \group_insert_after:N \__opacity_backend_reset:
       }
   }
-\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { xx }
+\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee }
 %% 
 %%
 %% End of file `l3backend-pdftex.def'.

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def	2023-10-10 20:27:00 UTC (rev 68507)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-xetex.def}{2023-04-19}{}
+  {l3backend-xetex.def}{2023-10-10}{}
   {L3 backend support: XeTeX}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -45,7 +45,6 @@
 \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
 \cs_new_protected:Npn \__kernel_backend_literal:n #1
   { \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
 \cs_if_exist:NTF \@ifl at t@r
   {
     \@ifl at t@r \fmtversion { 2020-10-01 }
@@ -58,7 +57,7 @@
   { \cs_new_eq:NN \__kernel_backend_first_shipout:n \use:n }
 \cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
   { \__kernel_backend_literal:n { pdf:literal~ #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
 \cs_new_protected:Npn \__kernel_backend_literal_page:n #1
   { \__kernel_backend_literal:n { pdf:literal~direct~ #1 } }
 \cs_new_protected:Npn \__kernel_backend_scope_begin:
@@ -82,7 +81,7 @@
 \msg_new:nnn { color } { unknown-named-color }
   { Named~color~'#1'~is~not~known. }
 \prop_new:N \g__color_backend_colorant_prop
-\cs_new:Npx \__color_backend_devicen_colorants:n #1
+\cs_new:Npe \__color_backend_devicen_colorants:n #1
   {
     \exp_not:N \tl_if_blank:nF {#1}
       {
@@ -108,7 +107,7 @@
     \__color_backend_devicen_colorants:w
   }
 \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2
-  { \__kernel_backend_literal:x { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
+  { \__kernel_backend_literal:e { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
 \cs_new_eq:NN \__color_backend_select_devicen:nn \__color_backend_select_separation:nn
 \cs_new_eq:NN \__color_backend_select_iccbased:nn \__color_backend_select_separation:nn
 \cs_new_protected:Npn \__color_backend_init_resource:n #1
@@ -116,7 +115,7 @@
   }
 \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5
   {
-    \pdf_object_unnamed_write:nx { dict }
+    \pdf_object_unnamed_write:ne { dict }
       {
         /FunctionType ~ 2
         /Domain ~ [0 ~ 1]
@@ -124,19 +123,19 @@
         /C0 ~ [#4] ~
         /C1 ~ [#5] /N ~ 1
       }
-    \exp_args:Nx \__color_backend_separation_init:nn
+    \exp_args:Ne \__color_backend_separation_init:nn
       { \str_convert_pdfname:n {#1} } {#2}
     \__color_backend_init_resource:n { color \int_use:N \g__color_model_int }
   }
 \cs_new_protected:Npn \__color_backend_separation_init:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g__color_model_int }
         \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
-    \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 }
+    \prop_gput:Nne \g__color_backend_colorant_prop { /#1 }
       { \pdf_object_ref_last: }
   }
 \cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3
@@ -144,7 +143,7 @@
     \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
       {
         \pdf_object_new:n { __color_illuminant_CIELAB_ #1 }
-        \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array }
+        \pdf_object_write:nne { __color_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -163,7 +162,7 @@
   }
 \cs_new_protected:Npn \__color_backend_devicen_init:nnn #1#2#3
   {
-    \pdf_object_unnamed_write:nx { stream }
+    \pdf_object_unnamed_write:ne { stream }
       {
         {
           /FunctionType ~ 4 ~
@@ -185,7 +184,7 @@
         }
         { {#3} }
      }
-    \use:x
+    \use:e
       {
         \pdf_object_new:n { color \int_use:N \g__color_model_int }
         \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
@@ -210,7 +209,7 @@
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
         \pdf_object_new:n { __color_icc_ #1 }
-        \pdf_object_write:nnx { __color_icc_ #1 } { fstream }
+        \pdf_object_write:nne { __color_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -219,7 +218,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { __color_icc_ #1 } }
     \__color_backend_init_resource:n { color \int_use:N \g__color_model_int }
   }
@@ -234,7 +233,7 @@
             {#1}
           }
       }
-    \pdf_object_unnamed_write:nx { array }
+    \pdf_object_unnamed_write:ne { array }
       { /ICCBased ~ \pdf_object_ref:n { __color_icc_ #1 } }
     \__color_backend_init_resource:n { Default #2 }
   }
@@ -250,12 +249,12 @@
 \cs_new_eq:NN \__color_backend_stroke_rgb:n  \__color_backend_stroke:n
 \cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       { pdf : bc ~ fill ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
   }
 \cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       { pdf : bc ~ stroke ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
   }
 \cs_new_eq:NN \__color_backend_fill_devicen:nn \__color_backend_fill_separation:nn
@@ -266,7 +265,7 @@
 \cs_new_protected:Npn \__box_backend_clip:N #1
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal_pdf:x
+    \__kernel_backend_literal_pdf:e
       {
         0~
         \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -283,7 +282,7 @@
 \cs_new_protected:Npn \__box_backend_rotate_aux:Nn #1#2
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:rotate~
         \fp_compare:nNnTF {#2} = \c_zero_fp
@@ -296,7 +295,7 @@
 \cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3
   {
     \__kernel_backend_scope_begin:
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:scale~
         \fp_eval:n { round ( #2 , 5 ) } ~
@@ -307,7 +306,7 @@
   }
 %% File: l3backend-draw.dtx
 \cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \__draw_backend_literal:n { x }
+\cs_generate_variant:Nn \__draw_backend_literal:n { e }
 \cs_new_protected:Npn \__draw_backend_begin:
   { \__draw_backend_scope_begin: }
 \cs_new_protected:Npn \__draw_backend_end:
@@ -316,17 +315,17 @@
 \cs_new_eq:NN \__draw_backend_scope_end: \__kernel_backend_scope_end:
 \cs_new_protected:Npn \__draw_backend_moveto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
   }
 \cs_new_protected:Npn \__draw_backend_lineto:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
   }
 \cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -336,7 +335,7 @@
  }
 \cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4
   {
-     \__draw_backend_literal:x
+     \__draw_backend_literal:e
       {
         \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
         \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -356,17 +355,17 @@
   { \__draw_backend_literal:n { s } }
 \cs_new_protected:Npn \__draw_backend_fill:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { f \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_fillstroke:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { B \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_clip:
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { W \bool_if:NT \g__draw_draw_eor_bool * }
   }
 \cs_new_protected:Npn \__draw_backend_discardpath:
@@ -373,7 +372,7 @@
   { \__draw_backend_literal:n { n } }
 \cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       {
         [
           \exp_args:Nf \use:n
@@ -386,11 +385,11 @@
   { ~ \dim_to_decimal_in_bp:n {#1} }
 \cs_new_protected:Npn \__draw_backend_linewidth:n #1
   {
-    \__draw_backend_literal:x
+    \__draw_backend_literal:e
       { \dim_to_decimal_in_bp:n {#1} ~ w }
   }
 \cs_new_protected:Npn \__draw_backend_miterlimit:n #1
-  { \__draw_backend_literal:x { #1 ~ M } }
+  { \__draw_backend_literal:e { #1 ~ M } }
 \cs_new_protected:Npn \__draw_backend_cap_butt:
   { \__draw_backend_literal:n { 0 ~ J } }
 \cs_new_protected:Npn \__draw_backend_cap_round:
@@ -410,7 +409,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_cm_aux:nnnn #1#2#3#4
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:rotate~
         \fp_compare:nNnTF {#1} = \c_zero_fp
@@ -417,13 +416,13 @@
           { 0 }
           { \fp_eval:n { round ( -#1 , 5 ) } }
       }
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:scale~
         \fp_eval:n { round ( #2 , 5 ) } ~
         \fp_eval:n { round ( #3 , 5 ) }
       }
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         x:rotate~
         \fp_compare:nNnTF {#4} = \c_zero_fp
@@ -433,7 +432,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_cm_decompose:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \__draw_backend_cm_decompose_auxi:nnnnN
           { \fp_eval:n { (#1 + #4) / 2 } }
@@ -445,7 +444,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_cm_decompose_auxi:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \__draw_backend_cm_decompose_auxii:nnnnN
           { \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
@@ -457,7 +456,7 @@
   }
 \cs_new_protected:Npn \__draw_backend_cm_decompose_auxii:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \__draw_backend_cm_decompose_auxiii:nnnnN
           { \fp_eval:n { ( #4 - #3 ) / 2 } }
@@ -507,7 +506,7 @@
 \int_new:N \g__graphics_track_int
 \cs_new_protected:Npn \__graphics_backend_include_eps:n #1
   {
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         PSfile = #1 \c_space_tl
         llx = \dim_to_decimal_in_bp:n \l__graphics_llx_dim \c_space_tl
@@ -524,7 +523,7 @@
 \cs_new_eq:NN \__graphics_backend_include_bmp:n \__graphics_backend_include_jpg:n
 \cs_new_protected:Npn \__graphics_backend_include_auxi:nn #1#2
   {
-    \__graphics_backend_include_auxii:xnn
+    \__graphics_backend_include_auxii:enn
       {
         \tl_if_empty:NF \l__graphics_pagebox_tl
           { : \l__graphics_pagebox_tl }
@@ -541,17 +540,17 @@
   {
     \int_if_exist:cTF { c__graphics_ #2#1 _int }
       {
-        \__kernel_backend_literal:x
+        \__kernel_backend_literal:e
           { pdf:usexobj~@graphic \int_use:c { c__graphics_ #2#1 _int } }
       }
       { \__graphics_backend_include_auxiii:nnn {#2} {#1} {#3} }
   }
-\cs_generate_variant:Nn \__graphics_backend_include_auxii:nnn { x }
+\cs_generate_variant:Nn \__graphics_backend_include_auxii:nnn { e }
 \cs_new_protected:Npn \__graphics_backend_include_auxiii:nnn #1#2#3
   {
     \int_gincr:N \g__graphics_track_int
     \int_const:cn { c__graphics_ #1#2 _int } { \g__graphics_track_int }
-    \__kernel_backend_literal:x
+    \__kernel_backend_literal:e
       {
         pdf:#3~
         @graphic \int_use:c { c__graphics_ #1#2 _int } ~
@@ -613,7 +612,7 @@
   }
 \cs_new_protected:Npn \__graphics_backend_getbb_auxiv:nnNnn #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \__graphics_backend_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
           {
@@ -655,9 +654,9 @@
   }
 %% File: l3backend-pdf.dtx
 \box_new:N \l__pdf_internal_box
-\cs_new_protected:Npx \__pdf_backend:n #1
+\cs_new_protected:Npe \__pdf_backend:n #1
   { \__kernel_backend_literal:n { pdf: #1 } }
-\cs_generate_variant:Nn \__pdf_backend:n { x }
+\cs_generate_variant:Nn \__pdf_backend:n { e }
 \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2
   { \__pdf_backend:n { put ~ @catalog << /#1 ~ #2 >> } }
 \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2
@@ -678,15 +677,15 @@
     \use:c { __pdf_backend_object_write_ #2 :nn }
       { \__pdf_backend_object_ref:n {#1} } {#3}
   }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nne }
 \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2
   {
-    \__pdf_backend:x
+    \__pdf_backend:e
       { obj ~ #1 ~ [ ~ \exp_not:n {#2} ~ ] }
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_dict:nn #1#2
   {
-    \__pdf_backend:x
+    \__pdf_backend:e
       { obj ~ #1 ~ << ~ \exp_not:n {#2} ~ >> }
   }
 \cs_new_protected:Npn \__pdf_backend_object_write_fstream:nn #1#2
@@ -695,7 +694,7 @@
   { \__pdf_backend_object_write_stream:nnnn { } {#1} #2 }
 \cs_new_protected:Npn \__pdf_backend_object_write_stream:nnnn #1#2#3#4
   {
-    \__pdf_backend:x
+    \__pdf_backend:e
       {
         #1 stream ~ #2 ~
           ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
@@ -704,11 +703,11 @@
 \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
   {
     \int_gincr:N \g__pdf_backend_object_int
-    \exp_args:Nnx \use:c { __pdf_backend_object_write_ #1 :nn }
+    \exp_args:Nne \use:c { __pdf_backend_object_write_ #1 :nn }
       { @pdf.obj \int_use:N \g__pdf_backend_object_int }
       {#2}
   }
-\cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \__pdf_backend_object_now:nn { ne }
 \cs_new:Npn \__pdf_backend_object_last:
  { @pdf.obj \int_use:N \g__pdf_backend_object_int }
 \cs_new:Npn \__pdf_backend_pageobject_ref:n #1
@@ -718,7 +717,7 @@
   {
     \int_gincr:N \g__pdf_backend_object_int
     \int_gset_eq:NN \g__pdf_backend_annotation_int \g__pdf_backend_object_int
-    \__pdf_backend:x
+    \__pdf_backend:e
       {
         ann ~ @pdf.obj \int_use:N \g__pdf_backend_object_int \c_space_tl
         width  ~ \dim_eval:n {#1} ~
@@ -734,10 +733,10 @@
   { \__pdf_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
 \cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2
   { \__pdf_backend_link_begin:n {#1#2} }
-\cs_new_protected:Npx \__pdf_backend_link_begin:n #1
+\cs_new_protected:Npe \__pdf_backend_link_begin:n #1
   {
     \exp_not:N \int_gincr:N \exp_not:N  \g__pdf_backend_link_int
-    \__pdf_backend:x
+    \__pdf_backend:e
       {
          bann ~
          @pdf.lnk
@@ -754,10 +753,10 @@
 \cs_new:Npn \__pdf_backend_link_last:
   { @pdf.lnk \int_use:N \g__pdf_backend_link_int }
 \cs_new_protected:Npn \__pdf_backend_link_margin:n #1
-  { \__kernel_backend_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
+  { \__kernel_backend_literal:e { dvipdfmx:config~g~ \dim_eval:n {#1} } }
 \cs_new_protected:Npn \__pdf_backend_destination:nn #1#2
   {
-    \__pdf_backend:x
+    \__pdf_backend:e
       {
         dest ~ ( \exp_not:n {#1} )
         [
@@ -816,7 +815,7 @@
     \__kernel_kern:n { -#1 }
   }
 \cs_new_protected:Npn \__pdf_backend_compresslevel:n #1
-  { \__kernel_backend_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
+  { \__kernel_backend_literal:e { dvipdfmx:config~z~ \int_eval:n {#1} } }
 \cs_new_protected:Npn \__pdf_backend_compress_objects:n #1
   {
     \bool_if:nF {#1}
@@ -824,13 +823,13 @@
   }
 \cs_new_protected:Npn \__pdf_backend_version_major_gset:n #1
   {
-    \cs_gset:Npx \__pdf_backend_version_major: { \int_eval:n {#1} }
-    \__kernel_backend_literal:x { pdf:majorversion~ \__pdf_backend_version_major: }
+    \cs_gset:Npe \__pdf_backend_version_major: { \int_eval:n {#1} }
+    \__kernel_backend_literal:e { pdf:majorversion~ \__pdf_backend_version_major: }
   }
 \cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1
   {
-    \cs_gset:Npx \__pdf_backend_version_minor: { \int_eval:n {#1} }
-    \__kernel_backend_literal:x { pdf:minorversion~ \__pdf_backend_version_minor: }
+    \cs_gset:Npe \__pdf_backend_version_minor: { \int_eval:n {#1} }
+    \__kernel_backend_literal:e { pdf:minorversion~ \__pdf_backend_version_minor: }
   }
 \cs_new:Npn \__pdf_backend_version_major: { 1 }
 \cs_new:Npn \__pdf_backend_version_minor: { 5 }
@@ -855,7 +854,7 @@
 \tl_new:N \l__opacity_backend_stroke_tl
 \cs_new_protected:Npn \__opacity_backend_select:n #1
  {
-   \exp_args:Nx \__opacity_backend_select_aux:n
+   \exp_args:Ne \__opacity_backend_select_aux:n
      { \fp_eval:n { min(max(0,#1),1) } }
  }
 \cs_new_protected:Npn \__opacity_backend_select_aux:n #1
@@ -882,13 +881,13 @@
  }
 \cs_new_protected:Npn \__opacity_backend_fill:n #1
   {
-    \__opacity_backend_fill_stroke:xx
+    \__opacity_backend_fill_stroke:ee
       { \fp_eval:n { min(max(0,#1),1) } }
       \l__opacity_backend_stroke_tl
   }
 \cs_new_protected:Npn \__opacity_backend_stroke:n #1
   {
-    \__opacity_backend_fill_stroke:xx
+    \__opacity_backend_fill_stroke:ee
       \l__opacity_backend_fill_tl
       { \fp_eval:n { min(max(0,#1),1) } }
   }
@@ -910,7 +909,7 @@
         \group_insert_after:N \__opacity_backend_reset:
       }
   }
-\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { xx }
+\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { ee }
 %% 
 %%
 %% End of file `l3backend-xetex.def'.

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3benchmark.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2023-05-11}{}
+\ProvidesExplPackage{l3benchmark}{2023-10-10}{}
   {L3 Experimental benchmarking}
 \fp_new:N \g_benchmark_duration_target_fp
 \fp_gset:Nn \g_benchmark_duration_target_fp { 1 }
@@ -73,13 +73,13 @@
   }
 \cs_new_protected:Npn \__benchmark_raw_replicate_large:nnN #1#2
   {
-    \cs_set:Npx \__benchmark_tmp:w ##1 { \prg_replicate:nn { 5000 } {##1} }
+    \cs_set:Npe \__benchmark_tmp:w ##1 { \prg_replicate:nn { 5000 } {##1} }
     \exp_args:Nno \__benchmark_raw_replicate:nnN { #1 / 5000 }
       { \__benchmark_tmp:w {#2} }
   }
 \cs_new_protected:Npn \__benchmark_raw_replicate_small:nnN #1#2
   {
-    \cs_set:Npx \__benchmark_tmp:w ##1##2 { \prg_replicate:nn {#1} {##1} }
+    \cs_set:Npe \__benchmark_tmp:w ##1##2 { \prg_replicate:nn {#1} {##1} }
     \__benchmark_raw:nN { \__benchmark_tmp:w {#2} { } } \g__benchmark_time_int
     \exp_args:No \__benchmark_raw_replicate_aux:nnN
       { \int_use:N \g__benchmark_time_int } {#2}
@@ -192,7 +192,7 @@
   { \fp_to_tl:n { round(#2 * 1e-#1, 2) } e#1 }
 \cs_new_protected:Npn \__benchmark_display:
   {
-    \iow_term:x
+    \iow_term:e
       {
         \__benchmark_fp_to_tl:N \g_benchmark_time_fp \c_space_tl seconds \c_space_tl
         ( \__benchmark_fp_to_tl:N \g_benchmark_ops_fp \c_space_tl ops)
@@ -208,7 +208,7 @@
   }
 \cs_new_protected:Npn \benchmark_tic:
   {
-    \iow_term:x { \__benchmark_tictoc_prefix: TIC }
+    \iow_term:e { \__benchmark_tictoc_prefix: TIC }
     \exp_args:NNf \seq_gput_right:Nn \g__benchmark_tictoc_seq { \sys_timer: }
     \int_gincr:N \g__benchmark_tictoc_int
   }
@@ -223,7 +223,7 @@
     \int_gdecr:N \g__benchmark_tictoc_int
     \fp_gset:Nn \g_benchmark_time_fp
       { ( \sys_timer: - \l__benchmark_tictoc_pop_tl ) / 65536 }
-    \iow_term:x
+    \iow_term:e
       {
         \__benchmark_tictoc_prefix:
         TOC: \c_space_tl

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3bitset.dtx
-\ProvidesExplPackage{l3bitset}{2023-05-11}{}
+\ProvidesExplPackage{l3bitset}{2023-10-10}{}
   {L3 Experimental bitset support}
 \cs_new_protected:Npn \bitset_new:N #1
   {
@@ -56,13 +56,13 @@
   \bitset_if_exist:c \str_if_exist:c
   { p , T , F , TF }
 \cs_new_protected:Npn \__bitset_set_true:Nn #1#2
-  { \__bitset_set:NNnN \str_set:Nx #1 {#2} 1 }
+  { \__bitset_set:NNnN \str_set:Ne #1 {#2} 1 }
 \cs_new_protected:Npn \__bitset_gset_true:Nn #1#2
-  { \__bitset_set:NNnN \str_gset:Nx #1 {#2} 1 }
+  { \__bitset_set:NNnN \str_gset:Ne #1 {#2} 1 }
 \cs_new_protected:Npn \__bitset_set_false:Nn #1#2
-  { \__bitset_set:NNnN \str_set:Nx #1 {#2} 0 }
+  { \__bitset_set:NNnN \str_set:Ne #1 {#2} 0 }
 \cs_new_protected:Npn \__bitset_gset_false:Nn #1#2
-  { \__bitset_set:NNnN \str_gset:Nx #1 {#2} 0 }
+  { \__bitset_set:NNnN \str_gset:Ne #1 {#2} 0 }
 \cs_new_protected:Npn \__bitset_set:NNnN #1#2#3#4
   {
     \int_compare:nNnT {#3} > { 0 }
@@ -126,7 +126,7 @@
             \prop_gput:cnn { g__bitset_ \cs_to_str:N #2 _name_prop } {#3} {#3}
           }
           {
-            \msg_warning:nnxx { bitset } { unknown-name }
+            \msg_warning:nnee { bitset } { unknown-name }
               { \token_to_str:N #2 }
               { \tl_to_str:n {#3} }
           }
@@ -185,11 +185,11 @@
   }
 \cs_generate_variant:Nn \bitset_item:Nn { c }
 
-\cs_new_protected:Npn   \bitset_show:N { \__bitset_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn   \bitset_show:N { \__bitset_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \bitset_show:N { c }
-\cs_new_protected:Npn   \bitset_log:N  { \__bitset_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn   \bitset_log:N  { \__bitset_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \bitset_log:N  { c }
-\cs_new_protected:Npn   \bitset_show_named_index:N { \__bitset_show_named_index:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn   \bitset_show_named_index:N { \__bitset_show_named_index:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \bitset_show_named_index:N { c }
 \cs_new_protected:Npn \__bitset_show:NN #1#2
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -28,7 +28,7 @@
 %% 
 %% File: l3draw.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2023-05-11}{}
+\ProvidesExplPackage{l3draw}{2023-10-10}{}
   {L3 Experimental core drawing support}
 \scan_new:N \s__draw_mark
 \scan_new:N \s__draw_stop
@@ -62,7 +62,7 @@
     \group_begin:
       \hbox_set:Nn \l__draw_tmp_box
         {
-          \use:x
+          \use:e
             {
               \__draw_backend_box_use:Nnnnn #1
                 { \fp_use:N \l__draw_matrix_a_fp }
@@ -329,7 +329,7 @@
   {
     \fp_set:Nn \l__draw_path_tmpa_fp { \c__draw_path_curveto_b_fp * #1 }
     \fp_set:Nn \l__draw_path_tmpb_fp { \c__draw_path_curveto_b_fp * #2 }
-    \use:x
+    \use:e
       {
          \__draw_path_mark_corner:
          \__draw_path_curveto:nnnnnn
@@ -365,7 +365,7 @@
   { \draw_path_arc:nnnn {#1} {#2} {#3} {#3} }
 \cs_new_protected:Npn \draw_path_arc:nnnn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \__draw_path_arc:nnnn
           { \fp_eval:n {#1} }
@@ -412,7 +412,7 @@
   }
 \cs_new_protected:Npn \__draw_path_arc_auxi:nnnnNnn #1#2#3#4#5#6#7
   {
-    \use:x
+    \use:e
       {
         \__draw_path_arc_auxii:nnnNnnnn
           {#1} {#2} {#4} #5 {#6} {#7}
@@ -493,7 +493,7 @@
   }
 \cs_new_protected:Npn \__draw_path_arc_aux_add:nn #1#2
   {
-    \tl_put_right:Nx \l__draw_path_tmp_tl
+    \tl_put_right:Ne \l__draw_path_tmp_tl
       { { \fp_to_dim:n {#1} } { \fp_to_dim:n {#2} } }
   }
 \fp_new:N \l__draw_path_arc_delta_fp
@@ -517,7 +517,7 @@
   }
 \cs_new_protected:Npn \__draw_path_ellipse:nnnnnn #1#2#3#4#5#6
   {
-    \use:x
+    \use:e
       {
         \__draw_path_moveto:nn
           { \fp_to_dim:n { #1 + #3 } } { \fp_to_dim:n { #2 + #4 } }
@@ -1356,7 +1356,7 @@
   {
     \bool_if:NTF \l__draw_baseline_bool
       {
-        \use:x
+        \use:e
           {
             \exp_not:n {#1}
             \__draw_finalise_baseline:n { \dim_use:N \l__draw_baseline_dim }
@@ -1422,7 +1422,7 @@
 \bool_new:N \g__draw_softpath_corners_bool
 \cs_new_protected:Npn \__draw_softpath_add:n
   { \tl_build_gput_right:Nn \g__draw_softpath_main_tl }
-\cs_generate_variant:Nn \__draw_softpath_add:n { o, x }
+\cs_generate_variant:Nn \__draw_softpath_add:n { o, e }
 \cs_new_protected:Npn \__draw_softpath_use:
   {
     \tl_build_get:NN \g__draw_softpath_main_tl \l__draw_softpath_internal_tl
@@ -1439,7 +1439,7 @@
 \bool_gset_true:N \g__draw_softpath_move_bool
 \cs_new_protected:Npn \__draw_softpath_closepath:
   {
-    \__draw_softpath_add:x
+    \__draw_softpath_add:e
       {
         \__draw_softpath_close_op:nn
           { \dim_use:N \g__draw_softpath_lastx_dim }
@@ -1638,13 +1638,13 @@
   }
 \cs_new_protected:Npn \__draw_softpath_round_calc:NnnNnn #1#2#3#4#5#6
   {
-    \tl_set:Nx \l__draw_softpath_curve_end_tl
+    \tl_set:Ne \l__draw_softpath_curve_end_tl
       {
         \draw_point_interpolate_distance:nnn
           \l__draw_softpath_cornerii_dim
           { #5 , #6 } { #2 , #3 }
       }
-    \tl_put_right:Nx \l__draw_softpath_part_tl
+    \tl_put_right:Ne \l__draw_softpath_part_tl
       {
         \exp_not:N #4
         \__draw_softpath_round_calc:fVnnnn
@@ -1697,11 +1697,11 @@
   }
 \cs_new_protected:Npn \__draw_softpath_round_close:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \__draw_softpath_round_calc:NnnNnn
           {
-            \tl_set:Nx \exp_not:N \l__draw_softpath_move_tl
+            \tl_set:Ne \exp_not:N \l__draw_softpath_move_tl
               {
                 \__draw_softpath_moveto_op:nn
                 \exp_not:N \exp_after:wN
@@ -1709,7 +1709,7 @@
                   \exp_not:N \l__draw_softpath_curve_end_tl
                     \s__draw_stop
               }
-            \use:x
+            \use:e
               {
                 \exp_not:N \exp_not:N \exp_not:N \use_i:nnnn
                   {
@@ -1752,7 +1752,7 @@
       \seq_set_from_clist:Nn \l__draw_tmp_seq {#1}
       \seq_set_map:NNn \l__draw_tmp_seq \l__draw_tmp_seq
         { \fp_to_dim:n {##1} }
-      \use:x
+      \use:e
         {
           \__draw_backend_dash_pattern:nn
             { \seq_use:Nn \l__draw_tmp_seq { , } }
@@ -1762,7 +1762,7 @@
   }
 \seq_new:N \l__draw_tmp_seq
 \cs_new_protected:Npn \draw_miterlimit:n #1
-  { \exp_args:Nx \__draw_backend_miterlimit:n { \fp_eval:n {#1} } }
+  { \exp_args:Ne \__draw_backend_miterlimit:n { \fp_eval:n {#1} } }
 \cs_new_protected:Npn \draw_cap_butt: { \__draw_backend_cap_butt: }
 \cs_new_protected:Npn \draw_cap_rectangle: { \__draw_backend_cap_rectangle: }
 \cs_new_protected:Npn \draw_cap_round: { \__draw_backend_cap_round: }
@@ -1821,7 +1821,7 @@
   }
 \cs_new_protected:Npn \draw_transform_matrix:nnnn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \__draw_transform:nnnn
           { \fp_eval:n {#1} }
@@ -1832,7 +1832,7 @@
   }
 \cs_new_protected:Npn \__draw_transform:nnnn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \draw_transform_matrix_absolute:nnnn
           { #1 * \l__draw_matrix_a_fp + #2 * \l__draw_matrix_c_fp }
@@ -1897,7 +1897,7 @@
   }
 \cs_new_protected:Npn \__draw_transform_triangle:nnnnnn #1#2#3#4#5#6
   {
-    \use:x
+    \use:e
       {
         \draw_transform_matrix_absolute:nnnn
           { #3 - #1 }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3graphics.dtx
-\ProvidesExplPackage{l3graphics}{2023-05-11}{}
+\ProvidesExplPackage{l3graphics}{2023-10-10}{}
   {L3 Experimental graphics inclusion support}
 \dim_new:N \l__graphics_internal_dim
 \ior_new:N \l__graphics_internal_ior
@@ -37,8 +37,8 @@
     pagebox .choices:nn =
       { art , bleed , crop , media , trim }
       {
-        \tl_set:Nx \l__graphics_pagebox_tl
-           { \tl_use:N \l_keys_choice_tl box }
+        \tl_set:Ne \l__graphics_pagebox_tl
+           { \l_keys_choice_tl box }
       } ,
     pagebox .initial:n =
       crop ,
@@ -66,7 +66,7 @@
         \dim_const:cn { c__graphics_ #1 _ury_dim } { \l__graphics_ury_dim }
       }
   }
-\cs_generate_variant:Nn \__graphics_bb_save:n { x }
+\cs_generate_variant:Nn \__graphics_bb_save:n { e }
 \cs_new_protected:Npn \__graphics_bb_restore:nF #1#2
   {
     \dim_if_exist:cTF { c__graphics_ #1 _urx_dim }
@@ -82,7 +82,7 @@
       }
       {#2}
   }
-\cs_generate_variant:Nn \__graphics_bb_restore:nF { x }
+\cs_generate_variant:Nn \__graphics_bb_restore:nF { e }
 \cs_new_protected:Npn \__graphics_extract_bb:n #1
   {
     \int_compare:nNnTF \l__graphics_page_int > 0
@@ -119,7 +119,7 @@
     \__graphics_bb_restore:nF {#1#2}
       { \__graphics_read_bb_auxii:nnnn {#3} {#4} {#1} {#2} }
   }
-\cs_new_protected:Npx \__graphics_read_bb_auxii:nnnn #1#2#3#4
+\cs_new_protected:Npe \__graphics_read_bb_auxii:nnnn #1#2#3#4
   {
     #1
     \exp_not:N \ior_if_eof:NTF \exp_not:N \l__graphics_internal_ior
@@ -134,15 +134,15 @@
       }
     \ior_close:N \exp_not:N \l__graphics_internal_ior
   }
-\use:x
+\use:e
   {
     \cs_new_protected:Npn \exp_not:N \__graphics_read_bb_auxiii:w
-      ##1 \c_colon_str ##2 \s__graphics_stop
+      #1 \c_colon_str #2 \s__graphics_stop
       {
         \exp_not:N \str_if_eq:nnT
           { \c_percent_str \c_percent_str BoundingBox }
-          {##1}
-          { \exp_not:N \__graphics_read_bb_auxiv:w ##2 ( ) \s__graphics_stop }
+          {#1}
+          { \exp_not:N \__graphics_read_bb_auxiv:w #2 ( ) \s__graphics_stop }
       }
   }
 \cs_new_protected:Npn \__graphics_read_bb_auxiv:w #1 ( #2 ) #3 \s__graphics_stop
@@ -149,7 +149,7 @@
   {
     \str_if_eq:nnF {#2} { atend }
       {
-        \tl_set_rescan:Nnx \l__graphics_internal_tl
+        \tl_set_rescan:Nne \l__graphics_internal_tl
           {
             \char_set_catcode_space:n {  9 }
             \char_set_catcode_space:n { 32 }
@@ -219,7 +219,7 @@
     \cs_if_exist:cTF { __graphics_backend_include_ #1 :n }
       {
         \tl_set_eq:NN \l__graphics_final_name_str \l__graphics_full_name_str
-        \str_set:Nx \l__graphics_full_name_str
+        \str_set:Ne \l__graphics_full_name_str
          { \exp_args:NV \__kernel_file_name_quote:n \l__graphics_full_name_str }
         \exp_args:NnV \use:c { __graphics_backend_getbb_ #1 :n }
           \l__graphics_full_name_str
@@ -272,8 +272,8 @@
       { \l__graphics_urx_dim - \l__graphics_llx_dim }
     \box_use_drop:N \l__graphics_internal_box
   }
-\cs_new_protected:Npn \graphics_show_list: { \__graphics_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \graphics_log_list: { \__graphics_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \graphics_show_list: { \__graphics_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \graphics_log_list: { \__graphics_list:N \msg_log:nneeee }
 \cs_new_protected:Npn \__graphics_list:N #1
   {
     \seq_remove_duplicates:N \g__graphics_record_seq
@@ -345,7 +345,7 @@
     \exp_args:NNNV \group_end:
     \tl_set:Nn #2 #2
   }
-\cs_new_protected:Npx \__graphics_get_pagecount:n #1
+\cs_new_protected:Npe \__graphics_get_pagecount:n #1
   {
     \ior_shell_open:Nn \exp_not:N \l__graphics_internal_ior
       { extractbb~-O~#1 }
@@ -362,16 +362,16 @@
       }
     \ior_close:N \exp_not:N \l__graphics_internal_ior
   }
-\use:x
+\use:e
   {
     \cs_new_protected:Npn \exp_not:N \__graphics_get_pagecount:nw
-      ##1##2 \c_colon_str ##3 \c_colon_str ##4 \s__graphics_stop
+      #1#2 \c_colon_str #3 \c_colon_str #4 \s__graphics_stop
       {
         \exp_not:N \str_if_eq:nnT
           { \c_percent_str \c_percent_str Pages }
-          {##2}
+          {#2}
           {
-            \int_const:cn { c__graphics_ ##1 _pages_int } {##3}
+            \int_const:cn { c__graphics_ #1 _pages_int } {#3}
             \exp_not:N \ior_map_break:
           }
       }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3opacity.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3opacity}{2023-05-11}{}
+\ProvidesExplPackage{l3opacity}{2023-10-10}{}
   {L3 Experimental opacity support}
 \cs_new_protected:Npn \opacity_select:n #1
   { \__opacity_select:nN {#1} \__opacity_backend_select:n }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3str-format.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2023-05-11}{}
+\ProvidesExplPackage{l3str-format}{2023-10-10}{}
   {L3 Experimental string formatting}
 \cs_generate_variant:Nn \use:nn { nf }
 \cs_generate_variant:Nn \use:nnn { fnf }
@@ -51,7 +51,7 @@
     \exp_last_unbraced:Nf \__str_format_parse_auxi:NN
       { \__kernel_str_to_other:n {#1} } \s__str_stop \s__str_stop {#1}
   }
-\cs_new:Npx \__str_format_parse_auxi:NN #1#2
+\cs_new:Npe \__str_format_parse_auxi:NN #1#2
   {
     \exp_not:N \__str_format_if_in:nNTF { < > = ^ } #2
       { \exp_not:N \__str_format_parse_auxiii:nN { #1 #2 } }
@@ -66,7 +66,7 @@
       { \__str_format_parse_auxiii:nN { #1 #2 } }
       { \__str_format_parse_auxiii:nN { #1 ? } #2 }
   }
-\cs_new:Npx \__str_format_parse_auxiii:nN #1#2
+\cs_new:Npe \__str_format_parse_auxiii:nN #1#2
   {
     \exp_not:N \__str_format_if_in:nNTF
       { + - \c_catcode_other_space_tl }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3sys-shell.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2023-05-11}{}
+\ProvidesExplPackage{l3sys-shell}{2023-10-10}{}
   {L3 Experimental system shell functions}
 \scan_new:N \s__sys_stop
 \quark_new:N \q__sys_nil
@@ -48,11 +48,11 @@
          \__sys_path_to_win:N
       }
   }
-\cs_new_protected:Npx \sys_shell_cp:nn #1#2
+\cs_new_protected:Npe \sys_shell_cp:nn #1#2
   {
     \sys_if_shell_unrestricted:T
       {
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               {
@@ -67,11 +67,11 @@
           }
       }
   }
-\cs_new_protected:Npx \sys_shell_mkdir:n #1
+\cs_new_protected:Npe \sys_shell_mkdir:n #1
   {
     \sys_if_shell_unrestricted:T
       {
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} }
@@ -84,11 +84,11 @@
           }
       }
   }
-\cs_new_protected:Npx \sys_shell_mv:nn #1#2
+\cs_new_protected:Npe \sys_shell_mv:nn #1#2
   {
     \sys_if_shell_unrestricted:T
       {
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               {
@@ -105,11 +105,11 @@
           }
       }
   }
-\cs_new_protected:Npx \sys_shell_rm:n #1
+\cs_new_protected:Npe \sys_shell_rm:n #1
   {
     \sys_if_shell_unrestricted:T
       {
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               { rm~-f~ \exp_not:N \tl_to_str:n {#1}  }
@@ -118,12 +118,12 @@
           }
       }
   }
-\cs_new_protected:Npx \sys_shell_rmdir:n #1
+\cs_new_protected:Npe \sys_shell_rmdir:n #1
   {
     \sys_if_shell_unrestricted:T
       {
         \sys_shell_mkdir:n {#1}
-        \sys_shell_now:x
+        \sys_shell_now:e
           {
             \sys_if_platform_unix:T
               { rm~-rf~ \exp_not:N \tl_to_str:n {#1} }
@@ -133,7 +133,7 @@
       }
   }
 \tl_new:N \l__sys_tmp_tl
-\cs_new_protected:Npx \sys_get_shell_pwd:N #1
+\cs_new_protected:Npe \sys_get_shell_pwd:N #1
   {
     \sys_if_shell_unrestricted:T
       {
@@ -154,7 +154,7 @@
         \str_set:NV #1 \exp_not:N \l__sys_tmp_tl
       }
   }
-\cs_new_protected:Npx \sys_shell_split_ls:nN #1#2
+\cs_new_protected:Npe \sys_shell_split_ls:nN #1#2
   {
     \sys_if_shell_unrestricted:T
       {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: xcoffins.dtx
-\ProvidesExplPackage{xcoffins}{2023-05-11}{}
+\ProvidesExplPackage{xcoffins}{2023-10-10}{}
   {L3 Experimental design level coffins}
 \keys_define:nn { coffin }
   {
@@ -74,7 +74,7 @@
   {
     \group_begin:
       \__coffin_design_names:N #1
-    \use:x
+    \use:e
       {
         \group_end:
         \coffin_set_horizontal_pole:Nnn #1
@@ -85,7 +85,7 @@
   {
     \group_begin:
       \__coffin_design_names:N #1
-    \use:x
+    \use:e
       {
         \group_end:
         \coffin_set_vertical_pole:Nnn #1
@@ -112,7 +112,7 @@
       {
         \group_begin:
           \keys_set:nn { coffin } {#1}
-          \tl_set:Nx \l__coffin_tmp_tl
+          \tl_set:Ne \l__coffin_tmp_tl
             {
               \group_end:
               \bool_if:NTF \l__coffin_bound_box_grow_bool

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3galley}{2023-05-11}{}
+\ProvidesExplPackage{l3galley}{2023-10-10}{}
   {L3 Experimental galley code}
 \int_new:N \l__galley_tmp_int
 \seq_new:N \g__galley_tmpa_seq
@@ -300,7 +300,7 @@
   {
      \tl_if_empty:NF #1
        {
-         \tl_gput_right:Nx \g_galley_restore_running_tl
+         \tl_gput_right:Ne \g_galley_restore_running_tl
            {
              \int_gset:Nn \exp_not:N \g_galley_penalty_int
                { \int_use:N \g_galley_penalty_int }
@@ -312,7 +312,7 @@
   {
      \tl_if_empty:NF #1
        {
-         \tl_gput_right:Nx \g_galley_restore_running_tl
+         \tl_gput_right:Ne \g_galley_restore_running_tl
            {
              \skip_gset:Nn \exp_not:N \g_galley_vspace_skip
                { \skip_use:N \g_galley_vspace_skip }
@@ -523,7 +523,7 @@
       {
         \seq_gpop_left:NNF #2 \l__galley_tmp_tl
           { \tl_set:Nn \l__galley_tmp_tl { 0pt } }
-        \seq_put_right:Nx \l__galley_tmp_seq
+        \seq_put_right:Ne \l__galley_tmp_seq
           { \dim_eval:n { ##1 + \l__galley_tmp_tl } }
       }
   }
@@ -632,10 +632,10 @@
       { \seq_put_right:NV #1 \l__galley_tmp_tl }
   }
 \cs_new_protected:Npn \galley_penalty_set_single:n #1
-  { \tl_gset:Nx \g__galley_interpar_penalty_user_tl { \int_eval:n {#1} } }
+  { \tl_gset:Ne \g__galley_interpar_penalty_user_tl { \int_eval:n {#1} } }
 \cs_new_protected:Npn \galley_penalty_add_single:n #1
   {
-    \tl_gset:Nx \g__galley_interpar_penalty_user_tl
+    \tl_gset:Ne \g__galley_interpar_penalty_user_tl
       {
         \int_eval:n
           {
@@ -646,10 +646,10 @@
       }
   }
 \cs_new_protected:Npn \galley_vspace_set_single:n #1
-  { \tl_gset:Nx \g__galley_interpar_vspace_user_tl { \skip_eval:n {#1} } }
+  { \tl_gset:Ne \g__galley_interpar_vspace_user_tl { \skip_eval:n {#1} } }
 \cs_new_protected:Npn \galley_vspace_add_single:n #1
   {
-    \tl_gset:Nx \g__galley_interpar_vspace_user_tl
+    \tl_gset:Ne \g__galley_interpar_vspace_user_tl
       {
         \skip_eval:n
           {
@@ -848,7 +848,7 @@
   { \clist_set_eq:NN #1 \l_galley_line_penalties_clist }
 \cs_new_protected:Npn \galley_save_display_club_penalties:N #1
   {
-    \clist_set:Nx #1
+    \clist_set:Ne #1
       {
         \int_step_function:nN { \tex_clubpenalties:D 0 - 1 }
           \__galley_save_display_club_penalties:n
@@ -858,7 +858,7 @@
   { \int_value:w \tex_clubpenalties:D \int_eval:n {#1} , }
 \cs_new_protected:Npn \galley_save_display_widow_penalties:N #1
   {
-    \clist_set:Nx #1
+    \clist_set:Ne #1
       {
         \int_step_function:nN { \tex_displaywidowpenalties:D 0 - 1 }
           \__galley_save_display_widow_penalties:n
@@ -871,7 +871,7 @@
   }
 \cs_new_protected:Npn \galley_save_widow_penalties:N #1
   {
-    \clist_set:Nx #1
+    \clist_set:Ne #1
       {
         \int_step_function:nN { \tex_widowpenalties:D 0 - 1 }
           \__galley_save_widow_penalties:n

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: xgalley.dtx
-\ProvidesExplPackage{xgalley}{2023-05-11}{}
+\ProvidesExplPackage{xgalley}{2023-10-10}{}
   {L3 Experimental galley}
 \RequirePackage{xtemplate,l3galley}
 \clist_new:N \l__galley_tmpa_clist
@@ -222,7 +222,7 @@
     stretch-last-line  = \l_galley_par_stretch_last_bool
   }
   {
-    \tl_put_left:Nx \l__galley_justification_other_tl
+    \tl_put_left:Ne \l__galley_justification_other_tl
       {
         \skip_set:Nn \exp_not:N \l_galley_par_end_skip
           { \skip_use:N \l_galley_par_end_skip }
@@ -411,7 +411,7 @@
   {
     \tl_if_empty:NF \l__galley_interline_penalty_tl
       {
-        \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+        \tl_gput_right:Ne \g_galley_par_reset_hook_tl
           {
             \int_set:Nn \exp_not:N \l__galley_interline_penalty_int
               { \galley_interline_penalty: }
@@ -421,7 +421,7 @@
       }
     \tl_if_empty:NF \l__galley_parbreak_fuzz_tl
       {
-        \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+        \tl_gput_right:Ne \g_galley_par_reset_hook_tl
           {
             \dim_set:Nn \exp_not:N \l_galley_parbreak_fuzz_dim
               { \dim_use:N \l_galley_parbreak_fuzz_dim }
@@ -432,7 +432,7 @@
       {
         \tl_if_empty:cF { l_galley_ ##1 _tl }
           {
-            \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+            \tl_gput_right:Ne \g_galley_par_reset_hook_tl
               {
                 \int_set:Nn \exp_not:c { l_galley_ ##1 _int }
                   { \int_use:c { l_galley_ ##1 _int } }
@@ -446,7 +446,7 @@
         \tl_if_empty:cF { l_galley_ ##1 _tl }
           {
             \use:c { galley_save_ ##1 :N } \l__galley_tmpa_clist
-            \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+            \tl_gput_right:Ne \g_galley_par_reset_hook_tl
               {
                 \exp_not:c { galley_set_ ##1 :n }
                   { \exp_not:o \l__galley_tmpa_clist }
@@ -518,22 +518,22 @@
   {
     \tl_if_empty:NF \l_galley_display_begin_par_vpenalty_tl
       {
-        \tl_set:Nx \l_galley_display_begin_par_vpenalty_tl
+        \tl_set:Ne \l_galley_display_begin_par_vpenalty_tl
           { \int_eval:n { \l_galley_display_begin_par_vpenalty_tl } }
       }
     \tl_if_empty:NF \l_galley_display_begin_par_vspace_tl
       {
-        \tl_set:Nx \l_galley_display_begin_par_vspace_tl
+        \tl_set:Ne \l_galley_display_begin_par_vspace_tl
           { \skip_eval:n { \l_galley_display_begin_par_vspace_tl } }
       }
     \tl_if_empty:NF \l_galley_display_begin_vpenalty_tl
       {
-        \tl_set:Nx \l_galley_display_begin_vpenalty_tl
+        \tl_set:Ne \l_galley_display_begin_vpenalty_tl
           { \int_eval:n { \l_galley_display_begin_vpenalty_tl } }
       }
     \tl_if_empty:NF \l_galley_display_begin_vspace_tl
       {
-        \tl_set:Nx \l_galley_display_begin_vspace_tl
+        \tl_set:Ne \l_galley_display_begin_vspace_tl
           { \skip_eval:n { \l_galley_display_begin_vspace_tl } }
       }
   }
@@ -547,22 +547,22 @@
   {
     \tl_if_empty:NF \l_galley_display_end_par_vpenalty_tl
       {
-        \tl_set:Nx \l_galley_display_end_par_vpenalty_tl
+        \tl_set:Ne \l_galley_display_end_par_vpenalty_tl
           { \int_eval:n { \l_galley_display_end_par_vpenalty_tl } }
       }
     \tl_if_empty:NF \l_galley_display_end_par_vspace_tl
       {
-        \tl_set:Nx \l_galley_display_end_par_vspace_tl
+        \tl_set:Ne \l_galley_display_end_par_vspace_tl
           { \skip_eval:n { \l_galley_display_end_par_vspace_tl } }
       }
     \tl_if_empty:NF \l_galley_display_end_vpenalty_tl
       {
-        \tl_set:Nx \l_galley_display_end_vpenalty_tl
+        \tl_set:Ne \l_galley_display_end_vpenalty_tl
           { \int_eval:n { \l_galley_display_end_vpenalty_tl } }
       }
     \tl_if_empty:NF \l_galley_display_end_vspace_tl
       {
-        \tl_set:Nx \l_galley_display_end_vspace_tl
+        \tl_set:Ne \l_galley_display_end_vspace_tl
           { \skip_eval:n { \l_galley_display_end_vspace_tl } }
       }
   }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-10-10 20:27:00 UTC (rev 68507)
@@ -71,7 +71,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-08-29}%
+\def\ExplFileDate{2023-10-10}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -236,7 +236,7 @@
   {
     \bool_if:NF \l__kernel_expl_bool
       {
-        \cs_set_protected:Npx \ExplSyntaxOff
+        \cs_set_protected:Npe \ExplSyntaxOff
           {
             \char_set_catcode:nn { 9 }   { \char_value_catcode:n { 9 } }
             \char_set_catcode:nn { 32 }  { \char_value_catcode:n { 32 } }
@@ -1508,33 +1508,41 @@
   \tex_fi:D
 \tex_fi:D
 \tex_let:D \cs_set_nopar:Npn            \tex_def:D
+\tex_let:D \cs_set_nopar:Npe            \tex_edef:D
 \tex_let:D \cs_set_nopar:Npx            \tex_edef:D
 \tex_protected:D \tex_long:D \tex_def:D \cs_set:Npn
   { \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npx
+\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npe
   { \tex_long:D \tex_edef:D }
+\tex_let:D \cs_set:Npx \cs_set:Npe
 \tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npn
   { \tex_protected:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npx
+\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npe
   { \tex_protected:D \tex_edef:D }
+\tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe
 \tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npn
   { \tex_protected:D \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npx
+\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npe
   { \tex_protected:D \tex_long:D \tex_edef:D }
+\tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe
 \tex_let:D \cs_gset_nopar:Npn           \tex_gdef:D
+\tex_let:D \cs_gset_nopar:Npe           \tex_xdef:D
 \tex_let:D \cs_gset_nopar:Npx           \tex_xdef:D
 \cs_set_protected:Npn \cs_gset:Npn
   { \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset:Npx
+\cs_set_protected:Npn \cs_gset:Npe
   { \tex_long:D \tex_xdef:D }
+\tex_let:D \cs_gset:Npx \cs_gset:Npe
 \cs_set_protected:Npn \cs_gset_protected_nopar:Npn
   { \tex_protected:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected_nopar:Npx
+\cs_set_protected:Npn \cs_gset_protected_nopar:Npe
   { \tex_protected:D \tex_xdef:D }
+\tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe
 \cs_set_protected:Npn \cs_gset_protected:Npn
   { \tex_protected:D \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected:Npx
+\cs_set_protected:Npn \cs_gset_protected:Npe
   { \tex_protected:D \tex_long:D \tex_xdef:D }
+\tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe
 \cs_set_nopar:Npn \l__exp_internal_tl { }
 \cs_set:Npn \use:c #1 { \cs:w #1 \cs_end: }
 \cs_set_protected:Npn \use:x #1
@@ -1649,7 +1657,7 @@
   { \__prg_generate_conditional_parm:NNNpnn \cs_new_protected:Npn p }
 \cs_set_protected:Npn \__prg_generate_conditional_parm:NNNpnn #1#2#3#4#
   {
-    \use:x
+    \use:e
       {
         \__prg_generate_conditional:nnNNNnnn
           \cs_split_function:N #3
@@ -1670,7 +1678,7 @@
   { \__prg_generate_conditional_count:NNNnn \cs_new_protected:Npn p }
 \cs_set_protected:Npn \__prg_generate_conditional_count:NNNnn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \__prg_generate_conditional_count:nnNNNnn
         \cs_split_function:N #3
@@ -1683,7 +1691,7 @@
       { \__prg_generate_conditional:nnNNNnnn {#1} {#2} #3 #4 #5 }
       { \tl_count:n {#2} }
       {
-        \msg_error:nnxx { kernel } { bad-number-of-arguments }
+        \msg_error:nnee { kernel } { bad-number-of-arguments }
           { \token_to_str:c { #1 : #2 } }
           { \tl_count:n {#2} }
         \use_none:nn
@@ -1692,11 +1700,11 @@
 \cs_set_protected:Npn \__prg_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8
   {
     \if_meaning:w \c_false_bool #3
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \use_none:nn
     \fi:
-    \use:x
+    \use:e
       {
         \exp_not:N \__prg_generate_conditional:NNnnnnNw
         \exp_not:n { #4 #5 {#1} {#2} {#6} }
@@ -1723,7 +1731,7 @@
     \use:c { __prg_generate_ #8 _form:wNNnnnnN }
         \tl_if_empty:nF {#8}
           {
-            \msg_error:nnxx
+            \msg_error:nnee
               { kernel } { conditional-form-unknown }
               {#8} { \token_to_str:c { #3 : #4 } }
           }
@@ -1747,7 +1755,7 @@
           { #7 \__prg_p_true:w \fi: \c_false_bool }
       }
       {
-        \msg_error:nnx { kernel } { protected-predicate }
+        \msg_error:nne { kernel } { protected-predicate }
           { \token_to_str:c { #4 _p: #5 } }
       }
   }
@@ -1787,7 +1795,7 @@
   { \__prg_set_eq_conditional:NNNn \cs_new_eq:cc }
 \cs_set_protected:Npn \__prg_set_eq_conditional:NNNn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \exp_not:N \__prg_set_eq_conditional:nnNnnNNw
           \cs_split_function:N #2
@@ -1800,12 +1808,12 @@
 \cs_set_protected:Npn \__prg_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6
   {
     \if_meaning:w \c_false_bool #3
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w
     \fi:
     \if_meaning:w \c_false_bool #6
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#4} }
       \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w
     \fi:
@@ -1819,7 +1827,7 @@
     \use:c { __prg_set_eq_conditional_ #6 _form:wNnnnn }
         \tl_if_empty:nF {#6}
           {
-            \msg_error:nnxx
+            \msg_error:nnee
               { kernel } { conditional-form-unknown }
               {#6} { \token_to_str:c { #1 : #2 } }
           }
@@ -1935,7 +1943,7 @@
   { \cs_if_exist:cTF {#1} { \use:c {#1} #2 } { } }
 \cs_set:Npn \cs_if_exist_use:c #1
   { \cs_if_exist:cTF {#1} { \use:c {#1} } { } }
-\cs_set_protected:Npn \msg_error:nnxx #1#2#3#4
+\cs_set_protected:Npn \msg_error:nnee #1#2#3#4
   {
     \tex_newlinechar:D = `\^^J \scan_stop:
     \tex_errmessage:D
@@ -1948,21 +1956,21 @@
       }
     \tex_end:D
   }
-\cs_set_protected:Npn \msg_error:nnx #1#2#3
-  { \msg_error:nnxx {#1} {#2} {#3} { } }
+\cs_set_protected:Npn \msg_error:nne #1#2#3
+  { \msg_error:nnee {#1} {#2} {#3} { } }
 \cs_set_protected:Npn \msg_error:nn #1#2
-  { \msg_error:nnxx {#1} {#2} { } { } }
+  { \msg_error:nnee {#1} {#2} { } { } }
 \cs_set:Npn \msg_line_context:
   { on~line~ \tex_the:D \tex_inputlineno:D }
-\cs_set_protected:Npn \iow_log:x
+\cs_set_protected:Npn \iow_log:e
   { \tex_immediate:D \tex_write:D -1 }
-\cs_set_protected:Npn \iow_term:x
+\cs_set_protected:Npn \iow_term:e
   { \tex_immediate:D \tex_write:D 16 }
 \cs_set_protected:Npn \__kernel_chk_if_free_cs:N #1
   {
     \cs_if_free:NF #1
       {
-        \msg_error:nnxx { kernel } { command-already-defined }
+        \msg_error:nnee { kernel } { command-already-defined }
           { \token_to_str:N #1 } { \token_to_meaning:N #1 }
       }
   }
@@ -1977,38 +1985,54 @@
       }
   }
 \__cs_tmp:w \cs_new_nopar:Npn           \cs_gset_nopar:Npn
+\__cs_tmp:w \cs_new_nopar:Npe           \cs_gset_nopar:Npe
 \__cs_tmp:w \cs_new_nopar:Npx           \cs_gset_nopar:Npx
 \__cs_tmp:w \cs_new:Npn                 \cs_gset:Npn
+\__cs_tmp:w \cs_new:Npe                 \cs_gset:Npe
 \__cs_tmp:w \cs_new:Npx                 \cs_gset:Npx
 \__cs_tmp:w \cs_new_protected_nopar:Npn \cs_gset_protected_nopar:Npn
+\__cs_tmp:w \cs_new_protected_nopar:Npe \cs_gset_protected_nopar:Npe
 \__cs_tmp:w \cs_new_protected_nopar:Npx \cs_gset_protected_nopar:Npx
 \__cs_tmp:w \cs_new_protected:Npn       \cs_gset_protected:Npn
+\__cs_tmp:w \cs_new_protected:Npe       \cs_gset_protected:Npe
 \__cs_tmp:w \cs_new_protected:Npx       \cs_gset_protected:Npx
 \cs_set:Npn \__cs_tmp:w #1#2
   { \cs_new_protected_nopar:Npn #1 { \exp_args:Nc #2 } }
 \__cs_tmp:w \cs_set_nopar:cpn  \cs_set_nopar:Npn
+\__cs_tmp:w \cs_set_nopar:cpe  \cs_set_nopar:Npe
 \__cs_tmp:w \cs_set_nopar:cpx  \cs_set_nopar:Npx
 \__cs_tmp:w \cs_gset_nopar:cpn \cs_gset_nopar:Npn
+\__cs_tmp:w \cs_gset_nopar:cpe \cs_gset_nopar:Npe
 \__cs_tmp:w \cs_gset_nopar:cpx \cs_gset_nopar:Npx
 \__cs_tmp:w \cs_new_nopar:cpn  \cs_new_nopar:Npn
+\__cs_tmp:w \cs_new_nopar:cpe  \cs_new_nopar:Npe
 \__cs_tmp:w \cs_new_nopar:cpx  \cs_new_nopar:Npx
 \__cs_tmp:w \cs_set:cpn  \cs_set:Npn
+\__cs_tmp:w \cs_set:cpe  \cs_set:Npe
 \__cs_tmp:w \cs_set:cpx  \cs_set:Npx
 \__cs_tmp:w \cs_gset:cpn \cs_gset:Npn
+\__cs_tmp:w \cs_gset:cpe \cs_gset:Npe
 \__cs_tmp:w \cs_gset:cpx \cs_gset:Npx
 \__cs_tmp:w \cs_new:cpn  \cs_new:Npn
+\__cs_tmp:w \cs_new:cpe  \cs_new:Npe
 \__cs_tmp:w \cs_new:cpx  \cs_new:Npx
 \__cs_tmp:w \cs_set_protected_nopar:cpn  \cs_set_protected_nopar:Npn
+\__cs_tmp:w \cs_set_protected_nopar:cpe  \cs_set_protected_nopar:Npe
 \__cs_tmp:w \cs_set_protected_nopar:cpx  \cs_set_protected_nopar:Npx
 \__cs_tmp:w \cs_gset_protected_nopar:cpn \cs_gset_protected_nopar:Npn
+\__cs_tmp:w \cs_gset_protected_nopar:cpe \cs_gset_protected_nopar:Npe
 \__cs_tmp:w \cs_gset_protected_nopar:cpx \cs_gset_protected_nopar:Npx
 \__cs_tmp:w \cs_new_protected_nopar:cpn  \cs_new_protected_nopar:Npn
+\__cs_tmp:w \cs_new_protected_nopar:cpe  \cs_new_protected_nopar:Npe
 \__cs_tmp:w \cs_new_protected_nopar:cpx  \cs_new_protected_nopar:Npx
 \__cs_tmp:w \cs_set_protected:cpn  \cs_set_protected:Npn
+\__cs_tmp:w \cs_set_protected:cpe  \cs_set_protected:Npe
 \__cs_tmp:w \cs_set_protected:cpx  \cs_set_protected:Npx
 \__cs_tmp:w \cs_gset_protected:cpn \cs_gset_protected:Npn
+\__cs_tmp:w \cs_gset_protected:cpe \cs_gset_protected:Npe
 \__cs_tmp:w \cs_gset_protected:cpx \cs_gset_protected:Npx
 \__cs_tmp:w \cs_new_protected:cpn  \cs_new_protected:Npn
+\__cs_tmp:w \cs_new_protected:cpe  \cs_new_protected:Npe
 \__cs_tmp:w \cs_new_protected:cpx  \cs_new_protected:Npx
 \cs_new_protected:Npn \cs_set_eq:NN #1 { \tex_let:D #1 =~ }
 \cs_new_protected:Npn \cs_set_eq:cN { \exp_args:Nc  \cs_set_eq:NN }
@@ -2039,7 +2063,7 @@
   }
 \cs_set_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2
   {
-    \exp_args:Nx \__cs_parm_from_arg_count_test:nnF
+    \exp_args:Ne \__cs_parm_from_arg_count_test:nnF
       {
         \exp_after:wN \exp_not:n
         \if_case:w \int_eval:n {#2}
@@ -2085,7 +2109,7 @@
   {
     \__kernel_cs_parm_from_arg_count:nnF { \use:nnn #2 #1 } {#3}
       {
-        \msg_error:nnxx { kernel } { bad-number-of-arguments }
+        \msg_error:nnee { kernel } { bad-number-of-arguments }
           { \token_to_str:N #1 } { \int_eval:n {#3} }
         \use_none:n
       }
@@ -2105,7 +2129,7 @@
   }
 \cs_new_protected:Npn \__cs_generate_from_signature:NNn #1#2
   {
-    \use:x
+    \use:e
       {
         \__cs_generate_from_signature:nnNNNn
         \cs_split_function:N #2
@@ -2120,7 +2144,7 @@
           { \tl_map_function:nN {#2} \__cs_generate_from_signature:n }
         \tl_if_empty:oF \__cs_tmp:w
           {
-            \msg_error:nnxxx { kernel } { non-base-function }
+            \msg_error:nneee { kernel } { non-base-function }
               { \token_to_str:N #5 } {#2} { \__cs_tmp:w }
           }
         \cs_generate_from_arg_count:NNnn
@@ -2127,7 +2151,7 @@
           #5 #4 { \tl_count:n {#2} } {#6}
       }
       {
-        \msg_error:nnx { kernel } { missing-colon }
+        \msg_error:nne { kernel } { missing-colon }
           { \token_to_str:N #5 }
       }
   }
@@ -2137,28 +2161,40 @@
     \if:w T #1 \else: \if:w F #1 \else: #1 \fi: \fi: \fi: \fi:
   }
 \__cs_tmp:w { set }                  { Nn } { Npn }
+\__cs_tmp:w { set }                  { Ne } { Npe }
 \__cs_tmp:w { set }                  { Nx } { Npx }
 \__cs_tmp:w { set_nopar }            { Nn } { Npn }
+\__cs_tmp:w { set_nopar }            { Ne } { Npe }
 \__cs_tmp:w { set_nopar }            { Nx } { Npx }
 \__cs_tmp:w { set_protected }        { Nn } { Npn }
+\__cs_tmp:w { set_protected }        { Ne } { Npe }
 \__cs_tmp:w { set_protected }        { Nx } { Npx }
 \__cs_tmp:w { set_protected_nopar }  { Nn } { Npn }
+\__cs_tmp:w { set_protected_nopar }  { Ne } { Npe }
 \__cs_tmp:w { set_protected_nopar }  { Nx } { Npx }
 \__cs_tmp:w { gset }                 { Nn } { Npn }
+\__cs_tmp:w { gset }                 { Ne } { Npe }
 \__cs_tmp:w { gset }                 { Nx } { Npx }
 \__cs_tmp:w { gset_nopar }           { Nn } { Npn }
+\__cs_tmp:w { gset_nopar }           { Ne } { Npe }
 \__cs_tmp:w { gset_nopar }           { Nx } { Npx }
 \__cs_tmp:w { gset_protected }       { Nn } { Npn }
+\__cs_tmp:w { gset_protected }       { Ne } { Npe }
 \__cs_tmp:w { gset_protected }       { Nx } { Npx }
 \__cs_tmp:w { gset_protected_nopar } { Nn } { Npn }
+\__cs_tmp:w { gset_protected_nopar } { Ne } { Npe }
 \__cs_tmp:w { gset_protected_nopar } { Nx } { Npx }
 \__cs_tmp:w { new }                  { Nn } { Npn }
+\__cs_tmp:w { new }                  { Ne } { Npe }
 \__cs_tmp:w { new }                  { Nx } { Npx }
 \__cs_tmp:w { new_nopar }            { Nn } { Npn }
+\__cs_tmp:w { new_nopar }            { Ne } { Npe }
 \__cs_tmp:w { new_nopar }            { Nx } { Npx }
 \__cs_tmp:w { new_protected }        { Nn } { Npn }
+\__cs_tmp:w { new_protected }        { Ne } { Npe }
 \__cs_tmp:w { new_protected }        { Nx } { Npx }
 \__cs_tmp:w { new_protected_nopar }  { Nn } { Npn }
+\__cs_tmp:w { new_protected_nopar }  { Ne } { Npe }
 \__cs_tmp:w { new_protected_nopar }  { Nx } { Npx }
 \cs_set:Npn \__cs_tmp:w #1#2
   {
@@ -2169,28 +2205,40 @@
       }
   }
 \__cs_tmp:w { set }                  { n }
+\__cs_tmp:w { set }                  { e }
 \__cs_tmp:w { set }                  { x }
 \__cs_tmp:w { set_nopar }            { n }
+\__cs_tmp:w { set_nopar }            { e }
 \__cs_tmp:w { set_nopar }            { x }
 \__cs_tmp:w { set_protected }        { n }
+\__cs_tmp:w { set_protected }        { e }
 \__cs_tmp:w { set_protected }        { x }
 \__cs_tmp:w { set_protected_nopar }  { n }
+\__cs_tmp:w { set_protected_nopar }  { e }
 \__cs_tmp:w { set_protected_nopar }  { x }
 \__cs_tmp:w { gset }                 { n }
+\__cs_tmp:w { gset }                 { e }
 \__cs_tmp:w { gset }                 { x }
 \__cs_tmp:w { gset_nopar }           { n }
+\__cs_tmp:w { gset_nopar }           { e }
 \__cs_tmp:w { gset_nopar }           { x }
 \__cs_tmp:w { gset_protected }       { n }
+\__cs_tmp:w { gset_protected }       { e }
 \__cs_tmp:w { gset_protected }       { x }
 \__cs_tmp:w { gset_protected_nopar } { n }
+\__cs_tmp:w { gset_protected_nopar } { e }
 \__cs_tmp:w { gset_protected_nopar } { x }
 \__cs_tmp:w { new }                  { n }
+\__cs_tmp:w { new }                  { e }
 \__cs_tmp:w { new }                  { x }
 \__cs_tmp:w { new_nopar }            { n }
+\__cs_tmp:w { new_nopar }            { e }
 \__cs_tmp:w { new_nopar }            { x }
 \__cs_tmp:w { new_protected }        { n }
+\__cs_tmp:w { new_protected }        { e }
 \__cs_tmp:w { new_protected }        { x }
 \__cs_tmp:w { new_protected_nopar }  { n }
+\__cs_tmp:w { new_protected_nopar }  { e }
 \__cs_tmp:w { new_protected_nopar }  { x }
 \prg_new_conditional:Npnn \cs_if_eq:NN #1#2 { p , T , F , TF }
   {
@@ -2214,7 +2262,7 @@
     \cs_if_exist:NTF #1
       {#2}
       {
-        \msg_error:nnx { kernel } { variable-not-defined }
+        \msg_error:nne { kernel } { variable-not-defined }
           { \token_to_str:N #1 }
       }
   }
@@ -2246,7 +2294,7 @@
   {
     \group_begin:
       \int_set:Nn \tex_escapechar:D { `\\ }
-      \exp_args:NNx
+      \exp_args:NNe
     \group_end:
     #1 { \token_to_str:N #2 = \cs_meaning:N #2 }
   }
@@ -2256,7 +2304,7 @@
   { \__kernel_group_show:NN \int_zero:N 0 }
 \cs_new_protected:Npn \__kernel_group_show:NN #1#2
   {
-    \use:x
+    \use:e
       {
         #1 \tex_interactionmode:D
         \int_set:Nn \tex_tracingonline:D  {#2}
@@ -2271,7 +2319,7 @@
           { \int_use:N \tex_errorcontextlines:D }
       }
   }
-\use:x
+\use:e
   {
     \exp_not:n { \cs_new:Npn \__kernel_prefix_arg_replacement:wN #1 }
     \tl_to_str:n { macro : } \exp_not:n { #2 -> #3 \s__kernel_stop #4 }
@@ -2345,7 +2393,7 @@
 \use:nn { \cs_new_eq:NN \exp_stop_f: } { ~ }
 \cs_new_protected:Npn \::x #1 \::: #2#3
   {
-    \cs_set_nopar:Npx \l__exp_internal_tl
+    \cs_set_nopar:Npe \l__exp_internal_tl
       { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } }
     \l__exp_internal_tl
   }
@@ -2480,6 +2528,13 @@
     \exp_after:wN #3
     \exp_after:wN { \exp:w \__exp_eval_register:c {#4} }
   }
+\cs_new:Npn \exp_args:NNNe #1#2#3#4
+  {
+    \exp_after:wN #1
+    \exp_after:wN #2
+    \exp_after:wN #3
+    \tex_expanded:D { {#4} }
+  }
 \cs_new:Npn \exp_args:NcNc #1#2#3#4
   {
     \exp_after:wN #1
@@ -2525,7 +2580,7 @@
   }
 \cs_new_protected:Npn \::x_unbraced \::: #1#2
   {
-    \cs_set_nopar:Npx \l__exp_internal_tl { \exp_not:n {#1} #2 }
+    \cs_set_nopar:Npe \l__exp_internal_tl { \exp_not:n {#1} #2 }
     \l__exp_internal_tl
   }
 \cs_new:Npn \exp_last_unbraced:No #1#2 { \exp_after:wN #1 #2 }
@@ -2631,7 +2686,7 @@
 \cs_new_protected:Npn \cs_generate_variant:Nn #1#2
   {
     \__cs_generate_variant:N #1
-    \use:x
+    \use:e
       {
         \__cs_generate_variant:nnNN
           \cs_split_function:N #1
@@ -2643,18 +2698,18 @@
   }
 \cs_new_protected:Npn \cs_generate_variant:cn
   { \exp_args:Nc \cs_generate_variant:Nn }
-\cs_new_protected:Npx \__cs_generate_variant:N #1
+\cs_new_protected:Npe \__cs_generate_variant:N #1
   {
     \exp_not:N \exp_after:wN \exp_not:N \if_meaning:w
       \exp_not:N \exp_not:N #1 #1
-      \cs_set_eq:NN \exp_not:N \__cs_tmp:w \cs_new_protected:Npx
+      \cs_set_eq:NN \exp_not:N \__cs_tmp:w \cs_new_protected:Npe
     \exp_not:N \else:
       \exp_not:N \exp_after:wN \exp_not:N \__cs_generate_variant:ww
         \exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma }
           \s__cs_mark
-        \s__cs_mark \cs_new_protected:Npx
+        \s__cs_mark \cs_new_protected:Npe
         \tl_to_str:n { pr }
-        \s__cs_mark \cs_new:Npx
+        \s__cs_mark \cs_new:Npe
         \s__cs_stop
     \exp_not:N \fi:
   }
@@ -2669,7 +2724,7 @@
 \cs_new_protected:Npn \__cs_generate_variant:nnNN #1#2#3#4
   {
     \if_meaning:w \c_false_bool #3
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \__cs_use_none_delimit_by_q_recursion_stop:w
     \fi:
@@ -2680,7 +2735,7 @@
     \if_meaning:w \scan_stop: #4
       \exp_after:wN \__cs_use_none_delimit_by_q_recursion_stop:w
     \fi:
-    \use:x
+    \use:e
       {
         \exp_not:N \__cs_generate_variant:wwNN
         \__cs_generate_variant_loop:nNwN { }
@@ -2754,7 +2809,7 @@
     \exp_not:n
       {
         \s__cs_mark
-        \msg_error:nnxx { kernel } { variant-too-long }
+        \msg_error:nnee { kernel } { variant-too-long }
           {#5} { \token_to_str:N #3 }
         \use_none:nnn
         \s__cs_stop
@@ -2769,7 +2824,7 @@
     \exp_not:n
       {
         \s__cs_mark
-        \msg_error:nnxxxx { kernel } { invalid-variant }
+        \msg_error:nneeee { kernel } { invalid-variant }
           {#7} { \token_to_str:N #5 } {#1} {#2}
         \use_none:nnn
         \s__cs_stop
@@ -2783,7 +2838,7 @@
     #3 \s__cs_stop #4 #5 {#6} {#7}
     \exp_not:n
       {
-        \msg_error:nnxxxx
+        \msg_error:nneeee
           { kernel } { deprecated-variant }
           {#7} { \token_to_str:N #5 } {#1} {#2}
       }
@@ -2811,11 +2866,11 @@
         \group_end:
       }
   }
-\cs_new_protected:Npx \__cs_generate_internal_variant:n #1
+\cs_new_protected:Npe \__cs_generate_internal_variant:n #1
   {
     \exp_not:N \__cs_generate_internal_variant:wwnNwn
       #1 \s__cs_mark
-        { \cs_set_eq:NN \exp_not:N \__cs_tmp:w \cs_new_protected:Npx }
+        { \cs_set_eq:NN \exp_not:N \__cs_tmp:w \cs_new_protected:Npe }
         \cs_new_protected:cpn
         \use:x
       \token_to_str:N x \s__cs_mark
@@ -2848,7 +2903,7 @@
         ##3
         \s__cs_mark
         {
-          \use:x
+          \use:e
             {
               ##1 { exp_args:N ##3 }
                 { \__cs_generate_internal_variant_loop:n ##3 { : \use_i:nn } }
@@ -2920,7 +2975,7 @@
   }
 \cs_new_protected:Npn \prg_generate_conditional_variant:Nnn #1
   {
-    \use:x
+    \use:e
       {
         \__cs_generate_variant:nnNnn
           \cs_split_function:N #1
@@ -2929,7 +2984,7 @@
 \cs_new_protected:Npn \__cs_generate_variant:nnNnn #1#2#3#4#5
   {
     \if_meaning:w \c_false_bool #3
-      \msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nne { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \__cs_use_i_delimit_by_s_stop:nw
     \fi:
@@ -2949,7 +3004,7 @@
       \cs_if_exist_use:cTF { __cs_generate_variant_#1_form:nnn }
         { {#3} {#4} {#5} }
         {
-          \msg_error:nnxx
+          \msg_error:nnee
             { kernel } { conditional-form-unknown }
             {#1} { \token_to_str:c { #3 : #4 } }
         }
@@ -3137,11 +3192,11 @@
       \__kernel_tl_to_str:w \exp_after:wN {#1} \q_nil
   }
 \cs_new_protected:Npn \__kernel_quark_new_test:N #1
-  { \__quark_new_test_aux:Nx #1 { \__quark_module_name:N #1 } }
+  { \__quark_new_test_aux:Ne #1 { \__quark_module_name:N #1 } }
 \cs_new_protected:Npn \__quark_new_test_aux:Nn #1 #2
   {
     \if_meaning:w \q_nil #2 \q_nil
-      \msg_error:nnx { quark } { invalid-function }
+      \msg_error:nne { quark } { invalid-function }
         { \token_to_str:N #1 }
     \else:
       \__quark_new_test:Nccn #1
@@ -3148,7 +3203,7 @@
         { q__#2_recursion_tail } { q__#2_recursion_stop } { __#2 }
     \fi:
   }
-\cs_generate_variant:Nn \__quark_new_test_aux:Nn { Nx }
+\cs_generate_variant:Nn \__quark_new_test_aux:Nn { Ne }
 \cs_new_protected:Npn \__quark_new_test:NNNn #1
   {
     \exp_last_unbraced:Nf \__quark_new_test_aux:nnNNnnnn
@@ -3158,7 +3213,7 @@
 \cs_generate_variant:Nn \__quark_new_test:NNNn { Ncc }
 \cs_new_protected:Npn \__kernel_quark_new_conditional:Nn #1
   {
-    \__quark_new_conditional:Nxxn #1
+    \__quark_new_conditional:Neen #1
       { \__quark_quark_conditional_name:N #1 }
       { \__quark_module_name:N #1 }
   }
@@ -3165,11 +3220,11 @@
 \cs_new_protected:Npn \__quark_new_conditional:Nnnn #1#2#3#4
   {
     \if_meaning:w \q_nil #2 \q_nil
-      \msg_error:nnx { quark } { invalid-function }
+      \msg_error:nne { quark } { invalid-function }
         { \token_to_str:N #1 }
     \else:
       \if_meaning:w \q_nil #3 \q_nil
-        \msg_error:nnx { quark } { invalid-function }
+        \msg_error:nne { quark } { invalid-function }
           { \token_to_str:N #1 }
       \else:
         \exp_last_unbraced:Nf \__quark_new_test_aux:nnNNnnnn
@@ -3179,12 +3234,12 @@
       \fi:
     \fi:
   }
-\cs_generate_variant:Nn \__quark_new_conditional:Nnnn { Nxx }
+\cs_generate_variant:Nn \__quark_new_conditional:Nnnn { Nee }
 \cs_new_protected:Npn \__quark_new_test_aux:nnNNnnnn #1 #2 #3 #4 #5
   {
     \cs_if_exist_use:cTF { __quark_new_#5_#2:Nnnn } { #4 }
       {
-        \msg_error:nnxx { quark } { invalid-function }
+        \msg_error:nnee { quark } { invalid-function }
           { \token_to_str:N #4 } {#2}
         \use_none:nnn
       }
@@ -3312,7 +3367,7 @@
   {
     \tl_if_in:NnTF \g__scan_marks_tl { #1 }
       {
-        \msg_error:nnx { scanmark } { already-defined }
+        \msg_error:nne { scanmark } { already-defined }
           { \token_to_str:N #1 }
       }
       {
@@ -3330,8 +3385,8 @@
   }
 \cs_new:Npn \use_none_delimit_by_s_stop:w #1 \s_stop { }
 %% File: l3tl.dtx
-\cs_new_eq:NN \__kernel_tl_set:Nx  \cs_set_nopar:Npx
-\cs_new_eq:NN \__kernel_tl_gset:Nx \cs_gset_nopar:Npx
+\cs_new_eq:NN \__kernel_tl_set:Ne  \cs_set_nopar:Npe
+\cs_new_eq:NN \__kernel_tl_gset:Ne \cs_gset_nopar:Npe
 \cs_new_protected:Npn \tl_new:N #1
   {
     \__kernel_chk_if_free_cs:N #1
@@ -3341,15 +3396,10 @@
 \cs_new_protected:Npn \tl_const:Nn #1#2
   {
     \__kernel_chk_if_free_cs:N #1
-    \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} }
+    \cs_gset_nopar:Npe #1 { \__kernel_exp_not:w {#2} }
   }
-\cs_new_protected:Npn \tl_const:Nx #1#2
-  {
-    \__kernel_chk_if_free_cs:N #1
-    \cs_gset_nopar:Npx #1 {#2}
-  }
-\cs_generate_variant:Nn \tl_const:Nn { c }
-\cs_generate_variant:Nn \tl_const:Nx { c }
+\cs_generate_variant:Nn \tl_const:Nn { Ne , c , ce }
+\cs_generate_variant:Nn \tl_const:Nn { Nx , cx }
 \cs_new_protected:Npn \tl_clear:N  #1
   { \tex_let:D #1 = ~ \c_empty_tl }
 \cs_new_protected:Npn \tl_gclear:N #1
@@ -3370,7 +3420,7 @@
 \cs_generate_variant:Nn \tl_gset_eq:NN { cN, Nc, cc }
 \cs_new_protected:Npn \tl_concat:NNN #1#2#3
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#2}
         \__kernel_exp_not:w \exp_after:wN {#3}
@@ -3378,7 +3428,7 @@
   }
 \cs_new_protected:Npn \tl_gconcat:NNN #1#2#3
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#2}
         \__kernel_exp_not:w \exp_after:wN {#3}
@@ -3391,143 +3441,167 @@
 \tl_const:Nn \c_empty_tl { }
 \group_begin:
 \tex_catcode:D `- = 11 ~
-\tl_const:Nx \c_novalue_tl { - NoValue \token_to_str:N - }
+\tl_const:Ne \c_novalue_tl { - NoValue \token_to_str:N - }
 \group_end:
 \tl_const:Nn \c_space_tl { ~ }
 \cs_new_protected:Npn \tl_set:Nn #1#2
-  { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w {#2} } }
+  { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w {#2} } }
 \cs_new_protected:Npn \tl_set:No #1#2
-  { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
-\cs_new_protected:Npn \tl_set:Nx #1#2
-  { \__kernel_tl_set:Nx #1 {#2} }
+  { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
 \cs_new_protected:Npn \tl_gset:Nn #1#2
-  { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w {#2} } }
+  { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w {#2} } }
 \cs_new_protected:Npn \tl_gset:No #1#2
-  { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
-\cs_new_protected:Npn \tl_gset:Nx #1#2
-  { \__kernel_tl_gset:Nx #1 {#2} }
+  { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
 \cs_generate_variant:Nn \tl_set:Nn  {    NV , Nv , Ne , Nf }
 \cs_generate_variant:Nn \tl_set:Nn  { c, cV , cv , ce , cf }
-\cs_generate_variant:Nn \tl_set:Nx  { c }
 \cs_generate_variant:Nn \tl_set:No  { c }
+\cs_generate_variant:Nn \tl_set:Nn  { Nx , cx }
 \cs_generate_variant:Nn \tl_gset:Nn {    NV , Nv , Ne , Nf }
 \cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , ce , cf }
-\cs_generate_variant:Nn \tl_gset:Nx { c }
 \cs_generate_variant:Nn \tl_gset:No { c }
+\cs_generate_variant:Nn \tl_gset:Nn { Nx , cx }
 \cs_new_protected:Npn \tl_put_left:Nn #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
   }
 \cs_new_protected:Npn \tl_put_left:NV #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
   }
 \cs_new_protected:Npn \tl_put_left:Nv #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
   }
+\cs_new_protected:Npn \tl_put_left:Ne #1#2
+  {
+    \__kernel_tl_set:Ne #1
+      {
+        \__kernel_exp_not:w \tex_expanded:D { {#2} }
+        \__kernel_exp_not:w \exp_after:wN {#1}
+      }
+  }
 \cs_new_protected:Npn \tl_put_left:No #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#2}
         \__kernel_exp_not:w \exp_after:wN {#1}
       }
   }
-\cs_new_protected:Npn \tl_put_left:Nx #1#2
-  { \__kernel_tl_set:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } }
 \cs_new_protected:Npn \tl_gput_left:Nn #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
   }
 \cs_new_protected:Npn \tl_gput_left:NV #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
   }
 \cs_new_protected:Npn \tl_gput_left:Nv #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
   }
+\cs_new_protected:Npn \tl_gput_left:Ne #1#2
+  {
+    \__kernel_tl_gset:Ne #1
+      {
+        \__kernel_exp_not:w \tex_expanded:D { {#2} }
+        \__kernel_exp_not:w \exp_after:wN {#1}
+      }
+  }
 \cs_new_protected:Npn \tl_gput_left:No #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#2}
         \__kernel_exp_not:w \exp_after:wN {#1}
       }
   }
-\cs_new_protected:Npn \tl_gput_left:Nx #1#2
-  { \__kernel_tl_gset:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } }
 \cs_generate_variant:Nn \tl_put_left:Nn  { c }
 \cs_generate_variant:Nn \tl_put_left:NV  { c }
 \cs_generate_variant:Nn \tl_put_left:Nv  { c }
+\cs_generate_variant:Nn \tl_put_left:Ne  { c }
 \cs_generate_variant:Nn \tl_put_left:No  { c }
-\cs_generate_variant:Nn \tl_put_left:Nx  { c }
+\cs_generate_variant:Nn \tl_put_left:Nn  { Nx, cx }
 \cs_generate_variant:Nn \tl_gput_left:Nn { c }
 \cs_generate_variant:Nn \tl_gput_left:NV { c }
-\cs_generate_variant:Nn \tl_gput_left:NV { c }
+\cs_generate_variant:Nn \tl_gput_left:Nv { c }
+\cs_generate_variant:Nn \tl_gput_left:Ne { c }
 \cs_generate_variant:Nn \tl_gput_left:No { c }
-\cs_generate_variant:Nn \tl_gput_left:Nx { c }
+\cs_generate_variant:Nn \tl_gput_left:Nn { Nx , cx }
 \cs_new_protected:Npn \tl_put_right:Nn #1#2
-  { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
+  { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
 \cs_new_protected:Npn \tl_put_right:NV #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
   }
 \cs_new_protected:Npn \tl_put_right:Nv #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
   }
+\cs_new_protected:Npn \tl_put_right:Ne #1#2
+  {
+    \__kernel_tl_set:Ne #1
+      {
+        \__kernel_exp_not:w \exp_after:wN {#1}
+        \__kernel_exp_not:w \tex_expanded:D { {#2} }
+      }
+  }
 \cs_new_protected:Npn \tl_put_right:No #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#1}
         \__kernel_exp_not:w \exp_after:wN {#2}
       }
   }
-\cs_new_protected:Npn \tl_put_right:Nx #1#2
-  { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } }
 \cs_new_protected:Npn \tl_gput_right:Nn #1#2
-  { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
+  { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
 \cs_new_protected:Npn \tl_gput_right:NV #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
   }
 \cs_new_protected:Npn \tl_gput_right:Nv #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
   }
+\cs_new_protected:Npn \tl_gput_right:Ne #1#2
+  {
+    \__kernel_tl_gset:Ne #1
+      {
+        \__kernel_exp_not:w \exp_after:wN {#1}
+        \__kernel_exp_not:w \tex_expanded:D { {#2} }
+      }
+  }
 \cs_new_protected:Npn \tl_gput_right:No #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       {
         \__kernel_exp_not:w \exp_after:wN {#1}
         \__kernel_exp_not:w \exp_after:wN {#2}
       }
   }
-\cs_new_protected:Npn \tl_gput_right:Nx #1#2
-  { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } }
 \cs_generate_variant:Nn \tl_put_right:Nn  { c }
 \cs_generate_variant:Nn \tl_put_right:NV  { c }
 \cs_generate_variant:Nn \tl_put_right:Nv  { c }
+\cs_generate_variant:Nn \tl_put_right:Ne  { c }
 \cs_generate_variant:Nn \tl_put_right:No  { c }
-\cs_generate_variant:Nn \tl_put_right:Nx  { c }
+\cs_generate_variant:Nn \tl_put_right:Nn  { Nx , cx }
 \cs_generate_variant:Nn \tl_gput_right:Nn { c }
 \cs_generate_variant:Nn \tl_gput_right:NV { c }
 \cs_generate_variant:Nn \tl_gput_right:Nv { c }
+\cs_generate_variant:Nn \tl_gput_right:Ne { c }
 \cs_generate_variant:Nn \tl_gput_right:No { c }
-\cs_generate_variant:Nn \tl_gput_right:Nx { c }
+\cs_generate_variant:Nn \tl_gput_right:Nn { Nx, cx }
 \quark_new:N \q__tl_nil
 \quark_new:N \q__tl_mark
 \quark_new:N \q__tl_stop
@@ -3535,7 +3609,7 @@
 \quark_new:N \q__tl_recursion_stop
 \__kernel_quark_new_test:N \__tl_if_recursion_tail_break:nN
 \__kernel_quark_new_conditional:Nn \__tl_quark_if_nil:n { TF }
-\tl_const:Nx \c__tl_rescan_marker_tl { : \token_to_str:N : }
+\tl_const:Ne \c__tl_rescan_marker_tl { : \token_to_str:N : }
 \cs_new_protected:Npn \tl_rescan:nn #1#2
   {
     \tl_set_rescan:Nnn \l__tl_internal_a_tl {#1} {#2}
@@ -3576,10 +3650,10 @@
     \group_end:
     #1 #2 {#3}
   }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  {     NnV , Nno , Nnx }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  { c , cnV , cno , cnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn {     NnV , Nno , Nnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cnV , cno , cnx }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn  { NnV , Nne , c , cnV , cne }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn  { Nno , Nnx , cno , cnx }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn { NnV , Nne , c , cnV , cne }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nno , Nnx , cno , cnx }
 \cs_new_protected:Npn \__tl_set_rescan:nNN #1
   {
     \int_compare:nNnTF \tex_newlinechar:D < 0
@@ -3636,26 +3710,34 @@
   \c__tl_rescan_marker_tl #2
   { \use_i:nn \exp_end: #1 }
 \cs_new_protected:Npn \tl_replace_once:Nnn
-  { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \__kernel_tl_set:Nx  }
+  { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \tl_greplace_once:Nnn
-  { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \__kernel_tl_gset:Nx }
+  { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_wrap:w \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \tl_replace_all:Nnn
-  { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_set:Nx  }
+  { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \tl_greplace_all:Nnn
-  { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_gset:Nx }
+  { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_gset:Ne }
 \cs_generate_variant:Nn \tl_replace_once:Nnn
-  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+  { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_replace_once:Nnn
+  { Nx , Nnx , Nxx , cxn , cnx , cxx }
 \cs_generate_variant:Nn \tl_greplace_once:Nnn
-  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+  { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_greplace_once:Nnn
+  { Nx , Nnx , Nxx , cxn , cnx , cxx }
 \cs_generate_variant:Nn \tl_replace_all:Nnn
-  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+  { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_replace_all:Nnn
+  { Nx , Nnx , Nxx , cxn , cnx , cxx }
 \cs_generate_variant:Nn \tl_greplace_all:Nnn
-  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+  { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_greplace_all:Nnn
+  { Nx , Nnx , Nxx , cxn , cnx , cxx }
 \cs_new_protected:Npn \__tl_replace:NnNNNnn #1#2#3#4#5#6#7
   {
     \tl_if_empty:nTF {#6}
       {
-        \msg_error:nnx { kernel } { empty-search-pattern }
+        \msg_error:nne { kernel } { empty-search-pattern }
           { \tl_to_str:n {#7} }
       }
       {
@@ -3684,7 +3766,7 @@
     \group_align_safe_begin:
     \cs_set:Npn \__tl_replace_wrap:w ##1 #1 ##2
       { \__kernel_exp_not:w \exp_after:wN { \use_none:nn ##1 } ##2 }
-    \cs_set:Npx \__tl_replace_next:w ##1 #5
+    \cs_set:Npe \__tl_replace_next:w ##1 #5
       {
         \exp_not:N \__tl_replace_wrap:w ##1
         \exp_not:n { #1 }
@@ -3711,14 +3793,16 @@
   { \tl_replace_once:Nnn #1 {#2} { } }
 \cs_new_protected:Npn \tl_gremove_once:Nn #1#2
   { \tl_greplace_once:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_once:Nn  { NV , Nx , c , cV , cx }
-\cs_generate_variant:Nn \tl_gremove_once:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \tl_remove_once:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \tl_gremove_once:Nn { NV , Ne , c , cV , ce }
 \cs_new_protected:Npn \tl_remove_all:Nn #1#2
   { \tl_replace_all:Nnn #1 {#2} { } }
 \cs_new_protected:Npn \tl_gremove_all:Nn #1#2
   { \tl_greplace_all:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_all:Nn  { NV , Nx , c , cV , cx }
-\cs_generate_variant:Nn \tl_gremove_all:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \tl_remove_all:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \tl_remove_all:Nn  { Nx , cx }
+\cs_generate_variant:Nn \tl_gremove_all:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , cx }
 \prg_new_conditional:Npnn \tl_if_empty:N #1 { p , T , F , TF }
   {
     \if_meaning:w #1 \c_empty_tl
@@ -3794,7 +3878,9 @@
       \prg_return_false:
     \fi:
   }
-\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { V , nV , x , nx } { TF , T , F }
+\prg_generate_conditional_variant:Nnn \tl_if_eq:nn
+  { nV , ne , nx , e , ee , x , xx }
+  { TF , T , F }
 \cs_new_protected:Npn \tl_if_in:NnT  { \exp_args:No \tl_if_in:nnT  }
 \cs_new_protected:Npn \tl_if_in:NnF  { \exp_args:No \tl_if_in:nnF  }
 \cs_new_protected:Npn \tl_if_in:NnTF { \exp_args:No \tl_if_in:nnTF }
@@ -3829,6 +3915,7 @@
 \cs_new:Npn \tl_if_single:NT  { \exp_args:No \tl_if_single:nT  }
 \cs_new:Npn \tl_if_single:NF  { \exp_args:No \tl_if_single:nF  }
 \cs_new:Npn \tl_if_single:NTF { \exp_args:No \tl_if_single:nTF }
+\prg_generate_conditional_variant:Nnn \tl_if_single:N {c} { p , T , F , TF }
 \prg_new_conditional:Npnn \tl_if_single:n #1 { p , T , F , TF }
   {
     \if:w \scan_stop: \exp_after:wN \__tl_if_single:nnw
@@ -3990,14 +4077,14 @@
       { \__tl_trim_mark: #1 }
       { \__kernel_exp_not:w \exp_after:wN }
   }
-\cs_generate_variant:Nn \tl_trim_spaces:n { o }
+\cs_generate_variant:Nn \tl_trim_spaces:n { V , v , e , o }
 \cs_new:Npn \tl_trim_spaces_apply:nN #1#2
   { \__tl_trim_spaces:nn { \__tl_trim_mark: #1 } { \exp_args:No #2 } }
 \cs_generate_variant:Nn \tl_trim_spaces_apply:nN { o }
 \cs_new_protected:Npn \tl_trim_spaces:N #1
-  { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
+  { \__kernel_tl_set:Ne #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
 \cs_new_protected:Npn \tl_gtrim_spaces:N #1
-  { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
+  { \__kernel_tl_gset:Ne #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
 \cs_generate_variant:Nn \tl_trim_spaces:N  { c }
 \cs_generate_variant:Nn \tl_gtrim_spaces:N { c }
 \cs_set_protected:Npn \__tl_tmp:w #1
@@ -4201,7 +4288,7 @@
       {##1}
   }
 \__tl_tmp:w { ~ }
-\exp_args:Nnx \use:n { \cs_new:Npn \__tl_act_loop:w #1 \s__tl_act_stop }
+\exp_args:Nne \use:n { \cs_new:Npn \__tl_act_loop:w #1 \s__tl_act_stop }
   {
     \exp_not:o { \__tl_act_if_head_is_space:nTF {#1} }
       \exp_not:N \__tl_act_space:wwNNN
@@ -4267,9 +4354,9 @@
 \cs_new:Npn \__tl_reverse_space:
   { \__tl_act_reverse_output:n { ~ } }
 \cs_new_protected:Npn \tl_reverse:N #1
-  { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
+  { \__kernel_tl_set:Ne #1 { \exp_args:No \tl_reverse:n { #1 } } }
 \cs_new_protected:Npn \tl_greverse:N #1
-  { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
+  { \__kernel_tl_gset:Ne #1 { \exp_args:No \tl_reverse:n { #1 } } }
 \cs_generate_variant:Nn \tl_reverse:N  { c }
 \cs_generate_variant:Nn \tl_greverse:N { c }
 \cs_new:Npn \tl_item:nn #1#2
@@ -4415,7 +4502,7 @@
               { \token_to_str:N #2 = \__kernel_exp_not:w \exp_after:wN {#2} }
           }
           {
-            \msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nneee { kernel } { bad-type }
               { \token_to_str:N #2 } { \token_to_meaning:N #2 } { tl }
           }
       }
@@ -4422,7 +4509,7 @@
   }
 \cs_new_protected:Npn \tl_show:n #1
   { \iow_wrap:nnnN { >~ \tl_to_str:n {#1} . } { } { } \__tl_show:n }
-\cs_generate_variant:Nn \tl_show:n { x }
+\cs_generate_variant:Nn \tl_show:n { e , x }
 \cs_new_protected:Npn \__tl_show:n #1
   {
     \tl_set:Nf \l__tl_internal_a_tl { \__tl_show:w #1 \s__tl_stop }
@@ -4438,7 +4525,7 @@
 \cs_new:Npn \__tl_show:w #1 > #2 . \s__tl_stop {#2}
 \cs_new_protected:Npn \tl_log:n #1
   { \iow_wrap:nnnN { > ~ \tl_to_str:n {#1} . } { } { } \iow_log:n }
-\cs_generate_variant:Nn \tl_log:n { x }
+\cs_generate_variant:Nn \tl_log:n { e , x }
 \cs_new_protected:Npn \__kernel_chk_tl_type:NnnT #1#2#3#4
   {
     \__kernel_chk_defined:NT #1
@@ -4446,17 +4533,17 @@
         \exp_args:Nf \tl_if_empty:nTF
           { \cs_prefix_spec:N #1 \cs_parameter_spec:N #1 }
           {
-            \tl_set:Nx \l__tl_internal_a_tl {#3}
+            \tl_set:Ne \l__tl_internal_a_tl {#3}
             \tl_if_eq:NNTF #1 \l__tl_internal_a_tl
               {#4}
               {
-                \msg_error:nnxxxx { kernel } { bad-type }
+                \msg_error:nneeee { kernel } { bad-type }
                   { \token_to_str:N #1 } { \tl_to_str:N #1 }
                   {#2} { \tl_to_str:N \l__tl_internal_a_tl }
               }
           }
           {
-            \msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nneee { kernel } { bad-type }
               { \token_to_str:N #1 } { \token_to_meaning:N #1 } {#2}
           }
       }
@@ -4510,12 +4597,13 @@
     {
       \tl_if_blank:nF {#1}
         {
-          \cs_new_protected:cpx { str_ #1 :Nn } ##1##2
+          \cs_new_protected:cpe { str_ #1 :Nn } ##1##2
             {
-              \exp_not:c { tl_ #1 :Nx } ##1
+              \exp_not:c { tl_ #1 :Ne } ##1
                 { \exp_not:N \tl_to_str:n {##2} }
             }
-          \cs_generate_variant:cn { str_ #1 :Nn } { NV , Nx , cn , cV , cx }
+          \cs_generate_variant:cn { str_ #1 :Nn }
+            { NV , Ne , Nx , cn , cV , ce , cx }
           \__str_tmp:n
         }
     }
@@ -4530,13 +4618,13 @@
     { }
 \group_end:
 \cs_new_protected:Npn \str_replace_once:Nnn
-  { \__str_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Nx  }
+  { \__str_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \str_greplace_once:Nnn
-  { \__str_replace:NNNnn \prg_do_nothing: \__kernel_tl_gset:Nx }
+  { \__str_replace:NNNnn \prg_do_nothing: \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \str_replace_all:Nnn
-  { \__str_replace:NNNnn \__str_replace_next:w \__kernel_tl_set:Nx  }
+  { \__str_replace:NNNnn \__str_replace_next:w \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \str_greplace_all:Nnn
-  { \__str_replace:NNNnn \__str_replace_next:w \__kernel_tl_gset:Nx }
+  { \__str_replace:NNNnn \__str_replace_next:w \__kernel_tl_gset:Ne }
 \cs_generate_variant:Nn \str_replace_once:Nnn  { c }
 \cs_generate_variant:Nn \str_greplace_once:Nnn { c }
 \cs_generate_variant:Nn \str_replace_all:Nnn   { c }
@@ -4545,10 +4633,10 @@
   {
     \tl_if_empty:nTF {#4}
       {
-        \msg_error:nnx { kernel } { empty-search-pattern } {#5}
+        \msg_error:nne { kernel } { empty-search-pattern } {#5}
       }
       {
-        \use:x
+        \use:e
           {
             \exp_not:n { \__str_replace_aux:NNNnnn #1 #2 #3 }
               { \tl_to_str:N #3 }
@@ -4625,7 +4713,7 @@
   { c , Nc , cc } { T , F , TF , p }
 \prg_new_protected_conditional:Npnn \str_if_in:Nn #1#2 { T , F , TF }
   {
-    \use:x
+    \use:e
       { \tl_if_in:nnTF { \tl_to_str:N #1 } { \tl_to_str:n {#2} } }
       { \prg_return_true: } { \prg_return_false: }
   }
@@ -4633,7 +4721,7 @@
   { c } { T , F , TF }
 \prg_new_protected_conditional:Npnn \str_if_in:nn #1#2 { T , F , TF }
   {
-    \use:x
+    \use:e
       { \tl_if_in:nnTF { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } }
       { \prg_return_true: } { \prg_return_false: }
   }
@@ -4727,7 +4815,7 @@
     \int_gincr:N \g__kernel_prg_map_int
     \cs_gset_protected:cpn
       { __str_map_ \int_use:N \g__kernel_prg_map_int :w } ##1 {#2}
-    \use:x
+    \use:e
       {
         \exp_not:N \__str_map_inline:NN
         \exp_not:c { __str_map_ \int_use:N \g__kernel_prg_map_int :w }
@@ -4748,7 +4836,7 @@
   }
 \cs_new_protected:Npn \str_map_variable:nNn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \exp_not:n { \__str_map_variable:NnN #2 {#3} }
         \__kernel_str_to_other_fast:n {#1}
@@ -5098,7 +5186,7 @@
   \cs_new:Npn \__str_change_case_codepoint:nN #1#2
     { \__str_change_case_char:fnn { \int_eval:n {`#2} } {#1} {#2} }
 \else:
-    \cs_new:Npx \__str_change_case_codepoint:nN #1#2
+    \cs_new:Npe \__str_change_case_codepoint:nN #1#2
       {
         \exp_not:N \int_compare:nNnTF {`#2} > { "80 }
           {
@@ -5186,19 +5274,19 @@
   }
 \cs_new:Npn \str_mdfive_hash:n #1 { \tex_mdfivesum:D { \tl_to_str:n {#1} } }
 \cs_new:Npn \str_mdfive_hash:e #1 { \tex_mdfivesum:D {#1} }
-\str_const:Nx \c_ampersand_str   { \cs_to_str:N \& }
-\str_const:Nx \c_atsign_str      { \cs_to_str:N \@ }
-\str_const:Nx \c_backslash_str   { \cs_to_str:N \\ }
-\str_const:Nx \c_left_brace_str  { \cs_to_str:N \{ }
-\str_const:Nx \c_right_brace_str { \cs_to_str:N \} }
-\str_const:Nx \c_circumflex_str  { \cs_to_str:N \^ }
-\str_const:Nx \c_colon_str       { \cs_to_str:N \: }
-\str_const:Nx \c_dollar_str      { \cs_to_str:N \$ }
-\str_const:Nx \c_hash_str        { \cs_to_str:N \# }
-\str_const:Nx \c_percent_str     { \cs_to_str:N \% }
-\str_const:Nx \c_tilde_str       { \cs_to_str:N \~ }
-\str_const:Nx \c_underscore_str  { \cs_to_str:N \_ }
-\str_const:Nx \c_zero_str        { 0 }
+\str_const:Ne \c_ampersand_str   { \cs_to_str:N \& }
+\str_const:Ne \c_atsign_str      { \cs_to_str:N \@ }
+\str_const:Ne \c_backslash_str   { \cs_to_str:N \\ }
+\str_const:Ne \c_left_brace_str  { \cs_to_str:N \{ }
+\str_const:Ne \c_right_brace_str { \cs_to_str:N \} }
+\str_const:Ne \c_circumflex_str  { \cs_to_str:N \^ }
+\str_const:Ne \c_colon_str       { \cs_to_str:N \: }
+\str_const:Ne \c_dollar_str      { \cs_to_str:N \$ }
+\str_const:Ne \c_hash_str        { \cs_to_str:N \# }
+\str_const:Ne \c_percent_str     { \cs_to_str:N \% }
+\str_const:Ne \c_tilde_str       { \cs_to_str:N \~ }
+\str_const:Ne \c_underscore_str  { \cs_to_str:N \_ }
+\str_const:Ne \c_zero_str        { 0 }
 \str_new:N \l_tmpa_str
 \str_new:N \l_tmpb_str
 \str_new:N \g_tmpa_str
@@ -5258,22 +5346,22 @@
 \cs_new_eq:NN \seq_gset_eq:cc \tl_gset_eq:cc
 \cs_new_protected:Npn \seq_set_from_clist:NN #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \s__seq \clist_map_function:NN #2 \__seq_wrap_item:n }
   }
 \cs_new_protected:Npn \seq_set_from_clist:Nn #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       { \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n }
   }
 \cs_new_protected:Npn \seq_gset_from_clist:NN #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \s__seq \clist_map_function:NN #2 \__seq_wrap_item:n }
   }
 \cs_new_protected:Npn \seq_gset_from_clist:Nn #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       { \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n }
   }
 \cs_generate_variant:Nn \seq_set_from_clist:NN  {     Nc }
@@ -5284,18 +5372,18 @@
 \cs_generate_variant:Nn \seq_gset_from_clist:Nn { c      }
 \cs_new_protected:Npn \seq_const_from_clist:Nn #1#2
   {
-    \tl_const:Nx #1
+    \tl_const:Ne #1
       { \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n }
   }
 \cs_generate_variant:Nn \seq_const_from_clist:Nn { c }
 \cs_new_protected:Npn \seq_set_split:Nnn
-  { \__seq_set_split:NNNnn \__kernel_tl_set:Nx \tl_trim_spaces:n }
+  { \__seq_set_split:NNNnn \__kernel_tl_set:Ne \tl_trim_spaces:n }
 \cs_new_protected:Npn \seq_gset_split:Nnn
-  { \__seq_set_split:NNNnn \__kernel_tl_gset:Nx \tl_trim_spaces:n }
+  { \__seq_set_split:NNNnn \__kernel_tl_gset:Ne \tl_trim_spaces:n }
 \cs_new_protected:Npn \seq_set_split_keep_spaces:Nnn
-  { \__seq_set_split:NNNnn \__kernel_tl_set:Nx \exp_not:n }
+  { \__seq_set_split:NNNnn \__kernel_tl_set:Ne \exp_not:n }
 \cs_new_protected:Npn \seq_gset_split_keep_spaces:Nnn
-  { \__seq_set_split:NNNnn \__kernel_tl_gset:Nx \exp_not:n }
+  { \__seq_set_split:NNNnn \__kernel_tl_gset:Ne \exp_not:n }
 \cs_new_protected:Npn \__seq_set_split:NNNnn #1#2#3#4#5
   {
     \tl_if_empty:nTF {#4}
@@ -5315,7 +5403,7 @@
             \__seq_set_split_end:
             \__seq_set_split:Nw #2 \prg_do_nothing:
           }
-        \__kernel_tl_set:Nx \l__seq_internal_a_tl { \l__seq_internal_a_tl }
+        \__kernel_tl_set:Ne \l__seq_internal_a_tl { \l__seq_internal_a_tl }
       }
     #1 #3 { \s__seq \l__seq_internal_a_tl }
   }
@@ -5327,8 +5415,10 @@
   }
 \cs_new:Npn \__seq_set_split:w #1 \__seq_set_split_end:
   { \__seq_wrap_item:n {#1} }
-\cs_generate_variant:Nn \seq_set_split:Nnn  { NV , NnV , NVV , Nnx , Nxx }
-\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nnx , Nxx }
+\cs_generate_variant:Nn \seq_set_split:Nnn  { NV , NnV , NVV , Nne , Nee }
+\cs_generate_variant:Nn \seq_set_split:Nnn  { Nnx , Nxx }
+\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nne , Nee }
+\cs_generate_variant:Nn \seq_gset_split:Nnn { Nnx , Nxx }
 \cs_generate_variant:Nn \seq_set_split_keep_spaces:Nnn  { NnV }
 \cs_generate_variant:Nn \seq_gset_split_keep_spaces:Nnn { NnV }
 \cs_new_protected:Npn \seq_concat:NNN #1#2#3
@@ -5343,7 +5433,7 @@
   { TF , T , F , p }
 \cs_new_protected:Npn \seq_put_left:Nn #1#2
   {
-    \__kernel_tl_set:Nx #1
+    \__kernel_tl_set:Ne #1
       {
         \exp_not:n { \s__seq \__seq_item:n {#2} }
         \exp_not:f { \exp_after:wN \__seq_put_left_aux:w #1 }
@@ -5351,7 +5441,7 @@
   }
 \cs_new_protected:Npn \seq_gput_left:Nn #1#2
   {
-    \__kernel_tl_gset:Nx #1
+    \__kernel_tl_gset:Ne #1
       {
         \exp_not:n { \s__seq \__seq_item:n {#2} }
         \exp_not:f { \exp_after:wN \__seq_put_left_aux:w #1 }
@@ -5358,18 +5448,18 @@
       }
   }
 \cs_new:Npn \__seq_put_left_aux:w \s__seq { \exp_stop_f: }
-\cs_generate_variant:Nn \seq_put_left:Nn  {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_put_left:Nn  { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \seq_gput_left:Nn  {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_gput_left:Nn  { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \seq_put_left:Nn  {     NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_put_left:Nn  { c , cV , cv , ce , co ,cx }
+\cs_generate_variant:Nn \seq_gput_left:Nn {     NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_gput_left:Nn { c , cV , cv , ce , co , cx }
 \cs_new_protected:Npn \seq_put_right:Nn #1#2
   { \tl_put_right:Nn #1 { \__seq_item:n {#2} } }
 \cs_new_protected:Npn \seq_gput_right:Nn #1#2
   { \tl_gput_right:Nn #1 { \__seq_item:n {#2} } }
-\cs_generate_variant:Nn \seq_gput_right:Nn {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \seq_put_right:Nn {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_put_right:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \seq_put_right:Nn  {     NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_put_right:Nn  { c , cV , cv , ce , co , cx }
+\cs_generate_variant:Nn \seq_gput_right:Nn {     NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , ce , co , cx }
 \cs_new:Npn \__seq_wrap_item:n #1 { \exp_not:n { \__seq_item:n {#1} } }
 \seq_new:N \l__seq_remove_seq
 \cs_new_protected:Npn \seq_remove_duplicates:N
@@ -5389,9 +5479,9 @@
 \cs_generate_variant:Nn \seq_remove_duplicates:N  { c }
 \cs_generate_variant:Nn \seq_gremove_duplicates:N { c }
 \cs_new_protected:Npn \seq_remove_all:Nn
-  { \__seq_remove_all_aux:NNn \__kernel_tl_set:Nx }
+  { \__seq_remove_all_aux:NNn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gremove_all:Nn
-  { \__seq_remove_all_aux:NNn \__kernel_tl_gset:Nx }
+  { \__seq_remove_all_aux:NNn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__seq_remove_all_aux:NNn #1#2#3
   {
     \__seq_push_item_def:n
@@ -5412,19 +5502,21 @@
     #1 #2 {#2}
     \__seq_pop_item_def:
   }
-\cs_generate_variant:Nn \seq_remove_all:Nn  { NV , Nx , c , cV , cx }
-\cs_generate_variant:Nn \seq_gremove_all:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \seq_remove_all:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \seq_remove_all:Nn  { Nx , cx }
+\cs_generate_variant:Nn \seq_gremove_all:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \seq_gremove_all:Nn { Nx , cx }
 \cs_new_eq:NN \__seq_int_eval:w \tex_numexpr:D
 \cs_new_protected:Npn \seq_set_item:Nnn #1#2#3
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_i:nn }
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Ne \use_i:nn }
 \cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Ne \use_i:nn }
 \cs_generate_variant:Nn \seq_set_item:Nnn { c }
 \cs_generate_variant:Nn \seq_gset_item:Nnn { c }
 \prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Ne \use_ii:nn }
 \prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Ne \use_ii:nn }
 \prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
 \prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
 \cs_new_protected:Npn \__seq_set_item:NnnNN #1#2#3
@@ -5450,7 +5542,7 @@
   {
     #6
       {
-        \msg_error:nnxxx { seq } { item-too-large }
+        \msg_error:nneee { seq } { item-too-large }
           { \token_to_str:N #3 } {#2} {#1}
       }
       { \prg_return_false: }
@@ -5481,9 +5573,9 @@
     #5 #2
   }
 \cs_new_protected:Npn \seq_reverse:N
-  { \__seq_reverse:NN \__kernel_tl_set:Nx }
+  { \__seq_reverse:NN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_greverse:N
-  { \__seq_reverse:NN \__kernel_tl_gset:Nx }
+  { \__seq_reverse:NN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__seq_reverse:NN #1 #2
   {
     \cs_set_eq:NN \__seq_tmp:w \__seq_item:n
@@ -5515,7 +5607,7 @@
   {
     \int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int
       {
-        \msg_error:nnx { seq } { shuffle-too-large }
+        \msg_error:nne { seq } { shuffle-too-large }
           { \token_to_str:N #2 }
       }
       {
@@ -5528,7 +5620,7 @@
           \seq_gclear:N \g__seq_internal_seq
           \int_step_inline:nn \l__seq_internal_a_int
             {
-              \seq_gput_right:Nx \g__seq_internal_seq
+              \seq_gput_right:Ne \g__seq_internal_seq
                 { \tex_the:D \tex_toks:D ##1 }
             }
         \group_end:
@@ -5567,7 +5659,7 @@
 \cs_new:Npn \__seq_if_in:
   { \prg_break:n { \group_end: \prg_return_true: } }
 \prg_generate_conditional_variant:Nnn \seq_if_in:Nn
-  { NV , Nv , No , Nx , c , cV , cv , co , cx } { T , F , TF }
+  { NV , Nv , Ne , No , Nx , c , cV , cv , ce , co , cx } { T , F , TF }
 \cs_new_protected:Npn \__seq_pop:NNNN #1#2#3#4
   {
     \if_meaning:w #3 \c_empty_seq
@@ -5588,7 +5680,7 @@
   }
 \cs_new_protected:Npn \seq_get_left:NN #1#2
   {
-    \__kernel_tl_set:Nx #2
+    \__kernel_tl_set:Ne #2
       {
         \exp_after:wN \__seq_get_left:wnw
         #1 \__seq_item:n { \q_no_value } \s__seq_stop
@@ -5613,7 +5705,7 @@
 \cs_generate_variant:Nn \seq_gpop_left:NN { c }
 \cs_new_protected:Npn \seq_get_right:NN #1#2
   {
-    \__kernel_tl_set:Nx #2
+    \__kernel_tl_set:Ne #2
       {
         \exp_after:wN \use_i_ii:nnn
         \exp_after:wN \__seq_get_right_loop:nw
@@ -5630,9 +5722,9 @@
 \cs_new:Npn \__seq_get_right_end:NnN #1#2#3 { \exp_not:n {#2} }
 \cs_generate_variant:Nn \seq_get_right:NN { c }
 \cs_new_protected:Npn \seq_pop_right:NN
-  { \__seq_pop:NNNN \__seq_pop_right:NNN \__kernel_tl_set:Nx }
+  { \__seq_pop:NNNN \__seq_pop_right:NNN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gpop_right:NN
-  { \__seq_pop:NNNN \__seq_pop_right:NNN \__kernel_tl_gset:Nx }
+  { \__seq_pop:NNNN \__seq_pop_right:NNN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__seq_pop_right:NNN #1#2#3
   {
     \cs_set_eq:NN \__seq_tmp:w \__seq_item:n
@@ -5644,7 +5736,7 @@
         #2
         {
           \if_false: { \fi: }
-          \__kernel_tl_set:Nx #3
+          \__kernel_tl_set:Ne #3
         }
         { } \use_none:nn
     \cs_set_eq:NN \__seq_item:n \__seq_tmp:w
@@ -5672,10 +5764,10 @@
   { \__seq_pop_TF:NNNN \__seq_pop_left:NNN \tl_gset:Nn #1 #2 }
 \prg_new_protected_conditional:Npnn \seq_pop_right:NN #1#2
   { T , F , TF }
-  { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \__kernel_tl_set:Nx #1 #2 }
+  { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \__kernel_tl_set:Ne #1 #2 }
 \prg_new_protected_conditional:Npnn \seq_gpop_right:NN #1#2
   { T , F , TF }
-  { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \__kernel_tl_gset:Nx #1 #2 }
+  { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \__kernel_tl_gset:Ne #1 #2 }
 \prg_generate_conditional_variant:Nnn \seq_pop_left:NN { c }
   { T , F , TF }
 \prg_generate_conditional_variant:Nnn \seq_gpop_left:NN { c }
@@ -5747,10 +5839,10 @@
     \__seq_push_item_def:
     \cs_gset:Npn \__seq_item:n ##1
   }
-\cs_new_protected:Npn \__seq_push_item_def:x
+\cs_new_protected:Npn \__seq_push_item_def:e
   {
     \__seq_push_item_def:
-    \cs_gset:Npx \__seq_item:n ##1
+    \cs_gset:Npe \__seq_item:n ##1
   }
 \cs_new_protected:Npn \__seq_push_item_def:
   {
@@ -5795,7 +5887,7 @@
   }
 \cs_new_protected:Npn \seq_map_variable:NNn #1#2#3
   {
-    \__seq_push_item_def:x
+    \__seq_push_item_def:e
       {
         \tl_set:Nn \exp_not:N #2 {##1}
         \exp_not:n {#3}
@@ -5861,9 +5953,9 @@
   }
 \cs_generate_variant:Nn \seq_map_pairwise_function:NNN { Nc , c , cc }
 \cs_new_protected:Npn \seq_set_map_x:NNn
-  { \__seq_set_map_x:NNNn \__kernel_tl_set:Nx }
+  { \__seq_set_map_x:NNNn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gset_map_x:NNn
-  { \__seq_set_map_x:NNNn \__kernel_tl_gset:Nx }
+  { \__seq_set_map_x:NNNn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__seq_set_map_x:NNNn #1#2#3#4
   {
     \__seq_push_item_def:n { \exp_not:N \__seq_item:n {#4} }
@@ -5871,9 +5963,9 @@
     \__seq_pop_item_def:
   }
 \cs_new_protected:Npn \seq_set_map:NNn
-  { \__seq_set_map:NNNn \__kernel_tl_set:Nx }
+  { \__seq_set_map:NNNn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gset_map:NNn
-  { \__seq_set_map:NNNn \__kernel_tl_gset:Nx }
+  { \__seq_set_map:NNNn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__seq_set_map:NNNn #1#2#3#4
   {
     \__seq_push_item_def:n { \exp_not:n { \__seq_item:n {#4} } }
@@ -5941,26 +6033,12 @@
 \cs_new:Npn \seq_use:Nn #1#2
   { \seq_use:Nnnn #1 {#2} {#2} {#2} }
 \cs_generate_variant:Nn \seq_use:Nn { c }
-\cs_new_eq:NN \seq_push:Nn  \seq_put_left:Nn
-\cs_new_eq:NN \seq_push:NV  \seq_put_left:NV
-\cs_new_eq:NN \seq_push:Nv  \seq_put_left:Nv
-\cs_new_eq:NN \seq_push:No  \seq_put_left:No
-\cs_new_eq:NN \seq_push:Nx  \seq_put_left:Nx
-\cs_new_eq:NN \seq_push:cn  \seq_put_left:cn
-\cs_new_eq:NN \seq_push:cV  \seq_put_left:cV
-\cs_new_eq:NN \seq_push:cv  \seq_put_left:cv
-\cs_new_eq:NN \seq_push:co  \seq_put_left:co
-\cs_new_eq:NN \seq_push:cx  \seq_put_left:cx
+\cs_new_eq:NN \seq_push:Nn \seq_put_left:Nn
+\cs_generate_variant:Nn \seq_push:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \seq_push:Nn { No , Nx , co , cx }
 \cs_new_eq:NN \seq_gpush:Nn \seq_gput_left:Nn
-\cs_new_eq:NN \seq_gpush:NV \seq_gput_left:NV
-\cs_new_eq:NN \seq_gpush:Nv \seq_gput_left:Nv
-\cs_new_eq:NN \seq_gpush:No \seq_gput_left:No
-\cs_new_eq:NN \seq_gpush:Nx \seq_gput_left:Nx
-\cs_new_eq:NN \seq_gpush:cn \seq_gput_left:cn
-\cs_new_eq:NN \seq_gpush:cV \seq_gput_left:cV
-\cs_new_eq:NN \seq_gpush:cv \seq_gput_left:cv
-\cs_new_eq:NN \seq_gpush:co \seq_gput_left:co
-\cs_new_eq:NN \seq_gpush:cx \seq_gput_left:cx
+\cs_generate_variant:Nn \seq_gpush:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \seq_gpush:Nn { No , Nx , co , cx }
 \cs_new_eq:NN \seq_get:NN \seq_get_left:NN
 \cs_new_eq:NN \seq_get:cN \seq_get_left:cN
 \cs_new_eq:NN \seq_pop:NN \seq_pop_left:NN
@@ -5973,9 +6051,9 @@
 \prg_new_eq_conditional:NNn \seq_pop:cN  \seq_pop_left:cN  { T , F , TF }
 \prg_new_eq_conditional:NNn \seq_gpop:NN \seq_gpop_left:NN { T , F , TF }
 \prg_new_eq_conditional:NNn \seq_gpop:cN \seq_gpop_left:cN { T , F , TF }
-\cs_new_protected:Npn \seq_show:N { \__seq_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \seq_show:N { \__seq_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \seq_show:N { c }
-\cs_new_protected:Npn \seq_log:N { \__seq_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \seq_log:N { \__seq_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \seq_log:N { c }
 \cs_new_protected:Npn \__seq_show:NN #1#2
   {
@@ -6110,7 +6188,8 @@
   }
 \cs_generate_variant:Nn \int_new:N { c }
 \cs_new_protected:Npn \int_const:Nn #1#2
-  { \exp_args:Nx \__int_const:nN { \int_eval:n {#2} } #1 }
+  { \__int_const:eN { \int_eval:n {#2} } #1 }
+\cs_generate_variant:Nn \int_const:Nn { c }
 \cs_new_protected:Npn \__int_const:nN #1#2
   {
     \int_compare:nNnTF {#1} < \c_zero_int
@@ -6131,7 +6210,7 @@
       }
     #2 = \__int_eval:w #1 \__int_eval_end:
   }
-\cs_generate_variant:Nn \int_const:Nn { c }
+\cs_generate_variant:Nn \__int_const:nN { e }
 \if_int_odd:w 0
   \cs_if_exist:NT \tex_luatexversion:D { 1 }
   \cs_if_exist:NT \tex_omathchardef:D  { 1 }
@@ -6436,7 +6515,7 @@
   {
     \int_gincr:N \g__kernel_prg_map_int
     \exp_args:NNc \__int_step:NNnnnn
-      \cs_gset_protected:Npx
+      \cs_gset_protected:Npe
       { __int_map_ \int_use:N \g__kernel_prg_map_int :w }
       {#1}{#2}{#3}
       {
@@ -6456,7 +6535,7 @@
   {
     \int_compare:nNnTF {#1} > {#2}
       {
-        \exp_args:NNo \exp_args:No \__int_to_symbols:nnnn
+        \__int_to_symbols:ennn
           {
             \int_case:nn
               { 1 + \int_mod:nn { #1 - 1 } {#2} }
@@ -6472,6 +6551,7 @@
       { \int_div_truncate:nn { #2 - 1 } {#3} } {#3} {#4}
     #1
   }
+\cs_generate_variant:Nn \__int_to_symbols:nnnn { e }
 \cs_new:Npn \int_to_alph:n #1
   {
     \int_to_symbols:nnn {#1} { 26 }
@@ -6859,7 +6939,7 @@
   {
     \exp_args:Nc \__kernel_chk_defined:NT { flag~#2 }
       {
-        \exp_args:Nx #1
+        \exp_args:Ne #1
           { \tl_to_str:n { flag~#2~height } = \flag_height:n {#2} }
       }
   }
@@ -6974,11 +7054,11 @@
       {
         \token_case_meaning:NnF #2
           {
-            \c_true_bool { \exp_args:Nx #1 { \token_to_str:N #2 = true } }
-            \c_false_bool { \exp_args:Nx #1 { \token_to_str:N #2 = false } }
+            \c_true_bool { \exp_args:Ne #1 { \token_to_str:N #2 = true } }
+            \c_false_bool { \exp_args:Ne #1 { \token_to_str:N #2 = false } }
           }
           {
-            \msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nneee { kernel } { bad-type }
               { \token_to_str:N #2 } { \token_to_meaning:N #2 } { bool }
           }
       }
@@ -7254,7 +7334,7 @@
         \cs_new_eq:cN { #1 _p: } \c_false_bool
       }
   }
-\str_const:Nx \c_sys_engine_str
+\str_const:Ne \c_sys_engine_str
   {
     \cs_if_exist:NT \tex_luatexversion:D { luatex }
     \cs_if_exist:NT \tex_pdftexversion:D { pdftex }
@@ -7273,7 +7353,7 @@
   }
 \group_begin:
   \cs_set_eq:NN \lua_now:e    \tex_directlua:D
-  \str_const:Nx \c_sys_engine_exec_str
+  \str_const:Ne \c_sys_engine_exec_str
     {
       \sys_if_engine_pdftex:T { pdf }
       \sys_if_engine_xetex:T  { xe  }
@@ -7291,7 +7371,7 @@
       tex
     }
 \group_end:
-\str_const:Nx \c_sys_engine_format_str
+\str_const:Ne \c_sys_engine_format_str
   {
     \cs_if_exist:NTF \fmtname
       {
@@ -7323,7 +7403,7 @@
       }
       { unknown }
   }
-\str_const:Nx \c_sys_engine_version_str
+\str_const:Ne \c_sys_engine_version_str
   {
     \str_case:on \c_sys_engine_str
       {
@@ -7392,7 +7472,7 @@
         \tl_if_blank:nF {#1}
           { \tl_gset:Nn \g__sys_backend_tl {#1} }
         \__sys_load_backend_check:N \g__sys_backend_tl
-        \str_const:Nx \c_sys_backend_str { \g__sys_backend_tl }
+        \str_const:Ne \c_sys_backend_str { \g__sys_backend_tl }
         \__kernel_sys_configuration_load:n
           { l3backend- \c_sys_backend_str }
       }
@@ -7408,7 +7488,7 @@
             { xetex }     { }
           }
           {
-            \msg_error:nnxx { sys } { wrong-backend }
+            \msg_error:nnee { sys } { wrong-backend }
               #1 { xetex }
             \tl_gset:Nn #1 { xetex }
           }
@@ -7427,7 +7507,7 @@
                   { \str_if_eq_p:Vn #1 { luatex } }
                   { \str_if_eq_p:Vn #1 { pdftex } }
                   {
-                    \msg_error:nnxx { sys } { wrong-backend }
+                    \msg_error:nnee { sys } { wrong-backend }
                       #1 { \sys_if_engine_luatex:TF { luatex } { pdftex } }
                     \sys_if_engine_luatex:TF
                       { \tl_gset:Nn #1 { luatex } }
@@ -7443,7 +7523,7 @@
                 { dvisvgm }  { }
               }
               {
-                \msg_error:nnxx { sys } { wrong-backend }
+                \msg_error:nnee { sys } { wrong-backend }
                   #1 { dvips }
                 \tl_gset:Nn #1 { dvips }
               }
@@ -7463,7 +7543,7 @@
     \bool_gset_true:N \g__sys_debug_bool
   }
 \tl_new:N \l__sys_internal_tl
-\tl_const:Nx \c__sys_marker_tl { : \token_to_str:N : }
+\tl_const:Ne \c__sys_marker_tl { : \token_to_str:N : }
 \cs_new_protected:Npn \sys_get_shell:nnN #1#2#3
   {
     \sys_get_shell:nnNF {#1} {#2} #3
@@ -7479,7 +7559,7 @@
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \msg_error:nnx
+        \msg_error:nne
           { kernel } { quote-in-shell } {#1}
         \prg_return_false:
       }
@@ -7515,7 +7595,7 @@
     \cs_new_protected:Npn \sys_shell_now:n #1
       { \iow_now:Nn \c__sys_shell_stream_int {#1} }
   }
-\cs_generate_variant:Nn \sys_shell_now:n { x }
+\cs_generate_variant:Nn \sys_shell_now:n { e, x }
 \sys_if_engine_luatex:TF
   {
     \cs_new_protected:Npn \sys_shell_shipout:n #1
@@ -7525,7 +7605,7 @@
     \cs_new_protected:Npn \sys_shell_shipout:n #1
       { \iow_shipout:Nn \c__sys_shell_stream_int {#1} }
   }
-\cs_generate_variant:Nn \sys_shell_shipout:n { x }
+\cs_generate_variant:Nn \sys_shell_shipout:n { e , x }
 \cs_new_protected:Npn \sys_everyjob:
   {
     \tl_use:N \g__sys_everyjob_tl
@@ -7570,7 +7650,7 @@
   }
 \__sys_everyjob:n
   {
-    \str_const:Nx \c_sys_timestamp_str
+    \str_const:Ne \c_sys_timestamp_str
       {
         \cs_if_exist:NTF \tex_directlua:D
           { \tex_directlua:D { tex.print(pdf.getcreationdate()) } }
@@ -7643,7 +7723,7 @@
 \tl_new:N \g__sys_finalise_tl
 \__sys_finalise:n
   {
-    \str_const:Nx \c_sys_output_str
+    \str_const:Ne \c_sys_output_str
       {
         \int_compare:nNnTF
           { \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
@@ -7658,7 +7738,7 @@
 \tl_new:N \g__sys_backend_tl
 \__sys_finalise:n
   {
-    \__kernel_tl_gset:Nx \g__sys_backend_tl
+    \__kernel_tl_gset:Ne \g__sys_backend_tl
       {
         \sys_if_engine_xetex:TF
           { xetex }
@@ -7756,8 +7836,9 @@
 \cs_new_eq:NN \clist_new:N \tl_new:N
 \cs_new_eq:NN \clist_new:c \tl_new:c
 \cs_new_protected:Npn \clist_const:Nn #1#2
-  { \tl_const:Nx #1 { \__clist_sanitize:n {#2} } }
-\cs_generate_variant:Nn \clist_const:Nn { c , Nx , cx }
+  { \tl_const:Ne #1 { \__clist_sanitize:n {#2} } }
+\cs_generate_variant:Nn \clist_const:Nn { Ne , c , ce }
+\cs_generate_variant:Nn \clist_const:Nn { Nx , cx }
 \cs_new_eq:NN \clist_clear:N  \tl_clear:N
 \cs_new_eq:NN \clist_clear:c  \tl_clear:c
 \cs_new_eq:NN \clist_gclear:N \tl_gclear:N
@@ -7775,9 +7856,9 @@
 \cs_new_eq:NN \clist_gset_eq:cN \tl_gset_eq:cN
 \cs_new_eq:NN \clist_gset_eq:cc \tl_gset_eq:cc
 \cs_new_protected:Npn \clist_set_from_seq:NN
-  { \__clist_set_from_seq:NNNN \clist_clear:N  \__kernel_tl_set:Nx  }
+  { \__clist_set_from_seq:NNNN \clist_clear:N  \__kernel_tl_set:Ne  }
 \cs_new_protected:Npn \clist_gset_from_seq:NN
-  { \__clist_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Nx }
+  { \__clist_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__clist_set_from_seq:NNNN #1#2#3#4
   {
     \seq_if_empty:NTF #4
@@ -7802,9 +7883,9 @@
 \cs_generate_variant:Nn \clist_gset_from_seq:NN {     Nc }
 \cs_generate_variant:Nn \clist_gset_from_seq:NN { c , cc }
 \cs_new_protected:Npn \clist_concat:NNN
-  { \__clist_concat:NNNN \__kernel_tl_set:Nx }
+  { \__clist_concat:NNNN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \clist_gconcat:NNN
-  { \__clist_concat:NNNN \__kernel_tl_gset:Nx }
+  { \__clist_concat:NNNN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__clist_concat:NNNN #1#2#3#4
   {
     #1 #2
@@ -7821,11 +7902,13 @@
 \prg_new_eq_conditional:NNn \clist_if_exist:c \cs_if_exist:c
   { TF , T , F , p }
 \cs_new_protected:Npn \clist_set:Nn #1#2
-  { \__kernel_tl_set:Nx #1 { \__clist_sanitize:n {#2} } }
+  { \__kernel_tl_set:Ne #1 { \__clist_sanitize:n {#2} } }
 \cs_new_protected:Npn \clist_gset:Nn #1#2
-  { \__kernel_tl_gset:Nx #1 { \__clist_sanitize:n {#2} } }
-\cs_generate_variant:Nn \clist_set:Nn  { NV , No , Nx , c , cV , co , cx }
-\cs_generate_variant:Nn \clist_gset:Nn { NV , No , Nx , c , cV , co , cx }
+  { \__kernel_tl_gset:Ne #1 { \__clist_sanitize:n {#2} } }
+\cs_generate_variant:Nn \clist_set:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \clist_set:Nn  { No , Nx , co , cx }
+\cs_generate_variant:Nn \clist_gset:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \clist_gset:Nn { No , Nx , co , cx }
 \cs_new_protected:Npn \clist_put_left:Nn
   { \__clist_put_left:NNNn \clist_concat:NNN \clist_set:Nn }
 \cs_new_protected:Npn \clist_gput_left:Nn
@@ -7835,10 +7918,10 @@
     #2 \l__clist_internal_clist {#4}
     #1 #3 \l__clist_internal_clist #3
   }
-\cs_generate_variant:Nn \clist_put_left:Nn  {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_put_left:Nn  { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \clist_gput_left:Nn {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_put_left:Nn  { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_put_left:Nn  { No , Nx , co , cx }
+\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_gput_left:Nn { No , Nx , co , cx }
 \cs_new_protected:Npn \clist_put_right:Nn
   { \__clist_put_right:NNNn \clist_concat:NNN \clist_set:Nn }
 \cs_new_protected:Npn \clist_gput_right:Nn
@@ -7848,10 +7931,14 @@
     #2 \l__clist_internal_clist {#4}
     #1 #3 #3 \l__clist_internal_clist
   }
-\cs_generate_variant:Nn \clist_put_right:Nn  {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_put_right:Nn  { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \clist_gput_right:Nn {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_put_right:Nn
+  { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_put_right:Nn
+  { No , Nx , co , cx }
+\cs_generate_variant:Nn \clist_gput_right:Nn
+  { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_gput_right:Nn
+  { No , Nx , co , cx }
 \cs_new_protected:Npn \clist_get:NN #1#2
   {
     \if_meaning:w #1 \c_empty_clist
@@ -7864,9 +7951,9 @@
   { \tl_set:Nn #3 {#1} }
 \cs_generate_variant:Nn \clist_get:NN { c }
 \cs_new_protected:Npn \clist_pop:NN
-  { \__clist_pop:NNN \__kernel_tl_set:Nx }
+  { \__clist_pop:NNN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \clist_gpop:NN
-  { \__clist_pop:NNN \__kernel_tl_gset:Nx }
+  { \__clist_pop:NNN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__clist_pop:NNN #1#2#3
   {
     \if_meaning:w #2 \c_empty_clist
@@ -7900,9 +7987,9 @@
   }
 \prg_generate_conditional_variant:Nnn \clist_get:NN { c } { T , F , TF }
 \prg_new_protected_conditional:Npnn \clist_pop:NN #1#2 { T , F , TF }
-  { \__clist_pop_TF:NNN \__kernel_tl_set:Nx #1 #2 }
+  { \__clist_pop_TF:NNN \__kernel_tl_set:Ne #1 #2 }
 \prg_new_protected_conditional:Npnn \clist_gpop:NN #1#2 { T , F , TF }
-  { \__clist_pop_TF:NNN \__kernel_tl_gset:Nx #1 #2 }
+  { \__clist_pop_TF:NNN \__kernel_tl_gset:Ne #1 #2 }
 \cs_new_protected:Npn \__clist_pop_TF:NNN #1#2#3
   {
     \if_meaning:w #2 \c_empty_clist
@@ -7915,21 +8002,9 @@
 \prg_generate_conditional_variant:Nnn \clist_pop:NN { c } { T , F , TF }
 \prg_generate_conditional_variant:Nnn \clist_gpop:NN { c } { T , F , TF }
 \cs_new_eq:NN \clist_push:Nn  \clist_put_left:Nn
-\cs_new_eq:NN \clist_push:NV  \clist_put_left:NV
-\cs_new_eq:NN \clist_push:No  \clist_put_left:No
-\cs_new_eq:NN \clist_push:Nx  \clist_put_left:Nx
-\cs_new_eq:NN \clist_push:cn  \clist_put_left:cn
-\cs_new_eq:NN \clist_push:cV  \clist_put_left:cV
-\cs_new_eq:NN \clist_push:co  \clist_put_left:co
-\cs_new_eq:NN \clist_push:cx  \clist_put_left:cx
+\cs_generate_variant:Nn \clist_push:Nn { NV , No , Nx , c , cV , co , cx }
 \cs_new_eq:NN \clist_gpush:Nn \clist_gput_left:Nn
-\cs_new_eq:NN \clist_gpush:NV \clist_gput_left:NV
-\cs_new_eq:NN \clist_gpush:No \clist_gput_left:No
-\cs_new_eq:NN \clist_gpush:Nx \clist_gput_left:Nx
-\cs_new_eq:NN \clist_gpush:cn \clist_gput_left:cn
-\cs_new_eq:NN \clist_gpush:cV \clist_gput_left:cV
-\cs_new_eq:NN \clist_gpush:co \clist_gput_left:co
-\cs_new_eq:NN \clist_gpush:cx \clist_gput_left:cx
+\cs_generate_variant:Nn \clist_gpush:Nn { NV , No , Nx , c , cV , co , cx }
 \clist_new:N \l__clist_internal_remove_clist
 \seq_new:N \l__clist_internal_remove_seq
 \cs_new_protected:Npn \clist_remove_duplicates:N
@@ -7943,7 +8018,7 @@
       {
         \clist_if_in:NnF \l__clist_internal_remove_clist {##1}
           {
-            \tl_put_right:Nx \l__clist_internal_remove_clist
+            \tl_put_right:Ne \l__clist_internal_remove_clist
               {
                 \clist_if_empty:NF \l__clist_internal_remove_clist { , }
                 \__clist_if_wrap:nTF {##1} { \exp_not:n { {##1} } } { \exp_not:n {##1} }
@@ -7955,9 +8030,9 @@
 \cs_generate_variant:Nn \clist_remove_duplicates:N  { c }
 \cs_generate_variant:Nn \clist_gremove_duplicates:N { c }
 \cs_new_protected:Npn \clist_remove_all:Nn
-  { \__clist_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Nx }
+  { \__clist_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \clist_gremove_all:Nn
-  { \__clist_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Nx }
+  { \__clist_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__clist_remove_all:NNNn #1#2#3#4
   {
     \__clist_if_wrap:nTF {#4}
@@ -7994,9 +8069,9 @@
 \cs_generate_variant:Nn \clist_remove_all:Nn  { c , NV , cV }
 \cs_generate_variant:Nn \clist_gremove_all:Nn { c , NV , cV }
 \cs_new_protected:Npn \clist_reverse:N #1
-  { \__kernel_tl_set:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
+  { \__kernel_tl_set:Ne #1 { \exp_args:No \clist_reverse:n {#1} } }
 \cs_new_protected:Npn \clist_greverse:N #1
-  { \__kernel_tl_gset:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
+  { \__kernel_tl_gset:Ne #1 { \exp_args:No \clist_reverse:n {#1} } }
 \cs_generate_variant:Nn \clist_reverse:N { c }
 \cs_generate_variant:Nn \clist_greverse:N { c }
 \cs_new:Npn \clist_reverse:n #1
@@ -8043,7 +8118,7 @@
   {
     \__clist_if_wrap:nTF {#2}
       {
-        \cs_set:Npx \__clist_tmp:w ##1
+        \cs_set:Npe \__clist_tmp:w ##1
           {
             \exp_not:N \tl_if_eq:nnT {##1}
             \exp_not:n
@@ -8097,6 +8172,7 @@
       \s__clist_stop \clist_map_break: ,
     \prg_break_point:Nn \clist_map_break: { }
   }
+\cs_generate_variant:Nn \clist_map_function:nN { e }
 \cs_new:Npn \__clist_map_function_n:Nn #1 #2
   {
     \__clist_use_none_delimit_by_s_stop:w #2 \s__clist_stop
@@ -8211,6 +8287,7 @@
       }
   }
 \exp_args:No \__clist_tmp:w \c_space_tl
+\cs_generate_variant:Nn \clist_count:n { e }
 \cs_new:Npn \clist_use:Nnnn #1#2#3#4
   {
     \clist_if_exist:NTF #1
@@ -8316,6 +8393,7 @@
       {#1}
       \__clist_item_n:nw
   }
+\cs_generate_variant:Nn \clist_item:nn { e }
 \cs_new:Npn \__clist_item_n:nw #1
   { \__clist_item_n_loop:nw {#1} \prg_do_nothing: }
 \cs_new:Npn \__clist_item_n_loop:nw #1 #2,
@@ -8349,9 +8427,9 @@
       { \clist_item:Nn #1 { \int_rand:nn { 1 } { \clist_count:N #1 } } }
   }
 \cs_generate_variant:Nn \clist_rand_item:N { c }
-\cs_new_protected:Npn \clist_show:N { \__clist_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \clist_show:N { \__clist_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \clist_show:N { c }
-\cs_new_protected:Npn \clist_log:N { \__clist_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_log:N { \__clist_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \clist_log:N { c }
 \cs_new_protected:Npn \__clist_show:NN #1#2
   {
@@ -8366,13 +8444,13 @@
               { } { }
           }
           {
-            \msg_error:nnxx { clist } { non-clist }
+            \msg_error:nnee { clist } { non-clist }
               { \token_to_str:N #2 } { \tl_to_str:N #2 }
           }
       }
   }
-\cs_new_protected:Npn \clist_show:n { \__clist_show:Nn \msg_show:nnxxxx }
-\cs_new_protected:Npn \clist_log:n { \__clist_show:Nn \msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_show:n { \__clist_show:Nn \msg_show:nneeee }
+\cs_new_protected:Npn \clist_log:n { \__clist_show:Nn \msg_log:nneeee }
 \cs_new_protected:Npn \__clist_show:Nn #1#2
   {
     #1 { clist } { show }
@@ -8496,7 +8574,7 @@
             \char_set_lccode:nn { `\^^@ } { ##1 }
           \tex_lowercase:D { \group_end: #2 ^^@ }
         }
-      \cs_new_protected:cpx { #1 :NN } ##1
+      \cs_new_protected:cpe { #1 :NN } ##1
         { \exp_not:c { #1 : nN } { `##1 } }
     }
   \__char_tmp:nN { char_set_active_eq }  \cs_set_eq:NN
@@ -8563,7 +8641,7 @@
     \char_set_catcode_math_superscript:n { 0 }
     \tl_put_right:Nn \l__char_tmp_tl { ^^@ \exp_not:N \or: }
     \char_set_catcode_parameter:n { 0 }
-    \tl_put_right:Nn \l__char_tmp_tl { ^^@^^@ \exp_not:N \or: }
+    \tl_put_right:Nn \l__char_tmp_tl { ^^@ \exp_not:N \or: }
     \tl_put_right:Nn \l__char_tmp_tl { { \if_false: } \fi: \exp_not:N \or: }
     \char_set_catcode_alignment:n { 0 }
     \tl_put_right:Nn \l__char_tmp_tl { ^^@ \exp_not:N \or: }
@@ -8577,9 +8655,9 @@
         {
           \char_set_lccode:nn { 0 } {#1}
           \char_set_lccode:nn { 32 } {#1}
-          \exp_args:Nx \tex_lowercase:D
+          \exp_args:Ne \tex_lowercase:D
             {
-              \tl_const:Nx
+              \tl_const:Ne
                 \exp_not:c { c__char_ \__char_int_to_roman:w #1 _tl }
                 { \exp_not:o \l__char_tmp_tl }
             }
@@ -8725,7 +8803,7 @@
   \char_set_lccode:nn { `* } { `\ }
   \tex_lowercase:D { \tl_const:Nn \c_catcode_active_space_tl { * } }
 \group_end:
-\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\  } { 12 } }
+\tl_const:Ne \c_catcode_other_space_tl { \char_generate:nn { `\  } { 12 } }
 \scan_new:N \s__token_mark
 \scan_new:N \s__token_stop
 \group_begin:
@@ -8821,17 +8899,17 @@
     \if_charcode:w \exp_not:N #1 \exp_not:N #2
       \prg_return_true: \else: \prg_return_false: \fi:
   }
-\use:x
+\use:e
   {
-    \prg_new_conditional:Npnn \exp_not:N \token_if_macro:N ##1
+    \prg_new_conditional:Npnn \exp_not:N \token_if_macro:N #1
       { p , T ,  F , TF }
       {
         \exp_not:N \exp_after:wN \exp_not:N \__token_if_macro_p:w
-        \exp_not:N \token_to_meaning:N ##1 \tl_to_str:n { ma : }
+        \exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma : }
           \s__token_stop
       }
     \cs_new:Npn \exp_not:N  \__token_if_macro_p:w
-      ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \s__token_stop
+      #1 \tl_to_str:n { ma } #2 \c_colon_str #3 \s__token_stop
   }
       {
         \str_if_eq:nnTF { #2 } { cro }
@@ -8858,11 +8936,11 @@
 \group_begin:
 \cs_set_protected:Npn \__token_tmp:w #1
   {
-    \use:x
+    \use:e
       {
         \cs_new:Npn \exp_not:c { __token_delimit_by_ #1 :w }
-            ####1 \tl_to_str:n {#1} ####2 \s__token_stop
-          { ####1 \tl_to_str:n {#1} }
+            ##1 \tl_to_str:n {#1} ##2 \s__token_stop
+          { ##1 \tl_to_str:n {#1} }
       }
   }
 \__token_tmp:w { char" }
@@ -8877,17 +8955,17 @@
 \group_begin:
 \cs_set_protected:Npn \__token_tmp:w #1#2#3
   {
-    \use:x
+    \use:e
       {
-        \prg_new_conditional:Npnn \exp_not:c { token_if_ #1 :N } ####1
+        \prg_new_conditional:Npnn \exp_not:c { token_if_ #1 :N } ##1
           { p , T ,  F , TF }
           {
             \cs_if_exist:cT { tex_ #2 :D }
               {
-                \exp_not:N \if_meaning:w ####1 \exp_not:c { tex_ #2 :D }
+                \exp_not:N \if_meaning:w ##1 \exp_not:c { tex_ #2 :D }
                 \exp_not:N \prg_return_false:
                 \exp_not:N \else:
-                \exp_not:N \if_meaning:w ####1 \exp_not:c { tex_ #2 def:D }
+                \exp_not:N \if_meaning:w ##1 \exp_not:c { tex_ #2 def:D }
                 \exp_not:N \prg_return_false:
                 \exp_not:N \else:
               }
@@ -8895,7 +8973,7 @@
               {
                 \exp_not:N \exp_after:wN
                 \exp_not:c { __token_delimit_by_ #2 :w }
-                \exp_not:N \token_to_meaning:N ####1
+                \exp_not:N \token_to_meaning:N ##1
                 ? \tl_to_str:n {#2} \s__token_stop
               }
               { \exp_not:n {#3} }
@@ -8932,26 +9010,26 @@
   }
   {
     \tex_chardef:D \c__token_A_int = `A ~ %
-    \use:x
+    \use:e
       {
-        \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N ##1
+        \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N #1
           { p , T , F , TF }
           {
-            \exp_not:N \token_if_macro:NTF ##1
+            \exp_not:N \token_if_macro:NTF #1
               \exp_not:N \prg_return_false:
               {
                 \exp_not:N \exp_after:wN \exp_not:N \__token_if_primitive:NNw
-                \exp_not:N \token_to_meaning:N ##1
-                  \tl_to_str:n { : : : } \s__token_stop ##1
+                \exp_not:N \token_to_meaning:N #1
+                  \tl_to_str:n { : : : } \s__token_stop #1
               }
           }
         \cs_new:Npn \exp_not:N \__token_if_primitive:NNw
-          ##1##2 ##3 \c_colon_str ##4 \s__token_stop
+          #1#2 #3 \c_colon_str #4 \s__token_stop
           {
             \exp_not:N \tl_if_empty:oTF
-              { \exp_not:N \__token_if_primitive_space:w ##3 ~ }
+              { \exp_not:N \__token_if_primitive_space:w #3 ~ }
               {
-                \exp_not:N \__token_if_primitive_loop:N ##3
+                \exp_not:N \__token_if_primitive_loop:N #3
                   \c_colon_str \s__token_stop
               }
               { \exp_not:N \__token_if_primitive_nullfont:N }
@@ -9054,7 +9132,7 @@
   }
 \cs_new_protected:Npn \peek_remove_spaces:n #1
   {
-    \cs_set:Npx \__peek_false:w { \exp_not:n {#1} }
+    \cs_set:Npe \__peek_false:w { \exp_not:n {#1} }
     \group_align_safe_begin:
     \cs_set:Npn \__peek_true_aux:w { \peek_after:Nw \__peek_remove_spaces: }
     \__peek_true_aux:w
@@ -9071,7 +9149,7 @@
 \cs_new_protected:Npn \peek_remove_filler:n #1
   {
     \cs_set:Npn \__peek_true_aux:w { \__peek_remove_filler:w }
-    \cs_set:Npx \__peek_false:w
+    \cs_set:Npe \__peek_false:w
       {
         \exp_not:N \group_align_safe_end:
         \exp_not:n {#1}
@@ -9111,13 +9189,13 @@
     \group_align_safe_begin:
     \cs_set_eq:NN \l__peek_search_token #3
     \tl_set:Nn \l__peek_search_tl {#3}
-    \cs_set:Npx \__peek_true_aux:w
+    \cs_set:Npe \__peek_true_aux:w
       {
         \exp_not:N \group_align_safe_end:
         \exp_not:n {#4}
       }
     \cs_set_eq:NN \__peek_true:w #1
-    \cs_set:Npx \__peek_false:w
+    \cs_set:Npe \__peek_false:w
       {
         \exp_not:N \group_align_safe_end:
         \exp_not:n {#5}
@@ -9183,7 +9261,7 @@
       {
         \tl_map_inline:nn { { TF } { T } { F } }
           {
-            \cs_new_protected:cpx { peek_ #1 ##1 :N ####1 }
+            \cs_new_protected:cpe { peek_ #1 ##1 :N ####1 }
               {
                 \exp_not:c { __peek_token ##1 _generic:NN ####1 }
                 \exp_not:c { __peek_execute_branches_ #1 : }
@@ -9302,7 +9380,7 @@
 \cs_new_protected:Npn \prop_const_from_keyval:Nn #1#2
   {
     \prop_set_from_keyval:Nn \l__prop_internal_prop {#2}
-    \tl_const:Nx #1 { \exp_not:o \l__prop_internal_prop }
+    \tl_const:Ne #1 { \exp_not:o \l__prop_internal_prop }
     \prop_clear:N \l__prop_internal_prop
   }
 \cs_generate_variant:Nn \prop_const_from_keyval:Nn { c }
@@ -9353,10 +9431,8 @@
       { \tl_gset:Nn #1 { ##1 ##3 } }
       { }
   }
-\cs_generate_variant:Nn \prop_remove:Nn  {     NV }
-\cs_generate_variant:Nn \prop_remove:Nn  { c , cV }
-\cs_generate_variant:Nn \prop_gremove:Nn {     NV }
-\cs_generate_variant:Nn \prop_gremove:Nn { c , cV }
+\cs_generate_variant:Nn \prop_remove:Nn  { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \prop_gremove:Nn { NV , Ne , c , cV , ce }
 \cs_new_protected:Npn \prop_get:NnN #1#2#3
   {
     \__prop_split:NnTF #1 {#2}
@@ -9363,8 +9439,9 @@
       { \tl_set:Nn #3 {##2} }
       { \tl_set:Nn #3 { \q_no_value } }
   }
-\cs_generate_variant:Nn \prop_get:NnN {     NV , Nv , No , Nx }
-\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co , cx , cnc }
+\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \prop_get:NnN { No , Nx , co , cx }
+\cs_generate_variant:Nn \prop_get:NnN { cnc }
 \cs_new_protected:Npn \prop_pop:NnN #1#2#3
   {
     \__prop_split:NnTF #1 {#2}
@@ -9383,10 +9460,10 @@
       }
       { \tl_set:Nn #3 { \q_no_value } }
   }
-\cs_generate_variant:Nn \prop_pop:NnN  {     No }
-\cs_generate_variant:Nn \prop_pop:NnN  { c , co }
-\cs_generate_variant:Nn \prop_gpop:NnN {     No }
-\cs_generate_variant:Nn \prop_gpop:NnN { c , co }
+\cs_generate_variant:Nn \prop_pop:NnN  {     NV , No }
+\cs_generate_variant:Nn \prop_pop:NnN  { c , cV , co }
+\cs_generate_variant:Nn \prop_gpop:NnN {     NV , No }
+\cs_generate_variant:Nn \prop_gpop:NnN { c , cV , co }
 \cs_new:Npn \prop_item:Nn #1#2
   {
     \exp_args:NNo \prop_map_tokens:Nn #1
@@ -9446,10 +9523,10 @@
       }
       { \prg_return_false: }
   }
-\prg_generate_conditional_variant:Nnn \prop_pop:NnN { c } { T , F , TF }
-\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { c } { T , F , TF }
-\cs_new_protected:Npn \prop_put:Nnn  { \__prop_put:NNnn \__kernel_tl_set:Nx }
-\cs_new_protected:Npn \prop_gput:Nnn { \__prop_put:NNnn \__kernel_tl_gset:Nx }
+\prg_generate_conditional_variant:Nnn \prop_pop:NnN  { NV , c , cV } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { NV , c , cV } { T , F , TF }
+\cs_new_protected:Npn \prop_put:Nnn  { \__prop_put:NNnn \__kernel_tl_set:Ne }
+\cs_new_protected:Npn \prop_gput:Nnn { \__prop_put:NNnn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__prop_put:NNnn #1#2#3#4
   {
     \tl_set:Nn \l__prop_internal_tl
@@ -9462,17 +9539,37 @@
       { #1 #2 { \exp_not:o {#2} \l__prop_internal_tl } }
   }
 \cs_generate_variant:Nn \prop_put:Nnn
-  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
+  {
+         NnV , Nnv , Nne , NV , NVV , NVv , NVe ,
+    Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee
+  }
 \cs_generate_variant:Nn \prop_put:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
+  { Nno , No , Noo , Nnx , NVx , NxV , Nxx }
+\cs_generate_variant:Nn \prop_put:Nnn
+  {
+    c  , cnV , cnv , cne , cV , cVV , cVv , cVe ,
+    cv , cvV , cvv , cve , ce , ceV , cev , cee
+  }
+\cs_generate_variant:Nn \prop_put:Nnn
+  { cno , co , coo , cnx , cVx , cxV , cxx }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
+  {
+         NnV , Nnv , Nne , NV , NVV , NVv , NVe ,
+    Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee
+  }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
+  { Nno , No , Noo , Nnx , NVx , NxV , Nxx }
+\cs_generate_variant:Nn \prop_gput:Nnn
+  {
+    c  , cnV , cnv , cne , cV , cVV , cVv , cVe ,
+    cv , cvV , cvv , cve , ce , ceV , cev , cee
+  }
+\cs_generate_variant:Nn \prop_gput:Nnn
+  { cno , co , coo , cnx , cVx , cxV , cxx }
 \cs_new_protected:Npn \prop_put_if_new:Nnn
-  { \__prop_put_if_new:NNnn \__kernel_tl_set:Nx }
+  { \__prop_put_if_new:NNnn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \prop_gput_if_new:Nnn
-  { \__prop_put_if_new:NNnn \__kernel_tl_gset:Nx }
+  { \__prop_put_if_new:NNnn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__prop_put_if_new:NNnn #1#2#3#4
   {
     \tl_set:Nn \l__prop_internal_tl
@@ -9484,8 +9581,10 @@
       { }
       { #1 #2 { \exp_not:o {#2} \l__prop_internal_tl } }
   }
-\cs_generate_variant:Nn \prop_put_if_new:Nnn  { c }
-\cs_generate_variant:Nn \prop_gput_if_new:Nnn { c }
+\cs_generate_variant:Nn \prop_put_if_new:Nnn
+  { NnV , NV , cnV , cV }
+\cs_generate_variant:Nn \prop_gput_if_new:Nnn
+  { NnV , NV , cnV , cV }
 \prg_new_eq_conditional:NNn \prop_if_exist:N \cs_if_exist:N
   { TF , T , F , p }
 \prg_new_eq_conditional:NNn \prop_if_exist:c \cs_if_exist:c
@@ -9509,7 +9608,7 @@
       { \prop_map_break:n { \use_i:nn \prg_return_true: } }
   }
 \prg_generate_conditional_variant:Nnn \prop_if_in:Nn
-  { NV , No , c , cV , co } { p , T , F , TF }
+  { NV , Ne , No , c , cV , ce , co } { p , T , F , TF }
 \prg_new_protected_conditional:Npnn \prop_get:NnN #1#2#3 { T , F , TF }
   {
     \__prop_split:NnTF #1 {#2}
@@ -9520,7 +9619,11 @@
       { \prg_return_false: }
   }
 \prg_generate_conditional_variant:Nnn \prop_get:NnN
-  { NV , Nv , No , Nx , c , cV , cv , co , cx , cnc } { T , F , TF }
+  { NV , Nv , Ne , c , cV , cv , ce } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_get:NnN
+  { No , Nx , co , cx } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_get:NnN
+  { cnc } { T , F , TF }
 \cs_new:Npn \prop_map_function:NN #1#2
   {
     \exp_after:wN \use_i_ii:nnn
@@ -9588,9 +9691,9 @@
   { \prg_map_break:Nn \prop_map_break: { } }
 \cs_new:Npn \prop_map_break:n
   { \prg_map_break:Nn \prop_map_break: }
-\cs_new_protected:Npn \prop_show:N { \__prop_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \prop_show:N { \__prop_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \prop_show:N { c }
-\cs_new_protected:Npn \prop_log:N { \__prop_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \prop_log:N { \__prop_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \prop_log:N { c }
 \cs_new_protected:Npn \__prop_show:NN #1#2
   {
@@ -9631,7 +9734,7 @@
   {
     \msg_if_exist:nnT {#1} {#2}
       {
-        \msg_error:nnxx { msg } { already-defined }
+        \msg_error:nnnn { msg } { already-defined }
           {#1} {#2}
       }
   }
@@ -9640,10 +9743,10 @@
     \__msg_chk_free:nn {#1} {#2}
     \msg_gset:nnnn {#1} {#2}
   }
-\cs_generate_variant:Nn \msg_new:nnnn { nnxx }
+\cs_generate_variant:Nn \msg_new:nnnn { nnee , nnxx }
 \cs_new_protected:Npn \msg_new:nnn #1#2#3
   { \msg_new:nnnn {#1} {#2} {#3} { } }
-\cs_generate_variant:Nn \msg_new:nnn { nnx }
+\cs_generate_variant:Nn \msg_new:nnn { nne , nnx }
 \cs_new_protected:Npn \msg_set:nnnn #1#2#3#4
   {
     \cs_set:cpn { \c__msg_text_prefix_tl #1 / #2 }
@@ -9703,8 +9806,8 @@
   }
 \cs_new_protected:Npn \__msg_interrupt:NnnnN #1#2#3#4#5
   {
-    \str_set:Nx \l__msg_text_str { #1 {#2} }
-    \str_set:Nx \l__msg_name_str { \msg_module_name:n {#2} }
+    \str_set:Ne \l__msg_text_str { #1 {#2} }
+    \str_set:Ne \l__msg_name_str { \msg_module_name:n {#2} }
     \cs_if_eq:cNTF
       { \c__msg_more_text_prefix_tl #2 / #3 }
       \__msg_no_more_text:nnnn
@@ -9735,7 +9838,7 @@
     \iow_wrap:nnnN { \\ #3 } { } { } \__msg_interrupt_more_text:n
     \group_begin:
       \int_sub:Nn \l_iow_line_count_int { 2 }
-      \iow_wrap:nxnN { \l__msg_text_str : ~ #1 }
+      \iow_wrap:nenN { \l__msg_text_str : ~ #1 }
         {
           ( \l__msg_name_str )
           \prg_replicate:nn
@@ -9756,7 +9859,7 @@
     \tl_set:Nn \l__msg_internal_tl {#1}
   }
 \cs_new_protected:Npn \__msg_interrupt_more_text:n #1
-  { \exp_args:Nx \tex_errhelp:D { #1 \iow_newline: } }
+  { \exp_args:Ne \tex_errhelp:D { #1 \iow_newline: } }
 \group_begin:
   \char_set_lccode:nn { 38 } { 32 } % &
   \char_set_lccode:nn { 46 } { 32 } % .
@@ -9846,7 +9949,7 @@
           ##1##2##3##4##5##6 {#2}
       \cs_new_protected:cpn { msg_ #1 :nnnnnn } ##1##2##3##4##5##6
         {
-          \use:x
+          \use:e
             {
               \exp_not:n { \__msg_use:nnnnnnn {#1} {##1} {##2} }
                 { \tl_to_str:n {##3} } { \tl_to_str:n {##4} }
@@ -9853,32 +9956,21 @@
                 { \tl_to_str:n {##5} } { \tl_to_str:n {##6} }
             }
         }
-      \cs_new_protected:cpx { msg_ #1 :nnnnn } ##1##2##3##4##5
+      \cs_new_protected:cpe { msg_ #1 :nnnnn } ##1##2##3##4##5
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} {##5} { } }
-      \cs_new_protected:cpx { msg_ #1 :nnnn } ##1##2##3##4
+      \cs_new_protected:cpe { msg_ #1 :nnnn } ##1##2##3##4
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} { } { } }
-      \cs_new_protected:cpx { msg_ #1 :nnn } ##1##2##3
+      \cs_new_protected:cpe { msg_ #1 :nnn } ##1##2##3
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } }
-      \cs_new_protected:cpx { msg_ #1 :nn } ##1##2
+      \cs_new_protected:cpe { msg_ #1 :nn } ##1##2
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} { } { } { } { } }
-      \cs_generate_variant:cn { msg_ #1 :nnn } { nnV }
-      \cs_generate_variant:cn { msg_ #1 :nnnn } { nnVV , nnVn , nnnV , nnnx }
-      \cs_generate_variant:cn { msg_ #1 :nnnnn } { nnnxx }
-      \cs_new_protected:cpx { msg_ #1 :nnxxxx } ##1##2##3##4##5##6
-        {
-          \use:x
-            {
-              \exp_not:N \exp_not:n
-                { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} }
-                {##3} {##4} {##5} {##6}
-            }
-        }
-      \cs_new_protected:cpx { msg_ #1 :nnxxx } ##1##2##3##4##5
-        { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { } }
-      \cs_new_protected:cpx { msg_ #1 :nnxx } ##1##2##3##4
-        { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { } }
-      \cs_new_protected:cpx { msg_ #1 :nnx } ##1##2##3
-        { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} { } { } { } }
+      \cs_generate_variant:cn { msg_ #1 :nnn }
+        { nnV , nne , nnx }
+      \cs_generate_variant:cn { msg_ #1 :nnnn }
+        { nnVV , nnVn , nnnV , nnne , nnnx , nnee , nnxx }
+      \cs_generate_variant:cn { msg_ #1 :nnnnn }
+        { nnnee , nnnxx , nneee , nnxxx }
+       \cs_generate_variant:cn { msg_ #1 :nnnnnn } { nneeee , nnxxxx }
     }
   \__msg_class_new:nn { fatal }
     {
@@ -9901,8 +9993,8 @@
         \c__msg_critical_text_tl
       \tex_endinput:D
     }
-  \cs_undefine:N \msg_error:nnxx
-  \cs_undefine:N \msg_error:nnx
+  \cs_undefine:N \msg_error:nnee
+  \cs_undefine:N \msg_error:nne
   \cs_undefine:N \msg_error:nn
   \__msg_class_new:nn { error }
     {
@@ -9913,10 +10005,10 @@
     }
   \cs_new_protected:Npn \__msg_info_aux:NNnnnnnn #1#2#3#4#5#6#7#8
     {
-      \str_set:Nx \l__msg_text_str { #2 {#3} }
-      \str_set:Nx \l__msg_name_str { \msg_module_name:n {#3} }
+      \str_set:Ne \l__msg_text_str { #2 {#3} }
+      \str_set:Ne \l__msg_name_str { \msg_module_name:n {#3} }
       #1 { }
-      \iow_wrap:nxnN
+      \iow_wrap:nenN
         {
           \l__msg_text_str : ~
           \use:c { \c__msg_text_prefix_tl #3 / #4 } {#5} {#6} {#7} {#8}
@@ -9996,11 +10088,11 @@
         }
     }
 \group_end:
-\cs_new:Npx \msg_show_item:n #1
+\cs_new:Npe \msg_show_item:n #1
   { ^^J > ~ \c_space_tl \exp_not:N \tl_to_str:n { {#1} } }
-\cs_new:Npx \msg_show_item_unbraced:n #1
+\cs_new:Npe \msg_show_item_unbraced:n #1
   { ^^J > ~ \c_space_tl \exp_not:N \tl_to_str:n {#1} }
-\cs_new:Npx \msg_show_item:nn #1#2
+\cs_new:Npe \msg_show_item:nn #1#2
   {
     ^^J > \use:nn { ~ } { ~ }
     \exp_not:N \tl_to_str:n { {#1} }
@@ -10007,7 +10099,7 @@
     \use:nn { ~ } { ~ } => \use:nn { ~ } { ~ }
     \exp_not:N \tl_to_str:n { {#2} }
   }
-\cs_new:Npx \msg_show_item_unbraced:nn #1#2
+\cs_new:Npe \msg_show_item_unbraced:nn #1#2
   {
     ^^J > \use:nn { ~ } { ~ }
     \exp_not:N \tl_to_str:n {#1}
@@ -10017,7 +10109,7 @@
 \cs_new:Npn \__msg_class_chk_exist:nT #1
   {
     \cs_if_free:cTF { __msg_ #1 _code:nnnnnn }
-      { \msg_error:nnx { msg } { class-unknown } {#1} }
+      { \msg_error:nnn { msg } { class-unknown } {#1} }
   }
 \tl_new:N \l__msg_class_tl
 \tl_new:N \l__msg_current_class_tl
@@ -10032,7 +10124,7 @@
         \__msg_class_chk_exist:nT {#1}
           {
             \tl_set:Nn \l__msg_current_class_tl {#1}
-            \cs_set_protected:Npx \__msg_use_code:
+            \cs_set_protected:Npe \__msg_use_code:
               {
                 \exp_not:n
                   {
@@ -10043,7 +10135,7 @@
             \__msg_use_redirect_name:n { #2 / #3 }
           }
       }
-      { \msg_error:nnxx { msg } { unknown } {#2} {#3} }
+      { \msg_error:nnnn { msg } { unknown } {#2} {#3} }
     \cs_if_exist_use:N \conditionally at traceon
   }
 \cs_new_protected:Npn \__msg_use_code: { }
@@ -10131,7 +10223,7 @@
             \tl_if_eq:NNTF \l__msg_class_tl \l__msg_current_class_tl
               {
                 \prop_put:cnn { l__msg_redirect_ #2 _prop } {#3} {#2}
-                \msg_warning:nnxxxx
+                \msg_warning:nneeee
                   { msg } { redirect-loop }
                   { \seq_item:Nn \l__msg_class_loop_seq { 1 } }
                   { \seq_item:Nn \l__msg_class_loop_seq { 2 } }
@@ -10157,18 +10249,18 @@
   { \msg_new:nnnn { LaTeX / #1 } }
 \cs_new_protected:Npn \__kernel_msg_new:nnn #1
   { \msg_new:nnn { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_info:nnxx #1
-  { \msg_info:nnxx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_warning:nnx #1
-  { \msg_warning:nnx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_warning:nnxx #1
-  { \msg_warning:nnxx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnx #1
-  { \msg_error:nnx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnxx #1
-  { \msg_error:nnxx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnxxx #1
-  { \msg_error:nnxxx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_info:nnee #1
+  { \msg_info:nnee { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nne #1
+  { \msg_warning:nne { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nnee #1
+  { \msg_warning:nnee { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nne #1
+  { \msg_error:nne { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nnee #1
+  { \msg_error:nnee { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nneee #1
+  { \msg_error:nneee { LaTeX / #1 } }
 \cs_new:Npn \__kernel_msg_expandable_error:nnn #1
   { \msg_expandable_error:nnn { LaTeX / #1 } }
 \cs_new:Npn \__kernel_msg_expandable_error:nnf #1
@@ -10608,12 +10700,12 @@
       { \__ior_open_stream:Nn #1 {#2} }
       {
         \__ior_new:N #1
-        \__kernel_tl_set:Nx \l__ior_stream_tl { \int_eval:n {#1} }
+        \__kernel_tl_set:Ne \l__ior_stream_tl { \int_eval:n {#1} }
         \__ior_open_stream:Nn #1 {#2}
       }
   }
 \cs_generate_variant:Nn \__kernel_ior_open:Nn { No }
-\cs_new_protected:Npx \__ior_open_stream:Nn #1#2
+\cs_new_protected:Npe \__ior_open_stream:Nn #1#2
   {
     \tex_global:D \tex_chardef:D #1 = \exp_not:N \l__ior_stream_tl \scan_stop:
     \prop_gput:NVn \exp_not:N \g__ior_streams_prop #1 {#2}
@@ -10625,7 +10717,7 @@
 \cs_new_protected:Npn \ior_shell_open:Nn #1#2
   {
     \sys_if_shell:TF
-      { \exp_args:No \__ior_shell_open:nN { \tl_to_str:n {#2} } #1 }
+      { \__ior_shell_open:oN { \tl_to_str:n {#2} } #1 }
       { \msg_error:nn { kernel } { pipe-failed } }
   }
 \cs_new_protected:Npn \__ior_shell_open:nN #1#2
@@ -10632,11 +10724,12 @@
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \msg_error:nnx
+        \msg_error:nne
           { kernel } { quote-in-shell } {#1}
       }
       { \__kernel_ior_open:Nn #2 { |#1 } }
   }
+\cs_generate_variant:Nn \__ior_shell_open:nN { o }
 \msg_new:nnnn { kernel } { pipe-failed }
   { Cannot~run~piped~system~commands. }
   {
@@ -10665,14 +10758,14 @@
       {
         \prop_get:NVNTF \g__ior_streams_prop #2 \l__ior_internal_tl
           {
-            \exp_args:Nx #1
+            \exp_args:Ne #1
               { \token_to_str:N #2 ~ open: ~ \l__ior_internal_tl }
           }
-          { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } }
+          { \exp_args:Ne #1 { \token_to_str:N #2 ~ closed } }
       }
   }
-\cs_new_protected:Npn \ior_show_list: { \__ior_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \ior_log_list: { \__ior_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \ior_show_list: { \__ior_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \ior_log_list: { \__ior_list:N \msg_log:nneeee }
 \cs_new_protected:Npn \__ior_list:N #1
   {
     #1 { kernel } { show-streams }
@@ -10845,7 +10938,7 @@
 \tl_new:N \l__iow_file_name_tl
 \cs_new_protected:Npn \iow_open:Nn #1#2
   {
-    \__kernel_tl_set:Nx \l__iow_file_name_tl
+    \__kernel_tl_set:Ne \l__iow_file_name_tl
       { \__kernel_file_name_sanitize:n {#2} }
     \iow_close:N #1
     \seq_gpop:NNTF \g__iow_streams_seq \l__iow_stream_tl
@@ -10852,7 +10945,7 @@
       { \__iow_open_stream:NV #1 \l__iow_file_name_tl }
       {
         \__iow_new:N #1
-        \__kernel_tl_set:Nx \l__iow_stream_tl { \int_eval:n {#1} }
+        \__kernel_tl_set:Ne \l__iow_stream_tl { \int_eval:n {#1} }
         \__iow_open_stream:NV #1 \l__iow_file_name_tl
       }
   }
@@ -10868,7 +10961,7 @@
 \cs_new_protected:Npn \iow_shell_open:Nn #1#2
   {
     \sys_if_shell:TF
-      { \exp_args:No \__iow_shell_open:nN { \tl_to_str:n {#2} } #1 }
+      { \__iow_shell_open:oN { \tl_to_str:n {#2} } #1 }
       { \msg_error:nn { kernel } { pipe-failed } }
   }
 \cs_new_protected:Npn \__iow_shell_open:nN #1#2
@@ -10875,11 +10968,12 @@
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \msg_error:nnx
+        \msg_error:nne
           { kernel } { quote-in-shell } {#1}
       }
       { \__kernel_iow_open:Nn #2 { |#1 } }
   }
+\cs_generate_variant:Nn \__iow_shell_open:nN { o }
 \cs_new_protected:Npn \iow_close:N #1
   {
     \int_compare:nT { \c_log_iow < #1 < \c_term_iow }
@@ -10902,14 +10996,14 @@
       {
         \prop_get:NVNTF \g__iow_streams_prop #2 \l__iow_internal_tl
           {
-            \exp_args:Nx #1
+            \exp_args:Ne #1
               { \token_to_str:N #2 ~ open: ~ \l__iow_internal_tl }
           }
-          { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } }
+          { \exp_args:Ne #1 { \token_to_str:N #2 ~ closed } }
       }
   }
-\cs_new_protected:Npn \iow_show_list: { \__iow_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \iow_log_list: { \__iow_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \iow_show_list: { \__iow_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \iow_log_list: { \__iow_list:N \msg_log:nneeee }
 \cs_new_protected:Npn \__iow_list:N #1
   {
     #1 { kernel } { show-streams }
@@ -10920,17 +11014,18 @@
       }
       { } { }
   }
-\cs_new_protected:Npn \iow_shipout_x:Nn #1#2
+\cs_new_protected:Npn \iow_shipout_e:Nn #1#2
   { \tex_write:D #1 {#2} }
-\cs_generate_variant:Nn \iow_shipout_x:Nn { c, Nx, cx }
+\cs_generate_variant:Nn \iow_shipout_e:Nn { Ne , c, ce }
 \cs_new_protected:Npn \iow_shipout:Nn #1#2
   { \tex_write:D #1 { \exp_not:n {#2} } }
-\cs_generate_variant:Nn \iow_shipout:Nn { c, Nx, cx }
+\cs_generate_variant:Nn \iow_shipout:Nn { Ne , c, ce }
+\cs_generate_variant:Nn \iow_shipout:Nn { Nx , cx }
 \cs_new_protected:Npn \__kernel_iow_with:Nnn #1#2
   {
     \int_compare:nNnTF {#1} = {#2}
       { \use:n }
-      { \exp_args:No \__iow_with:nNnn { \int_use:N #1 } #1 {#2} }
+      { \__iow_with:oNnn { \int_use:N #1 } #1 {#2} }
   }
 \cs_new_protected:Npn \__iow_with:nNnn #1#2#3#4
   {
@@ -10938,16 +11033,20 @@
     #4
     \int_set:Nn #2 {#1}
   }
+\cs_generate_variant:Nn \__iow_with:nNnn { o }
 \cs_new_protected:Npn \iow_now:Nn #1#2
   {
     \__kernel_iow_with:Nnn \tex_newlinechar:D { `\^^J }
       { \tex_immediate:D \tex_write:D #1 { \exp_not:n {#2} } }
   }
-\cs_generate_variant:Nn \iow_now:Nn { NV , Nx , c , cV , cx }
-\cs_set_protected:Npn \iow_log:x  { \iow_now:Nx \c_log_iow  }
+\cs_generate_variant:Nn \iow_now:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \iow_now:Nn { Nx , cx }
 \cs_new_protected:Npn \iow_log:n  { \iow_now:Nn \c_log_iow  }
-\cs_set_protected:Npn \iow_term:x { \iow_now:Nx \c_term_iow }
+\cs_set_protected:Npn \iow_log:e  { \iow_now:Ne \c_log_iow  }
+\cs_generate_variant:Nn \iow_log:n { x }
 \cs_new_protected:Npn \iow_term:n { \iow_now:Nn \c_term_iow }
+\cs_set_protected:Npn \iow_term:e { \iow_now:Ne \c_term_iow }
+\cs_generate_variant:Nn \iow_term:n { x }
 \cs_new:Npn \iow_newline: { ^^J }
 \cs_new_eq:NN \iow_char:N \cs_to_str:N
 \int_new:N  \l_iow_line_count_int
@@ -10959,7 +11058,7 @@
 \cs_new:Npn \__iow_unindent:w { }
 \cs_new_protected:Npn \__iow_set_indent:n #1
   {
-    \__kernel_tl_set:Nx \l__iow_one_indent_tl
+    \__kernel_tl_set:Ne \l__iow_one_indent_tl
       { \exp_args:No \__kernel_str_to_other_fast:n { \tl_to_str:n {#1} } }
     \int_set:Nn \l__iow_one_indent_int
       { \str_count:N \l__iow_one_indent_tl }
@@ -10966,7 +11065,7 @@
     \exp_last_unbraced:NNo
       \cs_set:Npn \__iow_unindent:w \l__iow_one_indent_tl { }
   }
-\exp_args:Nx \__iow_set_indent:n { \prg_replicate:nn { 4 } { ~ } }
+\exp_args:Ne \__iow_set_indent:n { \prg_replicate:nn { 4 } { ~ } }
 \tl_new:N \l__iow_indent_tl
 \int_new:N \l__iow_indent_int
 \tl_new:N \l__iow_line_tl
@@ -10975,13 +11074,13 @@
 \tl_new:N \l__iow_wrap_tl
 \group_begin:
   \int_set:Nn \tex_escapechar:D { -1 }
-  \tl_const:Nx \c__iow_wrap_marker_tl
+  \tl_const:Ne \c__iow_wrap_marker_tl
     { \tl_to_str:n { \^^I \^^O \^^W \^^_ \^^W \^^R \^^A \^^P } }
 \group_end:
 \tl_map_inline:nn
   { { end } { newline } { allow_break } { indent } { unindent } }
   {
-    \tl_const:cx { c__iow_wrap_ #1 _marker_tl }
+    \tl_const:ce { c__iow_wrap_ #1 _marker_tl }
       {
         \c__iow_wrap_marker_tl
         #1
@@ -10993,7 +11092,7 @@
     \msg_error:nnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_wrap_allow_break: }
   }
-\cs_new:Npx \__iow_wrap_allow_break: { \c__iow_wrap_allow_break_marker_tl }
+\cs_new:Npe \__iow_wrap_allow_break: { \c__iow_wrap_allow_break_marker_tl }
 \cs_new:Npn \__iow_wrap_allow_break_error:
   {
     \msg_expandable_error:nnnn { kernel } { iow-indent }
@@ -11005,7 +11104,7 @@
       { \iow_wrap:nnnN } { \iow_indent:n } {#1}
     #1
   }
-\cs_new:Npx \__iow_indent:n #1
+\cs_new:Npe \__iow_indent:n #1
   {
     \c__iow_wrap_indent_marker_tl
     #1
@@ -11022,11 +11121,11 @@
     \group_begin:
       \cs_if_exist_use:N \conditionally at traceoff
       \int_set:Nn \tex_escapechar:D { -1 }
-      \cs_set:Npx \{ { \token_to_str:N \{ }
-      \cs_set:Npx \# { \token_to_str:N \# }
-      \cs_set:Npx \} { \token_to_str:N \} }
-      \cs_set:Npx \% { \token_to_str:N \% }
-      \cs_set:Npx \~ { \token_to_str:N \~ }
+      \cs_set:Npe \{ { \token_to_str:N \{ }
+      \cs_set:Npe \# { \token_to_str:N \# }
+      \cs_set:Npe \} { \token_to_str:N \} }
+      \cs_set:Npe \% { \token_to_str:N \% }
+      \cs_set:Npe \~ { \token_to_str:N \~ }
       \int_set:Nn \tex_escapechar:D { 92 }
       \cs_set_eq:NN \\ \iow_newline:
       \cs_set_eq:NN \  \c_catcode_other_space_tl
@@ -11034,11 +11133,11 @@
       \cs_set_eq:NN \iow_indent:n \__iow_indent:n
       #3
       \cs_set_eq:NN \protect \token_to_str:N
-      \__kernel_tl_set:Nx \l__iow_wrap_tl {#1}
+      \__kernel_tl_set:Ne \l__iow_wrap_tl {#1}
       \cs_set_eq:NN \iow_wrap_allow_break: \__iow_wrap_allow_break_error:
       \cs_set_eq:NN \iow_indent:n \__iow_indent_error:n
-      \__kernel_tl_set:Nx \l__iow_newline_tl { \iow_newline: #2 }
-      \__kernel_tl_set:Nx \l__iow_newline_tl { \tl_to_str:N \l__iow_newline_tl }
+      \__kernel_tl_set:Ne \l__iow_newline_tl { \iow_newline: #2 }
+      \__kernel_tl_set:Ne \l__iow_newline_tl { \tl_to_str:N \l__iow_newline_tl }
       \int_set:Nn \l__iow_line_target_int
         { \l_iow_line_count_int - \str_count:N \l__iow_newline_tl + 1 }
        \int_compare:nNnT { \l__iow_line_target_int } < 0
@@ -11051,15 +11150,15 @@
     \exp_args:NNf \group_end:
     #4 { \tl_to_str:N \l__iow_wrap_tl }
   }
-\cs_generate_variant:Nn \iow_wrap:nnnN { nx }
+\cs_generate_variant:Nn \iow_wrap:nnnN { ne }
 \cs_new_protected:Npn \__iow_wrap_do:
   {
-    \__kernel_tl_set:Nx \l__iow_wrap_tl
+    \__kernel_tl_set:Ne \l__iow_wrap_tl
       {
         \exp_args:No \__kernel_str_to_other_fast:n \l__iow_wrap_tl
         \c__iow_wrap_end_marker_tl
       }
-    \__kernel_tl_set:Nx \l__iow_wrap_tl
+    \__kernel_tl_set:Ne \l__iow_wrap_tl
       {
         \exp_after:wN \__iow_wrap_fix_newline:w \l__iow_wrap_tl
           ^^J \q__iow_nil ^^J \s__iow_stop
@@ -11217,7 +11316,7 @@
   }
 \cs_new_protected:Npn \__iow_wrap_allow_break:n #1
   {
-    \__kernel_tl_set:Nx \l__iow_line_tl
+    \__kernel_tl_set:Ne \l__iow_line_tl
       { \l__iow_line_tl \__iow_wrap_trim:N \l__iow_line_part_tl }
     \bool_set_false:N \l__iow_line_break_bool
     \tl_if_empty:NTF \l__iow_line_part_tl
@@ -11226,7 +11325,7 @@
   }
 \cs_new_protected:Npn \__iow_wrap_indent:n #1
   {
-    \tl_put_right:Nx \l__iow_line_tl { \l__iow_line_part_tl }
+    \tl_put_right:Ne \l__iow_line_tl { \l__iow_line_part_tl }
     \bool_set_false:N \l__iow_line_break_bool
     \int_add:Nn \l__iow_indent_int { \l__iow_one_indent_int }
     \tl_put_right:No \l__iow_indent_tl { \l__iow_one_indent_tl }
@@ -11234,10 +11333,10 @@
   }
 \cs_new_protected:Npn \__iow_wrap_unindent:n #1
   {
-    \tl_put_right:Nx \l__iow_line_tl { \l__iow_line_part_tl }
+    \tl_put_right:Ne \l__iow_line_tl { \l__iow_line_part_tl }
     \bool_set_false:N \l__iow_line_break_bool
     \int_sub:Nn \l__iow_indent_int { \l__iow_one_indent_int }
-    \__kernel_tl_set:Nx \l__iow_indent_tl
+    \__kernel_tl_set:Ne \l__iow_indent_tl
       { \exp_after:wN \__iow_unindent:w \l__iow_indent_tl }
     \__iow_wrap_chunk:nw {#1}
   }
@@ -11256,9 +11355,9 @@
   }
 \cs_new_protected:Npn \__iow_wrap_store_do:n #1
   {
-    \__kernel_tl_set:Nx \l__iow_line_tl
+    \__kernel_tl_set:Ne \l__iow_line_tl
       { \l__iow_line_tl \l__iow_line_part_tl }
-    \__kernel_tl_set:Nx \l__iow_wrap_tl
+    \__kernel_tl_set:Ne \l__iow_wrap_tl
       {
         \l__iow_wrap_tl
         \l__iow_newline_tl
@@ -11275,6 +11374,8 @@
     \cs_new:Npn \__iow_wrap_trim_aux:w ##1 \s__iow_mark ##2 \s__iow_stop {##1}
   }
 \exp_args:NV \__iow_tmp:w \c_catcode_other_space_tl
+\cs_new_eq:NN \iow_shipout_x:Nn \iow_shipout_e:Nn
+\cs_generate_variant:Nn \iow_shipout_x:Nn { Nx , c, cx }
 \tl_new:N \l__file_internal_tl
 \str_new:N \g_file_curr_dir_str
 \str_new:N \g_file_curr_ext_str
@@ -11287,7 +11388,7 @@
         {
           \cs_set:Npn \__file_tmp:w ##1 " ##2 " ##3 \s__file_stop
             { { } {##2} {  } }
-          \seq_gput_right:Nx \g__file_stack_seq
+          \seq_gput_right:Ne \g__file_stack_seq
             {
               \exp_after:wN \__file_tmp:w \tex_jobname:D
                 " \tex_jobname:D " \s__file_stop
@@ -11401,12 +11502,13 @@
       { #1 }
       { "#1" }
   }
-\tl_const:Nx \c__file_marker_tl { : \token_to_str:N : }
+\tl_const:Ne \c__file_marker_tl { : \token_to_str:N : }
 \cs_new_protected:Npn \file_get:nnN #1#2#3
   {
     \file_get:nnNF {#1} {#2} #3
       { \tl_set:Nn #3 { \q_no_value } }
   }
+\cs_generate_variant:Nn \file_get:nnN { V }
 \prg_new_protected_conditional:Npnn \file_get:nnN #1#2#3 { T , F , TF }
   {
     \file_get_full_name:nNTF {#1} \l__file_full_name_tl
@@ -11418,7 +11520,8 @@
       }
       { \prg_return_false: }
   }
-\cs_new_protected:Npx \__file_get_aux:nnN #1#2#3
+\prg_generate_conditional_variant:Nnn \file_get:nnN { V } { T , F , TF }
+\cs_new_protected:Npe \__file_get_aux:nnN #1#2#3
   {
     \exp_not:N \if_false: { \exp_not:N \fi:
     \group_begin:
@@ -11448,6 +11551,7 @@
     \exp_args:Ne \__file_full_name:n
       { \__kernel_file_name_sanitize:n {#1} }
   }
+\cs_generate_variant:Nn \file_full_name:n { V }
 \cs_new:Npn \__file_full_name:n #1
   {
     \tl_if_blank:nF {#1}
@@ -11527,7 +11631,7 @@
       }
       { \__file_ext_check:nnw {#1} { #2 #3 / } #4 / #5 \s__file_stop }
   }
-\cs_new:Npx \__file_ext_check:nnnw #1#2#3#4 . #5 . #6 \s__file_stop
+\cs_new:Npe \__file_ext_check:nnnw #1#2#3#4 . #5 . #6 \s__file_stop
   {
     \exp_not:N \__file_quark_if_nil:nTF {#5}
       {
@@ -11558,20 +11662,21 @@
 \cs_generate_variant:Nn \file_get_full_name:nN { V }
 \prg_new_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF }
   {
-    \__kernel_tl_set:Nx #2
+    \__kernel_tl_set:Ne #2
       { \file_full_name:n {#1} }
     \tl_if_empty:NTF #2
       { \prg_return_false: }
       { \prg_return_true: }
   }
-\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 }
+\prg_generate_conditional_variant:Nnn \file_get_full_name:nN
+  { V } { T , F ,  TF }
 \ior_new:N \g__file_internal_ior
 \cs_new:Npn \file_size:n #1
   { \__file_details:nn {#1} { size } }
+\cs_generate_variant:Nn \file_size:n { V }
 \cs_new:Npn \file_timestamp:n #1
   { \__file_details:nn {#1} { moddate } }
+\cs_generate_variant:Nn \file_timestamp:n { V }
 \cs_new:Npn \__file_details:nn #1#2
   {
     \exp_args:Ne \__file_details_aux:nn
@@ -11584,6 +11689,7 @@
   }
 \cs_new:Npn \file_mdfive_hash:n #1
   { \exp_args:Ne \__file_mdfive_hash:n { \file_full_name:n {#1} } }
+\cs_generate_variant:Nn \file_mdfive_hash:n { V }
 \cs_new:Npn \__file_mdfive_hash:n #1
   { \tex_mdfivesum:D file {#1} }
 \cs_new:Npn \file_hex_dump:nnn #1#2#3
@@ -11593,6 +11699,7 @@
       { \int_eval:n {#2} }
       { \int_eval:n {#3} }
   }
+\cs_generate_variant:Nn \file_hex_dump:nnn { V }
 \cs_new:Npn \__file_hex_dump_auxi:nnn #1#2#3
   {
     \bool_lazy_any:nF
@@ -11636,6 +11743,7 @@
   }
 \cs_new:Npn \file_hex_dump:n #1
   { \exp_args:Ne \__file_hex_dump:n { \file_full_name:n {#1} } }
+\cs_generate_variant:Nn \file_hex_dump:n { V }
 \sys_if_engine_luatex:TF
   {
     \cs_new:Npn \__file_hex_dump:n #1
@@ -11653,23 +11761,35 @@
   }
 \cs_new_protected:Npn \file_get_hex_dump:nN #1#2
   { \file_get_hex_dump:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_hex_dump:nN { V }
 \cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2
   { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_mdfive_hash:nN { V }
 \cs_new_protected:Npn \file_get_size:nN #1#2
   { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_size:nN { V }
 \cs_new_protected:Npn \file_get_timestamp:nN #1#2
   { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_timestamp:nN { V }
 \prg_new_protected_conditional:Npnn \file_get_hex_dump:nN #1#2 { T , F , TF }
   { \__file_get_details:nnN {#1} { hex_dump } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_hex_dump:nN
+  { V } { T , F , TF }
 \prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF }
   { \__file_get_details:nnN {#1} { mdfive_hash } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_mdfive_hash:nN
+  { V } { T , F , TF }
 \prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF }
   { \__file_get_details:nnN {#1} { size } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_size:nN
+  { V } { T , F , TF }
 \prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF }
   { \__file_get_details:nnN {#1} { timestamp } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_timestamp:nN
+  { V } { T , F , TF }
 \cs_new_protected:Npn \__file_get_details:nnN #1#2#3
   {
-    \__kernel_tl_set:Nx #3
+    \__kernel_tl_set:Ne #3
       { \use:c { file_ #2 :n } {#1} }
     \tl_if_empty:NTF #3
       { \prg_return_false: }
@@ -11680,15 +11800,18 @@
     \file_get_hex_dump:nnnNF {#1} {#2} {#3} #4
       { \tl_set:Nn #4 { \q_no_value } }
   }
+\cs_generate_variant:Nn \file_get_hex_dump:nnnN { V }
 \prg_new_protected_conditional:Npnn \file_get_hex_dump:nnnN #1#2#3#4
   { T , F , TF }
   {
-    \__kernel_tl_set:Nx #4
+    \__kernel_tl_set:Ne #4
       { \file_hex_dump:nnn {#1} {#2} {#3} }
     \tl_if_empty:NTF #4
       { \prg_return_false: }
       { \prg_return_true: }
   }
+\prg_generate_conditional_variant:Nnn \file_get_hex_dump:nnnN
+  { V } { T , F , TF }
 \cs_new_eq:NN \__file_str_cmp:nn \tex_strcmp:D
 \prg_new_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
   { p , T , F , TF }
@@ -11698,6 +11821,8 @@
       { \file_full_name:n {#3} }
       #2
    }
+\prg_generate_conditional_variant:Nnn \file_compare_timestamp:nNn
+  { nNV , V , VNV } { p , T , F , TF }
 \cs_new:Npn \__file_compare_timestamp:nnN #1#2#3
   {
     \tl_if_blank:nTF {#1}
@@ -11731,18 +11856,19 @@
       }
   }
 \cs_new_eq:NN \__file_timestamp:n \tex_filemoddate:D
-\prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF }
+\prg_new_conditional:Npnn \file_if_exist:n #1 { p , T , F , TF }
   {
-    \file_get_full_name:nNTF {#1} \l__file_full_name_tl
+    \tl_if_blank:eTF { \file_full_name:n {#1} }
+      { \prg_return_false: }
       { \prg_return_true: }
-      { \prg_return_false: }
   }
-\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { p , T , F , TF }
 \cs_new_protected:Npn \file_if_exist_input:n #1
   {
     \file_get_full_name:nNT {#1} \l__file_full_name_tl
       { \__file_input:V \l__file_full_name_tl }
   }
+\cs_generate_variant:Nn \file_if_exist_input:n { V }
 \cs_new_protected:Npn \file_if_exist_input:nF #1#2
   {
     \file_get_full_name:nNTF {#1} \l__file_full_name_tl
@@ -11749,10 +11875,11 @@
       { \__file_input:V \l__file_full_name_tl }
       {#2}
   }
+\cs_generate_variant:Nn \file_if_exist_input:nF { V }
 \cs_new_protected:Npn \file_input_stop: { \tex_endinput:D }
 \cs_new_protected:Npn \__kernel_file_missing:n #1
   {
-    \msg_error:nnx { kernel } { file-not-found }
+    \msg_error:nne { kernel } { file-not-found }
       { \__kernel_file_name_sanitize:n {#1} }
   }
 \cs_new_protected:Npn \file_input:n #1
@@ -11762,7 +11889,7 @@
       { \__kernel_file_missing:n {#1} }
   }
 \cs_generate_variant:Nn \file_input:n { V }
-\cs_new_protected:Npx \__file_input:n #1
+\cs_new_protected:Npe \__file_input:n #1
   {
     \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist
       { \exp_not:N \@addtofilelist {#1} }
@@ -11777,7 +11904,7 @@
 \cs_generate_variant:Nn \__file_input:n { V }
 \cs_new_protected:Npn \__file_input_push:n #1
   {
-    \seq_gpush:Nx \g__file_stack_seq
+    \seq_gpush:Ne \g__file_stack_seq
       {
         { \g_file_curr_dir_str }
         { \g_file_curr_name_str }
@@ -11804,7 +11931,8 @@
   }
 \cs_new:Npn \file_input_raw:n #1
   { \exp_args:Ne \__file_input_raw:nn { \file_full_name:n {#1} } {#1} }
-\cs_new:Npx \__file_input_raw:nn #1#2
+\cs_generate_variant:Nn \file_input_raw:n { V }
+\cs_new:Npe \__file_input_raw:nn #1#2
   {
     \exp_not:N \tl_if_blank:nTF {#1}
       {
@@ -11825,11 +11953,13 @@
     \file_parse_full_name_apply:nN {#1}
       \prg_do_nothing:
   }
+\cs_generate_variant:Nn \file_parse_full_name:n { V }
 \cs_new:Npn \file_parse_full_name_apply:nN #1
   {
     \exp_args:Ne \__file_parse_full_name_auxi:nN
       { \__kernel_file_name_sanitize:n {#1} }
   }
+\cs_generate_variant:Nn \file_parse_full_name_apply:nN { V }
 \cs_new:Npn \__file_parse_full_name_auxi:nN #1
   {
     \__file_parse_full_name_area:nw { } #1
@@ -11877,14 +12007,14 @@
     \str_set:Nn #6 {#3}
   }
 \cs_generate_variant:Nn \file_parse_full_name:nNNN { V }
-\cs_new_protected:Npn \file_show_list: { \__file_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \file_log_list: { \__file_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \file_show_list: { \__file_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \file_log_list: { \__file_list:N \msg_log:nneeee }
 \cs_new_protected:Npn \__file_list:N #1
   {
     \seq_clear:N \l__file_tmp_seq
     \clist_if_exist:NT \@filelist
       {
-        \exp_args:NNx \seq_set_from_clist:Nn \l__file_tmp_seq
+        \exp_args:NNe \seq_set_from_clist:Nn \l__file_tmp_seq
           { \tl_to_str:N \@filelist }
       }
     \seq_concat:NNN \l__file_tmp_seq \l__file_tmp_seq \g__file_record_seq
@@ -11898,7 +12028,7 @@
   {
     \AtBeginDocument
       {
-        \exp_args:NNx \seq_set_from_clist:Nn \l__file_tmp_seq
+        \exp_args:NNe \seq_set_from_clist:Nn \l__file_tmp_seq
           { \tl_to_str:N \@filelist }
         \seq_gconcat:NNN
           \g__file_record_seq
@@ -11964,7 +12094,7 @@
 \cs_new:Npn \__file_parse_version:w #1 - #2 - #3 \s__file_stop {#1#2#3}
 \cs_new_protected:Npn \__file_mismatched_dependency_error:nn #1 #2
   {
-    \exp_args:NNx \ior_shell_open:Nn \g__file_internal_ior
+    \exp_args:NNe \ior_shell_open:Nn \g__file_internal_ior
       {
         kpsewhich ~ --all ~
           --engine = \c_sys_engine_exec_str
@@ -12054,7 +12184,7 @@
   }
 \sys_if_engine_luatex:TF
   {
-    \str_const:Nx \c_sys_platform_str
+    \str_const:Ne \c_sys_platform_str
       { \tex_directlua:D { tex.print(os.type) } }
   }
   {
@@ -12346,7 +12476,7 @@
   {
     \int_gincr:N \g__kernel_prg_map_int
     \exp_args:NNc \__dim_step:NNnnnn
-      \cs_gset_protected:Npx
+      \cs_gset_protected:Npe
       { __dim_map_ \int_use:N \g__kernel_prg_map_int :w }
       {#1}{#2}{#3}
       {
@@ -12387,10 +12517,10 @@
     \exp_after:wN
       \__dim_to_decimal:w \dim_use:N \__dim_eval:w #1 \__dim_eval_end:
   }
-\use:x
+\use:e
   {
     \cs_new:Npn \exp_not:N \__dim_to_decimal:w
-      ##1 . ##2 \tl_to_str:n { pt }
+      #1 . #2 \tl_to_str:n { pt }
   }
       {
         \int_compare:nNnTF {#2} > \c_zero_int
@@ -12934,9 +13064,10 @@
   }
 \cs_new_protected:Npn \keys_define:nn
   { \__keys_define:onn \l__keys_module_str }
+\cs_generate_variant:Nn \keys_define:nn { ne , nx }
 \cs_new_protected:Npn \__keys_define:nnn #1#2#3
   {
-    \str_set:Nx \l__keys_module_str { \__keys_trim_spaces:n {#2} }
+    \str_set:Ne \l__keys_module_str { \__keys_trim_spaces:n {#2} }
     \keyval_parse:NNn \__keys_define:n \__keys_define:nn {#3}
     \str_set:Nn \l__keys_module_str {#1}
   }
@@ -12959,7 +13090,7 @@
       {
         \str_if_empty:NF \l__keys_property_str
           {
-            \msg_error:nnxx { keys } { property-unknown }
+            \msg_error:nnee { keys } { property-unknown }
               \l__keys_property_str \l_keys_path_str
           }
       }
@@ -12966,7 +13097,7 @@
   }
 \cs_new_protected:Npn \__keys_property_find:n #1
   {
-    \cs_set_nopar:Npx \l__keys_property_str { \__keys_trim_spaces:n { #1 } }
+    \cs_set_nopar:Npe \l__keys_property_str { \__keys_trim_spaces:n { #1 } }
     \exp_after:wN \__keys_property_find_auxi:w \l__keys_property_str
       \s__keys_nil \__keys_property_find_auxii:w
       . \s__keys_nil \__keys_property_find_err:w
@@ -12979,7 +13110,7 @@
     #1 \s__keys_mark #2 \s__keys_nil \__keys_property_find_auxii:w . \s__keys_nil
     \__keys_property_find_err:w
   {
-    \cs_set_nopar:Npx \l_keys_path_str
+    \cs_set_nopar:Npe \l_keys_path_str
       { \str_if_empty:NF \l__keys_module_str { \l__keys_module_str / } #1 }
     \__keys_property_find_auxi:w #2 \s__keys_nil \__keys_property_find_auxiii:w . \s__keys_nil
       \__keys_property_find_auxiv:w
@@ -12986,7 +13117,7 @@
   }
 \cs_new_protected:Npn \__keys_property_find_auxiii:w #1 \s__keys_mark
   {
-    \cs_set_nopar:Npx \l_keys_path_str { \l_keys_path_str . #1 }
+    \cs_set_nopar:Npe \l_keys_path_str { \l_keys_path_str . #1 }
     \__keys_property_find_auxi:w
   }
 \cs_new_protected:Npn \__keys_property_find_auxiv:w
@@ -12993,8 +13124,8 @@
     #1 \s__keys_nil \__keys_property_find_auxiii:w
     \s__keys_mark \s__keys_nil \__keys_property_find_auxiv:w
   {
-    \cs_set_nopar:Npx \l__keys_property_str { . #1 }
-    \cs_set_nopar:Npx \l_keys_path_str
+    \cs_set_nopar:Npe \l__keys_property_str { . #1 }
+    \cs_set_nopar:Npe \l_keys_path_str
       { \exp_after:wN \__keys_trim_spaces:n \exp_after:wN { \l_keys_path_str } }
     \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
   }
@@ -13012,7 +13143,7 @@
           \l__keys_property_str \s__keys_stop
           { \use:c { \c__keys_props_root_str \l__keys_property_str } }
           {
-            \msg_error:nnxx { keys } { property-requires-value }
+            \msg_error:nnee { keys } { property-requires-value }
               \l__keys_property_str \l_keys_path_str
           }
       }
@@ -13031,13 +13162,13 @@
   {
     \bool_if_exist:NF #1 { \bool_new:N #1 }
     \__keys_choice_make:
-    \__keys_cmd_set:nx { \l_keys_path_str / true }
+    \__keys_cmd_set:ne { \l_keys_path_str / true }
       { \exp_not:c { bool_ #2 set_ #3 :N } \exp_not:N #1 }
-    \__keys_cmd_set:nx { \l_keys_path_str / false }
+    \__keys_cmd_set:ne { \l_keys_path_str / false }
       { \exp_not:c { bool_ #2 set_ #4 :N } \exp_not:N #1 }
     \__keys_cmd_set_direct:nn { \l_keys_path_str / unknown }
       {
-        \msg_error:nnx { keys } { boolean-values-only }
+        \msg_error:nne { keys } { boolean-values-only }
           \l_keys_path_str
       }
     \__keys_default_set:n { true }
@@ -13056,7 +13187,7 @@
           { \c__keys_type_root_str \__keys_parent:o \l_keys_path_str }
           { choice }
           {
-            \msg_error:nnxx { keys } { nested-choice-key }
+            \msg_error:nnee { keys } { nested-choice-key }
               \l_keys_path_tl { \__keys_parent:o \l_keys_path_str }
           }
           { \__keys_choice_make_aux:N #1 }
@@ -13070,7 +13201,7 @@
     \__keys_cmd_set_direct:nn \l_keys_path_str { #1 {##1} }
     \__keys_cmd_set_direct:nn { \l_keys_path_str / unknown }
       {
-        \msg_error:nnxx { keys } { choice-unknown }
+        \msg_error:nnee { keys } { choice-unknown }
           \l_keys_path_str {##1}
       }
   }
@@ -13085,7 +13216,7 @@
     \clist_map_inline:nn {#2}
       {
         \int_incr:N \l_keys_choice_int
-        \__keys_cmd_set:nx
+        \__keys_cmd_set:ne
           { \l_keys_path_str / \__keys_trim_spaces:n {##1} }
           {
             \tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
@@ -13097,12 +13228,12 @@
   }
 \cs_new_protected:Npn \__keys_cmd_set:nn #1#2
   {  \__keys_cmd_set_direct:nn {#1} { \__keys_precompile:n {#2} } }
-\cs_generate_variant:Nn \__keys_cmd_set:nn { nx , Vn , Vo }
+\cs_generate_variant:Nn \__keys_cmd_set:nn { ne , Vn , Vo }
 \cs_new_protected:Npn \__keys_cmd_set_direct:nn #1#2
   { \cs_set_protected:cpn { \c__keys_code_root_str #1 } ##1 {#2} }
 \cs_new_protected:Npn \__keys_cs_set:NNpn #1#2#3#
   {
-    \cs_set_protected:cpx { \c__keys_code_root_str \l_keys_path_str } ##1
+    \cs_set_protected:cpe { \c__keys_code_root_str \l_keys_path_str } ##1
       {
         \__keys_precompile:n
           { #1 \exp_not:N #2 \exp_not:n {#3} {##1} }
@@ -13119,7 +13250,7 @@
           \tex_undefined:D
       }
       {
-        \cs_set_nopar:cpx
+        \cs_set_nopar:cpe
           { \c__keys_default_root_str \l_keys_path_str }
           { \exp_not:n {#1} }
         \__keys_value_requirement:nn { required } { false }
@@ -13168,13 +13299,13 @@
 \cs_new_protected:Npn \__keys_legacy_if_set:nnnn #1#2#3#4
   {
     \__keys_choice_make:
-    \__keys_cmd_set:nx { \l_keys_path_str / true }
+    \__keys_cmd_set:ne { \l_keys_path_str / true }
       { \exp_not:c { legacy_if_#2  set_ #3 :n } { \exp_not:n {#1} } }
-    \__keys_cmd_set:nx { \l_keys_path_str / false }
+    \__keys_cmd_set:ne { \l_keys_path_str / false }
       { \exp_not:c { legacy_if_#2  set_ #4 :n } { \exp_not:n {#1} } }
     \__keys_cmd_set:nn { \l_keys_path_str / unknown }
       {
-        \msg_error:nnx { keys } { boolean-values-only }
+        \msg_error:nne { keys } { boolean-values-only }
           \l_keys_path_str
       }
     \__keys_default_set:n { true }
@@ -13202,7 +13333,7 @@
     \prop_if_exist:NF #1 { \prop_new:N #1 }
     \exp_after:wN \__keys_find_key_module:wNN \l_keys_path_str \s__keys_stop
       \l__keys_tmpa_tl \l__keys_tmpb_tl
-    \__keys_cmd_set:nx \l_keys_path_str
+    \__keys_cmd_set:ne \l_keys_path_str
       {
         \exp_not:c { prop_ #2 put:Nnn }
         \exp_not:N #1
@@ -13244,7 +13375,7 @@
           }
       }
       {
-        \msg_error:nnx { keys }
+        \msg_error:nne { keys }
           { boolean-values-only }
           { .value_ #1 :n }
       }
@@ -13253,7 +13384,7 @@
   {
     \bool_if:NF \l__keys_no_value_bool
       {
-        \msg_error:nnxx { keys } { value-forbidden }
+        \msg_error:nnee { keys } { value-forbidden }
           \l_keys_path_str \l_keys_value_tl
         \use_none:nnn
       }
@@ -13262,7 +13393,7 @@
   {
     \bool_if:NT \l__keys_no_value_bool
       {
-        \msg_error:nnx { keys } { value-required }
+        \msg_error:nne { keys } { value-required }
           \l_keys_path_str
         \use_none:nnn
       }
@@ -13304,7 +13435,7 @@
   {
     \prop_get:NVNF #1 \l__keys_module_str \l__keys_tmpa_tl
       { \tl_clear:N \l__keys_tmpa_tl }
-    \tl_set:Nx \l__keys_tmpb_tl
+    \tl_set:Ne \l__keys_tmpb_tl
       { \exp_after:wN \__keys_usage:w \l_keys_path_str \s__keys_stop }
     \bool_if:NTF #2
       { \clist_put_right:NV \l__keys_tmpa_tl \l__keys_tmpb_tl }
@@ -13316,7 +13447,7 @@
 \cs_new_protected:Npn \__keys_variable_set:NnnN #1#2#3#4
   {
     \use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 }
-    \__keys_cmd_set:nx \l_keys_path_str
+    \__keys_cmd_set:ne \l_keys_path_str
       {
         \exp_not:c { #2 _ #3 set:N #4 }
         \exp_not:N #1
@@ -13352,6 +13483,8 @@
   { \__keys_choices_make:nn #1 }
 \cs_new_protected:cpn { \c__keys_props_root_str .choices:Vn } #1
   { \exp_args:NV \__keys_choices_make:nn #1 }
+\cs_new_protected:cpn { \c__keys_props_root_str .choices:en } #1
+  { \exp_args:Ne \__keys_choices_make:nn #1 }
 \cs_new_protected:cpn { \c__keys_props_root_str .choices:on } #1
   { \exp_args:No \__keys_choices_make:nn #1 }
 \cs_new_protected:cpn { \c__keys_props_root_str .choices:xn } #1
@@ -13386,6 +13519,8 @@
   { \__keys_default_set:n {#1} }
 \cs_new_protected:cpn { \c__keys_props_root_str .default:V } #1
   { \exp_args:NV \__keys_default_set:n #1 }
+\cs_new_protected:cpn { \c__keys_props_root_str .default:e } #1
+  { \exp_args:Ne \__keys_default_set:n {#1} }
 \cs_new_protected:cpn { \c__keys_props_root_str .default:o } #1
   { \exp_args:No \__keys_default_set:n {#1} }
 \cs_new_protected:cpn { \c__keys_props_root_str .default:x } #1
@@ -13414,6 +13549,8 @@
   { \__keys_initialise:n {#1} }
 \cs_new_protected:cpn { \c__keys_props_root_str .initial:V } #1
   { \exp_args:NV \__keys_initialise:n #1 }
+\cs_new_protected:cpn { \c__keys_props_root_str .initial:e } #1
+  { \exp_args:Ne \__keys_initialise:n {#1} }
 \cs_new_protected:cpn { \c__keys_props_root_str .initial:o } #1
   { \exp_args:No \__keys_initialise:n {#1} }
 \cs_new_protected:cpn { \c__keys_props_root_str .initial:x } #1
@@ -13444,6 +13581,8 @@
   { \__keys_multichoices_make:nn #1 }
 \cs_new_protected:cpn { \c__keys_props_root_str .multichoices:Vn } #1
   { \exp_args:NV \__keys_multichoices_make:nn #1 }
+\cs_new_protected:cpn { \c__keys_props_root_str .multichoices:en } #1
+  { \exp_args:Ne \__keys_multichoices_make:nn #1 }
 \cs_new_protected:cpn { \c__keys_props_root_str .multichoices:on } #1
   { \exp_args:No \__keys_multichoices_make:nn #1 }
 \cs_new_protected:cpn { \c__keys_props_root_str .multichoices:xn } #1
@@ -13476,34 +13615,34 @@
   { \__keys_variable_set:NnnN #1 { str } { } n }
 \cs_new_protected:cpn { \c__keys_props_root_str .str_set:c } #1
   { \__keys_variable_set:cnnN {#1} { str } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:N } #1
-  { \__keys_variable_set:NnnN #1 { str } { } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:c } #1
-  { \__keys_variable_set:cnnN {#1} { str } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set_e:N } #1
+  { \__keys_variable_set:NnnN #1 { str } { } e }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set_e:c } #1
+  { \__keys_variable_set:cnnN {#1} { str } { } e }
 \cs_new_protected:cpn { \c__keys_props_root_str .str_gset:N } #1
   { \__keys_variable_set:NnnN #1 { str } { g } n }
 \cs_new_protected:cpn { \c__keys_props_root_str .str_gset:c } #1
   { \__keys_variable_set:cnnN {#1} { str } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:N } #1
-  { \__keys_variable_set:NnnN #1 { str } { g } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:c } #1
-  { \__keys_variable_set:cnnN {#1} { str } { g } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_e:N } #1
+  { \__keys_variable_set:NnnN #1 { str } { g } e }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_e:c } #1
+  { \__keys_variable_set:cnnN {#1} { str } { g } e }
 \cs_new_protected:cpn { \c__keys_props_root_str .tl_set:N } #1
   { \__keys_variable_set:NnnN #1 { tl } { } n }
 \cs_new_protected:cpn { \c__keys_props_root_str .tl_set:c } #1
   { \__keys_variable_set:cnnN {#1} { tl } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:N } #1
-  { \__keys_variable_set:NnnN #1 { tl } { } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:c } #1
-  { \__keys_variable_set:cnnN {#1} { tl } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_e:N } #1
+  { \__keys_variable_set:NnnN #1 { tl } { } e }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_e:c } #1
+  { \__keys_variable_set:cnnN {#1} { tl } { } e }
 \cs_new_protected:cpn { \c__keys_props_root_str .tl_gset:N } #1
   { \__keys_variable_set:NnnN #1 { tl } { g } n }
 \cs_new_protected:cpn { \c__keys_props_root_str .tl_gset:c } #1
   { \__keys_variable_set:cnnN {#1} { tl } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:N } #1
-  { \__keys_variable_set:NnnN #1 { tl } { g } x }
-\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:c } #1
-  { \__keys_variable_set:cnnN {#1} { tl } { g } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_e:N } #1
+  { \__keys_variable_set:NnnN #1 { tl } { g } e }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_e:c } #1
+  { \__keys_variable_set:cnnN {#1} { tl } { g } e }
 \cs_new_protected:cpn { \c__keys_props_root_str .undefine: }
   { \__keys_undefine: }
 \cs_new_protected:cpn { \c__keys_props_root_str .usage:n } #1
@@ -13514,7 +13653,7 @@
   { \__keys_value_requirement:nn { required } {#1} }
 \cs_new_protected:Npn \keys_set:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \bool_set_false:N \exp_not:N \l__keys_only_known_bool
         \bool_set_false:N \exp_not:N \l__keys_filtered_bool
@@ -13532,12 +13671,12 @@
           { \exp_not:o \l__keys_relative_tl }
       }
   }
-\cs_generate_variant:Nn \keys_set:nn { nV , nv , no , nx }
+\cs_generate_variant:Nn \keys_set:nn { nV , nv , ne , no , nx }
 \cs_new_protected:Npn \__keys_set:nn #1#2
   { \exp_args:No \__keys_set:nnn \l__keys_module_str {#1} {#2} }
 \cs_new_protected:Npn \__keys_set:nnn #1#2#3
   {
-    \str_set:Nx \l__keys_module_str { \__keys_trim_spaces:n {#2} }
+    \str_set:Ne \l__keys_module_str { \__keys_trim_spaces:n {#2} }
     \keyval_parse:NNn \__keys_set_keyval:n \__keys_set_keyval:nn {#3}
     \str_set:Nn \l__keys_module_str {#1}
   }
@@ -13546,26 +13685,26 @@
     \exp_args:No \__keys_set_known:nnnnN
       \l__keys_unused_clist \q__keys_no_value {#1} {#2} #3
   }
-\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no }
+\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , ne , no }
 \cs_new_protected:Npn \keys_set_known:nnnN #1#2#3#4
   {
     \exp_args:No \__keys_set_known:nnnnN
       \l__keys_unused_clist {#3} {#1} {#2} #4
   }
-\cs_generate_variant:Nn \keys_set_known:nnnN { nV , nv , no }
+\cs_generate_variant:Nn \keys_set_known:nnnN { nV , nv , ne , no }
 \cs_new_protected:Npn \__keys_set_known:nnnnN #1#2#3#4#5
   {
     \clist_clear:N \l__keys_unused_clist
     \__keys_set_known:nnn {#2} {#3} {#4}
-    \__kernel_tl_set:Nx #5 { \exp_not:o \l__keys_unused_clist }
+    \__kernel_tl_set:Ne #5 { \exp_not:o \l__keys_unused_clist }
     \tl_set:Nn \l__keys_unused_clist {#1}
   }
 \cs_new_protected:Npn \keys_set_known:nn #1#2
   { \__keys_set_known:nnn \q__keys_no_value {#1} {#2} }
-\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no }
+\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , ne , no }
 \cs_new_protected:Npn \__keys_set_known:nnn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \bool_set_true:N \exp_not:N \l__keys_only_known_bool
         \bool_set_false:N \exp_not:N \l__keys_filtered_bool
@@ -13599,7 +13738,7 @@
   {
     \clist_clear:N \l__keys_unused_clist
     \__keys_set_filter:nnnn {#2} {#3} {#4} {#5}
-    \__kernel_tl_set:Nx #6 { \exp_not:o \l__keys_unused_clist }
+    \__kernel_tl_set:Ne #6 { \exp_not:o \l__keys_unused_clist }
     \tl_set:Nn \l__keys_unused_clist {#1}
   }
 \cs_new_protected:Npn \keys_set_filter:nnn #1#2#3
@@ -13607,7 +13746,7 @@
 \cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno }
 \cs_new_protected:Npn \__keys_set_filter:nnnn #1#2#3#4
   {
-    \use:x
+    \use:e
       {
         \bool_set_false:N \exp_not:N \l__keys_only_known_bool
         \bool_set_true:N \exp_not:N \l__keys_filtered_bool
@@ -13626,7 +13765,7 @@
   }
 \cs_new_protected:Npn \keys_set_groups:nnn #1#2#3
   {
-    \use:x
+    \use:e
       {
         \bool_set_false:N \exp_not:N \l__keys_only_known_bool
         \bool_set_false:N \exp_not:N \l__keys_filtered_bool
@@ -13673,7 +13812,7 @@
   }
 \cs_new_protected:Npn \__keys_set_keyval:nnn #1#2#3
   {
-    \__kernel_tl_set:Nx \l_keys_path_str
+    \__kernel_tl_set:Ne \l_keys_path_str
       {
         \tl_if_blank:nF {#1}
           { #1 / }
@@ -13703,12 +13842,12 @@
 \cs_new_protected:Npn \__keys_find_key_module_auxii:Nw
     #1 #2 \s__keys_mark #3 \s__keys_nil \__keys_find_key_module_auxii:Nw
   {
-    \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+    \cs_set_nopar:Npe #1 { \tl_if_empty:NF #1 { #1 / } #2 }
     \__keys_find_key_module_auxi:Nw #1 #3 \s__keys_nil \__keys_find_key_module_auxiii:Nw
   }
 \cs_new_protected:Npn \__keys_find_key_module_auxiii:Nw #1 #2 \s__keys_mark
   {
-    \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+    \cs_set_nopar:Npe #1 { \tl_if_empty:NF #1 { #1 / } #2 }
     \__keys_find_key_module_auxi:Nw #1
   }
 \cs_new_protected:Npn \__keys_find_key_module_auxiv:Nw
@@ -13830,7 +13969,7 @@
           { \c__keys_code_root_str \l__keys_module_str / unknown }
           { \__keys_execute:no { \l__keys_module_str / unknown } \l_keys_value_tl }
           {
-            \msg_error:nnxx { keys } { unknown }
+            \msg_error:nnee { keys } { unknown }
               \l_keys_path_str \l__keys_module_str
           }
       }
@@ -13849,7 +13988,7 @@
   {
     \__keys_quark_if_no_value:NTF \l__keys_relative_tl
       {
-        \clist_put_right:Nx \l__keys_unused_clist
+        \clist_put_right:Ne \l__keys_unused_clist
           {
             \l_keys_key_str
             \bool_if:NF \l__keys_no_value_bool
@@ -13859,7 +13998,7 @@
       {
         \tl_if_empty:NTF \l__keys_relative_tl
           {
-            \clist_put_right:Nx \l__keys_unused_clist
+            \clist_put_right:Ne \l__keys_unused_clist
               {
                 \l_keys_path_str
                 \bool_if:NF \l__keys_no_value_bool
@@ -13871,23 +14010,23 @@
   }
 \cs_new_protected:Npn \__keys_store_unused_aux:
   {
-    \__kernel_tl_set:Nx \l__keys_relative_tl
+    \__kernel_tl_set:Ne \l__keys_relative_tl
       { \exp_args:No \__keys_trim_spaces:n \l__keys_relative_tl }
-    \use:x
+    \use:e
       {
         \cs_set_protected:Npn \__keys_store_unused:w
-          ####1 \l__keys_relative_tl /
-          ####2 \l__keys_relative_tl /
-          ####3 \s__keys_stop
+          ##1 \l__keys_relative_tl /
+          ##2 \l__keys_relative_tl /
+          ##3 \s__keys_stop
       }
         {
           \tl_if_blank:nF {##1}
             {
-              \msg_error:nnxx { keys } { bad-relative-key-path }
+              \msg_error:nnee { keys } { bad-relative-key-path }
                 \l_keys_path_str
                 \l__keys_relative_tl
             }
-          \clist_put_right:Nx \l__keys_unused_clist
+          \clist_put_right:Ne \l__keys_unused_clist
             {
               \exp_not:n {##2}
               \bool_if:NF \l__keys_no_value_bool
@@ -13894,7 +14033,7 @@
                 { = { \exp_not:o \l_keys_value_tl } }
             }
         }
-    \use:x
+    \use:e
       {
         \__keys_store_unused:w \l_keys_path_str
           \l__keys_relative_tl / \l__keys_relative_tl /
@@ -13989,9 +14128,9 @@
       { \prg_return_false: }
   }
 \cs_new_protected:Npn \keys_show:nn
-  { \__keys_show:Nnn \msg_show:nnxxxx }
+  { \__keys_show:Nnn \msg_show:nneeee }
 \cs_new_protected:Npn \keys_log:nn
-  { \__keys_show:Nnn \msg_log:nnxxxx }
+  { \__keys_show:Nnn \msg_log:nneeee }
 \cs_new_protected:Npn \__keys_show:Nnn #1#2#3
   {
     #1 { keys } { show-key }
@@ -14014,7 +14153,7 @@
       }
       { } { }
   }
-\cs_new:Npx \__keys_show:n #1
+\cs_new:Npe \__keys_show:n #1
   {
     \exp_not:N \__keys_show:w
       #1
@@ -14023,12 +14162,12 @@
       \tl_to_str:n { \__keys_precompile:n }
       \exp_not:N \s__keys_stop
   }
-\use:x
+\use:e
   {
     \cs_new:Npn \exp_not:N \__keys_show:w
-      ##1 \tl_to_str:n { \__keys_precompile:n }
-      ##2 \tl_to_str:n { \__keys_precompile:n }
-      ##3 \exp_not:N \s__keys_stop
+      #1 \tl_to_str:n { \__keys_precompile:n }
+      #2 \tl_to_str:n { \__keys_precompile:n }
+      #3 \exp_not:N \s__keys_stop
   }
   {
     \tl_if_blank:nTF {#2}
@@ -14035,9 +14174,9 @@
       {#1}
       { \__keys_show:Nw #2 \s__keys_stop }
   }
-\use:x
+\use:e
   {
-    \cs_new:Npn \exp_not:N \__keys_show:Nw ##1##2
+    \cs_new:Npn \exp_not:N \__keys_show:Nw #1#2
       \c_right_brace_str \exp_not:N \s__keys_stop
   }
   {#2}
@@ -14086,6 +14225,22 @@
   }
 \prop_gput:Nnn \g_msg_module_name_prop { keys } { LaTeX }
 \prop_gput:Nnn \g_msg_module_type_prop { keys } { }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:N } #1
+  { \__keys_variable_set:NnnN #1 { str } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_set_x:c } #1
+  { \__keys_variable_set:cnnN {#1} { str } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:N } #1
+  { \__keys_variable_set:NnnN #1 { str } { g } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .str_gset_x:c } #1
+  { \__keys_variable_set:cnnN {#1} { str } { g } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:N } #1
+  { \__keys_variable_set:NnnN #1 { tl } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:c } #1
+  { \__keys_variable_set:cnnN {#1} { tl } { } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:N } #1
+  { \__keys_variable_set:NnnN #1 { tl } { g } x }
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:c } #1
+  { \__keys_variable_set:cnnN {#1} { tl } { g } x }
 %% File: l3intarray.dtx
 \msg_new:nnn { kernel } { negative-array-size }
   { Size~of~array~may~not~be~negative:~#1 }
@@ -14098,7 +14253,7 @@
       {
         \__kernel_chk_if_free_cs:N #1
         \int_gincr:N \g__intarray_table_int
-        \cs_gset_nopar:Npx #1 { \__intarray:w \int_use:N \g__intarray_table_int \c_space_tl }
+        \cs_gset_nopar:Npe #1 { \__intarray:w \int_use:N \g__intarray_table_int \c_space_tl }
       }
     \cs_new_protected:Npn \intarray_new:Nn #1#2
       {
@@ -14106,7 +14261,7 @@
         \__intarray_gset_count:Nw #1 \int_eval:n {#2} \scan_stop:
         \int_compare:nNnT { \intarray_count:N #1 } < 0
           {
-            \msg_error:nnx { kernel } { negative-array-size }
+            \msg_error:nne { kernel } { negative-array-size }
               { \intarray_count:N #1 }
           }
       }
@@ -14118,7 +14273,7 @@
       {
         \__intarray_gset:wF \int_eval:n {#2} #1 \int_eval:n{#3}
           {
-            \msg_error:nnxxx { kernel } { out-of-bounds }
+            \msg_error:nneee { kernel } { out-of-bounds }
               { \token_to_str:N #1 } { \int_use:N \l__intarray_bad_index_int } { \intarray_count:N #1 }
           }
       }
@@ -14182,7 +14337,7 @@
         \__intarray_count:w #1 = \int_eval:n {#2} \scan_stop:
         \int_compare:nNnT { \intarray_count:N #1 } < 0
           {
-            \msg_error:nnx { kernel } { negative-array-size }
+            \msg_error:nne { kernel } { negative-array-size }
               { \intarray_count:N #1 }
           }
         \int_compare:nNnT { \intarray_count:N #1 } > 0
@@ -14223,7 +14378,7 @@
     \cs_generate_variant:Nn \intarray_gset:Nnn { c }
     \cs_new_protected:Npn \__intarray_gset:Nww #1#2 ; #3 ;
       {
-        \__intarray_bounds:NNnTF \msg_error:nnxxx #1 {#2}
+        \__intarray_bounds:NNnTF \msg_error:nneee #1 {#2}
           {
             \__intarray_gset_overflow_test:nw {#3}
             \__kernel_intarray_gset:Nnn #1 {#2} {#3}
@@ -14249,7 +14404,7 @@
       }
     \cs_new_protected:Npn \__intarray_gset_overflow:NNnn #1#2#3#4
       {
-        \msg_error:nnxxxx { kernel } { overflow }
+        \msg_error:nneeee { kernel } { overflow }
           { \token_to_str:N #2 } {#3} {#4} {  \__intarray_signed_max_dim:n {#4} }
         #1 #2 {#3} { \__intarray_signed_max_dim:n {#4} }
       }
@@ -14347,9 +14502,9 @@
         \__intarray_gset_range:Nw #1
       }
   }
-\cs_new_protected:Npn \intarray_show:N { \__intarray_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \intarray_show:N { \__intarray_show:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \intarray_show:N { c }
-\cs_new_protected:Npn \intarray_log:N { \__intarray_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \intarray_log:N { \__intarray_show:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \intarray_log:N { c }
 \cs_new_protected:Npn \__intarray_show:NN #1#2
   {
@@ -14378,7 +14533,7 @@
 \cs_new:Npn \__fp_use_i:ww #1; #2; { #1; }
 \cs_new:Npn \__fp_use_i:www #1; #2; #3; { #1; }
 \cs_new_protected:Npn \__fp_misused:n #1
-  { \msg_error:nnx { fp } { misused } { \fp_to_tl:n {#1} } }
+  { \msg_error:nne { fp } { misused } { \fp_to_tl:n {#1} } }
 \scan_new:N \s__fp
 \cs_new_protected:Npn \__fp_chk:w #1 ;
   { \__fp_misused:n { \s__fp \__fp_chk:w #1 ; } }
@@ -14404,7 +14559,7 @@
 \int_const:Nn \c__fp_minus_min_exponent_int { 10000 }
 \int_const:Nn \c__fp_max_exponent_int { 10000 }
 \int_const:Nn \c__fp_max_exp_exponent_int { 5 }
-\tl_const:Nx \c__fp_overflowing_fp
+\tl_const:Ne \c__fp_overflowing_fp
   {
     \s__fp \__fp_chk:w 1 0
       { \int_eval:n { \c__fp_max_exponent_int + 1 } }
@@ -14526,7 +14681,7 @@
       \s__fp { \__fp_type_from_scan_other:N #1 }
       \s__fp_stop
   }
-\cs_new:Npx \__fp_type_from_scan_other:N #1
+\cs_new:Npe \__fp_type_from_scan_other:N #1
   {
     \exp_not:N \exp_after:wN \exp_not:N \__fp_type_from_scan:w
     \exp_not:N \token_to_str:N #1 \s__fp_mark
@@ -14770,11 +14925,11 @@
           { invalid_operation , division_by_zero , overflow , underflow }
           {#1}
           {
-            \msg_error:nnxx { fp }
+            \msg_error:nnee { fp }
               { unknown-fpu-trap-type } {#1} {#2}
           }
           {
-            \msg_error:nnx
+            \msg_error:nne
               { fp } { unknown-fpu-exception } {#1}
           }
       }
@@ -15344,7 +15499,7 @@
         \exp_after:wN \__fp_parse_exponent:N
         \exp:w \__fp_parse_expand:w
   }
-\cs_new:Npx \__fp_parse_one_register_aux:Nw #1
+\cs_new:Npe \__fp_parse_one_register_aux:Nw #1
   {
     \exp_not:n
       {
@@ -15928,7 +16083,7 @@
     \fi:
     \__fp_parse_expand:w
   }
-\cs_new:Npx \__fp_parse_lparen_after:NwN #1#2 @ #3
+\cs_new:Npe \__fp_parse_lparen_after:NwN #1#2 @ #3
   {
     \exp_not:N \token_if_eq_meaning:NNTF #3
       \exp_not:c { __fp_parse_infix_):N }
@@ -16574,11 +16729,11 @@
   { \cs_new_eq:NN #1 \c_zero_fp }
 \cs_generate_variant:Nn \fp_new:N {c}
 \cs_new_protected:Npn \fp_set:Nn   #1#2
-  { \__kernel_tl_set:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
+  { \__kernel_tl_set:Ne #1 { \exp_not:f { \__fp_parse:n {#2} } } }
 \cs_new_protected:Npn \fp_gset:Nn  #1#2
-  { \__kernel_tl_gset:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
+  { \__kernel_tl_gset:Ne #1 { \exp_not:f { \__fp_parse:n {#2} } } }
 \cs_new_protected:Npn \fp_const:Nn #1#2
-  { \tl_const:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
+  { \tl_const:Ne #1 { \exp_not:f { \__fp_parse:n {#2} } } }
 \cs_generate_variant:Nn \fp_set:Nn {c}
 \cs_generate_variant:Nn \fp_gset:Nn {c}
 \cs_generate_variant:Nn \fp_const:Nn {c}
@@ -16620,7 +16775,7 @@
             \s__fp \__fp_chk:w ??? ; \s__fp_stop
           }
       }
-      { \exp_args:Nx #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
+      { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
   }
 \cs_new:Npn \__fp_show_validate:w
     #1 \s__fp \__fp_chk:w #2#3#4#5 ; #6 \s__fp_stop
@@ -16909,7 +17064,7 @@
   {
     \int_gincr:N \g__kernel_prg_map_int
     \exp_args:NNc \__fp_step:NNnnnn
-      \cs_gset_protected:Npx
+      \cs_gset_protected:Npe
       { __fp_map_ \int_use:N \g__kernel_prg_map_int :w }
       {#1} {#2} {#3}
       {
@@ -17066,7 +17221,7 @@
   { \__fp_parse_unary_function:NNN \__fp_sign_o:w ? }
 \cs_new:Npn \__fp_parse_word_sqrt:N
   { \__fp_parse_unary_function:NNN \__fp_sqrt_o:w ? }
-\cs_new:cpx { __fp_-_o:ww } \s__fp
+\cs_new:cpe { __fp_-_o:ww } \s__fp
   {
     \exp_not:c { __fp_+_o:ww }
     \exp_not:n { \s__fp \__fp_neg_sign:N }
@@ -17566,11 +17721,11 @@
   {
     + 5 * #1
     \exp_after:wN \__fp_div_significand_vi:Nw
-    \int_value:w \__fp_int_eval:w -20 + 2*#2#3 - #1*#6#7 +
+    \int_value:w \__fp_int_eval:w -50 + 2*#2#3 - #1*#6#7 +
       \exp_after:wN \__fp_div_significand_v:NN
-      \int_value:w \__fp_int_eval:w 199980 + 2*#4 - #1*#8 +
+      \int_value:w \__fp_int_eval:w 499950 + 2*#4 - #1*#8 +
         \exp_after:wN \__fp_div_significand_v:NN
-        \int_value:w \__fp_int_eval:w 200000 + 2*#5 - #1*#9 ;
+        \int_value:w \__fp_int_eval:w 500000 + 2*#5 - #1*#9 ;
   }
 \cs_new:Npn \__fp_div_significand_v:NN #1#2 { #1#2 \__fp_int_eval_end: + }
 \cs_new:Npn \__fp_div_significand_vi:Nw #1#2;
@@ -19069,13 +19224,13 @@
     {cos} {cot} {csc} {sec} {sin} {tan}
   }
   {
-    \cs_new:cpx { __fp_parse_word_#1:N }
+    \cs_new:cpe { __fp_parse_word_#1:N }
       {
         \exp_not:N \__fp_parse_unary_function:NNN
         \exp_not:c { __fp_#1_o:w }
         \exp_not:N \use_i:nn
       }
-    \cs_new:cpx { __fp_parse_word_#1d:N }
+    \cs_new:cpe { __fp_parse_word_#1d:N }
       {
         \exp_not:N \__fp_parse_unary_function:NNN
         \exp_not:c { __fp_#1_o:w }
@@ -19687,7 +19842,7 @@
       { #1 { acot } { acotd } }
       { \__fp_atan_default:w \__fp_acotii_o:Nww #1 }
   }
-\cs_new:Npx \__fp_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ }
+\cs_new:Npe \__fp_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ }
 \cs_new:Npn \__fp_atanii_o:Nww
     #1 \s__fp \__fp_chk:w #2#3#4; \s__fp \__fp_chk:w #5 #6 @
   {
@@ -20576,7 +20731,7 @@
 \cs_generate_variant:Nn \fparray_gset:Nnn { c }
 \cs_new_protected:Npn \__fp_array_gset:NNNNww #1#2#3#4#5 ; #6 ;
   {
-    \__fp_array_bounds:NNnTF \msg_error:nnxxx #4 {#5}
+    \__fp_array_bounds:NNnTF \msg_error:nneee #4 {#5}
       {
         \exp_after:wN \__fp_change_func_type:NNN
           \__fp_use_i_until_s:nw #6 ;
@@ -20837,7 +20992,7 @@
       {
         \seq_gpop:NNF \g__cctab_unused_seq \l__cctab_internal_a_tl
           { \__cctab_begin_aux: }
-        \exp_args:Nx \__cctab_chk_group_begin:n
+        \__cctab_chk_group_begin:e
           { \__cctab_nesting_number:N \l__cctab_internal_a_tl }
         \seq_gpush:NV \g__cctab_stack_seq \l__cctab_internal_a_tl
         \exp_args:NV \__cctab_gset:n \l__cctab_internal_a_tl
@@ -20850,7 +21005,7 @@
     \seq_gpop:NNTF \g__cctab_stack_seq \l__cctab_internal_a_tl
       {
         \seq_gpush:NV \g__cctab_unused_seq \l__cctab_internal_a_tl
-        \exp_args:Nx \__cctab_chk_group_end:n
+        \exp_args:Ne \__cctab_chk_group_end:n
           { \__cctab_nesting_number:N \l__cctab_internal_a_tl }
         \__cctab_select:N \l__cctab_internal_a_tl
       }
@@ -20858,10 +21013,11 @@
   }
 \cs_new_protected:Npn \__cctab_chk_group_begin:n #1
   {
-    \seq_gpush:Nx \g__cctab_group_seq
+    \seq_gpush:Ne \g__cctab_group_seq
       { \int_use:N \tex_currentgrouplevel:D }
     \cs_set_eq:cN { __cctab_group_ #1 _chk: } \prg_do_nothing:
   }
+\cs_generate_variant:Nn \__cctab_chk_group_begin:n { e }
 \cs_new_protected:Npn \__cctab_chk_group_end:n #1
   {
     \seq_gpop:NN \g__cctab_group_seq \l__cctab_internal_b_tl
@@ -20872,7 +21028,7 @@
       }
       { \cs_if_exist_p:c { __cctab_group_ #1 _chk: } }
       {
-        \msg_error:nnx { cctab } { group-mismatch }
+        \msg_error:nne { cctab } { group-mismatch }
           {
             \int_sign:n
               { \tex_currentgrouplevel:D - \l__cctab_internal_b_tl }
@@ -20888,10 +21044,10 @@
         \exp_after:wN \exp_after:wN \exp_after:wN \__cctab_nesting_number:w
           \exp_after:wN \token_to_str:N #1
       }
-    \use:x
+    \use:e
       {
         \cs_new:Npn \exp_not:N \__cctab_nesting_number:w
-          ##1 \tl_to_str:n { g__cctab_ } ##2 \tl_to_str:n { _cctab } {##2}
+          #1 \tl_to_str:n { g__cctab_ } #2 \tl_to_str:n { _cctab } {#2}
       }
   }
 \cs_if_exist:NT \hook_gput_code:nnn
@@ -20930,13 +21086,13 @@
         \__cctab_chk_if_valid_aux:NTF #1
           { \prg_return_true: }
           {
-            \msg_error:nnx { cctab } { invalid-cctab }
+            \msg_error:nne { cctab } { invalid-cctab }
               { \token_to_str:N #1 }
             \prg_return_false:
           }
       }
       {
-        \msg_error:nnx { kernel } { command-not-defined }
+        \msg_error:nne { kernel } { command-not-defined }
           { \token_to_str:N #1 }
         \prg_return_false:
       }
@@ -21191,7 +21347,7 @@
   {
     \group_begin:
       \__sort_main:NNNn \tl_map_inline:Nn \tl_map_break:n #2 {#3}
-      \__kernel_tl_gset:Nx \g__sort_internal_tl
+      \__kernel_tl_gset:Ne \g__sort_internal_tl
         { \__sort_tl_toks:w \l__sort_min_int ; }
     \group_end:
     #1 #2 \g__sort_internal_tl
@@ -21232,7 +21388,7 @@
       \int_step_inline:nnn
         \l__sort_min_int { \l__sort_top_int - 1 }
         {
-          \seq_gput_right:Nx \g__sort_internal_seq
+          \seq_gput_right:Ne \g__sort_internal_seq
             { \tex_the:D \tex_toks:D ##1 }
         }
     \group_end:
@@ -21313,7 +21469,7 @@
 \cs_new_protected:Npn \__sort_return_mark:w #1 \s__sort_mark { }
 \cs_new_protected:Npn \__sort_return_none_error:
   {
-    \msg_error:nnxx { sort } { return-none }
+    \msg_error:nnee { sort } { return-none }
       { \tex_the:D \tex_toks:D \l__sort_A_int }
       { \tex_the:D \tex_toks:D \l__sort_C_int }
     \__sort_return_same:w \__sort_return_none_error:
@@ -21320,7 +21476,7 @@
   }
 \cs_new_protected:Npn \__sort_return_two_error:
   {
-    \msg_error:nnxx { sort } { return-two }
+    \msg_error:nnee { sort } { return-two }
       { \tex_the:D \tex_toks:D \l__sort_A_int }
       { \tex_the:D \tex_toks:D \l__sort_C_int }
   }
@@ -21450,7 +21606,7 @@
   { \cs_set_eq:NN \toksdef \__sort_disabled_toksdef:n }
 \cs_new_protected:Npn \__sort_disabled_toksdef:n #1
   {
-    \msg_error:nnx { sort } { toksdef }
+    \msg_error:nne { sort } { toksdef }
       { \token_to_str:N #1 }
     \__sort_error:
     \tex_toksdef:D #1
@@ -21466,7 +21622,7 @@
 \cs_new_protected:Npn \__sort_too_long_error:NNw #1#2 \fi:
   {
     \fi:
-    \msg_error:nnxxx { sort } { too-large }
+    \msg_error:nneee { sort } { too-large }
       { \token_to_str:N #2 }
       { \int_eval:n { \l__sort_true_max_int - \l__sort_min_int } }
       { \int_eval:n { \l__sort_top_int - \l__sort_min_int } }
@@ -21588,12 +21744,12 @@
     \fi:
   }
 \group_begin:
-  \__kernel_tl_set:Nx \l__str_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
+  \__kernel_tl_set:Ne \l__str_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
    \tl_map_inline:Nn \l__str_internal_tl
      {
         \tl_map_inline:Nn \l__str_internal_tl
           {
-            \tl_const:cx { c__str_byte_ \int_eval:n {"#1##1} _tl }
+            \tl_const:ce { c__str_byte_ \int_eval:n {"#1##1} _tl }
                { \char_generate:nn { "#1##1 } { 12 } #1 ##1 }
           }
      }
@@ -21633,7 +21789,7 @@
   }
 \cs_new_protected:Npn \__str_convert_gmap:N #1
   {
-    \__kernel_tl_gset:Nx \g__str_result_tl
+    \__kernel_tl_gset:Ne \g__str_result_tl
       {
         \exp_after:wN \__str_convert_gmap_loop:NN
         \exp_after:wN #1
@@ -21649,7 +21805,7 @@
   }
 \cs_new_protected:Npn \__str_convert_gmap_internal:N #1
   {
-    \__kernel_tl_gset:Nx \g__str_result_tl
+    \__kernel_tl_gset:Ne \g__str_result_tl
       {
         \exp_after:wN \__str_convert_gmap_internal_loop:Nww
         \exp_after:wN #1
@@ -21663,13 +21819,13 @@
     #1 {#3}
     \__str_convert_gmap_internal_loop:Nww #1
   }
-\cs_new_protected:Npn \__str_if_flag_error:nnx #1
+\cs_new_protected:Npn \__str_if_flag_error:nne #1
   {
     \flag_if_raised:nTF {#1}
-      { \msg_error:nnx { str } }
+      { \msg_error:nne { str } }
       { \use_none:nn }
   }
-\cs_new_protected:Npn \__str_if_flag_no_error:nnx #1#2#3
+\cs_new_protected:Npn \__str_if_flag_no_error:nne #1#2#3
   { \flag_if_raised:nT {#1} { \bool_gset_true:N \g__str_error_bool } }
 \cs_new:Npn \__str_if_flag_times:nT #1#2
   { \flag_if_raised:nT {#1} { #2~(x \flag_height:n {#1} ) } }
@@ -21682,7 +21838,7 @@
   {
     \bool_gset_false:N \g__str_error_bool
     \__str_convert:nNNnnn
-      { \cs_set_eq:NN \__str_if_flag_error:nnx \__str_if_flag_no_error:nnx }
+      { \cs_set_eq:NN \__str_if_flag_error:nne \__str_if_flag_no_error:nne }
       \tl_set_eq:NN #1 {#2} {#3} {#4}
     \bool_if:NTF \g__str_error_bool \prg_return_false: \prg_return_true:
   }
@@ -21691,7 +21847,7 @@
   {
     \bool_gset_false:N \g__str_error_bool
     \__str_convert:nNNnnn
-      { \cs_set_eq:NN \__str_if_flag_error:nnx \__str_if_flag_no_error:nnx }
+      { \cs_set_eq:NN \__str_if_flag_error:nne \__str_if_flag_no_error:nne }
       \tl_gset_eq:NN #1 {#2} {#3} {#4}
     \bool_if:NTF \g__str_error_bool \prg_return_false: \prg_return_true:
   }
@@ -21699,7 +21855,7 @@
   {
     \group_begin:
       #1
-      \__kernel_tl_gset:Nx \g__str_result_tl { \__kernel_str_to_other_fast:n {#4} }
+      \__kernel_tl_gset:Ne \g__str_result_tl { \__kernel_str_to_other_fast:n {#4} }
       \exp_after:wN \__str_convert:wwwnn
         \tl_to_str:n {#5} /// \s__str_stop
         { decode } { unescape }
@@ -21725,7 +21881,7 @@
   {
     \if_meaning:w #1 #5
       \tl_if_empty:nF {#3}
-        { \msg_error:nnx { str } { native-escaping } {#3} }
+        { \msg_error:nne { str } { native-escaping } {#3} }
       #1
     \else:
       #4 #2 #1
@@ -21735,7 +21891,7 @@
   {
     \cs_if_exist:cF { __str_convert_#2_#3: }
       {
-        \exp_args:Nx \__str_convert:nnnn
+        \exp_args:Ne \__str_convert:nnnn
           { \__str_convert_lowercase_alphanum:n {#3} }
           {#1} {#2} {#3}
       }
@@ -21757,7 +21913,7 @@
               }
               {
                 \tl_clear:N \l__str_internal_tl
-                \msg_error:nnxx { str } { unknown-#2 } {#4} {#1}
+                \msg_error:nnee { str } { unknown-#2 } {#4} {#1}
               }
           }
         \cs_if_exist:cF { __str_convert_#3_#1: }
@@ -21827,9 +21983,9 @@
     \cs_new_protected:Npn \__str_convert_unescape_:
       {
         \flag_clear:n { str_byte }
-        \__kernel_tl_gset:Nx \g__str_result_tl
+        \__kernel_tl_gset:Ne \g__str_result_tl
           { \exp_args:No \__str_filter_bytes:n \g__str_result_tl }
-        \__str_if_flag_error:nnx { str_byte } { non-byte } { bytes }
+        \__str_if_flag_error:nne { str_byte } { non-byte } { bytes }
       }
   }
   { \cs_new_protected:Npn \__str_convert_unescape_: { } }
@@ -21856,7 +22012,7 @@
       {
         \flag_clear:n { str_error }
         \__str_convert_gmap_internal:N \__str_encode_native_char:n
-        \__str_if_flag_error:nnx { str_error }
+        \__str_if_flag_error:nne { str_error }
           { native-overflow } { }
       }
     \cs_new:Npn \__str_encode_native_char:n #1
@@ -21879,7 +22035,7 @@
 \cs_new_protected:Npn \__str_convert_decode_clist:
   {
     \clist_gset:No \g__str_result_tl \g__str_result_tl
-    \__kernel_tl_gset:Nx \g__str_result_tl
+    \__kernel_tl_gset:Ne \g__str_result_tl
       {
         \exp_args:No \clist_map_function:nN
           \g__str_result_tl \__str_decode_clist_char:n
@@ -21890,7 +22046,7 @@
 \cs_new_protected:Npn \__str_convert_encode_clist:
   {
     \__str_convert_gmap_internal:N \__str_encode_clist_char:n
-    \__kernel_tl_gset:Nx \g__str_result_tl { \tl_tail:N \g__str_result_tl }
+    \__kernel_tl_gset:Ne \g__str_result_tl { \tl_tail:N \g__str_result_tl }
   }
 \cs_new:Npn \__str_encode_clist_char:n #1 { , #1 }
 \cs_new_protected:Npn \__str_declare_eight_bit_encoding:nnnn #1
@@ -21943,7 +22099,7 @@
   }
 \cs_new_protected:Npn \__str_convert_decode_eight_bit:n #1
   {
-    \cs_set:Npx \__str_tmp:w
+    \cs_set:Npe \__str_tmp:w
       {
         \exp_not:N \__str_decode_eight_bit_aux:Nn
         \exp_not:c { g__str_decode_#1_intarray }
@@ -21950,7 +22106,7 @@
       }
     \flag_clear:n { str_error }
     \__str_convert_gmap:N \__str_tmp:w
-    \__str_if_flag_error:nnx { str_error } { decode-8-bit } {#1}
+    \__str_if_flag_error:nne { str_error } { decode-8-bit } {#1}
   }
 \cs_new:Npn \__str_decode_eight_bit_aux:Nn #1#2
   {
@@ -21971,7 +22127,7 @@
 \int_new:N \l__str_modulo_int
 \cs_new_protected:Npn \__str_convert_encode_eight_bit:n #1
   {
-    \cs_set:Npx \__str_tmp:w
+    \cs_set:Npe \__str_tmp:w
       {
         \exp_not:N \__str_encode_eight_bit_aux:NNn
         \exp_not:c { g__str_encode_#1_intarray }
@@ -21979,7 +22135,7 @@
       }
     \flag_clear:n { str_error }
     \__str_convert_gmap_internal:N \__str_tmp:w
-    \__str_if_flag_error:nnx { str_error } { encode-8-bit } {#1}
+    \__str_if_flag_error:nne { str_error } { encode-8-bit } {#1}
   }
 \cs_new:Npn \__str_encode_eight_bit_aux:NNn #1#2#3
   {
@@ -22048,7 +22204,7 @@
     \group_begin:
       \flag_clear:n { str_error }
       \int_set:Nn \tex_escapechar:D { 92 }
-      \__kernel_tl_gset:Nx \g__str_result_tl
+      \__kernel_tl_gset:Ne \g__str_result_tl
         {
           \__str_output_byte:w "
             \exp_last_unbraced:Nf \__str_unescape_hex_auxi:N
@@ -22057,7 +22213,7 @@
             \prg_break_point:
           \__str_output_end:
         }
-      \__str_if_flag_error:nnx { str_error } { unescape-hex } { }
+      \__str_if_flag_error:nne { str_error } { unescape-hex } { }
     \group_end:
   }
 \cs_new:Npn \__str_unescape_hex_auxi:N #1
@@ -22097,14 +22253,14 @@
           \flag_clear:n { str_byte }
           \flag_clear:n { str_error }
           \int_set:Nn \tex_escapechar:D { 92 }
-          \__kernel_tl_gset:Nx \g__str_result_tl
+          \__kernel_tl_gset:Ne \g__str_result_tl
             {
               \exp_after:wN #3 \g__str_result_tl
                 #1 ? { ? \prg_break: }
               \prg_break_point:
             }
-          \__str_if_flag_error:nnx { str_byte } { non-byte } { #2 }
-          \__str_if_flag_error:nnx { str_error } { unescape-#2 } { }
+          \__str_if_flag_error:nne { str_byte } { non-byte } { #2 }
+          \__str_if_flag_error:nne { str_error } { unescape-#2 } { }
         \group_end:
       }
     \cs_new:Npn #3 ##1#1##2##3
@@ -22150,20 +22306,20 @@
             \flag_clear:n { str_byte }
             \flag_clear:n { str_error }
             \int_set:Nn \tex_escapechar:D { 92 }
-            \__kernel_tl_gset:Nx \g__str_result_tl
+            \__kernel_tl_gset:Ne \g__str_result_tl
               {
                 \exp_after:wN \__str_unescape_string_newlines:wN
                   \g__str_result_tl \prg_break: ^^M ?
                 \prg_break_point:
               }
-            \__kernel_tl_gset:Nx \g__str_result_tl
+            \__kernel_tl_gset:Ne \g__str_result_tl
               {
                 \exp_after:wN \__str_unescape_string_loop:wNNN
                   \g__str_result_tl #1 ?? { ? \prg_break: }
                 \prg_break_point:
               }
-            \__str_if_flag_error:nnx { str_byte } { non-byte } { string }
-            \__str_if_flag_error:nnx { str_error } { unescape-string } { }
+            \__str_if_flag_error:nne { str_byte } { non-byte } { string }
+            \__str_if_flag_error:nne { str_error } { unescape-string } { }
           \group_end:
         }
     }
@@ -22254,7 +22410,7 @@
       \fi:
     \fi:
   }
-\str_const:Nx \c__str_escape_string_str
+\str_const:Ne \c__str_escape_string_str
   { \c_backslash_str ( ) }
 \cs_new_protected:Npn \__str_convert_escape_string:
   { \__str_convert_gmap:N \__str_escape_string_char:N }
@@ -22389,13 +22545,13 @@
     \flag_clear:n { str_extra }
     \flag_clear:n { str_overlong }
     \flag_clear:n { str_overflow }
-    \__kernel_tl_gset:Nx \g__str_result_tl
+    \__kernel_tl_gset:Ne \g__str_result_tl
       {
         \exp_after:wN \__str_decode_utf_viii_start:N \g__str_result_tl
           { \prg_break: \__str_decode_utf_viii_end: }
         \prg_break_point:
       }
-    \__str_if_flag_error:nnx { str_error } { utf8-decode } { }
+    \__str_if_flag_error:nne { str_error } { utf8-decode } { }
   }
 \cs_new:Npn \__str_decode_utf_viii_start:N #1
   {
@@ -22481,7 +22637,7 @@
   \cs_new_protected:cpn { __str_convert_encode_utf16: }
     {
       \__str_encode_utf_xvi_aux:N \__str_output_byte_pair_be:n
-      \tl_gput_left:Nx \g__str_result_tl { ^^fe ^^ff }
+      \tl_gput_left:Ne \g__str_result_tl { ^^fe ^^ff }
     }
   \cs_new_protected:cpn { __str_convert_encode_utf16be: }
     { \__str_encode_utf_xvi_aux:N \__str_output_byte_pair_be:n }
@@ -22492,7 +22648,7 @@
       \flag_clear:n { str_error }
       \cs_set_eq:NN \__str_tmp:w #1
       \__str_convert_gmap_internal:N \__str_encode_utf_xvi_char:n
-      \__str_if_flag_error:nnx { str_error } { utf16-encode } { }
+      \__str_if_flag_error:nne { str_error } { utf16-encode } { }
     }
   \cs_new:Npn \__str_encode_utf_xvi_char:n #1
     {
@@ -22589,13 +22745,13 @@
       \flag_clear:n { str_extra }
       \flag_clear:n { str_end }
       \cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
-      \__kernel_tl_gset:Nx \g__str_result_tl
+      \__kernel_tl_gset:Ne \g__str_result_tl
         {
           \exp_after:wN \__str_decode_utf_xvi_pair:NN
             #2 \q__str_nil \q__str_nil
           \prg_break_point:
         }
-      \__str_if_flag_error:nnx { str_error } { utf16-decode } { }
+      \__str_if_flag_error:nne { str_error } { utf16-decode } { }
     }
   \cs_new:Npn \__str_decode_utf_xvi_pair:NN #1#2
     {
@@ -22664,7 +22820,7 @@
   \cs_new_protected:cpn { __str_convert_encode_utf32: }
     {
       \__str_convert_gmap_internal:N \__str_encode_utf_xxxii_be:n
-      \tl_gput_left:Nx \g__str_result_tl { ^^00 ^^00 ^^fe ^^ff }
+      \tl_gput_left:Ne \g__str_result_tl { ^^00 ^^00 ^^fe ^^ff }
     }
   \cs_new_protected:cpn { __str_convert_encode_utf32be: }
     { \__str_convert_gmap_internal:N \__str_encode_utf_xxxii_be:n }
@@ -22746,13 +22902,13 @@
       \flag_clear:n { str_end }
       \flag_clear:n { str_error }
       \cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
-      \__kernel_tl_gset:Nx \g__str_result_tl
+      \__kernel_tl_gset:Ne \g__str_result_tl
         {
           \exp_after:wN \__str_decode_utf_xxxii_loop:NNNN
             #2 \s__str_stop \s__str_stop \s__str_stop \s__str_stop
           \prg_break_point:
         }
-      \__str_if_flag_error:nnx { str_error } { utf32-decode } { }
+      \__str_if_flag_error:nne { str_error } { utf32-decode } { }
     }
   \cs_new:Npn \__str_decode_utf_xxxii_loop:NNNN #1#2#3#4
     {
@@ -22811,7 +22967,7 @@
       }
     \cs_new:Npn \__str_convert_pdfname_bytes_aux:n #1
       { \__str_convert_pdfname_bytes_aux:nnnn #1 }
-    \cs_new:Npx \__str_convert_pdfname_bytes_aux:nnnn #1#2#3#4
+    \cs_new:Npe \__str_convert_pdfname_bytes_aux:nnnn #1#2#3#4
       {
         \c_hash_str \exp_not:N \__str_output_hexadecimal:n {#1}
         \c_hash_str \exp_not:N \__str_output_hexadecimal:n {#2}
@@ -22834,7 +22990,7 @@
 \tl_new:N \l__tl_peek_code_tl
 \group_begin:
 \char_set_active_eq:NN \  \scan_stop:
-\tl_const:Nx \c__tl_peek_catcodes_tl
+\tl_const:Ne \c__tl_peek_catcodes_tl
   {
     \char_generate:nn { 32 } { 3 }   3
     \char_generate:nn { 32 } { 4 }   4
@@ -23042,7 +23198,7 @@
   }
 \cs_new_protected:Npn \__tl_analysis_b:n #1
   {
-    \__kernel_tl_gset:Nx \g__tl_analysis_result_tl
+    \__kernel_tl_gset:Ne \g__tl_analysis_result_tl
       {
         \__tl_analysis_b_loop:w 0; #1
         \prg_break_point:
@@ -23074,7 +23230,7 @@
     \fi:
     #3 #1; #2;
   }
-\cs_new:Npx \__tl_analysis_b_char:Nn #1#2
+\cs_new:Npe \__tl_analysis_b_char:Nn #1#2
   {
     \exp_not:N \if_meaning:w #2 \exp_not:N \tex_undefined:D
       \token_to_str:N D \exp_not:N \else:
@@ -23180,9 +23336,9 @@
     \__tl_analysis_map:NwNw #1
   }
 \cs_new_protected:Npn \tl_analysis_show:N
-  { \__tl_analysis_show:NNN \msg_show:nnxxxx \tl_show:N }
+  { \__tl_analysis_show:NNN \msg_show:nneeee \tl_show:N }
 \cs_new_protected:Npn \tl_analysis_log:N
-  { \__tl_analysis_show:NNN \msg_log:nnxxxx \tl_log:N }
+  { \__tl_analysis_show:NNN \msg_log:nneeee \tl_log:N }
 \cs_new_protected:Npn \__tl_analysis_show:NNN #1#2#3
   {
     \tl_if_exist:NTF #3
@@ -23194,9 +23350,9 @@
       { #2 #3 }
   }
 \cs_new_protected:Npn \tl_analysis_show:n
-  { \__tl_analysis_show:Nn \msg_show:nnxxxx }
+  { \__tl_analysis_show:Nn \msg_show:nneeee }
 \cs_new_protected:Npn \tl_analysis_log:n
-  { \__tl_analysis_show:Nn \msg_log:nnxxxx }
+  { \__tl_analysis_show:Nn \msg_log:nneeee }
 \cs_new_protected:Npn \__tl_analysis_show:Nn #1#2
   {
     \__tl_analysis:n {#2}
@@ -23304,7 +23460,7 @@
 \cs_new_protected:Npn \__tl_peek_analysis_loop:NNn #1#2#3
   {
     \group_begin:
-    \tl_set:Nx \l__tl_peek_code_tl
+    \tl_set:Ne \l__tl_peek_code_tl
       {
         \exp_not:c
           { __tl_analysis_map_ \int_use:N \g__kernel_prg_map_int :nnN }
@@ -23333,7 +23489,7 @@
   }
 \cs_new_protected:Npn \__tl_peek_analysis_exp:N #1
   {
-    \cs_set_nopar:Npx \l__tl_peek_code_tl
+    \cs_set_nopar:Npe \l__tl_peek_code_tl
       {
         \tex_let:D \exp_not:N #1 \scan_stop:
         \exp_not:o \l__tl_peek_code_tl
@@ -23355,7 +23511,7 @@
       }
     \l__tl_peek_code_tl
   }
-\cs_new:Npx \__tl_peek_analysis_exp_active:N #1
+\cs_new:Npe \__tl_peek_analysis_exp_active:N #1
   { { \exp_not:N \int_value:w `#1 } \token_to_str:N D }
 \cs_new_protected:Npn \__tl_peek_analysis_nonexp:N #1
   {
@@ -23373,7 +23529,7 @@
   { \l__tl_peek_code_tl { \exp_not:n {#1} } { -1 } 0 }
 \group_begin:
 \char_set_active_eq:NN \ \scan_stop:
-\cs_new_protected:Npx \__tl_peek_analysis_char:N #1
+\cs_new_protected:Npe \__tl_peek_analysis_char:N #1
   {
     \cs_set_eq:NN
       \char_generate:nn { 32 } { 13 }
@@ -23381,7 +23537,7 @@
     \tex_lccode:D `#1 = 32 \exp_stop_f:
     \tex_lowercase:D
       {
-        \tl_put_right:Nx \exp_not:N \l__tl_peek_code_tl
+        \tl_put_right:Ne \exp_not:N \l__tl_peek_code_tl
           { \exp_not:n { \__tl_analysis_b_char:Nn \use_none:n } {#1} }
       }
     \exp_not:n
@@ -23460,7 +23616,7 @@
   }
 \cs_new_protected:Npn \__tl_peek_analysis_active_str:n #1
   {
-    \tl_put_right:Nx \l__tl_peek_code_tl
+    \tl_put_right:Ne \l__tl_peek_code_tl
       {
         { \char_generate:nn { `#1 } { 13 } }
         { \int_value:w `#1 }
@@ -23470,7 +23626,7 @@
   }
 \cs_new_protected:Npn \__tl_peek_analysis_explicit:n #1
   {
-    \tl_put_right:Nx \l__tl_peek_code_tl
+    \tl_put_right:Ne \l__tl_peek_code_tl
       {
         \if_meaning:w \l_peek_token \c_space_token
           { ~ } { 32 } \token_to_str:N A
@@ -23529,7 +23685,7 @@
 \cs_new_protected:Npn \__tl_peek_analysis_collect_end:NNN #1#2#3
   {
     #1 #2
-    \tl_put_right:Nx \l__tl_peek_code_tl
+    \tl_put_right:Ne \l__tl_peek_code_tl
       {
         { \exp_not:N \exp_not:n { \exp_not:c { \l__tl_internal_a_tl } } }
         { -1 }
@@ -23537,7 +23693,7 @@
       }
     \l__tl_peek_code_tl
   }
-\tl_const:Nx \c__tl_analysis_show_etc_str % (
+\tl_const:Ne \c__tl_analysis_show_etc_str % (
   { \token_to_str:N \ETC.) }
 \msg_new:nnn { tl } { show-analysis }
   {
@@ -23565,15 +23721,15 @@
         \int_incr:N #2
       }
   }
-\cs_new_protected:Npn \__regex_toks_put_left:Nx #1#2
+\cs_new_protected:Npn \__regex_toks_put_left:Ne #1#2
   {
-    \cs_set_nopar:Npx \__regex_tmp:w { #2 }
+    \cs_set_nopar:Npe \__regex_tmp:w { #2 }
     \tex_toks:D #1 \exp_after:wN \exp_after:wN \exp_after:wN
       { \exp_after:wN \__regex_tmp:w \tex_the:D \tex_toks:D #1 }
   }
-\cs_new_protected:Npn \__regex_toks_put_right:Nx #1#2
+\cs_new_protected:Npn \__regex_toks_put_right:Ne #1#2
   {
-    \cs_set_nopar:Npx \__regex_tmp:w {#2}
+    \cs_set_nopar:Npe \__regex_tmp:w {#2}
     \tex_toks:D #1 \exp_after:wN
       { \tex_the:D \tex_toks:D \exp_after:wN #1 \__regex_tmp:w }
   }
@@ -23736,7 +23892,7 @@
   {
     \int_compare:nNnTF \l__regex_curr_catcode_int = 0
       {
-        \__kernel_tl_set:Nx \l__regex_internal_a_tl
+        \__kernel_tl_set:Ne \l__regex_internal_a_tl
           { \scan_stop: \__regex_curr_cs_to_str: \scan_stop: }
         \tl_if_in:noTF { \scan_stop: #1 \scan_stop: }
           \l__regex_internal_a_tl
@@ -23754,7 +23910,7 @@
           \__regex_build_for_cs:n {#1}
           \bool_set_eq:NN \l__regex_saved_success_bool
             \g__regex_success_bool
-          \exp_args:Nx \__regex_match_cs:n { \__regex_curr_cs_to_str: }
+          \exp_args:Ne \__regex_match_cs:n { \__regex_curr_cs_to_str: }
           \if_meaning:w \c_true_bool \g__regex_success_bool
             \group_insert_after:N \__regex_break_true:w
           \fi:
@@ -23846,9 +24002,9 @@
       \cs_set:Npn \__regex_escape_escaped:N ##1 { #2 }
       \cs_set:Npn \__regex_escape_raw:N ##1 { #3 }
       \__regex_standard_escapechar:
-      \__kernel_tl_gset:Nx \g__regex_internal_tl
+      \__kernel_tl_gset:Ne \g__regex_internal_tl
         { \__kernel_str_to_other_fast:n {#4} }
-      \tl_put_right:Nx \l__regex_internal_a_tl
+      \tl_put_right:Ne \l__regex_internal_a_tl
         {
           \exp_after:wN \__regex_escape_loop:N \g__regex_internal_tl
           \scan_stop: \prg_break_point:
@@ -23880,17 +24036,17 @@
     \prg_break:
   }
 \cs_new:cpn { __regex_escape_~:w } { }
-\cs_new:cpx { __regex_escape_/a:w }
+\cs_new:cpe { __regex_escape_/a:w }
   { \exp_not:N \__regex_escape_raw:N \iow_char:N \^^G }
-\cs_new:cpx { __regex_escape_/t:w }
+\cs_new:cpe { __regex_escape_/t:w }
   { \exp_not:N \__regex_escape_raw:N \iow_char:N \^^I }
-\cs_new:cpx { __regex_escape_/n:w }
+\cs_new:cpe { __regex_escape_/n:w }
   { \exp_not:N \__regex_escape_raw:N \iow_char:N \^^J }
-\cs_new:cpx { __regex_escape_/f:w }
+\cs_new:cpe { __regex_escape_/f:w }
   { \exp_not:N \__regex_escape_raw:N \iow_char:N \^^L }
-\cs_new:cpx { __regex_escape_/r:w }
+\cs_new:cpe { __regex_escape_/r:w }
   { \exp_not:N \__regex_escape_raw:N \iow_char:N \^^M }
-\cs_new:cpx { __regex_escape_/e:w }
+\cs_new:cpe { __regex_escape_/e:w }
   { \exp_not:N \__regex_escape_raw:N \iow_char:N \^^[ }
 \cs_new:cpn { __regex_escape_/x:w } \__regex_escape_loop:N
   {
@@ -24185,7 +24341,7 @@
         }
         { }
       \if_int_compare:w \l__regex_group_level_int > \c_zero_int
-        \msg_error:nnx { regex } { missing-rparen }
+        \msg_error:nne { regex } { missing-rparen }
           { \int_use:N \l__regex_group_level_int }
         \prg_replicate:nn
           { \l__regex_group_level_int }
@@ -24204,7 +24360,7 @@
       \fi:
       \tl_build_put_right:Nn \l__regex_build_tl { \if_false: { \fi: } }
       \tl_build_end:N \l__regex_build_tl
-      \exp_args:NNNx
+      \exp_args:NNNe
     \group_end:
     \tl_set:Nn \l__regex_internal_regex { \l__regex_build_tl }
   }
@@ -24269,7 +24425,7 @@
         \tl_build_put_right:Nn \l__regex_build_tl
           { \__regex_class:NnnnN \c_true_bool { \if_false: } \fi: }
       }
-    \tl_build_put_right:Nx \l__regex_build_tl
+    \tl_build_put_right:Ne \l__regex_build_tl
       {
         \if_int_compare:w \l__regex_catcodes_int <
           \c__regex_all_catcodes_int
@@ -24284,13 +24440,13 @@
   }
 \cs_new_protected:Npn \__regex_compile_abort_tokens:n #1
   {
-    \use:x
+    \use:e
       {
         \exp_args:No \tl_map_function:nN { \tl_to_str:n {#1} }
           \__regex_compile_raw:N
       }
   }
-\cs_generate_variant:Nn \__regex_compile_abort_tokens:n { x }
+\cs_generate_variant:Nn \__regex_compile_abort_tokens:n { e }
 \cs_new_protected:Npn \__regex_compile_if_quantifier:TFw #1#2#3#4
   {
     \token_if_eq_meaning:NNTF #3 \__regex_compile_special:N
@@ -24312,11 +24468,11 @@
     \tl_build_put_right:Nn \l__regex_build_tl
       { \if_false: { \fi: } { 1 } { 0 } \c_false_bool }
   }
-\cs_new_protected:Npn \__regex_compile_quantifier_abort:xNN #1#2#3
+\cs_new_protected:Npn \__regex_compile_quantifier_abort:eNN #1#2#3
   {
     \__regex_compile_quantifier_none:
-    \msg_warning:nnxx { regex } { invalid-quantifier } {#1} {#3}
-    \__regex_compile_abort_tokens:x {#1}
+    \msg_warning:nnee { regex } { invalid-quantifier } {#1} {#3}
+    \__regex_compile_abort_tokens:e {#1}
     #2 #3
   }
 \cs_new_protected:Npn \__regex_compile_quantifier_lazyness:nnNN #1#2#3#4
@@ -24342,7 +24498,7 @@
   {
     \__regex_get_digits:NTFw \l__regex_internal_a_int
       { \__regex_compile_quantifier_braced_auxi:w }
-      { \__regex_compile_quantifier_abort:xNN { \c_left_brace_str } }
+      { \__regex_compile_quantifier_abort:eNN { \c_left_brace_str } }
   }
 \cs_new_protected:Npn \__regex_compile_quantifier_braced_auxi:w #1#2
   {
@@ -24361,7 +24517,7 @@
           }
       }
       {
-        \__regex_compile_quantifier_abort:xNN
+        \__regex_compile_quantifier_abort:eNN
           { \c_left_brace_str \int_use:N \l__regex_internal_a_int }
         #1 #2
       }
@@ -24374,7 +24530,7 @@
           { \int_use:N \l__regex_internal_a_int } { -1 }
       }
       {
-        \__regex_compile_quantifier_abort:xNN
+        \__regex_compile_quantifier_abort:eNN
           { \c_left_brace_str \int_use:N \l__regex_internal_a_int , }
         #1 #2
       }
@@ -24385,7 +24541,7 @@
       {
         \if_int_compare:w \l__regex_internal_a_int >
           \l__regex_internal_b_int
-          \msg_error:nnxx { regex } { backwards-quantifier }
+          \msg_error:nnee { regex } { backwards-quantifier }
             { \int_use:N \l__regex_internal_a_int }
             { \int_use:N \l__regex_internal_b_int }
           \int_zero:N \l__regex_internal_b_int
@@ -24397,7 +24553,7 @@
           { \int_use:N \l__regex_internal_b_int }
       }
       {
-        \__regex_compile_quantifier_abort:xNN
+        \__regex_compile_quantifier_abort:eNN
           {
             \c_left_brace_str
             \int_use:N \l__regex_internal_a_int ,
@@ -24408,7 +24564,7 @@
   }
 \cs_new_protected:Npn \__regex_compile_raw_error:N #1
   {
-    \msg_error:nnx { regex } { bad-escape } {#1}
+    \msg_error:nne { regex } { bad-escape } {#1}
     \__regex_compile_raw:N #1
   }
 \cs_new_protected:Npn \__regex_compile_raw:N #1#2#3
@@ -24450,9 +24606,9 @@
     \__regex_if_end_range:NNTF #2 #3
       {
         \if_int_compare:w `#1 > `#3 \exp_stop_f:
-          \msg_error:nnxx { regex } { range-backwards } {#1} {#3}
+          \msg_error:nnee { regex } { range-backwards } {#1} {#3}
         \else:
-          \tl_build_put_right:Nx \l__regex_build_tl
+          \tl_build_put_right:Ne \l__regex_build_tl
             {
               \if_int_compare:w `#1 = `#3 \exp_stop_f:
                 \__regex_item_equal:n
@@ -24464,9 +24620,9 @@
         \fi:
       }
       {
-        \msg_warning:nnxx { regex } { range-missing-end }
+        \msg_warning:nnee { regex } { range-missing-end }
           {#1} { \c_backslash_str #3 }
-        \tl_build_put_right:Nx \l__regex_build_tl
+        \tl_build_put_right:Ne \l__regex_build_tl
           {
             \__regex_item_equal:n { \int_value:w `#1 \exp_stop_f: }
             \__regex_item_equal:n { \int_value:w `- \exp_stop_f: }
@@ -24474,7 +24630,7 @@
         #2#3
       }
   }
-\cs_new_protected:cpx { __regex_compile_.: }
+\cs_new_protected:cpe { __regex_compile_.: }
   {
     \exp_not:N \__regex_if_in_class:TF
       { \__regex_compile_raw:N . }
@@ -24488,9 +24644,9 @@
   }
 \cs_set_protected:Npn \__regex_tmp:w #1#2
   {
-    \cs_new_protected:cpx { __regex_compile_/#1: }
+    \cs_new_protected:cpe { __regex_compile_/#1: }
       { \__regex_compile_one:n \exp_not:c { __regex_prop_#1: } }
-    \cs_new_protected:cpx { __regex_compile_/#2: }
+    \cs_new_protected:cpe { __regex_compile_/#2: }
       {
         \__regex_compile_one:n
           { \__regex_item_reverse:n { \exp_not:c { __regex_prop_#1: } } }
@@ -24534,8 +24690,8 @@
           }
       }
   }
-\exp_args:Nx \__regex_tmp:w { \iow_char:N \^ } { \__regex_A_test: }
-\exp_args:Nx \__regex_tmp:w { \iow_char:N \$ } { \__regex_Z_test: }
+\exp_args:Ne \__regex_tmp:w { \iow_char:N \^ } { \__regex_A_test: }
+\exp_args:Ne \__regex_tmp:w { \iow_char:N \$ } { \__regex_Z_test: }
 \cs_new_protected:cpn { __regex_compile_]: }
   {
     \__regex_if_in_class:TF
@@ -24609,11 +24765,11 @@
           {
             : { \__regex_compile_class_posix:NNNNw }
             = {
-                \msg_warning:nnx { regex }
+                \msg_warning:nne { regex }
                   { posix-unsupported } { = }
               }
             . {
-                \msg_warning:nnx { regex }
+                \msg_warning:nne { regex }
                   { posix-unsupported } { . }
               }
           }
@@ -24625,12 +24781,12 @@
     \__regex_two_if_eq:NNNNTF #5 #6 \__regex_compile_special:N ^
       {
         \bool_set_false:N \l__regex_internal_bool
-        \__kernel_tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
+        \__kernel_tl_set:Ne \l__regex_internal_a_tl { \if_false: } \fi:
           \__regex_compile_class_posix_loop:w
       }
       {
         \bool_set_true:N \l__regex_internal_bool
-        \__kernel_tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
+        \__kernel_tl_set:Ne \l__regex_internal_a_tl { \if_false: } \fi:
           \__regex_compile_class_posix_loop:w #5 #6
       }
   }
@@ -24655,9 +24811,9 @@
               }
           }
           {
-            \msg_warning:nnx { regex } { posix-unknown }
+            \msg_warning:nne { regex } { posix-unknown }
               { \l__regex_internal_a_tl }
-            \__regex_compile_abort_tokens:x
+            \__regex_compile_abort_tokens:e
               {
                 [: \bool_if:NF \l__regex_internal_bool { ^ }
                 \l__regex_internal_a_tl :]
@@ -24665,9 +24821,9 @@
           }
       }
       {
-        \msg_error:nnxx { regex } { posix-missing-close }
+        \msg_error:nnee { regex } { posix-missing-close }
           { [: \l__regex_internal_a_tl } { #2 #4 }
-        \__regex_compile_abort_tokens:x { [: \l__regex_internal_a_tl }
+        \__regex_compile_abort_tokens:e { [: \l__regex_internal_a_tl }
         #1 #2 #3 #4
       }
   }
@@ -24687,7 +24843,7 @@
     \if_int_compare:w \l__regex_group_level_int > \c_zero_int
         \tl_build_put_right:Nn \l__regex_build_tl { \if_false: { \fi: } }
         \tl_build_end:N \l__regex_build_tl
-        \exp_args:NNNx
+        \exp_args:NNNe
       \group_end:
       \tl_build_put_right:Nn \l__regex_build_tl { \l__regex_build_tl }
       \int_set_eq:NN \l__regex_catcodes_int \l__regex_default_catcodes_int
@@ -24717,7 +24873,7 @@
         \cs_if_exist_use:cF
           { __regex_compile_special_group_\token_to_str:N #4 :w }
           {
-            \msg_warning:nnx { regex } { special-group-unknown }
+            \msg_warning:nne { regex } { special-group-unknown }
               { (? #4 }
             \__regex_compile_group_begin:N \__regex_group:nnnN
               \__regex_compile_raw:N ? #3 #4
@@ -24755,7 +24911,7 @@
           { \__regex_item_caseless_range:nn }
       }
       {
-        \msg_warning:nnx { regex } { unknown-option } { (?i #2 }
+        \msg_warning:nne { regex } { unknown-option } { (?i #2 }
         \__regex_compile_raw:N (
         \__regex_compile_raw:N ?
         \__regex_compile_raw:N i
@@ -24774,7 +24930,7 @@
           { \__regex_item_caseful_range:nn }
       }
       {
-        \msg_warning:nnx { regex } { unknown-option } { (?-#2#4 }
+        \msg_warning:nne { regex } { unknown-option } { (?-#2#4 }
         \__regex_compile_raw:N (
         \__regex_compile_raw:N ?
         \__regex_compile_raw:N -
@@ -24802,7 +24958,7 @@
       }
       { \cs_if_exist_use:cF { __regex_compile_c_#2:w } }
           {
-            \msg_error:nnx { regex } { c-missing-category } {#2}
+            \msg_error:nne { regex } { c-missing-category } {#2}
             #1 #2
           }
   }
@@ -24854,7 +25010,7 @@
           { \__regex_compile_c_lbrack_end: }
       }
           {
-            \msg_error:nnx { regex } { c-missing-rbrack } {#2}
+            \msg_error:nne { regex } { c-missing-rbrack } {#2}
             \__regex_compile_c_lbrack_end:
             #1 #2
           }
@@ -24901,12 +25057,12 @@
   {
     \__regex_compile_end:
     \flag_clear:n { __regex_cs }
-    \__kernel_tl_set:Nx \l__regex_internal_a_tl
+    \__kernel_tl_set:Ne \l__regex_internal_a_tl
       {
         \exp_after:wN \__regex_compile_cs_aux:Nn \l__regex_internal_regex
         \q__regex_nil \q__regex_nil \q__regex_recursion_stop
       }
-    \exp_args:Nx \__regex_compile_one:n
+    \exp_args:Ne \__regex_compile_one:n
       {
         \flag_if_raised:nTF { __regex_cs }
           { \__regex_item_cs:n { \exp_not:o \l__regex_internal_regex } }
@@ -24970,7 +25126,7 @@
     \__regex_two_if_eq:NNNNTF #2 #3 \__regex_compile_special:N \c_left_brace_str
       {
         \tl_set:Nn \l__regex_internal_b_tl {#1}
-        \__kernel_tl_set:Nx \l__regex_internal_a_tl { \if_false: } \fi:
+        \__kernel_tl_set:Ne \l__regex_internal_a_tl { \if_false: } \fi:
         \__regex_compile_u_loop:NN
       }
       {
@@ -25001,7 +25157,7 @@
           }
           {
             \if_false: { \fi: }
-            \msg_error:nnx { regex } { u-missing-rbrace } {#2}
+            \msg_error:nne { regex } { u-missing-rbrace } {#2}
             \l__regex_internal_b_tl
             #1 #2
           }
@@ -25012,7 +25168,7 @@
     \group_begin:
       \cs_set:Npn \__regex_group:nnnN { \__regex_group_no_capture:nnnN }
       \cs_set:Npn \__regex_group_resetting:nnnN { \__regex_group_no_capture:nnnN }
-      \exp_args:NNx
+      \exp_args:NNe
     \group_end:
     \__regex_compile_ur:n { \use:c { \l__regex_internal_a_tl } }
   }
@@ -25055,12 +25211,12 @@
   }
 \cs_new_protected:Npn \__regex_compile_u_in_cs:
   {
-    \__kernel_tl_gset:Nx \g__regex_internal_tl
+    \__kernel_tl_gset:Ne \g__regex_internal_tl
       {
         \exp_args:No \__kernel_str_to_other_fast:n
           { \l__regex_internal_a_tl }
       }
-    \tl_build_put_right:Nx \l__regex_build_tl
+    \tl_build_put_right:Ne \l__regex_build_tl
       {
         \tl_map_function:NN \g__regex_internal_tl
           \__regex_compile_u_in_cs_aux:n
@@ -25076,7 +25232,7 @@
   {
     \tl_analysis_map_inline:Nn \l__regex_internal_a_tl
       {
-        \tl_build_put_right:Nx \l__regex_build_tl
+        \tl_build_put_right:Ne \l__regex_build_tl
           {
             \__regex_class:NnnnN \c_true_bool
               {
@@ -25322,7 +25478,7 @@
 \cs_new_protected:Npn \__regex_show_one:n #1
   {
     \int_incr:N \l__regex_show_lines_int
-    \tl_build_put_right:Nx \l__regex_build_tl
+    \tl_build_put_right:Ne \l__regex_build_tl
       {
         \exp_not:N \iow_newline:
         \seq_map_function:NN \l__regex_show_prefix_seq \use:n
@@ -25330,7 +25486,7 @@
       }
   }
 \cs_new_protected:Npn \__regex_show_push:n #1
-  { \seq_put_right:Nx \l__regex_show_prefix_seq { #1 ~ } }
+  { \seq_put_right:Ne \l__regex_show_prefix_seq { #1 ~ } }
 \cs_new_protected:Npn \__regex_show_pop:
   { \seq_pop_right:NN \l__regex_show_prefix_seq \l__regex_internal_a_tl }
 \cs_new_protected:Npn \__regex_show_scope:nn #1#2
@@ -25380,7 +25536,7 @@
                 \bool_if:NTF #1 { Match } { Don't~match }
                 \__regex_msg_repeated:nnN {#3} {#4} #5
               }
-            \tl_build_put_right:Nx \l__regex_build_tl
+            \tl_build_put_right:Ne \l__regex_build_tl
               { \exp_not:o \l__regex_internal_a_tl }
           }
       }
@@ -25443,7 +25599,7 @@
     \__regex_case_build_aux:Nn \c_true_bool {#1}
     \int_gzero:N \g__regex_case_int
   }
-\cs_generate_variant:Nn \__regex_case_build:n { x }
+\cs_generate_variant:Nn \__regex_case_build:n { e }
 \cs_new_protected:Npn \__regex_case_build_aux:Nn #1#2
   {
     \__regex_standard_escapechar:
@@ -25454,7 +25610,7 @@
       { \__regex_action_start_wildcard:N #1 }
     %
     \__regex_build_new_state:
-    \__regex_toks_put_left:Nx \l__regex_left_state_int
+    \__regex_toks_put_left:Ne \l__regex_left_state_int
       { \__regex_action_submatch:nN { 0 } < }
     \__regex_push_lr_states:
     \int_zero:N \l__regex_case_max_group_int
@@ -25478,7 +25634,7 @@
       }
     \seq_pop:NN \l__regex_right_state_seq \l__regex_internal_a_tl
     \int_set:Nn \l__regex_right_state_int \l__regex_internal_a_tl
-    \__regex_toks_put_left:Nx \l__regex_right_state_int
+    \__regex_toks_put_left:Ne \l__regex_right_state_int
       {
         \__regex_action_submatch:nN { 0 } >
         \int_gset:Nn \g__regex_case_int
@@ -25520,9 +25676,9 @@
     \int_set:Nn \l__regex_right_state_int \l__regex_internal_a_tl
   }
 \cs_new_protected:Npn \__regex_build_transition_left:NNN #1#2#3
-  { \__regex_toks_put_left:Nx  #2 { #1 { \int_eval:n { #3 - #2 } } } }
+  { \__regex_toks_put_left:Ne  #2 { #1 { \int_eval:n { #3 - #2 } } } }
 \cs_new_protected:Npn \__regex_build_transition_right:nNn #1#2#3
-  { \__regex_toks_put_right:Nx #2 { #1 { \int_eval:n { #3 - #2 } } } }
+  { \__regex_toks_put_right:Ne #2 { #1 { \int_eval:n { #3 - #2 } } } }
 \cs_new_protected:Npn \__regex_build_new_state:
   {
     \__regex_toks_clear:N \l__regex_max_state_int
@@ -25533,7 +25689,7 @@
 \cs_new_protected:Npn \__regex_build_transitions_lazyness:NNNNN #1#2#3#4#5
   {
     \__regex_build_new_state:
-    \__regex_toks_put_right:Nx \l__regex_left_state_int
+    \__regex_toks_put_right:Ne \l__regex_left_state_int
       {
         \if_meaning:w \c_true_bool #1
           #2 { \int_eval:n { #3 - \l__regex_left_state_int } }
@@ -25546,7 +25702,7 @@
   }
 \cs_new_protected:Npn \__regex_class:NnnnN #1#2#3#4#5
   {
-    \cs_set:Npx \__regex_tests_action_cost:n ##1
+    \cs_set:Npe \__regex_tests_action_cost:n ##1
       {
         \exp_not:n { \exp_not:n {#2} }
         \bool_if:NTF #1
@@ -25672,8 +25828,8 @@
 \cs_new_protected:Npn \__regex_group_submatches:nNN #1#2#3
   {
     \if_int_compare:w #1 > - \c_one_int
-      \__regex_toks_put_left:Nx #2 { \__regex_action_submatch:nN {#1} < }
-      \__regex_toks_put_left:Nx #3 { \__regex_action_submatch:nN {#1} > }
+      \__regex_toks_put_left:Ne #2 { \__regex_action_submatch:nN {#1} < }
+      \__regex_toks_put_left:Ne #3 { \__regex_action_submatch:nN {#1} > }
     \fi:
   }
 \cs_new_protected:Npn \__regex_group_repeat_aux:n #1
@@ -25764,7 +25920,7 @@
 \cs_new_protected:Npn \__regex_assertion:Nn #1#2
   {
     \__regex_build_new_state:
-    \__regex_toks_put_right:Nx \l__regex_left_state_int
+    \__regex_toks_put_right:Ne \l__regex_left_state_int
       {
         \exp_not:n {#2}
         \__regex_break_point:TF
@@ -25809,7 +25965,7 @@
 \cs_new_protected:Npn \__regex_command_K:
   {
     \__regex_build_new_state:
-    \__regex_toks_put_right:Nx \l__regex_left_state_int
+    \__regex_toks_put_right:Ne \l__regex_left_state_int
       {
         \__regex_action_submatch:nN { 0 } <
         \bool_set_true:N \l__regex_fresh_thread_bool
@@ -25904,7 +26060,7 @@
     \fi:
     \int_set_eq:NN \l__regex_start_pos_int \l__regex_success_pos_int
     \bool_set_false:N \l__regex_match_success_bool
-    \tl_set:Nx \l__regex_curr_submatches_tl
+    \tl_set:Ne \l__regex_curr_submatches_tl
       { \prg_replicate:nn { 2 * \l__regex_capturing_group_int } { 0 , } }
     \int_set_eq:NN \l__regex_max_thread_int \l__regex_min_thread_int
     \__regex_store_state:n { \l__regex_min_state_int }
@@ -25954,10 +26110,10 @@
     \tl_set:Nn \l__regex_curr_token_tl {#1}
     \int_set:Nn \l__regex_curr_char_int {#2}
     \int_set:Nn \l__regex_curr_catcode_int { "#3 }
-    \tl_build_put_right:Nx \l__regex_matched_analysis_tl
+    \tl_build_put_right:Ne \l__regex_matched_analysis_tl
       { \exp_not:o \l__regex_curr_analysis_tl }
     \tl_set:Nn \l__regex_curr_analysis_tl { { {#1} {#2} #3 } }
-    \use:x
+    \use:e
       {
         \int_set_eq:NN \l__regex_max_thread_int \l__regex_min_thread_int
         \int_step_function:nnN
@@ -26017,7 +26173,7 @@
   { \__regex_action_free_aux:nn { < \l__regex_step_int } }
 \cs_new_protected:Npn \__regex_action_free_aux:nn #1#2
   {
-    \use:x
+    \use:e
       {
         \int_add:Nn \l__regex_curr_state_int {#2}
         \exp_not:n
@@ -26037,7 +26193,7 @@
   }
 \cs_new_protected:Npn \__regex_action_cost:n #1
   {
-    \exp_args:Nx \__regex_store_state:n
+    \exp_args:Ne \__regex_store_state:n
       { \int_eval:n { \l__regex_curr_state_int + #1 } }
   }
 \cs_new_protected:Npn \__regex_store_state:n #1
@@ -26069,7 +26225,7 @@
   }
 \cs_new_protected:Npn \__regex_action_submatch_aux:w #1 ; #2#3
   {
-    \tl_set:Nx \l__regex_curr_submatches_tl
+    \tl_set:Ne \l__regex_curr_submatches_tl
       {
         \prg_replicate:nn
           { #2 \if_meaning:w > #3 + \l__regex_capturing_group_int \fi: }
@@ -26180,18 +26336,18 @@
         {#2}
       \prg_do_nothing: \prg_do_nothing:
       \if_int_compare:w \l__regex_replacement_csnames_int > \c_zero_int
-        \msg_error:nnx { regex } { replacement-missing-rbrace }
+        \msg_error:nne { regex } { replacement-missing-rbrace }
           { \int_use:N \l__regex_replacement_csnames_int }
-        \tl_build_put_right:Nx \l__regex_build_tl
+        \tl_build_put_right:Ne \l__regex_build_tl
           { \prg_replicate:nn \l__regex_replacement_csnames_int \cs_end: }
       \fi:
       \seq_if_empty:NF \l__regex_replacement_category_seq
         {
-          \msg_error:nnx { regex } { replacement-missing-rparen }
+          \msg_error:nne { regex } { replacement-missing-rparen }
             { \seq_count:N \l__regex_replacement_category_seq }
           \seq_clear:N \l__regex_replacement_category_seq
         }
-      \tl_gput_right:Nx \g__regex_balance_tl
+      \tl_gput_right:Ne \g__regex_balance_tl
         { + \int_use:N \l__regex_balance_int }
       \tl_build_end:N \l__regex_build_tl
       \exp_args:NNo
@@ -26198,7 +26354,7 @@
     \group_end:
     #1 \l__regex_build_tl
   }
-\cs_generate_variant:Nn \__regex_replacement:n { x }
+\cs_generate_variant:Nn \__regex_replacement:n { e }
 \cs_new_protected:Npn \__regex_replacement_set:n #1
   {
     \cs_set:Npn \__regex_replacement_do_one_match:n ##1
@@ -26239,7 +26395,7 @@
     \exp_args:No \__regex_replacement_set:n
       { \g__regex_case_replacement_tl \fi: }
   }
-\cs_generate_variant:Nn \__regex_case_replacement:n { x }
+\cs_generate_variant:Nn \__regex_case_replacement:n { e }
 \cs_new_protected:Npn \__regex_case_replacement_aux:n #1
   {
     \tl_gput_right:Nn \g__regex_case_replacement_tl { \or: #1 }
@@ -26505,7 +26661,7 @@
 \group_end:
 \cs_new_protected:Npn \__regex_replacement_error:NNN #1#2#3
   {
-    \msg_error:nnx { regex } { replacement-#1 } {#3}
+    \msg_error:nne { regex } { replacement-#1 } {#3}
     #2 #3
   }
 \cs_new_protected:Npn \regex_new:N #1
@@ -26527,10 +26683,10 @@
 \cs_new_protected:Npn \regex_const:Nn #1#2
   {
     \__regex_compile:n {#2}
-    \tl_const:Nx #1 { \exp_not:o \l__regex_internal_regex }
+    \tl_const:Ne #1 { \exp_not:o \l__regex_internal_regex }
   }
-\cs_new_protected:Npn \regex_show:n { \__regex_show:Nn \msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:n { \__regex_show:Nn \msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:n { \__regex_show:Nn \msg_show:nneeee }
+\cs_new_protected:Npn \regex_log:n { \__regex_show:Nn \msg_log:nneeee }
 \cs_new_protected:Npn \__regex_show:Nn #1#2
   {
     \__regex_compile:n {#2}
@@ -26539,8 +26695,8 @@
       { \tl_to_str:n {#2} } { }
       { \l__regex_internal_a_tl } { }
   }
-\cs_new_protected:Npn \regex_show:N { \__regex_show:NN \msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:N { \__regex_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:N { \__regex_show:NN \msg_show:nneeee }
+\cs_new_protected:Npn \regex_log:N { \__regex_show:NN \msg_log:nneeee }
 \cs_new_protected:Npn \__regex_show:NN #1#2
   {
     \__kernel_chk_tl_type:NnnT #2 { regex }
@@ -26611,7 +26767,7 @@
   {
     \int_if_odd:nTF { \tl_count:n {#1} }
       {
-        \msg_error:nnxxxx { regex } { case-odd }
+        \msg_error:nneeee { regex } { case-odd }
           { \token_to_str:N \regex_replace_case_once:nN(TF) } { code }
           { \tl_count:n {#1} } { \tl_to_str:n {#1} }
         \use_ii:nn
@@ -26618,8 +26774,8 @@
       }
       {
         \__regex_replace_once_aux:nnN
-          { \__regex_case_build:x { \__regex_tl_odd_items:n {#1} } }
-          { \__regex_replacement:x { \tl_item:nn {#1} { 2 * \g__regex_case_int } } }
+          { \__regex_case_build:e { \__regex_tl_odd_items:n {#1} } }
+          { \__regex_replacement:e { \tl_item:nn {#1} { 2 * \g__regex_case_int } } }
           #2
         \bool_if:NTF \g__regex_success_bool
       }
@@ -26634,7 +26790,7 @@
   {
     \int_if_odd:nTF { \tl_count:n {#1} }
       {
-        \msg_error:nnxxxx { regex } { case-odd }
+        \msg_error:nneeee { regex } { case-odd }
           { \token_to_str:N \regex_replace_case_all:nN(TF) } { code }
           { \tl_count:n {#1} } { \tl_to_str:n {#1} }
         \use_ii:nn
@@ -26641,8 +26797,8 @@
       }
       {
         \__regex_replace_all_aux:nnN
-          { \__regex_case_build:x { \__regex_tl_odd_items:n {#1} } }
-          { \__regex_case_replacement:x { \__regex_tl_even_items:n {#1} } }
+          { \__regex_case_build:e { \__regex_tl_odd_items:n {#1} } }
+          { \__regex_case_replacement:e { \__regex_tl_even_items:n {#1} } }
           #2
         \bool_if:NTF \g__regex_success_bool
       }
@@ -26708,7 +26864,7 @@
   {
     \int_if_odd:nTF { \tl_count:n {#1} }
       {
-        \msg_error:nnxxxx { regex } { case-odd }
+        \msg_error:nneeee { regex } { case-odd }
           { \token_to_str:N \regex_match_case:nn(TF) } { code }
           { \tl_count:n {#1} } { \tl_to_str:n {#1} }
         \use_ii:nn
@@ -26715,7 +26871,7 @@
       }
       {
         \__regex_if_match:nn
-          { \__regex_case_build:x { \__regex_tl_odd_items:n {#1} } }
+          { \__regex_case_build:e { \__regex_tl_odd_items:n {#1} } }
           {#2}
         \bool_if:NTF \g__regex_success_bool
       }
@@ -26797,7 +26953,7 @@
       \flag_clear:n { __regex_begin }
       \flag_clear:n { __regex_end }
       \cs_set_eq:NN \__regex_tmp:w \scan_stop:
-      \__kernel_tl_gset:Nx \g__regex_internal_tl
+      \__kernel_tl_gset:Ne \g__regex_internal_tl
         {
           \int_step_function:nnN { \l__regex_min_submatch_int }
             { \l__regex_submatch_int - 1 } \__regex_extract_seq_aux:n
@@ -26808,12 +26964,12 @@
       \int_set:Nn \l__regex_added_end_int
         { \flag_height:n { __regex_end } }
       \tex_afterassignment:D \__regex_extract_check:w
-      \__kernel_tl_gset:Nx \g__regex_internal_tl
+      \__kernel_tl_gset:Ne \g__regex_internal_tl
         { \g__regex_internal_tl \if_false: { \fi: } }
       \int_compare:nNnT
         { \l__regex_added_begin_int + \l__regex_added_end_int } > 0
         {
-          \msg_error:nnxxx { regex } { result-unbalanced }
+          \msg_error:nneee { regex } { result-unbalanced }
             { splitting~or~extracting~submatches }
             { \int_use:N \l__regex_added_begin_int }
             { \int_use:N \l__regex_added_end_int }
@@ -26872,7 +27028,7 @@
         \int_incr:N \l__regex_added_begin_int
         \int_incr:N \l__regex_added_end_int
         \tex_afterassignment:D \__regex_extract_check:w
-        \__kernel_tl_gset:Nx \g__regex_internal_tl
+        \__kernel_tl_gset:Ne \g__regex_internal_tl
           {
             \exp_after:wN \__regex_extract_check_loop:w
             \g__regex_internal_tl
@@ -26949,7 +27105,7 @@
             \__regex_replacement_balance_one_match:n
               { \l__regex_zeroth_submatch_int }
           }
-        \__kernel_tl_set:Nx \l__regex_internal_a_tl
+        \__kernel_tl_set:Ne \l__regex_internal_a_tl
           {
             \__regex_replacement_do_one_match:n
               { \l__regex_zeroth_submatch_int }
@@ -26983,7 +27139,7 @@
             { \l__regex_submatch_int - 1 }
             \__regex_replacement_balance_one_match:n
         }
-      \__kernel_tl_set:Nx \l__regex_internal_a_tl
+      \__kernel_tl_set:Ne \l__regex_internal_a_tl
         {
           \int_step_function:nnnN
             { \l__regex_min_submatch_int }
@@ -27004,7 +27160,7 @@
     \__regex_group_end_replace_try:
     \int_compare:nNnT { \l__regex_added_begin_int + \l__regex_added_end_int } > 0
       {
-        \msg_error:nnxxx { regex } { result-unbalanced }
+        \msg_error:nneee { regex } { result-unbalanced }
           { replacing } { \int_use:N \l__regex_added_begin_int }
           { \int_use:N \l__regex_added_end_int }
       }
@@ -27014,7 +27170,7 @@
 \cs_new_protected:Npn \__regex_group_end_replace_try:
   {
     \tex_afterassignment:D \__regex_group_end_replace_check:w
-    \__kernel_tl_gset:Nx \g__regex_internal_tl
+    \__kernel_tl_gset:Ne \g__regex_internal_tl
       {
         \prg_replicate:nn { \l__regex_added_begin_int } { { \if_false: } \fi: }
         \l__regex_internal_a_tl
@@ -27167,7 +27323,7 @@
         \cs_set_eq:NN \__regex_replacement_exp_not:N \__regex_peek_replacement_token:n
         \cs_set_eq:NN \__regex_replacement_exp_not:V \__regex_peek_replacement_var:N
         \exp_args:No \__regex_replacement:n { \l__regex_replacement_tl }
-        \use:x
+        \use:e
           {
             \exp_not:n { \exp_after:wN \l__regex_peek_true_tl \exp:w }
             \__regex_replacement_do_one_match:n
@@ -27226,7 +27382,7 @@
     \exp_after:wN #1
     \exp:w
   }
-\use:x
+\use:e
   {
     \msg_new:nnn { regex } { trailing-backslash }
       { Trailing~'\iow_char:N\\'~in~regex~or~replacement. }
@@ -27533,14 +27689,14 @@
       }
   }
 \cs_new_protected:Npn \__regex_trace_push:nnN #1#2#3
-  { \__regex_trace:nnx {#1} {#2} { entering~ \token_to_str:N #3 } }
+  { \__regex_trace:nne {#1} {#2} { entering~ \token_to_str:N #3 } }
 \cs_new_protected:Npn \__regex_trace_pop:nnN #1#2#3
-   { \__regex_trace:nnx {#1} {#2} { leaving~ \token_to_str:N #3 } }
-\cs_new_protected:Npn \__regex_trace:nnx #1#2#3
+   { \__regex_trace:nne {#1} {#2} { leaving~ \token_to_str:N #3 } }
+\cs_new_protected:Npn \__regex_trace:nne #1#2#3
   {
     \int_compare:nNnF
       { \int_use:c { g__regex_trace_#1_int } } < {#2}
-      { \iow_term:x { Trace:~#3 } }
+      { \iow_term:e { Trace:~#3 } }
   }
 \int_new:N \g__regex_trace_regex_int
 \cs_new_protected:Npn \__regex_trace_states:n #1
@@ -27549,7 +27705,7 @@
       \l__regex_min_state_int
       { \l__regex_max_state_int - 1 }
       {
-        \__regex_trace:nnx { regex } {#1}
+        \__regex_trace:nne { regex } {#1}
           { \iow_char:N \\toks ##1 = { \__regex_toks_use:w ##1 } }
       }
   }
@@ -27698,7 +27854,7 @@
         \group_end:
       }
       {
-        \msg_error:nnx { kernel } { variable-not-defined }
+        \msg_error:nne { kernel } { variable-not-defined }
           { \token_to_str:N #2 }
       }
   }
@@ -28389,7 +28545,7 @@
 \cs_generate_variant:Nn \exp_last_unbraced:Nf { c }
 \cs_new_protected:Npn \__color_convert:nnnN #1#2#3#4
   {
-    \tl_set:Nx #4
+    \tl_set:Ne #4
       {
         \cs_if_exist_use:cTF { __color_convert_ #1 _ #2 :w }
           { #3 \s__color_stop }
@@ -28463,11 +28619,11 @@
 \tl_new:N \l__color_value_tl
 \tl_new:N \l__color_next_model_tl
 \tl_new:N \l__color_next_value_tl
-\cs_new_protected:Npx \__color_parse:nN #1#2
+\cs_new_protected:Npe \__color_parse:nN #1#2
   {
-    \tl_set:Nx \exp_not:c { l__color_named_ . _tl }
+    \tl_set:Ne \exp_not:c { l__color_named_ . _tl }
       { \exp_not:N \__color_model:N \exp_not:N \l__color_current_tl }
-    \prop_put:NVx \exp_not:c { l__color_named_ . _prop }
+    \prop_put:NVe \exp_not:c { l__color_named_ . _prop }
       \exp_not:c { l__color_named_ . _tl }
       { \exp_not:N \__color_values:N \exp_not:N \l__color_current_tl }
     \exp_not:N \exp_args:Ne \exp_not:N \__color_parse_aux:nN
@@ -28492,7 +28648,7 @@
     \prop_get:cnNTF
       { l__color_named_ #3 _prop } {#1}
       \l__color_value_tl
-      { \tl_set:Nx #2 { {#1} { \l__color_value_tl } } }
+      { \tl_set:Ne #2 { {#1} { \l__color_value_tl } } }
       {
         \tl_set_eq:Nc \l__color_model_tl { l__color_named_ #3 _tl }
         \prop_get:cVN { l__color_named_ #3 _prop } \l__color_model_tl
@@ -28499,7 +28655,7 @@
           \l__color_value_tl
          \__color_convert:nnN
            \l__color_model_tl {#1} \l__color_value_tl
-        \tl_set:Nx #2
+        \tl_set:Ne #2
           {
             {#1}
             { \l__color_value_tl }
@@ -28524,7 +28680,7 @@
     \group_begin:
       \__color_extract:nNN {#2} \l__color_model_tl \l__color_value_tl
       \__color_parse_loop:w #3 ! ! ! ! \s__color_stop
-      \tl_set:Nx \l__color_internal_tl
+      \tl_set:Ne \l__color_internal_tl
         { { \l__color_model_tl } { \l__color_value_tl } }
     \exp_args:NNNV \group_end:
     \tl_set:Nn #1 \l__color_internal_tl
@@ -28537,7 +28693,7 @@
           { \fp_compare_p:nNn {#1} > { 0 } }
           { \fp_compare_p:nNn {#1} < { 100 } }
           {
-            \use:x
+            \use:e
               {
                 \__color_parse_loop:nn {#1}
                   { \tl_if_blank:nTF {#2} { white } {#2} }
@@ -28577,7 +28733,7 @@
               { \__color_parse_gray:n {#2} }
               { \__color_parse_std:n {#2} }
           }
-        \tl_set:Nx \l__color_value_tl
+        \tl_set:Ne \l__color_value_tl
           {
             \__color_parse_mix:NVVn
               \l__color_model_tl \l__color_value_tl \l__color_next_value_tl {#1}
@@ -28848,7 +29004,7 @@
             \__color_convert:VVN \l__color_model_tl \l_color_fixed_model_tl
               \l__color_value_tl
           }
-        \tl_set:Nx #1
+        \tl_set:Ne #1
           { { \l_color_fixed_model_tl } { \l__color_value_tl } }
       }
   }
@@ -28857,12 +29013,12 @@
     \tl_set:Nn \l__color_model_tl {#1}
     \tl_set:Nn \l__color_value_tl {#2}
   }
-\cs_new_protected:Npx \__color_finalise_current:
+\cs_new_protected:Npe \__color_finalise_current:
   {
-    \tl_set:Nx \exp_not:c { l__color_named_ . _tl }
+    \tl_set:Ne \exp_not:c { l__color_named_ . _tl }
       { \exp_not:N \__color_model:N \exp_not:N \l__color_current_tl }
     \prop_clear:N \exp_not:c { l__color_named_ . _prop }
-    \prop_put:NVx \exp_not:c { l__color_named_ . _prop }
+    \prop_put:NVe \exp_not:c { l__color_named_ . _prop }
       \exp_not:c { l__color_named_ . _tl }
       { \exp_not:N \__color_values:N \exp_not:N \l__color_current_tl }
   }
@@ -28903,7 +29059,7 @@
   {
     \cs_if_exist:cTF { __color_parse_model_ #1 :w }
       {
-        \tl_set:Nx #3
+        \tl_set:Ne #3
           { \use:c { __color_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s__color_stop }
       }
       { \msg_error:nnn { color } { unknown-model } {#1} }
@@ -28911,7 +29067,7 @@
 \cs_new_protected:Npn \__color_select_swap:Nnn #1#2#3
   {
     \__color_convert:nVnN {#2} \l_color_fixed_model_tl {#3} \l__color_value_tl
-    \tl_set:Nx #1
+    \tl_set:Ne #1
       { { \l_color_fixed_model_tl } { \l__color_value_tl } }
   }
 \tl_new:N \l_color_math_active_tl
@@ -29059,10 +29215,10 @@
       {
         \__color_parse:nN {#2} \l__color_named_tl
         \tl_clear_new:c { l__color_named_ #1 _tl }
-        \tl_set:cx { l__color_named_ #1 _tl }
+        \tl_set:ce { l__color_named_ #1 _tl }
           { \__color_model:N \l__color_named_tl }
         \prop_clear_new:c { l__color_named_ #1 _prop }
-        \prop_put:cvx { l__color_named_ #1 _prop } { l__color_named_ #1 _tl }
+        \prop_put:cve { l__color_named_ #1 _prop } { l__color_named_ #1 _tl }
           { \__color_values:N \l__color_named_tl }
         \__color_set:nnw {#1} {#2} #2 ! \s__color_stop
       }
@@ -29081,7 +29237,7 @@
                   \__color_parse:nN {#2} \l__color_internal_tl
                 \exp_args:NNNV \group_end:
                 \tl_set:Nn \l__color_internal_tl \l__color_internal_tl
-                \prop_put:cxx { l__color_named_ #1 _prop }
+                \prop_put:cee { l__color_named_ #1 _prop }
                   { \__color_model:N \l__color_internal_tl }
                   { \__color_values:N \l__color_internal_tl }
               }
@@ -29098,16 +29254,16 @@
           {#1} {#3}
       }
   }
-\cs_new_protected:Npx \__color_set_aux:nnn #1#2#3
+\cs_new_protected:Npe \__color_set_aux:nnn #1#2#3
   {
     \exp_not:N \__color_set_colon:nnw {#2} {#3}
       #1 \c_colon_str \c_colon_str \exp_not:N \s__color_stop
   }
-\use:x
+\use:e
   {
     \cs_new_protected:Npn \exp_not:N \__color_set_colon:nnw
-      ##1##2 ##3 \c_colon_str ##4 \c_colon_str
-      ##5 \exp_not:N \s__color_stop
+      #1#2 #3 \c_colon_str #4 \c_colon_str
+      #5 \exp_not:N \s__color_stop
   }
   {
     \tl_if_blank:nTF {#4}
@@ -29121,10 +29277,10 @@
     \tl_if_blank:nF {#2}
       {
         \__color_select:nnN {#2} {#4} \l__color_named_tl
-        \tl_set:Nx \l__color_internal_tl { \__color_model:N \l__color_named_tl }
+        \tl_set:Ne \l__color_internal_tl { \__color_model:N \l__color_named_tl }
         \tl_if_empty:cT { l__color_named_ #1 _tl }
           { \tl_set_eq:cN { l__color_named_ #1 _tl } \l__color_internal_tl }
-        \prop_put:cVx { l__color_named_ #1 _prop } \l__color_internal_tl
+        \prop_put:cVe { l__color_named_ #1 _prop } \l__color_internal_tl
           { \__color_values:N \l__color_named_tl }
         \__color_set_loop:nw {#1} #3 \s__color_mark #5 \s__color_stop
       }
@@ -29137,9 +29293,9 @@
         \prop_clear_new:c { l__color_named_ #1 _prop }
         \str_if_eq:nnTF {#2} { . }
           {
-            \tl_set:cx { l__color_named_ #1 _tl }
+            \tl_set:ce { l__color_named_ #1 _tl }
               { \__color_model:N \l__color_current_tl }
-            \prop_put:cvx { l__color_named_ #1 _prop } { l__color_named_ #1 _tl }
+            \prop_put:cve { l__color_named_ #1 _prop } { l__color_named_ #1 _tl }
               { \__color_values:N \l__color_current_tl }
           }
           {
@@ -29161,7 +29317,7 @@
 \color_set:nnn { blue }  { rgb } { 0 , 0 , 1 }
 \prop_new:c { l__color_named_._prop }
 \tl_new:c { l__color_named_._tl }
-\tl_set:cx { l__color_named_._tl } { \__color_model:N \l__color_current_tl }
+\tl_set:ce { l__color_named_._tl } { \__color_model:N \l__color_current_tl }
 \cs_new_protected:Npn \color_export:nnN #1#2#3
   {
     \group_begin:
@@ -29209,7 +29365,7 @@
 \group_begin:
   \cs_set_protected:Npn \__color_tmp:w #1#2
     {
-      \cs_new_protected:cpx { __color_export_format_ #1 :nnN } ##1##2##3
+      \cs_new_protected:cpe { __color_export_format_ #1 :nnN } ##1##2##3
         {
           \exp_not:N \__color_export:nnnNN {#2} {##1} {##2} ##3
             \exp_not:c { __color_export_ #1 :Nw }
@@ -29228,10 +29384,10 @@
 \cs_new_protected:cpn { __color_export_space-sep-cmyk:Nw } #1#2 \s__color_stop
   { \tl_set:Nn #1 {#2} }
 \cs_new_protected:cpn { __color_export_comma-sep-rgb:Nw } #1#2 ~ #3 ~ #4 \s__color_stop
-  { \tl_set:Nx #1 { #2 , #3 , #4 } }
+  { \tl_set:Ne #1 { #2 , #3 , #4 } }
 \cs_new_protected:Npn \__color_export_HTML:Nw #1#2 ~ #3 ~ #4 \s__color_stop
   {
-    \tl_set:Nx #1
+    \tl_set:Ne #1
       {
         \__color_export_HTML:n {#2}
         \__color_export_HTML:n {#3}
@@ -29312,13 +29468,13 @@
     \int_gincr:N \g__color_model_int
     \clist_map_inline:nn { fill , stroke , select }
       {
-        \cs_new_protected:cpx { __color_backend_ ##1 _ #1 :n } ####1
+        \cs_new_protected:cpe { __color_backend_ ##1 _ #1 :n } ####1
           {
             \exp_not:c { __color_backend_ ##1 _ #2 :nn }
               { color \int_use:N \g__color_model_int } {####1}
           }
       }
-    \cs_new_protected:cpx { __color_model_ #1 _white: }
+    \cs_new_protected:cpe { __color_model_ #1 _white: }
       {
         \prop_put:Nnn \exp_not:N \l__color_named_white_prop {#1}
           { \exp_not:n {#3} }
@@ -29327,7 +29483,7 @@
       }
     \use:c { __color_model_ #1 _white: }
   }
-\cs_generate_variant:Nn \__color_model_init:nnn { nnx }
+\cs_generate_variant:Nn \__color_model_init:nnn { nne }
 \cs_new_protected:Npn \__color_model_separation:n #1
   {
     \prop_get:NnNTF \l__color_internal_prop { name }
@@ -29384,7 +29540,7 @@
     \use:c { __color_model_separation_ #8 :nnnnnn }
       {#6} {#7} {#1} {#2} {#3} {#4}
     \prop_gput:Nnn \g__color_alternative_model_prop {#6} {#8}
-    \prop_gput:Nnx \g__color_colorants_prop {#6}
+    \prop_gput:Nne \g__color_colorants_prop {#6}
       { \str_convert_pdfname:n {#7} }
   }
 \cs_new_protected:Npn \__color_model_separation_cmyk:nnnnnn #1#2#3#4#5#6
@@ -29427,7 +29583,7 @@
   }
 \cs_new_protected:Npn \__color_model_convert:nnn #1#2#3
   {
-    \cs_new:cpx { __color_convert_ #1 _ #3 :w } ##1 \s__color_stop
+    \cs_new:cpe { __color_convert_ #1 _ #3 :w } ##1 \s__color_stop
       {
         \exp_not:N \exp_args:NNe \exp_not:N \use:nn
         \exp_not:c { __color_convert_  #2 _ #3 :w }
@@ -29514,12 +29670,12 @@
   }
 \cs_new_protected:Npn \__color_model_devicen:nnn #1#2#3
   {
-    \exp_args:Nx \__color_model_devicen:nnnn
+    \exp_args:Ne \__color_model_devicen:nnnn
       { \clist_count:n {#2} } {#1} {#2} {#3}
   }
 \cs_new_protected:Npn \__color_model_devicen:nnnn #1#2#3#4
   {
-    \__color_model_init:nnx {#4} { devicen }
+    \__color_model_init:nne {#4} { devicen }
       {
         0 \prg_replicate:nn { #1 - 1 } { ~ 0 }
       }
@@ -29527,7 +29683,7 @@
       { \__color_model_devicen_parse_generic:nn }
         {#4} {#1}
     \__color_model_devicen_init:nnn {#1} {#2} {#3}
-    \__color_model_devicen_convert:nnnx {#4} {#2} {#3}
+    \__color_model_devicen_convert:nnne {#4} {#2} {#3}
       {
         1 \prg_replicate:nn { #1 - 1 } { ~ 1 }
       }
@@ -29584,7 +29740,7 @@
         {#1}
         { \__color_model_devicen_parse:nw {#2} ##1 , ##2 , \q_nil , \s__color_stop }
       }
-    \cs_new:cpx { __color_parse_mix_ #1 :nw }
+    \cs_new:cpe { __color_parse_mix_ #1 :nw }
       ##1 ##2 \s__color_mark ##3 \s__color_stop
       {
         \exp_not:N \__color_model_devicen_mix:nw {##1}
@@ -29630,7 +29786,7 @@
   }
 \cs_new_protected:Npn \__color_model_devicen_init:nnnn #1#2#3#4
   {
-    \tl_set:Nx \l__color_internal_tl
+    \tl_set:Ne \l__color_internal_tl
       { \prg_replicate:nn {#1} { 1.0 ~ }   }
     \int_zero:N \l__color_internal_int
     \clist_map_inline:nn {#4}
@@ -29641,7 +29797,7 @@
         \exp_after:wN \__color_model_devicen_transform:w
           \l__color_value_tl , 0 , 0 , 0 , \s__color_stop {#1} {#2}
       }
-    \tl_put_right:Nx \l__color_internal_tl
+    \tl_put_right:Ne \l__color_internal_tl
       {
         \prg_replicate:nn {#1}
           { neg ~ 1.0 ~ add ~ #1 ~ -1 ~ roll ~ }
@@ -29649,7 +29805,7 @@
         \prg_replicate:nn {#2} { ~ pop } ~
         #1 ~ 1 ~ roll
       }
-    \use:x
+    \use:e
       {
         \__color_backend_devicen_init:nnn
           {
@@ -29687,7 +29843,7 @@
   }
 \cs_new_protected:Npn \__color_model_devicen_transform:nnn #1#2#3
   {
-    \tl_put_right:Nx \l__color_internal_tl
+    \tl_put_right:Ne \l__color_internal_tl
       {
         \fp_compare:nNnF {#3} = \c_zero_fp
           {
@@ -29705,7 +29861,7 @@
   {
     \use:c { __color_model_devicen_convert_ #2 :nnn } {#1} {#3}
   }
-\cs_generate_variant:Nn \__color_model_devicen_convert:nnnn { nnnx }
+\cs_generate_variant:Nn \__color_model_devicen_convert:nnnn { nnne }
 \cs_new_protected:Npn \__color_model_devicen_convert_cmyk:nnn #1#2
   {
     \tl_const:cn { c__color_fallback_ #1 _tl } { cmyk }
@@ -29724,7 +29880,7 @@
 \cs_new_protected:Npn \__color_model_devicen_convert:nnnnn #1#2#3#4#5
   {
     \cs_new:cpn { __color_convert_ #2 _ #1 :w } ##1 \s__color_stop {#5}
-    \cs_new:cpx { __color_convert_ #1 _ #2 :w } ##1 \s__color_stop
+    \cs_new:cpe { __color_convert_ #1 _ #2 :w } ##1 \s__color_stop
       {
         \exp_not:c { __color_convert_devicen_ #2 : \prg_replicate:nn {#3} { n } w }
           \prg_replicate:nn {#3} { { 1 } }
@@ -29861,7 +30017,7 @@
   }
 \cs_new_protected:Npn \__color_model_iccbased:nn #1#2
   {
-    \exp_args:NNx \prop_get:NnNTF \c__color_icc_colorspace_signatures_prop
+    \prop_get:NeNTF \c__color_icc_colorspace_signatures_prop
       { \file_hex_dump:nnn { #1 } { 17 } { 20 } } \l__color_internal_tl
       {
         \exp_last_unbraced:NV \__color_model_iccbased_aux:nnnnnn
@@ -29879,7 +30035,7 @@
     \cs_new:cpn { __color_convert_ #5 _gray:w } ##1 \s__color_stop { 0 }
     \cs_new:cpn { __color_convert_gray_ #5 :w } ##1 \s__color_stop { #2 }
     \use:c { __color_model_devicen_parse_ #1 :nn } {#5} {#1}
-    \exp_args:Nx \__color_backend_iccbased_init:nnn
+    \exp_args:Ne \__color_backend_iccbased_init:nnn
       { \file_full_name:n {#6} } {#1} {#4}
   }
 \cs_new_protected:Npn \color_profile_apply:nn #1#2
@@ -29912,9 +30068,9 @@
     \__color_backend_iccbased_device:nnn {#1} { CMYK } { 4 }
   }
 \cs_new_protected:Npn \color_show:n
-  { \__color_show:Nn \msg_show:nnxxxx }
+  { \__color_show:Nn \msg_show:nneeee }
 \cs_new_protected:Npn \color_log:n
-  { \__color_show:Nn \msg_log:nnxxxx }
+  { \__color_show:Nn \msg_log:nneeee }
 \cs_new_protected:Npn \__color_show:Nn #1#2
   {
     #1 { color } { show }
@@ -30123,7 +30279,7 @@
     \__pdf_backend_object_write:nnn {#1} {#2} {#3}
     \bool_gset_true:N \g__pdf_init_bool
   }
-\cs_generate_variant:Nn \pdf_object_write:nnn { nnx }
+\cs_generate_variant:Nn \pdf_object_write:nnn { nne , nnx }
 \cs_new:Npn \pdf_object_ref:n #1 { \__pdf_backend_object_ref:n {#1} }
 \cs_new_protected:Npn \pdf_object_unnamed_write:nn #1#2
   {
@@ -30130,7 +30286,7 @@
     \__pdf_backend_object_now:nn {#1} {#2}
     \bool_gset_true:N \g__pdf_init_bool
   }
-\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { nx }
+\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { ne , nx }
 \cs_new:Npn \pdf_object_ref_last: { \__pdf_backend_object_last: }
 \prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF }
   {
@@ -30247,7 +30403,7 @@
   }
 \cs_new_protected:Npn \pdf_object_write:nn #1#2
   {
-    \exp_args:Nnx \__pdf_backend_object_write:nnn
+    \exp_args:Nne \__pdf_backend_object_write:nnn
       {#1} { \prop_item:Nn \g__pdf_object_prop {#1} } {#2}
     \bool_gset_true:N \g__pdf_init_bool
   }
@@ -30304,7 +30460,7 @@
     \coffin_if_exist:NTF #1
       { #2 }
       {
-        \msg_error:nnx { coffin } { unknown }
+        \msg_error:nne { coffin } { unknown }
           { \token_to_str:N #1 }
       }
   }
@@ -30389,7 +30545,7 @@
           }
         #5 #1
         \vbox_set_top:Nn \l__coffin_internal_box { \vbox_unpack:N #1 }
-        \__coffin_set_pole:Nnx #1 { T }
+        \__coffin_set_pole:Nne #1 { T }
           {
             { 0pt }
             {
@@ -30402,7 +30558,7 @@
         \box_clear:N \l__coffin_internal_box
       }
   }
-\cs_new_protected:Npx \__coffin_set_vertical_aux:
+\cs_new_protected:Npe \__coffin_set_vertical_aux:
   {
     \bool_lazy_and:nnT
       { \cs_if_exist_p:N \fmtname }
@@ -30466,7 +30622,7 @@
               #5
               #6 #1
               \vbox_set_top:Nn \l__coffin_internal_box { \vbox_unpack:N #1 }
-              \__coffin_set_pole:Nnx #1 { T }
+              \__coffin_set_pole:Nne #1 { T }
                 {
                   { 0pt }
                   {
@@ -30524,7 +30680,7 @@
     \prop_get:cnNF
       { coffin ~ \__coffin_to_value:N #1 ~ poles } {#2} #3
       {
-        \msg_error:nnxx { coffin } { unknown-pole }
+        \msg_error:nnee { coffin } { unknown-pole }
           { \exp_not:n {#2} } { \token_to_str:N #1 }
         \tl_set:Nn #3 { { 0pt } { 0pt } { 0pt } { 0pt } }
       }
@@ -30544,10 +30700,10 @@
       \c__coffin_poles_prop
   }
 \cs_new_protected:Npn \coffin_set_horizontal_pole:Nnn #1#2#3
-  { \__coffin_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_put:cnx }
+  { \__coffin_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_put:cne }
 \cs_generate_variant:Nn \coffin_set_horizontal_pole:Nnn { c }
 \cs_new_protected:Npn \coffin_gset_horizontal_pole:Nnn #1#2#3
-  { \__coffin_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_gput:cnx }
+  { \__coffin_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_gput:cne }
 \cs_generate_variant:Nn \coffin_gset_horizontal_pole:Nnn { c }
 \cs_new_protected:Npn \__coffin_set_horizontal_pole:NnnN #1#2#3#4
   {
@@ -30562,10 +30718,10 @@
       }
   }
 \cs_new_protected:Npn \coffin_set_vertical_pole:Nnn #1#2#3
-  { \__coffin_set_vertical_pole:NnnN #1 {#2} {#3} \prop_put:cnx }
+  { \__coffin_set_vertical_pole:NnnN #1 {#2} {#3} \prop_put:cne }
 \cs_generate_variant:Nn \coffin_set_vertical_pole:Nnn { c }
 \cs_new_protected:Npn \coffin_gset_vertical_pole:Nnn #1#2#3
-  { \__coffin_set_vertical_pole:NnnN #1 {#2} {#3} \prop_gput:cnx }
+  { \__coffin_set_vertical_pole:NnnN #1 {#2} {#3} \prop_gput:cne }
   \cs_generate_variant:Nn \coffin_gset_vertical_pole:Nnn { c }
 \cs_new_protected:Npn \__coffin_set_vertical_pole:NnnN #1#2#3#4
   {
@@ -30584,7 +30740,7 @@
     \prop_put:cnn { coffin ~ \__coffin_to_value:N #1 ~ poles }
       {#2} {#3}
   }
-\cs_generate_variant:Nn \__coffin_set_pole:Nnn { Nnx }
+\cs_generate_variant:Nn \__coffin_set_pole:Nnn { Nne }
 \cs_new_protected:Npn \coffin_reset_poles:N #1
   {
     \__coffin_reset_structure:N #1
@@ -30598,9 +30754,9 @@
     \__coffin_gupdate_poles:N #1
   }
 \cs_new_protected:Npn \__coffin_update_corners:N #1
-  { \__coffin_update_corners:NN #1 \prop_put:Nnx }
+  { \__coffin_update_corners:NN #1 \prop_put:Nne }
 \cs_new_protected:Npn \__coffin_gupdate_corners:N #1
-  { \__coffin_update_corners:NN #1 \prop_gput:Nnx }
+  { \__coffin_update_corners:NN #1 \prop_gput:Nne }
 \cs_new_protected:Npn \__coffin_update_corners:NN #1#2
   {
     \exp_args:Nc \__coffin_update_corners:NNN
@@ -30629,9 +30785,9 @@
       }
   }
 \cs_new_protected:Npn \__coffin_update_poles:N #1
-  { \__coffin_update_poles:NN #1 \prop_put:Nnx }
+  { \__coffin_update_poles:NN #1 \prop_put:Nne }
 \cs_new_protected:Npn \__coffin_gupdate_poles:N #1
-  { \__coffin_update_poles:NN #1 \prop_gput:Nnx }
+  { \__coffin_update_poles:NN #1 \prop_gput:Nne }
 \cs_new_protected:Npn \__coffin_update_poles:NN #1#2
   {
     \exp_args:Nc \__coffin_update_poles:NNN
@@ -30734,7 +30890,7 @@
               }
           }
           {
-            \use:x
+            \use:e
               {
                 \__coffin_calculate_intersection:nnnnnn
                   { \dim_to_fp:n {#4} / \dim_to_fp:n {#3} }
@@ -30831,17 +30987,17 @@
   }
 \cs_new_protected:Npn \__coffin_set_bounding:N #1
   {
-    \prop_put:Nnx \l__coffin_bounding_prop { tl }
+    \prop_put:Nne \l__coffin_bounding_prop { tl }
       { { 0pt } { \dim_eval:n { \box_ht:N #1 } } }
-    \prop_put:Nnx \l__coffin_bounding_prop { tr }
+    \prop_put:Nne \l__coffin_bounding_prop { tr }
       {
         { \dim_eval:n { \box_wd:N #1 } }
         { \dim_eval:n { \box_ht:N #1 } }
       }
     \dim_set:Nn \l__coffin_internal_dim { -\box_dp:N #1 }
-    \prop_put:Nnx \l__coffin_bounding_prop { bl }
+    \prop_put:Nne \l__coffin_bounding_prop { bl }
       { { 0pt } { \dim_use:N \l__coffin_internal_dim } }
-    \prop_put:Nnx \l__coffin_bounding_prop { br }
+    \prop_put:Nne \l__coffin_bounding_prop { br }
       {
         { \dim_eval:n { \box_wd:N #1 } }
         { \dim_use:N \l__coffin_internal_dim }
@@ -30850,13 +31006,13 @@
 \cs_new_protected:Npn \__coffin_rotate_bounding:nnn #1#2#3
   {
     \__coffin_rotate_vector:nnNN {#2} {#3} \l__coffin_x_dim \l__coffin_y_dim
-    \prop_put:Nnx \l__coffin_bounding_prop {#1}
+    \prop_put:Nne \l__coffin_bounding_prop {#1}
       { { \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim } }
   }
 \cs_new_protected:Npn \__coffin_rotate_corner:Nnnn #1#2#3#4
   {
     \__coffin_rotate_vector:nnNN {#3} {#4} \l__coffin_x_dim \l__coffin_y_dim
-    \prop_put:Nnx \l__coffin_corners_prop {#2}
+    \prop_put:Nne \l__coffin_corners_prop {#2}
       { { \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim } }
   }
 \cs_new_protected:Npn \__coffin_rotate_pole:Nnnnnn #1#2#3#4#5#6
@@ -30864,7 +31020,7 @@
     \__coffin_rotate_vector:nnNN {#3} {#4} \l__coffin_x_dim \l__coffin_y_dim
     \__coffin_rotate_vector:nnNN {#5} {#6}
       \l__coffin_x_prime_dim \l__coffin_y_prime_dim
-    \prop_put:Nnx \l__coffin_poles_prop {#2}
+    \prop_put:Nne \l__coffin_poles_prop {#2}
       {
         { \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim }
         { \dim_use:N \l__coffin_x_prime_dim }
@@ -30923,7 +31079,7 @@
   }
 \cs_new_protected:Npn \__coffin_shift_corner:Nnnn #1#2#3#4
   {
-    \prop_put:Nnx \l__coffin_corners_prop {#2}
+    \prop_put:Nne \l__coffin_corners_prop {#2}
       {
         { \dim_eval:n { #3 - \l__coffin_left_corner_dim } }
         { \dim_eval:n { #4 - \l__coffin_bottom_corner_dim } }
@@ -30931,7 +31087,7 @@
   }
 \cs_new_protected:Npn \__coffin_shift_pole:Nnnnnn #1#2#3#4#5#6
   {
-    \prop_put:Nnx \l__coffin_poles_prop {#2}
+    \prop_put:Nne \l__coffin_poles_prop {#2}
       {
         { \dim_eval:n { #3 - \l__coffin_left_corner_dim } }
         { \dim_eval:n { #4 - \l__coffin_bottom_corner_dim } }
@@ -31021,13 +31177,13 @@
 \cs_new_protected:Npn \__coffin_scale_corner:Nnnn #1#2#3#4
   {
     \__coffin_scale_vector:nnNN {#3} {#4} \l__coffin_x_dim \l__coffin_y_dim
-    \prop_put:Nnx \l__coffin_corners_prop {#2}
+    \prop_put:Nne \l__coffin_corners_prop {#2}
       { { \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim } }
   }
 \cs_new_protected:Npn \__coffin_scale_pole:Nnnnnn #1#2#3#4#5#6
   {
     \__coffin_scale_vector:nnNN {#3} {#4} \l__coffin_x_dim \l__coffin_y_dim
-    \prop_put:Nnx \l__coffin_poles_prop {#2}
+    \prop_put:Nne \l__coffin_poles_prop {#2}
       {
         { \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim }
         {#5} {#6}
@@ -31035,7 +31191,7 @@
   }
 \cs_new_protected:Npn \__coffin_x_shift_corner:Nnnn #1#2#3#4
   {
-    \prop_put:Nnx \l__coffin_corners_prop {#2}
+    \prop_put:Nne \l__coffin_corners_prop {#2}
       {
         { \dim_eval:n { #3 + \box_wd:N #1 } } {#4}
       }
@@ -31042,7 +31198,7 @@
   }
 \cs_new_protected:Npn \__coffin_x_shift_pole:Nnnnnn #1#2#3#4#5#6
   {
-    \prop_put:Nnx \l__coffin_poles_prop {#2}
+    \prop_put:Nne \l__coffin_poles_prop {#2}
       {
         { \dim_eval:n { #3 + \box_wd:N #1 } } {#4}
         {#5} {#6}
@@ -31172,7 +31328,7 @@
     \tl_if_in:nnTF {#2} { - }
       { \tl_set:Nn \l__coffin_internal_tl { {#2} } }
       { \tl_set:Nn \l__coffin_internal_tl { { #1 - #2 } } }
-    \exp_last_unbraced:NNo \__coffin_set_pole:Nnx \l__coffin_aligned_coffin
+    \exp_last_unbraced:NNo \__coffin_set_pole:Nne \l__coffin_aligned_coffin
       { \l__coffin_internal_tl }
       {
         { \dim_use:N \l__coffin_x_dim } { \dim_use:N \l__coffin_y_dim }
@@ -31186,7 +31342,7 @@
   }
 \cs_new_protected:Npn \__coffin_offset_corner:Nnnnn #1#2#3#4#5#6
   {
-    \prop_put:cnx
+    \prop_put:cne
       {
         coffin ~ \__coffin_to_value:N \l__coffin_aligned_coffin
         \c_space_tl corners
@@ -31212,11 +31368,11 @@
   {
     \dim_compare:nNnTF {#2} < {#6}
       {
-        \__coffin_set_pole:Nnx #9 { T }
+        \__coffin_set_pole:Nne #9 { T }
           { { 0pt } {#6} { 1000pt } { 0pt } }
       }
       {
-        \__coffin_set_pole:Nnx #9 { T }
+        \__coffin_set_pole:Nne #9 { T }
           { { 0pt } {#2} { 1000pt } { 0pt } }
       }
   }
@@ -31224,11 +31380,11 @@
   {
     \dim_compare:nNnTF {#2} < {#6}
       {
-        \__coffin_set_pole:Nnx #9 { B }
+        \__coffin_set_pole:Nne #9 { B }
           { { 0pt } {#2}  { 1000pt } { 0pt } }
       }
       {
-        \__coffin_set_pole:Nnx #9 { B }
+        \__coffin_set_pole:Nne #9 { B }
           { { 0pt } {#6} { 1000pt } { 0pt } }
       }
   }
@@ -31446,10 +31602,10 @@
     \box_set_eq:NN \l__coffin_display_coffin \l__coffin_aligned_coffin
   }
 \cs_new_protected:Npn \coffin_show_structure:N
-  { \__coffin_show_structure:NN \msg_show:nnxxxx }
+  { \__coffin_show_structure:NN \msg_show:nneeee }
 \cs_generate_variant:Nn \coffin_show_structure:N { c }
 \cs_new_protected:Npn \coffin_log_structure:N
-  { \__coffin_show_structure:NN \msg_log:nnxxxx }
+  { \__coffin_show_structure:NN \msg_log:nneeee }
 \cs_generate_variant:Nn \coffin_log_structure:N { c }
 \cs_new_protected:Npn \__coffin_show_structure:NN #1#2
   {
@@ -31477,10 +31633,10 @@
   { \coffin_log:Nnn #1 \c_max_int \c_max_int }
 \cs_generate_variant:Nn \coffin_log:N { c }
 \cs_new_protected:Npn \coffin_show:Nnn
-  { \__coffin_show:NNNnn \msg_term:nnxxxx \box_show:Nnn }
+  { \__coffin_show:NNNnn \msg_term:nneeee \box_show:Nnn }
 \cs_generate_variant:Nn \coffin_show:Nnn { c }
 \cs_new_protected:Npn \coffin_log:Nnn
-  { \__coffin_show:NNNnn \msg_log:nnxxxx \box_show:Nnn }
+  { \__coffin_show:NNNnn \msg_log:nneeee \box_show:Nnn }
 \cs_generate_variant:Nn \coffin_log:Nnn { c }
 \cs_new_protected:Npn \__coffin_show:NNNnn #1#2#3#4#5
   {
@@ -31828,7 +31984,7 @@
     }
   \cs_set_protected:Npn \__codepoint_data_auxii:w #1 ; #2 ~ #3 \q_stop
     {
-      \tl_const:cx
+      \tl_const:ce
         { c__codepoint_nfd_ \codepoint_str_generate:n {"#1} _tl }
         {
           {"#2}
@@ -31868,11 +32024,11 @@
       \__codepoint_add:nn { lowercase } {#5}
       \int_compare:nNnF {#4} = { \__codepoint_data_offset:nn {#1} {#6} }
         {
-          \tl_const:cx
+          \tl_const:ce
             { c__codepoint_titlecase_ \codepoint_str_generate:n {"#1} _tl }
             { {"#6} { } { } }
         }
-      \tl_set:Nx \l__codepoint_next_codepoint_fint_tl
+      \tl_set:Ne \l__codepoint_next_codepoint_fint_tl
         { \int_eval:n { "#1 + 1 } }
     }
   \cs_set_protected:Npn \__codepoint_add:nn #1#2
@@ -31882,7 +32038,7 @@
         = \c__codepoint_block_size_int
         { \__codepoint_save_blocks:nn {#1} { 1 } }
     }
-  \cs_set_protected:Npx \__codepoint_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
+  \cs_set_protected:Npe \__codepoint_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
     {
        \exp_not:N \tl_if_blank:nTF {#6}
          {
@@ -31925,7 +32081,7 @@
      \int_compare:nNnF
        { \int_div_truncate:nn { #2 - #1 } \c__codepoint_block_size_int } = 0
        {
-         \tl_set:cx { l__codepoint_ #3 _block_clist }
+         \tl_set:ce { l__codepoint_ #3 _block_clist }
            {
              \exp_args:NNe \use:nn \use_none:n
                { \prg_replicate:nn { \c__codepoint_block_size_int } { , #4 } }
@@ -31935,7 +32091,7 @@
         }
      \prg_replicate:nn
        { \int_mod:nn { #2 - #1 } \c__codepoint_block_size_int }
-       { \clist_put_right:cx { l__codepoint_ #3 _block_clist } {#4} }
+       { \clist_put_right:ce { l__codepoint_ #3 _block_clist } {#4} }
     }
   \cs_set_protected:Npn \__codepoint_save_blocks:nn #1#2
     {
@@ -31955,12 +32111,12 @@
                 \tl_use:c { l__codepoint_ #1 _block_tl } _clist
               }
               { l__codepoint_ #1 _block_clist }
-            \tl_set:cx { l__codepoint_ #1 _block_tl }
+            \tl_set:ce { l__codepoint_ #1 _block_tl }
               { \int_eval:n { \tl_use:c { l__codepoint_ #1 _block_tl } + 1 } }
           }
         \prg_replicate:nn {#2}
           {
-            \tl_set:cx { l__codepoint_ #1 _pos_tl }
+            \tl_set:ce { l__codepoint_ #1 _pos_tl }
               { \int_eval:n { \tl_use:c { l__codepoint_ #1 _pos_tl } + 1 } }
             \exp_args:Nc \__kernel_intarray_gset:Nnn
               { g__codepoint_ #1 _index_intarray }
@@ -32055,7 +32211,7 @@
         \reverse_if:N \if_int_compare:w
           \int_eval:n { \__kernel_codepoint_data:nn { lowercase } {"#1} + "#1 }
             = "#3 ~
-          \tl_const:cx
+          \tl_const:ce
             { c__codepoint_casefold_ \codepoint_str_generate:n {"#1} _tl }
             { {"#3} { } { } }
         \fi:
@@ -32067,7 +32223,7 @@
     }
   \cs_set_protected:Npn \__codepoint_data_auxii:w #1 ~ #2 ~ #3 ~ #4 \q_stop
     {
-      \tl_const:cx { c__codepoint_casefold_ \codepoint_str_generate:n {"#1} _tl }
+      \tl_const:ce { c__codepoint_casefold_ \codepoint_str_generate:n {"#1} _tl }
         {
           {"#2}
           {"#3}
@@ -32095,7 +32251,7 @@
     {
       \tl_if_empty:nF {#4}
         {
-          \tl_const:cx { c__codepoint_ #2 case_ \codepoint_str_generate:n {"#1} _tl }
+          \tl_const:ce { c__codepoint_ #2 case_ \codepoint_str_generate:n {"#1} _tl }
             {
               {"#3}
               {"#4}
@@ -32159,7 +32315,7 @@
         {
           \str_if_empty:NF \l__text_tmpb_str
             {
-              \clist_const:cx { c__text_grapheme_ \l__text_tmpb_str _clist }
+              \clist_const:ce { c__text_grapheme_ \l__text_tmpb_str _clist }
                 { \exp_after:wN \use_none:n \l__text_tmpa_str }
               \cs_set_nopar:Npn \l__text_tmpa_str { }
             }
@@ -32169,7 +32325,7 @@
     }
   \cs_set_protected:Npn \__text_data_auxii:w #1 .. #2 .. #3 \q_stop
     {
-      \cs_set_nopar:Npx \l__text_tmpa_str
+      \cs_set_nopar:Npe \l__text_tmpa_str
         {
           \l__text_tmpa_str ,
           \tl_trim_spaces:n {#1} .. \tl_trim_spaces:n {#2}
@@ -32353,7 +32509,7 @@
     \cs_new:Npn \__text_codepoint_process:nN #1#2 { #1 {#2} }
   }
   {
-    \cs_new:Npx \__text_codepoint_process:nN #1#2
+    \cs_new:Npe \__text_codepoint_process:nN #1#2
       {
         \exp_not:N \int_compare:nNnTF {`#2} > { "80 }
           {
@@ -32406,7 +32562,7 @@
             #2 {#3}
           \prg_return_true: \prg_return_false:
       }
-    \cs_new:Npx \__text_codepoint_from_chars:Nw #1
+    \cs_new:Npe \__text_codepoint_from_chars:Nw #1
       {
         \exp_not:N \if_int_compare:w `#1 > "80 \exp_not:N \exp_stop_f:
           \sys_if_engine_pdftex:TF
@@ -32461,7 +32617,7 @@
 \tl_new:N \l_text_accents_tl
 \tl_new:N \l_text_letterlike_tl
 \tl_new:N \l_text_case_exclude_arg_tl
-\tl_set:Nx \l_text_case_exclude_arg_tl
+\tl_set:Ne \l_text_case_exclude_arg_tl
   {
     \exp_not:n { \begin \cite \end \label \ref }
     \exp_not:c { cite ~ }
@@ -32730,7 +32886,7 @@
       }
       { \__text_expand_letterlike:NN #1 }
   }
-\cs_new:Npx \__text_expand_cs:N #1
+\cs_new:Npe \__text_expand_cs:N #1
   {
     \exp_not:N \str_if_eq:nnTF {#1} { \exp_not:N \protect }
       { \exp_not:N \__text_expand_protect:w }
@@ -32906,15 +33062,15 @@
   }
 \cs_new:Npn \__text_change_case_auxi:nnn #1#2#3
   { \exp_args:No \__text_change_case_BCP:nnn { \tl_to_str:n {#3} } {#1} {#2} }
-\cs_new:Npx \__text_change_case_BCP:nnn #1#2#3
+\cs_new:Npe \__text_change_case_BCP:nnn #1#2#3
   {
     \exp_not:N \__text_change_case_BCP:nnw
       {#2} {#3} #1 \tl_to_str:n { -x- -x- } \exp_not:N \q__text_stop
   }
-\use:x
+\use:e
   {
     \cs_new:Npn \exp_not:N \__text_change_case_BCP:nnw
-      ##1##2##3 \tl_to_str:n { -x- } ##4 \tl_to_str:n { -x- } ##5
+      #1#2#3 \tl_to_str:n { -x- } #4 \tl_to_str:n { -x- } #5
       \exp_not:N \q__text_stop
   }
   { \__text_change_case_BCP:nnnnw {#1} {#2} {#4} {#3} #3 - - \q__text_stop }
@@ -33001,9 +33157,9 @@
       }
     \__text_change_case_break:w
   }
-\use:x
+\use:e
   {
-    \cs_new:Npn \exp_not:N \__text_change_case_space:nnw ##1##2 \c_space_tl
+    \cs_new:Npn \exp_not:N \__text_change_case_space:nnw #1#2 \c_space_tl
   }
   {
     \__text_change_case_store:n { ~ }
@@ -33066,9 +33222,9 @@
     \__text_change_case_store:n { {#4} }
     \__text_change_case_math_loop:nnNw {#1} {#2} #3
   }
-\use:x
+\use:e
   {
-    \cs_new:Npn \exp_not:N \__text_change_case_math_space:nnNw ##1##2##3
+    \cs_new:Npn \exp_not:N \__text_change_case_math_space:nnNw #1#2#3
       \c_space_tl
   }
   {
@@ -34518,8 +34674,8 @@
     }
     \__text_map_loop:Nnw #1 { }
   }
-\use:x
-  { \cs_new:Npn \exp_not:N \__text_map_space:Nnw ##1##2 \c_space_tl }
+\use:e
+  { \cs_new:Npn \exp_not:N \__text_map_space:Nnw #1#2 \c_space_tl }
   {
     \__text_map_output:Nn #1 {#2}
     #1 { ~ }
@@ -35037,7 +35193,7 @@
     \tl_clear_new:c { l__text_purify_ \token_to_str:N #1 _tl }
     \tl_set:cn { l__text_purify_ \token_to_str:N #1 _tl } {#2}
   }
-\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Nx }
+\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Ne }
 \tl_map_inline:nn
   {
     \fontencoding
@@ -35099,7 +35255,7 @@
 \text_declare_purify_equivalent:Nn \\ { }
 \tl_map_inline:nn
   { \{ \} \# \$ \% \_ }
-  { \text_declare_purify_equivalent:Nx #1 { \cs_to_str:N #1 } }
+  { \text_declare_purify_equivalent:Ne #1 { \cs_to_str:N #1 } }
 \text_declare_purify_equivalent:Nn \label { \use_none:n }
 \group_begin:
 \char_set_catcode_active:N \~
@@ -35106,7 +35262,7 @@
 \use:n
   {
     \group_end:
-    \text_declare_purify_equivalent:Nx ~ { \c_space_tl }
+    \text_declare_purify_equivalent:Ne ~ { \c_space_tl }
   }
 \text_declare_purify_equivalent:Nn \nobreakspace { ~ }
 \text_declare_purify_equivalent:Nn \  { ~ }
@@ -35114,7 +35270,7 @@
 \cs_set_protected:Npn \__text_loop:Nn #1#2
   {
     \quark_if_recursion_tail_stop:N #1
-    \text_declare_purify_equivalent:Nx #1
+    \text_declare_purify_equivalent:Ne #1
       {
         \codepoint_generate:nn {"#2}
           { \char_value_catcode:n {"#2} }
@@ -35167,7 +35323,7 @@
   \cs_set_protected:Npn \__text_loop:Nn #1#2
     {
       \quark_if_recursion_tail_stop:N #1
-      \tl_const:cx { c__text_purify_ \token_to_str:N #1 _tl }
+      \tl_const:ce { c__text_purify_ \token_to_str:N #1 _tl }
         { \codepoint_generate:nn {"#2} { \char_value_catcode:n { "#2 } } }
       \__text_loop:Nn
     }
@@ -35193,7 +35349,7 @@
   \cs_set_protected:Npn \__text_loop:NNn #1#2#3
     {
       \quark_if_recursion_tail_stop:N #1
-      \tl_const:cx
+      \tl_const:ce
         { c__text_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl }
         { \codepoint_generate:nn {"#3} { \char_value_catcode:n { "#3 } } }
       \__text_loop:NNn
@@ -35411,9 +35567,9 @@
 \group_end:
 %% File: l3candidates.dtx
 \cs_new_protected:Npn \seq_set_filter:NNn
-  { \__seq_set_filter:NNNn \__kernel_tl_set:Nx }
+  { \__seq_set_filter:NNNn \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \seq_gset_filter:NNn
-  { \__seq_set_filter:NNNn \__kernel_tl_gset:Nx }
+  { \__seq_set_filter:NNNn \__kernel_tl_gset:Ne }
 \cs_new_protected:Npn \__seq_set_filter:NNNn #1#2#3#4
   {
     \__seq_push_item_def:n { \bool_if:nT {#4} { \__seq_wrap_item:n {##1} } }
@@ -35421,9 +35577,9 @@
     \__seq_pop_item_def:
   }
 \cs_new_protected:Npn \tl_build_begin:N #1
-  { \__tl_build_begin:NN \cs_set_nopar:Npx #1 }
+  { \__tl_build_begin:NN \cs_set_nopar:Npe #1 }
 \cs_new_protected:Npn \tl_build_gbegin:N #1
-  { \__tl_build_begin:NN \cs_gset_nopar:Npx #1 }
+  { \__tl_build_begin:NN \cs_gset_nopar:Npe #1 }
 \cs_new_protected:Npn \__tl_build_begin:NN #1#2
   { \exp_args:Nc \__tl_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 }
 \cs_new_protected:Npn \__tl_build_begin:NNN #1#2#3
@@ -35439,24 +35595,16 @@
 \cs_new_eq:NN \tl_build_gclear:N \tl_build_gbegin:N
 \cs_new_protected:Npn \tl_build_put_right:Nn #1#2
   {
-    \cs_set_nopar:Npx #1
+    \cs_set_nopar:Npe #1
       { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
   }
-\cs_new_protected:Npn \tl_build_put_right:Nx #1#2
-  {
-    \cs_set_nopar:Npx #1
-      { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 } #2 }
-  }
+\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx }
 \cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
   {
-    \cs_gset_nopar:Npx #1
+    \cs_gset_nopar:Npe #1
       { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
   }
-\cs_new_protected:Npn \tl_build_gput_right:Nx #1#2
-  {
-    \cs_gset_nopar:Npx #1
-      { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 } #2 }
-  }
+\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx }
 \cs_new_protected:Npn \__tl_build_last:NNn #1#2
   {
     \if_false: { { \fi:
@@ -35478,11 +35626,11 @@
 \cs_new_protected:Npn \__tl_build_put:nw #1#2 \__tl_build_last:NNn #3#4#5
   { #2 \__tl_build_last:NNn #3 #4 { #1 #5 } }
 \cs_new_protected:Npn \tl_build_put_left:Nn #1
-  { \__tl_build_put_left:NNn \cs_set_nopar:Npx #1 }
-\cs_generate_variant:Nn \tl_build_put_left:Nn { Nx }
+  { \__tl_build_put_left:NNn \cs_set_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx }
 \cs_new_protected:Npn \tl_build_gput_left:Nn #1
-  { \__tl_build_put_left:NNn \cs_gset_nopar:Npx #1 }
-\cs_generate_variant:Nn \tl_build_gput_left:Nn { Nx }
+  { \__tl_build_put_left:NNn \cs_gset_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx }
 \cs_new_protected:Npn \__tl_build_put_left:NNn #1#2#3
   {
     #1 #2
@@ -35495,7 +35643,7 @@
       }
   }
 \cs_new_protected:Npn \tl_build_get:NN
-  { \__tl_build_get:NNN \__kernel_tl_set:Nx }
+  { \__tl_build_get:NNN \__kernel_tl_set:Ne }
 \cs_new_protected:Npn \__tl_build_get:NNN #1#2#3
   { #1 #3 { \if_false: { \fi: \exp_after:wN \__tl_build_get:w #2 } } }
 \cs_new:Npn \__tl_build_get:w #1 \__tl_build_last:NNn #2#3#4
@@ -35510,12 +35658,12 @@
   { \exp_after:wN \exp_not:n \exp_after:wN { \if_false: } \fi: }
 \cs_new_protected:Npn \tl_build_end:N #1
   {
-    \__tl_build_get:NNN \__kernel_tl_set:Nx #1 #1
+    \__tl_build_get:NNN \__kernel_tl_set:Ne #1 #1
     \exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
   }
 \cs_new_protected:Npn \tl_build_gend:N #1
   {
-    \__tl_build_get:NNN \__kernel_tl_gset:Nx #1 #1
+    \__tl_build_get:NNN \__kernel_tl_gset:Ne #1 #1
     \exp_args:Nc \__tl_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
   }
 \cs_new_protected:Npn \__tl_build_end_loop:NN #1#2
@@ -35571,11 +35719,11 @@
   }
 \cs_new_protected:Npn \__deprecation_warn_once:nnNnn #1#2#3#4#5
   {
-    \cs_gset_protected:Npx #3
+    \cs_gset_protected:Npe #3
       {
         \__kernel_if_debug:TF
           {
-            \exp_not:N \msg_warning:nnxxx
+            \exp_not:N \msg_warning:nneee
               { deprecation } { deprecated-command }
               {#1}
               { \token_to_str:N #3 }
@@ -35602,7 +35750,7 @@
         \exp_not:N \msg_expandable_error:nnnnn
           { deprecation } { deprecated-command }
           { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
-        \exp_not:N \msg_error:nnxxx
+        \exp_not:N \msg_error:nneee
           { deprecation } { deprecated-command }
           { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
       }
@@ -35932,25 +36080,25 @@
     { meaning } { meaning_remove }
   }
   {
-    \use:x
+    \use:e
       {
         \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
-        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NTF } ####1####2####3
+        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NTF } ##1##2##3
           {
             \peek_remove_spaces:n
-              { \exp_not:c { peek_ #1 :NTF } ####1 {####2} {####3} }
+              { \exp_not:c { peek_ #1 :NTF } ##1 {##2} {##3} }
           }
         \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
-        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NT } ####1####2
+        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NT } ##1##2
           {
             \peek_remove_spaces:n
-              { \exp_not:c { peek_ #1 :NT } ####1 {####2} }
+              { \exp_not:c { peek_ #1 :NT } ##1 {##2} }
           }
         \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
-        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NF } ####1####2
+        \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NF } ##1##2
           {
             \peek_remove_spaces:n
-              { \exp_not:c { peek_ #1 :NF } ####1 {####2} }
+              { \exp_not:c { peek_ #1 :NF } ##1 {##2} }
           }
       }
   }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2023-10-10 20:27:00 UTC (rev 68507)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-08-29}%
+\def\ExplFileDate{2023-10-10}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11
@@ -88,7 +88,7 @@
     \cs_set_protected:Npn \ProvidesExplFileAux ##1##2##3##4
       {
         \group_end:
-        \iow_log:x { File:~##1~##2~v##3~##4 }
+        \iow_log:e { File:~##1~##2~v##3~##4 }
       }
     \tex_input:D #1 .def \scan_stop:
   }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-10-10 20:27:00 UTC (rev 68507)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-08-29}%
+\def\ExplFileDate{2023-10-10}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11
@@ -151,12 +151,12 @@
   }
 \cs_gset_protected:Npn \@expl at push@filename@@
   {
-    \exp_args:Nx \__kernel_file_input_push:n
+    \exp_args:Ne \__kernel_file_input_push:n
       {
         \tl_to_str:N \@currname .
         \tl_to_str:N \@currext
       }
-    \tl_put_left:Nx \l__expl_status_stack_tl
+    \tl_put_left:Ne \l__expl_status_stack_tl
       {
         \bool_if:NTF \l__kernel_expl_bool
           { 1 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-08-29}%
+\def\ExplFileDate{2023-10-10}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%
@@ -178,12 +178,12 @@
   }
 \cs_gset_protected:Npn \@expl at push@filename@@
   {
-    \exp_args:Nx \__kernel_file_input_push:n
+    \exp_args:Ne \__kernel_file_input_push:n
       {
         \tl_to_str:N \@currname .
         \tl_to_str:N \@currext
       }
-    \tl_put_left:Nx \l__expl_status_stack_tl
+    \tl_put_left:Ne \l__expl_status_stack_tl
       {
         \bool_if:NTF \l__kernel_expl_bool
           { 1 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def	2023-10-10 20:27:00 UTC (rev 68507)
@@ -71,7 +71,7 @@
   }
 \cs_set_protected:Npn \debug_resume:
   {
-    \__kernel_tl_set:Nx \l__debug_suspended_tl
+    \__kernel_tl_set:Ne \l__debug_suspended_tl
       { \tl_tail:N \l__debug_suspended_tl }
     \tl_if_empty:NT \l__debug_suspended_tl
       {
@@ -93,7 +93,7 @@
         \__debug_suspended:T \use_none:nnn
         \cs_if_exist:NF ##1
           {
-            \msg_error:nnx { debug } { non-declared-variable }
+            \msg_error:nne { debug } { non-declared-variable }
               { \token_to_str:N ##1 }
           }
       }
@@ -102,7 +102,7 @@
         \__debug_suspended:T \use_none:nnn
         \cs_if_exist:NF ##1
           {
-            \msg_error:nnx { kernel } { command-not-defined }
+            \msg_error:nne { kernel } { command-not-defined }
               { \token_to_str:N ##1 }
           }
       }
@@ -163,7 +163,7 @@
       \if:w #1 \scan_stop:
         \cs_gset_nopar:Npn #1 {#2}
       \else:
-        \msg_error:nnxxx { debug } { local-global }
+        \msg_error:nneee { debug } { local-global }
           {#1} {#2} { \iow_char:N \\ #3 }
       \fi:
     \fi:
@@ -171,12 +171,12 @@
 \use:c { __debug_check-declarations_off: }
 \cs_new_protected:cpn { __debug_log-functions_on: }
   {
-    \cs_set_protected:Npn \__kernel_debug_log:x
-      { \__debug_suspended:T \use_none:nn \iow_log:x }
+    \cs_set_protected:Npn \__kernel_debug_log:e
+      { \__debug_suspended:T \use_none:nn \iow_log:e }
   }
 \cs_new_protected:cpn { __debug_log-functions_off: }
-  { \cs_set_protected:Npn \__kernel_debug_log:x { \use_none:n } }
-\cs_new_protected:Npn \__kernel_debug_log:x { \use_none:n }
+  { \cs_set_protected:Npn \__kernel_debug_log:e { \use_none:n } }
+\cs_new_protected:Npn \__kernel_debug_log:e { \use_none:n }
 \cs_new_protected:cpn { __debug_check-expressions_on: }
   {
     \cs_set:Npn \__kernel_chk_expr:nNnN ##1##2
@@ -213,11 +213,11 @@
 \tl_new:N \l__debug_tmpb_tl
 \cs_new_protected:Npn \__debug_generate_parameter_list:NNN #1#2#3
   {
-    \__kernel_tl_set:Nx \l__debug_internal_tl
+    \__kernel_tl_set:Ne \l__debug_internal_tl
       { \exp_last_unbraced:Nf \use_ii:nnn \cs_split_function:N #1 }
-    \__kernel_tl_set:Nx #2
+    \__kernel_tl_set:Ne #2
       { \exp_args:NV \__debug_build_parm_text:n \l__debug_internal_tl }
-    \__kernel_tl_set:Nx #3
+    \__kernel_tl_set:Ne #3
       { \exp_args:NV \__debug_build_arg_list:n \l__debug_internal_tl }
   }
 \cs_new:Npn \__debug_build_parm_text:n #1
@@ -317,7 +317,7 @@
     {
       \cs_gset_eq:cN { __debug_ \cs_to_str:N #1 } #1
       \__debug_generate_parameter_list:NNN #1 \l__debug_tmpa_tl \l__debug_tmpb_tl
-      \exp_args:Nx \tex_scantokens:D
+      \exp_args:Ne \tex_scantokens:D
         {
           \tex_global:D \cs_prefix_spec:N #1
           \tex_def:D \exp_not:N #1
@@ -332,23 +332,23 @@
     }
   \cs_set_protected:Npn \__debug_add_to_debug_code:Nnn #1#2#3
     {
-      \use:x
+      \use:e
         {
           \cs_set:Npn \exp_not:N \__debug_tmp:w
-            ####1 \tl_to_str:n { macro: }
-            ####2 \tl_to_str:n { -> }
-            ####3 \c_backslash_str \tl_to_str:n { __debug_ }
+            ##1 \tl_to_str:n { macro: }
+            ##2 \tl_to_str:n { -> }
+            ##3 \c_backslash_str \tl_to_str:n { __debug_ }
                     \cs_to_str:N #1
-            ####4 \s__debug_stop
+            ##4 \s__debug_stop
             {
-              \exp_not:N \exp_args:Nx \exp_not:N \tex_scantokens:D
+              \exp_not:N \exp_args:Ne \exp_not:N \tex_scantokens:D
                 {
-                  \tex_global:D ####1
-                  \tex_def:D \exp_not:N #1 ####2
+                  \tex_global:D ##1
+                  \tex_def:D \exp_not:N #1 ##2
                     {
-                      ####3 \tl_to_str:n {#2}
+                      ##3 \tl_to_str:n {#2}
                       \c_backslash_str __debug_ \cs_to_str:N #1
-                      ####4 \tl_to_str:n {#3}
+                      ##4 \tl_to_str:n {#3}
                     }
                 }
             }
@@ -372,7 +372,7 @@
     }
   \cs_set_protected:Npn \__debug_patch_weird:Nnn #1#2#3
     {
-      \use:x
+      \use:e
         {
           \tex_endlinechar:D -1 \scan_stop:
           \exp_not:N \tex_scantokens:D
@@ -423,8 +423,8 @@
       \tl_concat:NNN
       \tl_gconcat:NNN
     }
-\cs_gset_protected:Npn \__kernel_tl_set:Nx  { \cs_set_nopar:Npx }
-\cs_gset_protected:Npn \__kernel_tl_gset:Nx { \cs_gset_nopar:Npx }
+\cs_gset_protected:Npn \__kernel_tl_set:Ne  { \cs_set_nopar:Npe }
+\cs_gset_protected:Npn \__kernel_tl_gset:Ne { \cs_gset_nopar:Npe }
   \__kernel_patch:nnn
     { \__kernel_chk_var_local:N #1 }
     { }
@@ -466,20 +466,21 @@
       \skip_set_eq:NN
       \skip_add:Nn
       \skip_sub:Nn
-      \__kernel_tl_set:Nx
+      \__kernel_tl_set:Ne
       \tl_clear:N
       \tl_set_eq:NN
       \tl_put_left:Nn
       \tl_put_left:NV
+      \tl_put_left:Nv
+      \tl_put_left:Ne
       \tl_put_left:No
-      \tl_put_left:Nx
       \tl_put_right:Nn
       \tl_put_right:NV
+      \tl_put_right:Nv
+      \tl_put_right:Ne
       \tl_put_right:No
-      \tl_put_right:Nx
       \tl_build_begin:N
       \tl_build_put_right:Nn
-      \tl_build_put_right:Nx
       \tl_build_put_left:Nn
       \vbox_set:Nn
       \vbox_set_top:Nn
@@ -530,20 +531,21 @@
       \skip_gset_eq:NN
       \skip_gadd:Nn
       \skip_gsub:Nn
-      \__kernel_tl_gset:Nx
+      \__kernel_tl_gset:Ne
       \tl_gclear:N
       \tl_gset_eq:NN
       \tl_gput_left:Nn
       \tl_gput_left:NV
+      \tl_gput_left:Nv
+      \tl_gput_left:Ne
       \tl_gput_left:No
-      \tl_gput_left:Nx
       \tl_gput_right:Nn
       \tl_gput_right:NV
+      \tl_gput_right:Nv
+      \tl_gput_right:Ne
       \tl_gput_right:No
-      \tl_gput_right:Nx
       \tl_build_gbegin:N
       \tl_build_gput_right:Nn
-      \tl_build_gput_right:Nx
       \tl_build_gput_left:Nn
       \vbox_gset:Nn
       \vbox_gset_top:Nn
@@ -564,7 +566,6 @@
       \muskip_const:Nn
       \skip_const:Nn
       \tl_const:Nn
-      \tl_const:Nx
     }
   \__kernel_patch:nnn
     { \__kernel_chk_flag_exist:n {#1} }
@@ -601,7 +602,7 @@
   \__kernel_patch:nnn
     { }
     {
-      \__kernel_debug_log:x
+      \__kernel_debug_log:e
         { Defining~\token_to_str:N #1~ \msg_line_context: }
     }
     { \__kernel_chk_if_free_cs:N }
@@ -609,7 +610,7 @@
     {
       \cs_if_free:NF #4
         {
-          \__kernel_debug_log:x
+          \__kernel_debug_log:e
             {
               Variant~\token_to_str:N #4~%
               already~defined;~ not~ changing~ it~ \msg_line_context:
@@ -621,7 +622,7 @@
   \__kernel_patch:nnn
     {
       \cs_if_exist:cF { \c__keys_code_root_str #1 }
-        { \__kernel_debug_log:x { Defining~key~#1~\msg_line_context: } }
+        { \__kernel_debug_log:e { Defining~key~#1~\msg_line_context: } }
     }
     { }
     { \__keys_cmd_set_direct:nn }
@@ -628,7 +629,7 @@
   \__kernel_patch:nnn
     { }
     {
-      \__kernel_debug_log:x
+      \__kernel_debug_log:e
         { Defining~message~ #1 / #2 ~\msg_line_context: }
     }
     { \__msg_chk_free:nn }
@@ -652,7 +653,7 @@
     {
       \__regex_trace_push:nnN { regex } { 1 } \__regex_escape_use:nnnn
       \group_begin:
-        \__kernel_tl_set:Nx \l__regex_internal_a_tl
+        \__kernel_tl_set:Ne \l__regex_internal_a_tl
           { \__regex_trace_pop:nnN { regex } { 1 } \__regex_escape_use:nnnn }
         \use_none:nnn
     }
@@ -674,7 +675,7 @@
     { \__regex_build_for_cs:n }
   \__kernel_patch:nnn
     {
-      \__regex_trace:nnx { regex } { 2 }
+      \__regex_trace:nne { regex } { 2 }
         {
           regex~new~state~
           L=\int_use:N \l__regex_left_state_int ~ -> ~
@@ -696,7 +697,7 @@
   \__kernel_patch:nnn
     {
       \__regex_trace_push:nnN { regex } { 1 } \__regex_match:n
-      \__regex_trace:nnx { regex } { 1 } { analyzing~query~token~list }
+      \__regex_trace:nne { regex } { 1 } { analyzing~query~token~list }
     }
     { \__regex_trace_pop:nnN { regex } { 1 } \__regex_match:n }
     { \__regex_match:n }
@@ -703,17 +704,17 @@
   \__kernel_patch:nnn
     {
       \__regex_trace_push:nnN { regex } { 1 } \__regex_match_cs:n
-      \__regex_trace:nnx { regex } { 1 } { analyzing~query~token~list }
+      \__regex_trace:nne { regex } { 1 } { analyzing~query~token~list }
     }
     { \__regex_trace_pop:nnN { regex } { 1 } \__regex_match_cs:n }
     { \__regex_match_cs:n }
   \__kernel_patch:nnn
-    { \__regex_trace:nnx { regex } { 1 } { initializing } }
+    { \__regex_trace:nne { regex } { 1 } { initializing } }
     { }
     { \__regex_match_init: }
   \__kernel_patch:nnn
     {
-      \__regex_trace:nnx { regex } { 2 }
+      \__regex_trace:nne { regex } { 2 }
         { state~\int_use:N \l__regex_curr_state_int }
     }
     { }
@@ -734,7 +735,7 @@
     {
         \char_set_catcode_parameter:N \#
         \tex_endlinechar:D -1 \scan_stop:
-        \exp_args:Nx \tex_scantokens:D
+        \exp_args:Ne \tex_scantokens:D
           {
             \tex_global:D \cs_prefix_spec:N #1 \tex_def:D \exp_not:N #1
               \cs_parameter_spec:N #1
@@ -746,7 +747,7 @@
     {
       \tl_map_inline:nn {#1}
         {
-          \exp_args:NNx \__kernel_patch:Nn ##1
+          \exp_args:NNe \__kernel_patch:Nn ##1
             {
               { \c_hash_str 1 }
               {
@@ -805,7 +806,7 @@
     {
       \tl_map_inline:nn {#1}
         {
-          \exp_args:NNx \__kernel_patch:Nn ##1
+          \exp_args:NNe \__kernel_patch:Nn ##1
             {
               {
                 \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
@@ -850,7 +851,7 @@
     {
       \tl_map_inline:nn {#1}
         {
-          \exp_args:NNx \__kernel_patch:Nn ##1
+          \exp_args:NNe \__kernel_patch:Nn ##1
             {
               {
                 \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
@@ -883,7 +884,7 @@
     {
       \clist_map_inline:nn { :nNnT , :nNnF , :nNnTF , _p:nNn }
         {
-          \exp_args:Ncx \__kernel_patch:Nn { #1 ##1 }
+          \exp_args:Nce \__kernel_patch:Nn { #1 ##1 }
             {
               {
                 \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
@@ -905,7 +906,7 @@
     {
       \clist_map_inline:nn { :nT , :nF , :nTF , _p:n }
         {
-          \exp_args:Ncx \__kernel_patch:Nn { #1 ##1 }
+          \exp_args:Nce \__kernel_patch:Nn { #1 ##1 }
             {
               {
                 \exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls	2023-10-10 20:27:00 UTC (rev 68507)
@@ -120,9 +120,6 @@
 \cs_generate_variant:Nn \tl_replace_once:Nnn { Noo }
 \cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV }
 \cs_generate_variant:Nn \tl_to_str:n { f , o }
-\cs_generate_variant:Nn \prop_get:NnNTF { Nx }
-\cs_generate_variant:Nn \prop_put:Nnn { Nx }
-\cs_generate_variant:Nn \prop_gput:Nnn { NVx }
 \prg_new_protected_conditional:Npnn \__codedoc_if_almost_str:n #1 { TF , T , F }
   {
     \int_compare:nNnTF
@@ -135,7 +132,7 @@
 \cs_new_protected:Npn \__codedoc_trim_right:Nn #1#2
   {
     \cs_set:Npn \__codedoc_tmp:w ##1 #2 ##2 \q_stop { \exp_not:n {##1} }
-    \__kernel_tl_set:Nx #1 { \exp_after:wN \__codedoc_tmp:w #1 #2 \q_stop }
+    \__kernel_tl_set:Ne #1 { \exp_after:wN \__codedoc_tmp:w #1 #2 \q_stop }
   }
 \cs_generate_variant:Nn \__codedoc_trim_right:Nn { No }
 \prg_new_protected_conditional:Npnn \__codedoc_str_if_begin:nn #1#2 { TF , T , F }
@@ -156,7 +153,7 @@
           #1 \g__codedoc_module_name_tl
       }
   }
-\cs_new_protected:Npx \__codedoc_replace_at_at_aux:Nn #1#2
+\cs_new_protected:Npe \__codedoc_replace_at_at_aux:Nn #1#2
   {
     \tl_replace_all:Nnn #1 { \token_to_str:N @ } { @ }
     \tl_replace_all:Nnn #1 { \token_to_str:N _ } { _ }
@@ -190,7 +187,7 @@
               \__codedoc_trim_right:Nn \l__codedoc_detect_internals_tl _
               \__codedoc_trim_right:Nn \l__codedoc_detect_internals_tl :
               \__codedoc_trim_right:No \l__codedoc_detect_internals_tl { \token_to_str:N : }
-              \msg_warning:nnxxx { l3doc } { foreign-internal }
+              \msg_warning:nneee { l3doc } { foreign-internal }
                 { \tl_to_str:N \l__codedoc_detect_internals_cs_tl }
                 { \tl_to_str:N \l__codedoc_detect_internals_tl }
                 { \tl_to_str:N \g__codedoc_module_name_tl }
@@ -270,14 +267,14 @@
     \__codedoc_if_almost_str:nTF {#1}
       {
         \__codedoc_key_get_base_TF:nN {#1} \l__codedoc_tmpa_tl
-        \__kernel_tl_set:Nx #2
+        \__kernel_tl_set:Ne #2
           { \__codedoc_split_function_do:on \l__codedoc_tmpa_tl { \__codedoc_base_form_aux:nnN } }
       }
       { \tl_set:Nn #2 {#1} }
   }
-\cs_new:Npx \__codedoc_key_get_base_TF:nN #1#2
+\cs_new:Npe \__codedoc_key_get_base_TF:nN #1#2
   {
-    \__kernel_tl_set:Nx #2 { \exp_not:N \tl_to_str:n {#1} }
+    \__kernel_tl_set:Ne #2 { \exp_not:N \tl_to_str:n {#1} }
     \tl_if_in:NoF #2 { \tl_to_str:n {:} }
       { \exp_not:N \prg_break: }
     \tl_if_in:onT { #2 z } { \tl_to_str:n {TF} z }
@@ -320,7 +317,7 @@
         \tl_if_head_eq_charcode:nNTF {#4} :
           { #2 {#1} }
           {
-            \use:x
+            \use:e
               {
                 \exp_not:n {#3}
                 { \__codedoc_base_form_aux:nnN {#4} {#5} #6 }
@@ -492,7 +489,7 @@
 \cs_gset_eq:NN \endverbatim \endVerbatim
 \cs_set_protected:Npn \ifnot at excluded
   {
-    \exp_args:Nxx \expanded at notin
+    \exp_args:Nee \expanded at notin
       { \c_backslash_str \tl_to_str:N \macro at namepart , }
       { \exp_args:NV \tl_to_str:n \index at excludelist }
   }
@@ -708,7 +705,7 @@
         \verbatim at font
         \__codedoc_if_almost_str:VT \l__codedoc_cmd_tl
           {
-            \__kernel_tl_set:Nx \l__codedoc_cmd_tl { \tl_to_str:N \l__codedoc_cmd_tl }
+            \__kernel_tl_set:Ne \l__codedoc_cmd_tl { \tl_to_str:N \l__codedoc_cmd_tl }
             \bool_if:NT \g__codedoc_cs_break_bool
               {
                 \regex_replace_all:nnN
@@ -727,13 +724,13 @@
        {
         \quark_if_no_value:NF \l__codedoc_cmd_index_tl
           {
-            \__kernel_tl_set:Nx \l__codedoc_cmd_tl
+            \__kernel_tl_set:Ne \l__codedoc_cmd_tl
               { \c_backslash_str \exp_not:o { \l__codedoc_cmd_index_tl } }
           }
         \exp_args:No \__codedoc_key_get:n { \l__codedoc_cmd_tl }
         \quark_if_no_value:NF \l__codedoc_cmd_module_tl
           {
-            \__kernel_tl_set:Nx \l__codedoc_index_module_tl
+            \__kernel_tl_set:Ne \l__codedoc_index_module_tl
               { \tl_to_str:N \l__codedoc_cmd_module_tl }
           }
         \__codedoc_special_index_module:ooonN
@@ -811,15 +808,15 @@
   }
 \cs_new_protected:Npn \__codedoc_get_hyper_target:nN #1#2
   {
-    \__kernel_tl_set:Nx #2 { \tl_to_str:n {#1} }
-    \tl_replace_all:Nxn #2 { \c_underscore_str } { / }
-    \tl_remove_all:Nx   #2 { \c_backslash_str }
+    \__kernel_tl_set:Ne #2 { \tl_to_str:n {#1} }
+    \tl_replace_all:Nen #2 { \c_underscore_str } { / }
+    \tl_remove_all:Ne   #2 { \c_backslash_str }
     \tl_put_left:Nn #2 { doc/function// }
   }
-\cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { o , x }
+\cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { o , e }
 \cs_new_protected:Npn \__codedoc_names_get_seq:nN #1#2
   {
-    \__kernel_tl_set:Nx \l__codedoc_tmpa_tl { \tl_to_str:n {#1} }
+    \__kernel_tl_set:Ne \l__codedoc_tmpa_tl { \tl_to_str:n {#1} }
     \bool_if:NTF \l__codedoc_names_verb_bool
       {
         \seq_clear:N #2
@@ -826,14 +823,14 @@
         \seq_put_right:NV #2 \l__codedoc_tmpa_tl
       }
       {
-        \tl_remove_all:Nx \l__codedoc_tmpa_tl
+        \tl_remove_all:Ne \l__codedoc_tmpa_tl
           { \iow_char:N \^^M \c_percent_str }
-        \tl_remove_all:Nx \l__codedoc_tmpa_tl { \tl_to_str:n { ^ ^ A } }
-        \tl_remove_all:Nx \l__codedoc_tmpa_tl { \iow_char:N \^^I }
-        \tl_remove_all:Nx \l__codedoc_tmpa_tl { \iow_char:N \^^M }
+        \tl_remove_all:Ne \l__codedoc_tmpa_tl { \tl_to_str:n { ^ ^ A } }
+        \tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^I }
+        \tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^M }
         \__codedoc_detect_internals:N \l__codedoc_tmpa_tl
         \__codedoc_replace_at_at:N \l__codedoc_tmpa_tl
-        \exp_args:NNx \seq_set_from_clist:Nn #2
+        \exp_args:NNe \seq_set_from_clist:Nn #2
           { \tl_to_str:N \l__codedoc_tmpa_tl }
       }
   }
@@ -857,7 +854,7 @@
         \tl_if_head_eq_charcode:nNTF {#2} :
           { \__codedoc_names_parse_aux:nnn {#4} {#4} { \scan_stop: } }
           {
-            \exp_args:Nx \__codedoc_names_parse_aux:nnn
+            \exp_args:Ne \__codedoc_names_parse_aux:nnn
               { \__codedoc_base_form_aux:nnN {#1} {#2} #3 }
               {#1} {#2}
           }
@@ -864,7 +861,7 @@
       }
       {
         \bool_if:NT \l__codedoc_macro_TF_bool
-          { \msg_error:nnx { l3doc } { no-signature-TF } {#4} }
+          { \msg_error:nne { l3doc } { no-signature-TF } {#4} }
         \__codedoc_names_parse_aux:nnn {#4} {#4} { \scan_stop: }
       }
   }
@@ -895,12 +892,12 @@
     \str_if_eq:VnTF \l__codedoc_tmpa_tl { \scan_stop: }
       {
         \seq_gclear:N \g__codedoc_variants_seq
-        \__codedoc_names_typeset_auxii:x { \g__codedoc_base_name_tl }
+        \__codedoc_names_typeset_auxii:e { \g__codedoc_base_name_tl }
       }
       {
         \seq_gset_eq:NN \g__codedoc_variants_seq #1
         \seq_gpop:NN \g__codedoc_variants_seq \l__codedoc_tmpb_tl
-        \__codedoc_names_typeset_auxii:x
+        \__codedoc_names_typeset_auxii:e
           { \g__codedoc_base_name_tl : \l__codedoc_tmpb_tl }
       }
   }
@@ -908,7 +905,7 @@
   {
     \bool_if:NT \l__codedoc_macro_pTF_bool
       {
-        \__codedoc_names_typeset_block:xN
+        \__codedoc_names_typeset_block:eN
           { \__codedoc_predicate_from_base:n {#1} }
           \c_false_bool
       }
@@ -916,7 +913,7 @@
       { \__codedoc_names_typeset_block:nN {#1} \c_false_bool }
     \__codedoc_names_typeset_block:nN {#1} \l__codedoc_macro_TF_bool
   }
-\cs_generate_variant:Nn \__codedoc_names_typeset_auxii:n { x }
+\cs_generate_variant:Nn \__codedoc_names_typeset_auxii:n { e }
 \cs_new_protected:Npn \__codedoc_names_typeset_block:nN
   {
     \int_compare:nNnTF \l__codedoc_nested_macro_int = 0
@@ -923,7 +920,7 @@
       { \__codedoc_typeset_function_block:nN }
       { \__codedoc_macro_typeset_block:nN }
   }
-\cs_generate_variant:Nn \__codedoc_names_typeset_block:nN { x }
+\cs_generate_variant:Nn \__codedoc_names_typeset_block:nN { e }
 \prg_new_conditional:Npnn \__codedoc_if_macro_internal:n #1 { p , T , F , TF }
   {
     \bool_if:NTF \l__codedoc_macro_internal_set_bool
@@ -950,7 +947,7 @@
           \seq_set_eq:NN \l__codedoc_tmpa_seq ##1
           \seq_pop:NN \l__codedoc_tmpa_seq \l__codedoc_tmpa_tl
           \seq_get:NN \l__codedoc_tmpa_seq \l__codedoc_tmpb_tl
-          \exp_args:NNx
+          \exp_args:NNe
         \group_end:
         #1
           {
@@ -1023,7 +1020,7 @@
     \exp_args:No \__codedoc_date_compare:nNnT
       {#1} > { \c_sys_year_int - \c_sys_month_int - \c_sys_day_int }
       {
-        \msg_error:nnxx { l3doc } { future-date }
+        \msg_error:nnee { l3doc } { future-date }
           { \tl_to_str:N \l__codedoc_macro_argument_tl }
           {#1}
       }
@@ -1156,9 +1153,9 @@
   }
 \cs_new_protected:Npn \__codedoc_typeset_function_block:nN #1#2
   {
-    \__codedoc_function_index:x
+    \__codedoc_function_index:e
       { #1 \bool_if:NT #2 { \tl_to_str:n {TF} } }
-    \__codedoc_function_label:xN {#1} #2
+    \__codedoc_function_label:eN {#1} #2
     #1
     \bool_if:NT #2 { \__codedoc_typeset_TF: }
     \__codedoc_typeset_expandability:
@@ -1166,13 +1163,13 @@
       { \__codedoc_typeset_variant_list:nN {#1} #2 }
     \\
   }
-\cs_generate_variant:Nn \__codedoc_typeset_function_block:nN { x }
+\cs_generate_variant:Nn \__codedoc_typeset_function_block:nN { e }
 \cs_new_protected:Npn \__codedoc_function_index:n #1
   {
     \seq_gput_right:Nn \g_doc_functions_seq {#1}
     \__codedoc_special_index:nn {#1} { usage }
   }
-\cs_generate_variant:Nn \__codedoc_function_index:n { x }
+\cs_generate_variant:Nn \__codedoc_function_index:n { e }
 \cs_new_protected:Npn \__codedoc_typeset_expandability:
   {
     &
@@ -1224,7 +1221,7 @@
   {
     \bool_if:NF \l__codedoc_no_label_bool
       {
-        \__codedoc_get_hyper_target:xN
+        \__codedoc_get_hyper_target:eN
           {
             \exp_not:n {#1}
             \bool_if:NT #2 { \tl_to_str:n {TF} }
@@ -1233,7 +1230,7 @@
         \exp_args:No \label { \l__codedoc_tmpa_tl }
       }
   }
-\cs_generate_variant:Nn \__codedoc_function_label:nN { x }
+\cs_generate_variant:Nn \__codedoc_function_label:nN { e }
 \cs_new:Npn \__codedoc_typeset_dates:
   {
     \bool_lazy_and:nnF
@@ -1417,7 +1414,7 @@
           \l__codedoc_macro_do_not_index_tl
         \exp_args:NNV \seq_set_from_clist:Nn
           \l__codedoc_tmpa_seq \l__codedoc_macro_do_not_index_tl
-        \__kernel_tl_set:Nx \l__codedoc_macro_do_not_index_tl
+        \__kernel_tl_set:Ne \l__codedoc_macro_do_not_index_tl
           { \seq_use:Nn \l__codedoc_tmpa_seq { , } }
         \exp_args:NV \DoNotIndex \l__codedoc_macro_do_not_index_tl
       }
@@ -1445,7 +1442,7 @@
     \__codedoc_macro_single:nNN {#1} \c_true_bool #2
     \seq_if_empty:NF \g__codedoc_variants_seq
       {
-        \__codedoc_macro_typeset_variant_list:xN
+        \__codedoc_macro_typeset_variant_list:eN
           { \__codedoc_get_function_name:n {#1} } #2
       }
   }
@@ -1455,13 +1452,13 @@
     \seq_map_inline:Nn \g__codedoc_variants_seq
       { \__codedoc_macro_single:nNN { #1 : ##1 } \c_false_bool #2 }
   }
-\cs_generate_variant:Nn \__codedoc_macro_typeset_variant_list:nN { x }
+\cs_generate_variant:Nn \__codedoc_macro_typeset_variant_list:nN { e }
 \cs_new_protected:Npn \__codedoc_macro_single:nNN #1#2#3
   {
     \tl_set:Nn \saved at macroname {#1}
     \__codedoc_macro_typeset_one:nN {#1} #3
     \bool_if:NT #3 { \DoNotIndex {#1} }
-    \exp_args:Nx \__codedoc_macro_index:nN
+    \exp_args:Ne \__codedoc_macro_index:nN
       { #1 \bool_if:NT #3 { \tl_to_str:n { TF } } }
       #2
   }
@@ -1495,7 +1492,7 @@
 \cs_new_protected:Npn \__codedoc_print_macroname:nN #1#2
   {
     \strut
-    \__codedoc_get_hyper_target:xN
+    \__codedoc_get_hyper_target:eN
       {
         \exp_not:n {#1}
         \bool_if:NT #2 { \tl_to_str:n {TF} }
@@ -1565,7 +1562,7 @@
   { \__codedoc_test_missing:n {#1} }
 \cs_new_protected:Npn \__codedoc_test_missing:n #1
   {
-    \__codedoc_test_missing_aux:Nxn
+    \__codedoc_test_missing_aux:Nen
       \g__codedoc_missing_tests_prop
       { \seq_use:Nn \l__codedoc_names_seq { , } }
       { { \g_file_curr_name_str \c_space_tl (#1) } }
@@ -1577,7 +1574,7 @@
       { \tl_set:Nn \l__codedoc_tmpa_tl {#3} }
     \prop_put:Nno #1 {#2} \l__codedoc_tmpa_tl
   }
-\cs_generate_variant:Nn \__codedoc_test_missing_aux:Nnn { Nx }
+\cs_generate_variant:Nn \__codedoc_test_missing_aux:Nnn { Ne }
 \cs_new_protected:Npn \__codedoc_macro_end:
   {
     \endtrivlist
@@ -1596,7 +1593,7 @@
      {
        \seq_set_filter:NNn \l__codedoc_tmpa_seq \l__codedoc_names_seq
          { ! \__codedoc_if_macro_internal_p:n {##1} }
-       \seq_gput_right:Nx \g__codedoc_not_tested_seq
+       \seq_gput_right:Ne \g__codedoc_not_tested_seq
          {
            \seq_use:Nn \l__codedoc_tmpa_seq { , }
            \bool_if:NTF \l__codedoc_macro_pTF_bool {~(pTF)}
@@ -1644,10 +1641,10 @@
         \bool_if:NTF \l__codedoc_macro_var_bool {variable} {function}
         \int_compare:nNnTF \l__codedoc_tmpa_int = 1 {~is~} {s~are~}
         documented~on~page~
-        \__codedoc_get_hyper_target:xN
+        \__codedoc_get_hyper_target:eN
           { \seq_item:Nn \g__codedoc_nested_names_seq { 1 } }
           \l__codedoc_tmpa_tl
-        \exp_args:Nx \pageref { \l__codedoc_tmpa_tl } .
+        \exp_args:Ne \pageref { \l__codedoc_tmpa_tl } .
       }
     \seq_gclear:N \g__codedoc_nested_names_seq
   }
@@ -1698,6 +1695,31 @@
   {
     \NewDocumentEnvironment{NOTE}{m}{\comment}{\endcomment}
   }
+\providecommand\Hy at footnote@currentHref{}
+\prop_new:N\g__codedoc_fnmark_prop
+\cs_new_protected:Npn \__codedoc_fn_store:
+ {
+   \prop_gput:Nee\g__codedoc_fnmark_prop
+     {fn\int_use:N\c at footnote}{{\Hy at footnote@currentHref}{\int_use:N\c at footnote}}
+ }
+\cs_new_protected:Npn \__codedoc_fn_restore:n  #1
+ {
+   \prop_get:NnN \g__codedoc_fnmark_prop {fn#1}\l__codedoc_tmpa_tl
+   \tl_gset:Ne\Hy at footnote@currentHref
+     {\exp_last_unbraced:NV\use_i:nn \l__codedoc_tmpa_tl }
+   \setcounter{footnote}{\exp_last_unbraced:NV\use_ii:nn \l__codedoc_tmpa_tl}
+ }
+
+\cs_generate_variant:Nn \hook_gput_next_code:nn {ne}
+\cs_new_protected:Npn \__codedoc_fn_footnote:nn #1 #2
+  {
+    \footnotemark
+    \__codedoc_fn_store:
+    \hook_gput_next_code:ne {env/#1/after}
+      {\exp_not:N\__codedoc_fn_restore:n{\int_use:N\c at footnote}{\exp_not:n{\footnotetext{#2}}}}}
+
+\AddToHook{env/function/begin}{\def\footnote{\__codedoc_fn_footnote:nn{function}}}
+\AddToHook{env/variable/begin}{\def\footnote{\__codedoc_fn_footnote:nn{variable}}}
 \newenvironment{TemplateInterfaceDescription}[1]
   {
     \subsection{The~object~type~`#1'}
@@ -1806,7 +1828,7 @@
     \@tempswatrue
     \if at partsw
       \@tempswafalse
-      \cs_set:Npx \@tempb {#1}
+      \cs_set:Npe \@tempb {#1}
       \clist_map_inline:Nn \@partlist
         {
           \if_meaning:w \@tempa \@tempb
@@ -1827,7 +1849,7 @@
       \part{\currentfile}
       {
         \cs_set_eq:NN \ttfamily\relax
-        \cs_gset:Npx \filekey
+        \cs_gset:Npe \filekey
           { \filekey,~ \thepart = { \ttfamily \currentfile } }
       }
       \DocInput{\currentfile}
@@ -1960,12 +1982,14 @@
 \tl_new:N \l__codedoc_doc_def_tl
 \tl_new:N \l__codedoc_doc_undef_tl
 \tl_new:N \l__codedoc_undoc_def_tl
+\tl_const:Nn \c__codedoc_iow_separator_tl { ---- }
+\tl_const:Nn \c__codedoc_iow_midrule_tl  { -- }
 \cs_new_protected:Npn \__codedoc_show_functions_defined:
   {
     \bool_lazy_and:nnT
       { \g__codedoc_typeset_implementation_bool } { \g__codedoc_checkfunc_bool }
       {
-        \iow_term:x { \c__codedoc_iow_separator_tl \iow_newline: }
+        \iow_term:e { \c__codedoc_iow_separator_tl \iow_newline: }
         \iow_open:Nn \g__codedoc_func_iow { \c_sys_jobname_str .cmds }
 
         \tl_clear:N \l__codedoc_doc_def_tl
@@ -1975,12 +1999,12 @@
           {
             \seq_if_in:NnTF \g_doc_macros_seq {##1}
               {
-                \tl_put_right:Nx \l__codedoc_doc_def_tl
+                \tl_put_right:Ne \l__codedoc_doc_def_tl
                   { ##1 \iow_newline: }
                 \iow_now:Nn \g__codedoc_func_iow { > ~ ##1 }
               }
               {
-                \tl_put_right:Nx \l__codedoc_doc_undef_tl
+                \tl_put_right:Ne \l__codedoc_doc_undef_tl
                   { ##1 \iow_newline: }
                 \iow_now:Nn \g__codedoc_func_iow { ! ~ ##1 }
               }
@@ -1989,7 +2013,7 @@
           {
             \seq_if_in:NnF \g_doc_functions_seq {##1}
               {
-                \tl_put_right:Nx \l__codedoc_undoc_def_tl
+                \tl_put_right:Ne \l__codedoc_undoc_def_tl
                   { ##1 \iow_newline: }
                 \iow_now:Nn \g__codedoc_func_iow { ? ~ ##1 }
               }
@@ -2008,7 +2032,7 @@
           \l__codedoc_undoc_def_tl
 
         \iow_close:N \g__codedoc_func_iow
-        \iow_term:x { \c__codedoc_iow_separator_tl }
+        \iow_term:e { \c__codedoc_iow_separator_tl }
       }
   }
 \AtEndDocument { \__codedoc_show_functions_defined: }
@@ -2044,7 +2068,7 @@
                 \iow_newline:
                 \space\space\space\space\space\space * ~ ##1
               }
-            \tl_put_right:Nx \l__codedoc_tmpa_tl
+            \tl_put_right:Ne \l__codedoc_tmpa_tl
               {
                 \iow_newline: \iow_newline:
                 The~ following~ macro(s)~ have~ incomplete~ tests:
@@ -2062,7 +2086,7 @@
                 \iow_newline:
                 \space\space\space\space ##1
               }
-            \tl_put_right:Nx \l__codedoc_tmpa_tl
+            \tl_put_right:Ne \l__codedoc_tmpa_tl
               {
                 \iow_newline:
                 \iow_newline:
@@ -2089,7 +2113,7 @@
       \HD at savedestfalse \HD at target
     \group_end:
   }
-\cs_set_nopar:Npx \theCodelineNo
+\cs_set_nopar:Npe \theCodelineNo
   {
     \group_begin:
       \exp_not:N \HD at savedestfalse
@@ -2098,7 +2122,7 @@
   }
 \bool_new:N \l__codedoc_allow_indexing_bool
 \bool_set_true:N \l__codedoc_allow_indexing_bool
-\use:x
+\use:e
   {
     \exp_not:n { \cs_set_nopar:Npn \@starttoc #1 }
       {
@@ -2137,7 +2161,7 @@
   { \AtEndDocument { \msg_info:nn { l3doc } { print-index-howto } } }
 \cs_gset_protected:Npn \it at is@a #1
   {
-    \use:x
+    \use:e
       {
         \__codedoc_special_index_module:nnnnN
           {#1}
@@ -2164,7 +2188,7 @@
 \tl_new:N \l__codedoc_index_escaped_key_tl
 \cs_new_protected:Npn \__codedoc_special_index_module:nnnnN #1#2#3#4#5
   {
-    \use:x
+    \use:e
       {
         \exp_not:n { \__codedoc_special_index_aux:nnnnnn {#1} {#2} }
           \tl_if_empty:nTF {#3}
@@ -2214,7 +2238,7 @@
   }
 \group_begin:
 \char_set_active_eq:NN - \scan_stop:
-\tl_const:Nx \c__codedoc_active_minus_tl { \char_generate:nn { `- } { 13 } }
+\tl_const:Ne \c__codedoc_active_minus_tl { \char_generate:nn { `- } { 13 } }
 \group_end:
 \cs_new_eq:NN \__codedoc_old_hdpindex:nn \hdpindex
 \cs_new_eq:NN \__codedoc_old_hdclindex:nnn \hdclindex
@@ -2225,7 +2249,7 @@
 \cs_new_protected:Npn \__codedoc_hdindex:nn #1#2
   {
     \tl_set:Nn \l__codedoc_tmpa_tl {#2}
-    \tl_replace_all:Nxn \l__codedoc_tmpa_tl
+    \tl_replace_all:Nen \l__codedoc_tmpa_tl
       { \exp_not:V \c__codedoc_active_minus_tl \exp_not:V \c__codedoc_active_minus_tl }
       { -- }
     \seq_set_split:NnV \l__codedoc_tmpa_seq { -- } \l__codedoc_tmpa_tl
@@ -2239,16 +2263,16 @@
     \tl_replace_all:Nnn \l__codedoc_tmpa_tl { MMMM } { \use_none:nn }
     \tl_if_in:NnT \l__codedoc_tmpa_tl { MMMD }
       {
-        \tl_replace_all:Nxn \l__codedoc_tmpa_tl
+        \tl_replace_all:Nen \l__codedoc_tmpa_tl
           { \exp_not:V \c__codedoc_active_minus_tl MMMD } { - MMMD }
         \tl_replace_all:Nnn \l__codedoc_tmpa_tl { - MMMD } { \__codedoc_hdindex_aux:w }
       }
-    \use:x { \exp_not:n {#1} { \exp_not:V \l__codedoc_tmpa_tl } }
+    \use:e { \exp_not:n {#1} { \exp_not:V \l__codedoc_tmpa_tl } }
   }
 \cs_new_protected:Npn \__codedoc_hdindex_aux:w #1 M { }
 \cs_new_protected:Npn \__codedoc_special_index_set:Nn #1#2
   {
-    \__kernel_tl_set:Nx #1 { \tl_to_str:n {#2} }
+    \__kernel_tl_set:Ne #1 { \tl_to_str:n {#2} }
     \__codedoc_if_almost_str:nTF {#2}
       {
         \tl_replace_all:Non #1 { \tl_to_str:n { __ } }
@@ -2257,7 +2281,7 @@
             \token_to_str:N \_ \token_to_str:N \_
             \token_to_str:N \verb * \verbatimchar
           }
-        \exp_args:Nx \tl_map_inline:nn
+        \exp_args:Ne \tl_map_inline:nn
           { \tl_to_str:N \verbatimchar \token_to_str:N _ }
           {
             \tl_replace_all:Nnn #1 {##1}
@@ -2266,7 +2290,7 @@
                 \token_to_str:N \verb * \verbatimchar
               }
           }
-        \__kernel_tl_set:Nx #1
+        \__kernel_tl_set:Ne #1
           {
             \token_to_str:N \verb * \verbatimchar
             #1 \verbatimchar
@@ -2284,7 +2308,7 @@
   {
     \tl_map_inline:nn { \quotechar \actualchar \encapchar \levelchar \bslash }
       {
-        \tl_replace_all:Nxn #1
+        \tl_replace_all:Nen #1
           { \tl_to_str:N ##1 } { \quotechar \tl_to_str:N ##1 }
       }
   }
@@ -2291,7 +2315,7 @@
 \cs_new_protected:Npn \__codedoc_key_get:n #1
   {
     \__codedoc_key_get_base:nN {#1} \l__codedoc_index_macro_tl
-    \__kernel_tl_set:Nx \l__codedoc_index_key_tl
+    \__kernel_tl_set:Ne \l__codedoc_index_key_tl
       { \tl_to_str:N \l__codedoc_index_macro_tl }
     \tl_clear:N \l__codedoc_index_module_tl
     \tl_if_in:NoTF \l__codedoc_index_key_tl { \tl_to_str:n { __ } }
@@ -2314,7 +2338,7 @@
   }
 \cs_new_protected:Npn \__codedoc_key_pop:
   {
-    \__kernel_tl_set:Nx \l__codedoc_index_key_tl
+    \__kernel_tl_set:Ne \l__codedoc_index_key_tl
       { \tl_tail:N \l__codedoc_index_key_tl }
   }
 \cs_new_protected:Npn \__codedoc_key_trim_module:n #1
@@ -2321,7 +2345,7 @@
   {
     \cs_set:Npn \__codedoc_tmpa:w ##1 #1 ##2 \q_stop
       { \exp_not:n {##1} }
-    \__kernel_tl_set:Nx \l__codedoc_index_module_tl
+    \__kernel_tl_set:Ne \l__codedoc_index_module_tl
       { \exp_after:wN \__codedoc_tmpa:w \l__codedoc_index_module_tl #1 \q_stop }
   }
 \cs_new_protected:Npn \__codedoc_key_drop_underscores:
@@ -2340,7 +2364,7 @@
   }
 \cs_new_protected:Npn \__codedoc_key_var:
   {
-    \exp_args:Nx \tl_if_head_eq_charcode:nNTF
+    \exp_args:Ne \tl_if_head_eq_charcode:nNTF
       { \exp_args:No \str_tail:n \l__codedoc_index_key_tl } _
       {
         \str_case:fn { \str_head:N \l__codedoc_index_key_tl }
@@ -2372,7 +2396,7 @@
       }
   }
 \clist_new:N \g__codedoc_non_modules_clist
-\clist_gset:Nx \g__codedoc_non_modules_clist
+\clist_gset:Ne \g__codedoc_non_modules_clist
   {
     \tl_to_str:n
       {

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3keys2e}{2023-08-29}{}
+\ProvidesExplPackage{l3keys2e}{2023-10-10}{}
   {LaTeX2e option processing using LaTeX3 keys}
 \cs_if_exist:NT \ProcessKeysOptions
   { \file_input_stop: }
@@ -52,7 +52,7 @@
           {
             unknown .code:n =
               {
-                \msg_error:nnxx { keyvalue } { option-unknown }
+                \msg_error:nnee { keyvalue } { option-unknown }
                   { \l_keys_key_str } { \@currname }
               }
           }
@@ -90,7 +90,7 @@
           {
             \clist_map_inline:cn { opt@ \@currname . \@currext }
               {
-                \keys_if_exist:nxTF {#1} { \__keys_latexe_remove_equals:n {##1} }
+                \keys_if_exist:neTF {#1} { \__keys_latexe_remove_equals:n {##1} }
                   { \clist_put_right:Nn \l__keys_latexe_options_clist {##1} }
                   { \clist_put_right:Nn \@unusedoptionlist {##1} }
               }
@@ -101,7 +101,7 @@
   {
     \clist_map_inline:Nn \@classoptionslist
       {
-        \keys_if_exist:nxT {#1} { \__keys_latexe_remove_equals:n {##1} }
+        \keys_if_exist:neT {#1} { \__keys_latexe_remove_equals:n {##1} }
           {
             \clist_put_right:Nn \l__keys_latexe_options_clist {##1}
             \clist_remove_all:Nn \@unusedoptionlist {##1}

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{xfp}{2023-08-29}{}
+\ProvidesExplPackage{xfp}{2023-10-10}{}
   {L3 Floating point unit}
 \ProvideExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
 \ProvideExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} }

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -34,7 +34,7 @@
     \endinput
   }
 \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate}
-\ProvidesExplPackage{xfrac}{2023-08-29}{}
+\ProvidesExplPackage{xfrac}{2023-10-10}{}
   {L3 Experimental split-level fractions}
 \keys_define:nn { xfrac }
   {
@@ -159,11 +159,11 @@
     \mode_if_math:TF
       {
         \cs_set_eq:NN \__xfrac_text_or_math:n \text
-        \cs_set:Npx \__xfrac_denominator_font_change:
+        \cs_set:Npe \__xfrac_denominator_font_change:
           { \tex_fam:D \l__xfrac_denominator_font_tl }
-        \cs_set:Npx \__xfrac_numerator_font_change:
+        \cs_set:Npe \__xfrac_numerator_font_change:
           { \tex_fam:D \l__xfrac_numerator_font_tl }
-        \cs_set:Npx \__xfrac_slash_symbol_font_change:
+        \cs_set:Npe \__xfrac_slash_symbol_font_change:
           { \tex_fam:D \l__xfrac_slash_symbol_font_tl }
       }
       {

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -60,7 +60,7 @@
       }
   }
 \ExplSyntaxOff
-\ProvidesExplPackage{xparse}{2023-08-29}{}
+\ProvidesExplPackage{xparse}{2023-10-10}{}
   {L3 Experimental document command parser}
 \clist_new:N \l__cmd_options_clist
 \DeclareOption* { \clist_put_right:NV \l__cmd_options_clist \CurrentOption }
@@ -78,7 +78,7 @@
       { \msg_redirect_module:nnn {#1} { info } { none } }
     \cs_new_protected:Npn \__cmd_unknown_argument_type_error:n ##1
       {
-        \msg_error:nnxx {#1} { unknown-argument-type }
+        \msg_error:nnee {#1} { unknown-argument-type }
           { \__cmd_environment_or_command: } { \tl_to_str:n {##1} }
       }
   }
@@ -95,7 +95,7 @@
         \__cmd_bad_def:wn
       }
   }
-\cs_new_protected:Npx \__cmd_normalize_type_g:w
+\cs_new_protected:Npe \__cmd_normalize_type_g:w
   { \exp_not:N \__cmd_normalize_type_G:w { \exp_not:V \c_novalue_tl } }
 \cs_new_protected:Npn \__cmd_normalize_type_G:w #1
   {
@@ -219,7 +219,7 @@
 \cs_gset_protected:Npn \__cmd_get_arg_spec_error:n #1
   {
     \bool_set_true:N \l__cmd_environment_bool
-    \str_set:Nx \l__cmd_environment_str {#1}
+    \str_set:Ne \l__cmd_environment_str {#1}
     \__cmd_get_arg_spec_error_aux:n
       { \cs_if_exist:cTF { \l__cmd_environment_str } }
   }
@@ -227,11 +227,11 @@
   {
     #1
       {
-        \msg_error:nnx { cmd } { non-xparse }
+        \msg_error:nne { cmd } { non-xparse }
           { \__cmd_environment_or_command: }
       }
       {
-        \msg_error:nnx { cmd } { unknown }
+        \msg_error:nne { cmd } { unknown }
           { \__cmd_environment_or_command: }
       }
   }
@@ -239,7 +239,7 @@
   {
     \__kernel_cmd_if_xparse:NTF #1
       {
-        \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
+        \tl_set:Ne \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
         #2
       }
       {#3}

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty	2023-10-10 20:25:27 UTC (rev 68506)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty	2023-10-10 20:27:00 UTC (rev 68507)
@@ -32,10 +32,8 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{xtemplate}{2023-08-29}{}
+\ProvidesExplPackage{xtemplate}{2023-10-10}{}
   {L3 Experimental prototype document functions}
-\cs_generate_variant:Nn \keys_define:nn { nx }
-\cs_generate_variant:Nn \tl_trim_spaces:n { e }
 \tl_const:Nn \c__xtemplate_code_root_tl      { template~code~>~ }
 \tl_const:Nn \c__xtemplate_defaults_root_tl  { template~defaults~>~ }
 \tl_const:Nn \c__xtemplate_instances_root_tl { template~instance~>~  }
@@ -83,7 +81,7 @@
     \int_compare:nNnTF {#2} = \l__xtemplate_tmp_tl
        {#3}
        {
-         \msg_error:nnxxx { xtemplate }
+         \msg_error:nneee { xtemplate }
            { argument-number-mismatch } {#1} { \l__xtemplate_tmp_tl } {#2}
        }
   }
@@ -92,7 +90,7 @@
     \cs_if_exist:cTF { \c__xtemplate_code_root_tl #1 / #2 }
       {#3}
       {
-        \msg_error:nnxx { xtemplate } { no-template-code }
+        \msg_error:nnee { xtemplate } { no-template-code }
           {#1} {#2}
       }
   }
@@ -100,7 +98,7 @@
   {
     \cs_if_exist:cTF { __xtemplate_store_value_ #1 :n }
       {#2}
-      { \msg_error:nnx { xtemplate } { unknown-keytype } {#1} }
+      { \msg_error:nne { xtemplate } { unknown-keytype } {#1} }
   }
 \cs_generate_variant:Nn \__xtemplate_execute_if_keytype_exist:nT { o }
 \cs_new_protected:Npn \__xtemplate_execute_if_type_exist:nT #1#2
@@ -107,7 +105,7 @@
   {
     \prop_if_in:NnTF \g__xtemplate_object_type_prop {#1}
       {#2}
-      { \msg_error:nnx { xtemplate } { unknown-object-type } {#1} }
+      { \msg_error:nne { xtemplate } { unknown-object-type } {#1} }
   }
 \cs_new_protected:Npn \__xtemplate_if_keys_exist:nnT #1#2#3
   {
@@ -114,7 +112,7 @@
     \cs_if_exist:cTF { \c__xtemplate_keytypes_root_tl #1 / #2 }
       {#3}
       {
-        \msg_error:nnxx { xtemplate } { unknown-template }
+        \msg_error:nnee { xtemplate } { unknown-template }
           {#1} {#2}
       }
    }
@@ -234,13 +232,13 @@
     \int_set:Nn \l__xtemplate_tmp_int {#2}
     \int_compare:nTF { 0 <= \l__xtemplate_tmp_int <= 9 }
       {
-        \msg_info:nnxx { xtemplate } { declare-object-type }
-          {#1} { \exp_not:V \l__xtemplate_tmp_int }
+        \msg_info:nnnV { xtemplate } { declare-object-type }
+          {#1} \l__xtemplate_tmp_int
         \prop_gput:NnV \g__xtemplate_object_type_prop {#1}
           \l__xtemplate_tmp_int
       }
       {
-        \msg_error:nnxx { xtemplate } { bad-number-of-arguments }
+        \msg_error:nnee { xtemplate } { bad-number-of-arguments }
           {#1} { \exp_not:V \l__xtemplate_tmp_int }
       }
   }
@@ -274,7 +272,7 @@
                 \seq_if_in:NoTF \l__xtemplate_key_order_seq
                   \l__xtemplate_key_name_tl
                   {
-                    \msg_error:nnx { xtemplate }
+                    \msg_error:nne { xtemplate }
                       { duplicate-key-interface }
                       { \l__xtemplate_key_name_tl }
                   }
@@ -289,7 +287,7 @@
       {
         \tl_if_empty:NT \l__xtemplate_keytype_arg_tl
           {
-            \msg_error:nnx { xtemplate }
+            \msg_error:nne { xtemplate }
               { keytype-requires-argument } {#1}
             \bool_set_true:N \l__xtemplate_error_bool
             \seq_map_break:
@@ -298,7 +296,7 @@
   }
 \cs_new:Npn \__xtemplate_parse_keys_elt_aux:
   {
-    \tl_set:Nx \l__xtemplate_tmp_tl
+    \tl_set:Ne \l__xtemplate_tmp_tl
       {
         \l__xtemplate_keytype_tl
         \tl_if_empty:NF \l__xtemplate_keytype_arg_tl
@@ -318,7 +316,7 @@
     \__xtemplate_parse_keys_elt:n {#1}
     \use:c { __xtemplate_store_value_ \l__xtemplate_keytype_tl :n } {#2}
   }
-\cs_new_protected:Npx \__xtemplate_split_keytype:n #1
+\cs_new_protected:Npe \__xtemplate_split_keytype:n #1
   {
     \exp_not:N \bool_set_false:N \exp_not:N \l__xtemplate_error_bool
     \tl_set:Nn \exp_not:N \l__xtemplate_tmp_tl {#1}
@@ -334,38 +332,38 @@
       }
       {
         \exp_not:N \bool_set_true:N \exp_not:N \l__xtemplate_error_bool
-        \msg_error:nnx { xtemplate } { missing-keytype } {#1}
+        \msg_error:nne { xtemplate } { missing-keytype } {#1}
       }
   }
-\use:x
+\use:e
   {
     \cs_new_protected:Npn \exp_not:N \__xtemplate_split_keytype_aux:w
-      ##1 \token_to_str:N : ##2 \s__xtemplate_stop
+      #1 \token_to_str:N : #2 \s__xtemplate_stop
       {
-        \tl_put_right:Nx \exp_not:N \l__xtemplate_key_name_tl
+        \tl_put_right:Ne \exp_not:N \l__xtemplate_key_name_tl
           {
             \exp_not:N \tl_trim_spaces:e
-              { \exp_not:N \tl_to_str:n {##1} }
+              { \exp_not:N \tl_to_str:n {#1} }
           }
-        \tl_if_in:nnTF {##2} { \token_to_str:N : }
+        \tl_if_in:nnTF {#2} { \token_to_str:N : }
           {
             \tl_put_right:Nn \exp_not:N \l__xtemplate_key_name_tl
               { \token_to_str:N : }
-            \exp_not:N \__xtemplate_split_keytype_aux:w ##2 \s__xtemplate_stop
+            \exp_not:N \__xtemplate_split_keytype_aux:w #2 \s__xtemplate_stop
           }
           {
             \exp_not:N \tl_if_empty:NTF \exp_not:N \l__xtemplate_key_name_tl
               {
-                \msg_error:nnx { xtemplate } { empty-key-name }
-                  { \token_to_str:N : ##2 }
+                \msg_error:nne { xtemplate } { empty-key-name }
+                  { \token_to_str:N : #2 }
               }
-              { \exp_not:N \__xtemplate_split_keytype_arg:n {##2} }
+              { \exp_not:N \__xtemplate_split_keytype_arg:n {#2} }
           }
       }
   }
 \cs_new_protected:Npn \__xtemplate_split_keytype_arg:n #1
   {
-    \tl_set:Nx \l__xtemplate_keytype_tl { \tl_trim_spaces:n {#1} }
+    \tl_set:Ne \l__xtemplate_keytype_tl { \tl_trim_spaces:n {#1} }
     \tl_clear:N \l__xtemplate_keytype_arg_tl
     \cs_set_protected:Npn \__xtemplate_split_keytype_arg_aux:n ##1
       {
@@ -376,11 +374,11 @@
               {
                 \tl_if_blank:nT {####1}
                   {
-                    \tl_set:Nx \l__xtemplate_keytype_tl
+                    \tl_set:Ne \l__xtemplate_keytype_tl
                       { \tl_trim_spaces:n {##1} }
                     \tl_if_blank:nF {####2}
                       {
-                        \tl_set:Nx \l__xtemplate_keytype_arg_tl
+                        \tl_set:Ne \l__xtemplate_keytype_arg_tl
                           { \use:n ####2 }
                       }
                     \seq_map_break:
@@ -454,15 +452,15 @@
     \__xtemplate_store_restrictions:n { #1 / #2 }
     \prop_map_inline:Nn \l__xtemplate_keytypes_prop
       {
-        \msg_error:nnxxx { xtemplate } { key-not-implemented }
+        \msg_error:nneee { xtemplate } { key-not-implemented }
           {##1} {#2} {#1}
       }
   }
 \cs_new_protected:Npn \__xtemplate_parse_vars_elt:n #1
-  { \msg_error:nnx { xtemplate } { key-no-variable } {#1} }
+  { \msg_error:nne { xtemplate } { key-no-variable } {#1} }
 \cs_new_protected:Npn \__xtemplate_parse_vars_elt:nnn #1#2#3
  {
-    \tl_set:Nx \l__xtemplate_key_name_tl
+    \tl_set:Ne \l__xtemplate_key_name_tl
       { \tl_trim_spaces:e { \tl_to_str:n {#2} } }
     \prop_get:NoNTF
       \l__xtemplate_keytypes_prop
@@ -473,7 +471,7 @@
         \__xtemplate_parse_vars_elt_aux:nn {#1} {#3}
         \prop_remove:NV \l__xtemplate_keytypes_prop \l__xtemplate_key_name_tl
       }
-      { \msg_error:nnx { xtemplate } { unknown-key } {#2} }
+      { \msg_error:nne { xtemplate } { unknown-key } {#2} }
   }
 \cs_new_protected:Npn \__xtemplate_parse_vars_elt_aux:nn #1#2
   {
@@ -487,7 +485,7 @@
       {
         \tl_if_blank:nTF {#2}
           {
-            \exp_args:Nnnx \__xtemplate_parse_vars_elt_aux:nnn
+            \exp_args:Nnne \__xtemplate_parse_vars_elt_aux:nnn
               {#1} { global } { \tl_trim_spaces:n {#3} }
           }
           { \msg_error:nnn { xtemplate } { bad-variable } { #2 global #3 } }
@@ -511,7 +509,7 @@
                       \exp_not:c
                         { cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
                       { \exp_not:o \l__xtemplate_keytype_arg_tl }
-                      {####1}
+                      {##1}
                   }
               }
             \prop_put:Non \l__xtemplate_vars_prop
@@ -525,7 +523,7 @@
                   {
                     \exp_not:c
                       { cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
-                      \exp_not:N #3 { \UseInstance {####1} }
+                      \exp_not:N #3 { \UseInstance {##1} }
                   }
               }
             \prop_put:Non \l__xtemplate_vars_prop
@@ -546,12 +544,12 @@
             \prop_put:Non \l__xtemplate_vars_prop
               \l__xtemplate_key_name_tl {#2#3}
           }
-          { \msg_error:nnx { xtemplate } { bad-variable } { #2#3 } }
+          { \msg_error:nne { xtemplate } { bad-variable } { #2#3 } }
       }
   }
 \cs_new_protected:Npn \__xtemplate_parse_vars_elt_key:nn #1#2
   {
-    \keys_define:nx { template / #1 }
+    \keys_define:ne { template / #1 }
       { \l__xtemplate_key_name_tl #2 }
   }
 \cs_new:Npn \__xtemplate_map_var_type:
@@ -572,7 +570,7 @@
   {
     \clist_set:No \l__xtemplate_tmp_clist { \l__xtemplate_keytype_arg_tl }
     \prop_put:Non \l__xtemplate_vars_prop \l__xtemplate_key_name_tl { }
-    \keys_define:nx { template / #1 } { \l__xtemplate_key_name_tl .choice: }
+    \keys_define:ne { template / #1 } { \l__xtemplate_key_name_tl .choice: }
     \keyval_parse:nnn
       { \__xtemplate_implement_choice_elt:n }
       { \__xtemplate_implement_choice_elt:nnn {#1} }
@@ -584,7 +582,7 @@
       {
         \clist_map_inline:Nn \l__xtemplate_tmp_clist
           {
-            \msg_error:nnx { xtemplate } { choice-not-implemented }
+            \msg_error:nne { xtemplate } { choice-not-implemented }
               {##1}
           }
       }
@@ -591,11 +589,11 @@
   }
 \cs_new_protected:Npn \__xtemplate_implement_choices_default:
   {
-    \tl_set:Nx \l__xtemplate_tmp_tl
+    \tl_set:Ne \l__xtemplate_tmp_tl
       { \l__xtemplate_key_name_tl \c_space_tl \l__xtemplate_tmp_tl }
     \prop_if_in:NoF \l__xtemplate_vars_prop \l__xtemplate_tmp_tl
       {
-        \tl_set:Nx \l__xtemplate_tmp_tl
+        \tl_set:Ne \l__xtemplate_tmp_tl
           { \l__xtemplate_key_name_tl \c_space_tl \l__xtemplate_tmp_tl }
         \prop_if_in:NoF \l__xtemplate_vars_prop \l__xtemplate_tmp_tl
           {
@@ -604,7 +602,7 @@
             \__xtemplate_split_keytype_arg:o \l__xtemplate_tmp_tl
             \prop_get:NoN \l__xtemplate_values_prop \l__xtemplate_key_name_tl
               \l__xtemplate_tmp_tl
-            \msg_error:nnxxx { xtemplate } { unknown-default-choice }
+            \msg_error:nneee { xtemplate } { unknown-default-choice }
               { \l__xtemplate_key_name_tl } { \l__xtemplate_key_name_tl }
               { \l__xtemplate_keytype_arg_tl }
           }
@@ -620,7 +618,7 @@
             \prop_get:NoN \l__xtemplate_keytypes_prop \l__xtemplate_key_name_tl
               \l__xtemplate_tmp_tl
             \__xtemplate_split_keytype_arg:o \l__xtemplate_tmp_tl
-            \msg_error:nnxxx { xtemplate } { unknown-choice }
+            \msg_error:nneee { xtemplate } { unknown-choice }
               { \l__xtemplate_key_name_tl } {#2}
               { \l__xtemplate_keytype_arg_tl }
           }
@@ -635,7 +633,7 @@
             \prop_get:NoN \l__xtemplate_keytypes_prop \l__xtemplate_key_name_tl
               \l__xtemplate_tmp_tl
             \__xtemplate_split_keytype_arg:o \l__xtemplate_tmp_tl
-            \msg_error:nnxxx { xtemplate } { unknown-choice }
+            \msg_error:nneee { xtemplate } { unknown-choice }
               { \l__xtemplate_key_name_tl } {#2}
               { \l__xtemplate_keytype_arg_tl }
           }
@@ -643,15 +641,15 @@
   }
 \cs_new_protected:Npn \__xtemplate_implement_choice_elt_aux:nnn #1#2#3
   {
-    \keys_define:nx { template / #1 }
+    \keys_define:ne { template / #1 }
       { \l__xtemplate_key_name_tl / #2 .code:n = { \exp_not:n {#3} } }
-    \tl_set:Nx \l__xtemplate_tmp_tl
+    \tl_set:Ne \l__xtemplate_tmp_tl
       { \l__xtemplate_key_name_tl \c_space_tl #2 }
     \prop_put:Non \l__xtemplate_vars_prop \l__xtemplate_tmp_tl {#3}
   }
 \cs_new_protected:Npn \__xtemplate_implement_choice_elt:n #1
   {
-    \msg_error:nnxxx { xtemplate } { choice-requires-code }
+    \msg_error:nneee { xtemplate } { choice-requires-code }
       { \l__xtemplate_key_name_tl } {#1}
   }
 \cs_new_protected:Npn \__xtemplate_declare_restricted:nnnn #1#2#3#4
@@ -694,11 +692,11 @@
 \cs_new_protected:Npn \__xtemplate_parse_values_elt:n #1
   {
     \bool_set_true:N \l__xtemplate_error_bool
-    \msg_error:nnx { xtemplate } { key-no-value } {#1}
+    \msg_error:nne { xtemplate } { key-no-value } {#1}
   }
 \cs_new_protected:Npn \__xtemplate_parse_values_elt:nn #1#2
   {
-    \tl_set:Nx \l__xtemplate_key_name_tl
+    \tl_set:Ne \l__xtemplate_key_name_tl
       { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
     \prop_get:NoNTF \l__xtemplate_keytypes_prop \l__xtemplate_key_name_tl
       \l__xtemplate_tmp_tl
@@ -712,7 +710,7 @@
           { \__xtemplate_parse_values_elt_aux:n {#2} }
       }
       {
-        \msg_error:nnx { xtemplate } { unknown-key }
+        \msg_error:nne { xtemplate } { unknown-key }
           { \l__xtemplate_key_name_tl }
       }
   }
@@ -752,7 +750,7 @@
         \prop_put:Nnn \l__xtemplate_values_prop { from~template } {#2}
         \__xtemplate_store_values:n { #1 / #3 / #4 }
         \__xtemplate_convert_to_assignments:
-        \cs_set_protected:cpx { \c__xtemplate_instances_root_tl #1 / #3 / #4 }
+        \cs_set_protected:cpe { \c__xtemplate_instances_root_tl #1 / #3 / #4 }
           {
             \exp_not:N \__xtemplate_assignments_push:n
               { \exp_not:o \l__xtemplate_assignments_tl }
@@ -776,7 +774,7 @@
           { \c__xtemplate_instances_root_tl #1 / #2 / #3 }
       }
       {
-        \msg_error:nnxx { xtemplate } { unknown-instance }
+        \msg_error:nnee { xtemplate } { unknown-instance }
           {#1} {#3}
       }
   }
@@ -791,7 +789,7 @@
           {#2} {#3} {#4}
       }
       {
-        \msg_error:nnxx { xtemplate } { unknown-instance }
+        \msg_error:nnee { xtemplate } { unknown-instance }
           {#1} {#3}
       }
   }
@@ -827,7 +825,7 @@
             \tl_set:Nn \l__xtemplate_key_name_tl {#1}
             \use:c { __xtemplate_assign_ \l__xtemplate_keytype_tl : }
           }
-          { \msg_error:nnx { xtemplate } { unknown-attribute } {#1} }
+          { \msg_error:nne { xtemplate } { unknown-attribute } {#1} }
       }
   }
 \cs_generate_variant:Nn \__xtemplate_convert_to_assignments_aux:nn { no }
@@ -866,7 +864,7 @@
     \__xtemplate_if_key_value:oTF \l__xtemplate_value_tl
       {
         \__xtemplate_key_to_value:
-        \tl_put_right:Nx \l__xtemplate_assignments_tl
+        \tl_put_right:Ne \l__xtemplate_assignments_tl
           {
             \exp_not:c { #1 _eq:NN }
             \exp_not:o \l__xtemplate_var_tl
@@ -874,7 +872,7 @@
           }
       }
       {
-        \tl_put_right:Nx \l__xtemplate_assignments_tl
+        \tl_put_right:Ne \l__xtemplate_assignments_tl
           {
             \exp_not:c { #1 _ \l__xtemplate_value_tl :N }
             \exp_not:o \l__xtemplate_var_tl
@@ -883,16 +881,16 @@
   }
 \cs_new_protected:Npn \__xtemplate_assign_choice:
   {
-    \__xtemplate_assign_choice_aux:xF
+    \__xtemplate_assign_choice_aux:eF
       { \l__xtemplate_key_name_tl \c_space_tl \l__xtemplate_value_tl }
       {
-        \__xtemplate_assign_choice_aux:xF
+        \__xtemplate_assign_choice_aux:eF
           { \l__xtemplate_key_name_tl \c_space_tl unknown }
           {
             \prop_get:NoN \l__xtemplate_keytypes_prop \l__xtemplate_key_name_tl
               \l__xtemplate_tmp_tl
             \__xtemplate_split_keytype_arg:o \l__xtemplate_tmp_tl
-            \msg_error:nnxxx { xtemplate } { unknown-choice }
+            \msg_error:nneee { xtemplate } { unknown-choice }
               { \l__xtemplate_key_name_tl } { \l__xtemplate_value_tl }
               { \l__xtemplate_keytype_arg_tl }
           }
@@ -906,7 +904,7 @@
       \l__xtemplate_tmp_tl
       { \tl_put_right:No \l__xtemplate_assignments_tl \l__xtemplate_tmp_tl }
   }
-\cs_generate_variant:Nn \__xtemplate_assign_choice_aux:nF { x }
+\cs_generate_variant:Nn \__xtemplate_assign_choice_aux:nF { e }
 \cs_new_protected:Npn \__xtemplate_assign_function:
   {
     \bool_if:NTF \l__xtemplate_global_bool
@@ -915,7 +913,7 @@
   }
 \cs_new_protected:Npn \__xtemplate_assign_function_aux:N #1
   {
-    \tl_put_right:Nx \l__xtemplate_assignments_tl
+    \tl_put_right:Ne \l__xtemplate_assignments_tl
       {
         \cs_generate_from_arg_count:NNnn
           \exp_not:o \l__xtemplate_var_tl
@@ -932,7 +930,7 @@
   }
 \cs_new_protected:Npn \__xtemplate_assign_instance_aux:N #1
   {
-    \tl_put_right:Nx \l__xtemplate_assignments_tl
+    \tl_put_right:Ne \l__xtemplate_assignments_tl
       {
         \exp_not:N #1 \exp_not:o \l__xtemplate_var_tl
           {
@@ -983,7 +981,7 @@
     \__xtemplate_if_key_value:oTF \l__xtemplate_value_tl
       {
         \__xtemplate_key_to_value:
-        \tl_put_right:Nx \l__xtemplate_assignments_tl
+        \tl_put_right:Ne \l__xtemplate_assignments_tl
           {
             #1 \exp_not:o \l__xtemplate_var_tl
               \exp_not:o \l__xtemplate_value_tl
@@ -990,7 +988,7 @@
           }
       }
       {
-        \tl_put_right:Nx \l__xtemplate_assignments_tl
+        \tl_put_right:Ne \l__xtemplate_assignments_tl
           {
             #2 \exp_not:o \l__xtemplate_var_tl
               { \exp_not:o \l__xtemplate_value_tl }
@@ -1007,7 +1005,7 @@
   {
     \__xtemplate_if_key_value:oT \l__xtemplate_value_tl
       { \__xtemplate_key_to_value: }
-    \tl_put_right:Nx \l__xtemplate_assignments_tl
+    \tl_put_right:Ne \l__xtemplate_assignments_tl
       {
         #1 \exp_not:o \l__xtemplate_var_tl
          { \exp_not:o \l__xtemplate_value_tl }
@@ -1017,7 +1015,7 @@
   { \exp_after:wN \__xtemplate_key_to_value_auxi:w \l__xtemplate_value_tl }
 \cs_new_protected:Npn \__xtemplate_key_to_value_auxi:w \KeyValue #1
   {
-    \tl_set:Nx \l__xtemplate_tmp_tl { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
+    \tl_set:Ne \l__xtemplate_tmp_tl { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
     \prop_get:NoNTF
       \l__xtemplate_vars_prop
       \l__xtemplate_tmp_tl
@@ -1027,7 +1025,7 @@
           \s__xtemplate_mark global \q__xtemplate_nil \s__xtemplate_stop
       }
       {
-        \msg_error:nnx { xtemplate } { unknown-attribute }
+        \msg_error:nne { xtemplate } { unknown-attribute }
           { \l__xtemplate_tmp_tl }
       }
   }
@@ -1046,7 +1044,7 @@
   {
     \str_if_eq:nnTF {#1} {#3}
       { \__xtemplate_use_template:nnn {#3} {#4} {#5} }
-      { \msg_error:nnxx { xtemplate } { type-mismatch } {#1} {#3} }
+      { \msg_error:nnee { xtemplate } { type-mismatch } {#1} {#3} }
 }
 \cs_new_protected:Npn \__xtemplate_use_instance_aux:nn #1#2
   {
@@ -1064,7 +1062,7 @@
           \__xtemplate_if_instance_exist:nnnTF {#1} { } {#2}
             { \use:c { \c__xtemplate_instances_root_tl #1 / / #2 } }
             {
-              \msg_error:nnxx { xtemplate } { unknown-instance }
+              \msg_error:nnee { xtemplate } { unknown-instance }
                 {#1} {#2}
             }
         }
@@ -1111,7 +1109,7 @@
   }
 \cs_new_protected:Npn \__xtemplate_show:Nnnn #1#2#3#4
   {
-    \msg_show:nnxxxx { xtemplate } { show-attribute }
+    \msg_show:nneeee { xtemplate } { show-attribute }
       { \tl_to_str:n {#2} }
       { \tl_to_str:n {#3} }
       { \tl_to_str:n {#4} }
@@ -1122,7 +1120,7 @@
     \__xtemplate_if_instance_exist:nnnT {#1} {#2} {#3}
       {
         \__xtemplate_recover_values:n { #1 / #2 / #3 }
-        \msg_show:nnxxxx { xtemplate } { show-values }
+        \msg_show:nneeee { xtemplate } { show-values }
           { \tl_to_str:n {#1} }
           { \tl_to_str:n {#2} }
           { \tl_to_str:n {#3} }



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