texlive[67514] Master/texmf-dist: l3kernel (30jun23)

commits+karl at tug.org commits+karl at tug.org
Fri Jun 30 22:51:06 CEST 2023


Revision: 67514
          http://tug.org/svn/texlive?view=revision&revision=67514
Author:   karl
Date:     2023-06-30 22:51:06 +0200 (Fri, 30 Jun 2023)
Log Message:
-----------
l3kernel (30jun23)

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2023-06-30 20:51:06 UTC (rev 67514)
@@ -7,6 +7,20 @@
 
 ## [Unreleased]
 
+## [2023-06-30]
+
+### Added
+- `\codepoint_to_category:n`
+
+### Changed
+- Drop notes about slow `\expanded` emulation. `\expanded` is required since
+  release 2023-05-15
+- Sync engine/primitive requirements in `expl3.dtx` with code and README
+
+### Fixed
+- Case changing of Greek characters with complex NFD representation (issue \#1236)
+- Error recovery when wrongly applying abs to a tuple (issue \#1238)
+
 ## [2023-06-16]
 
 ### Changed
@@ -18,7 +32,6 @@
 - Expand (partial) paths in `\l_file_search_path_seq` and `\input at path`
   (see latex3/latex2e\#1086)
 
-
 ## [2023-06-05]
 
 ### Added
@@ -1463,7 +1476,8 @@
 - Step functions have been added for dim variables,
   e.g. `\dim_step_inline:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-06-16...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-06-30...HEAD
+[2023-06-30]: https://github.com/latex3/latex3/compare/2023-06-16...2023-06-30
 [2023-06-16]: https://github.com/latex3/latex3/compare/2023-06-05...2023-06-16
 [2023-06-05]: https://github.com/latex3/latex3/compare/2023-05-22...2023-06-05
 [2023-05-22]: https://github.com/latex3/latex3/compare/2023-05-15...2023-05-22

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2023-06-30 20:51:06 UTC (rev 67514)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2023-06-16
+Release 2023-06-30
 
 Overview
 --------
@@ -59,12 +59,11 @@
 (some by Lua emulation). The Japanese pTeX and upTeX gained all of the above
 (except `\ifincsname`) for TeX Live 2019 `\ifincsname` for TeX Live 2020.
 
-At present, the `\expanded` primitive is emulated if unavailable. This code is
-slow and imposes some coding restrictions. As such, it will be *removed* for TeX
-Live 2022.
+Starting from release 2023-05-15, the `\expanded` primitive is *required*.
+Its slow emulation has been removed.
 
 In addition to the above, engines which are fully Unicode-compatible
-must provde the functionality of the following primitives, documented in the
+must provide the functionality of the following primitives, documented in the
 LuaTeX manual
 
 - `\Uchar`

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-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2023-06-30 20:51:06 UTC (rev 67514)
@@ -62,7 +62,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
 
 \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-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2023-06-30 20:51:06 UTC (rev 67514)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
 
 \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-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2023-06-30 20:51:06 UTC (rev 67514)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
 
 \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-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2023-06-30 20:51:06 UTC (rev 67514)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
 
 \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-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2023-06-30 20:51:06 UTC (rev 67514)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2023-06-16}
+\date{Released 2023-06-30}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex	2023-06-30 20:51:06 UTC (rev 67514)
@@ -228,11 +228,10 @@
     this type of expansion. Functions which feature an \texttt{x}-type
     argument are \emph{not} expandable.
   \item[\texttt{e}] The \texttt{e} specifier is in many respects
-    identical to \texttt{x}, but with a very different implementation.
+    identical to \texttt{x}, but uses \tn{expanded} primitive.
+    Parameter character (usually~|#|) in the argument need not be doubled.
     Functions which feature an \texttt{e}-type argument may be
-    expandable.  The drawback is that \texttt{e} is extremely slow
-    (often more than $200$ times slower) in older engines, more
-    precisely in non-\LuaTeX{} engines older than 2019.
+    expandable.
   \item[\texttt{f}] The \texttt{f} specifier stands for \emph{full
     expansion}, and in contrast to \texttt{x} stops at the first
     non-expandable token (reading the argument from left to right) without

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -24,7 +24,7 @@
 %
 %<*driver|generic|package|2ekernel>
 %</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-06-16}%
+\def\ExplFileDate{2023-06-30}%
 %<*driver>
 \documentclass[full]{l3doc}
 \usepackage{graphicx}
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %
@@ -658,10 +658,9 @@
 %     text of an~\tn{edef}, and the expansion is passed to the function as
 %     a braced token list.  Expansion takes place until only unexpandable
 %     tokens are left.  |x|-type arguments cannot be nested.
-%   \item[e]  Fully-expanded token or braced token list which does
-%     not require doubled |#| tokens. This expansions is very similar
-%     to |x|-type but may be nested and does not require that |#|
-%     tokens are doubled.
+%   \item[e]  Fully-expanded token or braced token list.\\
+%     This expansion is very similar to |x|-type but may be nested and does
+%     not require that |#| tokens are doubled.  It uses \tn{expanded} primitive.
 %   \item[f] Expanding the first token recursively in a braced token
 %     list.\\ Almost the same as the |x| type except here the token list
 %     is expanded fully until the first unexpandable token is found and
@@ -965,27 +964,16 @@
 % \section{Engine/primitive requirements}
 %
 % To use \pkg{expl3} and the higher level packages provided by the
-% team, the minimal set of primitive requirements is currently
-% \begin{itemize}
-%    \item All of those from \TeX90.
-%    \item All of those from \eTeX{} \emph{excluding} |\TeXXeTstate|,
-%      |\beginL|, |\beginR|, |\endL| and |\endR| (\emph{i.e.}~excluding
-%      \TeX{}-\kern0pt-\reflectbox{\TeX{}}).
-%    \item Functionality equivalent to the \pdfTeX{} primitive
-%      |\pdfstrcmp|.
-% \end{itemize}
-% Any engine which defines |\pdfoutput| (\emph{i.e.}~allows direct production
-% of a PDF file without a DVI intermediate) must also provide |\pdfcolorstack|,
-% |\pdfliteral|, |\pdfmatrix|, |\pdfrestore| and |\pdfsave| or equivalent
-% functionality. Fully Unicode engines must provide a method for producing
-% character tokens in an expandable manner.
+% team, the minimal set of primitive requirements is currently described
+% in \href{README.md}{README.md}.
 %
 % Practically, these requirements are met by the engines
 % \begin{itemize}
-%    \item \pdfTeX{} v1.40 or later.
-%    \item \XeTeX{} v0.99992 or later.
-%    \item \LuaTeX{} v0.95 or later.
-%    \item e-(u)\pTeX{} mid-2012 or later.
+%    \item \pdfTeX{} v1.40.20 or later.
+%    \item \XeTeX{} v0.999991 or later.
+%    \item \LuaTeX{} v1.10 or later.
+%    \item e-(u)\pTeX{} v3.8.2 or later.
+%    \item Prote (2021) or later.
 % \end{itemize}
 %
 % Additional modules beyond the core of \pkg{expl3} may require additional

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %
@@ -1025,14 +1025,12 @@
 %   \begin{syntax}
 %     \cs{use:e} \Arg{expandable tokens}
 %   \end{syntax}
-%   Fully expands the \meta{token list} in an \texttt{x}-type manner,
-%   \emph{but} the function remains fully expandable, and parameter
-%   character (usually~|#|) need not be doubled.
+%   Fully expands the \meta{token list} in an \texttt{e}-type manner,
+%   in which parameter character (usually~|#|) need not be doubled, \emph{and}
+%   the function remains fully expandable.
 %   \begin{texnote}
-%     \cs{use:e} is a wrapper around the primitive \tn{expanded}
-%     where it is available:
-%     it requires two expansions to complete its action.
-%     When \tn{expanded} is not available this function is very slow.
+%     \cs{use:e} is a wrapper around the primitive \tn{expanded}.
+%     It requires two expansions to complete its action.
 %   \end{texnote}
 % \end{function}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %
@@ -211,7 +211,7 @@
   \def\LongText%
     {%
       The L3 programming layer requires the e-TeX primitives and the
-      \LineBreak 'pdfTeX extensions'  as described in the README file.
+      \LineBreak 'pdfTeX utilities' as described in the README file.
       \LineBreak
       These are available in the engines\LineBreak
       - pdfTeX v1.40.20\LineBreak

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -85,7 +85,7 @@
 %    require you to do updates, if the class changes.}}
 %
 % \author{\Team}
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %
@@ -222,12 +222,8 @@
 %
 % The |e| type expands all tokens fully, starting from the first.  More
 % precisely the expansion is identical to that of \TeX{}'s \tn{message}
-% (in particular |#| needs not be doubled).  It was added in May 2018.
-% In recent enough engines (starting around 2019) it relies on the
-% primitive \tn{expanded} hence is fast.  In older engines it is very
-% much slower.  As a result it should only be used in performance
-% critical code if typical users will have a recent installation of the
-% \TeX{} ecosystem.
+% (in particular |#| needs not be doubled).  It relies on the
+% primitive \tn{expanded} hence is fast.
 %
 % The |x| type expands all tokens fully, starting from the first.  In
 % contrast to |e|, all macro parameter characters |#| must be doubled,
@@ -306,11 +302,7 @@
 %   \item
 %     In contrast, |e|~expansion (full expansion, almost like~|x| except
 %     for the treatment of~|#|) does not prevent variants from being
-%     expandable (if the base function is).  The drawback is that
-%     |e|~expansion is very much slower in old engines (before 2019).
-%     Consider using |f|~expansion if that type of expansion is
-%     sufficient to perform the required expansion, or |x|~expansion if
-%     the variant will not itself need to be expandable.
+%     expandable (if the base function is).
 %   \item
 %     Finally |f|~expansion only expands the front of the token list,
 %     stopping at the first non-expandable token.  This may fail to
@@ -404,13 +396,6 @@
 %   \emph{after} reinsertion of the \meta{function}.
 %   Thus the \meta{function} may take more
 %   than one argument: all others are left unchanged.
-%   \begin{texnote}
-%     This relies on the \tn{expanded} primitive when available (in
-%     \LuaTeX{} and starting around 2019 in other engines).  Otherwise
-%     it uses some fall-back code that is very much slower.  As a result
-%     it should only be used in performance-critical code if typical
-%     users have a recent installation of the \TeX{} ecosystem.
-%   \end{texnote}
 % \end{function}
 %
 % \begin{function}[EXP]{\exp_args:Nf}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 % \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-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %
@@ -2108,15 +2108,16 @@
 %   map over all items in the tuple an auxiliary that dispatches to the
 %   type-appropriate sign-flipping function.
 %    \begin{macrocode}
-\cs_new:Npn \@@_tuple_set_sign_o:w #1
+\cs_new:Npn \@@_tuple_set_sign_o:w #1#2 @
   {
     \if_meaning:w 2 #1
       \exp_after:wN \@@_tuple_set_sign_aux_o:Nnw
     \fi:
     \@@_invalid_operation_o:nw { abs }
+    #2
   }
-\cs_new:Npn \@@_tuple_set_sign_aux_o:Nnw #1#2#3 @
-  { \@@_tuple_map_o:nw \@@_tuple_set_sign_aux_o:w #3 }
+\cs_new:Npn \@@_tuple_set_sign_aux_o:Nnw #1#2
+  { \@@_tuple_map_o:nw \@@_tuple_set_sign_aux_o:w }
 \cs_new:Npn \@@_tuple_set_sign_aux_o:w #1#2 ;
   {
     \@@_change_func_type:NNN #1 \@@_set_sign_o:w

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 % \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-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %
@@ -1285,7 +1285,7 @@
 %   We choose to retain stress diacritics, but we also need to recombine
 %   them for pdf\TeX{}. That is handled here.
 %    \begin{macrocode}
-\cs_new:Npn \_@@_change_case_upper_el_stress:nn #1#2
+\cs_new:Npn \@@_change_case_upper_el_stress:nn #1#2
   {
     \exp_args:Ne \@@_change_case_generate:n
       {
@@ -1717,8 +1717,9 @@
          {#1} {#2} {#3} {#4} {#5}
      }
      {
-       \@@_change_case_breathing_aux:nnnnn
-         {#1} {#2} {#3} {#4} {#6}
+       \@@_codepoint_process:nN
+         { \@@_change_case_breathing:nnnnnw {#1} {#2} {#3} {#4} }
+           #6 \q_mark
      }
   }
 \cs_new:Npn \@@_change_case_breathing_aux:nnnnn #1#2#3#4#5

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2023-06-16}
+% \date{Released 2023-06-30}
 %
 % \maketitle
 %
@@ -106,6 +106,22 @@
 %   category code $10$.
 % \end{function}
 %
+% \begin{function}[added = 2023-06-19, EXP]{\codepoint_to_category:n}
+%   \begin{syntax}
+%     \cs{codepoint_to_category:n} \Arg{codepoint}
+%   \end{syntax}
+%   Expands to the Unicode general category identifier of the \meta{codepoint}.
+%   The general category identifier is a string made up of two letter
+%   characters, the first uppercase and the second lowercase. The uppercase
+%   letters divide codepoints into broader groups, which are then refined
+%   by the lowercase letter. For example, codepoints representing letters
+%   all have identifiers starting \texttt{L}, for example \texttt{Lu}
+%   (uppercase letter), \texttt{Lt} (titlecase letter), \emph{etc.}
+%   Full details are available in the documentation provided by the Unicode
+%   Consortium: see
+%   \url{https://www.unicode.org/reports/tr44/#General_Category_Values}
+% \end{function}
+%
 % \begin{function}[added = 2022-10-09, EXP]{\codepoint_to_nfd:n}
 %   \begin{syntax}
 %     \cs{codepoint_to_nfd:n} \Arg{codepoint}
@@ -347,6 +363,21 @@
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}[EXP]{\codepoint_to_category:n}
+%   Get the value and convert back to the string.
+%    \begin{macrocode}
+\cs_new:Npn \codepoint_to_category:n #1
+  {
+    \cs:w
+      c_@@_category_
+      \tex_romannumeral:D 
+        \__kernel_codepoint_data:nn { category } {#1}
+      _str
+    \cs_end:
+  }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}[EXP]{\codepoint_to_nfd:n, \@@_to_nfd:n}
 % \begin{macro}[EXP]{\@@_to_nfd:nn}
 % \begin{macro}[EXP]{\@@_to_nfd:nnn}
@@ -461,7 +492,7 @@
 %    \begin{macrocode}
 \group_begin:
   \clist_map_inline:nn
-    { uppercase , lowercase }
+    { category , uppercase , lowercase }
     {
       \cs_set_nopar:cpn { l_@@_ #1 _block_clist } { }
       \cs_set_nopar:cpn { l_@@_ #1 _block_tl } { 1 }
@@ -477,6 +508,29 @@
   \cs_set_nopar:Npn \l_@@_next_codepoint_fint_tl { 0 }
   \cs_set_nopar:Npn \l_@@_matched_block_tl { 0 }
 %    \end{macrocode}
+% For Unicode general category, there needs to be numerical representation of
+% each possible value. As we need to go from string to number here, but the
+% other way elsewhere, we set up fast mappings both ways, but one set local
+% and the other as constants.
+%    \begin{macrocode}
+  \cs_set_protected:Npn \@@_data_auxi:w #1#2
+    {
+      \quark_if_recursion_tail_stop:n {#2}
+      \cs_set_nopar:cpn { l_@@_category_ #2 _tl } {#1}
+      \str_const:cn { c_@@_category_ \tex_romannumeral:D #1 _str } {#2}
+      \exp_args:Ne \@@_data_auxi:w { \int_eval:n { #1 + 1 } }
+    }
+  \@@_data_auxi:w { 1 }
+    { Lu } { Ll } { Lt } { Lm } { Lo }
+    { Mn } { Me } { Mc }
+    { Nd } { Nl } { No }
+    { Zs } { Zl } { Zp }
+    { Cc } { Cf } { Co } { Cs } { Cn }
+    { Pd } { Ps } { Pe } { Pc } { Po } { Pi } { Pf }
+    { Sm } { Sc } { Sk } { So }
+    \q_recursion_tail
+    \q_recursion_stop
+%    \end{macrocode}
 % Parse the main Unicode data file and pull out the NFD and case changing
 % data. The NFD data is stored on using the hash table approach and can yield
 % a predictable number of codepoints: one or two. We also need the case data,
@@ -491,7 +545,7 @@
           \tl_if_head_eq_charcode:nNF {#6}  < % >
             { \@@_data_auxii:w #1 ; #6 ~ \q_stop }
         }
-      \@@_data_auxiii:w #1 ; #2 ;
+      \@@_data_auxiii:w #1 ; #2 ; #3 ;
     }
   \cs_set_protected:Npn \@@_data_auxii:w #1 ; #2 ~ #3 \q_stop
     {
@@ -503,22 +557,27 @@
         }
     }
 %    \end{macrocode}
+% The category data needs to be converted from a string to the numerical
+% equivalent: a simple operation.
 % The case data is going to be stored as an offset from the parent character,
 % rather than an absolute value. We therefore deal with that plus the situation
-% where a codepoint has no mapping data in oen shot.
+% where a codepoint has no mapping data in one shot.
 %    \begin{macrocode}
   \cs_set_protected:Npn \@@_data_auxiii:w
-    #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ~ \q_stop
+    #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ; #9 ~ \q_stop
     {
       \use:e
         {
           \@@_data_auxiv:w
             #1 ; #2 ;
-            \@@_data_offset:nn {#1} {#6} ;
+            \@@_data_category:n {#3} ;
             \@@_data_offset:nn {#1} {#7} ;
-            #8;
+            \@@_data_offset:nn {#1} {#8} ;
+            #9;
         }
     }
+  \cs_set:Npn \@@_data_category:n #1
+    { \use:c { l_@@_category_ #1 _tl } }
   \cs_set:Npn \@@_data_offset:nn #1#2
     {
       \tl_if_blank:nTF {#2}
@@ -536,20 +595,21 @@
 % case exceptions are all stored as codepoints, with a fixed number of
 % balanced text as we know that there are never more than three.
 %    \begin{macrocode}
-  \cs_set_protected:Npn \@@_data_auxiv:w #1 ; #2 ; #3 ; #4 ; #5 ;
+  \cs_set_protected:Npn \@@_data_auxiv:w #1 ; #2 ; #3 ; #4 ; #5 ; #6 ;
     {
       \int_compare:nNnT {"#1} > \l_@@_next_codepoint_fint_tl
         {
-          \@@_data_auxvi:nnnw {#1} {#3} {#4}
+          \@@_data_auxv:nnnnw {#1} {#3} {#4} {#5}
             #2 Last> \q_stop
         }
-      \@@_add:nn { uppercase } {#3}
-      \@@_add:nn { lowercase } {#4}
-      \int_compare:nNnF {#3} = { \@@_data_offset:nn {#1} {#5} }
+      \@@_add:nn { category } {#3}
+      \@@_add:nn { uppercase } {#4}
+      \@@_add:nn { lowercase } {#5}
+      \int_compare:nNnF {#4} = { \@@_data_offset:nn {#1} {#6} }
         {
           \tl_const:cx
             { c_@@_titlecase_ \codepoint_str_generate:n {"#1} _tl }
-            { {"#5} { } { } }
+            { {"#6} { } { } }
         }
       \tl_set:Nx \l_@@_next_codepoint_fint_tl
         { \int_eval:n { "#1 + 1 } }
@@ -563,17 +623,22 @@
     }
 %    \end{macrocode}
 %  Distinguish between a range and a gap, and pass on the appropriate value(s).
+%  The general category for unassigned characters is \texttt{Cn}, so we
+%  find the correct value once and then use that.
 %    \begin{macrocode}
-  \cs_set_protected:Npn \@@_data_auxvi:nnnw #1#2#3#4 Last> #5 \q_stop
+  \cs_set_protected:Npx \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
     {
-       \tl_if_blank:nTF {#5}
+       \exp_not:N \tl_if_blank:nTF {#6}
          {
-           \@@_range:nnn {#1} { uppercase } { 0 }
-           \@@_range:nnn {#1} { lowercase } { 0 }
+           \exp_not:N \@@_range:nnn {#1} { category }
+             { \exp_not:V \l_@@_category_Cn_tl }
+           \exp_not:N \@@_range:nnn {#1} { uppercase } { 0 }
+           \exp_not:N \@@_range:nnn {#1} { lowercase } { 0 }
          }
          {
-           \@@_range:nnn {#1} { uppercase } {#2}
-           \@@_range:nnn {#1} { lowercase } {#3}
+           \exp_not:N \@@_range:nnn {#1} { category } {#2}
+           \exp_not:N \@@_range:nnn {#1} { uppercase } {#3}
+           \exp_not:N \@@_range:nnn {#1} { lowercase } {#4}
          }      
     }
 %    \end{macrocode}
@@ -672,7 +737,7 @@
 %    \begin{macrocode}
   \cs_set_protected:Npn \@@_finalise_blocks:
     {
-      \clist_map_inline:nn { uppercase , lowercase }
+      \clist_map_inline:nn { category , uppercase , lowercase }
         {
           \@@_range:nnn { 110000 } {##1} { 0 }
           \@@_finalise_blocks:n {##1}

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2023-06-30 20:51:06 UTC (rev 67514)
@@ -71,7 +71,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-06-16}%
+\def\ExplFileDate{2023-06-30}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -167,7 +167,7 @@
   \def\LongText%
     {%
       The L3 programming layer requires the e-TeX primitives and the
-      \LineBreak 'pdfTeX extensions'  as described in the README file.
+      \LineBreak 'pdfTeX utilities' as described in the README file.
       \LineBreak
       These are available in the engines\LineBreak
       - pdfTeX v1.40.20\LineBreak
@@ -17767,15 +17767,16 @@
       \if_case:w #3 \exp_stop_f: #1 \or: 1 \or: 0 \fi: \exp_stop_f:
     #4;
   }
-\cs_new:Npn \__fp_tuple_set_sign_o:w #1
+\cs_new:Npn \__fp_tuple_set_sign_o:w #1#2 @
   {
     \if_meaning:w 2 #1
       \exp_after:wN \__fp_tuple_set_sign_aux_o:Nnw
     \fi:
     \__fp_invalid_operation_o:nw { abs }
+    #2
   }
-\cs_new:Npn \__fp_tuple_set_sign_aux_o:Nnw #1#2#3 @
-  { \__fp_tuple_map_o:nw \__fp_tuple_set_sign_aux_o:w #3 }
+\cs_new:Npn \__fp_tuple_set_sign_aux_o:Nnw #1#2
+  { \__fp_tuple_map_o:nw \__fp_tuple_set_sign_aux_o:w }
 \cs_new:Npn \__fp_tuple_set_sign_aux_o:w #1#2 ;
   {
     \__fp_change_func_type:NNN #1 \__fp_set_sign_o:w
@@ -31661,6 +31662,15 @@
   }
 \cs_generate_variant:Nn \__codepoint_to_bytes_output:nnn { f }
 \cs_new:Npn \__codepoint_to_bytes_end: { }
+\cs_new:Npn \codepoint_to_category:n #1
+  {
+    \cs:w
+      c__codepoint_category_
+      \tex_romannumeral:D
+        \__kernel_codepoint_data:nn { category } {#1}
+      _str
+    \cs_end:
+  }
 \cs_new:Npn \codepoint_to_nfd:n #1
   { \exp_args:Ne \__codepoint_to_nfd:n { \int_eval:n {#1} } }
 \cs_new:Npn \__codepoint_to_nfd:n #1
@@ -31696,7 +31706,7 @@
 \ior_new:N \g__codepoint_data_ior
 \group_begin:
   \clist_map_inline:nn
-    { uppercase , lowercase }
+    { category , uppercase , lowercase }
     {
       \cs_set_nopar:cpn { l__codepoint_ #1 _block_clist } { }
       \cs_set_nopar:cpn { l__codepoint_ #1 _block_tl } { 1 }
@@ -31706,6 +31716,23 @@
     }
   \cs_set_nopar:Npn \l__codepoint_next_codepoint_fint_tl { 0 }
   \cs_set_nopar:Npn \l__codepoint_matched_block_tl { 0 }
+  \cs_set_protected:Npn \__codepoint_data_auxi:w #1#2
+    {
+      \quark_if_recursion_tail_stop:n {#2}
+      \cs_set_nopar:cpn { l__codepoint_category_ #2 _tl } {#1}
+      \str_const:cn { c__codepoint_category_ \tex_romannumeral:D #1 _str } {#2}
+      \exp_args:Ne \__codepoint_data_auxi:w { \int_eval:n { #1 + 1 } }
+    }
+  \__codepoint_data_auxi:w { 1 }
+    { Lu } { Ll } { Lt } { Lm } { Lo }
+    { Mn } { Me } { Mc }
+    { Nd } { Nl } { No }
+    { Zs } { Zl } { Zp }
+    { Cc } { Cf } { Co } { Cs } { Cn }
+    { Pd } { Ps } { Pe } { Pc } { Po } { Pi } { Pf }
+    { Sm } { Sc } { Sk } { So }
+    \q_recursion_tail
+    \q_recursion_stop
   \cs_set_protected:Npn \__codepoint_data_auxi:w
     #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ; #9 ;
     {
@@ -31714,7 +31741,7 @@
           \tl_if_head_eq_charcode:nNF {#6}  < % >
             { \__codepoint_data_auxii:w #1 ; #6 ~ \q_stop }
         }
-      \__codepoint_data_auxiii:w #1 ; #2 ;
+      \__codepoint_data_auxiii:w #1 ; #2 ; #3 ;
     }
   \cs_set_protected:Npn \__codepoint_data_auxii:w #1 ; #2 ~ #3 \q_stop
     {
@@ -31726,17 +31753,20 @@
         }
     }
   \cs_set_protected:Npn \__codepoint_data_auxiii:w
-    #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ~ \q_stop
+    #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ; #9 ~ \q_stop
     {
       \use:e
         {
           \__codepoint_data_auxiv:w
             #1 ; #2 ;
-            \__codepoint_data_offset:nn {#1} {#6} ;
+            \__codepoint_data_category:n {#3} ;
             \__codepoint_data_offset:nn {#1} {#7} ;
-            #8;
+            \__codepoint_data_offset:nn {#1} {#8} ;
+            #9;
         }
     }
+  \cs_set:Npn \__codepoint_data_category:n #1
+    { \use:c { l__codepoint_category_ #1 _tl } }
   \cs_set:Npn \__codepoint_data_offset:nn #1#2
     {
       \tl_if_blank:nTF {#2}
@@ -31743,20 +31773,21 @@
         { 0 }
         { \int_eval:n { "#2 - "#1 } }
     }
-  \cs_set_protected:Npn \__codepoint_data_auxiv:w #1 ; #2 ; #3 ; #4 ; #5 ;
+  \cs_set_protected:Npn \__codepoint_data_auxiv:w #1 ; #2 ; #3 ; #4 ; #5 ; #6 ;
     {
       \int_compare:nNnT {"#1} > \l__codepoint_next_codepoint_fint_tl
         {
-          \__codepoint_data_auxvi:nnnw {#1} {#3} {#4}
+          \__codepoint_data_auxv:nnnnw {#1} {#3} {#4} {#5}
             #2 Last> \q_stop
         }
-      \__codepoint_add:nn { uppercase } {#3}
-      \__codepoint_add:nn { lowercase } {#4}
-      \int_compare:nNnF {#3} = { \__codepoint_data_offset:nn {#1} {#5} }
+      \__codepoint_add:nn { category } {#3}
+      \__codepoint_add:nn { uppercase } {#4}
+      \__codepoint_add:nn { lowercase } {#5}
+      \int_compare:nNnF {#4} = { \__codepoint_data_offset:nn {#1} {#6} }
         {
           \tl_const:cx
             { c__codepoint_titlecase_ \codepoint_str_generate:n {"#1} _tl }
-            { {"#5} { } { } }
+            { {"#6} { } { } }
         }
       \tl_set:Nx \l__codepoint_next_codepoint_fint_tl
         { \int_eval:n { "#1 + 1 } }
@@ -31768,16 +31799,19 @@
         = \c__codepoint_block_size_int
         { \__codepoint_save_blocks:nn {#1} { 1 } }
     }
-  \cs_set_protected:Npn \__codepoint_data_auxvi:nnnw #1#2#3#4 Last> #5 \q_stop
+  \cs_set_protected:Npx \__codepoint_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
     {
-       \tl_if_blank:nTF {#5}
+       \exp_not:N \tl_if_blank:nTF {#6}
          {
-           \__codepoint_range:nnn {#1} { uppercase } { 0 }
-           \__codepoint_range:nnn {#1} { lowercase } { 0 }
+           \exp_not:N \__codepoint_range:nnn {#1} { category }
+             { \exp_not:V \l__codepoint_category_Cn_tl }
+           \exp_not:N \__codepoint_range:nnn {#1} { uppercase } { 0 }
+           \exp_not:N \__codepoint_range:nnn {#1} { lowercase } { 0 }
          }
          {
-           \__codepoint_range:nnn {#1} { uppercase } {#2}
-           \__codepoint_range:nnn {#1} { lowercase } {#3}
+           \exp_not:N \__codepoint_range:nnn {#1} { category } {#2}
+           \exp_not:N \__codepoint_range:nnn {#1} { uppercase } {#3}
+           \exp_not:N \__codepoint_range:nnn {#1} { lowercase } {#4}
          }
     }
   \cs_set_protected:Npn \__codepoint_range:nnn #1
@@ -31854,7 +31888,7 @@
     }
   \cs_set_protected:Npn \__codepoint_finalise_blocks:
     {
-      \clist_map_inline:nn { uppercase , lowercase }
+      \clist_map_inline:nn { category , uppercase , lowercase }
         {
           \__codepoint_range:nnn { 110000 } {##1} { 0 }
           \__codepoint_finalise_blocks:n {##1}
@@ -33943,8 +33977,9 @@
          {#1} {#2} {#3} {#4} {#5}
      }
      {
-       \__text_change_case_breathing_aux:nnnnn
-         {#1} {#2} {#3} {#4} {#6}
+       \__text_codepoint_process:nN
+         { \__text_change_case_breathing:nnnnnw {#1} {#2} {#3} {#4} }
+           #6 \q_mark
      }
   }
 \cs_new:Npn \__text_change_case_breathing_aux:nnnnn #1#2#3#4#5

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2023-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2023-06-30 20:51:06 UTC (rev 67514)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-06-16}%
+\def\ExplFileDate{2023-06-30}%
 \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-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2023-06-30 20:51:06 UTC (rev 67514)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-06-16}%
+\def\ExplFileDate{2023-06-30}%
 \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-06-30 20:50:47 UTC (rev 67513)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2023-06-30 20:51:06 UTC (rev 67514)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-06-16}%
+\def\ExplFileDate{2023-06-30}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%



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