texlive[56245] Master/texmf-dist: l3 (2sep20)

commits+karl at tug.org commits+karl at tug.org
Wed Sep 2 23:38:04 CEST 2020


Revision: 56245
          http://tug.org/svn/texlive?view=revision&revision=56245
Author:   karl
Date:     2020-09-02 23:38:04 +0200 (Wed, 02 Sep 2020)
Log Message:
-----------
l3 (2sep20)

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/l3color/l3color.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/l3pdf/l3pdf-code.pdf
    trunk/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.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/l3docstrip.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.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/l3color/l3color.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/l3pdf/l3pdf.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-base.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/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-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/l3color/l3color.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/l3pdf/l3pdf.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
    trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3deprecation.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88591.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885910.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885911.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885913.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885914.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885915.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885916.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88592.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88593.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88594.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88595.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88596.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88597.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88598.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88599.def

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2020-09-02 21:38:04 UTC (rev 56245)
@@ -7,6 +7,19 @@
 
 ## [Unreleased]
 
+## [2020-09-01]
+
+### Added
+- Support for `Gray` color model
+- Support for `hsb` color model
+- Support for `wave` color model
+
+### Changed
+- Better support for color separations
+
+### Fixed
+- Integer range for `HSB` color model
+
 ## [2020-08-07]
 
 ### Changed
@@ -155,7 +168,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/2020-08-07...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-01...HEAD
+[2020-09-01]: https://github.com/latex3/latex3/compare/2020-08-07...2020-09-01
 [2020-08-07]: https://github.com/latex3/latex3/compare/2020-07-17...2020-08-07
 [2020-07-17]: https://github.com/latex3/latex3/compare/2020-06-18...2020-07-17
 [2020-06-18]: https://github.com/latex3/latex3/compare/2020-06-03...2020-06-18

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2020-09-02 21:38:04 UTC (rev 56245)
@@ -1,7 +1,7 @@
 Experimental LaTeX3 Concepts
 ============================
 
-Release 2020-08-07
+Release 2020-09-01
 
 Overview
 --------

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

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.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/l3pdf/l3pdf-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3pdf/l3pdf.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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2020-09-02 21:38:04 UTC (rev 56245)
@@ -7,6 +7,23 @@
 
 ## [Unreleased]
 
