texlive[68106] Master/texmf-dist: l3kernel (30aug23)

commits+karl at tug.org commits+karl at tug.org
Wed Aug 30 01:21:00 CEST 2023


Revision: 68106
          http://tug.org/svn/texlive?view=revision&revision=68106
Author:   karl
Date:     2023-08-30 01:21:00 +0200 (Wed, 30 Aug 2023)
Log Message:
-----------
l3kernel (30aug23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
    trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-08-29 23:21:00 UTC (rev 68106)
@@ -7,6 +7,14 @@
 
 ## [Unreleased]
 
+## [2023-08-29]
+
+### Added
+- `\c_sys_timestamp_str`
+
+### Changed
+- Rename `\tex_pdfcreationdate:D` to `\tex_creationdate:D`
+
 ## [2023-08-11]
 
 ### Changed
@@ -1504,7 +1512,8 @@
 - Step functions have been added for dim variables,
   e.g. `\dim_step_inline:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-08-11...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-08-29...HEAD
+[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
 [2023-06-30]: https://github.com/latex3/latex3/compare/2023-06-16...2023-06-30

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.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-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2023-08-29 23:21:00 UTC (rev 68106)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-08-11}
+\date{Released 2023-08-29}
 
 \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-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2023-08-29 23:21:00 UTC (rev 68106)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-08-11}
+\date{Released 2023-08-29}
 
 \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-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2023-08-29 23:21:00 UTC (rev 68106)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-08-11}
+\date{Released 2023-08-29}
 
 \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-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2023-08-29 23:21:00 UTC (rev 68106)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-08-11}
+\date{Released 2023-08-29}
 
 \pagenumbering{roman}
 \maketitle

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

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -85,7 +85,7 @@
 %    require you to do updates, if the class changes.}}
 %
 % \author{\Team}
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -126,7 +126,8 @@
 %   the \meta{false code} is inserted into the input stream.
 % \end{function}
 %
-% \begin{function}[updated = 2012-02-09]{\iow_open:Nn, \iow_open:cn}
+% \begin{function}[updated = 2012-02-09]
+%   {\iow_open:Nn, \iow_open:NV, \iow_open:cn, \iow_open:cV}
 %   \begin{syntax}
 %     \cs{iow_open:Nn} \meta{stream} \Arg{file name}
 %   \end{syntax}
@@ -446,7 +447,8 @@
 %
 % \subsection{Writing to files}
 %
-% \begin{function}[updated = 2012-06-05]{\iow_now:Nn, \iow_now:Nx, \iow_now:cn, \iow_now:cx}
+% \begin{function}[updated = 2012-06-05]
+%   {\iow_now:Nn, \iow_now:NV, \iow_now:Nx, \iow_now:cn, \iow_now:cV, \iow_now:cx}
 %   \begin{syntax}
 %     \cs{iow_now:Nn} \meta{stream} \Arg{tokens}
 %   \end{syntax}
@@ -703,7 +705,7 @@
 %   \end{texnote}
 % \end{variable}
 %
-% \begin{function}[TF, updated = 2012-02-10]{\file_if_exist:n}
+% \begin{function}[TF, updated = 2012-02-10]{\file_if_exist:n, \file_if_exist:V}
 %   \begin{syntax}
 %     \cs{file_if_exist:nTF} \Arg{file name} \Arg{true code} \Arg{false code}
 %   \end{syntax}
@@ -922,7 +924,7 @@
 % \end{function}
 %
 %
-% \begin{function}[updated = 2017-06-26]{\file_input:n}
+% \begin{function}[updated = 2017-06-26]{\file_input:n, \file_input:V}
 %   \begin{syntax}
 %     \cs{file_input:n} \Arg{file name}
 %   \end{syntax}
@@ -1634,7 +1636,7 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\iow_open:Nn, \iow_open:cn}
+% \begin{macro}{\iow_open:Nn, \iow_open:NV, \iow_open:cn, \iow_open:cV}
 % \begin{macro}{\@@_open_stream:Nn, \@@_open_stream:NV}
 %   The same idea as for reading, but without the path and without the need
 %   to allow for a conditional version.
@@ -1652,7 +1654,7 @@
         \@@_open_stream:NV #1 \l_@@_file_name_tl
       }
   }
-\cs_generate_variant:Nn \iow_open:Nn { c }
+\cs_generate_variant:Nn \iow_open:Nn { NV , c , cV }
 \cs_new_protected:Npn \@@_open_stream:Nn #1#2
   {
     \tex_global:D \tex_chardef:D #1 = \l_@@_stream_tl \scan_stop:
@@ -1798,7 +1800,11 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\iow_now:Nn, \iow_now:Nx, \iow_now:cn, \iow_now:cx}
+% \begin{macro}
+%   {
+%     \iow_now:Nn, \iow_now:NV, \iow_now:Nx,
+%     \iow_now:cn, \iow_now:cV, \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
 %   instead. If the first argument is no output stream at all, we get an
@@ -1816,7 +1822,7 @@
     \__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 { c, Nx, cx }
+\cs_generate_variant:Nn \iow_now:Nn { NV , Nx , c , cV , cx }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3308,7 +3314,7 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[TF]{\file_if_exist:n}
+% \begin{macro}[TF]{\file_if_exist:n, \file_if_exist:V}
 %   The test for the existence of a file is a wrapper around the function to
 %   add a path to a file. If the file was found, the path contains
 %   something, whereas if the file was not located then the return value
@@ -3320,6 +3326,7 @@
       { \prg_return_true: }
       { \prg_return_false: }
   }
+\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3360,7 +3367,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\file_input:n}
+% \begin{macro}{\file_input:n, \file_input:V}
 % \begin{macro}{\@@_input:n, \@@_input:V}
 % \begin{macro}{\@@_input_push:n, \__kernel_file_input_push:n}
 % \begin{macro}{\@@_input_pop:, \__kernel_file_input_pop:}
@@ -3376,6 +3383,7 @@
       { \@@_input:V \l_@@_full_name_tl }
       { \__kernel_file_missing:n {#1} }
   }
+\cs_generate_variant:Nn \file_input:n { V }
 \cs_new_protected:Npx \@@_input:n #1
   {
     \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist
@@ -3751,7 +3759,7 @@
 %    \begin{macrocode}
     \tex_endinput:D
   }
-%    \begin{macrocode}
+%    \end{macrocode}
 %
 %   Now define the actual error message:
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

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

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

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -404,7 +404,7 @@
       \exp:w \exp_end_continue_f:w \@@_parse:n {#3}
   }
 \cs_generate_variant:Nn \fp_step_function:nnnN { nnnc }
-%      \end{macrocode}
+%    \end{macrocode}
 %   Only floating point numbers (not tuples) are allowed arguments.
 %   Only \enquote{normal} floating points (not $\pm 0$,
 %   $\pm\texttt{inf}$, \texttt{nan}) can be used as step; if positive,

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

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

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -688,7 +688,7 @@
 % Integers can be placed into the output stream with formatting. These
 % conversions apply to any integer expressions.
 %
-% \begin{function}[updated = 2011-10-22, EXP]{\int_to_arabic:n}
+% \begin{function}[updated = 2011-10-22, EXP]{\int_to_arabic:n, \int_to_arabic:v}
 %   \begin{syntax}
 %     \cs{int_to_arabic:n} \Arg{int expr}
 %   \end{syntax}
@@ -2024,11 +2024,12 @@
 %
 % \subsection{Formatting integers}
 %
-% \begin{macro}{\int_to_arabic:n}
+% \begin{macro}{\int_to_arabic:n, \int_to_arabic:v}
 % \UnitTested
 %   Nothing exciting here.
 %    \begin{macrocode}
 \cs_new_eq:NN \int_to_arabic:n \int_eval:n
+\cs_generate_variant:Nn \int_to_arabic:n { v }
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -985,7 +985,8 @@
 % \end{verbatim}
 % are treated identically.
 %
-% \begin{function}[rEXP, added=2020-12-19, updated = 2021-05-10]{\keyval_parse:nnn}
+% \begin{function}[rEXP, added=2020-12-19, updated = 2021-05-10]
+%   {\keyval_parse:nnn, \keyval_parse:nnV, \keyval_parse:nnv}
 %   \begin{syntax}
 %     \cs{keyval_parse:nnn} \Arg{code_1} \Arg{code_2} \Arg{key--value list}
 %   \end{syntax}
@@ -1023,7 +1024,8 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[rEXP, updated = 2021-05-10]{\keyval_parse:NNn}
+% \begin{function}[rEXP, updated = 2021-05-10]
+%   {\keyval_parse:NNn, \keyval_parse:NNV, \keyval_parse:NNv}
 %   \begin{syntax}
 %     \cs{keyval_parse:NNn} \meta{function_1} \meta{function_2} \Arg{key--value list}
 %   \end{syntax}
@@ -1114,7 +1116,11 @@
     {
 %    \end{macrocode}
 %
-% \begin{macro}[EXP]{\keyval_parse:nnn, \keyval_parse:NNn}
+% \begin{macro}[EXP]
+%   {
+%     \keyval_parse:nnn, \keyval_parse:nnV, \keyval_parse:nnv,
+%     \keyval_parse:NNn, \keyval_parse:NNV, \keyval_parse:NNv
+%   }
 %   The main function starts the first of two loops. The outer loop splits the
 %   key--value list at active commas, the inner loop will do so at other commas.
 %   The use of \cs{s_@@_mark} here prevents loss of braces from the key
@@ -1379,6 +1385,8 @@
   \char_set_catcode_active:n { `\= }
   \@@_tmp:w , =
 \group_end:
