texlive[67074] Master/texmf-dist: l3 (11may23)

commits+karl at tug.org commits+karl at tug.org
Thu May 11 22:14:10 CEST 2023


Revision: 67074
          http://tug.org/svn/texlive?view=revision&revision=67074
Author:   karl
Date:     2023-05-11 22:14:09 +0200 (Thu, 11 May 2023)
Log Message:
-----------
l3 (11may23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3bitset/l3bitset.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3opacity/l3opacity.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3doc.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/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/l3experimental/l3benchmark/l3benchmark.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
    trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2023-05-11 20:14:09 UTC (rev 67074)
@@ -7,6 +7,11 @@
 
 ## [Unreleased]
 
+## [2023-05-11]
+
+### Changed
+- Track `expl3` core changes
+
 ## [2023-04-19]
 
 ### Added
@@ -270,7 +275,8 @@
 - New `l3color` module using `xcolor`-like expression syntax
 - New `l3draw` module, based on `pgf` layer of the TikZ system
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-04-19...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-11...HEAD
+[2023-05-11]: https://github.com/latex3/latex3/compare/2023-04-19...2023-05-11
 [2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
 [2023-03-30]: https://github.com/latex3/latex3/compare/2023-01-24...2023-03-30
 [2023-01-24]: https://github.com/latex3/latex3/compare/2022-04-20...2023-01-24

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2023-05-11 20:14:09 UTC (rev 67074)
@@ -1,7 +1,7 @@
 Experimental LaTeX3 Concepts
 ============================
 
-Release 2023-04-19
+Release 2023-05-11
 
 Overview
 --------

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

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

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

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-05-11 20:14:09 UTC (rev 67074)
@@ -7,6 +7,21 @@
 
 ## [Unreleased]
 
+## [2023-05-11]
+
+### Added
+- `\seq_map_pairwise_function:NNN` (renamed from  `\seq_mapthread_function:NNN`)
+
+### Changed
+- Moved `\seq_set_item:Nnn` to stable status
+- Track seen filenames to improve performance of
+  `\file_full_name:n` and dependent file operations
+
+### Removed
+- Experimental function `\seq_pop_item:NnN` from `l3candidates`
+- Experimental function `\seq_mapthread_function:NNN` now renamed
+  `\seq_map_pairwise_function:NNN`
+
 ## [2023-05-05]
 
 ### Added
@@ -40,7 +55,7 @@
   - `\tl_range_braced:Nnn` and `\tl_range_unbraced:Nnn`
 - Experimental functions now renamed
   - `\bool_case_true:n(TF)` (now `\bool_case:n(TF)`)
-  - `\flag_raise_if_clear:n` (now `\flag_raise_if_clear:n`)
+  - `\flag_raise_if_clear:n` (now `\flag_ensure_raised:n`)
   - `\iow_allow_break:` (now `\iow_wrap_allow_break:`)
 - Experimental functions moved to kernel-internal:
   - `\msg_log_eval:Nn` and `\msg_show_eval:Nn`
@@ -1383,7 +1398,8 @@
 - Step functions have been added for dim variables,
   e.g. `\dim_step_inline:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-05...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-05-11...HEAD
+[2023-05-11]: https://github.com/latex3/latex3/compare/2023-05-05...2023-05-11
 [2023-05-05]: https://github.com/latex3/latex3/compare/2023-04-20...2023-05-05
 [2023-04-20]: https://github.com/latex3/latex3/compare/2023-04-19...2023-04-20
 [2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-05-11 20:14:09 UTC (rev 67074)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2023-05-05
+Release 2023-05-11
 
 Overview
 --------

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

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2023-05-11 20:14:09 UTC (rev 67074)
@@ -62,7 +62,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-05-05}
+\date{Released 2023-05-11}
 
 \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-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2023-05-11 20:14:09 UTC (rev 67074)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-05-05}
+\date{Released 2023-05-11}
 
 \begin{document}
 

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2023-05-11 20:14:09 UTC (rev 67074)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-05-05}
+\date{Released 2023-05-11}
 
 \newcommand{\TF}{\textit{(TF)}}
 

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2023-05-11 20:14:09 UTC (rev 67074)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-05-05}
+\date{Released 2023-05-11}
 
 \newcommand{\TF}{\textit{(TF)}}
 

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2023-05-11 20:14:09 UTC (rev 67074)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-05-05}
+\date{Released 2023-05-11}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -122,7 +122,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2023-04-19}{}
+\ProvidesExplPackage{l3benchmark}{2023-05-11}{}
   {L3 Experimental benchmarking}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 % \begin{documentation}
@@ -264,7 +264,7 @@
 %<@@=bitset>
 %    \end{macrocode}
 %    \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2023-04-19}{}
+\ProvidesExplPackage{l3bitset}{2023-05-11}{}
   {L3 Experimental bitset support}
 %    \end{macrocode}
 % A bitset is a string variable.

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -110,7 +110,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -1173,7 +1173,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2023-04-19}{}
+\ProvidesExplPackage{l3draw}{2023-05-11}{}
   {L3 Experimental core drawing support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -184,7 +184,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2023-04-19}{}
+\ProvidesExplPackage{l3graphics}{2023-05-11}{}
   {L3 Experimental graphics inclusion support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -96,7 +96,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2023-04-19}{}
+\ProvidesExplPackage{l3opacity}{2023-05-11}{}
   {L3 Experimental opacity support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -48,7 +48,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -166,7 +166,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2023-04-19}{}
+\ProvidesExplPackage{l3str-format}{2023-05-11}{}
   {L3 Experimental string formatting}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -151,7 +151,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2023-04-19}{}
+\ProvidesExplPackage{l3sys-shell}{2023-05-11}{}
   {L3 Experimental system shell functions}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -53,7 +53,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -672,7 +672,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2023-04-19}{}
+\ProvidesExplPackage{xcoffins}{2023-05-11}{}
   {L3 Experimental design level coffins}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -686,7 +686,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2023-04-19}{}
+\ProvidesExplPackage{l3galley}{2023-05-11}{}
   {L3 Experimental galley code}
 %    \end{macrocode}
 %
@@ -1834,7 +1834,7 @@
     \tex_parshape:D
       \int_min:nn { \seq_count:N #1 } { \seq_count:N #2 }
       \exp_stop_f:
-      \seq_mapthread_function:NNN #1 #2
+      \seq_map_pairwise_function:NNN #1 #2
         \@@_parshape_set_indents:nn
   }
 \cs_new:Npn \@@_parshape_set_indents:nn #1#2

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-04-19}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -731,7 +731,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2023-04-19}{}
+\ProvidesExplPackage{xgalley}{2023-05-11}{}
   {L3 Experimental galley}
 \RequirePackage{xtemplate,l3galley}
 %    \end{macrocode}

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

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -86,24 +86,6 @@
 %
 % \section{Additions to \pkg{l3seq}}
 %
-% \begin{function}[rEXP]
-%   {
-%     \seq_mapthread_function:NNN, \seq_mapthread_function:NcN,
-%     \seq_mapthread_function:cNN, \seq_mapthread_function:ccN
-%   }
-%   \begin{syntax}
-%     \cs{seq_mapthread_function:NNN} \meta{seq_1} \meta{seq_2} \meta{function}
-%   \end{syntax}
-%   Applies \meta{function} to every pair of items
-%   \meta{seq_1-item}--\meta{seq_2-item} from the two sequences, returning
-%   items from both sequences from left to right.   The \meta{function}
-%   receives two \texttt{n}-type arguments for each iteration. The  mapping
-%   terminates when
-%   the end of either sequence is reached (\emph{i.e.}~whichever sequence has
-%   fewer items determines how many iterations
-%   occur).
-% \end{function}
-%
 % \begin{function}{\seq_set_filter:NNn, \seq_gset_filter:NNn}
 %   \begin{syntax}
 %     \cs{seq_set_filter:NNn} \meta{sequence_1} \meta{sequence_2} \Arg{inline boolexpr}
@@ -119,42 +101,6 @@
 %   \end{texnote}
 % \end{function}
 %
-% \begin{function}[added = 2021-04-29, noTF]
-%   {\seq_set_item:Nnn, \seq_set_item:cnn, \seq_gset_item:Nnn, \seq_gset_item:cnn}
-%   \begin{syntax}
-%     \cs{seq_set_item:Nnn} \meta{seq~var} \Arg{int expr} \Arg{item}
-%     \cs{seq_set_item:NnnTF} \meta{seq~var} \Arg{int expr} \Arg{item} \Arg{true code} \Arg{false code}
-%   \end{syntax}
-%   Removes the item of \meta{sequence} at the position given by
-%   evaluating the \meta{int expr} and replaces it by
-%   \meta{item}.  Items are indexed from $1$ on the left/top of the
-%   \meta{sequence}, or from $-1$ on the right/bottom.  If the
-%   \meta{int expr} is zero or is larger (in absolute value)
-%   than the number of items in the sequence, the \meta{sequence} is not
-%   modified.  In these cases, \cs{seq_set_item:Nnn} raises an error
-%   while \cs{seq_set_item:NnnTF} runs the \meta{false code}.  In cases
-%   where the assignment was successful, \meta{true code} is run
-%   afterwards.
-% \end{function}
-%
-% \begin{function}[added = 2021-04-28, noTF]
-%   {\seq_pop_item:NnN, \seq_pop_item:cnN, \seq_gpop_item:NnN, \seq_gpop_item:cnN}
-%   \begin{syntax}
-%     \cs{seq_pop_item:NnN} \meta{seq~var} \Arg{int expr} \Arg{tl~var}
-%     \cs{seq_pop_item:NnNTF} \meta{seq~var} \Arg{int expr} \Arg{tl~var} \Arg{true code} \Arg{false code}
-%   \end{syntax}
-%   Removes the \meta{item} at position \meta{int expr} in the
-%   \meta{sequence}, and places it in the \meta{token list variable}.
-%   Items are indexed from $1$ on the left/top of the \meta{sequence},
-%   or from $-1$ on the right/bottom.  If the position is zero or is
-%   larger (in absolute value) than the number of items in the sequence,
-%   the \meta{seq~var} is not modified, the \meta{token list} is set to
-%   the special marker \cs{q_no_value}, and the \meta{false code} is
-%   left in the input stream; otherwise the \meta{true code} is.  The
-%   \meta{token list} assignment is local while the \meta{sequence} is
-%   assigned locally for |pop| or globally for |gpop| functions.
-% \end{function}
-%
 % \section{Additions to \pkg{l3tl}}
 %
 % \begin{function}[added = 2018-04-01]{\tl_build_begin:N, \tl_build_gbegin:N}
@@ -241,53 +187,6 @@
 %<@@=seq>
 %    \end{macrocode}
 %
-% \begin{macro}
-%   {
-%     \seq_mapthread_function:NNN, \seq_mapthread_function:NcN,
-%     \seq_mapthread_function:cNN, \seq_mapthread_function:ccN
-%   }
-% \begin{macro}
-%   {
-%     \@@_mapthread_function:wNN, \@@_mapthread_function:wNw,
-%     \@@_mapthread_function:Nnnwnn
-%   }
-%   The idea is to first expand both sequences, adding the
-%   usual |{ ? \prg_break: } { }| to the end of each one.  This is
-%   most conveniently done in two steps using an auxiliary function.
-%   The mapping then throws away the first tokens of |#2| and |#5|,
-%   which for items in both sequences are \cs{s_@@}
-%   \cs{@@_item:n}.  The function to be mapped are then be applied to
-%   the two entries.  When the code hits the end of one of the
-%   sequences, the break material stops the entire loop and tidy up.
-%   This avoids needing to find the count of the two sequences, or
-%   worrying about which is longer.
-%    \begin{macrocode}
-\cs_new:Npn \seq_mapthread_function:NNN #1#2#3
-  { \exp_after:wN \@@_mapthread_function:wNN #2 \s_@@_stop #1 #3 }
-\cs_new:Npn \@@_mapthread_function:wNN \s_@@ #1 \s_@@_stop #2#3
-  {
-    \exp_after:wN \@@_mapthread_function:wNw #2 \s_@@_stop #3
-      #1 { ? \prg_break: } { }
-    \prg_break_point:
-  }
-\cs_new:Npn \@@_mapthread_function:wNw \s_@@ #1 \s_@@_stop #2
-  {
-    \@@_mapthread_function:Nnnwnn #2
-      #1 { ? \prg_break: } { }
-    \s_@@_stop
-  }
-\cs_new:Npn \@@_mapthread_function:Nnnwnn #1#2#3#4 \s_@@_stop #5#6
-  {
-    \use_none:n #2
-    \use_none:n #5
-    #1 {#3} {#6}
-    \@@_mapthread_function:Nnnwnn #1 #4 \s_@@_stop
-  }
-\cs_generate_variant:Nn \seq_mapthread_function:NNN { Nc , c , cc }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
 % \begin{macro}{\seq_set_filter:NNn, \seq_gset_filter:NNn}
 % \begin{macro}{\@@_set_filter:NNNn}
 %   Similar to \cs{seq_map_inline:Nn}, without a
@@ -312,176 +211,6 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_int_eval:w}
-%   Useful to more quickly go through items.
-%    \begin{macrocode}
-\cs_new_eq:NN \@@_int_eval:w \tex_numexpr:D
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[noTF]{\seq_set_item:Nnn, \seq_set_item:cnn, \seq_gset_item:Nnn, \seq_gset_item:cnn}
-% \begin{macro}{\@@_set_item:NnnNN, \@@_set_item:nnNNNN, \@@_set_item_false:nnNNNN, \@@_set_item:nNnnNNNN}
-% \begin{macro}[rEXP]{\@@_set_item:wn, \@@_set_item_end:w}
-%   The conditionals are distinguished from the |Nnn| versions by the
-%   last argument \cs{use_ii:nn} vs \cs{use_i:nn}.
-%    \begin{macrocode}
-\cs_new_protected:Npn \seq_set_item:Nnn #1#2#3
-  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_i:nn }
-\cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
-  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
-\cs_generate_variant:Nn \seq_set_item:Nnn { c }
-\cs_generate_variant:Nn \seq_gset_item:Nnn { c }
-\prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
-  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
-\prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
-  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
-\prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
-\prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
-%    \end{macrocode}
-%   Save the item to be stored and evaluate the position and the sequence
-%   length only once.  Then depending on the sign of the position, check
-%   that it is not bigger than the length (in absolute value) nor zero.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_set_item:NnnNN #1#2#3
-  {
-    \tl_set:Nn \l_@@_internal_a_tl { \@@_item:n {#3} }
-    \exp_args:Nff \@@_set_item:nnNNNN
-      { \int_eval:n {#2} } { \seq_count:N #1 } #1 \use_none:nn
-  }
-\cs_new_protected:Npn \@@_set_item:nnNNNN #1#2
-  {
-    \int_compare:nNnTF {#1} > 0
-      { \int_compare:nNnF {#1} > {#2} { \@@_set_item:nNnnNNNN { #1 - 1 } } }
-      {
-        \int_compare:nNnF {#1} < {-#2}
-          {
-            \int_compare:nNnF {#1} = 0
-              { \@@_set_item:nNnnNNNN { #2 + #1 } }
-          }
-      }
-    \@@_set_item_false:nnNNNN {#1} {#2}
-  }
-%    \end{macrocode}
-%   If the position is not ok, \cs{@@_set_item_false:nnNNNN} calls an
-%   error or returns \texttt{false} (depending on the \cs{use_i:nn} vs
-%   \cs{use_ii:nn} argument mentioned above).
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_set_item_false:nnNNNN #1#2#3#4#5#6
-  {
-    #6
-      {
-        \msg_error:nnxxx { seq } { item-too-large }
-          { \token_to_str:N #3 } {#2} {#1}
-      }
-      { \prg_return_false: }
-  }
-\msg_new:nnnn { seq } { item-too-large }
-  { Sequence~'#1'~does~not~have~an~item~#3 }
-  {
-    An~attempt~was~made~to~push~or~pop~the~item~at~position~#3~
-    of~'#1',~but~this~
-    \int_compare:nTF { #3 = 0 }
-      { position~does~not~exist. }
-      { sequence~only~has~#2~item \int_compare:nF { #2 = 1 } {s}. }
-  }
-%    \end{macrocode}
-%   If the position is ok, \cs{@@_set_item:nNnnNNNN} makes the assignment
-%   and returns \texttt{true} (in the case of conditionnals).  Here |#1|
-%   is an integer expression (position minus one), it needs to be
-%   evaluated.  The sequence |#5| starts with \cs{s_@@} (even if empty),
-%   which stops the integer expression and is absorbed by it.  The
-%   \cs{if_meaning:w} test is slightly faster than an integer test (but
-%   only works when testing against zero, hence the offset we chose in
-%   the position).  When we are done skipping items, insert the saved
-%   item \cs{l_@@_internal_a_tl}.  For |put| functions the last argument
-%   of \cs{@@_set_item_end:w} is \cs{use_none:nn} and it absorbs the
-%   item |#2| that we are removing: this is only useful for the |pop|
-%   functions.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_set_item:nNnnNNNN #1#2#3#4#5#6#7#8
-  {
-    #7 #5
-      {
-        \s_@@
-        \exp_after:wN \@@_set_item:wn
-        \int_value:w \@@_int_eval:w #1
-        #5 \s_@@_stop #6
-      }
-    #8 { } { \prg_return_true: }
-  }
-\cs_new:Npn \@@_set_item:wn #1 \@@_item:n #2
-  {
-    \if_meaning:w 0 #1 \@@_set_item_end:w \fi:
-    \exp_not:n { \@@_item:n {#2} }
-    \exp_after:wN \@@_set_item:wn
-    \int_value:w \@@_int_eval:w #1 - 1 \s_@@
-  }
-\cs_new:Npn \@@_set_item_end:w #1 \exp_not:n #2 #3 \s_@@ #4 \s_@@_stop #5
-  {
-    #1
-    \exp_not:o \l_@@_internal_a_tl
-    \exp_not:n {#4}
-    #5 #2
-  }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}[noTF]{\seq_pop_item:NnN, \seq_pop_item:cnN, \seq_gpop_item:NnN, \seq_gpop_item:cnN}
-% \begin{macro}{\@@_pop_item:NnNNN}
-%   The |NnN| versions simply call the conditionals, for which we will
-%   rely on the internals of \cs{seq_set_item:Nnn}.
-%    \begin{macrocode}
-\cs_new_protected:Npn \seq_pop_item:NnN #1#2#3
-  { \seq_pop_item:NnNTF #1 {#2} #3 { } { } }
-\cs_new_protected:Npn \seq_gpop_item:NnN #1#2#3
-  { \seq_gpop_item:NnNTF #1 {#2} #3 { } { } }
-\cs_generate_variant:Nn \seq_pop_item:NnN { c }
-\cs_generate_variant:Nn \seq_gpop_item:NnN { c }
-\prg_new_protected_conditional:Npnn \seq_pop_item:NnN #1#2#3 { TF , T , F }
-  { \@@_pop_item:NnNN #1 {#2} #3 \__kernel_tl_set:Nx }
-\prg_new_protected_conditional:Npnn \seq_gpop_item:NnN #1#2#3 { TF , T , F }
-  { \@@_pop_item:NnNN #1 {#2} #3 \__kernel_tl_gset:Nx }
-\prg_generate_conditional_variant:Nnn \seq_pop_item:NnN { c } { TF , T , F }
-\prg_generate_conditional_variant:Nnn \seq_gpop_item:NnN { c } { TF , T , F }
-%    \end{macrocode}
-%   Save in \cs{l_@@_internal_b_tl} the token list variable |#3| in
-%   which we will store the item.  The \cs{@@_set_item:nnNNNN} auxiliary
-%   eventually inserts \cs{l_@@_internal_a_tl} in place of the item
-%   found in the sequence, so we empty that.  Instead of the last
-%   argument \cs{use_i:nn} or \cs{use_ii:nn} used for |put| functions,
-%   we introduce \cs{@@_pop_item:nn}, which stores \cs{q_no_value}
-%   before calling its second argument
-%   (\cs{prg_return_true:}/\texttt{false:}) to end the conditional.  The
-%   item found is passed to \cs{@@_pop_item_aux:w}, which interrupts the
-%   |x|-expanding sequence assignment and stores the item using the
-%   assignment function in \cs{l_@@_internal_b_tl}.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_pop_item:NnNN #1#2#3#4
-  {
-    \tl_clear:N \l_@@_internal_a_tl
-    \tl_set:Nn \l_@@_internal_b_tl { \__kernel_tl_set:Nx #3 }
-    \exp_args:Nff \@@_set_item:nnNNNN
-      { \int_eval:n {#2} } { \seq_count:N #1 }
-      #1 \@@_pop_item_aux:w #4 \@@_pop_item:nn
-  }
-\cs_new_protected:Npn \@@_pop_item:nn #1#2
-  {
-    \if_meaning:w \prg_return_false: #2
-      \l_@@_internal_b_tl { \exp_not:N \q_no_value }
-    \fi:
-    #2
-  }
-\cs_new:Npn \@@_pop_item_aux:w \@@_item:n #1
-  {
-    \if_false: { \fi: }
-    \l_@@_internal_b_tl { \if_false: } \fi: \exp_not:n {#1}
-  }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
 % \subsection{Additions to \pkg{l3tl}}
 %
 % \subsubsection{Building a token list}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -529,6 +529,13 @@
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}{\seq_mapthread_function:NNN}
+%    \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2023-05-10 } { \seq_mapthread_function:NNN }
+\cs_gset:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsection{Deprecated \pkg{l3sys} functions}
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -85,7 +85,7 @@
 %    require you to do updates, if the class changes.}}
 %
 % \author{\Team}
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -2815,8 +2815,8 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[EXP]{\file_full_name:n, \@@_full_name:n}
-% \begin{macro}[EXP]{\@@_full_name_aux:nn}
+% \begin{macro}[EXP]{\file_full_name:n, \@@_full_name:n, \@@_full_name_aux:n}
+% \begin{macro}[EXP]{\@@_full_name_auxi:nn, \@@_full_name_auxii:nn}
 % \begin{macro}[EXP]{\@@_full_name_aux:Nnn}
 % \begin{macro}[EXP]{\@@_full_name_aux:nN}
 % \begin{macro}[EXP]{\@@_full_name_aux:nnN}
@@ -2849,10 +2849,41 @@
 \cs_new:Npn \@@_full_name:n #1
   {
     \tl_if_blank:nF {#1}
-      { \exp_args:Nne \@@_full_name_aux:nn {#1} { \@@_size:n {#1} } }
+      { \exp_args:Nne \@@_full_name_auxii:nn {#1} { \@@_full_name_aux:n {#1} } }
   }
-\cs_new:Npn \@@_full_name_aux:nn #1 #2
+%    \end{macrocode}
+%   To avoid repeated reading of files we need to cache the loading:
+%   this is important as the code here is used by \emph{all} file checks.
+%   The same marker is used in the \LaTeXe{} kernel, meaning that we get a
+%   double-saving with for example \cs{IfFileExists}. As this is all about
+%   performance, we use the low-level approach for the conditionals. For
+%   a file already seen, the size is reported as $-1$ so it's distinct from
+%   any non-cached ones.
+%    \begin{macrocode}
+\cs_new:Npn \@@_full_name_aux:n #1
   {
+    \if_cs_exist:w @@_seen_ \tl_to_str:n {#1} : \cs_end:
+      -1
+    \else:
+      \exp_args:Ne \@@_full_name_auxi:nn { \@@_size:n {#1} } {#1}
+    \fi:
+  }
+%    \end{macrocode}
+%   We will need the size of files later, and we have to avoid the
+%   \cs{scan_stop:} causing issues if we are raising the flag. Thus there is
+%   a slightly odd gobble here.
+%    \begin{macrocode}
+\cs_new:Npn \@@_full_name_auxi:nn #1#2
+  {
+    \if:w \scan_stop: #1 \scan_stop:
+    \else:
+      \exp_after:wN \use_none:n
+        \cs:w @@_seen_ \tl_to_str:n {#2} : \cs_end:
+      #1
+    \fi:
+  }
+\cs_new:Npn \@@_full_name_auxii:nn #1 #2
+  {
     \tl_if_blank:nTF {#2}
       {
         \seq_map_tokens:Nn \l_file_search_path_seq
@@ -2873,7 +2904,7 @@
 \cs_new:Npn \@@_full_name_aux:Nnn #1#2#3
   { \exp_args:Ne \@@_full_name_aux:nN { \tl_to_str:n {#3} / #2 } #1 }
 \cs_new:Npn \@@_full_name_aux:nN #1
-  { \exp_args:Nne \@@_full_name_aux:nnN {#1} { \@@_size:n {#1} } }
+  { \exp_args:Nne \@@_full_name_aux:nnN {#1} { \@@_full_name_aux:n {#1} } }
 \cs_new:Npn \@@_full_name_aux:nnN #1 #2 #3
   {
     \tl_if_blank:nF {#2}
@@ -2913,14 +2944,15 @@
       { #1 #3 }
   }
 \cs_new:Npn \@@_ext_check:nnn #1
-  { \exp_args:Nne \@@_ext_check:nnnn {#1} { \@@_size:n {#1} } }
+  { \exp_args:Nne \@@_ext_check:nnnn {#1} { \@@_full_name_aux:n {#1} } }
 \cs_new:Npn \@@_ext_check:nnnn #1#2#3#4
   {
     \tl_if_blank:nTF {#2}
       {#3}
       {
-        \int_compare:nNnTF
-          {#4} = {#2}
+        \bool_lazy_or:nnTF
+          { \int_compare_p:nNn {#4} = {#2} }
+          { \int_compare_p:nNn {#2} = { -1 } }
           {#1}
           {#3}
       }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -1991,6 +1991,15 @@
     LaTeX~has~been~asked~to~create~a~new~scan~mark~'#1'~
     but~this~name~has~already~been~used~for~a~scan~mark.
   }
+\msg_new:nnnn { seq } { item-too-large }
+  { Sequence~'#1'~does~not~have~an~item~#3 }
+  {
+    An~attempt~was~made~to~push~or~pop~the~item~at~position~#3~
+    of~'#1',~but~this~
+    \int_compare:nTF { #3 = 0 }
+      { position~does~not~exist. }
+      { sequence~only~has~#2~item \int_compare:nF { #2 = 1 } {s}. }
+  }
 \msg_new:nnnn { seq } { shuffle-too-large }
   { The~sequence~#1~is~too~long~to~be~shuffled~by~TeX. }
   {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -654,7 +654,7 @@
 %   The \meta{code} associated to this first case is left in the input
 %   stream, followed by the \meta{true code}, and other cases are
 %   discarded.  If none of the cases match then only the \meta{false
-%   code} is inserted. The function \cs{bool_case_true:n},
+%   code} is inserted. The function \cs{bool_case:n},
 %   which does nothing if there is no match, is
 %   also available. For example
 %   \begin{verbatim}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %
@@ -474,6 +474,24 @@
 %   \cs{tl_if_eq:nnTF}.
 % \end{function}
 %
+% \begin{function}[added = 2021-04-29, noTF]
+%   {\seq_set_item:Nnn, \seq_set_item:cnn, \seq_gset_item:Nnn, \seq_gset_item:cnn}
+%   \begin{syntax}
+%     \cs{seq_set_item:Nnn} \meta{seq~var} \Arg{int expr} \Arg{item}
+%     \cs{seq_set_item:NnnTF} \meta{seq~var} \Arg{int expr} \Arg{item} \Arg{true code} \Arg{false code}
+%   \end{syntax}
+%   Removes the item of \meta{sequence} at the position given by
+%   evaluating the \meta{int expr} and replaces it by
+%   \meta{item}.  Items are indexed from $1$ on the left/top of the
+%   \meta{sequence}, or from $-1$ on the right/bottom.  If the
+%   \meta{int expr} is zero or is larger (in absolute value)
+%   than the number of items in the sequence, the \meta{sequence} is not
+%   modified.  In these cases, \cs{seq_set_item:Nnn} raises an error
+%   while \cs{seq_set_item:NnnTF} runs the \meta{false code}.  In cases
+%   where the assignment was successful, \meta{true code} is run
+%   afterwards.
+% \end{function}
+%
 % \begin{function}[added = 2014-07-18]
 %   {
 %     \seq_reverse:N,  \seq_reverse:c,
@@ -621,6 +639,24 @@
 %   and so on) as~|#1| and the \meta{item} as~|#2|.
 % \end{function}
 %
+% \begin{function}[rEXP, added = 2023-05-10]
+%   {
+%     \seq_map_pairwise_function:NNN, \seq_map_pairwise_function:NcN,
+%     \seq_map_pairwise_function:cNN, \seq_map_pairwise_function:ccN
+%   }
+%   \begin{syntax}
+%     \cs{seq_map_pairwise_function:NNN} \meta{seq_1} \meta{seq_2} \meta{function}
+%   \end{syntax}
+%   Applies \meta{function} to every pair of items
+%   \meta{seq_1-item}--\meta{seq_2-item} from the two sequences, returning
+%   items from both sequences from left to right.   The \meta{function}
+%   receives two \texttt{n}-type arguments for each iteration. The  mapping
+%   terminates when
+%   the end of either sequence is reached (\emph{i.e.}~whichever sequence has
+%   fewer items determines how many iterations
+%   occur).
+% \end{function}
+%
 % \begin{function}[rEXP, updated = 2012-06-29]{\seq_map_break:}
 %   \begin{syntax}
 %     \cs{seq_map_break:}
@@ -1513,6 +1549,113 @@
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}{\@@_int_eval:w}
+%   Useful to more quickly go through items.
+%    \begin{macrocode}
+\cs_new_eq:NN \@@_int_eval:w \tex_numexpr:D
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[noTF]{\seq_set_item:Nnn, \seq_set_item:cnn, \seq_gset_item:Nnn, \seq_gset_item:cnn}
+% \begin{macro}{\@@_set_item:NnnNN, \@@_set_item:nnNNNN, \@@_set_item_false:nnNNNN, \@@_set_item:nNnnNNNN}
+% \begin{macro}[rEXP]{\@@_set_item:wn, \@@_set_item_end:w}
+%   The conditionals are distinguished from the |Nnn| versions by the
+%   last argument \cs{use_ii:nn} vs \cs{use_i:nn}.
+%    \begin{macrocode}
+\cs_new_protected:Npn \seq_set_item:Nnn #1#2#3
+  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_i:nn }
+\cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
+  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
+\cs_generate_variant:Nn \seq_set_item:Nnn { c }
+\cs_generate_variant:Nn \seq_gset_item:Nnn { c }
+\prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
+  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
+\prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
+  { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
+\prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
+\prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
+%    \end{macrocode}
+%   Save the item to be stored and evaluate the position and the sequence
+%   length only once.  Then depending on the sign of the position, check
+%   that it is not bigger than the length (in absolute value) nor zero.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_set_item:NnnNN #1#2#3
+  {
+    \tl_set:Nn \l_@@_internal_a_tl { \@@_item:n {#3} }
+    \exp_args:Nff \@@_set_item:nnNNNN
+      { \int_eval:n {#2} } { \seq_count:N #1 } #1 \use_none:nn
+  }
+\cs_new_protected:Npn \@@_set_item:nnNNNN #1#2
+  {
+    \int_compare:nNnTF {#1} > 0
+      { \int_compare:nNnF {#1} > {#2} { \@@_set_item:nNnnNNNN { #1 - 1 } } }
+      {
+        \int_compare:nNnF {#1} < {-#2}
+          {
+            \int_compare:nNnF {#1} = 0
+              { \@@_set_item:nNnnNNNN { #2 + #1 } }
+          }
+      }
+    \@@_set_item_false:nnNNNN {#1} {#2}
+  }
+%    \end{macrocode}
+%   If the position is not ok, \cs{@@_set_item_false:nnNNNN} calls an
+%   error or returns \texttt{false} (depending on the \cs{use_i:nn} vs
+%   \cs{use_ii:nn} argument mentioned above).
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_set_item_false:nnNNNN #1#2#3#4#5#6
+  {
+    #6
+      {
+        \msg_error:nnxxx { seq } { item-too-large }
+          { \token_to_str:N #3 } {#2} {#1}
+      }
+      { \prg_return_false: }
+  }
+%    \end{macrocode}
+%   If the position is ok, \cs{@@_set_item:nNnnNNNN} makes the assignment
+%   and returns \texttt{true} (in the case of conditionnals).  Here |#1|
+%   is an integer expression (position minus one), it needs to be
+%   evaluated.  The sequence |#5| starts with \cs{s_@@} (even if empty),
+%   which stops the integer expression and is absorbed by it.  The
+%   \cs{if_meaning:w} test is slightly faster than an integer test (but
+%   only works when testing against zero, hence the offset we chose in
+%   the position).  When we are done skipping items, insert the saved
+%   item \cs{l_@@_internal_a_tl}.  For |put| functions the last argument
+%   of \cs{@@_set_item_end:w} is \cs{use_none:nn} and it absorbs the
+%   item |#2| that we are removing: this is only useful for the |pop|
+%   functions.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_set_item:nNnnNNNN #1#2#3#4#5#6#7#8
+  {
+    #7 #5
+      {
+        \s_@@
+        \exp_after:wN \@@_set_item:wn
+        \int_value:w \@@_int_eval:w #1
+        #5 \s_@@_stop #6
+      }
+    #8 { } { \prg_return_true: }
+  }
+\cs_new:Npn \@@_set_item:wn #1 \@@_item:n #2
+  {
+    \if_meaning:w 0 #1 \@@_set_item_end:w \fi:
+    \exp_not:n { \@@_item:n {#2} }
+    \exp_after:wN \@@_set_item:wn
+    \int_value:w \@@_int_eval:w #1 - 1 \s_@@
+  }
+\cs_new:Npn \@@_set_item_end:w #1 \exp_not:n #2 #3 \s_@@ #4 \s_@@_stop #5
+  {
+    #1
+    \exp_not:o \l_@@_internal_a_tl
+    \exp_not:n {#4}
+    #5 #2
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
 % \begin{macro}
 %   {\seq_reverse:N, \seq_reverse:c, \seq_greverse:N, \seq_greverse:c}
 % \begin{macro}{\@@_reverse:NN}
@@ -2160,6 +2303,53 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}
+%   {
+%     \seq_map_pairwise_function:NNN, \seq_map_pairwise_function:NcN,
+%     \seq_map_pairwise_function:cNN, \seq_map_pairwise_function:ccN
+%   }
+% \begin{macro}
+%   {
+%     \@@_map_pairwise_function:wNN, \@@_map_pairwise_function:wNw,
+%     \@@_map_pairwise_function:Nnnwnn
+%   }
+%   The idea is to first expand both sequences, adding the
+%   usual |{ ? \prg_break: } { }| to the end of each one.  This is
+%   most conveniently done in two steps using an auxiliary function.
+%   The mapping then throws away the first tokens of |#2| and |#5|,
+%   which for items in both sequences are \cs{s_@@}
+%   \cs{@@_item:n}.  The function to be mapped are then be applied to
+%   the two entries.  When the code hits the end of one of the
+%   sequences, the break material stops the entire loop and tidy up.
+%   This avoids needing to find the count of the two sequences, or
+%   worrying about which is longer.
+%    \begin{macrocode}
+\cs_new:Npn \seq_map_pairwise_function:NNN #1#2#3
+  { \exp_after:wN \@@_map_pairwise_function:wNN #2 \s_@@_stop #1 #3 }
+\cs_new:Npn \@@_map_pairwise_function:wNN \s_@@ #1 \s_@@_stop #2#3
+  {
+    \exp_after:wN \@@_map_pairwise_function:wNw #2 \s_@@_stop #3
+      #1 { ? \prg_break: } { }
+    \prg_break_point:
+  }
+\cs_new:Npn \@@_map_pairwise_function:wNw \s_@@ #1 \s_@@_stop #2
+  {
+    \@@_map_pairwise_function:Nnnwnn #2
+      #1 { ? \prg_break: } { }
+    \s_@@_stop
+  }
+\cs_new:Npn \@@_map_pairwise_function:Nnnwnn #1#2#3#4 \s_@@_stop #5#6
+  {
+    \use_none:n #2
+    \use_none:n #5
+    #1 {#3} {#6}
+    \@@_map_pairwise_function:Nnnwnn #1 #4 \s_@@_stop
+  }
+\cs_generate_variant:Nn \seq_map_pairwise_function:NNN { Nc , c , cc }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
 % \begin{macro}{\seq_set_map_x:NNn, \seq_gset_map_x:NNn}
 % \begin{macro}{\@@_set_map_x:NNNn}
 %   Very similar to \cs{seq_set_filter:NNn}. We could actually

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-05-05}
+% \date{Released 2023-05-11}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3benchmark.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2023-04-19}{}
+\ProvidesExplPackage{l3benchmark}{2023-05-11}{}
   {L3 Experimental benchmarking}
 \fp_new:N \g_benchmark_duration_target_fp
 \fp_gset:Nn \g_benchmark_duration_target_fp { 1 }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3bitset.dtx
-\ProvidesExplPackage{l3bitset}{2023-04-19}{}
+\ProvidesExplPackage{l3bitset}{2023-05-11}{}
   {L3 Experimental bitset support}
 \cs_new_protected:Npn \bitset_new:N #1
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -28,7 +28,7 @@
 %% 
 %% File: l3draw.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2023-04-19}{}
+\ProvidesExplPackage{l3draw}{2023-05-11}{}
   {L3 Experimental core drawing support}
 \scan_new:N \s__draw_mark
 \scan_new:N \s__draw_stop

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3graphics.dtx
-\ProvidesExplPackage{l3graphics}{2023-04-19}{}
+\ProvidesExplPackage{l3graphics}{2023-05-11}{}
   {L3 Experimental graphics inclusion support}
 \dim_new:N \l__graphics_internal_dim
 \ior_new:N \l__graphics_internal_ior

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3opacity.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3opacity}{2023-04-19}{}
+\ProvidesExplPackage{l3opacity}{2023-05-11}{}
   {L3 Experimental opacity support}
 \cs_new_protected:Npn \opacity_select:n #1
   { \__opacity_select:nN {#1} \__opacity_backend_select:n }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3str-format.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2023-04-19}{}
+\ProvidesExplPackage{l3str-format}{2023-05-11}{}
   {L3 Experimental string formatting}
 \cs_generate_variant:Nn \use:nn { nf }
 \cs_generate_variant:Nn \use:nnn { fnf }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3sys-shell.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2023-04-19}{}
+\ProvidesExplPackage{l3sys-shell}{2023-05-11}{}
   {L3 Experimental system shell functions}
 \scan_new:N \s__sys_stop
 \quark_new:N \q__sys_nil

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: xcoffins.dtx
-\ProvidesExplPackage{xcoffins}{2023-04-19}{}
+\ProvidesExplPackage{xcoffins}{2023-05-11}{}
   {L3 Experimental design level coffins}
 \keys_define:nn { coffin }
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3galley}{2023-04-19}{}
+\ProvidesExplPackage{l3galley}{2023-05-11}{}
   {L3 Experimental galley code}
 \int_new:N \l__galley_tmp_int
 \seq_new:N \g__galley_tmpa_seq
@@ -563,7 +563,7 @@
     \tex_parshape:D
       \int_min:nn { \seq_count:N #1 } { \seq_count:N #2 }
       \exp_stop_f:
-      \seq_mapthread_function:NNN #1 #2
+      \seq_map_pairwise_function:NNN #1 #2
         \__galley_parshape_set_indents:nn
   }
 \cs_new:Npn \__galley_parshape_set_indents:nn #1#2

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: xgalley.dtx
-\ProvidesExplPackage{xgalley}{2023-04-19}{}
+\ProvidesExplPackage{xgalley}{2023-05-11}{}
   {L3 Experimental galley}
 \RequirePackage{xtemplate,l3galley}
 \clist_new:N \l__galley_tmpa_clist

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-05-11 20:14:09 UTC (rev 67074)
@@ -71,7 +71,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-05-05}%
+\def\ExplFileDate{2023-05-11}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -5810,6 +5810,72 @@
   }
 \cs_generate_variant:Nn \seq_remove_all:Nn  { c }
 \cs_generate_variant:Nn \seq_gremove_all:Nn { c }
+\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 }
+\cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
+\cs_generate_variant:Nn \seq_set_item:Nnn { c }
+\cs_generate_variant:Nn \seq_gset_item:Nnn { c }
+\prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
+\prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
+\prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
+\prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
+\cs_new_protected:Npn \__seq_set_item:NnnNN #1#2#3
+  {
+    \tl_set:Nn \l__seq_internal_a_tl { \__seq_item:n {#3} }
+    \exp_args:Nff \__seq_set_item:nnNNNN
+      { \int_eval:n {#2} } { \seq_count:N #1 } #1 \use_none:nn
+  }
+\cs_new_protected:Npn \__seq_set_item:nnNNNN #1#2
+  {
+    \int_compare:nNnTF {#1} > 0
+      { \int_compare:nNnF {#1} > {#2} { \__seq_set_item:nNnnNNNN { #1 - 1 } } }
+      {
+        \int_compare:nNnF {#1} < {-#2}
+          {
+            \int_compare:nNnF {#1} = 0
+              { \__seq_set_item:nNnnNNNN { #2 + #1 } }
+          }
+      }
+    \__seq_set_item_false:nnNNNN {#1} {#2}
+  }
+\cs_new_protected:Npn \__seq_set_item_false:nnNNNN #1#2#3#4#5#6
+  {
+    #6
+      {
+        \msg_error:nnxxx { seq } { item-too-large }
+          { \token_to_str:N #3 } {#2} {#1}
+      }
+      { \prg_return_false: }
+  }
+\cs_new_protected:Npn \__seq_set_item:nNnnNNNN #1#2#3#4#5#6#7#8
+  {
+    #7 #5
+      {
+        \s__seq
+        \exp_after:wN \__seq_set_item:wn
+        \int_value:w \__seq_int_eval:w #1
+        #5 \s__seq_stop #6
+      }
+    #8 { } { \prg_return_true: }
+  }
+\cs_new:Npn \__seq_set_item:wn #1 \__seq_item:n #2
+  {
+    \if_meaning:w 0 #1 \__seq_set_item_end:w \fi:
+    \exp_not:n { \__seq_item:n {#2} }
+    \exp_after:wN \__seq_set_item:wn
+    \int_value:w \__seq_int_eval:w #1 - 1 \s__seq
+  }
+\cs_new:Npn \__seq_set_item_end:w #1 \exp_not:n #2 #3 \s__seq #4 \s__seq_stop #5
+  {
+    #1
+    \exp_not:o \l__seq_internal_a_tl
+    \exp_not:n {#4}
+    #5 #2
+  }
 \cs_new_protected:Npn \seq_reverse:N
   { \__seq_reverse:NN \__kernel_tl_set:Nx }
 \cs_new_protected:Npn \seq_greverse:N
@@ -6168,6 +6234,28 @@
     \exp_after:wN #1
     \int_value:w \int_eval:w 1 + #2 ;
   }
+\cs_new:Npn \seq_map_pairwise_function:NNN #1#2#3
+  { \exp_after:wN \__seq_map_pairwise_function:wNN #2 \s__seq_stop #1 #3 }
+\cs_new:Npn \__seq_map_pairwise_function:wNN \s__seq #1 \s__seq_stop #2#3
+  {
+    \exp_after:wN \__seq_map_pairwise_function:wNw #2 \s__seq_stop #3
+      #1 { ? \prg_break: } { }
+    \prg_break_point:
+  }
+\cs_new:Npn \__seq_map_pairwise_function:wNw \s__seq #1 \s__seq_stop #2
+  {
+    \__seq_map_pairwise_function:Nnnwnn #2
+      #1 { ? \prg_break: } { }
+    \s__seq_stop
+  }
+\cs_new:Npn \__seq_map_pairwise_function:Nnnwnn #1#2#3#4 \s__seq_stop #5#6
+  {
+    \use_none:n #2
+    \use_none:n #5
+    #1 {#3} {#6}
+    \__seq_map_pairwise_function:Nnnwnn #1 #4 \s__seq_stop
+  }
+\cs_generate_variant:Nn \seq_map_pairwise_function:NNN { Nc , c , cc }
 \cs_new_protected:Npn \seq_set_map_x:NNn
   { \__seq_set_map_x:NNNn \__kernel_tl_set:Nx }
 \cs_new_protected:Npn \seq_gset_map_x:NNn
@@ -10708,6 +10796,15 @@
     LaTeX~has~been~asked~to~create~a~new~scan~mark~'#1'~
     but~this~name~has~already~been~used~for~a~scan~mark.
   }
+\msg_new:nnnn { seq } { item-too-large }
+  { Sequence~'#1'~does~not~have~an~item~#3 }
+  {
+    An~attempt~was~made~to~push~or~pop~the~item~at~position~#3~
+    of~'#1',~but~this~
+    \int_compare:nTF { #3 = 0 }
+      { position~does~not~exist. }
+      { sequence~only~has~#2~item \int_compare:nF { #2 = 1 } {s}. }
+  }
 \msg_new:nnnn { seq } { shuffle-too-large }
   { The~sequence~#1~is~too~long~to~be~shuffled~by~TeX. }
   {
@@ -11759,10 +11856,27 @@
 \cs_new:Npn \__file_full_name:n #1
   {
     \tl_if_blank:nF {#1}
-      { \exp_args:Nne \__file_full_name_aux:nn {#1} { \__file_size:n {#1} } }
+      { \exp_args:Nne \__file_full_name_auxii:nn {#1} { \__file_full_name_aux:n {#1} } }
   }
-\cs_new:Npn \__file_full_name_aux:nn #1 #2
+\cs_new:Npn \__file_full_name_aux:n #1
   {
+    \if_cs_exist:w __file_seen_ \tl_to_str:n {#1} : \cs_end:
+      -1
+    \else:
+      \exp_args:Ne \__file_full_name_auxi:nn { \__file_size:n {#1} } {#1}
+    \fi:
+  }
+\cs_new:Npn \__file_full_name_auxi:nn #1#2
+  {
+    \if:w \scan_stop: #1 \scan_stop:
+    \else:
+      \exp_after:wN \use_none:n
+        \cs:w __file_seen_ \tl_to_str:n {#2} : \cs_end:
+      #1
+    \fi:
+  }
+\cs_new:Npn \__file_full_name_auxii:nn #1 #2
+  {
     \tl_if_blank:nTF {#2}
       {
         \seq_map_tokens:Nn \l_file_search_path_seq
@@ -11779,7 +11893,7 @@
 \cs_new:Npn \__file_full_name_aux:Nnn #1#2#3
   { \exp_args:Ne \__file_full_name_aux:nN { \tl_to_str:n {#3} / #2 } #1 }
 \cs_new:Npn \__file_full_name_aux:nN #1
-  { \exp_args:Nne \__file_full_name_aux:nnN {#1} { \__file_size:n {#1} } }
+  { \exp_args:Nne \__file_full_name_aux:nnN {#1} { \__file_full_name_aux:n {#1} } }
 \cs_new:Npn \__file_full_name_aux:nnN #1 #2 #3
   {
     \tl_if_blank:nF {#2}
@@ -11814,14 +11928,15 @@
       { #1 #3 }
   }
 \cs_new:Npn \__file_ext_check:nnn #1
-  { \exp_args:Nne \__file_ext_check:nnnn {#1} { \__file_size:n {#1} } }
+  { \exp_args:Nne \__file_ext_check:nnnn {#1} { \__file_full_name_aux:n {#1} } }
 \cs_new:Npn \__file_ext_check:nnnn #1#2#3#4
   {
     \tl_if_blank:nTF {#2}
       {#3}
       {
-        \int_compare:nNnTF
-          {#4} = {#2}
+        \bool_lazy_or:nnTF
+          { \int_compare_p:nNn {#4} = {#2} }
+          { \int_compare_p:nNn {#2} = { -1 } }
           {#1}
           {#3}
       }
@@ -35555,28 +35670,6 @@
     \q_recursion_stop
 \group_end:
 %% File: l3candidates.dtx
-\cs_new:Npn \seq_mapthread_function:NNN #1#2#3
-  { \exp_after:wN \__seq_mapthread_function:wNN #2 \s__seq_stop #1 #3 }
-\cs_new:Npn \__seq_mapthread_function:wNN \s__seq #1 \s__seq_stop #2#3
-  {
-    \exp_after:wN \__seq_mapthread_function:wNw #2 \s__seq_stop #3
-      #1 { ? \prg_break: } { }
-    \prg_break_point:
-  }
-\cs_new:Npn \__seq_mapthread_function:wNw \s__seq #1 \s__seq_stop #2
-  {
-    \__seq_mapthread_function:Nnnwnn #2
-      #1 { ? \prg_break: } { }
-    \s__seq_stop
-  }
-\cs_new:Npn \__seq_mapthread_function:Nnnwnn #1#2#3#4 \s__seq_stop #5#6
-  {
-    \use_none:n #2
-    \use_none:n #5
-    #1 {#3} {#6}
-    \__seq_mapthread_function:Nnnwnn #1 #4 \s__seq_stop
-  }
-\cs_generate_variant:Nn \seq_mapthread_function:NNN { Nc , c , cc }
 \cs_new_protected:Npn \seq_set_filter:NNn
   { \__seq_set_filter:NNNn \__kernel_tl_set:Nx }
 \cs_new_protected:Npn \seq_gset_filter:NNn
@@ -35587,113 +35680,6 @@
     #1 #2 { #3 }
     \__seq_pop_item_def:
   }
-\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 }
-\cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
-\cs_generate_variant:Nn \seq_set_item:Nnn { c }
-\cs_generate_variant:Nn \seq_gset_item:Nnn { c }
-\prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
-\prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
-\prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
-\prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
-\cs_new_protected:Npn \__seq_set_item:NnnNN #1#2#3
-  {
-    \tl_set:Nn \l__seq_internal_a_tl { \__seq_item:n {#3} }
-    \exp_args:Nff \__seq_set_item:nnNNNN
-      { \int_eval:n {#2} } { \seq_count:N #1 } #1 \use_none:nn
-  }
-\cs_new_protected:Npn \__seq_set_item:nnNNNN #1#2
-  {
-    \int_compare:nNnTF {#1} > 0
-      { \int_compare:nNnF {#1} > {#2} { \__seq_set_item:nNnnNNNN { #1 - 1 } } }
-      {
-        \int_compare:nNnF {#1} < {-#2}
-          {
-            \int_compare:nNnF {#1} = 0
-              { \__seq_set_item:nNnnNNNN { #2 + #1 } }
-          }
-      }
-    \__seq_set_item_false:nnNNNN {#1} {#2}
-  }
-\cs_new_protected:Npn \__seq_set_item_false:nnNNNN #1#2#3#4#5#6
-  {
-    #6
-      {
-        \msg_error:nnxxx { seq } { item-too-large }
-          { \token_to_str:N #3 } {#2} {#1}
-      }
-      { \prg_return_false: }
-  }
-\msg_new:nnnn { seq } { item-too-large }
-  { Sequence~'#1'~does~not~have~an~item~#3 }
-  {
-    An~attempt~was~made~to~push~or~pop~the~item~at~position~#3~
-    of~'#1',~but~this~
-    \int_compare:nTF { #3 = 0 }
-      { position~does~not~exist. }
-      { sequence~only~has~#2~item \int_compare:nF { #2 = 1 } {s}. }
-  }
-\cs_new_protected:Npn \__seq_set_item:nNnnNNNN #1#2#3#4#5#6#7#8
-  {
-    #7 #5
-      {
-        \s__seq
-        \exp_after:wN \__seq_set_item:wn
-        \int_value:w \__seq_int_eval:w #1
-        #5 \s__seq_stop #6
-      }
-    #8 { } { \prg_return_true: }
-  }
-\cs_new:Npn \__seq_set_item:wn #1 \__seq_item:n #2
-  {
-    \if_meaning:w 0 #1 \__seq_set_item_end:w \fi:
-    \exp_not:n { \__seq_item:n {#2} }
-    \exp_after:wN \__seq_set_item:wn
-    \int_value:w \__seq_int_eval:w #1 - 1 \s__seq
-  }
-\cs_new:Npn \__seq_set_item_end:w #1 \exp_not:n #2 #3 \s__seq #4 \s__seq_stop #5
-  {
-    #1
-    \exp_not:o \l__seq_internal_a_tl
-    \exp_not:n {#4}
-    #5 #2
-  }
-\cs_new_protected:Npn \seq_pop_item:NnN #1#2#3
-  { \seq_pop_item:NnNTF #1 {#2} #3 { } { } }
-\cs_new_protected:Npn \seq_gpop_item:NnN #1#2#3
-  { \seq_gpop_item:NnNTF #1 {#2} #3 { } { } }
-\cs_generate_variant:Nn \seq_pop_item:NnN { c }
-\cs_generate_variant:Nn \seq_gpop_item:NnN { c }
-\prg_new_protected_conditional:Npnn \seq_pop_item:NnN #1#2#3 { TF , T , F }
-  { \__seq_pop_item:NnNN #1 {#2} #3 \__kernel_tl_set:Nx }
-\prg_new_protected_conditional:Npnn \seq_gpop_item:NnN #1#2#3 { TF , T , F }
-  { \__seq_pop_item:NnNN #1 {#2} #3 \__kernel_tl_gset:Nx }
-\prg_generate_conditional_variant:Nnn \seq_pop_item:NnN { c } { TF , T , F }
-\prg_generate_conditional_variant:Nnn \seq_gpop_item:NnN { c } { TF , T , F }
-\cs_new_protected:Npn \__seq_pop_item:NnNN #1#2#3#4
-  {
-    \tl_clear:N \l__seq_internal_a_tl
-    \tl_set:Nn \l__seq_internal_b_tl { \__kernel_tl_set:Nx #3 }
-    \exp_args:Nff \__seq_set_item:nnNNNN
-      { \int_eval:n {#2} } { \seq_count:N #1 }
-      #1 \__seq_pop_item_aux:w #4 \__seq_pop_item:nn
-  }
-\cs_new_protected:Npn \__seq_pop_item:nn #1#2
-  {
-    \if_meaning:w \prg_return_false: #2
-      \l__seq_internal_b_tl { \exp_not:N \q_no_value }
-    \fi:
-    #2
-  }
-\cs_new:Npn \__seq_pop_item_aux:w \__seq_item:n #1
-  {
-    \if_false: { \fi: }
-    \l__seq_internal_b_tl { \if_false: } \fi: \exp_not:n {#1}
-  }
 \cs_new_protected:Npn \tl_build_begin:N #1
   { \__tl_build_begin:NN \cs_set_nopar:Npx #1 }
 \cs_new_protected:Npn \tl_build_gbegin:N #1
@@ -36132,6 +36118,8 @@
 \cs_gset_protected:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
 \__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_function:NN }
 \cs_gset:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
+\__kernel_patch_deprecation:nnNNpn { 2023-05-10 } { \seq_mapthread_function:NNN }
+\cs_gset:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
 \__kernel_patch_deprecation:nnNNpn { 2021-01-11 } { (no~longer~required) }
 \cs_gset_protected:Npn \sys_load_deprecation: { }
 \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n }

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

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-05-11 20:14:09 UTC (rev 67074)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-05-05}%
+\def\ExplFileDate{2023-05-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-05-11 20:11:39 UTC (rev 67073)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-05-11 20:14:09 UTC (rev 67074)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-05-05}%
+\def\ExplFileDate{2023-05-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%



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