+## [2020-09-01]
+
+### Added
+- `\hbox_overlap_center:n`
+
+### Changed
+- Backend setting for direct PDF output
+- Backend setting for XeTeX support
+
+### Deprecated
+- Backend setting `pdfmode`
+
+### Fixed
+- `\file_compare_timestamp:nNn(TF)` in LuaTeX (issue #792)
+- Text case changing and expansion where an excluded command is equivalent
+  to `\use:n`
+
 ## [2020-08-07]
 
 ### Changed
@@ -27,6 +44,7 @@
 
 ### Fixed
 - File lookup with `\input at path`
+- 8-bit encodings in `\str_set_convert:Nnnn`
 
 ### Changed
 - Implementation of `\file_parse_full_name:nNNN` now uses
@@ -37,6 +55,9 @@
 ### Removed
 - Functions deprecated at end of 2019
 
+### Deprecated
+- `\str_declare_eight_bit_encoding:nnn`
+
 ## [2020-06-18]
 
 ### Changed
@@ -734,7 +755,8 @@
 - Step func­tions have been added for dim vari­ables,
   e.g. `\dim_step_in­line:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2020-08-07...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-01...HEAD
+[2020-09-01]: https://github.com/latex3/latex3/compare/2020-08-07...2020-09-01
 [2020-08-07]: https://github.com/latex3/latex3/compare/2020-07-17...2020-08-07
 [2020-07-17]: https://github.com/latex3/latex3/compare/2020-06-18...2020-07-17
 [2020-06-18]: https://github.com/latex3/latex3/compare/2020-06-03...2020-06-18

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2020-09-02 21:38:04 UTC (rev 56245)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2020-08-07
+Release 2020-09-01
 
 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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2020-09-02 21:38:04 UTC (rev 56245)
@@ -54,7 +54,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2020-08-07}
+\date{Released 2020-09-01}
 
 \pagenumbering{roman}
 \maketitle

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt	2020-09-02 21:38:04 UTC (rev 56245)
@@ -36,6 +36,7 @@
 \hbox_unpack_clear:N              2020
 \l_keys_key_tl                    2022
 \l_keys_path_tl                   2022
+\str_declare_eight_bit_encoding:nnn 2022
 \str_fold_case:n                  2022
 \str_fold_case:V                  2022
 \str_lower_case:f                 2022

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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2020-09-02 21:38:04 UTC (rev 56245)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2020-08-07}
+\date{Released 2020-09-01}
 
 \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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2020-09-02 21:38:04 UTC (rev 56245)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2020-08-07}
+\date{Released 2020-09-01}
 
 \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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2020-09-02 21:38:04 UTC (rev 56245)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2020-08-07}
+\date{Released 2020-09-01}
 
 \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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2020-09-02 21:38:04 UTC (rev 56245)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2020-08-07}
+\date{Released 2020-09-01}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -129,7 +129,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2020-08-07}{}
+\ProvidesExplPackage{l3benchmark}{2020-09-01}{}
   {L3 Experimental benchmarking}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -59,7 +59,7 @@
 % or print. Parameter-based models can describe a very large number of unique
 % colors, and have a varying number of \emph{axes} which define a color
 % space. In contrast, various proprietary models are available which define
-% \emph{spot} colors.
+% \emph{spot} colors (more formally separations).
 %
 % Core models are used to pass color information to output; these are
 % \enquote{native} to \pkg{l3color}. Core models use real numbers in the range
@@ -71,9 +71,6 @@
 %     the components
 %   \item \texttt{cmyk} Cyan-magenta-yellow-black color, with four axes, one for
 %     each of the components
-%   \item \texttt{spot} Spot color, with one value, the name of the color
-%     (see \url{https://helpx.adobe.com/indesign/using/spot-process-colors.html}
-%     for details of the use of spot colors in print)
 % \end{itemize}
 % There are also interface models: these are convenient for users but have
 % to be manipulated before storing/passing to the backend. Interface models
@@ -80,22 +77,32 @@
 % are primarily integer-based: see below for more detail. The supported
 % interface models are
 % \begin{itemize}
+%   \item \texttt{Gray} Grayscale color, with a single axis running from
+%     $0$ (fully black) to $15$ (fully white)
+%   \item \texttt{hsb} Hue-saturation-brightness color, with three axes,all 
+%     real values in the range $[0,1]$ for hue saturation and brightness
 %   \item \texttt{Hsb} Hue-saturation-brightness color, with three axes, integer
 %     in the range $[0,360]$ for hue, real values in the range $[0,1]$ for
 %     saturation and brightness
-%   \item \texttt{HSB} Hue-saturation-brightness color, with three axes, integer
-%     in the range $[0,360]$ for hue, integer values in the range $[0,255]$ for
-%     saturation and brightness
+%   \item \texttt{HSB} Hue-saturation-brightness color, with three axes, integers
+%     in the range $[0,240]$ for hue, saturation and brightness
 %   \item \texttt{HTML} HTML format representation of RGB color given as a
 %     single six-digit hexadecimal number
 %   \item \texttt{RGB} Red-green-blue color, with three axes, one for each of
 %     the components, values as integers from $0$ to $255$
+%   \item \texttt{wave} Light wavelength, a real number in the range
+%     $380$ to $780$ (nanometres)
 % \end{itemize}
 % All interface models are internally stored as |rgb|.
 % 
-% Additional models may be created to allow mixing of spot colors
+% To allow parsing of data from \pkg{xcolor}, any leading model up the first
+% \texttt{:} will be discarded; the approach of selecting an internal form
+% for data is \emph{not} used in \pkg{l3color}.
+% 
+% Additional models may be created to allow mixing of separation colors
 % with each other or with those from other models. See
-% Section~\ref{l3color:sec:new-models} for more detail of spot color support.
+% Section~\ref{l3color:sec:new-models} for more detail of color support
+% for additional models.
 %
 % When color is selected by model, the \meta{values} given are specified as
 % a comma-separated list. The length of the list will therefore be determined
@@ -327,7 +334,7 @@
 %   \meta{tl}.
 % \end{function}
 %
-% \begin{function}{\color_export:nnN}
+% \begin{function}{\color_export:nnnN}
 %   \begin{syntax}
 %     \cs{color_export:nnnN} \Arg{model} \Arg{value(s)} \Arg{format} \Arg{tl}
 %   \end{syntax}
@@ -405,7 +412,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3color}{2020-08-07}{}
+\ProvidesExplPackage{l3color}{2020-09-01}{}
   {L3 Experimental color support}
 %    \end{macrocode}
 %
@@ -593,7 +600,6 @@
 %    \begin{macrocode}
 \cs_new_protected:Npx \@@_parse:nN #1#2
   {
-%<*package>
     \exp_not:N \@@_backend_pickup:N \exp_not:N \l_@@_current_tl
     \tl_set:Nx \exp_not:c { l_@@_named_ . _tl }
       { \exp_not:N \@@_model:N \exp_not:N \l_@@_current_tl }
@@ -600,7 +606,6 @@
     \prop_put:NVx \exp_not:c { l_@@_named_ . _prop }
       \exp_not:c { l_@@_named_ . _tl }
       { \exp_not:N \@@_values:N \exp_not:N \l_@@_current_tl }
-%</package>
     \exp_not:N \exp_args:Ne \exp_not:N \@@_parse_aux:nN
       { \exp_not:N \tl_to_str:n {#1} } #2
   }
@@ -822,11 +827,10 @@
 % \begin{macro}[EXP]
 %   {
 %     \@@_parse_model_gray:w, \@@_parse_model_rgb:w,
-%     \@@_parse_model_cmyk:w, \@@_parse_model_spot:w
+%     \@@_parse_model_cmyk:w
 %   }
 % \begin{macro}[EXP]{\@@_parse_number:n}
 % \begin{macro}[EXP]{\@@_parse_number:w}
-% \begin{macro}[EXP]{\@@_parse_spot_aux:w}
 %   Turn the input into internal form, also tidying up the number quickly.
 %    \begin{macrocode}
 \cs_new:Npn \@@_parse_model_gray:w #1 , #2 \s_@@_stop
@@ -850,13 +854,6 @@
       \@@_parse_number:n {#4}
     }
   }
-\cs_new:Npn \@@_parse_model_spot:w #1 , #2 \s_@@_stop
-  {
-    { spot }
-    { \@@_parse_spot_aux:w #1 ! 100 ! \s_@@_stop }
-  }
-\cs_new:Npn \@@_parse_spot_aux:w #1 ! #2 ! #3 \s_@@_stop
-  { #1 ~ \fp_eval:n { #2 / 100 } }
 \cs_new:Npn \@@_parse_number:n #1
   {  \@@_parse_number:w #1 . 0 . \s_@@_stop }
 \cs_new:Npn \@@_parse_number:w #1 . #2 . #3 \s_@@_stop
@@ -865,14 +862,34 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
-% \end{macro}
 %
 % \begin{macro}[EXP]
 %   {
+%     \@@_parse_model_Gray:w, \@@_parse_model_hsb:w,
 %     \@@_parse_model_Hsb:w, \@@_parse_model_HSB:w,
 %     \@@_parse_model_HTML:w, \@@_parse_model_RGB:w
 %   }
+% \begin{macro}[EXP]{\@@_parse_model_hsb:nnn, \@@_parse_model_hsb_aux:nnn}
+% \begin{macro}[EXP]{\@@_parse_model_hsb:nnnn}
+% \begin{macro}[EXP]{\@@_parse_model_hsb:nnnnn}
+% \begin{macro}[EXP]
+%   {
+%     \@@_parse_model_hsb_0:nnnn ,
+%     \@@_parse_model_hsb_1:nnnn ,
+%     \@@_parse_model_hsb_2:nnnn ,
+%     \@@_parse_model_hsb_3:nnnn ,
+%     \@@_parse_model_hsb_4:nnnn ,
+%     \@@_parse_model_hsb_5:nnnn
+%   }
+% \begin{macro}[EXP]{\@@_parse_model_wave:w}
+% \begin{macro}[EXP]
+%   {\@@_parse_model_wave_auxi:nn, \@@_parse_model_wave_auxii:nn}
+% \begin{macro}[EXP]{\@@_parse_model_wave_rho:n}
 %    \begin{macrocode}
+\cs_new:Npn \@@_parse_model_Gray:w #1 , #2 \s_@@_stop
+  { { gray } { \fp_eval:n { #1 / 15 } } }
+\cs_new:Npn \@@_parse_model_hsb:w #1 , #2 , #3 , #4 \s_@@_stop
+  { \@@_parse_model_hsb:nnn {#1} {#2} {#3} }
 \cs_new:Npn \@@_parse_model_Hsb:w #1 , #2 , #3 , #4 \s_@@_stop
   {
     \exp_args:Ne \@@_parse_model_hsb:nnn { \fp_eval:n { #1 / 360 } }
@@ -923,9 +940,9 @@
 \cs_new:Npn \@@_parse_model_HSB:w #1 , #2 , #3 , #4 \s_@@_stop
   {
     \exp_args:Neee \@@_parse_model_hsb:nnn
-      { \fp_eval:n {#1 / 360} }
-      { \fp_eval:n {#2 / 255} }
-      { \fp_eval:n {#3 / 255} }
+      { \fp_eval:n {#1 / 240} }
+      { \fp_eval:n {#2 / 240} }
+      { \fp_eval:n {#3 / 240} }
   }
 \cs_new:Npn \@@_parse_model_HTML:w #1 , #2 \s_@@_stop
   { \@@_parse_model_HTML_aux:w #1 0 0 0 0 0 0 \s_@@_stop }
@@ -948,7 +965,84 @@
     }
   }
 %    \end{macrocode}
+%  Following the description in the \pkg{xcolor} manual. As we always use |rgb|,
+%  there is no need to find the sixth, we just pas the information straight
+%  to the |hsb| auxiliary defined earlier.
+%    \begin{macrocode}
+\cs_new:Npn \@@_parse_model_wave:w #1 , #2 \s_@@_stop
+  {
+    { rgb }
+    {
+      \fp_compare:nNnTF {#1} < { 420 }
+        { \@@_parse_model_wave_auxi:nn {#1} { 0.3 + 0.7 * (#1 - 380) / 40 }
+        }
+        {
+          \fp_compare:nNnTF {#1} > { 700 }
+            { \@@_parse_model_wave_auxi:nn {#1} { 0.3 + 0.7 * (#1 - 780) / -80 } }
+            { \@@_parse_model_wave_auxi:nn {#1} { 1 } }
+        }
+    }
+  }
+\cs_new:Npn \@@_parse_model_wave_auxi:nn #1#2
+  {
+    \fp_compare:nNnTF {#1} < { 440 }
+      {
+        \@@_parse_model_wave_auxii:nn
+          { 4 + \@@_parse_model_wave_rho:n { (#1 - 440) / -60 } }
+          {#2}
+      }
+      {
+        \fp_compare:nNnTF {#1} < { 490 }
+          {
+            \@@_parse_model_wave_auxii:nn 
+              { 4 - \@@_parse_model_wave_rho:n { (#1 - 440) / 50 } }
+              {#2}
+          }
+          {
+            \fp_compare:nNnTF {#1} < { 510 }
+              {
+                \@@_parse_model_wave_auxii:nn
+                  { 2 + \@@_parse_model_wave_rho:n { (#1 - 510) / -20 } }
+                  {#2}
+              }
+              {
+                \fp_compare:nNnTF {#1} < { 580 }
+                  {
+                    \@@_parse_model_wave_auxii:nn
+                      { 2 - \@@_parse_model_wave_rho:n { (#1 - 510) / 70 } }
+                      {#2}
+                  }
+                  {
+                    \fp_compare:nNnTF {#1} < { 645 }
+                      {
+                        \@@_parse_model_wave_auxii:nn
+                          { \@@_parse_model_wave_rho:n { (#1 - 645) / -65 } }
+                          {#2}
+                      }
+                      { \@@_parse_model_wave_auxii:nn { 0 } {#2} }
+                  }
+              }
+          }
+      }
+  }
+\cs_new:Npn \@@_parse_model_wave_auxii:nn #1#2
+  {
+    \exp_args:Neee \@@_parse_model_hsb_aux:nnn
+      { \fp_eval:n {#1} } 
+      { 1 }
+      { \@@_parse_model_wave_rho:n {#2} }
+  }
+\cs_new:Npn \@@_parse_model_wave_rho:n #1
+  { \fp_eval:n { min(1, max(0,#1) ) } }
+%    \end{macrocode}
 % \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \subsection{Selecting colors (and color models)}
 %
@@ -1127,6 +1221,7 @@
 % \begin{macro}{\@@_set:nn}
 % \begin{macro}{\@@_set:nnw}
 % \begin{macro}{\color_set:nnn}
+% \begin{macro}{\@@_set_colon:nnw}
 % \begin{macro}{\@@_set_loop:nw}
 % \begin{macro}{\color_set_eq:nn}
 %   Defining named colors means working through the model list and saving
@@ -1189,15 +1284,28 @@
           }
       }
   }
-\cs_new_protected:Npn \color_set:nnn #1#2#3
+\cs_new_protected:Npx \color_set:nnn #1#2#3
   {
-    \str_if_eq:nnF {#1} { . }
+    \exp_not:N \str_if_eq:nnF {#1} { . }
       {
         \tl_clear_new:c { l_@@_named_ #1 _tl }
         \prop_clear_new:c { l_@@_named_ #1 _prop }
-        \@@_set_loop:nw {#1} #2 / / \s_@@_mark #3 / / \s_@@_stop
+        \exp_not:N \@@_set_colon:nnw {#1} {#3}
+          #2 \c_colon_str \c_colon_str \exp_not:N \s_@@_stop
       }
   }
+\use:x
+  {
+    \cs_new_protected:Npn \exp_not:N \@@_set_colon:nnw
+      ##1##2 ##3 \c_colon_str ##4 \c_colon_str
+      ##5 \exp_not:N \s_@@_stop
+  }
+  {
+    \tl_if_blank:nTF {#4}
+      { \@@_set_loop:nw {#1} #3 }
+      { \@@_set_loop:nw {#1} #4 }
+        / / \s_@@_mark #2 / / \s_@@_stop
+  }
 \cs_new_protected:Npn \@@_set_loop:nw
   #1#2 / #3 \s_@@_mark #4 / #5 \s_@@_stop
   {
@@ -1242,9 +1350,10 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % A small set of colors are always defined.
-% \begin{macrocode}
+%    \begin{macrocode}
 \color_set:nnn { black } { gray } { 0 }
 \color_set:nnn { white } { gray } { 1 }
 \color_set:nnn { cyan }    { cmyk } { 1 , 0 , 0 , 0 }
@@ -1253,7 +1362,7 @@
 \color_set:nnn { red }   { rgb } { 1 , 0 , 0 }
 \color_set:nnn { green } { rgb } { 0 , 1 , 0 }
 \color_set:nnn { blue }  { rgb } { 0 , 0 , 1 }
-% \end{macrocode}
+%    \end{macrocode}
 %
 % \begin{variable}{\l_@@_named_._prop, \l_@@_named_._tl}
 %   A special named color: this is always defined though not fixed in
@@ -1457,9 +1566,6 @@
 % \begin{macro}{\@@_model_convert:nnn}
 % \begin{macro}{\@@_model_separation_cielab:nnnnnn}
 % \begin{macro}{\@@_model_separation_cielab:nnnnnnn}
-% \begin{macro}{\@@_model_separation_init:nnnnn}
-% \begin{macro}{\@@_model_separation_init_cielab:n}
-% \begin{macro}{\@@_model_separation_init_cielab:nnnnn}
 %   Set up a new model: in general this has to be handled by a family-dependent
 %   function. To avoid some \enquote{interesting} questions with casing, we
 %   fold the case of the family name. The key--value list should always be
@@ -1590,7 +1696,7 @@
       }
     \@@_model_convert:nnn {#1} { cmyk } { rgb }
     \@@_model_convert:nnn {#1} { cmyk } { gray }
-    \@@_model_separation_init:nnnnn {#2} { /DeviceCMYK } { }
+    \@@_backend_separation_init:nnnnn {#2} { /DeviceCMYK } { }
       { 0 ~ 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 ~ #6 }
   }
 \cs_new_protected:Npn \@@_model_separation_rgb:nnnnnn #1#2#3#4#5#6
@@ -1603,7 +1709,7 @@
       }
     \@@_model_convert:nnn {#1} { rgb } { cmyk }
     \@@_model_convert:nnn {#1} { rgb } { gray }
-    \@@_model_separation_init:nnnnn {#2} { /DeviceRGB } { }
+    \@@_backend_separation_init:nnnnn {#2} { /DeviceRGB } { }
       { 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 }
   }
 \cs_new_protected:Npn \@@_model_separation_gray:nnnnnn #1#2#3#4#5#6
@@ -1623,7 +1729,7 @@
         \fp_eval:n {##1 * #3} ~
         \fp_eval:n {##1 * #3}
       }
-    \@@_model_separation_init:nnnnn {#2} { /DeviceGray } { } { 0 } {#3}
+    \@@_backend_separation_init:nnnnn {#2} { /DeviceGray } { } { 0 } {#3}
   }
 %    \end{macrocode}
 %   Generic model conversion \emph{via} an alternative intermediate.
@@ -1665,8 +1771,8 @@
   {
     \tl_if_exist:cTF { c_@@_model_whitepoint_cielab_ #1 _tl }
       {
-        \@@_model_separation_init_cielab:n {#1}
-        \@@_model_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6}
+        \@@_backend_separation_init_cielab:n {#1}
+        \@@_backend_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6}
         \cs_new:cpn { @@_convert_ #2 _cmyk:w } ##1 ~ ##2 \s_@@_stop
           { 0 ~ 0 ~ 0 ~ 1 }
         \cs_new:cpn { @@_convert_ #2 _rgb:w } ##1 ~ ##2 \s_@@_stop
@@ -1680,63 +1786,6 @@
       }
   }
 %    \end{macrocode}
-%   Initialising the PDF structures needs two parts: creating an object
-%   containing the \enquote{real} name of the Separation, then adding a reference
-%   to that to each page. The latter uses the internal name of the \texttt{cs}.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_model_separation_init:nnnnn #1#2#3#4#5
-  {
-    \pdf_object_now:nx { array }
-      {
-        /Separation
-        / \str_convert_pdfname:n {#1} ~ #2 ~
-        <<
-          /FunctionType ~ 2
-          /Domain ~ [0 ~ 1]
-          \tl_if_blank:nF {#3} { /Range ~ [#3] }
-          /C0 ~ [#4] ~
-          /C1 ~ [#5] /N ~ 1
-        >>
-      }
-    \use:x
-      {
-        \pdfcoredict_gput:nnn
-          { Page / Resources / ColorSpace }
-          { color \int_use:N \g_@@_separation_int }
-          { \pdf_object_last: }
-      }
-  }
-\cs_if_exist:NF \pdf_object_now:nn
-  { \cs_gset_protected:Npn \@@_model_separation_init:nnnnn #1#2#3#4#5 { } }
-%    \end{macrocode}
-%   For CIELAB colors, we need one object per document for the illuminant,
-%   plus initialisation of the color space referencing that object.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_model_separation_init_cielab:n #1
-  {
-    \pdf_object_new:nn { @@_illuminant_cielab_ #1 } { array }
-    \pdf_object_write:nx { @@_illuminant_cielab_ #1 }
-      {
-        /Lab ~
-        <<
-         /WhitePoint ~
-           [ \tl_use:c { c_@@_model_whitepoint_cielab_ #1 _tl } ]
-         /Range ~ [ \c_@@_model_range_lab_tl ]
-        >>
-     }
-  }
-\cs_if_exist:NF \pdf_object_new:nn
-  { \cs_gset_protected:Npn \@@_model_separation_init_cielab:n #1 { } }
-\cs_new_protected:Npn \@@_model_separation_init_cielab:nnnnn #1#2#3#4#5
-  {
-    \@@_model_separation_init:nnnnn
-      {#2}
-      { \pdf_object_ref:n { @@_illuminant_cielab_ #1 } }
-      { \c_@@_model_range_lab_tl }
-      { 100 ~ 0 ~ 0 }
-      { #3 ~ #4 ~ #5 }
-  }
-%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
@@ -1746,9 +1795,6 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
 %
 % \subsection{Diagnostics}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -70,8 +70,12 @@
 %     these to fully understand them.
 %   \item \cs{pgftransformarrow}: Likely to be done when other arrow functions
 %     are added.
+%   \item \cs{pgftransformationadjustments}: Used mainly by CircuiTi\textit{k}Z
+%     although also for shapes, likely needs more use cases before addressing.
 %   \item \cs{pgflowlevelsynccm}, \cs{pgflowlevel}: Likely to be added when
 %     use cases are encountered in other parts of the code.
+%   \item \cs{pgfviewboxscope}: Seems very speicalied, need to understand the
+%     requirements here.
 % \end{itemize}
 %
 % \begin{variable}{\l_@@_matrix_active_bool}

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -110,7 +110,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -1136,7 +1136,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2020-08-07}{}
+\ProvidesExplPackage{l3draw}{2020-09-01}{}
   {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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -240,7 +240,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2020-08-07}{}
+\ProvidesExplPackage{l3graphics}{2020-09-01}{}
   {L3 Experimental graphics inclusion support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3pdf/l3pdf.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -190,7 +190,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3pdf}{2020-08-07}{}
+\ProvidesExplPackage{l3pdf}{2020-09-01}{}
   {L3 Experimental core PDF 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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -48,7 +48,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -166,7 +166,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2020-08-07}{}
+\ProvidesExplPackage{l3str-format}{2020-09-01}{}
   {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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -135,7 +135,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2020-08-07}{}
+\ProvidesExplPackage{l3sys-shell}{2020-09-01}{}
   {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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -56,7 +56,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -675,7 +675,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2020-08-07}{}
+\ProvidesExplPackage{xcoffins}{2020-09-01}{}
   {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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -686,7 +686,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2020-08-07}{}
+\ProvidesExplPackage{l3galley}{2020-09-01}{}
   {L3 Experimental galley code}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -47,7 +47,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -734,7 +734,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2020-08-07}{}
+\ProvidesExplPackage{xgalley}{2020-09-01}{}
   {L3 Experimental galley}
 \RequirePackage{xparse,xtemplate,l3galley}
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -24,7 +24,7 @@
 %
 %<*driver|generic|package|2ekernel>
 %</driver|generic|package|2ekernel>
-\def\ExplFileDate{2020-08-07}%
+\def\ExplFileDate{2020-09-01}%
 %<*driver>
 \documentclass[full]{l3doc}
 \usepackage{graphicx}
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -924,10 +924,13 @@
 %   \item[dvips] Use the \texttt{dvips} driver.
 %   \item[dvipdfmx] Use the \texttt{dvipdfmx} driver.
 %   \item[dvisvgm] Use the \texttt{dvisvgm} driver.
-%   \item[pdfmode] Use the \texttt{pdfmode} driver (direct PDF output from
-%     \pdfTeX{} or \LuaTeX{}).
-%   \item[xdvipdfmx] Use the \texttt{xdvipdfmx} driver (\XeTeX{} only).
+%   \item[luatex] Use the direct PDF output mode of \LuaTeX{}
+%   \item[pdftex] Use the direct PDF output mode of \pdfTeX{}
+%   \item[xetex] Use the \XeTeX{} version of the \texttt{dvipdfmx} driver.
 % \end{itemize}
+% For historical reasons, there is also \texttt{pdfmode} as an equivalent of
+% \texttt{luatex} or \texttt{pdftex}, and \texttt{xdvipdfmx} as
+% an equivalent to \texttt{xetex}, but these are deprecated
 %
 % \DescribeOption{suppress-backend-headers}
 % The \texttt{suppress-backend-headers} option suppresses loading of
@@ -1064,8 +1067,10 @@
 %   \url{https://github.com/latex3/latex3/issues/781}).
 %    \begin{macrocode}
 %<*2ekernel>
-\global\expandafter\let\csname\detokenize
-  {c__kernel_expl_date_tl}\endcsname\ExplFileDate
+\unless\ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname
+  \global\expandafter\let\csname\detokenize
+    {c__kernel_expl_date_tl}\endcsname\ExplFileDate
+\fi
 %</2ekernel>
 %    \end{macrocode}
 % \end{macro}
@@ -1243,86 +1248,50 @@
 %<@@=expl>
 %    \end{macrocode}
 %
-% Several times users reported this error when loading \pkg{expl3}:
-% \begin{verbatim}
-% ! Undefined control sequence.
-% l.67   \bool
-%             _new:N \g__expl_reload_bool
-% \end{verbatim}
-% raised in the reload block below.  This happens because the reload
-% check below assumes that if the boolean \cs{g_@@_reload_bool} doesn't
-% exist, this file is being loaded for the first time, and \pkg{expl3}
-% syntax is on.  This is a bit of a stretch for assumptions, but it's
-% valid as long as everything's in sync.  However the problem reported
-% happened because of a stray format file in the user tree which didn't
-% have the reload code defined here (commit \texttt{1d16336}), so the
-% \cs{g_@@_reload_bool} doesn't exist, but \pkg{expl3} syntax is off,
-% thus the error.
+% At this point, if we have \cs{c__kernel_expl_date_tl} defined, just
+% call the \cs{__kernel_dependency_version_check:Nn} auxiliary to check
+% if it matches \cs{ExplLoaderFileDate}.  Here the test is performed
+% only if \cs{c__kernel_expl_date_tl} exists because this file can be
+% loaded in a \LaTeXe{} format without \pkg{expl3} preloaded, where that
+% token list doesn't exist.
 %
-% At this point, if we have \cs{c__kernel_expl_date_tl} defined, the
-% situation is straightforward:  if it matches \cs{ExplLoaderFileDate},
-% then everything's as expected, so no need to worry.  If it doesn't,
-% then the current version of \pkg{expl3} differs from the one in the
-% format, so raise a fatal error:  the bahaviour is too unpredictable to
-% continue safely.  Also, if the error is to be raised, then we're
-% reloading, which means that \pkg{expl3} syntax is off, so we turn it
-% on for the message.
+% This is all done in the \texttt{package} \pkg{docstrip} guard because
+% it doesn't apply to \pkg{expl3.ltx}.
 %    \begin{macrocode}
+%<*package>
 \ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname
-  \expandafter\ifx\csname\detokenize
-      {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate
-  \else
-    \ExplSyntaxOn
-    \__kernel_msg_set:nnn { kernel } { mismatched-expl3 }
-      {
-        Mismatched~expl3~detected!~Loading~expl3~will~abort.
-        \\ \\
-        The~version~of~expl3~preloaded~in~LaTeX~is~
-        \c__kernel_expl_date_tl,~but~the~version~of~expl3~you~are~
-        trying~to~load~is~dated~\ExplLoaderFileDate.~This~is~most~
-        likely~due~to~a~stray~format~file~in~the~user~tree.~Please~
-        make~sure~that~your~LaTeX~format~is~updated.
-      }
-    \exp_after:wN \ExplSyntaxOff \use:n
-      {
-        \__kernel_msg_critical:nn { kernel } { mismatched-expl3 }
-        \use:c { fi: } \use:c { fi: }
-      }
-  \fi
+  \expandafter\@firstofone
+\else
 %    \end{macrocode}
-% If \cs{c__kernel_expl_date_tl} does \emph{not} exist, then we're on
-% uncharted lands (that is, any time prior to the version that
-% introduced this token list :-).  Two cases might be here, depending
-% whether \pkg{expl3} is loaded into the kernel or not. If we're loading
-% \pkg{expl3} \enquote{normally} as a package, \pkg{expl3} syntax is on.
-% Otherwise it's already loaded in the kernel and we're reloading
-% \file{expl3.sty} so (\file{expl3-code.tex} doesn't load again and)
-% \pkg{expl3} syntax is off.
+% If \cs{c__kernel_expl_date_tl} does \emph{not} exist we may be loading
+% in a format without \pkg{expl3} preloaded or in the earlier (although
+% still compatible) version in which the error mentioned above showed
+% up.  If loading as a package, \file{expl3-code.tex} got read and here
+% the \pkg{expl3} syntax is on.  Otherwise it was already loaded in a
+% sligtly older kernel, so we fire the incompatibility error message and
+% abort loading.
 %    \begin{macrocode}
-\else
   \ifodd\csname\detokenize{l__kernel_expl_bool}\endcsname
 %    \end{macrocode}
-%   Package mode; all should be fine, since \file{expl3.sty} and
-%   \file{expl3-code.tex} are both loaded in one go, so versions should
-%   match (if they don't, it's detected above).
-%   Also, we've just tested that \pkg{expl3} syntax is on, so the reload
-%   test below will return false and \cs{bool_new:N} will run correctly.
+%   In package mode all files are loaded in one go, so versions will
+%   match.  We just have to set \cs{c__kernel_expl_date_tl} so that
+%   further dependencies don't break:
 %    \begin{macrocode}
+    \global\expandafter\let\csname\detokenize
+      {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate
+    \expandafter\expandafter
+    \expandafter\@gobble
   \else
 %    \end{macrocode}
-%   In this branch we're reloading, but there are still two cases to
-%   consider (sigh\ldots); whether the version preloaded in the format
-%   is recent enough to have \cs{g_@@_reload_bool} (2020-06-18 and
-%   later) or not.  If the boolean is there, we have to do nothing
-%   because right ahead we deal with this case.
-%   If it is not, we just have to create it:
+%   And reloading in an incompatible version is an error:
 %    \begin{macrocode}
-    \ExplSyntaxOn
-    \bool_if_exist:NF \g_@@_reload_bool
-      { \bool_new:N \g_@@_reload_bool }
-    \ExplSyntaxOff
+    \expandafter\expandafter
+    \expandafter\@firstofone
   \fi
 \fi
+  {\csname\detokenize{__kernel_dependency_version_check:Nn}\endcsname
+     \ExplLoaderFileDate{expl3.sty}}%
+%</package>
 %    \end{macrocode}
 %
 % Here we can also detect whether we're reloading.  This code goes into
@@ -1403,7 +1372,7 @@
 \keys_define:nn { sys }
   {
     backend .choices:nn =
-      { dvipdfmx , dvips , dvisvgm , pdfmode , xdvipdfmx }
+      { dvipdfmx , dvips , dvisvgm , luatex , pdftex , pdfmode , xdvipdfmx , xetex }
       { \sys_load_backend:n {#1} } ,
     check-declarations .code:n =
       {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -370,6 +370,14 @@
 %   and then stores the result inside the \meta{box}.
 % \end{function}
 %
+% \begin{function}[added = 2020-08-25]{\hbox_overlap_center:n}
+%   \begin{syntax}
+%     \cs{hbox_overlap_center:n} \Arg{contents}
+%   \end{syntax}
+%   Typesets the \meta{contents} into a horizontal box of zero width
+%   such that material protrudes equally to both sides of the insertion point.
+% \end{function}
+%
 % \begin{function}[updated = 2017-04-05]{\hbox_overlap_right:n}
 %   \begin{syntax}
 %     \cs{hbox_overlap_right:n} \Arg{contents}
@@ -1381,10 +1389,12 @@
 %  \end{macro}
 %  \end{macro}
 %
-% \begin{macro}{\hbox_overlap_left:n, \hbox_overlap_right:n}
+% \begin{macro}{\hbox_overlap_center:n, \hbox_overlap_left:n, \hbox_overlap_right:n}
 %   Put a zero-sized box with the contents pushed against one side (which
 %   makes it stick out on the other) directly into the input stream.
 %    \begin{macrocode}
+\cs_new_protected:Npn \hbox_overlap_center:n  #1
+  { \hbox_to_zero:n { \tex_hss:D #1 \tex_hss:D } }
 \cs_new_protected:Npn \hbox_overlap_left:n  #1
   { \hbox_to_zero:n { \tex_hss:D #1 } }
 \cs_new_protected:Npn \hbox_overlap_right:n #1

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -206,7 +206,7 @@
 %
 % \begin{function}[added = 2019-05-08]{\ior_shell_open:Nn}
 %   \begin{syntax}
-%     \cs{ior_shell_open:nN} \meta{stream} \Arg{shell~command}
+%     \cs{ior_shell_open:Nn} \meta{stream} \Arg{shell~command}
 %   \end{syntax}
 %   Opens the \emph{pseudo}-file created by the output of the
 %   \meta{shell command} for reading using \meta{stream} as the

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -66,6 +66,7 @@
 %     \cs{color_group_end:}
 %   \end{syntax}
 %   Creates a color group: one used to \enquote{trap} color settings.
+%   This grouping is built in to for example \cs{hbox_set:Nn}.
 % \end{function}
 %
 % \begin{function}[added = 2011-09-03]{\color_ensure_current:}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -662,6 +662,10 @@
 %
 % \subsection{Deprecated \pkg{l3str} functions}
 %
+%    \begin{macrocode}
+%<@@=str>
+%    \end{macrocode}
+%
 % \begin{macro}[EXP, deprecated = 2022-07-01]
 %   {
 %     \str_lower_case:n, \str_lower_case:f,
@@ -684,6 +688,18 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}[EXP, deprecated = 2022-07-01]
+%   {\str_declare_eight_bit_encoding:nnn}
+%   This command was made internal, with one more argument.  There is no
+%   easy way to compute a reasonable value for that extra argument so we
+%   take a value that is big enough to accomodate all of Unicode.
+%    \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { }
+\cs_gset_protected:Npn \str_declare_eight_bit_encoding:nnn #1
+  { \@@_declare_eight_bit_encoding:nnnn {#1} { 1114112 } }
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsection{Deprecated \pkg{l3seq} functions}
 %
 % \begin{macro}[EXP, deprecated = 2023-01-01]

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -61,7 +61,7 @@
 %</driver|class>
 %
 %<*driver>
-\ProvidesFile{l3doc.dtx}[2017/03/18 L3 Experimental documentation class]
+\ProvidesFile{l3doc.dtx}[2020/08/21 L3 Experimental documentation class]
 \documentclass{l3doc}
 \usepackage{framed,lipsum}
 \begin{document}
@@ -79,7 +79,7 @@
 %
 % \title{The \cls{l3doc} class}
 % \author{\Team}
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 % \maketitle
 % \tableofcontents
 %
@@ -3154,7 +3154,10 @@
     \vbox_set:Nn \l_@@_macro_box
       {
         \vbox_unpack_drop:N \l_@@_macro_box
-        \hbox { \llap { \@@_print_macroname:nN {#1} #2 \ } }
+        \hbox { \llap { \__codedoc_print_macroname:nN {#1} #2
+            \MacroFont       % <----- without it the \ is in lmr10 if a link is made
+            \      
+        } }
       }
     \int_incr:N \l_@@_macro_int
   }
@@ -3716,7 +3719,7 @@
       { \cs_set:Npn \currentfile{#1.dtx} }
     \int_compare:nNnTF \@auxout = \@partaux
       { \@latexerr{\string\include\space cannot~be~nested}\@eha }
-      { \@docinclude #1 }
+      { \@docinclude {#1} }
   }
 %    \end{macrocode}
 %
@@ -3750,7 +3753,7 @@
       {
         \cs_set_eq:NN \ttfamily\relax
         \cs_gset:Npx \filekey
-          { \filekey, \thepart = { \ttfamily \currentfile } }
+          { \filekey,~ \thepart = { \ttfamily \currentfile } }
       }
       \DocInput{\currentfile}
       \cs_set_eq:NN \PrintIndex              \@ltxdoc at PrintIndex

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -504,6 +504,7 @@
 %   {
 %     \exp_args:NNNo,
 %     \exp_args:NNNV,
+%     \exp_args:NNNv,
 %     \exp_args:Nccc,
 %     \exp_args:NcNc,
 %     \exp_args:NcNo,
@@ -1365,7 +1366,8 @@
 %
 % \begin{macro}[EXP]
 %   {
-%     \exp_args:NNNV, \exp_args:NcNc, \exp_args:NcNo,
+%     \exp_args:NNNV, \exp_args:NNNv,
+%     \exp_args:NcNc, \exp_args:NcNo,
 %     \exp_args:Ncco,
 %   }
 %   A few more that we can hand-tune.
@@ -1377,6 +1379,13 @@
     \exp_after:wN #3
     \exp_after:wN { \exp:w \@@_eval_register:N #4 }
   }
+\cs_new:Npn \exp_args:NNNv #1#2#3#4
+  {
+    \exp_after:wN #1
+    \exp_after:wN #2
+    \exp_after:wN #3
+    \exp_after:wN { \exp:w \@@_eval_register:c {#4} }
+  }
 \cs_new:Npn \exp_args:NcNc #1#2#3#4
   {
     \exp_after:wN #1

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -2868,12 +2868,10 @@
 % \end{macro}
 % \end{macro}
 % \begin{variable}{\g_@@_internal_ior}
-%   A reserved stream to test for file existence, if required.
+%   A reserved stream to test for file existence (if required), and for
+%   opening a shell.
 %    \begin{macrocode}
-\bool_lazy_or:nnF
-  { \cs_if_exist_p:N \tex_filesize:D }
-  { \sys_if_engine_luatex_p: }
-  { \ior_new:N \g_@@_internal_ior }
+\ior_new:N \g_@@_internal_ior
 %    \end{macrocode}
 % \end{variable}
 %
@@ -3180,7 +3178,7 @@
       }
   }
   { \cs_new_eq:NN \@@_timestamp:n \tex_filemoddate:D }
-\cs_if_exist:NF \tex_filemoddate:D
+\cs_if_exist:NF \@@_timestamp:n
   {
     \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
       { p , T , F , TF }
@@ -3471,7 +3469,7 @@
   }
 %    \end{macrocode}
 %
-% \subsection{GetIfInfo}
+% \subsection{GetIdInfo}
 %
 % \begin{macro}{\GetIdInfo}
 % \begin{macro}{\@@_id_info_auxi:w, \@@_id_info_auxii:w, \@@_id_info_auxiii:w}
@@ -3545,6 +3543,131 @@
 % \end{macro}
 % \end{macro}
 %
+% \subsection{Checking the version of kernel dependencies}
+%
+% \begin{macro}{\__kernel_dependency_version_check:Nn}
+% \begin{macro}{\__kernel_dependency_version_check:nn}
+% \begin{macro}{\@@_kernel_dependency_compare:nnn,\@@_parse_version:w}
+%   This function is responsible for checking if dependencies of the
+%   \LaTeX3 kernel match the version preloaded in the \LaTeXe{} kernel.
+%   If versions don't match, the function attempts to tell why by
+%   searching for a possible stray format file.
+%
+%   The function starts by checking that the kernel date is defined, and
+%   if not zero is used to force the error route.  The kernel date is
+%   then compared with the argument requested date (ususally the
+%   packaging date of the dependency).  If the kernel date is less than
+%   the required date, it's an error and the loading should abort.
+%    \begin{macrocode}
+\cs_new_protected:Npn \__kernel_dependency_version_check:Nn #1
+  { \exp_args:NV \__kernel_dependency_version_check:nn #1 }
+\cs_new_protected:Npn \__kernel_dependency_version_check:nn #1
+  {
+    \cs_if_exist:NTF \c__kernel_expl_date_tl
+      {
+        \exp_args:NV \@@_kernel_dependency_compare:nnn
+          \c__kernel_expl_date_tl {#1}
+       }
+       { \@@_kernel_dependency_compare:nnn { 0000-00-00 } {#1} }
+  }
+\cs_new_protected:Npn \@@_kernel_dependency_compare:nnn #1 #2 #3
+  {
+    \int_compare:nNnT
+        { \@@_parse_version:w #1 \s_@@_stop } <
+        { \@@_parse_version:w #2 \s_@@_stop }
+      { \@@_mismatched_dependency_error:nn {#2} {#3} }
+  }
+\cs_new:Npn \@@_parse_version:w #1 - #2 - #3 \s_@@_stop {#1#2#3}
+%    \end{macrocode}
+%
+% \begin{macro}{\@@_mismatched_dependency_error:nn}
+%   If the versions differ, then we try to give the user some guidance.
+%   This function starts by taking the engine name \cs{c_sys_engine_str}
+%   and replacing |tex| by |latex|, then building a command of the form:
+%   \begin{texttt}
+%   kpsewhich --all --engine=\meta{engine} \meta{format}[-dev].fmt
+%   \end{texttt}
+%   to query the format files available.  A shell is opened and each
+%   line is read into a sequence.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_mismatched_dependency_error:nn #1 #2
+  {
+    \exp_args:NNx \ior_shell_open:Nn \g_@@_internal_ior
+      {
+        kpsewhich ~ --all ~
+          --engine = \c_sys_engine_exec_str
+          \c_space_tl \c_sys_engine_format_str
+            \tl_if_empty:NF \development at branch@name { -dev } .fmt
+      }
+    \seq_clear:N \l_@@_tmp_seq
+    \ior_map_inline:Nn \g_@@_internal_ior
+      { \seq_put_right:Nn \l_@@_tmp_seq {##1} }
+    \ior_close:N \g_@@_internal_ior
+%    \end{macrocode}
+%   Now define a some shorthands so that we can use \cs{@latex at error}
+%   (almost) easily:
+%    \begin{macrocode}
+    \group_begin:
+      \cs_set:Npn \\ { \MessageBreak }
+      \cs_set_eq:NN \  \c_space_tl
+      \@latex at error
+        {
+          Mismatched~LaTeX~support~files~detected. \\
+          Loading~'#2'~aborted!
+%    \end{macrocode}
+%   \cs{c__kernel_expl_date_tl} may not exist, due to an older format,
+%   so only print the dates when the sentinel token list exists:
+%    \begin{macrocode}
+          \tl_if_exist:NT \c__kernel_expl_date_tl
+            {
+              \\ \\
+              The~L3~programming~layer~in~the~LaTeX~format \\
+              is~dated~\c__kernel_expl_date_tl,~but~in~your~TeX~
+              tree~the~files~require \\ at~least~#1.
+            }
+          \use_none:n
+        }
+        {
+%    \end{macrocode}
+%   The sequence containing the format files should have exactly one
+%   item: the format file currently being run.  If that's the case, the
+%   cause of the error is not that, so print a generic help with some
+%   possible causes.  If more than one format file was found, then print
+%   the list to the user, with appropriate indications of what's in the
+%   system and what's in the user tree.
+%    \begin{macrocode}
+          \int_compare:nNnTF { \seq_count:N \l_@@_tmp_seq } > 1
+            {
+              The~cause~seems~to~be~an~old~format~file~in~the~user~tree. \\
+              LaTeX~found~these~files:
+              \seq_map_tokens:Nn \l_@@_tmp_seq { \\~-~\use:n } \\
+              Try~deleting~the~file~in~the~user~tree~then~run~LaTeX~again.
+            }
+            {
+              The~most~likely~causes~are:
+              \\~-~A~recent~format~generation~failed;
+              \\~-~A~stray~format~file~in~the~user~tree~which~needs~
+                   to~be~removed~or~rebuilt;
+              \\~-~You~are~running~a~manually~installed~version~of~#2 \\
+              \ \ \ which~is~incompatible~with~the~version~in~LaTeX. \\
+            }
+          \\
+          LaTeX~will~abort~loading~the~incompatible~support~files~
+          but~this~may~lead~to \\ later~errors.~Please~ensure~that~
+          your~LaTeX~format~is~correctly~regenerated.
+        }
+    \group_end:
+%    \end{macrocode}
+%   And finish by ending the current file.
+%    \begin{macrocode}
+    \tex_endinput:D
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
 % \subsection{Messages}
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -101,6 +101,19 @@
 %   the \meta{follow-on}.
 % \end{function}
 %
+% \begin{function}{
+%     \__kernel_dependency_version_check:Nn,
+%     \__kernel_dependency_version_check:nn,
+%   }
+%   \begin{syntax}
+%     \cs{__kernel_dependency_version_check:Nn} \Arg{\cs{date}} \Arg{file}
+%     \cs{__kernel_dependency_version_check:nn} \Arg{date} \Arg{file}
+%   \end{syntax}
+%   Checks if the loaded version of the \pkg{expl3} kernel is at least \meta{date},
+%   required by \meta{file}.  If the kernel date is older than \meta{date}, the
+%   loading of \meta{file} is aborted and an error is raised.
+% \end{function}
+%
 % \begin{function}{\__kernel_deprecation_code:nn}
 %   \begin{syntax}
 %     \cs{__kernel_deprecation_code:nn} \Arg{error code} \Arg{working code}
@@ -125,6 +138,11 @@
 %   set by \cs{ExplSyntaxOn}/\cs{ExplSyntaxOff}.
 % \end{variable}
 %
+% \begin{variable}{\c__kernel_expl_date_tl}
+%   A token list containing the release date of the \pkg{l3kernel} preloaded
+%   in \LaTeXe{} used to check if dependencies match.
+% \end{variable}
+%
 % \begin{function}{\__kernel_file_missing:n}
 %   \begin{syntax}
 %     \cs{__kernel_file_missing:n} \Arg{name}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -199,19 +199,6 @@
 %   basis with non-ASCII codepoints  escaped using hashes.
 % \end{function}
 %
-% \section[Creating 8-bit mappings]{Creating $8$-bit mappings}
-%
-% \begin{function}{\str_declare_eight_bit_encoding:nnn}
-%   \begin{syntax}
-%     \cs{str_declare_eight_bit_encoding:nnn} \Arg{name} \Arg{mapping} \Arg{missing}
-%   \end{syntax}
-%   Declares the encoding \meta{name} to map bytes to Unicode
-%   characters according to the \meta{mapping}, and map those bytes
-%   which are not mentioned in the \meta{mapping} either to the
-%   replacement character (if they appear in \meta{missing}), or to
-%   themselves.
-% \end{function}
-%
 % \section{Possibilities, and things to do}
 %
 % Encoding/escaping-related tasks.
@@ -261,16 +248,13 @@
 % \subsubsection{Variables and constants}
 %
 % \begin{macro}{\@@_tmp:w}
-% \begin{variable}{\l_@@_internal_int}
 % \begin{variable}{\l_@@_internal_tl}
 %   Internal scratch space for some functions.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_tmp:w { }
 \tl_new:N \l_@@_internal_tl
-\int_new:N \l_@@_internal_int
 %    \end{macrocode}
 % \end{variable}
-% \end{variable}
 % \end{macro}
 %
 % \begin{variable}{\g_@@_result_tl}
@@ -1093,33 +1077,59 @@
 %
 % \subsubsection{8-bit encodings}
 %
-% This section will be entirely rewritten: it is not yet clear in what
-% situations 8-bit encodings are used, hence I don't know what exactly
-% should be optimized. The current approach is reasonably efficient to
-% convert long strings, and it scales well when using many different
-% encodings. An approach based on csnames would have a smaller constant
-% load time for each individual conversion, but has a large hash table
-% cost. Using a range of \tn{count} registers works for decoding, but
-% not for encoding: one possibility there would be to use a binary tree
-% for the mapping of Unicode characters to bytes, stored as a box, one
-% per encoding.
+% It is not clear in what situations 8-bit encodings are used, hence it
+% is not clear what should be optimized.  The current approach is
+% reasonably efficient to convert long strings, and it scales well when
+% using many different encodings.
 %
-% Since the section is going to be rewritten, documentation lacks.
+% The data needed to support a given 8-bit encoding is stored in a file
+% that consists of a single function call
+% \begin{quote}\ttfamily
+%   \cs{@@_declare_eight_bit_encoding:nnnn} \Arg{name} \Arg{modulo}
+%   \Arg{mapping} \Arg{missing}
+% \end{quote}
+% This declares the encoding \meta{name} to map bytes to Unicode
+% characters according to the \meta{mapping}, and map those bytes which
+% are not mentioned in the \meta{mapping} either to the replacement
+% character (if they appear in \meta{missing}), or to themselves.  The
+% \meta{mapping} argument is a token list of pairs \Arg{byte}
+% \Arg{Unicode} expressed in uppercase hexadecimal notation.  The
+% \meta{missing} argument is a token list of \Arg{byte}.  Every
+% \meta{byte} which does not appear in the \meta{mapping} nor the
+% \meta{missing} lists maps to itself in Unicode, so for instance the
+% \texttt{latin1} encoding has empty \meta{mapping} and \meta{missing}
+% lists.  The \meta{modulo} is a (decimal) integer between $256$ and
+% $558$ inclusive, modulo which all Unicode code points supported by the
+% encodings must be different.
 %
-% All the 8-bit encodings which \pkg{l3str} supports rely on the same
-% internal functions.
+% We use two integer arrays per encoding.  When decoding we only use the
+% \texttt{decode} integer array, with entry $n+1$ (offset needed because
+% integer array indices start at~$1$) equal to the Unicode code point
+% that corresponds to the $n$-th byte in the encoding under
+% consideration, or $-1$ if the given byte is invalid in this encoding.
+% When encoding we use both arrays: upon seeing a code point~$n$, we
+% look up the entry ($1$~plus) $n$ modulo some number $M$ in the
+% \texttt{encode} array, which tells us the byte that might encode the
+% given Unicode code point, then we check in the \texttt{decode} array
+% that indeed this byte encodes the Unicode code point we want.  Here,
+% $M$ is an encoding-dependent integer between $256$ and $558$ (it turns
+% out), chosen so that among the Unicode code points that can be validly
+% represented in the given encoding, no pair of code points have the
+% same value modulo~$M$.
 %
-% \begin{macro}{\str_declare_eight_bit_encoding:nnn}
-%   All the 8-bit encoding definition file start with
-%   \cs{str_declare_eight_bit_encoding:nnn} \Arg{encoding name}
-%   \Arg{mapping} \Arg{missing bytes}.  The \meta{mapping} argument is a
-%   token list of pairs \Arg{byte} \Arg{Unicode} expressed in uppercase
-%   hexadecimal notation.  The \meta{missing} argument is a token list
-%   of \Arg{byte}. Every \meta{byte} which does not appear in the
-%   \meta{mapping} nor the \meta{missing} lists maps to the same code
-%   point in Unicode.
+% \begin{macro}
+%   {
+%     \@@_declare_eight_bit_encoding:nnnn,
+%     \@@_declare_eight_bit_aux:NNnnn,
+%     \@@_declare_eight_bit_loop:Nnn,
+%     \@@_declare_eight_bit_loop:Nn
+%   }
+%   Loop through both lists of bytes to fill in the \texttt{decode}
+%   integer array, then fill the \texttt{encode} array accordingly.
+%   For bytes that are invalid in the given encoding, store $-1$ in the
+%   \texttt{decode} array.
 %    \begin{macrocode}
-\cs_new_protected:Npn \str_declare_eight_bit_encoding:nnn #1#2#3
+\cs_new_protected:Npn \@@_declare_eight_bit_encoding:nnnn #1
   {
     \tl_set:Nn \l_@@_internal_tl {#1}
     \cs_new_protected:cpn { @@_convert_decode_#1: }
@@ -1126,126 +1136,134 @@
       { \@@_convert_decode_eight_bit:n {#1} }
     \cs_new_protected:cpn { @@_convert_encode_#1: }
       { \@@_convert_encode_eight_bit:n {#1} }
-    \tl_const:cn { c_@@_encoding_#1_tl } {#2}
-    \tl_const:cn { c_@@_encoding_#1_missing_tl } {#3}
+    \exp_args:Ncc \@@_declare_eight_bit_aux:NNnnn
+      { g_@@_decode_#1_intarray } { g_@@_encode_#1_intarray }
   }
+\cs_new_protected:Npn \@@_declare_eight_bit_aux:NNnnn #1#2#3#4#5
+  {
+    \intarray_new:Nn #1 { 256 }
+    \int_step_inline:nnn { 0 } { 255 }
+      { \intarray_gset:Nnn #1 { 1 + ##1 } {##1} }
+    \@@_declare_eight_bit_loop:Nnn #1
+      #4 { \s_@@_stop \prg_break: } { }
+    \prg_break_point:
+    \@@_declare_eight_bit_loop:Nn #1
+      #5 { \s_@@_stop \prg_break: }
+    \prg_break_point:
+    \intarray_new:Nn #2 {#3}
+    \int_step_inline:nnn { 0 } { 255 }
+      {
+        \int_compare:nNnF { \intarray_item:Nn #1 { 1 + ##1 } } = { -1 }
+          {
+            \intarray_gset:Nnn #2
+              {
+                1 +
+                \int_mod:nn { \intarray_item:Nn #1 { 1 + ##1 } }
+                  { \intarray_count:N #2 }
+              }
+              {##1}
+          }
+      }
+  }
+\cs_new_protected:Npn \@@_declare_eight_bit_loop:Nnn #1#2#3
+  {
+    \@@_use_none_delimit_by_s_stop:w #2 \s_@@_stop
+    \intarray_gset:Nnn #1 { 1 + "#2 } { "#3 }
+    \@@_declare_eight_bit_loop:Nnn #1
+  }
+\cs_new_protected:Npn \@@_declare_eight_bit_loop:Nn #1#2
+  {
+    \@@_use_none_delimit_by_s_stop:w #2 \s_@@_stop
+    \intarray_gset:Nnn #1 { 1 + "#2 } { -1 }
+    \@@_declare_eight_bit_loop:Nn #1
+  }
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\@@_convert_decode_eight_bit:n}
-% \begin{macro}{\@@_decode_eight_bit_load:nn}
-% \begin{macro}{\@@_decode_eight_bit_load_missing:n}
-% \begin{macro}[EXP]{\@@_decode_eight_bit_char:N}
-%^^A todo: document
+% \begin{macro}[rEXP]{\@@_decode_eight_bit_aux:n, \@@_decode_eight_bit_aux:Nn}
+%   The map from bytes to Unicode code points is in the \texttt{decode}
+%   array corresponding to the given encoding.  Define \cs{@@_tmp:w} and
+%   pass it successively all bytes in the string.  It produces an
+%   internal representation with suitable \cs{s_@@} inserted, and the
+%   corresponding code point is obtained by looking it up in the integer
+%   array.  If the entry is $-1$ then issue a replacement character and
+%   raise the flag indicating that there was an error.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_convert_decode_eight_bit:n #1
   {
-    \group_begin:
-      \int_zero:N \l_@@_internal_int
-      \exp_last_unbraced:Nx \@@_decode_eight_bit_load:nn
-        { \tl_use:c { c_@@_encoding_#1_tl } }
-        { \s_@@_stop \prg_break: } { }
-      \prg_break_point:
-      \exp_last_unbraced:Nx \@@_decode_eight_bit_load_missing:n
-        { \tl_use:c { c_@@_encoding_#1_missing_tl } }
-        { \s_@@_stop \prg_break: }
-      \prg_break_point:
-      \flag_clear:n { str_error }
-      \@@_convert_gmap:N \@@_decode_eight_bit_char:N
-      \@@_if_flag_error:nnx { str_error } { decode-8-bit } {#1}
-    \group_end:
+    \cs_set:Npx \@@_tmp:w
+      {
+        \exp_not:N \@@_decode_eight_bit_aux:Nn
+        \exp_not:c { g_@@_decode_#1_intarray }
+      }
+    \flag_clear:n { str_error }
+    \@@_convert_gmap:N \@@_tmp:w
+    \@@_if_flag_error:nnx { str_error } { decode-8-bit } {#1}
   }
-\cs_new_protected:Npn \@@_decode_eight_bit_load:nn #1#2
+\cs_new:Npn \@@_decode_eight_bit_aux:Nn #1#2
   {
-    \@@_use_none_delimit_by_s_stop:w #1 \s_@@_stop
-    \tex_dimen:D "#1 = \l_@@_internal_int sp \scan_stop:
-    \tex_skip:D \l_@@_internal_int = "#1 sp \scan_stop:
-    \tex_toks:D \l_@@_internal_int \exp_after:wN { \int_value:w "#2 }
-    \int_incr:N \l_@@_internal_int
-    \@@_decode_eight_bit_load:nn
+    #2 \s_@@
+    \exp_args:Nf \@@_decode_eight_bit_aux:n
+      { \intarray_item:Nn #1 { 1 + `#2 } }
+    \s_@@
   }