+\cs_generate_variant:Nn \keyval_parse:NNn { NNV , NNv }
+\cs_generate_variant:Nn \keyval_parse:nnn { nnV , nnv }
 %    \end{macrocode}
 %
 % \begin{macro}[EXP]{\@@_pair:nnnn, \@@_key:nn}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -103,7 +103,11 @@
 % although in general this may be confusing; simply writing the messages
 % using |~| characters is the method favored by the team.
 %
-% \begin{function}[updated = 2011-08-16]{\msg_new:nnnn, \msg_new:nnn}
+% \begin{function}[updated = 2011-08-16]
+%   {
+%     \msg_new:nnnn, \msg_new:nnxx,
+%     \msg_new:nnn, \msg_new:nnx
+%   }
 %   \begin{syntax}
 %     \cs{msg_new:nnnn} \Arg{module} \Arg{message} \Arg{text} \Arg{more text}
 %   \end{syntax}
@@ -312,9 +316,15 @@
 %     \msg_fatal:nnnn   ,
 %     \msg_fatal:nnn    ,
 %     \msg_fatal:nn     ,
+%     \msg_fatal:nnVV   ,
+%     \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
 %   }
 %   \begin{syntax}
@@ -333,9 +343,15 @@
 %     \msg_critical:nnnn   ,
 %     \msg_critical:nnn    ,
 %     \msg_critical:nn     ,
+%     \msg_critical:nnVV   ,
+%     \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
 %   }
 %   \begin{syntax}
@@ -360,9 +376,15 @@
 %     \msg_error:nnnn   ,
 %     \msg_error:nnn    ,
 %     \msg_error:nn     ,
+%     \msg_error:nnVV   ,
+%     \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
 %   }
 %   \begin{syntax}
@@ -380,10 +402,17 @@
 %     \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
 %   }
 %   \begin{syntax}
@@ -402,9 +431,15 @@
 %     \msg_note:nnnn   ,
 %     \msg_note:nnn    ,
 %     \msg_note:nn     ,
+%     \msg_note:nnVV   ,
+%     \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_info:nnnnnn ,
 %     \msg_info:nnnnn  ,
@@ -411,9 +446,15 @@
 %     \msg_info:nnnn   ,
 %     \msg_info:nnn    ,
 %     \msg_info:nn     ,
+%     \msg_info:nnVV   ,
+%     \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
 %   }
 %   \begin{syntax}
@@ -435,9 +476,15 @@
 %     \msg_term:nnnn   ,
 %     \msg_term:nnn    ,
 %     \msg_term:nn     ,
+%     \msg_term:nnVV   ,
+%     \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_log:nnnnnn ,
 %     \msg_log:nnnnn  ,
@@ -444,9 +491,15 @@
 %     \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
 %   }
 %   \begin{syntax}
@@ -468,9 +521,15 @@
 %     \msg_none:nnnn   ,
 %     \msg_none:nnn    ,
 %     \msg_none:nn     ,
+%     \msg_none:nnVV   ,
+%     \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
 %   }
 %   \begin{syntax}
@@ -489,9 +548,15 @@
 %     \msg_show:nnnn   ,
 %     \msg_show:nnn    ,
 %     \msg_show:nn     ,
+%     \msg_show:nnVV   ,
+%     \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
 %   }
 %   \begin{syntax}
@@ -740,7 +805,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\msg_new:nnnn, \msg_new:nnn}
+% \begin{macro}{\msg_new:nnnn, \msg_new:nnxx, \msg_new:nnn, \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
@@ -751,8 +816,10 @@
     \@@_chk_free:nn {#1} {#2}
     \msg_gset:nnnn {#1} {#2}
   }
+\cs_generate_variant:Nn \msg_new:nnnn { 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_new_protected:Npn \msg_set:nnnn #1#2#3#4
   {
     \cs_set:cpn { \c_@@_text_prefix_tl #1 / #2 }
@@ -1113,6 +1180,9 @@
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } }
       \cs_new_protected:cpx { 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
@@ -1139,9 +1209,15 @@
 %     \msg_fatal:nnnn   ,
 %     \msg_fatal:nnn    ,
 %     \msg_fatal:nn     ,
+%     \msg_fatal:nnVV   ,
+%     \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
 %   }
 %  \begin{macro}{\@@_fatal_exit:}
@@ -1173,9 +1249,15 @@
 %     \msg_critical:nnnn   ,
 %     \msg_critical:nnn    ,
 %     \msg_critical:nn     ,
+%     \msg_critical:nnVV   ,
+%     \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
 %   }
 %   Not quite so bad: just end the current file.
@@ -1198,9 +1280,15 @@
 %     \msg_error:nnnn   ,
 %     \msg_error:nnn    ,
 %     \msg_error:nn     ,
+%     \msg_error:nnVV   ,
+%     \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
 %   }
 %   For an error, the interrupt routine is called.  We check if there is
@@ -1229,9 +1317,15 @@
 %     \msg_warning:nnnn   ,
 %     \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_note:nnnnnn ,
 %     \msg_note:nnnnn  ,
@@ -1238,9 +1332,15 @@
 %     \msg_note:nnnn   ,
 %     \msg_note:nnn    ,
 %     \msg_note:nn     ,
+%     \msg_note:nnVV   ,
+%     \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_info:nnnnnn ,
 %     \msg_info:nnnnn  ,
@@ -1247,9 +1347,15 @@
 %     \msg_info:nnnn   ,
 %     \msg_info:nnn    ,
 %     \msg_info:nn     ,
+%     \msg_info:nnVV   ,
+%     \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    ,
 %   }
 %   Warnings and information messages have no decoration.  Warnings are
@@ -1303,9 +1409,15 @@
 %     \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  ,
@@ -1312,9 +1424,15 @@
 %     \msg_term:nnnn   ,
 %     \msg_term:nnn    ,
 %     \msg_term:nn     ,
+%     \msg_term:nnVV   ,
+%     \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    ,
 %   }
 %   \enquote{Log} data is very similar to information, but with no extras
@@ -1345,9 +1463,15 @@
 %     \msg_none:nnnn   ,
 %     \msg_none:nnn    ,
 %     \msg_none:nn     ,
+%     \msg_none:nnVV   ,
+%     \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
 %   }
 %   The \texttt{none} message type is needed so that input can be gobbled.
@@ -1363,9 +1487,15 @@
 %     \msg_show:nnnn   ,
 %     \msg_show:nnn    ,
 %     \msg_show:nn     ,
+%     \msg_show:nnVV   ,
+%     \msg_show:nnVn   ,
+%     \msg_show:nnnV   ,
+%     \msg_show:nnV    ,
 %     \msg_show:nnxxxx ,
 %     \msg_show:nnxxx  ,
+%     \msg_show:nnnxx  ,
 %     \msg_show:nnxx   ,
+%     \msg_show:nnx    ,
 %     \msg_show:nnx
 %   }
 % \begin{macro}{\@@_show:n, \@@_show:w, \@@_show_dot:w, \@@_show:nn}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -533,7 +533,6 @@
   \@@_primitive:NN \pdfcompresslevel      \tex_pdfcompresslevel:D
   \@@_primitive:NN \pdfcolorstack         \tex_pdfcolorstack:D
   \@@_primitive:NN \pdfcolorstackinit     \tex_pdfcolorstackinit:D
-  \@@_primitive:NN \pdfcreationdate       \tex_pdfcreationdate:D
   \@@_primitive:NN \pdfdecimaldigits      \tex_pdfdecimaldigits:D
   \@@_primitive:NN \pdfdest               \tex_pdfdest:D
   \@@_primitive:NN \pdfdestmargin         \tex_pdfdestmargin:D