-\cs_new_protected:Npn \@@_decode_eight_bit_load_missing:n #1
+\cs_new:Npn \@@_decode_eight_bit_aux:n #1
   {
-    \@@_use_none_delimit_by_s_stop:w #1 \s_@@_stop
-    \tex_dimen:D "#1 = \l_@@_internal_int sp \scan_stop:
-    \tex_skip:D \l_@@_internal_int = "#1 sp \scan_stop:
-    \tex_toks:D \l_@@_internal_int \exp_after:wN
-      { \int_use:N \c_@@_replacement_char_int }
-    \int_incr:N \l_@@_internal_int
-    \@@_decode_eight_bit_load_missing:n
-  }
-\cs_new:Npn \@@_decode_eight_bit_char:N #1
-  {
-    #1 \s_@@
-    \if_int_compare:w \tex_dimen:D `#1 < \l_@@_internal_int
-      \if_int_compare:w \tex_skip:D \tex_dimen:D `#1 = `#1 \exp_stop_f:
-        \tex_the:D \tex_toks:D \tex_dimen:D
-      \fi:
+    \if_int_compare:w #1 < \c_zero_int
+      \flag_raise:n { str_error }
+      \int_value:w \c_@@_replacement_char_int
+    \else:
+      #1
     \fi:
-    \int_value:w `#1 \s_@@
   }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
-% \end{macro}
-% \end{macro}
 %
 % \begin{macro}{\@@_convert_encode_eight_bit:n}
-% \begin{macro}{\@@_encode_eight_bit_load:nn}
-% \begin{macro}[rEXP]{\@@_encode_eight_bit_char:n}
-% \begin{macro}[rEXP]{\@@_encode_eight_bit_char_aux:n}
-%^^A todo: document
+% \begin{macro}[rEXP]{\@@_encode_eight_bit_aux:nnN, \@@_encode_eight_bit_aux:NNn}
+%   It is not practical to make an integer array with indices in the
+%   full Unicode range, so we work modulo some number, which is simply
+%   the size of the \texttt{encode} integer array for the given
+%   encoding.  This gives us a candidate byte for representing a given
+%   Unicode code point.  Of course taking the modulo leads to collisions
+%   so we check in the \texttt{decode} array that the byte we got is
+%   indeed correct.  Otherwise the Unicode code point we started from is
+%   simply not representable in the given encoding.
 %    \begin{macrocode}
+\int_new:N \l_@@_modulo_int
 \cs_new_protected:Npn \@@_convert_encode_eight_bit:n #1
   {
-    \group_begin:
-      \int_zero:N \l_@@_internal_int
-      \exp_last_unbraced:Nx \@@_encode_eight_bit_load:nn
-        { \tl_use:c { c_@@_encoding_#1_tl } }
-        { \s_@@_stop \prg_break: } { }
-      \prg_break_point:
-      \flag_clear:n { str_error }
-      \@@_convert_gmap_internal:N \@@_encode_eight_bit_char:n
-      \@@_if_flag_error:nnx { str_error } { encode-8-bit } {#1}
-    \group_end:
+    \cs_set:Npx \@@_tmp:w
+      {
+        \exp_not:N \@@_encode_eight_bit_aux:NNn
+        \exp_not:c { g_@@_encode_#1_intarray }
+        \exp_not:c { g_@@_decode_#1_intarray }
+      }
+    \flag_clear:n { str_error }
+    \@@_convert_gmap_internal:N \@@_tmp:w
+    \@@_if_flag_error:nnx { str_error } { encode-8-bit } {#1}
   }
-\cs_new_protected:Npn \@@_encode_eight_bit_load:nn #1#2
+\cs_new:Npn \@@_encode_eight_bit_aux:NNn #1#2#3
   {
-    \@@_use_none_delimit_by_s_stop:w #1 \s_@@_stop
-    \tex_dimen:D "#2 = \l_@@_internal_int sp \scan_stop:
-    \tex_skip:D \l_@@_internal_int = "#2 sp \scan_stop:
-    \exp_args:NNf \tex_toks:D \l_@@_internal_int
-      { \@@_output_byte:n { "#1 } }
-    \int_incr:N \l_@@_internal_int
-    \@@_encode_eight_bit_load:nn
+    \exp_args:Nf \@@_encode_eight_bit_aux:nnN
+      {
+        \intarray_item:Nn #1
+          { 1 + \int_mod:nn {#3} { \intarray_count:N #1 } }
+      }
+      {#3}
+      #2
   }
-\cs_new:Npn \@@_encode_eight_bit_char:n #1
+\cs_new:Npn \@@_encode_eight_bit_aux:nnN #1#2#3
   {
-    \if_int_compare:w #1 > \c_max_register_int
-      \flag_raise:n { str_error }
-    \else:
-      \if_int_compare:w \tex_dimen:D #1 < \l_@@_internal_int
-        \if_int_compare:w \tex_skip:D \tex_dimen:D #1 = #1 \exp_stop_f:
-          \tex_the:D \tex_toks:D \tex_dimen:D #1 \exp_stop_f:
-          \exp_after:wN \exp_after:wN \exp_after:wN \use_none:nn
-        \fi:
-      \fi:
-      \@@_encode_eight_bit_char_aux:n {#1}
-    \fi:
+    \int_compare:nNnTF { \intarray_item:Nn #3 { 1 + #1 } } = {#2}
+      { \@@_output_byte:n {#1} }
+      { \flag_raise:n { str_error } }
   }
-\cs_new:Npn \@@_encode_eight_bit_char_aux:n #1
-  {
-    \if_int_compare:w #1 > \c_@@_max_byte_int
-      \flag_raise:n { str_error }
-    \else:
-      \@@_output_byte:n {#1}
-    \fi:
-  }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
-% \end{macro}
-% \end{macro}
 %
 % \subsection{Messages}
 %
@@ -2664,7 +2682,7 @@
 % family, we keep track only of differences, and of unassigned bytes.
 %    \begin{macrocode}
 %<*iso88591>
-\str_declare_eight_bit_encoding:nnn { iso88591 }
+\@@_declare_eight_bit_encoding:nnnn { iso88591 } { 256 }
   {
   }
   {
@@ -2674,7 +2692,7 @@
 %
 %    \begin{macrocode}
 %<*iso88592>
-\str_declare_eight_bit_encoding:nnn { iso88592 }
+\@@_declare_eight_bit_encoding:nnnn { iso88592 } { 399 }
   {
     { A1 } { 0104 }
     { A2 } { 02D8 }
@@ -2741,7 +2759,7 @@
 %
 %    \begin{macrocode}
 %<*iso88593>
-\str_declare_eight_bit_encoding:nnn { iso88593 }
+\@@_declare_eight_bit_encoding:nnnn { iso88593 } { 384 }
   {
     { A1 } { 0126 }
     { A2 } { 02D8 }
@@ -2786,7 +2804,7 @@
 %
 %    \begin{macrocode}
 %<*iso88594>
-\str_declare_eight_bit_encoding:nnn { iso88594 }
+\@@_declare_eight_bit_encoding:nnnn { iso88594 } { 383 }
   {
     { A1 } { 0104 }
     { A2 } { 0138 }
@@ -2846,7 +2864,7 @@
 %
 %    \begin{macrocode}
 %<*iso88595>
-\str_declare_eight_bit_encoding:nnn { iso88595 }
+\@@_declare_eight_bit_encoding:nnnn { iso88595 } { 374 }
   {
     { A1 } { 0401 }
     { A2 } { 0402 }
@@ -2950,7 +2968,7 @@
 %
 %    \begin{macrocode}
 %<*iso88596>
-\str_declare_eight_bit_encoding:nnn { iso88596 }
+\@@_declare_eight_bit_encoding:nnnn { iso88596 } { 344 }
   {
     { AC } { 060C }
     { BB } { 061B }
@@ -3040,7 +3058,7 @@
 %
 %    \begin{macrocode}
 %<*iso88597>
-\str_declare_eight_bit_encoding:nnn { iso88597 }
+\@@_declare_eight_bit_encoding:nnnn { iso88597 } { 498 }
   {
     { A1 } { 2018 }
     { A2 } { 2019 }
@@ -3129,7 +3147,7 @@
 %
 %    \begin{macrocode}
 %<*iso88598>
-\str_declare_eight_bit_encoding:nnn { iso88598 }
+\@@_declare_eight_bit_encoding:nnnn { iso88598 } { 308 }
   {
     { AA } { 00D7 }
     { BA } { 00F7 }
@@ -3206,7 +3224,7 @@
 %
 %    \begin{macrocode}
 %<*iso88599>
-\str_declare_eight_bit_encoding:nnn { iso88599 }
+\@@_declare_eight_bit_encoding:nnnn { iso88599 } { 352 }
   {
     { D0 } { 011E }
     { DD } { 0130 }
@@ -3222,7 +3240,7 @@
 %
 %    \begin{macrocode}
 %<*iso885910>
-\str_declare_eight_bit_encoding:nnn { iso885910 }
+\@@_declare_eight_bit_encoding:nnnn { iso885910 } { 383 }
   {
     { A1 } { 0104 }
     { A2 } { 0112 }
@@ -3278,7 +3296,7 @@
 %
 %    \begin{macrocode}
 %<*iso885911>
-\str_declare_eight_bit_encoding:nnn { iso885911 }
+\@@_declare_eight_bit_encoding:nnnn { iso885911 } { 369 }
   {
     { A1 } { 0E01 }
     { A2 } { 0E02 }
@@ -3379,7 +3397,7 @@
 %
 %    \begin{macrocode}
 %<*iso885913>
-\str_declare_eight_bit_encoding:nnn { iso885913 }
+\@@_declare_eight_bit_encoding:nnnn { iso885913 } { 399 }
   {
     { A1 } { 201D }
     { A5 } { 201E }
@@ -3445,7 +3463,7 @@
 %
 %    \begin{macrocode}
 %<*iso885914>
-\str_declare_eight_bit_encoding:nnn { iso885914 }
+\@@_declare_eight_bit_encoding:nnnn { iso885914 } { 529 }
   {
     { A1 } { 1E02 }
     { A2 } { 1E03 }
@@ -3486,7 +3504,7 @@
 %
 %    \begin{macrocode}
 %<*iso885915>
-\str_declare_eight_bit_encoding:nnn { iso885915 }
+\@@_declare_eight_bit_encoding:nnnn { iso885915 } { 383 }
   {
     { A4 } { 20AC }
     { A6 } { 0160 }
@@ -3504,7 +3522,7 @@
 %
 %    \begin{macrocode}
 %<*iso885916>
-\str_declare_eight_bit_encoding:nnn { iso885916 }
+\@@_declare_eight_bit_encoding:nnnn { iso885916 } { 558 }
   {
     { A1 } { 0104 }
     { A2 } { 0105 }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -105,6 +105,22 @@
 %   |luatex|, |pdftex|, |ptex|, |uptex| or |xetex|.
 % \end{variable}
 %
+% \begin{variable}[added = 2020-08-20]{\c_sys_engine_exec_str}
+%   The name of the standard executable for the current \TeX{} engine given
+%   as a lower case string: one of  |luatex|,
+%   |luahbtex|, |pdftex|, |eptex|, |euptex| or |xetex|.
+% \end{variable}
+%
+% \begin{variable}[added = 2020-08-20]{\c_sys_engine_format_str}
+%   The name of the preloaded format for the current \TeX{} run given
+%   as a lower case string: one of
+%   |lualatex| (or |dvilualatex|),
+%   |pdflatex| (or |latex|), |platex|, |uplatex| or |xelatex| for \LaTeX{},
+%   similar names for plain \TeX{} (except \pdfTeX{} in DVI mode yields
+%   |etex|), and |cont-en| for Con\TeX{}t (i.e.~the
+%   \tn{fmtname}).
+% \end{variable}
+%
 % \section{Output format}
 %
 % \begin{function}[added = 2015-09-19, EXP, pTF]
@@ -252,7 +268,7 @@
 %   Execute \meta{tokens} through shell escape at shipout.
 % \end{function}
 %
-% \subsection{Loading configuration data}
+% \section{Loading configuration data}
 %
 % \begin{function}[added = 2019-09-12]{\sys_load_backend:n}
 %   \begin{syntax}
@@ -277,7 +293,7 @@
 %   back deprecations, respectively.
 % \end{function}
 %
-% \subsection{Final settins}
+% \subsection{Final settings}
 %
 % \begin{function}[added = 2019-10-06]{\sys_finalise:}
 %   \begin{syntax}
@@ -361,6 +377,72 @@
 % \end{variable}
 % \end{macro}
 %
+% \begin{variable}{\c_sys_engine_exec_str,\c_sys_engine_format_str}
+%   Take the functions defined above, and set up the engine and format
+%   names.  \cs{c_sys_engine_exec_str} differs from \cs{c_sys_engine_str}
+%   as it is the \emph{actual} engine name, not a \enquote{filtered}
+%   version.  It differs for |ptex| and |uptex|, which have a leading
+%   |e|, and for |luatex|, because \LaTeX{} uses the \Lua HB\TeX{}
+%   engine.
+%
+%   \cs{c_sys_engine_format_str} is quite similar to
+%   \cs{c_sys_engine_str}, except that it differentiates |pdflatex| from
+%   |latex| (which is \pdfTeX{} in DVI mode).  This differentiation,
+%   however, is reliable only if the user doesn't change
+%   \cs{tex_pdfoutput:D} before loading this code.
+%    \begin{macrocode}
+\str_const:Nx \c_sys_engine_exec_str
+  {
+    \sys_if_engine_pdftex:T { pdf }
+    \sys_if_engine_xetex:T  { xe  }
+    \sys_if_engine_ptex:T   { ep  }
+    \sys_if_engine_uptex:T  { eup }
+    \sys_if_engine_luatex:T
+      {
+        lua \lua_now:e
+          {
+            if (pcall(require, 'luaharfbuzz')) then ~
+              tex.print("hb") ~
+            end
+          }
+      }
+    tex
+  }
+\str_const:Nx \c_sys_engine_format_str
+  {
+    \cs_if_exist:NTF \fmtname
+      {
+        \bool_lazy_or:nnTF
+          { \str_if_eq_p:Vn \fmtname { plain } }
+          { \str_if_eq_p:Vn \fmtname { LaTeX2e } }
+          {
+            \sys_if_engine_pdftex:T
+              { \int_compare:nNnT { \tex_pdfoutput:D } = { 1 } { pdf } }
+            \sys_if_engine_xetex:T  { xe }
+            \sys_if_engine_ptex:T   { p  }
+            \sys_if_engine_uptex:T  { up }
+            \sys_if_engine_luatex:T
+              {
+                \int_compare:nNnT { \tex_pdfoutput:D } = { 0 } { dvi }
+                lua
+              }
+            \str_if_eq:VnTF \fmtname { LaTeX2e }
+              { latex }
+              {
+                \bool_lazy_and:nnT
+                  { \sys_if_engine_pdftex_p: }
+                  { \int_compare_p:nNn { \tex_pdfoutput:D } = { 0 } }
+                    { e }
+                tex
+              }
+          }
+          { \fmtname }
+      }
+      { unknown }
+  }
+%    \end{macrocode}
+% \end{variable}
+%
 % \subsubsection{Randomness}
 %
 % This candidate function is placed there because
@@ -415,23 +497,36 @@
         \str_case:VnF #1
           {
             { dvisvgm }   { }
-            { xdvipdfmx } { }
+            { xdvipdfmx } { \tl_gset:Nn #1 { xetex } }
+            { xetex }     { }
           }
           {
             \__kernel_msg_error:nnxx { sys } { wrong-backend }
-              #1 { xdvipdfmx }
-            \tl_gset:Nn #1 { xdvipdfmx }
+              #1 { xetex }
+            \tl_gset:Nn #1 { xetex }
           }
       }
       {
         \sys_if_output_pdf:TF
           {
-            \str_if_eq:VnF #1 { pdfmode }
+            \str_if_eq:VnTF #1 { pdfmode }
               {
-                \__kernel_msg_error:nnxx { sys } { wrong-backend }
-                  #1 { pdfmode }
-                \tl_gset:Nn #1 { pdfmode }
+                \sys_if_engine_luatex:TF
+                  { \tl_gset:Nn #1 { luatex } }
+                  { \tl_gset:Nn #1 { pdftex } }
               }
+              {
+                \bool_lazy_or:nnF
+                  { \str_if_eq_p:Vn #1 { luatex } }
+                  { \str_if_eq_p:Vn #1 { pdftex } }
+                  {
+                    \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                      #1 { \sys_if_engine_luatex:TF { luatex } { pdftex } }
+                    \sys_if_engine_luatex:TF
+                      { \tl_gset:Nn #1 { luatex } }
+                      { \tl_gset:Nn #1 { pdftex } }
+                  }
+              }
           }
           {
             \str_case:VnF #1

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -408,7 +408,7 @@
   {
     \@@_if_recursion_tail_stop_do:Nn #4
       { \use:c { @@_change_case_letterlike_ #1 :nnN } {#1} {#2} #3 }
-    \cs_if_eq:NNTF #3 #4
+    \str_if_eq:nnTF {#3} {#4}
       {
         \@@_use_i_delimit_by_q_recursion_stop:nw
           { \@@_change_case_exclude:nnNn {#1} {#2} #3 }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %
@@ -875,7 +875,7 @@
   {
     \@@_if_recursion_tail_stop_do:Nn #2
       { \@@_expand_letterlike:N #1 }
-    \cs_if_eq:NNTF #2 #1
+    \str_if_eq:nnTF {#1} {#2}
       {
         \@@_use_i_delimit_by_q_recursion_stop:nw
           { \@@_expand_exclude:Nn #1 }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-08-07}
+% \date{Released 2020-09-01}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3benchmark.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2020-08-07}{}
+\ProvidesExplPackage{l3benchmark}{2020-09-01}{}
   {L3 Experimental benchmarking}
 \sys_if_engine_luatex:TF
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3color.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3color}{2020-08-07}{}
+\ProvidesExplPackage{l3color}{2020-09-01}{}
   {L3 Experimental color support}
 \tl_new:N \l__color_internal_tl
 \scan_new:N \s__color_mark
@@ -269,17 +269,14 @@
       \__color_parse_number:n {#4}
     }
   }
-\cs_new:Npn \__color_parse_model_spot:w #1 , #2 \s__color_stop
-  {
-    { spot }
-    { \__color_parse_spot_aux:w #1 ! 100 ! \s__color_stop }
-  }
-\cs_new:Npn \__color_parse_spot_aux:w #1 ! #2 ! #3 \s__color_stop
-  { #1 ~ \fp_eval:n { #2 / 100 } }
 \cs_new:Npn \__color_parse_number:n #1
   {  \__color_parse_number:w #1 . 0 . \s__color_stop }
 \cs_new:Npn \__color_parse_number:w #1 . #2 . #3 \s__color_stop
   { \tl_if_blank:nTF {#1} { 0 } {#1} . #2 }
+\cs_new:Npn \__color_parse_model_Gray:w #1 , #2 \s__color_stop
+  { { gray } { \fp_eval:n { #1 / 15 } } }
+\cs_new:Npn \__color_parse_model_hsb:w #1 , #2 , #3 , #4 \s__color_stop
+  { \__color_parse_model_hsb:nnn {#1} {#2} {#3} }
 \cs_new:Npn \__color_parse_model_Hsb:w #1 , #2 , #3 , #4 \s__color_stop
   {
     \exp_args:Ne \__color_parse_model_hsb:nnn { \fp_eval:n { #1 / 360 } }
@@ -323,9 +320,9 @@
 \cs_new:Npn \__color_parse_model_HSB:w #1 , #2 , #3 , #4 \s__color_stop
   {
     \exp_args:Neee \__color_parse_model_hsb:nnn
-      { \fp_eval:n {#1 / 360} }
-      { \fp_eval:n {#2 / 255} }
-      { \fp_eval:n {#3 / 255} }
+      { \fp_eval:n {#1 / 240} }
+      { \fp_eval:n {#2 / 240} }
+      { \fp_eval:n {#3 / 240} }
   }
 \cs_new:Npn \__color_parse_model_HTML:w #1 , #2 \s__color_stop
   { \__color_parse_model_HTML_aux:w #1 0 0 0 0 0 0 \s__color_stop }
@@ -347,6 +344,71 @@
       \fp_eval:n { round(#3 / 255,5) }
     }
   }
+\cs_new:Npn \__color_parse_model_wave:w #1 , #2 \s__color_stop
+  {
+    { rgb }
+    {
+      \fp_compare:nNnTF {#1} < { 420 }
+        { \__color_parse_model_wave_auxi:nn {#1} { 0.3 + 0.7 * (#1 - 380) / 40 }
+        }
+        {
+          \fp_compare:nNnTF {#1} > { 700 }
+            { \__color_parse_model_wave_auxi:nn {#1} { 0.3 + 0.7 * (#1 - 780) / -80 } }
+            { \__color_parse_model_wave_auxi:nn {#1} { 1 } }
+        }
+    }
+  }
+\cs_new:Npn \__color_parse_model_wave_auxi:nn #1#2
+  {
+    \fp_compare:nNnTF {#1} < { 440 }
+      {
+        \__color_parse_model_wave_auxii:nn
+          { 4 + \__color_parse_model_wave_rho:n { (#1 - 440) / -60 } }
+          {#2}
+      }
+      {
+        \fp_compare:nNnTF {#1} < { 490 }
+          {
+            \__color_parse_model_wave_auxii:nn
+              { 4 - \__color_parse_model_wave_rho:n { (#1 - 440) / 50 } }
+              {#2}
+          }
+          {
+            \fp_compare:nNnTF {#1} < { 510 }
+              {
+                \__color_parse_model_wave_auxii:nn
+                  { 2 + \__color_parse_model_wave_rho:n { (#1 - 510) / -20 } }
+                  {#2}
+              }
+              {
+                \fp_compare:nNnTF {#1} < { 580 }
+                  {
+                    \__color_parse_model_wave_auxii:nn
+                      { 2 - \__color_parse_model_wave_rho:n { (#1 - 510) / 70 } }
+                      {#2}
+                  }
+                  {
+                    \fp_compare:nNnTF {#1} < { 645 }
+                      {
+                        \__color_parse_model_wave_auxii:nn
+                          { \__color_parse_model_wave_rho:n { (#1 - 645) / -65 } }
+                          {#2}
+                      }
+                      { \__color_parse_model_wave_auxii:nn { 0 } {#2} }
+                  }
+              }
+          }
+      }
+  }
+\cs_new:Npn \__color_parse_model_wave_auxii:nn #1#2
+  {
+    \exp_args:Neee \__color_parse_model_hsb_aux:nnn
+      { \fp_eval:n {#1} }
+      { 1 }
+      { \__color_parse_model_wave_rho:n {#2} }
+  }
+\cs_new:Npn \__color_parse_model_wave_rho:n #1
+  { \fp_eval:n { min(1, max(0,#1) ) } }
 \tl_new:N \l_color_fixed_model_tl
 \cs_new_protected:Npn \__color_check_model:N #1
   {
@@ -493,15 +555,28 @@
           }
       }
   }
-\cs_new_protected:Npn \color_set:nnn #1#2#3
+\cs_new_protected:Npx \color_set:nnn #1#2#3
   {
-    \str_if_eq:nnF {#1} { . }
+    \exp_not:N \str_if_eq:nnF {#1} { . }
       {
         \tl_clear_new:c { l__color_named_ #1 _tl }
         \prop_clear_new:c { l__color_named_ #1 _prop }
-        \__color_set_loop:nw {#1} #2 / / \s__color_mark #3 / / \s__color_stop
+        \exp_not:N \__color_set_colon:nnw {#1} {#3}
+          #2 \c_colon_str \c_colon_str \exp_not:N \s__color_stop
       }
   }
+\use:x
+  {
+    \cs_new_protected:Npn \exp_not:N \__color_set_colon:nnw
+      ##1##2 ##3 \c_colon_str ##4 \c_colon_str
+      ##5 \exp_not:N \s__color_stop
+  }
+  {
+    \tl_if_blank:nTF {#4}
+      { \__color_set_loop:nw {#1} #3 }
+      { \__color_set_loop:nw {#1} #4 }
+        / / \s__color_mark #2 / / \s__color_stop
+  }
 \cs_new_protected:Npn \__color_set_loop:nw
   #1#2 / #3 \s__color_mark #4 / #5 \s__color_stop
   {
@@ -738,7 +813,7 @@
       }
     \__color_model_convert:nnn {#1} { cmyk } { rgb }
     \__color_model_convert:nnn {#1} { cmyk } { gray }
-    \__color_model_separation_init:nnnnn {#2} { /DeviceCMYK } { }
+    \__color_backend_separation_init:nnnnn {#2} { /DeviceCMYK } { }
       { 0 ~ 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 ~ #6 }
   }
 \cs_new_protected:Npn \__color_model_separation_rgb:nnnnnn #1#2#3#4#5#6
@@ -751,7 +826,7 @@
       }
     \__color_model_convert:nnn {#1} { rgb } { cmyk }
     \__color_model_convert:nnn {#1} { rgb } { gray }
-    \__color_model_separation_init:nnnnn {#2} { /DeviceRGB } { }
+    \__color_backend_separation_init:nnnnn {#2} { /DeviceRGB } { }
       { 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 }
   }
 \cs_new_protected:Npn \__color_model_separation_gray:nnnnnn #1#2#3#4#5#6
@@ -771,7 +846,7 @@
         \fp_eval:n {##1 * #3} ~
         \fp_eval:n {##1 * #3}
       }
-    \__color_model_separation_init:nnnnn {#2} { /DeviceGray } { } { 0 } {#3}
+    \__color_backend_separation_init:nnnnn {#2} { /DeviceGray } { } { 0 } {#3}
   }
 \cs_new_protected:Npn \__color_model_convert:nnn #1#2#3
   {
@@ -799,8 +874,8 @@
   {
     \tl_if_exist:cTF { c__color_model_whitepoint_cielab_ #1 _tl }
       {
-        \__color_model_separation_init_cielab:n {#1}
-        \__color_model_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6}
+        \__color_backend_separation_init_cielab:n {#1}
+        \__color_backend_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6}
         \cs_new:cpn { __color_convert_ #2 _cmyk:w } ##1 ~ ##2 \s__color_stop
           { 0 ~ 0 ~ 0 ~ 1 }
         \cs_new:cpn { __color_convert_ #2 _rgb:w } ##1 ~ ##2 \s__color_stop
@@ -813,54 +888,6 @@
           { unknown-cielab-illuminant } {#1}
       }
   }
-\cs_new_protected:Npn \__color_model_separation_init:nnnnn #1#2#3#4#5
-  {
-    \pdf_object_now:nx { array }
-      {
-        /Separation
-        / \str_convert_pdfname:n {#1} ~ #2 ~
-        <<
-          /FunctionType ~ 2
-          /Domain ~ [0 ~ 1]
-          \tl_if_blank:nF {#3} { /Range ~ [#3] }
-          /C0 ~ [#4] ~
-          /C1 ~ [#5] /N ~ 1
-        >>
-      }
-    \use:x
-      {
-        \pdfcoredict_gput:nnn
-          { Page / Resources / ColorSpace }
-          { color \int_use:N \g__color_separation_int }
-          { \pdf_object_last: }
-      }
-  }
-\cs_if_exist:NF \pdf_object_now:nn
-  { \cs_gset_protected:Npn \__color_model_separation_init:nnnnn #1#2#3#4#5 { } }
-\cs_new_protected:Npn \__color_model_separation_init_cielab:n #1
-  {
-    \pdf_object_new:nn { __color_illuminant_cielab_ #1 } { array }
-    \pdf_object_write:nx { __color_illuminant_cielab_ #1 }
-      {
-        /Lab ~
-        <<
-         /WhitePoint ~
-           [ \tl_use:c { c__color_model_whitepoint_cielab_ #1 _tl } ]
-         /Range ~ [ \c__color_model_range_lab_tl ]
-        >>
-     }
-  }
-\cs_if_exist:NF \pdf_object_new:nn
-  { \cs_gset_protected:Npn \__color_model_separation_init_cielab:n #1 { } }
-\cs_new_protected:Npn \__color_model_separation_init_cielab:nnnnn #1#2#3#4#5
-  {
-    \__color_model_separation_init:nnnnn
-      {#2}
-      { \pdf_object_ref:n { __color_illuminant_cielab_ #1 } }
-      { \c__color_model_range_lab_tl }
-      { 100 ~ 0 ~ 0 }
-      { #3 ~ #4 ~ #5 }
-  }
 \cs_new_protected:Npn \color_show:n #1
   {
     \msg_show:nnxxxx { LaTeX / color } { show }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -28,7 +28,7 @@
 %% 
 %% File: l3draw.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2020-08-07}{}
+\ProvidesExplPackage{l3draw}{2020-09-01}{}
   {L3 Experimental core drawing support}
 \RequirePackage { l3color }
 \scan_new:N \s__draw_mark

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3graphics.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3graphics}{2020-08-07}{}
+\ProvidesExplPackage{l3graphics}{2020-09-01}{}
   {L3 Experimental graphics inclusion support}
 \ior_new:N \l__graphics_tmp_ior
 \tl_new:N  \l__graphics_tmp_tl

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3pdf.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3pdf}{2020-08-07}{}
+\ProvidesExplPackage{l3pdf}{2020-09-01}{}
   {L3 Experimental core PDF support}
 \scan_new:N \s__pdf_stop
 \bool_new:N \g__pdf_init_bool

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3str-format.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2020-08-07}{}
+\ProvidesExplPackage{l3str-format}{2020-09-01}{}
   {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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3sys-shell.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2020-08-07}{}
+\ProvidesExplPackage{l3sys-shell}{2020-09-01}{}
   {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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -20,7 +20,7 @@
 %% 
 %% File: xcoffins.dtx
 \RequirePackage{xparse}
-\ProvidesExplPackage{xcoffins}{2020-08-07}{}
+\ProvidesExplPackage{xcoffins}{2020-09-01}{}
   {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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3galley}{2020-08-07}{}
+\ProvidesExplPackage{l3galley}{2020-09-01}{}
   {L3 Experimental galley code}
 \int_new:N \l__galley_tmp_int
 \seq_new:N \g__galley_tmpa_seq

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -20,7 +20,7 @@
 %% 
 %% File: xgalley.dtx
 \RequirePackage{xparse}
-\ProvidesExplPackage{xgalley}{2020-08-07}{}
+\ProvidesExplPackage{xgalley}{2020-09-01}{}
   {L3 Experimental galley}
 \RequirePackage{xparse,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	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2020-09-02 21:38:04 UTC (rev 56245)
@@ -69,7 +69,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2020-08-07}%
+\def\ExplFileDate{2020-09-01}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -2453,6 +2453,13 @@
     \exp_after:wN #3
     \exp_after:wN { \exp:w \__exp_eval_register:N #4 }
   }
+\cs_new:Npn \exp_args:NNNv #1#2#3#4
+  {
+    \exp_after:wN #1
+    \exp_after:wN #2
+    \exp_after:wN #3
+    \exp_after:wN { \exp:w \__exp_eval_register:c {#4} }
+  }
 \cs_new:Npn \exp_args:NcNc #1#2#3#4
   {
     \exp_after:wN #1
@@ -7160,6 +7167,55 @@
     \__sys_const:nn { sys_if_engine_ #1 }
       { \str_if_eq_p:Vn \c_sys_engine_str {#1} }
   }
+\str_const:Nx \c_sys_engine_exec_str
+  {
+    \sys_if_engine_pdftex:T { pdf }
+    \sys_if_engine_xetex:T  { xe  }
+    \sys_if_engine_ptex:T   { ep  }
+    \sys_if_engine_uptex:T  { eup }
+    \sys_if_engine_luatex:T
+      {
+        lua \lua_now:e
+          {
+            if (pcall(require, 'luaharfbuzz')) then ~
+              tex.print("hb") ~
+            end
+          }
+      }
+    tex
+  }
+\str_const:Nx \c_sys_engine_format_str
+  {
+    \cs_if_exist:NTF \fmtname
+      {
+        \bool_lazy_or:nnTF
+          { \str_if_eq_p:Vn \fmtname { plain } }
+          { \str_if_eq_p:Vn \fmtname { LaTeX2e } }
+          {
+            \sys_if_engine_pdftex:T
+              { \int_compare:nNnT { \tex_pdfoutput:D } = { 1 } { pdf } }
+            \sys_if_engine_xetex:T  { xe }
+            \sys_if_engine_ptex:T   { p  }
+            \sys_if_engine_uptex:T  { up }
+            \sys_if_engine_luatex:T
+              {
+                \int_compare:nNnT { \tex_pdfoutput:D } = { 0 } { dvi }
+                lua
+              }
+            \str_if_eq:VnTF \fmtname { LaTeX2e }
+              { latex }
+              {
+                \bool_lazy_and:nnT
+                  { \sys_if_engine_pdftex_p: }
+                  { \int_compare_p:nNn { \tex_pdfoutput:D } = { 0 } }
+                    { e }
+                tex
+              }
+          }
+          { \fmtname }
+      }
+      { unknown }
+  }
 \__sys_const:nn { sys_if_rand_exist }
   { \cs_if_exist_p:N \tex_uniformdeviate:D }
 \cs_new_protected:Npn \sys_load_backend:n #1
@@ -7186,23 +7242,36 @@
         \str_case:VnF #1
           {
             { dvisvgm }   { }
-            { xdvipdfmx } { }
+            { xdvipdfmx } { \tl_gset:Nn #1 { xetex } }
+            { xetex }     { }
           }
           {
             \__kernel_msg_error:nnxx { sys } { wrong-backend }
-              #1 { xdvipdfmx }
-            \tl_gset:Nn #1 { xdvipdfmx }
+              #1 { xetex }
+            \tl_gset:Nn #1 { xetex }
           }
       }
       {
         \sys_if_output_pdf:TF
           {
-            \str_if_eq:VnF #1 { pdfmode }
+            \str_if_eq:VnTF #1 { pdfmode }
               {
-                \__kernel_msg_error:nnxx { sys } { wrong-backend }
-                  #1 { pdfmode }
-                \tl_gset:Nn #1 { pdfmode }
+                \sys_if_engine_luatex:TF
+                  { \tl_gset:Nn #1 { luatex } }
+                  { \tl_gset:Nn #1 { pdftex } }
               }
+              {
+                \bool_lazy_or:nnF
+                  { \str_if_eq_p:Vn #1 { luatex } }
+                  { \str_if_eq_p:Vn #1 { pdftex } }
+                  {
+                    \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                      #1 { \sys_if_engine_luatex:TF { luatex } { pdftex } }
+                    \sys_if_engine_luatex:TF
+                      { \tl_gset:Nn #1 { luatex } }
+                      { \tl_gset:Nn #1 { pdftex } }
+                  }
+              }
           }
           {
             \str_case:VnF #1
@@ -11280,10 +11349,7 @@
     \__kernel_ior_open:No \g__file_internal_ior \l__file_full_name_tl
     \ior_if_eof:NF \g__file_internal_ior { #2 { \prg_break: } }
   }
-\bool_lazy_or:nnF
-  { \cs_if_exist_p:N \tex_filesize:D }
-  { \sys_if_engine_luatex_p: }
-  { \ior_new:N \g__file_internal_ior }
+\ior_new:N \g__file_internal_ior
 \cs_new:Npn \file_mdfive_hash:n #1
   { \__file_details:nn {#1} { mdfivesum } }
 \cs_new:Npn \file_size:n #1
@@ -11521,7 +11587,7 @@
       }
   }
   { \cs_new_eq:NN \__file_timestamp:n \tex_filemoddate:D }
-\cs_if_exist:NF \tex_filemoddate:D
+\cs_if_exist:NF \__file_timestamp:n
   {
     \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
       { p , T , F , TF }
@@ -11724,6 +11790,78 @@
   }
 \cs_new_protected:Npn \__file_id_info_auxiii:w #1 - #2 - #3 - #4 \s__file_stop
   { \tl_set:Nn \ExplFileDate { #1/#2/#3 } }
+\cs_new_protected:Npn \__kernel_dependency_version_check:Nn #1
+  { \exp_args:NV \__kernel_dependency_version_check:nn #1 }
+\cs_new_protected:Npn \__kernel_dependency_version_check:nn #1
+  {
+    \cs_if_exist:NTF \c__kernel_expl_date_tl
+      {
+        \exp_args:NV \__file_kernel_dependency_compare:nnn
+          \c__kernel_expl_date_tl {#1}
+       }
+       { \__file_kernel_dependency_compare:nnn { 0000-00-00 } {#1} }
+  }
+\cs_new_protected:Npn \__file_kernel_dependency_compare:nnn #1 #2 #3
+  {
+    \int_compare:nNnT
+        { \__file_parse_version:w #1 \s__file_stop } <
+        { \__file_parse_version:w #2 \s__file_stop }
+      { \__file_mismatched_dependency_error:nn {#2} {#3} }
+  }
+\cs_new:Npn \__file_parse_version:w #1 - #2 - #3 \s__file_stop {#1#2#3}
+\cs_new_protected:Npn \__file_mismatched_dependency_error:nn #1 #2
+  {
+    \exp_args:NNx \ior_shell_open:Nn \g__file_internal_ior
+      {
+        kpsewhich ~ --all ~
+          --engine = \c_sys_engine_exec_str
+          \c_space_tl \c_sys_engine_format_str
+            \tl_if_empty:NF \development at branch@name { -dev } .fmt
+      }
+    \seq_clear:N \l__file_tmp_seq
+    \ior_map_inline:Nn \g__file_internal_ior
+      { \seq_put_right:Nn \l__file_tmp_seq {##1} }
+    \ior_close:N \g__file_internal_ior
+    \group_begin:
+      \cs_set:Npn \\ { \MessageBreak }
+      \cs_set_eq:NN \  \c_space_tl
+      \@latex at error
+        {
+          Mismatched~LaTeX~support~files~detected. \\
+          Loading~'#2'~aborted!
+          \tl_if_exist:NT \c__kernel_expl_date_tl
+            {
+              \\ \\
+              The~L3~programming~layer~in~the~LaTeX~format \\
+              is~dated~\c__kernel_expl_date_tl,~but~in~your~TeX~
+              tree~the~files~require \\ at~least~#1.
+            }
+          \use_none:n
+        }
+        {
+          \int_compare:nNnTF { \seq_count:N \l__file_tmp_seq } > 1
+            {
+              The~cause~seems~to~be~an~old~format~file~in~the~user~tree. \\
+              LaTeX~found~these~files:
+              \seq_map_tokens:Nn \l__file_tmp_seq { \\~-~\use:n } \\
+              Try~deleting~the~file~in~the~user~tree~then~run~LaTeX~again.
+            }
+            {
+              The~most~likely~causes~are:
+              \\~-~A~recent~format~generation~failed;
+              \\~-~A~stray~format~file~in~the~user~tree~which~needs~
+                   to~be~removed~or~rebuilt;
+              \\~-~You~are~running~a~manually~installed~version~of~#2 \\
+              \ \ \ which~is~incompatible~with~the~version~in~LaTeX. \\
+            }
+          \\
+          LaTeX~will~abort~loading~the~incompatible~support~files~
+          but~this~may~lead~to \\ later~errors.~Please~ensure~that~
+          your~LaTeX~format~is~correctly~regenerated.
+        }
+    \group_end:
+    \tex_endinput:D
+  }
 \__kernel_msg_new:nnnn { kernel } { file-not-found }
   { File~'#1'~not~found. }
   {
@@ -20894,7 +21032,6 @@
 %% File: l3str-convert.dtx
 \cs_new_protected:Npn \__str_tmp:w { }
 \tl_new:N \l__str_internal_tl
-\int_new:N \l__str_internal_int
 \tl_new:N \g__str_result_tl
 \int_const:Nn \c__str_replacement_char_int { "FFFD }
 \int_const:Nn \c__str_max_byte_int { 255 }
@@ -21294,7 +21431,7 @@
     \tl_gset:Nx \g__str_result_tl { \tl_tail:N \g__str_result_tl }
   }
 \cs_new:Npn \__str_encode_clist_char:n #1 { , #1 }
-\cs_new_protected:Npn \str_declare_eight_bit_encoding:nnn #1#2#3
+\cs_new_protected:Npn \__str_declare_eight_bit_encoding:nnnn #1
   {
     \tl_set:Nn \l__str_internal_tl {#1}
     \cs_new_protected:cpn { __str_convert_decode_#1: }
@@ -21301,100 +21438,103 @@
       { \__str_convert_decode_eight_bit:n {#1} }
     \cs_new_protected:cpn { __str_convert_encode_#1: }
       { \__str_convert_encode_eight_bit:n {#1} }
-    \tl_const:cn { c__str_encoding_#1_tl } {#2}
-    \tl_const:cn { c__str_encoding_#1_missing_tl } {#3}
+    \exp_args:Ncc \__str_declare_eight_bit_aux:NNnnn
+      { g__str_decode_#1_intarray } { g__str_encode_#1_intarray }
   }
-\cs_new_protected:Npn \__str_convert_decode_eight_bit:n #1
+\cs_new_protected:Npn \__str_declare_eight_bit_aux:NNnnn #1#2#3#4#5
   {
-    \group_begin:
-      \int_zero:N \l__str_internal_int
-      \exp_last_unbraced:Nx \__str_decode_eight_bit_load:nn
-        { \tl_use:c { c__str_encoding_#1_tl } }
-        { \s__str_stop \prg_break: } { }
-      \prg_break_point:
-      \exp_last_unbraced:Nx \__str_decode_eight_bit_load_missing:n
-        { \tl_use:c { c__str_encoding_#1_missing_tl } }
-        { \s__str_stop \prg_break: }
-      \prg_break_point:
-      \flag_clear:n { str_error }
-      \__str_convert_gmap:N \__str_decode_eight_bit_char:N
-      \__str_if_flag_error:nnx { str_error } { decode-8-bit } {#1}
-    \group_end:
+    \intarray_new:Nn #1 { 256 }
+    \int_step_inline:nnn { 0 } { 255 }
+      { \intarray_gset:Nnn #1 { 1 + ##1 } {##1} }
+    \__str_declare_eight_bit_loop:Nnn #1
+      #4 { \s__str_stop \prg_break: } { }
+    \prg_break_point:
+    \__str_declare_eight_bit_loop:Nn #1
+      #5 { \s__str_stop \prg_break: }
+    \prg_break_point:
+    \intarray_new:Nn #2 {#3}
+    \int_step_inline:nnn { 0 } { 255 }
+      {
+        \int_compare:nNnF { \intarray_item:Nn #1 { 1 + ##1 } } = { -1 }
+          {
+            \intarray_gset:Nnn #2
+              {
+                1 +
+                \int_mod:nn { \intarray_item:Nn #1 { 1 + ##1 } }
+                  { \intarray_count:N #2 }
+              }
+              {##1}
+          }
+      }
   }
-\cs_new_protected:Npn \__str_decode_eight_bit_load:nn #1#2
+\cs_new_protected:Npn \__str_declare_eight_bit_loop:Nnn #1#2#3
   {
-    \__str_use_none_delimit_by_s_stop:w #1 \s__str_stop
-    \tex_dimen:D "#1 = \l__str_internal_int sp \scan_stop:
-    \tex_skip:D \l__str_internal_int = "#1 sp \scan_stop:
-    \tex_toks:D \l__str_internal_int \exp_after:wN { \int_value:w "#2 }
-    \int_incr:N \l__str_internal_int
-    \__str_decode_eight_bit_load:nn
+    \__str_use_none_delimit_by_s_stop:w #2 \s__str_stop
+    \intarray_gset:Nnn #1 { 1 + "#2 } { "#3 }
+    \__str_declare_eight_bit_loop:Nnn #1
   }
-\cs_new_protected:Npn \__str_decode_eight_bit_load_missing:n #1
+\cs_new_protected:Npn \__str_declare_eight_bit_loop:Nn #1#2
   {
-    \__str_use_none_delimit_by_s_stop:w #1 \s__str_stop
-    \tex_dimen:D "#1 = \l__str_internal_int sp \scan_stop:
-    \tex_skip:D \l__str_internal_int = "#1 sp \scan_stop:
-    \tex_toks:D \l__str_internal_int \exp_after:wN
-      { \int_use:N \c__str_replacement_char_int }
-    \int_incr:N \l__str_internal_int
-    \__str_decode_eight_bit_load_missing:n
+    \__str_use_none_delimit_by_s_stop:w #2 \s__str_stop
+    \intarray_gset:Nnn #1 { 1 + "#2 } { -1 }
+    \__str_declare_eight_bit_loop:Nn #1
   }
-\cs_new:Npn \__str_decode_eight_bit_char:N #1
+\cs_new_protected:Npn \__str_convert_decode_eight_bit:n #1
   {
-    #1 \s__str
-    \if_int_compare:w \tex_dimen:D `#1 < \l__str_internal_int
-      \if_int_compare:w \tex_skip:D \tex_dimen:D `#1 = `#1 \exp_stop_f:
-        \tex_the:D \tex_toks:D \tex_dimen:D
-      \fi:
-    \fi:
-    \int_value:w `#1 \s__str
+    \cs_set:Npx \__str_tmp:w
+      {
+        \exp_not:N \__str_decode_eight_bit_aux:Nn
+        \exp_not:c { g__str_decode_#1_intarray }
+      }
+    \flag_clear:n { str_error }
+    \__str_convert_gmap:N \__str_tmp:w
+    \__str_if_flag_error:nnx { str_error } { decode-8-bit } {#1}
   }
-\cs_new_protected:Npn \__str_convert_encode_eight_bit:n #1
+\cs_new:Npn \__str_decode_eight_bit_aux:Nn #1#2
   {
-    \group_begin:
-      \int_zero:N \l__str_internal_int
-      \exp_last_unbraced:Nx \__str_encode_eight_bit_load:nn
-        { \tl_use:c { c__str_encoding_#1_tl } }
-        { \s__str_stop \prg_break: } { }
-      \prg_break_point:
-      \flag_clear:n { str_error }
-      \__str_convert_gmap_internal:N \__str_encode_eight_bit_char:n
-      \__str_if_flag_error:nnx { str_error } { encode-8-bit } {#1}
-    \group_end:
+    #2 \s__str
+    \exp_args:Nf \__str_decode_eight_bit_aux:n
+      { \intarray_item:Nn #1 { 1 + `#2 } }
+    \s__str
   }