@@ -627,6 +626,7 @@
   \@@_primitive:NN \pdfadjustspacing      \tex_adjustspacing:D
   \@@_primitive:NN \pdfappendkern         \tex_appendkern:D
   \@@_primitive:NN \pdfcopyfont           \tex_copyfont:D
+  \@@_primitive:NN \pdfcreationdate       \tex_creationdate:D
   \@@_primitive:NN \pdfdraftmode          \tex_draftmode:D
   \@@_primitive:NN \pdfeachlinedepth      \tex_eachlinedepth:D
   \@@_primitive:NN \pdfeachlineheight     \tex_eachlineheight:D

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -167,16 +167,16 @@
 %   {
 %     \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:Noo,  \prop_put:Nxx,
+%     \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:coo,  \prop_put:cxx,
+%     \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:Noo, \prop_gput:Nxx,
+%     \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:coo, \prop_gput:cxx
+%     \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx
 %   }
 %   \begin{syntax}
 %     \cs{prop_put:Nnn} \meta{property list} \Arg{key} \Arg{value}
@@ -250,8 +250,9 @@
 %
 % \begin{function}[updated = 2011-08-28]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN,
+%     \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:cnc
 %   }
 %   \begin{syntax}
 %     \cs{prop_get:NnN} \meta{property list} \Arg{key} \meta{tl var}
@@ -294,7 +295,11 @@
 %   the \meta{token list variable} is local.  See also \cs{prop_gpop:NnNTF}.
 % \end{function}
 %
-% \begin{function}[added = 2014-07-17, EXP]{\prop_item:Nn, \prop_item:cn}
+% \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
+%   }
 %   \begin{syntax}
 %     \cs{prop_item:Nn} \meta{property list} \Arg{key}
 %   \end{syntax}
@@ -399,8 +404,9 @@
 %
 % \begin{function}[updated = 2012-05-19, TF]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN
+%     \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:cnc
 %   }
 %   \begin{syntax}
 %     \cs{prop_get:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \\
@@ -982,8 +988,9 @@
 %
 % \begin{macro}[tested = m3prop002]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NoN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:coN
+%     \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:cnc
 %   }
 %   Getting an item from a list is very easy: after splitting,
 %   if the key is in the property list, just set the token list variable
@@ -995,8 +1002,8 @@
       { \tl_set:Nn #3 {##2} }
       { \tl_set:Nn #3 { \q_no_value } }
   }
-\cs_generate_variant:Nn \prop_get:NnN {     NV , Nv , No }
-\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co }
+\cs_generate_variant:Nn \prop_get:NnN {     NV , Nv , No , Nx }
+\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co , cx , cnc }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1035,7 +1042,11 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[EXP]{\prop_item:Nn, \prop_item:cn}
+% \begin{macro}[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
+%   }
 % \begin{macro}[EXP]{\@@_item:nnn}
 %   Getting the value corresponding to a key in a property list in an
 %   expandable fashion simply uses \cs{prop_map_tokens:Nn} to go through
@@ -1053,7 +1064,7 @@
     \str_if_eq:eeT {#1} {#2}
       { \prop_map_break:n { \exp_not:n {#3} } }
   }
-\cs_generate_variant:Nn \prop_item:Nn { c }
+\cs_generate_variant:Nn \prop_item:Nn { NV , No , Ne , c , cV , co , ce }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1154,19 +1165,19 @@
 %   {
 %     \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:Noo, \prop_put:Nxx,
+%     \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:coo, \prop_put:cxx
+%     \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \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_hput:NVx, \prop_hput:Nvx,
-%     \prop_gput:Non, \prop_gput:Noo, \prop_gput:Nxx,
+%     \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:coo, \prop_gput:cxx
+%     \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx
 %   }
 % \begin{macro}{\@@_put:NNnn}
 %   Since the branches of \cs{@@_split:NnTF} are used as the replacement
@@ -1196,13 +1207,13 @@
       { #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 , Noo , Nxx }
+  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
 \cs_generate_variant:Nn \prop_put:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1307,8 +1318,9 @@
 %
 % \begin{macro}[TF, tested = m3prop004]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NoN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:coN
+%     \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:cnc
 %   }
 %   Getting the value corresponding to a key, keeping track of whether
 %   the key was present or not, is implemented as a conditional (with
@@ -1324,7 +1336,7 @@
       { \prg_return_false: }
   }
 \prg_generate_conditional_variant:Nnn \prop_get:NnN
-  { NV , Nv , No , c , cV , cv , co } { T , F , TF }
+  { NV , Nv , No , Nx , c , cV , cv , co , cx , cnc } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -587,7 +587,11 @@
 % while the later require a compiled expression as generated by
 % \cs{regex_set:Nn}.
 %
-% \begin{function}[TF, added = 2017-05-26]{\regex_match:nn, \regex_match:Nn}
+% \begin{function}[TF, added = 2017-05-26]
+%   {
+%     \regex_match:nn, \regex_match:nV,
+%     \regex_match:Nn, \regex_match:NV
+%   }
 %   \begin{syntax}
 %     \cs{regex_match:nnTF} \Arg{regex} \Arg{token list} \Arg{true code} \Arg{false code}
 %   \end{syntax}
@@ -600,7 +604,11 @@
 %   leaves \texttt{TRUE} then \texttt{FALSE} in the input stream.
 % \end{function}
 %
-% \begin{function}[added = 2017-05-26]{\regex_count:nnN, \regex_count:NnN}
+% \begin{function}[added = 2017-05-26]
+%   {
+%     \regex_count:nnN, \regex_count:nVN,
+%     \regex_count:NnN, \regex_count:NVN
+%   }
 %   \begin{syntax}
 %     \cs{regex_count:nnN} \Arg{regex} \Arg{token list} \meta{int var}
 %   \end{syntax}
@@ -657,7 +665,10 @@
 % \section{Submatch extraction}
 %
 % \begin{function}[noTF, added = 2017-05-26]
-%   {\regex_extract_once:nnN, \regex_extract_once:NnN}
+%   {
+%     \regex_extract_once:nnN, \regex_extract_once:nVN,
+%     \regex_extract_once:NVN, \regex_extract_once:NVN
+%   }
 %   \begin{syntax}
 %     \cs{regex_extract_once:nnN} \Arg{regex} \Arg{token list} \meta{seq~var}
 %     \cs{regex_extract_once:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
@@ -688,7 +699,10 @@
 % \end{function}
 %
 % \begin{function}[noTF, added = 2017-05-26]
-%   {\regex_extract_all:nnN, \regex_extract_all:NnN}
+%   {
+%     \regex_extract_all:nnN, \regex_extract_all:nVN,
+%     \regex_extract_all:NnN, \regex_extract_all:NVN
+%   }
 %   \begin{syntax}
 %     \cs{regex_extract_all:nnN} \Arg{regex} \Arg{token list} \meta{seq~var}
 %     \cs{regex_extract_all:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
@@ -711,7 +725,11 @@
 %   and the \texttt{true} branch is left in the input stream.
 % \end{function}
 %
-% \begin{function}[noTF, added = 2017-05-26]{\regex_split:nnN, \regex_split:NnN}
+% \begin{function}[noTF, added = 2017-05-26]
+%   {
+%     \regex_split:nnN, \regex_split:nVN,
+%     \regex_split:NnN, \regex_split:NVN,
+%   }
 %   \begin{syntax}
 %     \cs{regex_split:nnN} \Arg{regular expression} \Arg{token list} \meta{seq~var}
 %     \cs{regex_split:nnNTF} \Arg{regular expression} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code}
@@ -740,7 +758,10 @@
 % \section{Replacement}
 %
 % \begin{function}[noTF, added = 2017-05-26]
-%   {\regex_replace_once:nnN,\regex_replace_once:NnN}
+%   {
+%     \regex_replace_once:nnN,\regex_replace_once:nVN,
+%     \regex_replace_once:NnN,\regex_replace_once:NVN
+%   }
 %   \begin{syntax}
 %     \cs{regex_replace_once:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var}
 %     \cs{regex_replace_once:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code}
@@ -754,7 +775,10 @@
 % \end{function}
 %
 % \begin{function}[noTF, added = 2017-05-26]
-%   {\regex_replace_all:nnN, \regex_replace_all:NnN}
+%   {
+%     \regex_replace_all:nnN,\regex_replace_all:nVN,
+%     \regex_replace_all:NnN,\regex_replace_all:NVN
+%   }
 %   \begin{syntax}
 %     \cs{regex_replace_all:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var}
 %     \cs{regex_replace_all:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code}
@@ -6518,7 +6542,11 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[TF]{\regex_match:nn, \regex_match:Nn}
+% \begin{macro}[TF]
+%   {
+%     \regex_match:nn, \regex_match:nV,
+%     \regex_match:Nn, \regex_match:NV
+%   }
 %   Those conditionals are based on a common auxiliary defined
 %   later. Its first argument builds the \textsc{nfa} corresponding to
 %   the regex, and the second argument is the query token list. Once we
@@ -6530,15 +6558,18 @@
     \@@_if_match:nn { \@@_build:n {#1} } {#2}
     \@@_return:
   }
+\prg_generate_conditional_variant:Nnn \regex_match:nn { nV } { T , F , TF }
 \prg_new_protected_conditional:Npnn \regex_match:Nn #1#2 { T , F , TF }
   {
     \@@_if_match:nn { \@@_build:N #1 } {#2}
     \@@_return:
   }
+\prg_generate_conditional_variant:Nnn \regex_match:Nn { NV } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\regex_count:nnN, \regex_count:NnN}
+% \begin{macro}
+%   {\regex_count:nnN, \regex_count:nVN, \regex_count:NnN, \regex_count:NVN}
 %   Again, use an auxiliary whose first argument builds the \textsc{nfa}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \regex_count:nnN #1
@@ -6545,6 +6576,8 @@
   { \@@_count:nnN { \@@_build:n {#1} } }
 \cs_new_protected:Npn \regex_count:NnN #1
   { \@@_count:nnN { \@@_build:N #1 } }
+\cs_generate_variant:Nn \regex_count:nnN { nV }
+\cs_generate_variant:Nn \regex_count:NnN { NV }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -6573,11 +6606,16 @@
 %
 % \begin{macro}[noTF]
 %   {
-%     \regex_extract_once:nnN, \regex_extract_once:NnN,
-%     \regex_extract_all:nnN,  \regex_extract_all:NnN,
-%     \regex_replace_once:nnN, \regex_replace_once:NnN,
-%     \regex_replace_all:nnN,  \regex_replace_all:NnN,
-%     \regex_split:nnN,        \regex_split:NnN
+%     \regex_extract_once:nnN, \regex_extract_once:nVN,
+%     \regex_extract_once:NnN, \regex_extract_once:NVN,
+%     \regex_extract_all:nnN,  \regex_extract_all:nVN,
+%     \regex_extract_all:NnN,  \regex_extract_all:NVN,
+%     \regex_replace_once:nnN, \regex_replace_once:nVN,
+%     \regex_replace_once:NnN, \regex_replace_once:NVN,
+%     \regex_replace_all:nnN,  \regex_replace_all:nVN,
+%     \regex_replace_all:NnN,  \regex_replace_all:NVN,
+%     \regex_split:NnN,        \regex_split:NVN,
+%     \regex_split:nnN,        \regex_split:nVN
 %   }
 %   We define here $40$ user functions, following a common pattern in
 %   terms of \texttt{:nnN} auxiliaries, defined in the coming
@@ -6595,6 +6633,11 @@
       { #1 { \@@_build:n {##1} } {##2} ##3 \@@_return: }
     \prg_new_protected_conditional:Npnn #3 ##1##2##3 { T , F , TF }
       { #1 { \@@_build:N  ##1  } {##2} ##3 \@@_return: }
+    \cs_generate_variant:Nn #2 { nV }
+    \prg_generate_conditional_variant:Nnn #2 { nV } { T , F , TF }
+    \cs_generate_variant:Nn #3 { NV }
+    \prg_generate_conditional_variant:Nnn #3 { NV } { T , F , TF }
+
   }
 \@@_tmp:w \@@_extract_once:nnN
   \regex_extract_once:nnN \regex_extract_once:NnN

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -126,8 +126,12 @@
 %
 % \begin{function}[added = 2011-08-15, updated = 2012-07-02]
 %   {
-%     \seq_set_split:Nnn , \seq_set_split:NnV ,
-%     \seq_gset_split:Nnn, \seq_gset_split:NnV
+%     \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_gset_split:Nnn,
+%     \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV,
+%     \seq_gset_split:Nnx , \seq_gset_split:Nxx
 %   }
 %   \begin{syntax}
 %     \cs{seq_set_split:Nnn} \meta{seq~var} \Arg{delimiter} \Arg{token list}
@@ -304,7 +308,11 @@
 %   the special marker \cs{q_no_value}.
 % \end{function}
 %
-% \begin{function}[added = 2014-07-17, EXP]{\seq_item:Nn, \seq_item:cn}
+% \begin{function}[added = 2014-07-17, EXP]
+%   {
+%     \seq_item:Nn, \seq_item:NV, \seq_item:Ne,
+%     \seq_item:cn, \seq_item:cV, \seq_item:ce
+%   }
 %   \begin{syntax}
 %     \cs{seq_item:Nn} \meta{seq~var} \Arg{integer expression}
 %   \end{syntax}
@@ -463,8 +471,10 @@
 %
 % \begin{function}
 %   {
-%     \seq_remove_all:Nn , \seq_remove_all:cn,
-%     \seq_gremove_all:Nn, \seq_gremove_all:cn
+%     \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
 %   }
 %   \begin{syntax}
 %     \cs{seq_remove_all:Nn} \meta{seq~var} \Arg{item}
@@ -1266,8 +1276,12 @@
 %
 % \begin{macro}
 %   {
-%     \seq_set_split:Nnn , \seq_set_split:NnV ,
-%     \seq_gset_split:Nnn, \seq_gset_split:NnV
+%     \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_gset_split:Nnn,
+%     \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV,
+%     \seq_gset_split:Nnx, \seq_gset_split:Nxx
 %   }
 % \begin{macro}
 %   {
@@ -1340,8 +1354,8 @@
   }
 \cs_new:Npn \@@_set_split:w #1 \@@_set_split_end:
   { \@@_wrap_item:n {#1} }
-\cs_generate_variant:Nn \seq_set_split:Nnn  { NnV }
-\cs_generate_variant:Nn \seq_gset_split:Nnn { NnV }
+\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_keep_spaces:Nnn  { NnV }
 \cs_generate_variant:Nn \seq_gset_split_keep_spaces:Nnn { NnV }
 %    \end{macrocode}
@@ -1499,9 +1513,17 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\seq_remove_all:Nn, \seq_remove_all:cn}
+% \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
+%   }
 % \UnitTested
-% \begin{macro}{\seq_gremove_all:Nn, \seq_gremove_all:cn}
+% \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
+%   }
 % \UnitTested
 % \begin{macro}{\@@_remove_all_aux:NNn}
 %   The idea of the code here is to avoid a relatively expensive addition of
@@ -1542,8 +1564,8 @@
     #1 #2 {#2}
     \@@_pop_item_def:
   }
-\cs_generate_variant:Nn \seq_remove_all:Nn  { c }
-\cs_generate_variant:Nn \seq_gremove_all:Nn { c }
+\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 }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2047,7 +2069,8 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\seq_item:Nn, \seq_item:cn}
+% \begin{macro}
+%   {\seq_item:Nn, \seq_item:NV, \seq_item:Ne, \seq_item:cn, \seq_item:cV, \seq_item:ce}
 % \begin{macro}{\@@_item:wNn, \@@_item:nN, \@@_item:nwn}
 %   The idea here is to find the offset of the item from the left, then use
 %   a loop to grab the correct item. If the resulting offset is too large,
@@ -2077,7 +2100,7 @@
       { \prg_break:n { \exp_not:n {#3} } }
       { \exp_args:Nf \@@_item:nwn { \int_eval:n { #1 - 1 } } }
   }
-\cs_generate_variant:Nn \seq_item:Nn { c }
+\cs_generate_variant:Nn \seq_item:Nn { NV , Ne , c , cV , ce }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -283,7 +283,10 @@
 % \end{function}
 %
 % \begin{function}[added = 2013-07-24, updated = 2022-03-21, EXP, noTF]
-%   {\str_case:nn, \str_case:Vn, \str_case:Nn, \str_case:on, \str_case:nV, \str_case:nv}
+%   {
+%     \str_case:nn, \str_case:Vn, \str_case:Nn, \str_case:on, \str_case:en,
+%     \str_case:nV, \str_case:nv
+%   }
 %   \begin{syntax}
 %     \cs{str_case:nnTF} \Arg{test string} \\
 %     ~~|{| \\
@@ -1228,7 +1231,10 @@
 % \end{macro}
 %
 % \begin{macro}[EXP, noTF]
-%   {\str_case:nn, \str_case:Vn, \str_case:Nn, \str_case:on, \str_case:nV, \str_case:nv, \str_case_e:nn}
+%   {
+%     \str_case:nn, \str_case:Vn, \str_case:Nn, \str_case:on, \str_case:en, \str_case:nV, \str_case:nv,
+%     \str_case_e:nn
+%   }
 % \begin{macro}[EXP]{\@@_case:nnTF, \@@_case_e:nnTF}
 % \begin{macro}[EXP]
 %   {\@@_case:nw, \@@_case_e:nw, \@@_case_end:nw}
@@ -1257,7 +1263,7 @@
   }
 \cs_new:Npn \@@_case:nnTF #1#2#3#4
   { \@@_case:nw {#1} #2 {#1} { } \s_@@_mark {#3} \s_@@_mark {#4} \s_@@_stop }
-\cs_generate_variant:Nn \str_case:nn   { V , o , nV , nv }
+\cs_generate_variant:Nn \str_case:nn   { V , o , e , nV , nv }
 \prg_generate_conditional_variant:Nnn \str_case:nn
   { V , o , nV , nv } { T , F , TF }
 \cs_new_eq:NN \str_case:Nn   \str_case:Vn

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -79,6 +79,11 @@
 %   \end{texnote}
 % \end{variable}
 %
+% \begin{variable}[added = 2023-08-27]{\c_sys_timestamp_str}
+%   The timestamp for the current job: the format is as described for
+%   \cs{file_timestamp:n}.
+% \end{variable}
+%
 % \section{Engine}
 %
 % \begin{function}[added = 2015-09-07, EXP, pTF]
@@ -928,6 +933,23 @@
 %    \end{macrocode}
 % \end{variable}
 %
+% \begin{variable}{\c_sys_timestamp_str}
+%   A simple expansion: Lua\TeX{} chokes if we use \tn{pdffeedback} here,
+%   hence the direct use of Lua. Notice that the function there is in the
+%   \texttt{pdf} library but isn actually tied to PDF.
+%    \begin{macrocode}
+\@@_everyjob:n
+  {
+    \str_const:Nx \c_sys_timestamp_str
+      {
+        \cs_if_exist:NTF \tex_directlua:D
+          { \tex_directlua:D { tex.print(pdf.getcreationdate()) } }
+          { \tex_creationdate:D }
+      }
+  }
+%    \end{macrocode}
+% \end{variable}
+%
 % \subsubsection{Random numbers}
 %
 % \begin{macro}[EXP]{\sys_rand_seed:}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -177,10 +177,10 @@
 %
 % \begin{function}
 %   {
-%     \tl_put_left:Nn,  \tl_put_left:NV,  \tl_put_left:No,  \tl_put_left:Nx,
-%     \tl_put_left:cn,  \tl_put_left:cV,  \tl_put_left:co,  \tl_put_left:cx,
-%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:No, \tl_gput_left:Nx,
-%     \tl_gput_left:cn, \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: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
 %   }
 %   \begin{syntax}
 %     \cs{tl_put_left:Nn} \meta{tl~var} \Arg{tokens}
@@ -191,12 +191,10 @@
 %
 % \begin{function}
 %   {
-%     \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:No, \tl_put_right:Nx,
-%     \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:co, \tl_put_right:cx,
-%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:No,
-%     \tl_gput_right:Nx,
-%     \tl_gput_right:cn, \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: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
 %   }
 %   \begin{syntax}
 %     \cs{tl_put_right:Nn} \meta{tl~var} \Arg{tokens}
@@ -230,7 +228,7 @@
 % \end{function}
 %
 % \begin{function}[added = 2012-05-24, updated = 2012-06-05, EXP,pTF]
-%   {\tl_if_empty:n, \tl_if_empty:V, \tl_if_empty:o}
+%   {\tl_if_empty:n, \tl_if_empty:V, \tl_if_empty:o, \tl_if_empty:e}
 %   \begin{syntax}
 %     \cs{tl_if_empty_p:n} \Arg{token list}
 %     \cs{tl_if_empty:nTF} \Arg{token list} \Arg{true code} \Arg{false code}
@@ -270,7 +268,8 @@
 %   category codes are not important.
 % \end{function}
 %
-% \begin{function}[TF]{\tl_if_eq:nn}
+% \begin{function}[TF]
+%   {\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx}
 %   \begin{syntax}
 %     \cs{tl_if_eq:nnTF} \Arg{token list_1} \Arg{token list_2} \Arg{true code} \Arg{false code}
 %   \end{syntax}
@@ -281,7 +280,7 @@
 %   or \cs{str_if_eq:nnTF} if category codes are not important.
 % \end{function}
 %
-% \begin{function}[TF]{\tl_if_in:Nn, \tl_if_in:cn}
+% \begin{function}[TF]{\tl_if_in:Nn, \tl_if_in:NV, \tl_if_in:cn, \tl_if_in:cV}
 %   \begin{syntax}
 %     \cs{tl_if_in:NnTF} \meta{tl~var} \Arg{token list} \Arg{true code} \Arg{false code}
 %   \end{syntax}
@@ -293,7 +292,7 @@
 % \end{function}
 %
 % \begin{function}[TF]
-%   {\tl_if_in:nn, \tl_if_in:Vn, \tl_if_in:on, \tl_if_in:no}
+%   {\tl_if_in:nn, \tl_if_in:Vn, \tl_if_in:nV, \tl_if_in:on, \tl_if_in:no}
 %   \begin{syntax}
 %     \cs{tl_if_in:nnTF} \Arg{token list_1} \Arg{token list_2} \Arg{true code} \Arg{false code}
 %   \end{syntax}
@@ -438,7 +437,8 @@
 %
 % \subsection{Using token lists}
 %
-% \begin{function}[EXP]{\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v}
+% \begin{function}[EXP]
+%   {\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v, \tl_to_str:e}
 %   \begin{syntax}
 %     \cs{tl_to_str:n} \Arg{token list}
 %   \end{syntax}
@@ -536,7 +536,7 @@
 % \end{function}
 %
 % \begin{function}[updated = 2012-01-08, EXP]
-%   {\tl_reverse:n, \tl_reverse:V, \tl_reverse:o}
+%   {\tl_reverse:n, \tl_reverse:V, \tl_reverse:o, \tl_reverse:f, \tl_reverse:e}
 %   \begin{syntax}
 %     \cs{tl_reverse:n} \Arg{token list}
 %   \end{syntax}
@@ -1073,10 +1073,14 @@
 %
 % \begin{function}[updated = 2011-08-11]
 %   {
-%     \tl_replace_once:Nnn,  \tl_replace_once:Nxx,
-%     \tl_replace_once:cnn,  \tl_replace_once:cxx,
-%     \tl_greplace_once:Nnn, \tl_greplace_once:Nxx
-%     \tl_greplace_once:cnn, \tl_greplace_once:cxx
+%     \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_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_rgeplace_once:NnV,
+%     \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:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx
 %   }
 %   \begin{syntax}
 %     \cs{tl_replace_once:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1090,10 +1094,14 @@
 %
 % \begin{function}[updated = 2011-08-11]
 %   {
-%     \tl_replace_all:Nnn, \tl_replace_all:Nxx,
-%     \tl_replace_all:cnn, \tl_replace_all:cxx
-%     \tl_greplace_all:Nnn, \tl_greplace_all:Nxx,
-%     \tl_greplace_all:cnn, \tl_greplace_all:cxx
+%     \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
 %   }
 %   \begin{syntax}
 %     \cs{tl_replace_all:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1111,10 +1119,10 @@
 %
 % \begin{function}[updated = 2011-08-11]
 %   {
-%     \tl_remove_once:Nn,  \tl_remove_once:Nx,
-%     \tl_remove_once:cn,  \tl_remove_once:cx,
-%     \tl_gremove_once:Nn, \tl_gremove_once:Nx
-%     \tl_gremove_once:cn, \tl_gremove_once:cx
+%     \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
 %   }
 %   \begin{syntax}
 %     \cs{tl_remove_once:Nn} \meta{tl~var} \Arg{tokens}
@@ -1127,10 +1135,10 @@
 %
 % \begin{function}[updated = 2011-08-11]
 %   {
-%     \tl_remove_all:Nn,  \tl_remove_all:Nx,
-%     \tl_remove_all:cn,  \tl_remove_all:cx,
-%     \tl_gremove_all:Nn, \tl_gremove_all:Nx
-%     \tl_gremove_all:cn, \tl_gremove_all:cx
+%     \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
 %   }
 %   \begin{syntax}
 %     \cs{tl_remove_all:Nn} \meta{tl~var} \Arg{tokens}
@@ -1161,10 +1169,10 @@
 %
 % \begin{function}[updated = 2015-08-11]
 %   {
-%     \tl_set_rescan:Nnn,  \tl_set_rescan:Nno,  \tl_set_rescan:Nnx,
-%     \tl_set_rescan:cnn,  \tl_set_rescan:cno,  \tl_set_rescan:cnx,
-%     \tl_gset_rescan:Nnn, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
-%     \tl_gset_rescan:cnn, \tl_gset_rescan:cno, \tl_gset_rescan:cnx
+%     \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
 %   }
 %   \begin{syntax}
 %     \cs{tl_set_rescan:Nnn} \meta{tl~var} \Arg{setup} \Arg{tokens}
@@ -1488,13 +1496,13 @@
 %
 % \begin{macro}
 %   {
-%     \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:No, \tl_put_left:Nx,
-%     \tl_put_left:cn, \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: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
 %   }
 % \begin{macro}
 %   {
-%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:No, \tl_gput_left:Nx,
-%     \tl_gput_left:cn, \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: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
 %   }
 % Adding to the left is done directly to gain a little performance.
 %    \begin{macrocode}
@@ -1508,6 +1516,11 @@
     \__kernel_tl_set:Nx #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
+      { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+  }
 \cs_new_protected:Npn \tl_put_left:No #1#2
   {
     \__kernel_tl_set:Nx #1
@@ -1528,6 +1541,11 @@
     \__kernel_tl_gset:Nx #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
+      { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+  }
 \cs_new_protected:Npn \tl_gput_left:No #1#2
   {
     \__kernel_tl_gset:Nx #1
@@ -1540,10 +1558,12 @@
   { \__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:No  { c }
 \cs_generate_variant:Nn \tl_put_left:Nx  { c }
 \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:No { c }
 \cs_generate_variant:Nn \tl_gput_left:Nx { c }
 %    \end{macrocode}
@@ -1552,14 +1572,14 @@
 %
 % \begin{macro}
 %   {
-%     \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:No, \tl_put_right:Nx,
-%     \tl_put_right:cn, \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: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
 %   }
 % \begin{macro}
 %   {
-%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:No,
+%     \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:co,
+%     \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co,
 %     \tl_gput_right:cx
 %   }
 % The same on the right.
@@ -1571,6 +1591,11 @@
     \__kernel_tl_set:Nx #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_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
+  }
 \cs_new_protected:Npn \tl_put_right:No #1#2
   {
     \__kernel_tl_set:Nx #1
@@ -1588,6 +1613,11 @@
     \__kernel_tl_gset:Nx #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_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
+  }
 \cs_new_protected:Npn \tl_gput_right:No #1#2
   {
     \__kernel_tl_gset:Nx #1
@@ -1600,10 +1630,12 @@
   { \__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:No  { c }
 \cs_generate_variant:Nn \tl_put_right:Nx  { c }
 \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:No { c }
 \cs_generate_variant:Nn \tl_gput_right:Nx { c }
 %    \end{macrocode}
@@ -1653,13 +1685,13 @@
 %
 % \begin{macro}
 %   {
-%     \tl_set_rescan:Nnn, \tl_set_rescan:Nno, \tl_set_rescan:Nnx,
-%     \tl_set_rescan:cnn, \tl_set_rescan:cno, \tl_set_rescan:cnx
+%     \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
 %   }
 % \begin{macro}
 %   {
-%     \tl_gset_rescan:Nnn, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
-%     \tl_gset_rescan:cnn, \tl_gset_rescan:cno, \tl_gset_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
 %   }
 % \begin{macro}{\tl_rescan:nn, \tl_rescan:nV}
 % \begin{macro}{\@@_rescan_aux:}
@@ -1758,10 +1790,10 @@
     \group_end:
     #1 #2 {#3}
   }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  {     Nno , Nnx }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  { c , cno , cnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn {     Nno , Nnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cno }
+\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 }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1879,10 +1911,34 @@
 %
 % \subsection{Modifying token list variables}
 %
-% \begin{macro}{\tl_replace_all:Nnn, \tl_replace_all:cnn}
-% \begin{macro}{\tl_greplace_all:Nnn, \tl_greplace_all:cnn}
-% \begin{macro}{\tl_replace_once:Nnn, \tl_replace_once:cnn}
-% \begin{macro}{\tl_greplace_once:Nnn, \tl_greplace_once:cnn}
+% \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
+%   }
+% \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
+%   }
+% \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
+%   }
+% \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
+%   }
 %   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
@@ -1902,10 +1958,14 @@
   { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Nx  }
 \cs_new_protected:Npn \tl_greplace_all:Nnn
   { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Nx }
-\cs_generate_variant:Nn \tl_replace_once:Nnn  { Nxx , c , cxx }
-\cs_generate_variant:Nn \tl_greplace_once:Nnn { Nxx , c , cxx }
-\cs_generate_variant:Nn \tl_replace_all:Nnn   { Nxx , c , cxx }
-\cs_generate_variant:Nn \tl_greplace_all:Nnn  { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_replace_once:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+\cs_generate_variant:Nn \tl_greplace_once:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+\cs_generate_variant:Nn \tl_replace_all:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+\cs_generate_variant:Nn \tl_greplace_all:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2090,8 +2150,16 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\tl_remove_once:Nn, \tl_remove_once:cn}
-% \begin{macro}{\tl_gremove_once:Nn, \tl_gremove_once:cn}
+% \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
+%   }
+% \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
+%   }
 %   Removal is just a special case of replacement.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_remove_once:Nn #1#2
@@ -2098,14 +2166,22 @@
   { \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  { Nx , c , cx }
-\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx , c , cx }
+\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 }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\tl_remove_all:Nn, \tl_remove_all:cn}
-% \begin{macro}{\tl_gremove_all:Nn, \tl_gremove_all:cn}
+% \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
+%   }
+% \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
+%   }
 %   Removal is just a special case of replacement.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_remove_all:Nn #1#2
@@ -2112,8 +2188,8 @@
   { \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  { Nx , c , cx }
-\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , c , cx }
+\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 }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2137,7 +2213,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[pTF]{\tl_if_empty:n, \tl_if_empty:V}
+% \begin{macro}[pTF]{\tl_if_empty:n, \tl_if_empty:V, \tl_if_empty:e}
 %   The \cs{if:w} triggers the expansion of \cs{tl_to_str:n} which converts the
 %   argument to a string: this is empty if and only if the argument is.  Then
 %   |\if:w \scan_stop: ... \scan_stop:| is \texttt{true} if and only if the
@@ -2155,7 +2231,7 @@
     \fi:
   }
 \prg_generate_conditional_variant:Nnn \tl_if_empty:n
-  { V } { p , TF , T , F }
+  { V , e } { p , TF , T , F }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2252,7 +2328,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[TF]{\tl_if_eq:nn}
+% \begin{macro}[TF]{\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx}
 %   A simple store and compare routine.
 %    \begin{macrocode}
 \prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F ,  TF }
@@ -2268,10 +2344,11 @@
       \prg_return_false:
     \fi:
   }
+\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { V , nV , x , nx } { TF , T , F }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[TF]{\tl_if_in:Nn, \tl_if_in:cn}
+% \begin{macro}[TF]{\tl_if_in:Nn, \tl_if_in:NV, \tl_if_in:cn, \tl_if_in:cV}
 %   See \cs{tl_if_in:nnTF} for further comments. Here we simply
 %   expand the token list variable and pass it to \cs{tl_if_in:nnTF}.
 %    \begin{macrocode}
@@ -2279,11 +2356,11 @@
 \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 }
 \prg_generate_conditional_variant:Nnn \tl_if_in:Nn
-  { c } { T , F , TF }
+  { NV , c , cV } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[TF]{\tl_if_in:nn, \tl_if_in:Vn, \tl_if_in:on, \tl_if_in:no}
+% \begin{macro}[TF]{\tl_if_in:nn, \tl_if_in:Vn, \tl_if_in:on, \tl_if_in:nV, \tl_if_in:no}
 %   Once more, the test relies on the emptiness test for robustness.
 %   The function \cs{@@_tmp:w} removes tokens until the first occurrence
 %   of |#2|. If this does not appear in |#1|, then the final |#2| is removed,
@@ -2313,7 +2390,7 @@
     \if_false: } \fi:
   }
 \prg_generate_conditional_variant:Nnn \tl_if_in:nn
-  { V , o , no } { T , F , TF }
+  { V , o , nV , no } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2557,10 +2634,10 @@
 %
 % \subsection{Using token lists}
 %
-% \begin{macro}{\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v}
+% \begin{macro}{\tl_to_str:n, \tl_to_str:o, \tl_to_str:V, \tl_to_str:v, \tl_to_str:e}
 %   Another name for a primitive: defined in \pkg{l3basics}.
 %    \begin{macrocode}
-\cs_generate_variant:Nn \tl_to_str:n { o , V , v }
+\cs_generate_variant:Nn \tl_to_str:n { o , V , v , e }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3228,7 +3305,8 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[EXP]{\tl_reverse:n, \tl_reverse:o, \tl_reverse:V}
+% \begin{macro}[EXP]
+%   {\tl_reverse:n, \tl_reverse:o, \tl_reverse:V, \tl_reverse:f, \tl_reverse:e}
 % \begin{macro}[EXP]{\@@_reverse_normal:nN}
 % \begin{macro}[EXP]{\@@_reverse_group_preserve:nn}
 % \begin{macro}[EXP]{\@@_reverse_space:n}
@@ -3250,7 +3328,7 @@
           {#1}
       }
   }
-\cs_generate_variant:Nn \tl_reverse:n { o , V }
+\cs_generate_variant:Nn \tl_reverse:n { o , V , f , e }
 \cs_new:Npn \@@_reverse_normal:N
   { \@@_act_reverse_output:n }
 \cs_new:Npn \@@_reverse_group_preserve:n #1

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %
@@ -1603,6 +1603,7 @@
     \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: }
     \char_set_catcode_letter:n { 0 }
     \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: }