-\cs_new_protected:Npn \__str_encode_eight_bit_load:nn #1#2
+\cs_new:Npn \__str_decode_eight_bit_aux:n #1
   {
-    \__str_use_none_delimit_by_s_stop:w #1 \s__str_stop
-    \tex_dimen:D "#2 = \l__str_internal_int sp \scan_stop:
-    \tex_skip:D \l__str_internal_int = "#2 sp \scan_stop:
-    \exp_args:NNf \tex_toks:D \l__str_internal_int
-      { \__str_output_byte:n { "#1 } }
-    \int_incr:N \l__str_internal_int
-    \__str_encode_eight_bit_load:nn
-  }
-\cs_new:Npn \__str_encode_eight_bit_char:n #1
-  {
-    \if_int_compare:w #1 > \c_max_register_int
+    \if_int_compare:w #1 < \c_zero_int
       \flag_raise:n { str_error }
+      \int_value:w \c__str_replacement_char_int
     \else:
-      \if_int_compare:w \tex_dimen:D #1 < \l__str_internal_int
-        \if_int_compare:w \tex_skip:D \tex_dimen:D #1 = #1 \exp_stop_f:
-          \tex_the:D \tex_toks:D \tex_dimen:D #1 \exp_stop_f:
-          \exp_after:wN \exp_after:wN \exp_after:wN \use_none:nn
-        \fi:
-      \fi:
-      \__str_encode_eight_bit_char_aux:n {#1}
+      #1
     \fi:
   }
-\cs_new:Npn \__str_encode_eight_bit_char_aux:n #1
+\int_new:N \l__str_modulo_int
+\cs_new_protected:Npn \__str_convert_encode_eight_bit:n #1
   {
-    \if_int_compare:w #1 > \c__str_max_byte_int
-      \flag_raise:n { str_error }
-    \else:
-      \__str_output_byte:n {#1}
-    \fi:
+    \cs_set:Npx \__str_tmp:w
+      {
+        \exp_not:N \__str_encode_eight_bit_aux:NNn
+        \exp_not:c { g__str_encode_#1_intarray }
+        \exp_not:c { g__str_decode_#1_intarray }
+      }
+    \flag_clear:n { str_error }
+    \__str_convert_gmap_internal:N \__str_tmp:w
+    \__str_if_flag_error:nnx { str_error } { encode-8-bit } {#1}
   }
+\cs_new:Npn \__str_encode_eight_bit_aux:NNn #1#2#3
+  {
+    \exp_args:Nf \__str_encode_eight_bit_aux:nnN
+      {
+        \intarray_item:Nn #1
+          { 1 + \int_mod:nn {#3} { \intarray_count:N #1 } }
+      }
+      {#3}
+      #2
+  }
+\cs_new:Npn \__str_encode_eight_bit_aux:nnN #1#2#3
+  {
+    \int_compare:nNnTF { \intarray_item:Nn #3 { 1 + #1 } } = {#2}
+      { \__str_output_byte:n {#1} }
+      { \flag_raise:n { str_error } }
+  }
 \__kernel_msg_new:nnn { str } { unknown-esc }
   { Escaping~scheme~'#1'~(filtered:~'#2')~unknown. }
 \__kernel_msg_new:nnn { str } { unknown-enc }
@@ -26076,6 +26216,8 @@
     \tex_hbox:D to \c_zero_dim
       { \color_group_begin: #1 \color_group_end: }
   }
+\cs_new_protected:Npn \hbox_overlap_center:n  #1
+  { \hbox_to_zero:n { \tex_hss:D #1 \tex_hss:D } }
 \cs_new_protected:Npn \hbox_overlap_left:n  #1
   { \hbox_to_zero:n { \tex_hss:D #1 } }
 \cs_new_protected:Npn \hbox_overlap_right:n #1
@@ -28376,7 +28518,7 @@
   {
     \__text_if_recursion_tail_stop_do:Nn #2
       { \__text_expand_letterlike:N #1 }
-    \cs_if_eq:NNTF #2 #1
+    \str_if_eq:nnTF {#1} {#2}
       {
         \__text_use_i_delimit_by_q_recursion_stop:nw
           { \__text_expand_exclude:Nn #1 }
@@ -28691,7 +28833,7 @@
   {
     \__text_if_recursion_tail_stop_do:Nn #4
       { \use:c { __text_change_case_letterlike_ #1 :nnN } {#1} {#2} #3 }
-    \cs_if_eq:NNTF #3 #4
+    \str_if_eq:nnTF {#3} {#4}
       {
         \__text_use_i_delimit_by_q_recursion_stop:nw
           { \__text_change_case_exclude:nnNn {#1} {#2} #3 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2020-08-07}%
+\def\ExplFileDate{2020-09-01}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \def\tempa{LaTeX2e}%

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,10 +19,12 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2020-08-07}%
+\def\ExplFileDate{2020-09-01}%
 \let\ExplLoaderFileDate\ExplFileDate
-\global\expandafter\let\csname\detokenize
-  {c__kernel_expl_date_tl}\endcsname\ExplFileDate
+\unless\ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname
+  \global\expandafter\let\csname\detokenize
+    {c__kernel_expl_date_tl}\endcsname\ExplFileDate
+\fi
 \everyjob\expandafter{\the\everyjob
   \message{L3 programming layer <\ExplFileDate>}%
 }
@@ -60,36 +62,6 @@
 \expandafter\ifx\csname tex\string _let:D\endcsname\relax
   \expandafter\endinput
 \fi
-\ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname
-  \expandafter\ifx\csname\detokenize
-      {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate
-  \else
-    \ExplSyntaxOn
-    \__kernel_msg_set:nnn { kernel } { mismatched-expl3 }
-      {
-        Mismatched~expl3~detected!~Loading~expl3~will~abort.
-        \\ \\
-        The~version~of~expl3~preloaded~in~LaTeX~is~
-        \c__kernel_expl_date_tl,~but~the~version~of~expl3~you~are~
-        trying~to~load~is~dated~\ExplLoaderFileDate.~This~is~most~
-        likely~due~to~a~stray~format~file~in~the~user~tree.~Please~
-        make~sure~that~your~LaTeX~format~is~updated.
-      }
-    \exp_after:wN \ExplSyntaxOff \use:n
-      {
-        \__kernel_msg_critical:nn { kernel } { mismatched-expl3 }
-        \use:c { fi: } \use:c { fi: }
-      }
-  \fi
-\else
-  \ifodd\csname\detokenize{l__kernel_expl_bool}\endcsname
-  \else
-    \ExplSyntaxOn
-    \bool_if_exist:NF \g__expl_reload_bool
-      { \bool_new:N \g__expl_reload_bool }
-    \ExplSyntaxOff
-  \fi
-\fi
 \ifcsname\detokenize{g__expl_reload_bool}\endcsname
   \ExplSyntaxOn
   \bool_gset_true:N \g__expl_reload_bool
@@ -107,7 +79,7 @@
 \keys_define:nn { sys }
   {
     backend .choices:nn =
-      { dvipdfmx , dvips , dvisvgm , pdfmode , xdvipdfmx }
+      { dvipdfmx , dvips , dvisvgm , luatex , pdftex , pdfmode , xdvipdfmx , xetex }
       { \sys_load_backend:n {#1} } ,
     check-declarations .code:n =
       {

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2020-08-07}%
+\def\ExplFileDate{2020-09-01}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%
@@ -61,35 +61,20 @@
   \expandafter\endinput
 \fi
 \ifcsname\detokenize{c__kernel_expl_date_tl}\endcsname
-  \expandafter\ifx\csname\detokenize
-      {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate
-  \else
-    \ExplSyntaxOn
-    \__kernel_msg_set:nnn { kernel } { mismatched-expl3 }
-      {
-        Mismatched~expl3~detected!~Loading~expl3~will~abort.
-        \\ \\
-        The~version~of~expl3~preloaded~in~LaTeX~is~
-        \c__kernel_expl_date_tl,~but~the~version~of~expl3~you~are~
-        trying~to~load~is~dated~\ExplLoaderFileDate.~This~is~most~
-        likely~due~to~a~stray~format~file~in~the~user~tree.~Please~
-        make~sure~that~your~LaTeX~format~is~updated.
-      }
-    \exp_after:wN \ExplSyntaxOff \use:n
-      {
-        \__kernel_msg_critical:nn { kernel } { mismatched-expl3 }
-        \use:c { fi: } \use:c { fi: }
-      }
-  \fi
+  \expandafter\@firstofone
 \else
   \ifodd\csname\detokenize{l__kernel_expl_bool}\endcsname
+    \global\expandafter\let\csname\detokenize
+      {c__kernel_expl_date_tl}\endcsname\ExplLoaderFileDate
+    \expandafter\expandafter
+    \expandafter\@gobble
   \else
-    \ExplSyntaxOn
-    \bool_if_exist:NF \g__expl_reload_bool
-      { \bool_new:N \g__expl_reload_bool }
-    \ExplSyntaxOff
+    \expandafter\expandafter
+    \expandafter\@firstofone
   \fi
 \fi
+  {\csname\detokenize{__kernel_dependency_version_check:Nn}\endcsname
+     \ExplLoaderFileDate{expl3.sty}}%
 \ifcsname\detokenize{g__expl_reload_bool}\endcsname
   \ExplSyntaxOn
   \bool_gset_true:N \g__expl_reload_bool
@@ -120,7 +105,7 @@
 \keys_define:nn { sys }
   {
     backend .choices:nn =
-      { dvipdfmx , dvips , dvisvgm , pdfmode , xdvipdfmx }
+      { dvipdfmx , dvips , dvisvgm , luatex , pdftex , pdfmode , xdvipdfmx , xetex }
       { \sys_load_backend:n {#1} } ,
     check-declarations .code:n =
       {

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3deprecation.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3deprecation.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3deprecation.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -48,6 +48,9 @@
 \cs_gset:Npn \str_fold_case:n { \str_foldcase:n }
 \__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \str_foldcase:V }
 \cs_gset:Npn \str_fold_case:V { \str_foldcase:V }
+\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { }
+\cs_gset_protected:Npn \str_declare_eight_bit_encoding:nnn #1
+  { \__str_declare_eight_bit_encoding:nnnn {#1} { 1114112 } }
 \__kernel_patch_deprecation:nnNNpn { 2022-07-01 } { \seq_map_indexed_inline:Nn }
 \cs_gset:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
 \__kernel_patch_deprecation:nnNNpn { 2022-07-01 } { \seq_map_indexed_function:NN }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls	2020-09-02 21:38:04 UTC (rev 56245)
@@ -1486,7 +1486,10 @@
     \vbox_set:Nn \l__codedoc_macro_box
       {
         \vbox_unpack_drop:N \l__codedoc_macro_box
-        \hbox { \llap { \__codedoc_print_macroname:nN {#1} #2 \ } }
+        \hbox { \llap { \__codedoc_print_macroname:nN {#1} #2
+            \MacroFont       % <----- without it the \ is in lmr10 if a link is made
+            \
+        } }
       }
     \int_incr:N \l__codedoc_macro_int
   }
@@ -1834,7 +1837,7 @@
       { \cs_set:Npn \currentfile{#1.dtx} }
     \int_compare:nNnTF \@auxout = \@partaux
       { \@latexerr{\string\include\space cannot~be~nested}\@eha }
-      { \@docinclude #1 }
+      { \@docinclude {#1} }
   }
 \cs_gset:Npn \@docinclude #1
   {
@@ -1865,7 +1868,7 @@
       {
         \cs_set_eq:NN \ttfamily\relax
         \cs_gset:Npx \filekey
-          { \filekey, \thepart = { \ttfamily \currentfile } }
+          { \filekey,~ \thepart = { \ttfamily \currentfile } }
       }
       \DocInput{\currentfile}
       \cs_set_eq:NN \PrintIndex              \@ltxdoc at PrintIndex

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88591.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88591.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88591.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso88591 }
+\__str_declare_eight_bit_encoding:nnnn { iso88591 } { 256 }
   {
   }
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885910.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885910.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885910.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso885910 }
+\__str_declare_eight_bit_encoding:nnnn { iso885910 } { 383 }
   {
     { A1 } { 0104 }
     { A2 } { 0112 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885911.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885911.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885911.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso885911 }
+\__str_declare_eight_bit_encoding:nnnn { iso885911 } { 369 }
   {
     { A1 } { 0E01 }
     { A2 } { 0E02 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885913.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885913.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885913.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso885913 }
+\__str_declare_eight_bit_encoding:nnnn { iso885913 } { 399 }
   {
     { A1 } { 201D }
     { A5 } { 201E }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885914.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885914.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885914.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso885914 }
+\__str_declare_eight_bit_encoding:nnnn { iso885914 } { 529 }
   {
     { A1 } { 1E02 }
     { A2 } { 1E03 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885915.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885915.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885915.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso885915 }
+\__str_declare_eight_bit_encoding:nnnn { iso885915 } { 383 }
   {
     { A4 } { 20AC }
     { A6 } { 0160 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885916.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885916.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885916.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso885916 }
+\__str_declare_eight_bit_encoding:nnnn { iso885916 } { 558 }
   {
     { A1 } { 0104 }
     { A2 } { 0105 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88592.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88592.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88592.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso88592 }
+\__str_declare_eight_bit_encoding:nnnn { iso88592 } { 399 }
   {
     { A1 } { 0104 }
     { A2 } { 02D8 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88593.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88593.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88593.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso88593 }
+\__str_declare_eight_bit_encoding:nnnn { iso88593 } { 384 }
   {
     { A1 } { 0126 }
     { A2 } { 02D8 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88594.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88594.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88594.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso88594 }
+\__str_declare_eight_bit_encoding:nnnn { iso88594 } { 383 }
   {
     { A1 } { 0104 }
     { A2 } { 0138 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88595.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88595.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88595.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso88595 }
+\__str_declare_eight_bit_encoding:nnnn { iso88595 } { 374 }
   {
     { A1 } { 0401 }
     { A2 } { 0402 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88596.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88596.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88596.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso88596 }
+\__str_declare_eight_bit_encoding:nnnn { iso88596 } { 344 }
   {
     { AC } { 060C }
     { BB } { 061B }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88597.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88597.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88597.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso88597 }
+\__str_declare_eight_bit_encoding:nnnn { iso88597 } { 498 }
   {
     { A1 } { 2018 }
     { A2 } { 2019 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88598.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88598.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88598.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso88598 }
+\__str_declare_eight_bit_encoding:nnnn { iso88598 } { 308 }
   {
     { AA } { 00D7 }
     { BA } { 00F7 }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88599.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88599.def	2020-09-02 21:36:32 UTC (rev 56244)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88599.def	2020-09-02 21:38:04 UTC (rev 56245)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3str-convert.dtx
-\str_declare_eight_bit_encoding:nnn { iso88599 }
+\__str_declare_eight_bit_encoding:nnnn { iso88599 } { 352 }
   {
     { D0 } { 011E }
     { DD } { 0130 }



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