+%    \end{macrocode}
 %   For making spaces, there needs to be an |o|-type expansion of a |\use:n|
 %   (or some other tokenization) to avoid dropping the space.
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-08-11}
+% \date{Released 2023-08-29}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-08-29 23:21:00 UTC (rev 68106)
@@ -71,7 +71,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-08-11}%
+\def\ExplFileDate{2023-08-29}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -665,7 +665,6 @@
   \__kernel_primitive:NN \pdfcompresslevel      \tex_pdfcompresslevel:D
   \__kernel_primitive:NN \pdfcolorstack         \tex_pdfcolorstack:D
   \__kernel_primitive:NN \pdfcolorstackinit     \tex_pdfcolorstackinit:D
-  \__kernel_primitive:NN \pdfcreationdate       \tex_pdfcreationdate:D
   \__kernel_primitive:NN \pdfdecimaldigits      \tex_pdfdecimaldigits:D
   \__kernel_primitive:NN \pdfdest               \tex_pdfdest:D
   \__kernel_primitive:NN \pdfdestmargin         \tex_pdfdestmargin:D
@@ -754,6 +753,7 @@
   \__kernel_primitive:NN \pdfadjustspacing      \tex_adjustspacing:D
   \__kernel_primitive:NN \pdfappendkern         \tex_appendkern:D
   \__kernel_primitive:NN \pdfcopyfont           \tex_copyfont:D
+  \__kernel_primitive:NN \pdfcreationdate       \tex_creationdate:D
   \__kernel_primitive:NN \pdfdraftmode          \tex_draftmode:D
   \__kernel_primitive:NN \pdfeachlinedepth      \tex_eachlinedepth:D
   \__kernel_primitive:NN \pdfeachlineheight     \tex_eachlineheight:D
@@ -3424,6 +3424,11 @@
     \__kernel_tl_set:Nx #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
+      { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+  }
 \cs_new_protected:Npn \tl_put_left:No #1#2
   {
     \__kernel_tl_set:Nx #1
@@ -3444,6 +3449,11 @@
     \__kernel_tl_gset:Nx #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
+      { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+  }
 \cs_new_protected:Npn \tl_gput_left:No #1#2
   {
     \__kernel_tl_gset:Nx #1
@@ -3456,10 +3466,12 @@
   { \__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:No  { c }
 \cs_generate_variant:Nn \tl_put_left:Nx  { c }
 \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:No { c }
 \cs_generate_variant:Nn \tl_gput_left:Nx { c }
 \cs_new_protected:Npn \tl_put_right:Nn #1#2
@@ -3469,6 +3481,11 @@
     \__kernel_tl_set:Nx #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_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
+  }
 \cs_new_protected:Npn \tl_put_right:No #1#2
   {
     \__kernel_tl_set:Nx #1
@@ -3486,6 +3503,11 @@
     \__kernel_tl_gset:Nx #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_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
+  }
 \cs_new_protected:Npn \tl_gput_right:No #1#2
   {
     \__kernel_tl_gset:Nx #1
@@ -3498,10 +3520,12 @@
   { \__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:No  { c }
 \cs_generate_variant:Nn \tl_put_right:Nx  { c }
 \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:No { c }
 \cs_generate_variant:Nn \tl_gput_right:Nx { c }
 \quark_new:N \q__tl_nil
@@ -3552,10 +3576,10 @@
     \group_end:
     #1 #2 {#3}
   }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  {     Nno , Nnx }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  { c , cno , cnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn {     Nno , Nnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cno }
+\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_new_protected:Npn \__tl_set_rescan:nNN #1
   {
     \int_compare:nNnTF \tex_newlinechar:D < 0
@@ -3619,10 +3643,14 @@
   { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_set:Nx  }
 \cs_new_protected:Npn \tl_greplace_all:Nnn
   { \__tl_replace:NnNNNnn \q__tl_mark ? \__tl_replace_next:w \__kernel_tl_gset:Nx }
-\cs_generate_variant:Nn \tl_replace_once:Nnn  { Nxx , c , cxx }
-\cs_generate_variant:Nn \tl_greplace_once:Nnn { Nxx , c , cxx }
-\cs_generate_variant:Nn \tl_replace_all:Nnn   { Nxx , c , cxx }
-\cs_generate_variant:Nn \tl_greplace_all:Nnn  { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_replace_once:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+\cs_generate_variant:Nn \tl_greplace_once:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+\cs_generate_variant:Nn \tl_replace_all:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+\cs_generate_variant:Nn \tl_greplace_all:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
 \cs_new_protected:Npn \__tl_replace:NnNNNnn #1#2#3#4#5#6#7
   {
     \tl_if_empty:nTF {#6}
@@ -3683,14 +3711,14 @@
   { \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  { Nx , c , cx }
-\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx , c , cx }
+\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_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  { Nx , c , cx }
-\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , c , cx }
+\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 }
 \prg_new_conditional:Npnn \tl_if_empty:N #1 { p , T , F , TF }
   {
     \if_meaning:w #1 \c_empty_tl
@@ -3710,7 +3738,7 @@
     \fi:
   }
 \prg_generate_conditional_variant:Nnn \tl_if_empty:n
-  { V } { p , TF , T , F }
+  { V , e } { p , TF , T , F }
 \cs_new:Npn \__tl_if_empty_if:o #1
   {
     \if:w \scan_stop: \__kernel_tl_to_str:w \exp_after:wN {#1} \scan_stop:
@@ -3766,11 +3794,12 @@
       \prg_return_false:
     \fi:
   }
+\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { V , nV , x , nx } { 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 }
 \prg_generate_conditional_variant:Nnn \tl_if_in:Nn
-  { c } { T , F , TF }
+  { NV , c , cV } { T , F , TF }
 \prg_new_protected_conditional:Npnn \tl_if_in:nn #1#2 { T  , F , TF }
   {
     \scan_stop:
@@ -3781,7 +3810,7 @@
     \if_false: } \fi:
   }
 \prg_generate_conditional_variant:Nnn \tl_if_in:nn
-  { V , o , no } { T , F , TF }
+  { V , o , nV , no } { T , F , TF }
 \cs_set_protected:Npn \__tl_tmp:w #1
   {
     \prg_new_conditional:Npnn \tl_if_novalue:n ##1
@@ -3900,7 +3929,7 @@
   { \prg_map_break:Nn \tl_map_break: { } }
 \cs_new:Npn \tl_map_break:n
   { \prg_map_break:Nn \tl_map_break: }
-\cs_generate_variant:Nn \tl_to_str:n { o , V , v }
+\cs_generate_variant:Nn \tl_to_str:n { o , V , v , e }
 \cs_new:Npn \tl_to_str:N #1 { \__kernel_tl_to_str:w \exp_after:wN {#1} }
 \cs_generate_variant:Nn \tl_to_str:N { c }
 \cs_new:Npn \tl_use:N #1
@@ -4230,7 +4259,7 @@
           {#1}
       }
   }
-\cs_generate_variant:Nn \tl_reverse:n { o , V }
+\cs_generate_variant:Nn \tl_reverse:n { o , V , f , e }
 \cs_new:Npn \__tl_reverse_normal:N
   { \__tl_act_reverse_output:n }
 \cs_new:Npn \__tl_reverse_group_preserve:n #1
@@ -4630,7 +4659,7 @@
   }
 \cs_new:Npn \__str_case:nnTF #1#2#3#4
   { \__str_case:nw {#1} #2 {#1} { } \s__str_mark {#3} \s__str_mark {#4} \s__str_stop }
-\cs_generate_variant:Nn \str_case:nn   { V , o , nV , nv }
+\cs_generate_variant:Nn \str_case:nn   { V , o , e , nV , nv }
 \prg_generate_conditional_variant:Nnn \str_case:nn
   { V , o , nV , nv } { T , F , TF }
 \cs_new_eq:NN \str_case:Nn   \str_case:Vn
@@ -5298,8 +5327,8 @@
   }
 \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  { NnV }
-\cs_generate_variant:Nn \seq_gset_split:Nnn { NnV }
+\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_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
@@ -5383,8 +5412,8 @@
     #1 #2 {#2}
     \__seq_pop_item_def:
   }
-\cs_generate_variant:Nn \seq_remove_all:Nn  { c }
-\cs_generate_variant:Nn \seq_gremove_all:Nn { c }
+\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_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 }
@@ -5678,7 +5707,7 @@
       { \prg_break:n { \exp_not:n {#3} } }
       { \exp_args:Nf \__seq_item:nwn { \int_eval:n { #1 - 1 } } }
   }
-\cs_generate_variant:Nn \seq_item:Nn { c }
+\cs_generate_variant:Nn \seq_item:Nn { NV , Ne , c , cV , ce }
 \cs_new:Npn \seq_rand_item:N #1
   {
     \seq_if_empty:NF #1
@@ -6422,6 +6451,7 @@
     \prg_break_point:Nn \scan_stop: { \int_gdecr:N \g__kernel_prg_map_int }
   }
 \cs_new_eq:NN \int_to_arabic:n \int_eval:n
+\cs_generate_variant:Nn \int_to_arabic:n { v }
 \cs_new:Npn \int_to_symbols:nnn #1#2#3
   {
     \int_compare:nNnTF {#1} > {#2}
@@ -7540,6 +7570,15 @@
   }
 \__sys_everyjob:n
   {
+    \str_const:Nx \c_sys_timestamp_str
+      {
+        \cs_if_exist:NTF \tex_directlua:D
+          { \tex_directlua:D { tex.print(pdf.getcreationdate()) } }
+          { \tex_creationdate:D }
+      }
+  }
+\__sys_everyjob:n
+  {
     \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D }
   }
 \__sys_everyjob:n
@@ -9324,8 +9363,8 @@
       { \tl_set:Nn #3 {##2} }
       { \tl_set:Nn #3 { \q_no_value } }
   }
-\cs_generate_variant:Nn \prop_get:NnN {     NV , Nv , No }
-\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co }
+\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_new_protected:Npn \prop_pop:NnN #1#2#3
   {
     \__prop_split:NnTF #1 {#2}
@@ -9358,7 +9397,7 @@
     \str_if_eq:eeT {#1} {#2}
       { \prop_map_break:n { \exp_not:n {#3} } }
   }
-\cs_generate_variant:Nn \prop_item:Nn { c }
+\cs_generate_variant:Nn \prop_item:Nn { NV , No , Ne , c , cV , co , ce }
 \cs_new:Npn \prop_count:N #1
   {
     \int_eval:n
@@ -9423,13 +9462,13 @@
       { #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 , Noo , Nxx }
+  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
 \cs_generate_variant:Nn \prop_put:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
 \cs_new_protected:Npn \prop_put_if_new:Nnn
   { \__prop_put_if_new:NNnn \__kernel_tl_set:Nx }
 \cs_new_protected:Npn \prop_gput_if_new:Nnn
@@ -9481,7 +9520,7 @@
       { \prg_return_false: }
   }
 \prg_generate_conditional_variant:Nnn \prop_get:NnN
-  { NV , Nv , No , c , cV , cv , co } { T , F , TF }
+  { NV , Nv , No , Nx , c , cV , cv , co , cx , cnc } { T , F , TF }
 \cs_new:Npn \prop_map_function:NN #1#2
   {
     \exp_after:wN \use_i_ii:nnn
@@ -9601,8 +9640,10 @@
     \__msg_chk_free:nn {#1} {#2}
     \msg_gset:nnnn {#1} {#2}
   }
+\cs_generate_variant:Nn \msg_new:nnnn { 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_new_protected:Npn \msg_set:nnnn #1#2#3#4
   {
     \cs_set:cpn { \c__msg_text_prefix_tl #1 / #2 }
@@ -9820,6 +9861,9 @@
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } }
       \cs_new_protected:cpx { 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
@@ -10812,7 +10856,7 @@
         \__iow_open_stream:NV #1 \l__iow_file_name_tl
       }
   }
-\cs_generate_variant:Nn \iow_open:Nn { c }
+\cs_generate_variant:Nn \iow_open:Nn { NV , c , cV }
 \cs_new_protected:Npn \__iow_open_stream:Nn #1#2
   {
     \tex_global:D \tex_chardef:D #1 = \l__iow_stream_tl \scan_stop:
@@ -10899,7 +10943,7 @@
     \__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 { c, Nx, cx }
+\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_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 }
@@ -11693,6 +11737,7 @@
       { \prg_return_true: }
       { \prg_return_false: }
   }
+\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { T , F , TF }
 \cs_new_protected:Npn \file_if_exist_input:n #1
   {
     \file_get_full_name:nNT {#1} \l__file_full_name_tl
@@ -11716,6 +11761,7 @@
       { \__file_input:V \l__file_full_name_tl }
       { \__kernel_file_missing:n {#1} }
   }
+\cs_generate_variant:Nn \file_input:n { V }
 \cs_new_protected:Npx \__file_input:n #1
   {
     \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist
@@ -12756,6 +12802,8 @@
   \char_set_catcode_active:n { `\= }
   \__keyval_tmp:w , =
 \group_end:
+\cs_generate_variant:Nn \keyval_parse:NNn { NNV , NNv }
+\cs_generate_variant:Nn \keyval_parse:nnn { nnV , nnv }
 \group_begin:
   \cs_set_protected:Npn \__keyval_tmp:w #1#2
     {
@@ -26509,15 +26557,19 @@
     \__regex_if_match:nn { \__regex_build:n {#1} } {#2}
     \__regex_return:
   }
+\prg_generate_conditional_variant:Nnn \regex_match:nn { nV } { T , F , TF }
 \prg_new_protected_conditional:Npnn \regex_match:Nn #1#2 { T , F , TF }
   {
     \__regex_if_match:nn { \__regex_build:N #1 } {#2}
     \__regex_return:
   }
+\prg_generate_conditional_variant:Nnn \regex_match:Nn { NV } { T , F , TF }
 \cs_new_protected:Npn \regex_count:nnN #1
   { \__regex_count:nnN { \__regex_build:n {#1} } }
 \cs_new_protected:Npn \regex_count:NnN #1
   { \__regex_count:nnN { \__regex_build:N #1 } }
+\cs_generate_variant:Nn \regex_count:nnN { nV }
+\cs_generate_variant:Nn \regex_count:NnN { NV }
 \cs_new_protected:Npn \regex_match_case:nnTF #1#2#3
   {
     \__regex_match_case:nnTF {#1} {#2}
@@ -26540,6 +26592,11 @@
       { #1 { \__regex_build:n {##1} } {##2} ##3 \__regex_return: }
     \prg_new_protected_conditional:Npnn #3 ##1##2##3 { T , F , TF }
       { #1 { \__regex_build:N  ##1  } {##2} ##3 \__regex_return: }
+    \cs_generate_variant:Nn #2 { nV }
+    \prg_generate_conditional_variant:Nnn #2 { nV } { T , F , TF }
+    \cs_generate_variant:Nn #3 { NV }
+    \prg_generate_conditional_variant:Nnn #3 { NV } { T , F , TF }
+
   }
 \__regex_tmp:w \__regex_extract_once:nnN
   \regex_extract_once:nnN \regex_extract_once:NnN

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

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-08-29 23:21:00 UTC (rev 68106)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-08-11}%
+\def\ExplFileDate{2023-08-29}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-08-29 23:20:40 UTC (rev 68105)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-08-29 23:21:00 UTC (rev 68106)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-08-11}%
+\def\ExplFileDate{2023-08-29}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%



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