texlive[60338] Master/texmf-dist: l3 (28aug21)

commits+karl at tug.org commits+karl at tug.org
Sat Aug 28 00:42:05 CEST 2021


Revision: 60338
          http://tug.org/svn/texlive?view=revision&revision=60338
Author:   karl
Date:     2021-08-28 00:42:05 +0200 (Sat, 28 Aug 2021)
Log Message:
-----------
l3 (28aug21)

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

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md	2021-08-27 22:42:05 UTC (rev 60338)
@@ -7,6 +7,11 @@
 
 ## [Unreleased]
 
+## [2021-08-27]
+
+### Changed
+- Track message changes in `l3kernel`
+
 ## [2021-08-04]
 
 ### Added
@@ -221,7 +226,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/2021-08-04...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2021-08-27...HEAD
+[2021-08-27]: https://github.com/latex3/latex3/compare/2021-08-04...2021-08-27
 [2021-08-04]: https://github.com/latex3/latex3/compare/2021-07-12...2021-08-04
 [2021-07-12]: https://github.com/latex3/latex3/compare/2021-05-27...2021-07-12
 [2021-05-27]: https://github.com/latex3/latex3/compare/2021-02-18...2021-05-27

Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md	2021-08-27 22:42:05 UTC (rev 60338)
@@ -1,7 +1,7 @@
 Experimental LaTeX3 Concepts
 ============================
 
-Release 2021-08-04
+Release 2021-08-27
 
 Overview
 --------

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

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

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

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2021-08-27 22:42:05 UTC (rev 60338)
@@ -7,6 +7,12 @@
 
 ## [Unreleased]
 
+## [2021-08-27]
+
+### Changed
+- Formatting of expandable errors (issue #931)
+- Internal code for kernel messages
+
 ## [2021-07-12]
 
 ### Fixed
@@ -947,7 +953,8 @@
 - Step functions have been added for dim variables,
   e.g. `\dim_step_inline:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-07-12...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2021-08-27...HEAD
+[2021-08-27]: https://github.com/latex3/latex3/compare/2021-07-12...2021-08-27
 [2021-07-12]: https://github.com/latex3/latex3/compare/2021-06-18...2021-07-12
 [2021-06-18]: https://github.com/latex3/latex3/compare/2021-06-01...2021-06-18
 [2021-06-01]: https://github.com/latex3/latex3/compare/2021-05-27...2021-06-01

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2021-08-27 22:42:05 UTC (rev 60338)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2021-07-12
+Release 2021-08-27
 
 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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2021-08-27 22:42:05 UTC (rev 60338)
@@ -54,7 +54,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2021-07-12}
+\date{Released 2021-08-27}
 
 \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/l3prefixes.csv
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.csv	2021-08-27 22:42:05 UTC (rev 60338)
@@ -15,9 +15,11 @@
 array,hobby,Andrew Stacey,https://github.com/loopspace/hobby,https://github.com/loopspace/hobby,https://github.com/loopspace/hobby/issues,2013-03-16,2020-10-29,
 atsign,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
 avm,langsci-avm,Felix Kopecky,https://ctan.org/pkg/langsci-avm,https://github.com/langsci/langsci-avm,https://github.com/langsci/langsci-avm/issues,2020-03-11,2020-03-11,
+babellatin,babel-latin,Keno Wehr,https://ctan.org/pkg/babel-latin,https://github.com/wehro/babel-latin,https://github.com/wehro/babel-latin/issues,2021-08-23,2021-08-23,
 backend,l3backend,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2019-06-04,2019-06-04,
 backslash,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
 bearwear,bearwear,Ulrike Fischer,https://github.com/u-fischer/bearwear,https://github.com/u-fischer/bearwear,https://github.com/u-fischer/bearwear/issues,2020-04-24,2020-04-24,
+beuron,beuron,Keno Wehr,https://ctan.org/pkg/beuron,,,2021-08-23,2021-08-23,
 bitset,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2020-12-26,2020-12-26,
 bool,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
 box,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
@@ -65,6 +67,7 @@
 empty,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
 enotez,enotez,Clemens Niederberger,https://github.com/cgnieder/enotez/,https://github.com/cgnieder/enotez.git,https://github.com/cgnieder/enotez/issues,2013-03-16,2020-04-14,
 etex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
+etl,etl,Jonathan P. Spratte,https://github.com/Skillmon/ltx_etl,git@github.com:Skillmon/ltx_etl.git,https://github.com/Skillmon/ltx_etl/issues,2021-08-16,2021-08-16,
 exp,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
 expl,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
 exsheets,exsheets,Clemens Niederberger,https://bitbucket.org/cgnieder/exsheets/,git@bitbucket.org:cgnieder/exsheets.git,https://bitbucket.org/cgnieder/exsheets/issues,2013-03-16,2013-03-16,
@@ -115,6 +118,7 @@
 keyval,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
 kgl,kantlipsum,Enrico Gregorio,,,,2013-03-16,2013-03-16,
 kivitendo,"kiviletter, kivitables",Marei Peischl for Kivitendo,https://www.kivitendo.de/,https://github.com/kivitendo/kivitendo-erp,https://forum.kivitendo.de/,2021-05-28,2021-05-28,
+langsci,langscibook ,Language Science Press,https://langsci-press.org,https://github.com/langsci/langscibook,https://github.com/langsci/langscibook/issues,2021-07-20,2021-07-21,
 left,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
 lltxmath,lualatex-math,Philipp Stephani,https://github.com/phst/lualatex-math,https://github.com/phst/lualatex-math.git,https://github.com/phst/lualatex-math/issues,2012-11-07,2012-11-07,
 log,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
@@ -167,6 +171,7 @@
 percent,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
 pgf,pgf,The PGF/TikZ Team,https://pgf-tikz.github.io,https://github.com/pgf-tikz/pgf,https://github.com/pgf-tikz/pgf/issues,2020-07-03,2020-07-03,
 pgfmxfp,pgfmath-xfp,Jonathan P. Spratte,https://github.com/Skillmon/ltx_pgfmath-xfp,https://github.com/Skillmon/ltx_pgfmath-xfp,https://github.com/Skillmon/ltx_pgfmath-xfp/issues,2021-05-20,2021-05-20,
+phone,phonenumbers,Keno Wehr,https://ctan.org/pkg/phonenumbers,https://github.com/wehro/phonenumbers,https://github.com/wehro/phonenumbers/issues,2021-08-23,2021-08-23,
 pi,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
 pkgploader,pkgploader,Michiel Helvensteijn,,,,2014-02-05,2014-02-05,
 platex,platex,Japanese TeX Development Community,https://github.com/texjporg/platex,https://github.com/texjporg/platex.git,https://github.com/texjporg/platex/issues,2020-09-30,2020-09-30,
@@ -189,6 +194,7 @@
 rivbook,rivbook,Julien Rivaud,,,,2018-06-13,2018-06-14,
 rivmath,rivmath,Julien Rivaud,,,,2018-06-13,2018-06-13,
 scan,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
+schulma,schulmathematik,Keno Wehr,https://ctan.org/pkg/schulmathematik,,,2021-08-23,2021-08-23,
 scontents,scontents,Pablo González,https://github.com/pablgonz/scontents,git@github.com:pablgonz/scontents.git,https://github.com/pablgonz/scontents/issues,2019-12-05,2019-12-05,
 sdaps,sdaps,Benjamin Berg,https://sdaps.org,https://github.com/sdaps/sdaps-class.git,https://github.com/sdaps/sdaps-class/issues,2020-02-17,2020-02-17,
 seq,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
@@ -246,4 +252,5 @@
 zero,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
 zhlipsum,zhlipsum,Xiangdong Zeng,https://github.com/stone-zeng/zhlipsum,https://github.com/stone-zeng/zhlipsum.git,https://github.com/stone-zeng/zhlipsum/issues,2018-06-14,2018-06-14,
 zhnum,zhnumber,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2013-03-16,2013-05-26,
+zrefcheck,zref-check,Gustavo Barros,https://github.com/gusbrs/zref-check,https://github.com/gusbrs/zref-check,https://github.com/gusbrs/zref-check/issues,2021-08-05,2021-08-05,
 zxjt,zxjatype,Takayuki Yato,,,,2013-03-16,2013-03-16,

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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2021-08-27 22:42:05 UTC (rev 60338)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2021-07-12}
+\date{Released 2021-08-27}
 
 \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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2021-08-27 22:42:05 UTC (rev 60338)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2021-07-12}
+\date{Released 2021-08-27}
 
 \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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2021-08-27 22:42:05 UTC (rev 60338)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2021-07-12}
+\date{Released 2021-08-27}
 
 \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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2021-08-27 22:42:05 UTC (rev 60338)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2021-07-12}
+\date{Released 2021-08-27}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex	2021-08-27 22:42:05 UTC (rev 60338)
@@ -328,6 +328,15 @@
   \item[\texttt{regex}] Regular expression.
 \end{description}
 
+\subsection{Scratch variables}
+
+Modules focussed on variable usage typically provide four scratch variables,
+two local and two global, with names of the form
+\cs{\meta{scope}_tmpa_\meta{type}}/\cs{\meta{scope}_tmpb_\meta{type}}. These
+are never used by the core code. The nature of \TeX{} grouping means that as
+with any other scratch variable, these should only be set and used with no
+intervening third-party code.
+
 \subsection{Terminological inexactitude}
 
 A word of warning. In this document, and others referring to the \pkg{expl3}

Modified: trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md	2021-08-27 22:42:05 UTC (rev 60338)
@@ -7,6 +7,11 @@
 
 ## [Unreleased]
 
+## [2021-08-27]
+
+### Changed
+- Track message changes in `l3kernel`
+
 ## [2021-08-04]
 
 ### Changed
@@ -154,7 +159,8 @@
 - Switch to ISO date format
 - Improve cross-module use of internal functions
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-08-04...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2021-08-27...HEAD
+[2021-08-27]: https://github.com/latex3/latex3/compare/2021-08-04...2021-08-27
 [2021-08-04]: https://github.com/latex3/latex3/compare/2021-06-18...2021-08-04
 [2021-06-18]: https://github.com/latex3/latex3/compare/2021-06-01...2021-06-18
 [2021-06-01]: https://github.com/latex3/latex3/compare/2021-05-27...2021-06-01

Modified: trunk/Master/texmf-dist/doc/latex/l3packages/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3packages/README.md	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/doc/latex/l3packages/README.md	2021-08-27 22:42:05 UTC (rev 60338)
@@ -1,7 +1,7 @@
 LaTeX3 High-Level Concepts
 ==========================
 
-Release 2021-08-04
+Release 2021-08-27
 
 Overview
 --------

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

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

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

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

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

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -122,7 +122,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2021-08-04}{}
+\ProvidesExplPackage{l3benchmark}{2021-08-27}{}
   {L3 Experimental benchmarking}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -42,7 +42,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 % \begin{documentation}
@@ -264,7 +264,7 @@
 %<@@=bitset>
 %    \end{macrocode}
 %    \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2021-08-04}{}
+\ProvidesExplPackage{l3bitset}{2021-08-27}{}
   {L3 Experimental bitset support}
 %    \end{macrocode}
 % A bitset is a string variable.
@@ -401,7 +401,7 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
-% 
+%
 % \begin{macro}
 %   {
 %     \bitset_set_true:Nn, \bitset_set_true:cn,
@@ -434,7 +434,7 @@
             \prop_gput:cnn { g_@@_ \cs_to_str:N #2 _name_prop } {#3} {#3}
           }
           {
-            \__kernel_msg_warning:nnxx { bitset } { bitset-unknown-name }
+            \msg_warning:nnxx { bitset } { unknown-name }
               { \token_to_str:N #2 }
               { \tl_to_str:n {#3} }
           }
@@ -541,7 +541,7 @@
   {
     \__kernel_chk_defined:NT #2
       {
-        #1 { LaTeX/bitset } { show-bitset }
+        #1 { bitset } { show }
            { \token_to_str:N #2 }
            { \bitset_to_bin:N #2 }
            { \bitset_to_arabic:N #2 }
@@ -552,7 +552,7 @@
   {
     \__kernel_chk_defined:NT #2
       {
-        #1 { LaTeX/bitset } { show-names }
+        #1 { bitset } { show-names }
            { \token_to_str:N #2 }
            { \prop_map_function:cN { g_@@_ \cs_to_str:N #2 _name_prop }  \msg_show_item:nn  }
            { }
@@ -564,13 +564,13 @@
 %
 % \subsection{Messages}
 %    \begin{macrocode}
- \__kernel_msg_new:nnn { bitset } { show-bitset }
+ \msg_new:nnn { bitset } { show }
   {
     The~bitset~#1~has~the~representation: \\
     >~binary:~#2  \\
     >~arabic:~#3 .
   }
-\__kernel_msg_new:nnn { bitset } { show-names }
+\msg_new:nnn { bitset } { show-names }
   {
     The~bitset~#1~
     \tl_if_empty:nTF {#2}
@@ -577,9 +577,10 @@
       { knows~no~names~yet \\>~ . }
       { knows~the~name/index~pairs~(without~outer~braces): #2 . }
   }
-\__kernel_msg_new:nnn { bitset } { bitset-unknown-name }
+\msg_new:nnn { bitset } { unknown-name }
   { The~name~'#2'~is~unknown~for~bitset~\tl_to_str:n {#1} }
-
+\prop_gput:Nnn \g_msg_module_name_prop { bitset } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { bitset } { }
 %    \end{macrocode}
 %    \begin{macrocode}
 %</package>

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -110,7 +110,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1162,7 +1162,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2021-08-04}{}
+\ProvidesExplPackage{l3draw}{2021-08-27}{}
   {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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -125,7 +125,7 @@
 %   \end{verbatim}
 %   \emph{i.e.}~every use of a bounding box will attempt to restore saved data,
 %   and saving will only take place where that is not possible.
-%   
+%
 %   Note that the \meta{graphic} may not be a simple file name: a multi-page PDF,
 %   for example, will need to have the bounding box cached for each page used.
 % \end{function}
@@ -240,7 +240,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2021-08-04}{}
+\ProvidesExplPackage{l3graphics}{2021-08-27}{}
   {L3 Experimental graphics inclusion support}
 %    \end{macrocode}
 %
@@ -272,7 +272,7 @@
 %   set up here should match the default for the drivers themselves: in
 %   the absence of any other setting the |cropbox| should be used.
 %    \begin{macrocode}
-\tl_new:N \l_graphics_decodearray_tl 
+\tl_new:N \l_graphics_decodearray_tl
 \tl_new:N \l_graphics_pagebox_tl
 \bool_new:N \l_graphics_interpolate_bool
 \tl_set:Nn \l_graphics_pagebox_tl { cropbox }
@@ -286,7 +286,7 @@
 %   {
 %     \l_graphics_llx_dim , \l_graphics_lly_dim,
 %     \l_graphics_urx_dim , \l_graphics_ury_dim
-%   } 
+%   }
 %   Storage for the return of bounding box.
 %    \begin{macrocode}
 \dim_new:N \l_graphics_llx_dim
@@ -306,7 +306,7 @@
 \cs_new_protected:Npn \graphics_bb_save:n #1
   {
     \dim_if_exist:cTF { c_@@_ #1 _urx_dim }
-      { \__kernel_msg_error:nnn { graphic } { bb-already-cached } {#1} }
+      { \msg_error:nnn { graphic } { bb-already-cached } {#1} }
       {
         \dim_compare:nNnF \l_graphics_llx_dim = { 0pt }
           { \dim_const:cn { c_@@_ #1 _llx_dim } { \l_graphics_llx_dim } }
@@ -408,7 +408,7 @@
   {
     #1
     \exp_not:N \ior_if_eof:NTF \exp_not:N \l_@@_tmp_ior
-      { \__kernel_msg_error:nnn { graphics } {#2} {#3} }
+      { \msg_error:nnn { graphics } {#2} {#3} }
       {
         \ior_str_map_inline:Nn \exp_not:N \l_@@_tmp_ior
           {
@@ -573,7 +573,7 @@
           { \seq_map_break:n { \use_i:nnn \@@_include: } }
       }
     \use:n
-      { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} }
+      { \msg_error:nnn { graphics } { graphic-not-found } {#1} }
   }
 \cs_new_protected:Npn \@@_include:
   {
@@ -594,7 +594,7 @@
           \exp_args:Ne \@@_include_auxi:n
             { \str_foldcase:n {#1} }
         }
-        { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} }
+        { \msg_error:nnn { graphics } { graphic-not-found } {#1} }
     \group_end:
   }
 \cs_new_protected:Npn \@@_include_auxi:n #1
@@ -621,7 +621,7 @@
           { \@@_include_auxiv:n }
             {#1}
       }
-      { \__kernel_msg_error:nnn { graphics } { unsupported-graphic-type } {#1} }
+      { \msg_error:nnn { graphics } { unsupported-graphic-type } {#1} }
   }
 \cs_new_protected:Npn \@@_include_auxiii:n #1
   {
@@ -692,19 +692,19 @@
 % \subsection{Messages}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { graphics } { graphic-not-found }
+\msg_new:nnnn { graphics } { graphic-not-found }
   { Image~file~'#1'~not~found. }
   {
     LaTeX~tried~to~open~graphic~file~'#1',
     ~but~the~file~could~not~be~read.
   }
-\__kernel_msg_new:nnnn { graphics } { pipe-failed }
+\msg_new:nnnn { graphics } { pipe-failed }
   { Cannot~run~piped~system~commands. }
   {
     LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
     Try~the~"--shell-escape"~(or~"--enable-pipes")~option.
   }
-\__kernel_msg_new:nnnn { graphics } { unsupported-graphic-type }
+\msg_new:nnnn { graphics } { unsupported-graphic-type }
   { Image~type~'#1'~not~supported~by~current~driver. }
   {
     LaTeX~was~asked~to~include~an~graphic~of~type~'#1',~

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -97,7 +97,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2021-08-04}{}
+\ProvidesExplPackage{l3opacity}{2021-08-27}{}
   {L3 Experimental opacity support}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -48,7 +48,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -166,7 +166,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2021-08-04}{}
+\ProvidesExplPackage{l3str-format}{2021-08-27}{}
   {L3 Experimental string formatting}
 %    \end{macrocode}
 %
@@ -306,7 +306,7 @@
 \cs_new:Npn \@@_format_parse_end:nwn #1 #2 \s_@@_stop \s_@@_stop #3
   {
     \tl_if_empty:nF {#2}
-      { \__kernel_msg_expandable_error:nnn { str } { invalid-format } {#3} }
+      { \msg_expandable_error:nnn { str } { invalid-format } {#3} }
     #1
   }
 %    \end{macrocode}
@@ -466,7 +466,7 @@
   {
     \token_if_eq_charcode:NNTF #2 =
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-align-format } {#2} {tl}
         \@@_format_put:nw { #1 < }
       }
@@ -477,7 +477,7 @@
       }
     \token_if_eq_charcode:NNF #3 ?
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-sign-format } {#3} {tl}
       }
     \@@_format_put:nw { {#4} }
@@ -488,7 +488,7 @@
       {
         \token_if_eq_charcode:NNF #6 ?
           {
-            \__kernel_msg_expandable_error:nnnn
+            \msg_expandable_error:nnnn
               { str } { invalid-style-format } {#6} {tl}
           }
       }
@@ -642,7 +642,7 @@
     \@@_format_put:nw { {#4} }
     \tl_if_empty:nF {#5}
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-precision-format } {#5} {int}
       }
     \str_case:nnF {#6}
@@ -654,7 +654,7 @@
         { X } { \@@_format_int:NwnnNNn \int_to_Hex:n }
       }
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-style-format } {#6} { int }
         \@@_format_int:NwnnNNn \use:n
       }
@@ -770,7 +770,7 @@
         { ? } { \@@_format_fp:wnnnNNn \@@_format_fp_g:nn }
       }
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-style-format } {#6} { fp }
         \@@_format_fp:wnnnNNn \@@_format_fp_g:nn
       }
@@ -959,16 +959,18 @@
 % All of the messages are produced expandably, so there is no need for
 % an extra-text.
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { str } { invalid-format }
+\msg_new:nnn { str } { invalid-format }
   { Invalid~format~'#1'. }
-\__kernel_msg_new:nnn { str } { invalid-align-format }
+\msg_new:nnn { str } { invalid-align-format }
   { Invalid~alignment~'#1'~for~type~'#2'. }
-\__kernel_msg_new:nnn { str } { invalid-sign-format }
+\msg_new:nnn { str } { invalid-sign-format }
   { Invalid~sign~'#1'~for~type~'#2'. }
-\__kernel_msg_new:nnn { str } { invalid-precision-format }
+\msg_new:nnn { str } { invalid-precision-format }
   { Invalid~precision~'#1'~for~type~'#2'. }
-\__kernel_msg_new:nnn { str } { invalid-style-format }
+\msg_new:nnn { str } { invalid-style-format }
   { Invalid~style~'#1'~for~type~'#2'. }
+\prop_gput:Nnn \g_msg_module_name_prop { str } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { str } { }
 %    \end{macrocode}
 %
 %    \begin{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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -46,7 +46,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -151,7 +151,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2021-08-04}{}
+\ProvidesExplPackage{l3sys-shell}{2021-08-27}{}
   {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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -53,7 +53,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -672,7 +672,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2021-08-04}{}
+\ProvidesExplPackage{xcoffins}{2021-08-27}{}
   {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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -61,7 +61,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -686,7 +686,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2021-08-04}{}
+\ProvidesExplPackage{l3galley}{2021-08-27}{}
   {L3 Experimental galley code}
 %    \end{macrocode}
 %
@@ -1983,7 +1983,7 @@
       { \galley_vspace_set_single:n {#1} }
       {
         \dim_compare:nNnT
-          { \tex_glueexpr:D \g_@@_interpar_vspace_user_tl } 
+          { \tex_glueexpr:D \g_@@_interpar_vspace_user_tl }
             < { \tex_glueexpr:D (#1) \scan_stop: }
           { \galley_vspace_set_single:n {#1} }
       }
@@ -1990,8 +1990,8 @@
   }
 %    \end{macrocode}
 % \end{macro}
-% 
 %
+%
 % \begin{macro}{\parskip}
 %   For the package, the \cs{parskip} primitive is moved out of the
 %   way as the code above is handling things.
@@ -2126,7 +2126,7 @@
 \cs_new_protected:Npn \galley_break_line:Nn #1#2
   {
     \mode_if_vertical:TF
-      { \__kernel_msg_error:nn { galley } { no-line-to-end } }
+      { \msg_error:nn { galley } { no-line-to-end } }
       {
         \tex_unskip:D
         \bool_if:NF #1
@@ -2458,7 +2458,7 @@
 % \subsection{Messages}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { galley } { no-line-to-end }
+\msg_new:nnn { galley } { no-line-to-end }
   { There's~no~line~here~to~end. }
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -731,7 +731,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2021-08-04}{}
+\ProvidesExplPackage{xgalley}{2021-08-27}{}
   {L3 Experimental galley}
 \RequirePackage{xtemplate,l3galley}
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -24,7 +24,7 @@
 %
 %<*driver|generic|package|2ekernel>
 %</driver|generic|package|2ekernel>
-\def\ExplFileDate{2021-07-12}%
+\def\ExplFileDate{2021-08-27}%
 %<*driver>
 \documentclass[full]{l3doc}
 \usepackage{graphicx}
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1777,12 +1777,12 @@
 %    \begin{macrocode}
 \cs_set_protected:Npn \debug_on:n #1
   {
-    \__kernel_msg_error:nnx { debug } { enable-debug }
+    \msg_error:nnx { debug } { enable-debug }
       { \tl_to_str:n { \debug_on:n {#1} } }
   }
 \cs_set_protected:Npn \debug_off:n #1
   {
-    \__kernel_msg_error:nnx { debug } { enable-debug }
+    \msg_error:nnx { debug } { enable-debug }
        { \tl_to_str:n { \debug_off:n {#1} } }
   }
 %    \end{macrocode}
@@ -1955,7 +1955,7 @@
       { \@@_generate_conditional:nnNNNnnn {#1} {#2} #3 #4 #5 }
       { \tl_count:n {#2} }
       {
-        \__kernel_msg_error:nnxx { kernel } { bad-number-of-arguments }
+        \msg_error:nnxx { kernel } { bad-number-of-arguments }
           { \token_to_str:c { #1 : #2 } }
           { \tl_count:n {#2} }
         \use_none:nn
@@ -1993,7 +1993,7 @@
 \cs_set_protected:Npn \@@_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8
   {
     \if_meaning:w \c_false_bool #3
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \use_none:nn
     \fi:
@@ -2033,7 +2033,7 @@
     \use:c { @@_generate_ #8 _form:wNNnnnnN }
         \tl_if_empty:nF {#8}
           {
-            \__kernel_msg_error:nnxx
+            \msg_error:nnxx
               { kernel } { conditional-form-unknown }
               {#8} { \token_to_str:c { #3 : #4 } }
           }
@@ -2087,7 +2087,7 @@
           { #7 \@@_p_true:w \fi: \c_false_bool }
       }
       {
-        \__kernel_msg_error:nnx { kernel } { protected-predicate }
+        \msg_error:nnx { kernel } { protected-predicate }
           { \token_to_str:c { #4 _p: #5 } }
       }
   }
@@ -2178,12 +2178,12 @@
 \cs_set_protected:Npn \@@_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6
   {
     \if_meaning:w \c_false_bool #3
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
     \fi:
     \if_meaning:w \c_false_bool #6
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#4} }
       \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
     \fi:
@@ -2197,7 +2197,7 @@
     \use:c { @@_set_eq_conditional_ #6 _form:wNnnnn }
         \tl_if_empty:nF {#6}
           {
-            \__kernel_msg_error:nnxx
+            \msg_error:nnxx
               { kernel } { conditional-form-unknown }
               {#6} { \token_to_str:c { #1 : #2 } }
           }
@@ -2516,7 +2516,7 @@
 %    only temporary, they will be redefined later on.
 %
 % \begin{macro}
-%   {\__kernel_msg_error:nnxx, \__kernel_msg_error:nnx, \__kernel_msg_error:nn}
+%   {\msg_error:nnxx, \msg_error:nnx, \msg_error:nn}
 %   If an internal error occurs before \LaTeX3 has loaded \pkg{l3msg} then
 %   the code should issue a usable if terse error message and halt. This
 %   can only happen if a coding error is made by the team, so this is
@@ -2523,7 +2523,7 @@
 %   a reasonable response.  Setting the \tn{newlinechar} is needed, to
 %   turn |^^J| into a proper line break in plain \TeX{}.
 %    \begin{macrocode}
-\cs_set_protected:Npn \__kernel_msg_error:nnxx #1#2#3#4
+\cs_set_protected:Npn \msg_error:nnxx #1#2#3#4
   {
     \tex_newlinechar:D = `\^^J \scan_stop:
     \tex_errmessage:D
@@ -2536,10 +2536,10 @@
       }
     \tex_end:D
   }
-\cs_set_protected:Npn \__kernel_msg_error:nnx #1#2#3
-  { \__kernel_msg_error:nnxx {#1} {#2} {#3} { } }
-\cs_set_protected:Npn \__kernel_msg_error:nn #1#2
-  { \__kernel_msg_error:nnxx {#1} {#2} { } { } }
+\cs_set_protected:Npn \msg_error:nnx #1#2#3
+  { \msg_error:nnxx {#1} {#2} {#3} { } }
+\cs_set_protected:Npn \msg_error:nn #1#2
+  { \msg_error:nnxx {#1} {#2} { } { } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2576,7 +2576,7 @@
   {
     \cs_if_free:NF #1
       {
-        \__kernel_msg_error:nnxx { kernel } { command-already-defined }
+        \msg_error:nnxx { kernel } { command-already-defined }
           { \token_to_str:N #1 } { \token_to_meaning:N #1 }
       }
   }
@@ -2876,7 +2876,7 @@
   {
     \__kernel_cs_parm_from_arg_count:nnF { \use:nnn #2 #1 } {#3}
       {
-        \__kernel_msg_error:nnxx { kernel } { bad-number-of-arguments }
+        \msg_error:nnxx { kernel } { bad-number-of-arguments }
           { \token_to_str:N #1 } { \int_eval:n {#3} }
         \use_none:n
       }
@@ -2957,7 +2957,7 @@
           { \tl_map_function:nN {#2} \@@_generate_from_signature:n }
         \tl_if_empty:oF \@@_tmp:w
           {
-            \__kernel_msg_error:nnxxx { kernel } { non-base-function }
+            \msg_error:nnxxx { kernel } { non-base-function }
               { \token_to_str:N #5 } {#2} { \@@_tmp:w }
           }
         \cs_generate_from_arg_count:NNnn
@@ -2964,7 +2964,7 @@
           #5 #4 { \tl_count:n {#2} } {#6}
       }
       {
-        \__kernel_msg_error:nnx { kernel } { missing-colon }
+        \msg_error:nnx { kernel } { missing-colon }
           { \token_to_str:N #5 }
       }
   }
@@ -3095,7 +3095,7 @@
     \cs_if_exist:NTF #1
       {#2}
       {
-        \__kernel_msg_error:nnx { kernel } { variable-not-defined }
+        \msg_error:nnx { kernel } { variable-not-defined }
           { \token_to_str:N #1 }
       }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1308,7 +1308,7 @@
         \group_end:
       }
       {
-        \__kernel_msg_error:nnx { kernel } { variable-not-defined }
+        \msg_error:nnx { kernel } { variable-not-defined }
           { \token_to_str:N #2 }
       }
   }
@@ -2218,13 +2218,13 @@
 \cs_generate_variant:Nn \box_autosize_to_wd_and_ht:Nnn { c }
 \cs_new_protected:Npn \box_autosize_to_wd_and_ht_plus_dp:Nnn #1#2#3
   {
-    \@@_autosize:NnnnN #1 {#2} {#3} { \box_ht:N #1 + \box_dp:N #1 } 
+    \@@_autosize:NnnnN #1 {#2} {#3} { \box_ht:N #1 + \box_dp:N #1 }
       \hbox_set:Nn
   }
 \cs_generate_variant:Nn \box_autosize_to_wd_and_ht_plus_dp:Nnn { c }
 \cs_new_protected:Npn \box_gautosize_to_wd_and_ht_plus_dp:Nnn #1#2#3
   {
-    \@@_autosize:NnnnN #1 {#2} {#3} { \box_ht:N #1 + \box_dp:N #1 } 
+    \@@_autosize:NnnnN #1 {#2} {#3} { \box_ht:N #1 + \box_dp:N #1 }
       \hbox_gset:Nn
   }
 \cs_generate_variant:Nn \box_gautosize_to_wd_and_ht_plus_dp:Nnn { c }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1221,12 +1221,12 @@
   {
     #6
       {
-        \__kernel_msg_error:nnxxx { seq } { item-too-large }
+        \msg_error:nnxxx { seq } { item-too-large }
           { \token_to_str:N #3 } {#2} {#1}
       }
       { \prg_return_false: }
   }
-\__kernel_msg_new:nnnn { seq } { item-too-large }
+\msg_new:nnnn { seq } { item-too-large }
   { Sequence~'#1'~does~not~have~an~item~#3 }
   {
     An~attempt~was~made~to~push~or~pop~the~item~at~position~#3~
@@ -1416,18 +1416,18 @@
   {
     \sys_if_shell:TF
       { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 }
-      { \__kernel_msg_error:nn { ior } { pipe-failed } }
+      { \msg_error:nn { ior } { pipe-failed } }
   }
 \cs_new_protected:Npn \@@_shell_open:nN #1#2
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \__kernel_msg_error:nnx
+        \msg_error:nnx
           { ior } { quote-in-shell } {#1}
       }
       { \__kernel_ior_open:Nn #2 { |#1 } }
   }
-\__kernel_msg_new:nnnn { ior } { pipe-failed }
+\msg_new:nnnn { ior } { pipe-failed }
   { Cannot~run~piped~system~commands. }
   {
     LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -542,7 +542,7 @@
           { \@@_nesting_number:N \l_@@_internal_a_tl }
         \@@_select:N \l_@@_internal_a_tl
       }
-      { \__kernel_msg_error:nn { cctab } { extra-end } }
+      { \msg_error:nn { cctab } { extra-end } }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -622,7 +622,7 @@
       }
       { \cs_if_exist_p:c { @@_group_ #1 _chk: } }
       {
-        \__kernel_msg_error:nnx { cctab } { group-mismatch }
+        \msg_error:nnx { cctab } { group-mismatch }
           {
             \int_sign:n
               { \tex_currentgrouplevel:D - \l_@@_internal_b_tl }
@@ -664,7 +664,7 @@
     \hook_gput_code:nnn { enddocument/end } { cctab }
       {
         \seq_if_empty:NF \g_@@_stack_seq
-          { \__kernel_msg_error:nn { cctab } { missing-end } }
+          { \msg_error:nn { cctab } { missing-end } }
       }
   }
 %    \end{macrocode}
@@ -726,13 +726,13 @@
         \@@_chk_if_valid_aux:NTF #1
           { \prg_return_true: }
           {
-            \__kernel_msg_error:nnx { cctab } { invalid-cctab }
+            \msg_error:nnx { cctab } { invalid-cctab }
               { \token_to_str:N #1 }
             \prg_return_false:
           }
       }
       {
-        \__kernel_msg_error:nnx { kernel } { command-not-defined }
+        \msg_error:nnx { kernel } { command-not-defined }
           { \token_to_str:N #1 }
         \prg_return_false:
       }
@@ -867,25 +867,25 @@
 % \subsection{Messages}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { cctab } { stack-full }
+\msg_new:nnnn { cctab } { stack-full }
   { The~category~code~table~stack~is~exhausted. }
   {
     LaTeX~has~been~asked~to~switch~to~a~new~category~code~table,~
     but~there~is~no~more~space~to~do~this!
   }
-\__kernel_msg_new:nnnn { cctab } { extra-end }
+\msg_new:nnnn { cctab } { extra-end }
   { Extra~\iow_char:N\\cctab_end:~ignored~\msg_line_context:. }
   {
     LaTeX~came~across~a~\iow_char:N\\cctab_end:~without~a~matching~
     \iow_char:N\\cctab_begin:N.~This~command~will~be~ignored.
   }
-\__kernel_msg_new:nnnn { cctab } { missing-end }
+\msg_new:nnnn { cctab } { missing-end }
   { Missing~\iow_char:N\\cctab_end:~before~end~of~TeX~run. }
   {
     LaTeX~came~across~more~\iow_char:N\\cctab_begin:N~than~
     \iow_char:N\\cctab_end:.
   }
-\__kernel_msg_new:nnnn { cctab } { invalid-cctab }
+\msg_new:nnnn { cctab } { invalid-cctab }
   { Invalid~\iow_char:N\\catcode~table. }
   {
     You~can~only~switch~to~a~\iow_char:N\\catcode~table~that~is~
@@ -892,7 +892,7 @@
     initialized~using~\iow_char:N\\cctab_new:N~or~
     \iow_char:N\\cctab_const:Nn.
   }
-\__kernel_msg_new:nnnn { cctab } { group-mismatch }
+\msg_new:nnnn { cctab } { group-mismatch }
   {
     \iow_char:N\\cctab_end:~occurred~in~a~
     \int_case:nn {#1}
@@ -908,6 +908,8 @@
     you~tried~to~interleave~them.~LaTeX~will~try~to~proceed,~
     but~results~may~be~unexpected.
   }
+\prop_gput:Nnn \g_msg_module_name_prop { cctab } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { cctab } { }
 %    \end{macrocode}
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1954,7 +1954,7 @@
           }
       }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { bad-variable } {#1}
       }
   }
@@ -2156,9 +2156,9 @@
 %   |#2| serving as a dummy code to prevent a check performed by this
 %   auxiliary.
 %    \begin{macrocode}
-\cs_new_protected:Npn \clist_show:N { \@@_show:NN \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \clist_show:N { \@@_show:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \clist_show:N { c }
-\cs_new_protected:Npn \clist_log:N { \@@_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_log:N { \@@_show:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \clist_log:N { c }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {
@@ -2173,7 +2173,7 @@
               { } { }
           }
           {
-            \__kernel_msg_error:nnxx { kernel } { non-clist }
+            \msg_error:nnxx { clist } { non-clist }
               { \token_to_str:N #2 } { \tl_to_str:N #2 }
           }
       }
@@ -2185,8 +2185,8 @@
 %   A variant of the above: no existence check, empty first argument for
 %   the message.
 %    \begin{macrocode}
-\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \msg_show:nnxxxx }
+\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \msg_log:nnxxxx }
 \cs_new_protected:Npn \@@_show:Nn #1#2
   {
     #1 { clist } { show }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -591,7 +591,7 @@
     \coffin_if_exist:NTF #1
       { #2 }
       {
-        \__kernel_msg_error:nnx { coffin } { unknown }
+        \msg_error:nnx { coffin } { unknown }
           { \token_to_str:N #1 }
       }
   }
@@ -938,7 +938,7 @@
     \prop_get:cnNF
       { coffin ~ \@@_to_value:N #1 ~ poles } {#2} #3
       {
-        \__kernel_msg_error:nnxx { coffin } { unknown-pole }
+        \msg_error:nnxx { coffin } { unknown-pole }
           { \exp_not:n {#2} } { \token_to_str:N #1 }
         \tl_set:Nn #3 { { 0pt } { 0pt } { 0pt } { 0pt } }
       }
@@ -1172,7 +1172,7 @@
         \l_@@_pole_a_tl \l_@@_pole_b_tl
     \bool_if:NT \l_@@_error_bool
       {
-        \__kernel_msg_error:nn { coffin } { no-pole-intersection }
+        \msg_error:nn { coffin } { no-pole-intersection }
         \dim_zero:N \l_@@_x_dim
         \dim_zero:N \l_@@_y_dim
       }
@@ -2479,10 +2479,10 @@
 %   structure then the code complains.
 %    \begin{macrocode}
 \cs_new_protected:Npn \coffin_show_structure:N
-  { \@@_show_structure:NN \__kernel_msg_show:nnxxxx }
+  { \@@_show_structure:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \coffin_show_structure:N { c }
 \cs_new_protected:Npn \coffin_log_structure:N
-  { \@@_show_structure:NN \__kernel_msg_log:nnxxxx }
+  { \@@_show_structure:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \coffin_log_structure:N { c }
 \cs_new_protected:Npn \@@_show_structure:NN #1#2
   {
@@ -2514,8 +2514,8 @@
 %   }
 %   Essentially a combination of \cs{coffin_show_structure:N} and
 %   \cs{box_show:Nnn}, but we need to avoid having two prompts, so we
-%   use \cs{__kernel_msg_term:nnxxxx} instead of
-%   \cs{__kernel_msg_show:nnxxxx} in the |show| case.
+%   use \cs{msg_term:nnxxxx} instead of
+%   \cs{msg_show:nnxxxx} in the |show| case.
 %    \begin{macrocode}
 \cs_new_protected:Npn \coffin_show:N #1
   { \coffin_show:Nnn #1 \c_max_int \c_max_int }
@@ -2524,10 +2524,10 @@
   { \coffin_log:Nnn #1 \c_max_int \c_max_int }
 \cs_generate_variant:Nn \coffin_log:N { c }
 \cs_new_protected:Npn \coffin_show:Nnn
-  { \@@_show:NNNnn \__kernel_msg_term:nnxxxx \box_show:Nnn }
+  { \@@_show:NNNnn \msg_term:nnxxxx \box_show:Nnn }
 \cs_generate_variant:Nn \coffin_show:Nnn { c }
 \cs_new_protected:Npn \coffin_log:Nnn
-  { \@@_show:NNNnn \__kernel_msg_log:nnxxxx \box_show:Nnn }
+  { \@@_show:NNNnn \msg_log:nnxxxx \box_show:Nnn }
 \cs_generate_variant:Nn \coffin_log:Nnn { c }
 \cs_new_protected:Npn \@@_show:NNNnn #1#2#3#4#5
   {
@@ -2543,7 +2543,7 @@
 % \subsection{Messages}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { coffin } { no-pole-intersection }
+\msg_new:nnnn { coffin } { no-pole-intersection }
   { No~intersection~between~coffin~poles. }
   {
     LaTeX~was~asked~to~find~the~intersection~between~two~poles,~
@@ -2550,16 +2550,16 @@
     but~they~do~not~have~a~unique~meeting~point:~
     the~value~(0pt,~0pt)~will~be~used.
   }
-\__kernel_msg_new:nnnn { coffin } { unknown }
+\msg_new:nnnn { coffin } { unknown }
   { Unknown~coffin~'#1'. }
   { The~coffin~'#1'~was~never~defined. }
-\__kernel_msg_new:nnnn { coffin } { unknown-pole }
+\msg_new:nnnn { coffin } { unknown-pole }
   { Pole~'#1'~unknown~for~coffin~'#2'. }
   {
     LaTeX~was~asked~to~find~a~typesetting~pole~for~a~coffin,~
     but~either~the~coffin~does~not~exist~or~the~pole~name~is~wrong.
   }
-\__kernel_msg_new:nnn { coffin } { show }
+\msg_new:nnn { coffin } { show }
   {
     Size~of~coffin~#1 : #2 \\
     Poles~of~coffin~#1 : #3 .

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -780,7 +780,7 @@
           { \@@_parse_loop_init:Nnn #1 {#2} {#3} }
       }
       {
-        \__kernel_msg_error:nnn { color } { unknown-color } {#2}
+        \msg_error:nnn { color } { unknown-color } {#2}
         \tl_set:Nn \l_@@_current_tl { { gray } { 0 } }
       }
   }
@@ -862,7 +862,7 @@
           }
       }
       {
-        \__kernel_msg_error:nnn { color } { unknown-color } {#2}
+        \msg_error:nnn { color } { unknown-color } {#2}
         \@@_extract:nNN { black } \l_@@_model_tl \l_@@_value_tl
         \@@_parse_break:w
       }
@@ -1276,7 +1276,7 @@
         \tl_set:Nx #3
           { \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s_@@_stop }
       }
-      { \__kernel_msg_error:nnn { color } { unknown-model } {#1} }
+      { \msg_error:nnn { color } { unknown-model } {#1} }
   }
 \cs_new_protected:Npn \@@_select_swap:Nnn #1#2#3
   {
@@ -1463,7 +1463,7 @@
           }
       }
       {
-        \__kernel_msg_error:nnn { color } { unknown-color } {#2}
+        \msg_error:nnn { color } { unknown-color } {#2}
       }
   }
 %    \end{macrocode}
@@ -1527,7 +1527,7 @@
   {
     \cs_if_exist_use:cF { @@_export_format_ #3 :nnN }
       {
-        \__kernel_msg_error:nnn { color } { unknown-export-format } {#3}
+        \msg_error:nnn { color } { unknown-export-format } {#3}
         \use_none:nnn
       }
         {#1} {#2} #4
@@ -1761,7 +1761,7 @@
   {
     \cs_if_exist:cTF { @@_parse_model_ #1 :w }
       {
-        \__kernel_msg_error:nnn { color } { model-already-defined } {#1}
+        \msg_error:nnn { color } { model-already-defined } {#1}
       }
       {
         \cs_if_exist:cTF { @@_model_ #2 :n }
@@ -1770,7 +1770,7 @@
             \use:c { @@_model_ #2 :n } {#1}
           }
           {
-            \__kernel_msg_error:nnn { color } { unknown-model-type } {#2}
+            \msg_error:nnn { color } { unknown-model-type } {#2}
           }
       }
   }
@@ -1830,7 +1830,7 @@
           \l_@@_internal_tl {#1}
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { separation-requires-name } {#1}
       }
   }
@@ -1847,7 +1847,7 @@
           \l_@@_internal_tl {#2} {#1}
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { separation-alternative-model } {#2}
       }
   }
@@ -1862,12 +1862,12 @@
               , 0 , 0 , 0 , 0 \s_@@_stop {#2} {#3} {#1}
           }
           {
-            \__kernel_msg_error:nnn { color }
+            \msg_error:nnn { color }
               { separation-alternative-values } {#2}
           }
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { unknown-alternative-model } {#1}
       }
   }
@@ -1966,7 +1966,7 @@
     \prop_get:NnNF \l_@@_internal_prop { illuminant }
       \l_@@_internal_tl
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { CIELAB-requires-illuminant } {#1}
         \tl_set:Nn \l_@@_internal_tl { d50 }
       }
@@ -1993,7 +1993,7 @@
           { 1 }
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { unknown-CIELAB-illuminant } {#1}
       }
   }
@@ -2064,7 +2064,7 @@
           \l_@@_internal_tl {#1}
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { DeviceN-requires-names } {#1}
       }
   }
@@ -2085,7 +2085,7 @@
               {
                 \str_if_eq:VVF \l_@@_model_tl \l_@@_internal_tl
                   {
-                    \__kernel_msg_error:nnn { color }
+                    \msg_error:nnn { color }
                       { DeviceN-inconsistent-alternative }
                       {#2}
                     \clist_map_break:n { \use_none:nnnn }
@@ -2095,7 +2095,7 @@
           {
             \str_if_eq:nnF {##1} { none }
               {
-                \__kernel_msg_error:nnn { color }
+                \msg_error:nnn { color }
                   { DeviceN-no-alternative }
                   {#2}
               }
@@ -2103,7 +2103,7 @@
       }
     \tl_if_empty:NTF \l_@@_model_tl
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { DeviceN-no-alternative } {#2}
       }
       { \exp_args:NV \@@_model_devicen:nnn \l_@@_model_tl {#1} {#2} }
@@ -2520,9 +2520,9 @@
 %   is similar to the keys module here.
 %    \begin{macrocode}
 \cs_new_protected:Npn \color_show:n
-  { \@@_show:Nn \__kernel_msg_show:nnxxxx }
+  { \@@_show:Nn \msg_show:nnxxxx }
 \cs_new_protected:Npn \color_log:n
-  { \@@_show:Nn \__kernel_msg_log:nnxxxx }
+  { \@@_show:Nn \msg_log:nnxxxx }
 \cs_new_protected:Npn \@@_show:Nn #1#2
   {
     #1 { color } { show }
@@ -2550,7 +2550,7 @@
 % \subsection{Messages}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { color } { CIELAB-requires-illuminant }
+\msg_new:nnnn { color } { CIELAB-requires-illuminant }
   { CIELAB~color~space~'#1'~require~an~illuminant. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space~using~
@@ -2560,13 +2560,13 @@
     key~was~given~with~the~correct~information.~LaTeX~will~use~illuminant~
     'd50'~for~recovery.
   }
-\__kernel_msg_new:nnnn { color } { conversion-not-available }
+\msg_new:nnnn { color } { conversion-not-available }
   { No~model~conversion~available~from~'#1'~to~'#2'. }
   {
     LaTeX~has~been~asked~to~convert~a~color~from~model~'#1'~
     to~model'#2',~but~there~is~no~method~available~to~do~that.
   }
-\__kernel_msg_new:nnnn { color } { DeviceN-inconsistent-alternative }
+\msg_new:nnnn { color } { DeviceN-inconsistent-alternative }
   { DeviceN~color~spaces~require~a~single~alternative~space. }
   {
     LaTeX~has~been~asked~to~create~a~DeviceN~color~space~'#1',~
@@ -2573,13 +2573,13 @@
     but~the~constituent~colors~do~not~have~a~common~alternative~
     color.
   }
-\__kernel_msg_new:nnnn { color } { DeviceN-no-alternative }
+\msg_new:nnnn { color } { DeviceN-no-alternative }
   { DeviceN~color~spaces~require~an~alternative~space. }
   {
     LaTeX~has~been~asked~to~create~a~DeviceN~color~space~'#1',~
     but~the~constituent~colors~do~not~all~have~a~device-based~alternative.
   }
-\__kernel_msg_new:nnnn { color } { DeviceN-requires-names }
+\msg_new:nnnn { color } { DeviceN-requires-names }
   { DeviceN~color~space~'#1'~require~a~list~of~names. }
   {
     LaTeX~has~been~asked~to~create~a~DeviceN~color~space,~
@@ -2588,13 +2588,13 @@
     \\ \\
     key~was~given~with~the~correct~information.
   }
-\__kernel_msg_new:nnnn { color } { model-already-defined }
+\msg_new:nnnn { color } { model-already-defined }
   { Color~model~'#1'~already~defined. }
   {
     LaTeX~was~asked~to~define~a~new~color~model~called~'#1',~but~
     this~color~model~already~exists.
   }
-\__kernel_msg_new:nnnn { color } { separation-alternative-model }
+\msg_new:nnnn { color } { separation-alternative-model }
   { Separation~color~space~'#1'~require~an~alternative~model. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
@@ -2603,7 +2603,7 @@
     \\ \\
     key~was~given~with~the~correct~information.
   }
-\__kernel_msg_new:nnnn { color } { separation-alternative-values }
+\msg_new:nnnn { color } { separation-alternative-values }
   { Separation~color~space~'#1'~require~values~for~the~alternative~space. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
@@ -2612,7 +2612,7 @@
     \\ \\
     key~was~given~with~the~correct~information.
   }
-\__kernel_msg_new:nnnn { color } { separation-requires-name }
+\msg_new:nnnn { color } { separation-requires-name }
   { Separation~color~space~'#1'~require~a~formal~name. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
@@ -2621,13 +2621,13 @@
     \\ \\
     key~was~given~with~the~correct~information.
   }
-\__kernel_msg_new:nnnn { color } { unknown-color }
+\msg_new:nnnn { color } { unknown-color }
   { Unknown~color~'#1'. }
   {
     LaTeX~has~been~asked~to~use~a~color~named~'#1',~
     but~this~has~never~been~defined.
   }
-\__kernel_msg_new:nnnn { color } { unknown-alternative-model }
+\msg_new:nnnn { color } { unknown-alternative-model }
   { Separation~color~space~'#1'~require~an~valid~alternative~space. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
@@ -2636,34 +2636,36 @@
     \\ \\
     is~unknown.
   }
-\__kernel_msg_new:nnnn { color } { unknown-export-format }
+\msg_new:nnnn { color } { unknown-export-format }
   { Unknown~export~format~'#1'. }
   {
     LaTeX~has~been~asked~to~export~a~color~in~format~'#1',~
     but~this~has~never~been~defined.
   }
-\__kernel_msg_new:nnnn { color } { unknown-CIELAB-illuminant }
+\msg_new:nnnn { color } { unknown-CIELAB-illuminant }
   { Unknown~illuminant~model~'#1'. }
   {
     LaTeX~has~been~asked~to~use~create~a~color~space~using~CIELAB~
     illuminant~'#1',~but~this~does~not~exist.
   }
-\__kernel_msg_new:nnnn { color } { unknown-model }
+\msg_new:nnnn { color } { unknown-model }
   { Unknown~color~model~'#1'. }
   {
     LaTeX~has~been~asked~to~use~a~color~model~called~'#1',~
     but~this~model~is~not~set~up.
   }
-\__kernel_msg_new:nnnn { color } { unknown-model-type }
+\msg_new:nnnn { color } { unknown-model-type }
   { Unknown~color~model~type~'#1'. }
   {
     LaTeX~has~been~asked~to~create~a~new~color~model~called~'#1',~
     but~this~type~of~model~was~never~set~up.
   }
+\prop_gput:Nnn \g_msg_module_name_prop { color } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { color } { }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { color } { show }
+\msg_new:nnn { color } { show }
   {
     The~color~#1~
     \tl_if_empty:nTF {#2}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -169,7 +169,7 @@
     \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
        {
         \cs_if_exist_use:cF { @@_ ##1 _on: }
-          { \__kernel_msg_error:nnn { debug } { debug } {##1} }
+          { \msg_error:nnn { debug } { debug } {##1} }
        }
   }
 \cs_set_protected:Npn \debug_off:n #1
@@ -177,7 +177,7 @@
     \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
       {
         \cs_if_exist_use:cF { @@_ ##1 _off: }
-          { \__kernel_msg_error:nnn { debug } { debug } {##1} }
+          { \msg_error:nnn { debug } { debug } {##1} }
       }
   }
 \cs_new_protected:Npn \@@_all_on:
@@ -269,7 +269,7 @@
         \@@_suspended:T \use_none:nnn
         \cs_if_exist:NF ##1
           {
-            \__kernel_msg_error:nnx { debug } { non-declared-variable }
+            \msg_error:nnx { debug } { non-declared-variable }
               { \token_to_str:N ##1 }
           }
       }
@@ -278,7 +278,7 @@
         \@@_suspended:T \use_none:nnn
         \cs_if_exist:NF ##1
           {
-            \__kernel_msg_error:nnx { kernel } { command-not-defined }
+            \msg_error:nnx { kernel } { command-not-defined }
               { \token_to_str:N ##1 }
           }
       }
@@ -287,7 +287,7 @@
         \@@_suspended:T \use_none:nnn
         \flag_if_exist:nF {##1}
           {
-            \__kernel_msg_expandable_error:nnn
+            \msg_expandable_error:nnn
               { kernel } { bad-variable } { flag~##1~ }
           }
       }
@@ -362,7 +362,7 @@
       \if:w #1 \scan_stop:
         \cs_gset_nopar:Npn #1 {#2}
       \else:
-        \__kernel_msg_error:nnxxx { debug } { local-global }
+        \msg_error:nnxxx { debug } { local-global }
           {#1} {#2} { \iow_char:N \\ #3 }
       \fi:
     \fi:
@@ -436,7 +436,7 @@
         \int_value:w #3 #2 #1 \scan_stop:
       }
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { debug } { expr } {#4} {#1}
       }
     #1
@@ -561,12 +561,12 @@
   {
     \if:w n #1 \prg_return_true: \else:
       \if:w N #1 \prg_return_false: \else:
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { debug } { bad-arg-type } {#1}
       \fi:
     \fi:
   }
-\__kernel_msg_new:nnn { debug } { bad-arg-type }
+\msg_new:nnn { debug } { bad-arg-type }
   { Wrong~argument~type~#1. }
 %    \end{macrocode}
 %   The macro below gets the base form of an
@@ -1434,7 +1434,7 @@
 %
 % Messages.
 % \begin{macrocode}
-\__kernel_msg_new:nnnn { debug } { debug }
+\msg_new:nnnn { debug } { debug }
   { The~debugging~option~'#1'~does~not~exist~\msg_line_context:. }
   {
     The~functions~'\iow_char:N\\debug_on:n'~and~
@@ -1442,8 +1442,8 @@
     'all',~'check-declarations',~'check-expressions',~
     'deprecation',~'log-functions',~not~'#1'.
   }
-\__kernel_msg_new:nnn { debug } { expr } { '#2'~in~#1 }
-\__kernel_msg_new:nnnn { debug } { local-global }
+\msg_new:nnn { debug } { expr } { '#2'~in~#1 }
+\msg_new:nnnn { debug } { local-global }
   { Inconsistent~local/global~assignment }
   {
     \c_@@_coding_error_text_tl
@@ -1460,7 +1460,7 @@
     \ %
     variable~'#3'.
   }
-\__kernel_msg_new:nnnn { debug } { non-declared-variable }
+\msg_new:nnnn { debug } { non-declared-variable }
   { The~variable~#1~has~not~been~declared~\msg_line_context:. }
   {
     \c_@@_coding_error_text_tl

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -285,7 +285,7 @@
       {
         \__kernel_if_debug:TF
           {
-            \exp_not:N \__kernel_msg_warning:nnxxx
+            \exp_not:N \msg_warning:nnxxx
               { deprecation } { deprecated-command }
               {#1}
               { \token_to_str:N #3 }
@@ -330,8 +330,8 @@
         \exp_not:N #4
         {
           \cs_if_eq:NNTF #3 \cs_gset_protected:Npn
-            { \exp_not:N \__kernel_msg_error:nnnnnn }
-            { \exp_not:N \__kernel_msg_expandable_error:nnnnnn }
+            { \exp_not:N \msg_error:nnnnnn }
+            { \exp_not:N \msg_expandable_error:nnnnnn }
             { deprecation } { deprecated-command }
             {#1}
             { \token_to_str:N #4 }
@@ -352,10 +352,10 @@
   {
     \tex_protected:D \tex_outer:D \tex_edef:D #1
       {
-        \exp_not:N \__kernel_msg_expandable_error:nnnnn
+        \exp_not:N \msg_expandable_error:nnnnn
           { deprecation } { deprecated-command }
           { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
-        \exp_not:N \__kernel_msg_error:nnxxx
+        \exp_not:N \msg_error:nnxxx
           { deprecation } { deprecated-command }
           { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
       }
@@ -364,7 +364,7 @@
 % \end{macro}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { deprecation } { deprecated-command }
+\msg_new:nnn { deprecation } { deprecated-command }
   {
     \tl_if_blank:nF {#3} { Use~ \tl_trim_spaces:n {#3} ~not~ }
     #2~deprecated~on~#1.

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -79,7 +79,7 @@
 %
 % \title{The \cls{l3doc} class}
 % \author{\Team}
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1205,7 +1205,7 @@
   {
       \fi:
     \fi:
-    \__kernel_msg_expandable_error:nnn { kernel } { bad-variable } {#2}
+    \msg_expandable_error:nnn { kernel } { bad-variable } {#2}
     \exp_end:
   }
 %    \end{macrocode}
@@ -1686,7 +1686,7 @@
   \if_cs_exist:N ^^@
   \else:
     \cs_new:Npn ^^@
-      { \__kernel_msg_expandable_error:nn { kernel } { bad-exp-end-f } }
+      { \msg_expandable_error:nn { kernel } { bad-exp-end-f } }
   \fi:
 %    \end{macrocode}
 %   The same but grabbing an argument to remove spaces and braces.
@@ -1848,7 +1848,7 @@
           \tl_if_head_is_N_type:nTF {#2}
             { \@@_e_primitive_aux:NNw #1 }
             {
-              \__kernel_msg_expandable_error:nnn { kernel } { e-type }
+              \msg_expandable_error:nnn { kernel } { e-type }
                 { Missing~primitive~name }
               \@@_e_primitive_aux:NNw #1 \c_empty_tl
             }
@@ -1950,7 +1950,7 @@
               {
                 \tl_if_empty:nTF {#1}
                   {
-                    \__kernel_msg_expandable_error:nnn
+                    \msg_expandable_error:nnn
                       { kernel } { e-type }
                       { \unexpanded missing~brace }
                     \@@_e_end:nn
@@ -1974,7 +1974,7 @@
               \token_if_eq_meaning:NNTF #2 \scan_stop:
                 { \exp_stop_f: }
                 {
-                  \__kernel_msg_expandable_error:nnn
+                  \msg_expandable_error:nnn
                     { kernel } { e-type }
                     { \unexpanded missing~brace }
                   { }
@@ -2301,7 +2301,7 @@
 \cs_new_protected:Npn \@@_generate_variant:nnNN #1#2#3#4
   {
     \if_meaning:w \c_false_bool #3
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
     \fi:
@@ -2504,7 +2504,7 @@
     \exp_not:n
       {
         \s_@@_mark
-        \__kernel_msg_error:nnxx { kernel } { variant-too-long }
+        \msg_error:nnxx { kernel } { variant-too-long }
           {#5} { \token_to_str:N #3 }
         \use_none:nnn
         \s_@@_stop
@@ -2519,7 +2519,7 @@
     \exp_not:n
       {
         \s_@@_mark
-        \__kernel_msg_error:nnxxxx { kernel } { invalid-variant }
+        \msg_error:nnxxxx { kernel } { invalid-variant }
           {#7} { \token_to_str:N #5 } {#1} {#2}
         \use_none:nnn
         \s_@@_stop
@@ -2533,7 +2533,7 @@
     #3 \s_@@_stop #4 #5 {#6} {#7}
     \exp_not:n
       {
-        \__kernel_msg_error:nnxxxx
+        \msg_error:nnxxxx
           { kernel } { deprecated-variant }
           {#7} { \token_to_str:N #5 } {#1} {#2}
       }
@@ -2757,7 +2757,7 @@
 \cs_new_protected:Npn \@@_generate_variant:nnNnn #1#2#3#4#5
   {
     \if_meaning:w \c_false_bool #3
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \@@_use_i_delimit_by_s_stop:nw
     \fi:
@@ -2777,7 +2777,7 @@
       \cs_if_exist_use:cTF { @@_generate_variant_#1_form:nnn }
         { {#3} {#4} {#5} }
         {
-          \__kernel_msg_error:nnxx
+          \msg_error:nnxx
             { kernel } { conditional-form-unknown }
             {#1} { \token_to_str:c { #3 : #4 } }
         }
@@ -2810,7 +2810,7 @@
           {
             \str_if_in:nnF { NnpcofeVvx } {####1}
               {
-                \__kernel_msg_error:nnnn { kernel } { invalid-exp-args }
+                \msg_error:nnnn { kernel } { invalid-exp-args }
                   {####1} {##1}
                 \str_map_break:n { \use_none:nn }
               }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1166,8 +1166,8 @@
 %   \texttt{show-streams} takes care of translating |ior|/|iow| to
 %   English.
 %    \begin{macrocode}
-\cs_new_protected:Npn \ior_show_list: { \@@_list:N \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \ior_log_list: { \@@_list:N \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \ior_show_list: { \@@_list:N \msg_show:nnxxxx }
+\cs_new_protected:Npn \ior_log_list: { \@@_list:N \msg_log:nnxxxx }
 \cs_new_protected:Npn \@@_list:N #1
   {
     #1 { kernel } { show-streams }
@@ -1592,8 +1592,8 @@
 % \begin{macro}{\@@_list:N}
 %   Done as for input, but with a copy of the auxiliary so the name is correct.
 %    \begin{macrocode}
-\cs_new_protected:Npn \iow_show_list: { \@@_list:N \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \iow_log_list: { \@@_list:N \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \iow_show_list: { \@@_list:N \msg_show:nnxxxx }
+\cs_new_protected:Npn \iow_log_list: { \@@_list:N \msg_log:nnxxxx }
 \cs_new_protected:Npn \@@_list:N #1
   {
     #1 { kernel } { show-streams }
@@ -1845,13 +1845,13 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \iow_allow_break:
   {
-    \__kernel_msg_error:nnnn { kernel } { iow-indent }
+    \msg_error:nnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_allow_break: }
   }
 \cs_new:Npx \@@_allow_break: { \c_@@_wrap_allow_break_marker_tl }
 \cs_new:Npn \@@_allow_break_error:
   {
-    \__kernel_msg_expandable_error:nnnn { kernel } { iow-indent }
+    \msg_expandable_error:nnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_allow_break: }
   }
 %    \end{macrocode}
@@ -1872,7 +1872,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \iow_indent:n #1
   {
-    \__kernel_msg_error:nnnnn { kernel } { iow-indent }
+    \msg_error:nnnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_indent:n } {#1}
     #1
   }
@@ -1884,7 +1884,7 @@
   }
 \cs_new:Npn \@@_indent_error:n #1
   {
-    \__kernel_msg_expandable_error:nnnnn { kernel } { iow-indent }
+    \msg_expandable_error:nnnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_indent:n } {#1}
     #1
   }
@@ -2570,7 +2570,7 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_name_expand_end:
   {
-    \__kernel_msg_expandable_error:nn
+    \msg_expandable_error:nn
       { kernel } { filename-missing-endcsname }
     \cs_end: \@@_name_expand_end:
   }
@@ -2584,7 +2584,7 @@
 \cs_new:Npn \@@_name_expand_error_aux:Nw #1 #2 \cs_end: #3
     \@@_name_expand_end:
   {
-    \__kernel_msg_expandable_error:nnff
+    \msg_expandable_error:nnff
       { kernel } { filename-chars-lost }
         { \token_to_str:N #1 } { \exp_stop_f: #2 }
   }
@@ -2611,7 +2611,7 @@
     \fi:
     \int_if_odd:nT {#2}
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { unbalanced-quote-in-filename } {#3}
       }
   }
@@ -2843,12 +2843,12 @@
   {
     \cs_gset:Npn \file_full_name:n #1
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { primitive-not-available }
           { \(pdf)filesize }
       }
   }
-\__kernel_msg_new:nnnn { kernel } { primitive-not-available }
+\msg_new:nnnn { kernel } { primitive-not-available }
   { Primitive~\token_to_str:N #1 not~available }
   {
     The~version~of~your~TeX~engine~does~not~provide~functionality~equivalent~to~
@@ -3113,7 +3113,7 @@
     \cs_set_protected:Npn \@@_get_details:nnN #1#2#3
        {
         \tl_clear:N #3
-        \__kernel_msg_error:nnx
+        \msg_error:nnx
           { kernel } { primitive-not-available }
           {
             \token_to_str:N \(pdf)file
@@ -3212,7 +3212,7 @@
     \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
       { p , T , F , TF }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { primitive-not-available }
           { \(pdf)filemoddate }
         \prg_return_false:
@@ -3269,7 +3269,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \__kernel_file_missing:n #1
   {
-    \__kernel_msg_error:nnx { kernel } { file-not-found }
+    \msg_error:nnx { kernel } { file-not-found }
       { \__kernel_file_name_sanitize:n {#1} }
   }
 %    \end{macrocode}
@@ -3458,8 +3458,8 @@
 %   \cs{AtBeginDocument} into \cs{g_@@_record_seq}), turning it to a
 %   string (this does not affect the commas of this comma list).
 %    \begin{macrocode}
-\cs_new_protected:Npn \file_show_list: { \@@_list:N \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \file_log_list: { \@@_list:N \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \file_show_list: { \@@_list:N \msg_show:nnxxxx }
+\cs_new_protected:Npn \file_log_list: { \@@_list:N \msg_log:nnxxxx }
 \cs_new_protected:Npn \@@_list:N #1
   {
     \seq_clear:N \l_@@_tmp_seq
@@ -3635,7 +3635,7 @@
     \ior_map_inline:Nn \g_@@_internal_ior
       { \seq_put_right:Nn \l_@@_tmp_seq {##1} }
     \ior_close:N \g_@@_internal_ior
-    \__kernel_msg_error:nnnn { kernel } { mismatched-support-file }
+    \msg_error:nnnn { kernel } { mismatched-support-file }
       {#1} {#2}
 %    \end{macrocode}
 %   And finish by ending the current file.
@@ -3646,7 +3646,7 @@
 %
 %   Now define the actual error message:
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { kernel } { mismatched-support-file }
+\msg_new:nnnn { kernel } { mismatched-support-file }
   {
     Mismatched~LaTeX~support~files~detected. \\
     Loading~'#2'~aborted!
@@ -3700,25 +3700,25 @@
 % \subsection{Messages}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { kernel } { file-not-found }
+\msg_new:nnnn { kernel } { file-not-found }
   { File~'#1'~not~found. }
   {
     The~requested~file~could~not~be~found~in~the~current~directory,~
     in~the~TeX~search~path~or~in~the~LaTeX~search~path.
   }
-\__kernel_msg_new:nnn { kernel } { file-list }
+\msg_new:nnn { kernel } { file-list }
   {
     >~File~List~<
     #1 \\
     .............
   }
-\__kernel_msg_new:nnnn { kernel } { filename-chars-lost }
+\msg_new:nnnn { kernel } { filename-chars-lost }
   { #1~invalid~in~file~name.~Lost:~#2. }
   {
     There~was~an~invalid~token~in~the~file~name~that~caused~
     the~characters~following~it~to~be~lost.
   }
-\__kernel_msg_new:nnnn { kernel } { filename-missing-endcsname }
+\msg_new:nnnn { kernel } { filename-missing-endcsname }
   { Missing~\iow_char:N\\endcsname~inserted~in~filename. }
   {
     The~file~name~had~more~\iow_char:N\\csname~commands~than~
@@ -3725,13 +3725,13 @@
     \iow_char:N\\endcsname~ones.~LaTeX~will~add~the~missing~
     \iow_char:N\\endcsname~and~try~to~continue~as~best~as~it~can.
   }
-\__kernel_msg_new:nnnn { kernel } { unbalanced-quote-in-filename }
+\msg_new:nnnn { kernel } { unbalanced-quote-in-filename }
   { Unbalanced~quotes~in~file~name~'#1'. }
   {
     File~names~must~contain~balanced~numbers~of~quotes~(").
   }
-\__kernel_msg_new:nnnn { kernel } { iow-indent }
-  { Only~#1 (arg~1)~allows~#2 }
+\msg_new:nnnn { kernel } { iow-indent }
+  { Only~#1 allows~#2 }
   {
     The~command~#2 can~only~be~used~in~messages~
     which~will~be~wrapped~using~#1.

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -226,7 +226,7 @@
 %   stream and its contents reach \TeX{}'s stomach.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_misused:n #1
-  { \__kernel_msg_error:nnx { fp } { misused } { \fp_to_tl:n {#1} } }
+  { \msg_error:nnx { fp } { misused } { \fp_to_tl:n {#1} } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1267,7 +1267,7 @@
 %
 % Using a floating point directly is an error.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { fp } { misused }
+\msg_new:nnnn { fp } { misused }
   { A~floating~point~with~value~'#1'~was~misused. }
   {
     To~obtain~the~value~of~a~floating~point~variable,~use~
@@ -1275,6 +1275,8 @@
     '\token_to_str:N \fp_to_tl:N',~or~other~
     conversion~functions.
   }
+\prop_gput:Nnn \g_msg_module_name_prop { fp } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { fp } { }
 %    \end{macrocode}
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -438,7 +438,7 @@
       {
         \token_if_eq_meaning:NNTF #2 0
           {
-            \__kernel_msg_expandable_error:nnn { kernel }
+            \msg_expandable_error:nnn { kernel }
               { zero-step } {#6}
           }
           {
@@ -506,12 +506,12 @@
 % \end{macro}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { fp } { step-tuple }
+\msg_new:nnn { fp } { step-tuple }
   { Tuple~argument~in~fp_step_...~{#1}{#2}{#3}. }
-\__kernel_msg_new:nnn { fp } { bad-step }
-  { Invalid~step~size~#2~in~step~function~#3. }
-\__kernel_msg_new:nnn { fp } { tiny-step }
-  { Tiny~step~size~(#1+#2=#1)~in~step~function~#3. }
+\msg_new:nnn { fp } { bad-step }
+  { Invalid~step~size~#2~for~function~#3. }
+\msg_new:nnn { fp } { tiny-step }
+  { Tiny~step~size~(#1+#2=#1)~for~function~#3. }
 %    \end{macrocode}
 %
 % \subsection{Extrema}
@@ -697,7 +697,7 @@
         \@@_parse_operand:Nw \c_@@_prec_colon_int
         \@@_parse_expand:w
     \else:
-      \__kernel_msg_expandable_error:nnnn
+      \msg_expandable_error:nnnn
         { fp } { missing } { : } { ~for~?: }
       \exp_after:wN \@@_parse_continue:NwN
       \exp_after:wN #1

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -789,7 +789,7 @@
           }
       }
       {
-        \__kernel_msg_expandable_error:nn { fp } { early-end }
+        \msg_expandable_error:nn { fp } { early-end }
         \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
       }
     #1
@@ -796,7 +796,7 @@
   }
 \cs_new:cpn { @@_exp_after_?_f:nw } #1#2
   {
-    \__kernel_msg_expandable_error:nnn { kernel } { bad-variable }
+    \msg_expandable_error:nnn { kernel } { bad-variable }
       {#2}
     \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w #1
   }
@@ -811,12 +811,12 @@
               {
                 \cs_if_eq:NNTF ##2 #1 { \use_i:nn } { \use:n }
                 {
-                  \__kernel_msg_expandable_error:nnn { fp }
+                  \msg_expandable_error:nnn { fp }
                     { robust-cmd }
                 }
               }
               {
-                \__kernel_msg_expandable_error:nnn { kernel }
+                \msg_expandable_error:nnn { kernel }
                   { bad-variable } {##2}
               }
           }
@@ -927,7 +927,7 @@
     #3
     \str_if_eq:nnTF {#1} {#2}
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { fp } { infty-pi } {#1}
         \c_nan_fp
       }
@@ -1025,7 +1025,7 @@
         \cs_if_exist_use:cF
           { @@_parse_caseless_ \str_foldcase:n {#2} :N }
           {
-            \__kernel_msg_expandable_error:nnn
+            \msg_expandable_error:nnn
               { fp } { unknown-fp-word } {#2}
             \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
             \@@_parse_infix:NN
@@ -1080,13 +1080,13 @@
   {
     \cs_if_exist:cTF { @@_parse_infix_ \token_to_str:N #1 :N }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { fp } { missing-number } {#1}
         \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
         \@@_parse_infix:NN #3 #1
       }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { fp } { unknown-symbol } {#1}
         \@@_parse_one:Nw #3
       }
@@ -1759,12 +1759,12 @@
             \@@_str_if_eq:nn { \s_@@ } { \exp_not:N #1 }
             = \c_zero_int
           0
-          \__kernel_msg_expandable_error:nnn
+          \msg_expandable_error:nnn
             { fp } { after-e } { floating~point~ }
           \prg_return_true:
         \else:
           0
-          \__kernel_msg_expandable_error:nnn
+          \msg_expandable_error:nnn
             { kernel } { bad-variable } {#1}
           \prg_return_false:
         \fi:
@@ -1775,7 +1775,7 @@
           \int_value:w #1
         \else:
           0
-          \__kernel_msg_expandable_error:nnn
+          \msg_expandable_error:nnn
             { fp } { after-e } { dimension~#1 }
         \fi:
         \prg_return_false:
@@ -1782,7 +1782,7 @@
       \fi:
     \else:
       0
-      \__kernel_msg_expandable_error:nnn
+      \msg_expandable_error:nnn
         { fp } { missing } { exponent }
       \prg_return_true:
     \fi:
@@ -1954,7 +1954,7 @@
         \exp_not:N \@@_parse_expand:w
       }
       {
-        \exp_not:N \__kernel_msg_expandable_error:nnn
+        \exp_not:N \msg_expandable_error:nnn
           { fp } { missing } { ) }
         \exp_not:N \tl_if_empty:nT {#2} \exp_not:N \c_@@_empty_tuple_fp
         #2 @
@@ -1977,7 +1977,7 @@
       \if_int_compare:w #1 = \c_@@_prec_tuple_int
         \exp_after:wN \c_@@_empty_tuple_fp \exp:w
       \else:
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { fp } { missing-number } { ) }
         \exp_after:wN \c_nan_fp \exp:w
       \fi:
@@ -2293,7 +2293,7 @@
 \cs_new:Npn \@@_parse_infix_check:NNN #1#2#3
   {
     \if_meaning:w \scan_stop: #1
-      \__kernel_msg_expandable_error:nnn
+      \msg_expandable_error:nnn
         { fp } { missing } { * }
       \exp_after:wN \@@_parse_infix_mul:N
       \exp_after:wN #2
@@ -2380,7 +2380,7 @@
           \exp_after:wN \use_none:n
           \exp_after:wN #1
         \else:
-          \__kernel_msg_expandable_error:nnn { fp } { extra } { ) }
+          \msg_expandable_error:nnn { fp } { extra } { ) }
           \exp_after:wN \@@_parse_infix:NN
           \exp_after:wN ##1
           \exp:w \exp_after:wN \@@_parse_expand:w
@@ -2583,7 +2583,7 @@
 \exp_args:Nc \@@_tmp:w { @@_parse_infix_::N }
   \@@_ternary_auxii:NwwN \c_@@_prec_colon_int
   {
-    \__kernel_msg_expandable_error:nnnn
+    \msg_expandable_error:nnnn
       { fp } { missing } { ? } { ~for~?: }
   }
 %    \end{macrocode}
@@ -2624,7 +2624,7 @@
   }
 \cs_new:Npn \@@_parse_excl_error:
   {
-    \__kernel_msg_expandable_error:nnnn
+    \msg_expandable_error:nnnn
       { fp } { missing } { = } { ~after~!. }
   }
 \cs_new:Npn \@@_parse_compare:NNNNNNN #1
@@ -2859,37 +2859,37 @@
 % \subsection{Messages}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { fp } { deprecated }
+\msg_new:nnn { fp } { deprecated }
   { '#1'~deprecated;~use~'#2' }
-\__kernel_msg_new:nnn { fp } { unknown-fp-word }
+\msg_new:nnn { fp } { unknown-fp-word }
   { Unknown~fp~word~#1. }
-\__kernel_msg_new:nnn { fp } { missing }
+\msg_new:nnn { fp } { missing }
   { Missing~#1~inserted #2. }
-\__kernel_msg_new:nnn { fp } { extra }
+\msg_new:nnn { fp } { extra }
   { Extra~#1~ignored. }
-\__kernel_msg_new:nnn { fp } { early-end }
+\msg_new:nnn { fp } { early-end }
   { Premature~end~in~fp~expression. }
-\__kernel_msg_new:nnn { fp } { after-e }
+\msg_new:nnn { fp } { after-e }
   { Cannot~use~#1 after~'e'. }
-\__kernel_msg_new:nnn { fp } { missing-number }
+\msg_new:nnn { fp } { missing-number }
   { Missing~number~before~'#1'. }
-\__kernel_msg_new:nnn { fp } { unknown-symbol }
+\msg_new:nnn { fp } { unknown-symbol }
   { Unknown~symbol~#1~ignored. }
-\__kernel_msg_new:nnn { fp } { extra-comma }
+\msg_new:nnn { fp } { extra-comma }
   { Unexpected~comma~turned~to~nan~result. }
-\__kernel_msg_new:nnn { fp } { no-arg }
+\msg_new:nnn { fp } { no-arg }
   { #1~got~no~argument;~used~nan. }
-\__kernel_msg_new:nnn { fp } { multi-arg }
+\msg_new:nnn { fp } { multi-arg }
   { #1~got~more~than~one~argument;~used~nan. }
-\__kernel_msg_new:nnn { fp } { num-args }
+\msg_new:nnn { fp } { num-args }
   { #1~expects~between~#2~and~#3~arguments. }
-\__kernel_msg_new:nnn { fp } { bad-args }
+\msg_new:nnn { fp } { bad-args }
   { Arguments~in~#1#2~are~invalid. }
-\__kernel_msg_new:nnn { fp } { infty-pi }
+\msg_new:nnn { fp } { infty-pi }
   { Math~command~#1 is~not~an~fp }
 \cs_if_exist:cT { @unexpandable at protect }
   {
-    \__kernel_msg_new:nnn { fp } { robust-cmd }
+    \msg_new:nnn { fp } { robust-cmd }
       { Robust~command~#1 invalid~in~fp~expression! }
   }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -78,11 +78,11 @@
 %    \begin{macrocode}
 \sys_if_rand_exist:F
   {
-    \__kernel_msg_new:nnn { kernel } { fp-no-random }
+    \msg_new:nnn { kernel } { fp-no-random }
       { Random~numbers~unavailable~for~#1 }
     \cs_new:Npn \@@_rand_o:Nw ? #1 @
       {
-        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+        \msg_expandable_error:nnn { kernel } { fp-no-random }
           { fp~rand }
         \exp_after:wN \c_nan_fp
       }
@@ -89,13 +89,13 @@
     \cs_new_eq:NN \@@_randint_o:Nw \@@_rand_o:Nw
     \cs_new:Npn \int_rand:nn #1#2
       {
-        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+        \msg_expandable_error:nnn { kernel } { fp-no-random }
           { \int_rand:nn {#1} {#2} }
         \int_eval:n {#1}
       }
     \cs_new:Npn \int_rand:n #1
       {
-        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+        \msg_expandable_error:nnn { kernel } { fp-no-random }
           { \int_rand:n {#1} }
         1
       }
@@ -333,7 +333,7 @@
             \@@_rand_myriads:n { XXXX } { 0000 } { 0000 } ; 0
           }
           {
-            \__kernel_msg_expandable_error:nnnnn
+            \msg_expandable_error:nnnnn
               { fp } { num-args } { rand() } { 0 } { 0 }
             \exp_after:wN \c_nan_fp
           }
@@ -516,7 +516,7 @@
     \cs_new:Npn \@@_randint:ww #1; #2;
       {
         \if_int_compare:w #1 > #2 \exp_stop_f:
-          \__kernel_msg_expandable_error:nnnn
+          \msg_expandable_error:nnnn
             { kernel } { randint-backward-range } {#1} {#2}
           \@@_randint:ww #2; #1;
         \else:
@@ -633,7 +633,7 @@
     \cs_new:Npn \@@_randint:n #1
       {
         \if_int_compare:w #1 < \c_one_int
-          \__kernel_msg_expandable_error:nnnn
+          \msg_expandable_error:nnnn
             { kernel } { randint-backward-range } { 1 } {#1}
           \@@_randint:ww #1; 1;
         \else:

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 % \maketitle
 %
 % \begin{documentation}
@@ -127,11 +127,11 @@
           { invalid_operation , division_by_zero , overflow , underflow }
           {#1}
           {
-            \__kernel_msg_error:nnxx { fp }
+            \msg_error:nnxx { fp }
               { unknown-fpu-trap-type } {#1} {#2}
           }
           {
-            \__kernel_msg_error:nnx
+            \msg_error:nnx
               { fp } { unknown-fpu-exception } {#1}
           }
       }
@@ -338,7 +338,7 @@
 % \begin{macro}[EXP]{\@@_error:nnnn, \@@_error:nnfn, \@@_error:nffn, \@@_error:nfff}
 %    \begin{macrocode}
 \cs_new:Npn \@@_error:nnnn
-  { \__kernel_msg_expandable_error:nnnnn { fp } }
+  { \msg_expandable_error:nnnnn { fp } }
 \cs_generate_variant:Nn \@@_error:nnnn { nnf, nff , nfff }
 %    \end{macrocode}
 % \end{macro}
@@ -347,7 +347,7 @@
 %
 % Some messages.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { fp } { unknown-fpu-exception }
+\msg_new:nnnn { fp } { unknown-fpu-exception }
   {
     The~FPU~exception~'#1'~is~not~known:~
     that~trap~will~never~be~triggered.
@@ -362,7 +362,7 @@
         * ~ underflow
       }
   }
-\__kernel_msg_new:nnnn { fp } { unknown-fpu-trap-type }
+\msg_new:nnnn { fp } { unknown-fpu-trap-type }
   { The~FPU~trap~type~'#2'~is~not~known. }
   {
     The~trap~type~must~be~one~of \\
@@ -373,19 +373,19 @@
         * ~ none
       }
   }
-\__kernel_msg_new:nnn { fp } { flow }
+\msg_new:nnn { fp } { flow }
   { An ~ #3 ~ occurred. }
-\__kernel_msg_new:nnn { fp } { flow-to }
+\msg_new:nnn { fp } { flow-to }
   { #1 ~ #3 ed ~ to ~ #2 . }
-\__kernel_msg_new:nnn { fp } { zero-div }
+\msg_new:nnn { fp } { zero-div }
   { Division~by~zero~in~ #1 (#2) }
-\__kernel_msg_new:nnn { fp } { zero-div-ii }
+\msg_new:nnn { fp } { zero-div-ii }
   { Division~by~zero~in~ (#1) #3 (#2) }
-\__kernel_msg_new:nnn { fp } { invalid }
+\msg_new:nnn { fp } { invalid }
   { Invalid~operation~ #1 (#2) }
-\__kernel_msg_new:nnn { fp } { invalid-ii }
+\msg_new:nnn { fp } { invalid-ii }
   { Invalid~operation~ (#1) #3 (#2) }
-\__kernel_msg_new:nnn { fp } { unknown-type }
+\msg_new:nnn { fp } { unknown-type }
   { Unknown~type~for~'#1' }
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -172,7 +172,7 @@
   {
     \int_compare:nNnTF {#1} < 0
       {
-        \__kernel_msg_error:nnn { kernel } { negative-array-size } {#1}
+        \msg_error:nnn { kernel } { negative-array-size } {#1}
         \cs_undefine:N #1
         \int_gsub:Nn \g_@@_array_int { 3 }
       }
@@ -250,7 +250,7 @@
 \cs_generate_variant:Nn \fparray_gset:Nnn { c }
 \cs_new_protected:Npn \@@_array_gset:NNNNww #1#2#3#4#5 ; #6 ;
   {
-    \@@_array_bounds:NNnTF \__kernel_msg_error:nnxxx #4 {#5}
+    \@@_array_bounds:NNnTF \msg_error:nnxxx #4 {#5}
       {
         \exp_after:wN \@@_change_func_type:NNN
           \@@_use_i_until_s:nw #6 ;
@@ -346,7 +346,7 @@
 \cs_generate_variant:Nn \fparray_item_to_tl:Nn { c }
 \cs_new:Npn \@@_array_item:NwN #1#2 ; #3
   {
-    \@@_array_bounds:NNnTF \__kernel_msg_expandable_error:nnfff #1 {#2}
+    \@@_array_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
       { \exp_after:wN \@@_array_item:NNNnN #1 {#2} #3 }
       { \exp_after:wN #3 \c_nan_fp }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1508,7 +1508,7 @@
   {
     { }
     \c_zero_int \fi:
-    \__kernel_msg_expandable_error:nnn
+    \msg_expandable_error:nnn
       { kernel } { unknown-comparison } {#1}
     \prg_return_false:
   }
@@ -1859,7 +1859,7 @@
       {
         \int_compare:nNnTF {#2} = \c_zero_int
           {
-            \__kernel_msg_expandable_error:nnn
+            \msg_expandable_error:nnn
               { kernel } { zero-step } {#4}
             \prg_break:
           }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -205,7 +205,7 @@
 % \end{variable}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { kernel } { negative-array-size }
+\msg_new:nnn { kernel } { negative-array-size }
   { Size~of~array~may~not~be~negative:~#1 }
 %    \end{macrocode}
 %
@@ -236,7 +236,7 @@
     \@@_count:w #1 = \int_eval:n {#2} \scan_stop:
     \int_compare:nNnT { \intarray_count:N #1 } < 0
       {
-        \__kernel_msg_error:nnx { kernel } { negative-array-size }
+        \msg_error:nnx { kernel } { negative-array-size }
           { \intarray_count:N #1 }
       }
     \int_compare:nNnT { \intarray_count:N #1 } > 0
@@ -312,7 +312,7 @@
 \cs_generate_variant:Nn \intarray_gset:Nnn { c }
 \cs_new_protected:Npn \@@_gset:Nww #1#2 ; #3 ;
   {
-    \@@_bounds:NNnTF \__kernel_msg_error:nnxxx #1 {#2}
+    \@@_bounds:NNnTF \msg_error:nnxxx #1 {#2}
       {
         \@@_gset_overflow_test:nw {#3}
         \__kernel_intarray_gset:Nnn #1 {#2} {#3}
@@ -338,7 +338,7 @@
   }
 \cs_new_protected:Npn \@@_gset_overflow:NNnn #1#2#3#4
   {
-    \__kernel_msg_error:nnxxxx { kernel } { overflow }
+    \msg_error:nnxxxx { kernel } { overflow }
       { \token_to_str:N #2 } {#3} {#4} {  \@@_signed_max_dim:n {#4} }
     #1 #2 {#3} { \@@_signed_max_dim:n {#4} }
   }
@@ -383,7 +383,7 @@
 \cs_generate_variant:Nn \intarray_item:Nn { c }
 \cs_new:Npn \@@_item:Nw #1#2 ;
   {
-    \@@_bounds:NNnTF \__kernel_msg_expandable_error:nnfff #1 {#2}
+    \@@_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
       { \__kernel_intarray_item:Nn #1 {#2} }
       { 0 }
   }
@@ -509,9 +509,9 @@
 % \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:N, \intarray_log:c}
 %   Convert the list to a comma list (with spaces after each comma)
 %    \begin{macrocode}
-\cs_new_protected:Npn \intarray_show:N { \@@_show:NN \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \intarray_show:N { c }
-\cs_new_protected:Npn \intarray_log:N { \@@_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \intarray_log:N { \@@_show:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \intarray_log:N { c }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {
@@ -565,7 +565,7 @@
       {
         \int_compare:nNnTF {#2} > {#3}
           {
-            \__kernel_msg_expandable_error:nnnn
+            \msg_expandable_error:nnnn
               { kernel } { randint-backward-range } {#2} {#3}
             \@@_gset_rand:Nnn #1 {#3} {#2}
           }
@@ -613,7 +613,7 @@
   {
     \cs_new_protected:Npn \intarray_gset_rand:Nnn #1#2#3
       {
-        \__kernel_msg_error:nnn { kernel } { fp-no-random }
+        \msg_error:nnn { kernel } { fp-no-random }
           { \intarray_gset_rand:Nnn #1 {#2} {#3} }
       }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -284,157 +284,6 @@
 %   Inserts a kern of the specified \meta{length}, a dimension expression.
 % \end{variable}
 %
-% \begin{function}
-%   {\__kernel_msg_new:nnnn, \__kernel_msg_new:nnn}
-%   \begin{syntax}
-%     \cs{__kernel_msg_new:nnnn} \Arg{module} \Arg{message} \Arg{text} \Arg{more text}
-%   \end{syntax}
-%   Creates a kernel \meta{message} for a given \meta{module}.
-%   The message is defined to first give \meta{text} and then
-%   \meta{more text} if the user requests it. If no \meta{more text} is
-%   available then a standard text is given instead. Within \meta{text}
-%   and \meta{more text} four parameters (|#1| to |#4|) can be used:
-%   these will be supplied and expanded at the time the message is used.
-%   An error is raised if the \meta{message} already exists.
-% \end{function}
-%
-% \begin{function}
-%   {\__kernel_msg_set:nnnn, \__kernel_msg_set:nnn}
-%   \begin{syntax}
-%     \cs{__kernel_msg_set:nnnn} \Arg{module} \Arg{message} \Arg{text} \Arg{more text}
-%   \end{syntax}
-%   Sets up the text for a kernel \meta{message} for a given \meta{module}.
-%   The message is defined to first give \meta{text} and then
-%   \meta{more text} if the user requests it. If no \meta{more text} is
-%   available then a standard text is given instead. Within \meta{text}
-%   and \meta{more text} four parameters (|#1| to |#4|) can be used:
-%   these will be supplied and expanded at the time the message is used.
-% \end{function}
-%
-% \begin{function}
-%   {
-%     \__kernel_msg_fatal:nnnnnn ,
-%     \__kernel_msg_fatal:nnnnn  ,
-%     \__kernel_msg_fatal:nnnn   ,
-%     \__kernel_msg_fatal:nnn    ,
-%     \__kernel_msg_fatal:nn     ,
-%     \__kernel_msg_fatal:nnxxxx ,
-%     \__kernel_msg_fatal:nnxxx  ,
-%     \__kernel_msg_fatal:nnxx   ,
-%     \__kernel_msg_fatal:nnx
-%   }
-%   \begin{syntax}
-%     \cs{__kernel_msg_fatal:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
-%   \end{syntax}
-%   Issues kernel \meta{module} error \meta{message}, passing \meta{arg one}
-%   to \meta{arg four} to the text-creating functions. After issuing a
-%   fatal error the \TeX{} run halts. Cannot be redirected.
-% \end{function}
-%
-% \begin{function}
-%   {
-%     \__kernel_msg_critical:nnnnnn ,
-%     \__kernel_msg_critical:nnnnn  ,
-%     \__kernel_msg_critical:nnnn   ,
-%     \__kernel_msg_critical:nnn    ,
-%     \__kernel_msg_critical:nn     ,
-%     \__kernel_msg_critical:nnxxxx ,
-%     \__kernel_msg_critical:nnxxx  ,
-%     \__kernel_msg_critical:nnxx   ,
-%     \__kernel_msg_critical:nnx
-%   }
-%   \begin{syntax}
-%     \cs{__kernel_msg_critical:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
-%   \end{syntax}
-%   Issues kernel \meta{module} error \meta{message}, passing \meta{arg one}
-%   to \meta{arg four} to the text-creating functions.  After issuing a
-%   critical error, \TeX{} stops reading the current input file.
-%   Cannot be redirected.
-% \end{function}
-%
-% \begin{function}
-%   {
-%     \__kernel_msg_error:nnnnnn ,
-%     \__kernel_msg_error:nnnnn  ,
-%     \__kernel_msg_error:nnnn   ,
-%     \__kernel_msg_error:nnn    ,
-%     \__kernel_msg_error:nn     ,
-%     \__kernel_msg_error:nnxxxx ,
-%     \__kernel_msg_error:nnxxx  ,
-%     \__kernel_msg_error:nnxx   ,
-%     \__kernel_msg_error:nnx
-%   }
-%   \begin{syntax}
-%     \cs{__kernel_msg_error:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
-%   \end{syntax}
-%   Issues kernel \meta{module} error \meta{message}, passing \meta{arg one}
-%   to
-%   \meta{arg four} to the text-creating functions. The error
-%   stops processing and issues the text at the terminal. After user input,
-%   the run continues. Cannot be redirected.
-% \end{function}
-%
-% \begin{function}
-%   {
-%     \__kernel_msg_warning:nnnnnn ,
-%     \__kernel_msg_warning:nnnnn  ,
-%     \__kernel_msg_warning:nnnn   ,
-%     \__kernel_msg_warning:nnn    ,
-%     \__kernel_msg_warning:nn     ,
-%     \__kernel_msg_warning:nnxxxx ,
-%     \__kernel_msg_warning:nnxxx  ,
-%     \__kernel_msg_warning:nnxx   ,
-%     \__kernel_msg_warning:nnx
-%   }
-%   \begin{syntax}
-%     \cs{__kernel_msg_warning:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
-%   \end{syntax}
-%   Issues kernel \meta{module} warning \meta{message}, passing
-%   \meta{arg one} to
-%   \meta{arg four} to the text-creating functions. The warning text
-%   is added to the log file, but the \TeX{} run is not interrupted.
-% \end{function}
-%
-% \begin{function}
-%   {
-%     \__kernel_msg_info:nnnnnn ,
-%     \__kernel_msg_info:nnnnn  ,
-%     \__kernel_msg_info:nnnn   ,
-%     \__kernel_msg_info:nnn    ,
-%     \__kernel_msg_info:nn     ,
-%     \__kernel_msg_info:nnxxxx ,
-%     \__kernel_msg_info:nnxxx  ,
-%     \__kernel_msg_info:nnxx   ,
-%     \__kernel_msg_info:nnx
-%   }
-%   \begin{syntax}
-%     \cs{__kernel_msg_info:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
-%   \end{syntax}
-%   Issues kernel \meta{module} information \meta{message}, passing
-%   \meta{arg one} to \meta{arg four} to the text-creating functions.
-%   The information text is added to the log file.
-% \end{function}
-%
-% \begin{function}[EXP]
-%   {
-%     \__kernel_msg_expandable_error:nnnnnn,
-%     \__kernel_msg_expandable_error:nnnnn,
-%     \__kernel_msg_expandable_error:nnnn,
-%     \__kernel_msg_expandable_error:nnn,
-%     \__kernel_msg_expandable_error:nn,
-%     \__kernel_msg_expandable_error:nnffff,
-%     \__kernel_msg_expandable_error:nnfff,
-%     \__kernel_msg_expandable_error:nnff,
-%     \__kernel_msg_expandable_error:nnf,
-%   }
-%   \begin{syntax}
-%     \cs{__kernel_msg_expandable_error:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
-%   \end{syntax}
-%   Issues an error, passing \meta{arg one} to \meta{arg four}
-%   to the text-creating functions. The resulting string must
-%   be much shorter than a line, otherwise it is cropped.
-% \end{function}
-%
 % \begin{variable}{\g__kernel_prg_map_int}
 %   This integer is used by non-expandable mapping functions to track
 %   the level of nesting in force.  The functions

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1242,7 +1242,7 @@
            \s_@@_mark ##3 \s_@@_nil
            #2 \s_@@_mark \@@_clean_up_active:w
         {
-          \__kernel_msg_expandable_error:nn
+          \msg_expandable_error:nn
             { keyval } { misplaced-equals-sign }
           \@@_loop_other:nnw
         }
@@ -1250,7 +1250,7 @@
           \s_@@_mark ##1 \s_@@_stop \s_@@_mark ##2 \s_@@_nil
           ##3 \s_@@_mark ##4 ##5
         {
-          \__kernel_msg_expandable_error:nn
+          \msg_expandable_error:nn
             { keyval } { misplaced-equals-sign }
           \@@_loop_other:nnw
         }
@@ -1345,7 +1345,7 @@
   { \@@_loop_other:nnw }
 \cs_new:Npn \@@_blank_key_error:w #1 \@@_loop_other:nnw
   {
-    \__kernel_msg_expandable_error:nn { keyval } { blank-key-name }
+    \msg_expandable_error:nn { keyval } { blank-key-name }
     \@@_loop_other:nnw
   }
 %    \end{macrocode}
@@ -1353,10 +1353,12 @@
 %
 % Two messages for the low level parsing system.
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { keyval } { misplaced-equals-sign }
-  { Misplaced~equals~sign~in~key-value~input~\msg_line_context: }
-\__kernel_msg_new:nnn { keyval } { blank-key-name }
+\msg_new:nnn { keyval } { misplaced-equals-sign }
+  { Misplaced~'='~in~key-value~input~\msg_line_context: }
+\msg_new:nnn { keyval } { blank-key-name }
   { Blank~key~name~in~key-value~input~\msg_line_context: }
+\prop_gput:Nnn \g_msg_module_name_prop { keyval } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { keyval } { }
 %    \end{macrocode}
 %
 % \begin{macro}[EXP]{\@@_trim:nN}
@@ -1645,7 +1647,7 @@
       {
         \str_if_empty:NF \l_@@_property_str
           {
-            \__kernel_msg_error:nnxx { keys } { property-unknown }
+            \msg_error:nnxx { keys } { property-unknown }
               \l_@@_property_str \l_keys_path_str
           }
       }
@@ -1708,7 +1710,7 @@
     #1 \s_@@_nil #2 \@@_property_find_err:w
   {
     \str_clear:N \l_@@_property_str
-    \__kernel_msg_error:nnn { keys } { no-property } {#1}
+    \msg_error:nnn { keys } { no-property } {#1}
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1730,7 +1732,7 @@
           \l_@@_property_str \s_@@_stop
           { \use:c { \c_@@_props_root_str \l_@@_property_str } }
           {
-            \__kernel_msg_error:nnxx { keys } { property-requires-value }
+            \msg_error:nnxx { keys } { property-requires-value }
               \l_@@_property_str \l_keys_path_str
           }
       }
@@ -1760,7 +1762,7 @@
       { \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
     \@@_cmd_set:nn { \l_keys_path_str / unknown }
       {
-        \__kernel_msg_error:nnx { keys } { boolean-values-only }
+        \msg_error:nnx { keys } { boolean-values-only }
           \l_keys_key_str
       }
     \@@_default_set:n { true }
@@ -1782,7 +1784,7 @@
       { \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
     \@@_cmd_set:nn { \l_keys_path_str / unknown }
       {
-        \__kernel_msg_error:nnx { keys } { boolean-values-only }
+        \msg_error:nnx { keys } { boolean-values-only }
           \l_keys_key_str
       }
     \@@_default_set:n { true }
@@ -1811,7 +1813,7 @@
           { \c_@@_type_root_str \@@_parent:o \l_keys_path_str }
           { choice }
           {
-            \__kernel_msg_error:nnxx { keys } { nested-choice-key }
+            \msg_error:nnxx { keys } { nested-choice-key }
               \l_keys_path_tl { \@@_parent:o \l_keys_path_str }
           }
           { \@@_choice_make_aux:N #1 }
@@ -1825,7 +1827,7 @@
     \@@_cmd_set:nn \l_keys_path_str { #1 {##1} }
     \@@_cmd_set:nn { \l_keys_path_str / unknown }
       {
-        \__kernel_msg_error:nnxx { keys } { choice-unknown }
+        \msg_error:nnxx { keys } { choice-unknown }
           \l_keys_path_str {##1}
       }
   }
@@ -2049,7 +2051,7 @@
           }
       }
       {
-        \__kernel_msg_error:nnx { keys }
+        \msg_error:nnx { keys }
           { property-boolean-values-only }
           { .value_ #1 :n }
       }
@@ -2058,7 +2060,7 @@
   {
     \bool_if:NF \l_@@_no_value_bool
       {
-        \__kernel_msg_error:nnxx { keys } { value-forbidden }
+        \msg_error:nnxx { keys } { value-forbidden }
           \l_keys_path_str \l_keys_value_tl
         \use_none:nnn
       }
@@ -2067,7 +2069,7 @@
   {
     \bool_if:NT \l_@@_no_value_bool
       {
-        \__kernel_msg_error:nnx { keys } { value-required }
+        \msg_error:nnx { keys } { value-required }
           \l_keys_path_str
         \use_none:nnn
       }
@@ -2911,7 +2913,7 @@
           { \c_@@_code_root_str \l_@@_module_str / unknown }
           { \@@_execute:no { \l_@@_module_str / unknown } \l_keys_value_tl }
           {
-            \__kernel_msg_error:nnxx { keys } { unknown }
+            \msg_error:nnxx { keys } { unknown }
               \l_keys_path_str \l_@@_module_str
           }
       }
@@ -2984,7 +2986,7 @@
         {
           \tl_if_blank:nF {##1}
             {
-              \__kernel_msg_error:nnxx { keys } { bad-relative-key-path }
+              \msg_error:nnxx { keys } { bad-relative-key-path }
                 \l_keys_path_str
                 \l_@@_relative_tl
             }
@@ -3155,9 +3157,9 @@
 %   To show a key, show its code using a message.
 %    \begin{macrocode}
 \cs_new_protected:Npn \keys_show:nn
-  { \@@_show:Nnn \__kernel_msg_show:nnxxxx }
+  { \@@_show:Nnn \msg_show:nnxxxx }
 \cs_new_protected:Npn \keys_log:nn
-  { \@@_show:Nnn \__kernel_msg_log:nnxxxx }
+  { \@@_show:Nnn \msg_log:nnxxxx }
 \cs_new_protected:Npn \@@_show:Nnn #1#2#3
   {
     #1 { keys } { show-key }
@@ -3184,43 +3186,43 @@
 %
 % For when there is a need to complain.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { keys } { bad-relative-key-path }
+\msg_new:nnnn { keys } { bad-relative-key-path }
   { The~key~'#1'~is~not~inside~the~'#2'~path. }
   { The~key~'#1'~cannot~be~expressed~relative~to~path~'#2'. }
-\__kernel_msg_new:nnnn { keys } { boolean-values-only }
+\msg_new:nnnn { keys } { boolean-values-only }
   { Key~'#1'~accepts~boolean~values~only. }
   { The~key~'#1'~only~accepts~the~values~'true'~and~'false'. }
-\__kernel_msg_new:nnnn { keys } { choice-unknown }
+\msg_new:nnnn { keys } { choice-unknown }
   { Key~'#1'~accepts~only~a~fixed~set~of~choices. }
   {
     The~key~'#1'~only~accepts~predefined~values,~
     and~'#2'~is~not~one~of~these.
   }
-\__kernel_msg_new:nnnn { keys } { unknown }
+\msg_new:nnnn { keys } { unknown }
   { The~key~'#1'~is~unknown~and~is~being~ignored. }
   {
     The~module~'#2'~does~not~have~a~key~called~'#1'.\\
     Check~that~you~have~spelled~the~key~name~correctly.
   }
-\__kernel_msg_new:nnnn { keys } { nested-choice-key }
+\msg_new:nnnn { keys } { nested-choice-key }
   { Attempt~to~define~'#1'~as~a~nested~choice~key. }
   {
     The~key~'#1'~cannot~be~defined~as~a~choice~as~the~parent~key~'#2'~is~
     itself~a~choice.
   }
-\__kernel_msg_new:nnnn { keys } { value-forbidden }
+\msg_new:nnnn { keys } { value-forbidden }
   { The~key~'#1'~does~not~take~a~value. }
   {
     The~key~'#1'~should~be~given~without~a~value.\\
     The~value~'#2'~was~present:~the~key~will~be~ignored.
   }
-\__kernel_msg_new:nnnn { keys } { value-required }
+\msg_new:nnnn { keys } { value-required }
   { The~key~'#1'~requires~a~value. }
   {
     The~key~'#1'~must~have~a~value.\\
     No~value~was~present:~the~key~will~be~ignored.
   }
-\__kernel_msg_new:nnn { keys } { show-key }
+\msg_new:nnn { keys } { show-key }
   {
     The~key~#1~
     \tl_if_empty:nTF {#2}
@@ -3227,6 +3229,8 @@
       { is~undefined. }
       { has~the~properties: #2 . }
   }
+\prop_gput:Nnn \g_msg_module_name_prop { keys } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { keys } { }
 %    \end{macrocode}
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -279,7 +279,7 @@
       {
         \cs_set:Npn #1 ##1
           {
-            \__kernel_msg_expandable_error:nnn
+            \msg_expandable_error:nnn
               { luatex } { luatex-required } { #1 }
           }
       }
@@ -288,7 +288,7 @@
       {
         \cs_set_protected:Npn #1 ##1
           {
-            \__kernel_msg_error:nnn
+            \msg_error:nnn
               { luatex } { luatex-required } { #1 }
           }
       }
@@ -301,7 +301,7 @@
 % \subsection{Messages}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { luatex } { luatex-required }
+\msg_new:nnnn { luatex } { luatex-required }
   { LuaTeX~engine~not~in~use!~Ignoring~#1. }
   {
     The~feature~you~are~using~is~only~available~

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -693,7 +693,7 @@
   {
     \msg_if_exist:nnT {#1} {#2}
       {
-        \__kernel_msg_error:nnxx { msg } { already-defined }
+        \msg_error:nnxx { msg } { already-defined }
           {#1} {#2}
       }
   }
@@ -1166,8 +1166,12 @@
 %   }
 %   For an error, the interrupt routine is called.  We check if there is
 %   a \enquote{more text} by comparing that control sequence with a
-%   permanently empty text.
+%   permanently empty text. We have to undefine the bootstrap versions
+%   here.
 %    \begin{macrocode}
+  \cs_undefine:N \msg_error:nnxx
+  \cs_undefine:N \msg_error:nnx
+  \cs_undefine:N \msg_error:nn
   \@@_class_new:nn { error }
     {
       \@@_interrupt:NnnnN
@@ -1180,6 +1184,7 @@
 %
 % \begin{macro}
 %   {
+%     \@@_info_aux:NNnnnnnn ,
 %     \msg_warning:nnnnnn ,
 %     \msg_warning:nnnnn  ,
 %     \msg_warning:nnnn   ,
@@ -1188,38 +1193,7 @@
 %     \msg_warning:nnxxxx ,
 %     \msg_warning:nnxxx  ,
 %     \msg_warning:nnxx   ,
-%     \msg_warning:nnx
-%   }
-%   Warnings are printed to the terminal.
-%    \begin{macrocode}
-  \@@_class_new:nn { warning }
-    {
-      \str_set:Nx \l_@@_text_str { \msg_warning_text:n {#1} }
-      \str_set:Nx \l_@@_name_str { \msg_module_name:n {#1} }
-      \iow_term:n { }
-      \iow_wrap:nxnN
-        {
-          \l_@@_text_str : ~
-          \use:c { \c_@@_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6}
-        }
-        {
-          ( \l_@@_name_str )
-          \prg_replicate:nn
-            {
-                \str_count:N \l_@@_text_str
-              - \str_count:N \l_@@_name_str
-            }
-            { ~ }
-        }
-        { } \iow_term:n
-      \iow_term:n { }
-    }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}
-%   {
-%     \@@_info_aux:Nnn      ,
+%     \msg_warning:nnx    ,
 %     \msg_note:nnnnnn ,
 %     \msg_note:nnnnn  ,
 %     \msg_note:nnnn   ,
@@ -1237,28 +1211,23 @@
 %     \msg_info:nnxxxx ,
 %     \msg_info:nnxxx  ,
 %     \msg_info:nnxx   ,
-%     \msg_info:nnx
+%     \msg_info:nnx    ,
 %   }
-%   Information has no decoration and goes either to the log or both
-%   log and terminal.
+%   Warnings and information messages have no decoration.  Warnings are
+%   printed to the terminal while information can either go to the log
+%   or both log and terminal.
 %    \begin{macrocode}
-  \@@_class_new:nn { note }
+  \cs_new_protected:Npn \@@_info_aux:NNnnnnnn #1#2#3#4#5#6#7#8
     {
-      \@@_info_aux:Nnn \iow_term:n {#1}
-        { \use:c { \c_@@_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
-    }
-  \@@_class_new:nn { info }
-    {
-      \@@_info_aux:Nnn \iow_log:n {#1}
-        { \use:c { \c_@@_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
-    }
-  \cs_new_protected:Npn \@@_info_aux:Nnn #1#2#3
-    {
-      \str_set:Nx \l_@@_text_str { \msg_info_text:n {#2} }
-      \str_set:Nx \l_@@_name_str { \msg_module_name:n {#2} }
+      \str_set:Nx \l_@@_text_str { #2 {#3} }
+      \str_set:Nx \l_@@_name_str { \msg_module_name:n {#3} }
       #1 { }
-      \iow_wrap:nxnN { \l_@@_text_str : ~ #3 }
+      \iow_wrap:nxnN
         {
+          \l_@@_text_str : ~
+          \use:c { \c_@@_text_prefix_tl #3 / #4 } {#5} {#6} {#7} {#8}
+        }
+        {
           ( \l_@@_name_str )
           \prg_replicate:nn
              {
@@ -1270,6 +1239,21 @@
          { } #1
        #1 { }
     }
+  \@@_class_new:nn { warning }
+    {
+      \@@_info_aux:NNnnnnnn \iow_term:n \msg_warning_text:n
+        {#1} {#2} {#3} {#4} {#5} {#6}
+    }
+  \@@_class_new:nn { note }
+    {
+      \@@_info_aux:NNnnnnnn \iow_term:n \msg_info_text:n
+        {#1} {#2} {#3} {#4} {#5} {#6}
+    }
+  \@@_class_new:nn { info }
+    {
+      \@@_info_aux:NNnnnnnn \iow_log:n \msg_info_text:n
+        {#1} {#2} {#3} {#4} {#5} {#6}
+    }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1283,22 +1267,7 @@
 %     \msg_log:nnxxxx ,
 %     \msg_log:nnxxx  ,
 %     \msg_log:nnxx   ,
-%     \msg_log:nnx
-%   }
-%   \enquote{Log} data is very similar to information, but with no extras
-%   added.
-%    \begin{macrocode}
-  \@@_class_new:nn { log }
-    {
-      \iow_wrap:nnnN
-        { \use:c { \c_@@_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
-        { } { } \iow_log:n
-    }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}
-%   {
+%     \msg_log:nnx    ,
 %     \msg_term:nnnnnn ,
 %     \msg_term:nnnnn  ,
 %     \msg_term:nnnn   ,
@@ -1307,12 +1276,20 @@
 %     \msg_term:nnxxxx ,
 %     \msg_term:nnxxx  ,
 %     \msg_term:nnxx   ,
-%     \msg_term:nnx
+%     \msg_term:nnx    ,
 %   }
+%   \enquote{Log} data is very similar to information, but with no extras
+%   added.
 %   \enquote{Term} is used for communicating with the user through the
 %   terminal, like diagnostic messages, and debugging.  This is similar
 %   to \enquote{log} messages, but uses the terminal output.
 %    \begin{macrocode}
+  \@@_class_new:nn { log }
+    {
+      \iow_wrap:nnnN
+        { \use:c { \c_@@_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
+        { } { } \iow_log:n
+    }
   \@@_class_new:nn { term }
     {
       \iow_wrap:nnnN
@@ -1415,7 +1392,7 @@
 \cs_new:Npn \@@_class_chk_exist:nT #1
   {
     \cs_if_free:cTF { @@_ #1 _code:nnnnnn }
-      { \__kernel_msg_error:nnx { msg } { class-unknown } {#1} }
+      { \msg_error:nnx { msg } { class-unknown } {#1} }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1485,7 +1462,7 @@
             \@@_use_redirect_name:n { #2 / #3 }
           }
       }
-      { \__kernel_msg_error:nnxx { msg } { unknown } {#2} {#3} }
+      { \msg_error:nnxx { msg } { unknown } {#2} {#3} }
     \cs_if_exist_use:N \conditionally at traceon
   }
 \cs_new_protected:Npn \@@_use_code: { }
@@ -1635,7 +1612,7 @@
             \tl_if_eq:NNTF \l_@@_class_tl \l_@@_current_class_tl
               {
                 \prop_put:cnn { l_@@_redirect_ #2 _prop } {#3} {#2}
-                \__kernel_msg_warning:nnxxxx
+                \msg_warning:nnxxxx
                   { msg } { redirect-loop }
                   { \seq_item:Nn \l_@@_class_loop_seq { 1 } }
                   { \seq_item:Nn \l_@@_class_loop_seq { 2 } }
@@ -1659,177 +1636,64 @@
 %
 % \subsection{Kernel-specific functions}
 %
+% These are all retained purely for older \pkg{xparse} support.
+%
 % \begin{macro}{\__kernel_msg_new:nnnn, \__kernel_msg_new:nnn}
-% \begin{macro}{\__kernel_msg_set:nnnn, \__kernel_msg_set:nnn}
-%   The kernel needs some messages of its own. These are created using
-%   pre-built functions. Two functions are provided: one more general
-%   and one which only has the short text part.
 %    \begin{macrocode}
-\cs_new_protected:Npn \__kernel_msg_new:nnnn #1#2
-  { \msg_new:nnnn { LaTeX } { #1 / #2 } }
-\cs_new_protected:Npn \__kernel_msg_new:nnn #1#2
-  { \msg_new:nnn { LaTeX } { #1 / #2 } }
-\cs_new_protected:Npn \__kernel_msg_set:nnnn #1#2
-  { \msg_set:nnnn { LaTeX } { #1 / #2 } }
-\cs_new_protected:Npn \__kernel_msg_set:nnn #1#2
-  { \msg_set:nnn { LaTeX } { #1 / #2 } }
+\cs_new_protected:Npn \__kernel_msg_new:nnnn #1
+  { \msg_new:nnnn { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_new:nnn #1
+  { \msg_new:nnn { LaTeX / #1 } }
 %    \end{macrocode}
 % \end{macro}
-% \end{macro}
 %
-% \begin{macro}{\@@_kernel_class_new:nN}
-% \begin{macro}{\@@_kernel_class_new_aux:nN}
-%   All the functions for kernel messages come in variants ranging
-%   from~$0$ to~$4$ arguments.  Those with less than~$4$ arguments are
-%   defined in terms of the $4$-argument variant, in a way very similar
-%   to \cs{@@_class_new:nn}.  This auxiliary is destroyed at the end of
-%   the group.
-%    \begin{macrocode}
-\group_begin:
-  \cs_set_protected:Npn \@@_kernel_class_new:nN #1
-    { \@@_kernel_class_new_aux:nN { __kernel_msg_ #1 } }
-  \cs_set_protected:Npn \@@_kernel_class_new_aux:nN #1#2
-    {
-      \cs_new_protected:cpn { #1 :nnnnnn } ##1##2##3##4##5##6
-        {
-          \use:x
-            {
-              \exp_not:n { #2 { LaTeX } { ##1 / ##2 } }
-                { \tl_to_str:n {##3} } { \tl_to_str:n {##4} }
-                { \tl_to_str:n {##5} } { \tl_to_str:n {##6} }
-            }
-        }
-      \cs_new_protected:cpx { #1 :nnnnn } ##1##2##3##4##5
-        { \exp_not:c { #1 :nnnnnn } {##1} {##2} {##3} {##4} {##5} { } }
-      \cs_new_protected:cpx { #1 :nnnn } ##1##2##3##4
-        { \exp_not:c { #1 :nnnnnn } {##1} {##2} {##3} {##4} { } { } }
-      \cs_new_protected:cpx { #1 :nnn } ##1##2##3
-        { \exp_not:c { #1 :nnnnnn } {##1} {##2} {##3} { } { } { } }
-      \cs_new_protected:cpx { #1 :nn } ##1##2
-        { \exp_not:c { #1 :nnnnnn } {##1} {##2} { } { } { } { } }
-      \cs_new_protected:cpx { #1 :nnxxxx } ##1##2##3##4##5##6
-        {
-          \use:x
-            {
-              \exp_not:N \exp_not:n
-                { \exp_not:c { #1 :nnnnnn } {##1} {##2} }
-                {##3} {##4} {##5} {##6}
-            }
-        }
-      \cs_new_protected:cpx { #1 :nnxxx } ##1##2##3##4##5
-        { \exp_not:c { #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { } }
-      \cs_new_protected:cpx { #1 :nnxx } ##1##2##3##4
-        { \exp_not:c { #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { } }
-      \cs_new_protected:cpx { #1 :nnx } ##1##2##3
-        { \exp_not:c { #1 :nnxxxx } {##1} {##2} {##3} { } { } { } }
-    }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
 % \begin{macro}
 %   {
-%     \__kernel_msg_fatal:nnnnnn    ,
-%     \__kernel_msg_fatal:nnnnn     ,
-%     \__kernel_msg_fatal:nnnn      ,
-%     \__kernel_msg_fatal:nnn       ,
-%     \__kernel_msg_fatal:nn        ,
-%     \__kernel_msg_fatal:nnxxxx    ,
-%     \__kernel_msg_fatal:nnxxx     ,
-%     \__kernel_msg_fatal:nnxx      ,
-%     \__kernel_msg_fatal:nnx       ,
-%     \__kernel_msg_critical:nnnnnn ,
-%     \__kernel_msg_critical:nnnnn  ,
-%     \__kernel_msg_critical:nnnn   ,
-%     \__kernel_msg_critical:nnn    ,
-%     \__kernel_msg_critical:nn     ,
-%     \__kernel_msg_critical:nnxxxx ,
-%     \__kernel_msg_critical:nnxxx  ,
-%     \__kernel_msg_critical:nnxx   ,
-%     \__kernel_msg_critical:nnx    ,
-%     \__kernel_msg_error:nnnnnn    ,
-%     \__kernel_msg_error:nnnnn     ,
-%     \__kernel_msg_error:nnnn      ,
-%     \__kernel_msg_error:nnn       ,
-%     \__kernel_msg_error:nn        ,
-%     \__kernel_msg_error:nnxxxx    ,
-%     \__kernel_msg_error:nnxxx     ,
-%     \__kernel_msg_error:nnxx      ,
-%     \__kernel_msg_error:nnx
+%     \__kernel_msg_info:nnxx    ,
+%     \__kernel_msg_warning:nnx  ,
+%     \__kernel_msg_warning:nnxx ,
+%     \__kernel_msg_error:nnx    ,
+%     \__kernel_msg_error:nnxx   ,
+%     \__kernel_msg_error:nnxxx
 %   }
-%   Neither fatal kernel errors nor kernel errors can be redirected.  We
-%   directly use the code for (non-kernel) fatal errors and errors,
-%   adding the \enquote{\LaTeX{}} module name.  Three functions are
-%   already defined by \pkg{l3basics}; we need to undefine them to avoid
-%   errors.
 %    \begin{macrocode}
-  \@@_kernel_class_new:nN { fatal } \@@_fatal_code:nnnnnn
-  \@@_kernel_class_new:nN { critical } \@@_critical_code:nnnnnn
-  \cs_undefine:N \__kernel_msg_error:nnxx
-  \cs_undefine:N \__kernel_msg_error:nnx
-  \cs_undefine:N \__kernel_msg_error:nn
-  \@@_kernel_class_new:nN { error } \@@_error_code:nnnnnn
+\cs_new_protected:Npn \__kernel_msg_info:nnxx #1
+  { \msg_info:nnxx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nnx #1
+  { \msg_warning:nnx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nnxx #1
+  { \msg_warning:nnxx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nnx #1
+  { \msg_error:nnx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nnxx #1
+  { \msg_error:nnxx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nnxxx #1
+  { \msg_error:nnxxx { LaTeX / #1 } }
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}
 %   {
-%     \__kernel_msg_warning:nnnnnn ,
-%     \__kernel_msg_warning:nnnnn  ,
-%     \__kernel_msg_warning:nnnn   ,
-%     \__kernel_msg_warning:nnn    ,
-%     \__kernel_msg_warning:nn     ,
-%     \__kernel_msg_warning:nnxxxx ,
-%     \__kernel_msg_warning:nnxxx  ,
-%     \__kernel_msg_warning:nnxx   ,
-%     \__kernel_msg_warning:nnx    ,
-%     \__kernel_msg_info:nnnnnn    ,
-%     \__kernel_msg_info:nnnnn     ,
-%     \__kernel_msg_info:nnnn      ,
-%     \__kernel_msg_info:nnn       ,
-%     \__kernel_msg_info:nn        ,
-%     \__kernel_msg_info:nnxxxx    ,
-%     \__kernel_msg_info:nnxxx     ,
-%     \__kernel_msg_info:nnxx      ,
-%     \__kernel_msg_info:nnx
+%     \__kernel_msg_expandable_error:nnn ,
+%     \__kernel_msg_expandable_error:nnf ,
+%     \__kernel_msg_expandable_error:nnff
 %   }
-%   Kernel messages which can be redirected simply use the machinery for
-%   normal messages, with the module name \enquote{\LaTeX{}}.
 %    \begin{macrocode}
-  \@@_kernel_class_new:nN { warning } \msg_warning:nnxxxx
-  \@@_kernel_class_new:nN { info } \msg_info:nnxxxx
+\cs_new:Npn \__kernel_msg_expandable_error:nnn #1
+  { \msg_expandable_error:nnn { LaTeX / #1 } }
+\cs_new:Npn \__kernel_msg_expandable_error:nnf #1
+  { \msg_expandable_error:nnf { LaTeX / #1 } }
+\cs_new:Npn \__kernel_msg_expandable_error:nnff #1
+  { \msg_expandable_error:nnff { LaTeX / #1 } }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}
-%   {
-%     \__kernel_msg_log:nnnnnn, \__kernel_msg_log:nnxxxx,
-%     \__kernel_msg_term:nnnnnn, \__kernel_msg_term:nnxxxx,
-%     \__kernel_msg_show:nnnnnn, \__kernel_msg_show:nnxxxx
-%   }
-%   For showing messages.
-%    \begin{macrocode}
-\cs_new_protected:Npn \__kernel_msg_log:nnnnnn #1
-  { \msg_log:nnnnnn { LaTeX / #1 } }
-\cs_generate_variant:Nn \__kernel_msg_log:nnnnnn { nnxxxx }
-\cs_new_protected:Npn \__kernel_msg_term:nnnnnn #1
-  { \msg_term:nnnnnn { LaTeX / #1 } }
-\cs_generate_variant:Nn \__kernel_msg_term:nnnnnn { nnxxxx }
-\cs_new_protected:Npn \__kernel_msg_show:nnnnnn #1
-  { \msg_show:nnnnnn { LaTeX / #1 } }
-\cs_generate_variant:Nn \__kernel_msg_show:nnnnnn { nnxxxx }
-%    \end{macrocode}
-% \end{macro}
+% \subsection{Internal messages}
 %
-% End the group to eliminate \cs{@@_kernel_class_new:nN}.
-%    \begin{macrocode}
-\group_end:
-%    \end{macrocode}
-%
 % Error messages needed to actually implement the message system
 % itself.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { msg } { already-defined }
+\msg_new:nnnn { msg } { already-defined }
   { Message~'#2'~for~module~'#1'~already~defined. }
   {
     \c_@@_coding_error_text_tl
@@ -1837,7 +1701,7 @@
     by~the~module~'#1':~this~message~already~exists.
     \c_@@_return_text_tl
   }
-\__kernel_msg_new:nnnn { msg } { unknown }
+\msg_new:nnnn { msg } { unknown }
   { Unknown~message~'#2'~for~module~'#1'. }
   {
     \c_@@_coding_error_text_tl
@@ -1845,7 +1709,7 @@
     by~the~module~'#1':~this~message~does~not~exist.
     \c_@@_return_text_tl
   }
-\__kernel_msg_new:nnnn { msg } { class-unknown }
+\msg_new:nnnn { msg } { class-unknown }
   { Unknown~message~class~'#1'. }
   {
     LaTeX~has~been~asked~to~redirect~messages~to~a~class~'#1':\\
@@ -1852,7 +1716,7 @@
     this~was~never~defined.
     \c_@@_return_text_tl
   }
-\__kernel_msg_new:nnnn { msg } { redirect-loop }
+\msg_new:nnnn { msg } { redirect-loop }
   {
     Message~redirection~loop~caused~by~ {#1} ~=>~ {#2}
     \tl_if_empty:nF {#3} { ~for~module~' \use_none:n #3 ' } .
@@ -1868,7 +1732,7 @@
 % Messages for earlier kernel modules plus a few for \pkg{l3keys} which
 % cover coding errors.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { kernel } { bad-number-of-arguments }
+\msg_new:nnnn { kernel } { bad-number-of-arguments }
   { Function~'#1'~cannot~be~defined~with~#2~arguments. }
   {
     \c_@@_coding_error_text_tl
@@ -1876,7 +1740,7 @@
     #2~arguments.~
     TeX~allows~between~0~and~9~arguments~for~a~single~function.
   }
-\__kernel_msg_new:nnnn { kernel } { command-already-defined }
+\msg_new:nnnn { kernel } { command-already-defined }
   { Control~sequence~#1~already~defined. }
   {
     \c_@@_coding_error_text_tl
@@ -1885,7 +1749,7 @@
     The~current~meaning~is:\\
     \ \ #2
   }
-\__kernel_msg_new:nnnn { kernel } { command-not-defined }
+\msg_new:nnnn { kernel } { command-not-defined }
   { Control~sequence~#1~undefined. }
   {
     \c_@@_coding_error_text_tl
@@ -1892,7 +1756,7 @@
     LaTeX~has~been~asked~to~use~a~control~sequence~'#1':\\
     this~has~not~been~defined~yet.
   }
-\__kernel_msg_new:nnnn { kernel } { empty-search-pattern }
+\msg_new:nnnn { kernel } { empty-search-pattern }
   { Empty~search~pattern. }
   {
     \c_@@_coding_error_text_tl
@@ -1899,14 +1763,7 @@
     LaTeX~has~been~asked~to~replace~an~empty~pattern~by~'#1':~that~
     would~lead~to~an~infinite~loop!
   }
-\__kernel_msg_new:nnnn { kernel } { out-of-registers }
-  { No~room~for~a~new~#1. }
-  {
-    TeX~only~supports~\int_use:N \c_max_register_int \ %
-    of~each~type.~All~the~#1~registers~have~been~used.~
-    This~run~will~be~aborted~now.
-  }
-\__kernel_msg_new:nnnn { kernel } { non-base-function }
+\msg_new:nnnn { kernel } { non-base-function }
   { Function~'#1'~is~not~a~base~function }
   {
     \c_@@_coding_error_text_tl
@@ -1916,7 +1773,7 @@
     To~define~variants~use~\iow_char:N\\cs_generate_variant:Nn~
     and~to~define~other~functions~use~\iow_char:N\\cs_new:Npn.
   }
-\__kernel_msg_new:nnnn { kernel } { missing-colon }
+\msg_new:nnnn { kernel } { missing-colon }
   { Function~'#1'~contains~no~':'. }
   {
     \c_@@_coding_error_text_tl
@@ -1925,7 +1782,7 @@
     needed~when~defining~conditionals~or~variants,~or~when~building~a~
     parameter~text~from~the~number~of~arguments~of~the~function.
   }
-\__kernel_msg_new:nnnn { kernel } { overflow }
+\msg_new:nnnn { kernel } { overflow }
   { Integers~larger~than~2^{30}-1~cannot~be~stored~in~arrays. }
   {
     An~attempt~was~made~to~store~#3~
@@ -1932,13 +1789,13 @@
     \tl_if_empty:nF {#2} { at~position~#2~ } in~the~array~'#1'.~
     The~largest~allowed~value~#4~will~be~used~instead.
   }
-\__kernel_msg_new:nnnn { kernel } { out-of-bounds }
+\msg_new:nnnn { kernel } { out-of-bounds }
   { Access~to~an~entry~beyond~an~array's~bounds. }
   {
     An~attempt~was~made~to~access~or~store~data~at~position~#2~of~the~
     array~'#1',~but~this~array~has~entries~at~positions~from~1~to~#3.
   }
-\__kernel_msg_new:nnnn { kernel } { protected-predicate }
+\msg_new:nnnn { kernel } { protected-predicate }
   { Predicate~'#1'~must~be~expandable. }
   {
     \c_@@_coding_error_text_tl
@@ -1945,9 +1802,9 @@
     LaTeX~has~been~asked~to~define~'#1'~as~a~protected~predicate.~
     Only~expandable~tests~can~have~a~predicate~version.
   }
-\__kernel_msg_new:nnn { kernel } { randint-backward-range }
-  { Bounds~ordered~backwards~in~\iow_char:N\\int_rand:nn~{#1}~{#2}. }
-\__kernel_msg_new:nnnn { kernel } { conditional-form-unknown }
+\msg_new:nnn { kernel } { randint-backward-range }
+  { Wrong~order~of~bounds~in~\iow_char:N\\int_rand:nn{#1}{#2}. }
+\msg_new:nnnn { kernel } { conditional-form-unknown }
   { Conditional~form~'#1'~for~function~'#2'~unknown. }
   {
     \c_@@_coding_error_text_tl
@@ -1954,7 +1811,7 @@
     LaTeX~has~been~asked~to~define~the~conditional~form~'#1'~of~
     the~function~'#2',~but~only~'TF',~'T',~'F',~and~'p'~forms~exist.
   }
-\__kernel_msg_new:nnnn { kernel } { variant-too-long }
+\msg_new:nnnn { kernel } { variant-too-long }
   { Variant~form~'#1'~longer~than~base~signature~of~'#2'. }
   {
     \c_@@_coding_error_text_tl
@@ -1962,7 +1819,7 @@
     with~a~signature~starting~with~'#1',~but~that~is~longer~than~
     the~signature~(part~after~the~colon)~of~'#2'.
   }
-\__kernel_msg_new:nnnn { kernel } { invalid-variant }
+\msg_new:nnnn { kernel } { invalid-variant }
   { Variant~form~'#1'~invalid~for~base~form~'#2'. }
   {
     \c_@@_coding_error_text_tl
@@ -1970,7 +1827,7 @@
     with~a~signature~starting~with~'#1',~but~cannot~change~an~argument~
     from~type~'#3'~to~type~'#4'.
   }
-\__kernel_msg_new:nnnn { kernel } { invalid-exp-args }
+\msg_new:nnnn { kernel } { invalid-exp-args }
   { Invalid~variant~specifier~'#1'~in~'#2'. }
   {
     \c_@@_coding_error_text_tl
@@ -1978,7 +1835,7 @@
     function~with~signature~'N#2'~but~'#1'~is~not~a~valid~argument~
     specifier.
   }
-\__kernel_msg_new:nnn { kernel } { deprecated-variant }
+\msg_new:nnn { kernel } { deprecated-variant }
   {
     Variant~form~'#1'~deprecated~for~base~form~'#2'.~
     One~should~not~change~an~argument~from~type~'#3'~to~type~'#4'
@@ -1989,20 +1846,20 @@
         {#4} { :~base~form~is~already~a~variant. }
       } { . }
   }
-\__kernel_msg_new:nnn { char } { active }
+\msg_new:nnn { char } { active }
   { Cannot~generate~active~chars. }
-\__kernel_msg_new:nnn { char } { invalid-catcode }
+\msg_new:nnn { char } { invalid-catcode }
   { Invalid~catcode~for~char~generation. }
-\__kernel_msg_new:nnn { char } { null-space }
+\msg_new:nnn { char } { null-space }
   { Cannot~generate~null~char~as~a~space. }
-\__kernel_msg_new:nnn { char } { out-of-range }
+\msg_new:nnn { char } { out-of-range }
   { Charcode~requested~out~of~engine~range. }
-\__kernel_msg_new:nnn { char } { space }
+\msg_new:nnn { char } { space }
   { Cannot~generate~space~chars. }
-\__kernel_msg_new:nnnn { ior } { quote-in-shell }
+\msg_new:nnnn { ior } { quote-in-shell }
   { Quotes~in~shell~command~'#1'. }
   { Shell~commands~cannot~contain~quotes~("). }
-\__kernel_msg_new:nnnn { keys } { no-property }
+\msg_new:nnnn { keys } { no-property }
   { No~property~given~in~definition~of~key~'#1'. }
   {
     \c_@@_coding_error_text_tl
@@ -2011,13 +1868,13 @@
     \iow_indent:n { #1 .<property> } \\ \\
     LaTeX~did~not~find~a~'.'~to~indicate~the~start~of~a~property.
   }
-\__kernel_msg_new:nnnn { keys } { property-boolean-values-only }
+\msg_new:nnnn { keys } { property-boolean-values-only }
   { The~property~'#1'~accepts~boolean~values~only. }
   {
     \c_@@_coding_error_text_tl
     The~property~'#1'~only~accepts~the~values~'true'~and~'false'.
   }
-\__kernel_msg_new:nnnn { keys } { property-requires-value }
+\msg_new:nnnn { keys } { property-requires-value }
   { The~property~'#1'~requires~a~value. }
   {
     \c_@@_coding_error_text_tl
@@ -2024,7 +1881,7 @@
     LaTeX~was~asked~to~set~property~'#1'~for~key~'#2'.\\
     No~value~was~given~for~the~property,~and~one~is~required.
   }
-\__kernel_msg_new:nnnn { keys } { property-unknown }
+\msg_new:nnnn { keys } { property-unknown }
   { The~key~property~'#1'~is~unknown. }
   {
     \c_@@_coding_error_text_tl
@@ -2031,7 +1888,7 @@
     LaTeX~has~been~asked~to~set~the~property~'#1'~for~key~'#2':~
     this~property~is~not~defined.
   }
-\__kernel_msg_new:nnnn { quark } { invalid-function }
+\msg_new:nnnn { quark } { invalid-function }
   { Quark~test~function~'#1'~is~invalid. }
   {
     \c_@@_coding_error_text_tl
@@ -2043,7 +1900,7 @@
   }
 \__kernel_msg_new:nnn { quark } { invalid }
   { Invalid~quark~variable~'#1'. }
-\__kernel_msg_new:nnnn { scanmark } { already-defined }
+\msg_new:nnnn { scanmark } { already-defined }
   { Scan~mark~#1~already~defined. }
   {
     \c_@@_coding_error_text_tl
@@ -2050,7 +1907,7 @@
     LaTeX~has~been~asked~to~create~a~new~scan~mark~'#1'~
     but~this~name~has~already~been~used~for~a~scan~mark.
   }
-\__kernel_msg_new:nnnn { seq } { shuffle-too-large }
+\msg_new:nnnn { seq } { shuffle-too-large }
   { The~sequence~#1~is~too~long~to~be~shuffled~by~TeX. }
   {
     TeX~has~ \int_eval:n { \c_max_register_int + 1 } ~
@@ -2058,7 +1915,7 @@
     \int_use:N \c_max_register_int \ items.~
     The~list~will~not~be~shuffled.
   }
-\__kernel_msg_new:nnnn { kernel } { variable-not-defined }
+\msg_new:nnnn { kernel } { variable-not-defined }
   { Variable~#1~undefined. }
   {
     \c_@@_coding_error_text_tl
@@ -2065,7 +1922,7 @@
     LaTeX~has~been~asked~to~show~a~variable~#1,~but~this~has~not~
     been~defined~yet.
   }
-\__kernel_msg_new:nnnn { kernel } { bad-type }
+\msg_new:nnnn { kernel } { bad-type }
   { Variable~'#1'~is~not~a~valid~#3. }
   {
     \c_@@_coding_error_text_tl
@@ -2081,7 +1938,7 @@
           { internal~structure:\\\\\iow_indent:n {#4} }
       }
   }
-\__kernel_msg_new:nnnn { kernel } { non-clist }
+\msg_new:nnnn { clist } { non-clist }
   { Variable~'#1'~is~not~a~valid~clist. }
   {
     \c_@@_coding_error_text_tl
@@ -2097,7 +1954,7 @@
 % \texttt{log-functions}, or on the contrary if debugging is turned off.
 % In format mode the error is somewhat different.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { debug } { enable-debug }
+\msg_new:nnnn { debug } { enable-debug }
   { To~use~'#1'~set~the~'enable-debug'~option. }
   {
     The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
@@ -2111,25 +1968,25 @@
 % Some errors only appear in expandable settings,
 % hence don't need a \enquote{more-text} argument.
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { kernel } { bad-exp-end-f }
+\msg_new:nnn { kernel } { bad-exp-end-f }
   { Misused~\exp_end_continue_f:w or~:nw }
-\__kernel_msg_new:nnn { kernel } { bad-variable }
+\msg_new:nnn { kernel } { bad-variable }
   { Erroneous~variable~#1 used! }
-\__kernel_msg_new:nnn { seq } { misused }
+\msg_new:nnn { seq } { misused }
   { A~sequence~was~misused. }
-\__kernel_msg_new:nnn { prop } { misused }
+\msg_new:nnn { prop } { misused }
   { A~property~list~was~misused. }
-\__kernel_msg_new:nnn { prg } { negative-replication }
+\msg_new:nnn { prg } { negative-replication }
   { Negative~argument~for~\iow_char:N\\prg_replicate:nn. }
-\__kernel_msg_new:nnn { prop } { prop-keyval }
+\msg_new:nnn { prop } { prop-keyval }
   { Missing/extra~'='~in~'#1'~(in~'..._keyval:Nn') }
-\__kernel_msg_new:nnn { kernel } { unknown-comparison }
-  { Relation~'#1'~unknown:~use~=,~<,~>,~==,~!=,~<=,~>=. }
-\__kernel_msg_new:nnn { kernel } { zero-step }
-  { Zero~step~size~for~step~function~#1. }
+\msg_new:nnn { kernel } { unknown-comparison }
+  { Relation~'#1'~not~among~=,<,>,==,!=,<=,>=. }
+\msg_new:nnn { kernel } { zero-step }
+  { Zero~step~size~for~function~#1. }
 \cs_if_exist:NF \tex_expanded:D
   {
-    \__kernel_msg_new:nnn { kernel } { e-type }
+    \msg_new:nnn { kernel } { e-type }
       { #1 ~ in~e-type~argument }
   }
 %    \end{macrocode}
@@ -2136,7 +1993,7 @@
 %
 % Messages used by the \enquote{\texttt{show}} functions.
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { clist } { show }
+\msg_new:nnn { clist } { show }
   {
     The~comma~list~ \tl_if_empty:nF {#1} { #1 ~ }
     \tl_if_empty:nTF {#2}
@@ -2143,9 +2000,9 @@
       { is~empty \\>~ . }
       { contains~the~items~(without~outer~braces): #2 . }
   }
-\__kernel_msg_new:nnn { intarray } { show }
+\msg_new:nnn { intarray } { show }
   { The~integer~array~#1~contains~#2~items: \\ #3 . }
-\__kernel_msg_new:nnn { prop } { show }
+\msg_new:nnn { prop } { show }
   {
     The~property~list~#1~
     \tl_if_empty:nTF {#2}
@@ -2152,7 +2009,7 @@
       { is~empty \\>~ . }
       { contains~the~pairs~(without~outer~braces): #2 . }
   }
-\__kernel_msg_new:nnn { seq } { show }
+\msg_new:nnn { seq } { show }
   {
     The~sequence~#1~
     \tl_if_empty:nTF {#2}
@@ -2159,7 +2016,7 @@
       { is~empty \\>~ . }
       { contains~the~items~(without~outer~braces): #2 . }
   }
-\__kernel_msg_new:nnn { kernel } { show-streams }
+\msg_new:nnn { kernel } { show-streams }
   {
     \tl_if_empty:nTF {#2} { No~ } { The~following~ }
     \str_case:nn {#1}
@@ -2174,13 +2031,13 @@
 %
 % System layer messages
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { sys } { backend-set }
+\msg_new:nnnn { sys } { backend-set }
   { Backend~configuration~already~set. }
   {
     Run-time~backend~selection~may~only~be~carried~out~once~during~a~run.~
     This~second~attempt~to~set~them~will~be~ignored.
   }
-\__kernel_msg_new:nnnn { sys } { wrong-backend }
+\msg_new:nnnn { sys } { wrong-backend }
   { Backend~request~inconsistent~with~engine:~using~'#2'~backend. }
   {
     You~have~requested~backend~'#1',~but~this~is~not~suitable~for~use~with~the~
@@ -2190,107 +2047,34 @@
 %
 % \subsection{Expandable errors}
 %
-% \begin{macro}{\@@_expandable_error:n}
-% \begin{macro}{\@@_expandable_error:w}
+% \begin{macro}{\@@_expandable_error:nn}
 %   In expansion only context, we cannot use the normal means of
-%   reporting errors. Instead, we feed \TeX{} an undefined control
-%   sequence, \cs[module = {}]{LaTeX3 error:}. It is thus interrupted, and shows
+%   reporting errors. Instead, we rely on a low-level \TeX{} error
+%   caused by expanding a macro \cs{???} with parameter text ``|?|''
+%   (this could be any token) which we used followed by something else
+%   (here, a space).  This shows
 %   the context, which thanks to the odd-looking \cs{use:n} is
 %   \begin{verbatim}
-%     <argument> \LaTeX3 error:
-%                               The error message.
+%     <argument> \???
+%                     ! mypkg Error: The error message.
 %   \end{verbatim}
 %   In other words, \TeX{} is processing the argument of \cs{use:n},
-%   which is \cs[module = {}]{LaTeX3 error:} \meta{error message}.
-%   Then \cs{@@_expandable_error:w} cleans up. In fact, there
-%   is an extra subtlety: if the user inserts tokens for error recovery,
-%   they should be kept. Thus we also use an odd space character
-%   (with category code $7$) and keep tokens until that space character,
-%   dropping everything else until \cs{s_@@_stop}. The \cs{exp_end:} prevents
-%   losing braces around the user-inserted text if any, and stops the
-%   expansion of \cs{exp:w}.  The group is used to prevent
-%   |\LaTeX3~error:| from being globally equal to \cs{scan_stop:}.
+%   which is \cs{???} \meta{space} |!| \meta{error type} |:| \meta{error message}.
 %    \begin{macrocode}
-\group_begin:
-\cs_set_protected:Npn \@@_tmp:w #1#2
+\cs_set_protected:Npn \@@_tmp:w #1
   {
-    \cs_new:Npn \@@_expandable_error:n ##1
+    \cs_new:Npn #1 ? { }
+    \cs_new:Npn \@@_expandable_error:nn ##1##2
       {
-        \exp:w
         \exp_after:wN \exp_after:wN
-        \exp_after:wN \@@_expandable_error:w
-        \exp_after:wN \exp_after:wN
-        \exp_after:wN \exp_end:
-        \use:n { #1 #2 ##1 } #2
+        \exp_after:wN \@@_use_none_delimit_by_s_stop:w
+        \use:n { #1 ~ ! ~ ##2 : ~ ##1 } \s_@@_stop
       }
-    \cs_new:Npn \@@_expandable_error:w ##1 #2 ##2 #2 {##1}
   }
-\exp_args:Ncx \@@_tmp:w { LaTeX3~error: }
-  { \char_generate:nn { `\  } { 7 } }
-\group_end:
+\exp_args:Nc \@@_tmp:w { ??? }
 %    \end{macrocode}
 % \end{macro}
-% \end{macro}
 %
-% \begin{macro}
-%   {
-%     \__kernel_msg_expandable_error:nnnnnn,
-%     \__kernel_msg_expandable_error:nnnnn,
-%     \__kernel_msg_expandable_error:nnnn,
-%     \__kernel_msg_expandable_error:nnn,
-%     \__kernel_msg_expandable_error:nn,
-%     \__kernel_msg_expandable_error:nnffff,
-%     \__kernel_msg_expandable_error:nnfff,
-%     \__kernel_msg_expandable_error:nnff,
-%     \__kernel_msg_expandable_error:nnf,
-%   }
-%   The command built from the csname
-%   \cs{c_@@_text_prefix_tl} |LaTeX / #1 / #2|
-%   takes four arguments and builds the error text, which is fed to
-%   \cs{@@_expandable_error:n} with appropriate expansion: just as for
-%   usual messages the arguments are first turned to strings, then the
-%   message is fully expanded.
-%    \begin{macrocode}
-\exp_args_generate:n { oooo }
-\cs_new:Npn \__kernel_msg_expandable_error:nnnnnn #1#2#3#4#5#6
-  {
-    \exp_args:Ne \@@_expandable_error:n
-      {
-        \exp_args:Nc \exp_args:Noooo
-          { \c_@@_text_prefix_tl LaTeX / #1 / #2 }
-          { \tl_to_str:n {#3} }
-          { \tl_to_str:n {#4} }
-          { \tl_to_str:n {#5} }
-          { \tl_to_str:n {#6} }
-      }
-  }
-\cs_new:Npn \__kernel_msg_expandable_error:nnnnn #1#2#3#4#5
-  {
-    \__kernel_msg_expandable_error:nnnnnn
-      {#1} {#2} {#3} {#4} {#5} { }
-  }
-\cs_new:Npn \__kernel_msg_expandable_error:nnnn #1#2#3#4
-  {
-    \__kernel_msg_expandable_error:nnnnnn
-      {#1} {#2} {#3} {#4} { } { }
-  }
-\cs_new:Npn \__kernel_msg_expandable_error:nnn #1#2#3
-  {
-    \__kernel_msg_expandable_error:nnnnnn
-      {#1} {#2} {#3} { } { } { }
-  }
-\cs_new:Npn \__kernel_msg_expandable_error:nn #1#2
-  {
-    \__kernel_msg_expandable_error:nnnnnn
-      {#1} {#2} { } { } { } { }
-  }
-\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnnnn { nnffff }
-\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnnn { nnfff }
-\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnn { nnff }
-\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnn { nnf }
-%    \end{macrocode}
-% \end{macro}
-%
 % \begin{macro}[EXP]
 %   {
 %     \msg_expandable_error:nnnnnn ,
@@ -2303,12 +2087,17 @@
 %     \msg_expandable_error:nnff   ,
 %     \msg_expandable_error:nnf
 %   }
-% \begin{macro}{\@@_expandable_error_module:nn}
-%   Pass to an auxiliary the message to display and the module name
+%   The command built from the csname
+%   \cs{c_@@_text_prefix_tl} |#1 / #2|
+%   takes four arguments and builds the error text, which is fed to
+%   \cs{@@_expandable_error:n} with appropriate expansion: just as for
+%   usual messages the arguments are first turned to strings, then the
+%   message is fully expanded.  The module name also has to be determined.
 %    \begin{macrocode}
+\exp_args_generate:n { oooo }
 \cs_new:Npn \msg_expandable_error:nnnnnn #1#2#3#4#5#6
   {
-    \exp_args:Ne \@@_expandable_error_module:nn
+    \exp_args:Nee \@@_expandable_error:nn
       {
         \exp_args:Nc \exp_args:Noooo
           { \c_@@_text_prefix_tl #1 / #2 }
@@ -2317,7 +2106,7 @@
           { \tl_to_str:n {#5} }
           { \tl_to_str:n {#6} }
       }
-      {#1}
+      { \msg_error_text:n {#1} }
   }
 \cs_new:Npn \msg_expandable_error:nnnnn #1#2#3#4#5
   { \msg_expandable_error:nnnnnn {#1} {#2} {#3} {#4} {#5} { } }
@@ -2331,15 +2120,28 @@
 \cs_generate_variant:Nn \msg_expandable_error:nnnnn  { nnfff }
 \cs_generate_variant:Nn \msg_expandable_error:nnnn   { nnff }
 \cs_generate_variant:Nn \msg_expandable_error:nnn    { nnf }
-\cs_new:Npn \@@_expandable_error_module:nn #1#2
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Message formatting}
+%
+%    \begin{macrocode}
+\prop_gput:Nnn \g_msg_module_name_prop { kernel } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { kernel } { }
+\clist_map_inline:nn
   {
-    \exp_after:wN \exp_after:wN
-    \exp_after:wN \@@_use_none_delimit_by_s_stop:w
-    \use:n { \::error ! ~ #2 : ~ #1 } \s_@@_stop
+    char , clist , coffin , debug , deprecation , msg ,
+    quark , prg , prop , scanmark , seq , sys
   }
+  {
+    \prop_gput:Nnn \g_msg_module_name_prop {#1} { LaTeX3 }
+    \prop_gput:Nnn \g_msg_module_type_prop {#1} { }
+  }
+\prop_gput:Nnn \g_msg_module_name_prop { LaTeX / cmd } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { LaTeX / cmd } { }
+\prop_gput:Nnn \g_msg_module_name_prop { LaTeX / ltcmd } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { LaTeX / ltcmd } { }
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
 %
 %    \begin{macrocode}
 %</package>

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1193,6 +1193,8 @@
 %    \end{macrocode}
 % Newer cross-engine primitives.
 %    \begin{macrocode}
+  \@@_primitive:NN \partokencontext       \tex_partokencontext:D
+  \@@_primitive:NN \partokenname          \tex_partokenname:D
   \@@_primitive:NN \tracingstacklevels    \tex_tracingstacklevels:D
 %    \end{macrocode}
 % End of the \enquote{just the names} part of the source.

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -994,7 +994,7 @@
             \c_false_bool { \exp_args:Nx #1 { \token_to_str:N #2 = false } }
           }
           {
-            \__kernel_msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nnxxx { kernel } { bad-type }
               { \token_to_str:N #2 } { \token_to_meaning:N #2 } { bool }
           }
       }
@@ -1550,7 +1550,7 @@
 \cs_new:cpn { @@_replicate_first_-:n } #1
   {
     \exp_end:
-    \__kernel_msg_expandable_error:nn { prg } { negative-replication }
+    \msg_expandable_error:nn { prg } { negative-replication }
   }
 \cs_new:cpn { @@_replicate_first_0:n } #1 { \exp_end: }
 \cs_new:cpn { @@_replicate_first_1:n } #1 { \exp_end: #1 }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -124,7 +124,7 @@
 %       \}
 %   \end{syntax}
 %   Sets \meta{prop~var} to contain key--value pairs given in the second
-%   argument.  If duplicate keys appear only one of the values is kept.
+%   argument.  If duplicate keys appear only the last of the values is kept.
 %
 %   Spaces are trimmed around every \meta{key} and every \meta{value},
 %   and if the result of trimming spaces consists of a single brace
@@ -146,7 +146,7 @@
 %   name is already taken. The \meta{prop~var} is set globally to
 %   contain key--value pairs given in the second argument, processed in
 %   the way described for \cs{prop_set_from_keyval:Nn}.  If duplicate
-%   keys appear only one of the values is kept.
+%   keys appear only the last of the values is kept.
 % \end{function}
 %
 % \section{Adding and updating property list entries}
@@ -202,8 +202,7 @@
 %   Combines the key--value pairs of \meta{prop~var_2} and
 %   \meta{prop~var_3}, and saves the result in \meta{prop~var_1}.  If a
 %   key appears in both \meta{prop~var_2} and \meta{prop~var_3} then the
-%   last value, namely the value in \meta{prop~var_3} is kept while the
-%   other is discarded.
+%   last value, namely the value in \meta{prop~var_3} is kept.
 % \end{function}
 %
 % \begin{function}[added = 2021-05-16]
@@ -223,7 +222,7 @@
 %   \cs{prop_put:Nnn}, hence if the \meta{prop~var} already contains
 %   some of the keys, the corresponding values are discarded and
 %   replaced by those given in the key--value list.  If duplicate keys
-%   appear in the key--value list then only one of the values is kept.
+%   appear in the key--value list then only the last of the values is kept.
 %
 %   The function is equivalent to storing the key--value pairs in a
 %   temporary property variable using \cs{prop_set_from_keyval:Nn}, then
@@ -649,7 +648,7 @@
 %   error and removes its argument.
 %    \begin{macrocode}
 \cs_new:Npn \@@_pair:wn #1 \s_@@ #2
-  { \__kernel_msg_expandable_error:nn { prop } { misused } }
+  { \msg_expandable_error:nn { prop } { misused } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -903,7 +902,7 @@
       {
         \tl_if_empty:nF { #3 #1 #2 }
           {
-            \__kernel_msg_error:nnx { prop } { prop-keyval }
+            \msg_error:nnx { prop } { prop-keyval }
               { \exp_not:o {#4} }
           }
       }
@@ -1433,9 +1432,9 @@
 %   we use \cs{msg_show_item:nn} to format both the key and the value
 %   for each pair.
 %    \begin{macrocode}
-\cs_new_protected:Npn \prop_show:N { \@@_show:NN \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \prop_show:N { \@@_show:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \prop_show:N { c }
-\cs_new_protected:Npn \prop_log:N { \@@_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \prop_log:N { \@@_show:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \prop_log:N { c }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -640,7 +640,7 @@
 \cs_new_protected:Npn \@@_new_test_aux:Nn #1 #2
   {
     \if_meaning:w \q_nil #2 \q_nil
-      \__kernel_msg_error:nnx { quark } { invalid-function }
+      \msg_error:nnx { quark } { invalid-function }
         { \token_to_str:N #1 }
     \else:
       \@@_new_test:Nccn #1
@@ -664,11 +664,11 @@
 \cs_new_protected:Npn \@@_new_conditional:Nnnn #1#2#3#4
   {
     \if_meaning:w \q_nil #2 \q_nil
-      \__kernel_msg_error:nnx { quark } { invalid-function }
+      \msg_error:nnx { quark } { invalid-function }
         { \token_to_str:N #1 }
     \else:
       \if_meaning:w \q_nil #3 \q_nil
-        \__kernel_msg_error:nnx { quark } { invalid-function }
+        \msg_error:nnx { quark } { invalid-function }
           { \token_to_str:N #1 }
       \else:
         \exp_last_unbraced:Nf \@@_new_test_aux:nnNNnnnn
@@ -683,7 +683,7 @@
   {
     \cs_if_exist_use:cTF { @@_new_#5_#2:Nnnn } { #4 }
       {
-        \__kernel_msg_error:nnxx { quark } { invalid-function }
+        \msg_error:nnxx { quark } { invalid-function }
           { \token_to_str:N #4 } {#2}
         \use_none:nnn
       }
@@ -960,7 +960,7 @@
   {
     \tl_if_in:NnTF \g_@@_marks_tl { #1 }
       {
-        \__kernel_msg_error:nnx { scanmark } { already-defined }
+        \msg_error:nnx { scanmark } { already-defined }
           { \token_to_str:N #1 }
       }
       {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1633,7 +1633,7 @@
 \cs_new_eq:cN { @@_escape_ \iow_char:N\\scan_stop: :w } \prg_break:
 \cs_new:cpn { @@_escape_/ \iow_char:N\\scan_stop: :w }
   {
-    \__kernel_msg_expandable_error:nn { regex } { trailing-backslash }
+    \msg_expandable_error:nn { regex } { trailing-backslash }
     \prg_break:
   }
 \cs_new:cpn { @@_escape_~:w } { }
@@ -1670,7 +1670,7 @@
   {
     \int_compare:nNnTF {#1} > \c_max_char_int
       {
-        \__kernel_msg_expandable_error:nnff { regex } { x-overflow }
+        \msg_expandable_error:nnff { regex } { x-overflow }
           {#1} { \int_to_Hex:n {#1} }
       }
       {
@@ -1765,7 +1765,7 @@
   }
 \cs_new:Npn \@@_escape_x_loop_error:n #1
   {
-    \__kernel_msg_expandable_error:nnn { regex } { x-missing-rbrace } {#1}
+    \msg_expandable_error:nnn { regex } { x-missing-rbrace } {#1}
     \@@_escape_loop:N #1
   }
 %    \end{macrocode}
@@ -2202,7 +2202,7 @@
       \if_int_compare:w \l_@@_mode_int = \c_@@_class_mode_int
         \exp_after:wN \exp_after:wN \exp_after:wN \use:n
       \else:
-        \__kernel_msg_error:nn { regex } { c-bad-mode }
+        \msg_error:nn { regex } { c-bad-mode }
         \exp_after:wN \exp_after:wN \exp_after:wN \use_none:n
       \fi:
     \fi:
@@ -2255,13 +2255,13 @@
   {
       \@@_if_in_class:TF
         {
-          \__kernel_msg_error:nn { regex } { missing-rbrack }
+          \msg_error:nn { regex } { missing-rbrack }
           \use:c { @@_compile_]: }
           \prg_do_nothing: \prg_do_nothing:
         }
         { }
       \if_int_compare:w \l_@@_group_level_int > \c_zero_int
-        \__kernel_msg_error:nnx { regex } { missing-rparen }
+        \msg_error:nnx { regex } { missing-rparen }
           { \int_use:N \l_@@_group_level_int }
         \prg_replicate:nn
           { \l_@@_group_level_int }
@@ -2318,10 +2318,10 @@
       \prg_do_nothing: \prg_do_nothing:
       \prg_do_nothing: \prg_do_nothing:
       \int_compare:nNnT \l_@@_mode_int = \c_@@_catcode_mode_int
-        { \__kernel_msg_error:nn { regex } { c-trailing } }
+        { \msg_error:nn { regex } { c-trailing } }
       \int_compare:nNnT \l_@@_mode_int < \c_@@_outer_mode_int
         {
-          \__kernel_msg_error:nn { regex } { c-missing-rbrace }
+          \msg_error:nn { regex } { c-missing-rbrace }
           \@@_compile_end_cs:
           \prg_do_nothing: \prg_do_nothing:
           \prg_do_nothing: \prg_do_nothing:
@@ -2447,7 +2447,7 @@
 \cs_new_protected:Npn \@@_compile_quantifier_abort:xNN #1#2#3
   {
     \@@_compile_quantifier_none:
-    \__kernel_msg_warning:nnxx { regex } { invalid-quantifier } {#1} {#3}
+    \msg_warning:nnxx { regex } { invalid-quantifier } {#1} {#3}
     \@@_compile_abort_tokens:x {#1}
     #2 #3
   }
@@ -2563,7 +2563,7 @@
       {
         \if_int_compare:w \l_@@_internal_a_int >
           \l_@@_internal_b_int
-          \__kernel_msg_error:nnxx { regex } { backwards-quantifier }
+          \msg_error:nnxx { regex } { backwards-quantifier }
             { \int_use:N \l_@@_internal_a_int }
             { \int_use:N \l_@@_internal_b_int }
           \int_zero:N \l_@@_internal_b_int
@@ -2597,7 +2597,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_compile_raw_error:N #1
   {
-    \__kernel_msg_error:nnx { regex } { bad-escape } {#1}
+    \msg_error:nnx { regex } { bad-escape } {#1}
     \@@_compile_raw:N #1
   }
 %    \end{macrocode}
@@ -2656,7 +2656,7 @@
     \@@_if_end_range:NNTF #2 #3
       {
         \if_int_compare:w `#1 > `#3 \exp_stop_f:
-          \__kernel_msg_error:nnxx { regex } { range-backwards } {#1} {#3}
+          \msg_error:nnxx { regex } { range-backwards } {#1} {#3}
         \else:
           \tl_build_put_right:Nx \l_@@_build_tl
             {
@@ -2670,7 +2670,7 @@
         \fi:
       }
       {
-        \__kernel_msg_warning:nnxx { regex } { range-missing-end }
+        \msg_warning:nnxx { regex } { range-missing-end }
           {#1} { \c_backslash_str #3 }
         \tl_build_put_right:Nx \l_@@_build_tl
           {
@@ -2933,11 +2933,11 @@
           {
             : { \@@_compile_class_posix:NNNNw }
             = {
-                \__kernel_msg_warning:nnx { regex }
+                \msg_warning:nnx { regex }
                   { posix-unsupported } { = }
               }
             . {
-                \__kernel_msg_warning:nnx { regex }
+                \msg_warning:nnx { regex }
                   { posix-unsupported } { . }
               }
           }
@@ -2979,7 +2979,7 @@
               }
           }
           {
-            \__kernel_msg_warning:nnx { regex } { posix-unknown }
+            \msg_warning:nnx { regex } { posix-unknown }
               { \l_@@_internal_a_tl }
             \@@_compile_abort_tokens:x
               {
@@ -2989,7 +2989,7 @@
           }
       }
       {
-        \__kernel_msg_error:nnxx { regex } { posix-missing-close }
+        \msg_error:nnxx { regex } { posix-missing-close }
           { [: \l_@@_internal_a_tl } { #2 #4 }
         \@@_compile_abort_tokens:x { [: \l_@@_internal_a_tl }
         #1 #2 #3 #4
@@ -3035,7 +3035,7 @@
       \int_set_eq:NN \l_@@_catcodes_int \l_@@_default_catcodes_int
       \exp_after:wN \@@_compile_quantifier:w
     \else:
-      \__kernel_msg_warning:nn { regex } { extra-rparen }
+      \msg_warning:nn { regex } { extra-rparen }
       \exp_after:wN \@@_compile_raw:N \exp_after:wN )
     \fi:
   }
@@ -3054,7 +3054,7 @@
       {
         \if_int_compare:w \l_@@_mode_int =
           \c_@@_catcode_in_class_mode_int
-          \__kernel_msg_error:nn { regex } { c-lparen-in-class }
+          \msg_error:nn { regex } { c-lparen-in-class }
           \exp_after:wN \@@_compile_raw:N \exp_after:wN (
         \else:
           \exp_after:wN \@@_compile_lparen:w
@@ -3068,7 +3068,7 @@
         \cs_if_exist_use:cF
           { @@_compile_special_group_\token_to_str:N #4 :w }
           {
-            \__kernel_msg_warning:nnx { regex } { special-group-unknown }
+            \msg_warning:nnx { regex } { special-group-unknown }
               { (? #4 }
             \@@_compile_group_begin:N \@@_group:nnnN
               \@@_compile_raw:N ? #3 #4
@@ -3137,7 +3137,7 @@
           { \@@_item_caseless_range:nn }
       }
       {
-        \__kernel_msg_warning:nnx { regex } { unknown-option } { (?i #2 }
+        \msg_warning:nnx { regex } { unknown-option } { (?i #2 }
         \@@_compile_raw:N (
         \@@_compile_raw:N ?
         \@@_compile_raw:N i
@@ -3156,7 +3156,7 @@
           { \@@_item_caseful_range:nn }
       }
       {
-        \__kernel_msg_warning:nnx { regex } { unknown-option } { (?-#2#4 }
+        \msg_warning:nnx { regex } { unknown-option } { (?-#2#4 }
         \@@_compile_raw:N (
         \@@_compile_raw:N ?
         \@@_compile_raw:N -
@@ -3195,7 +3195,7 @@
       }
       { \cs_if_exist_use:cF { @@_compile_c_#2:w } }
           {
-            \__kernel_msg_error:nnx { regex } { c-missing-category } {#2}
+            \msg_error:nnx { regex } { c-missing-category } {#2}
             #1 #2
           }
   }
@@ -3216,7 +3216,7 @@
           { \token_if_eq_charcode:NNF #2 ( } % )
       }
       { \use:n }
-    { \__kernel_msg_error:nnn { regex } { c-C-invalid } {#2} }
+    { \msg_error:nnn { regex } { c-C-invalid } {#2} }
     #1 #2
   }
 %    \end{macrocode}
@@ -3269,7 +3269,7 @@
           { \@@_compile_c_lbrack_end: }
       }
           {
-            \__kernel_msg_error:nnx { regex } { c-missing-rbrack } {#2}
+            \msg_error:nnx { regex } { c-missing-rbrack } {#2}
             \@@_compile_c_lbrack_end:
             #1 #2
           }
@@ -3320,7 +3320,7 @@
 \cs_new_protected:cpn { @@_compile_ \c_left_brace_str : }
   {
     \@@_if_in_cs:TF
-      { \__kernel_msg_error:nnn { regex } { cu-lbrace } { c } }
+      { \msg_error:nnn { regex } { cu-lbrace } { c } }
       { \exp_after:wN \@@_compile_raw:N \c_left_brace_str }
   }
 %    \end{macrocode}
@@ -3442,7 +3442,7 @@
         \@@_compile_u_loop:NN
       }
       {
-        \__kernel_msg_error:nn { regex } { u-missing-lbrace }
+        \msg_error:nn { regex } { u-missing-lbrace }
         \token_if_eq_meaning:NNTF #1 \@@_compile_ur_end:
           { \@@_compile_raw:N u \@@_compile_raw:N r }
           { \@@_compile_raw:N u }
@@ -3472,7 +3472,7 @@
               { \if_false: { \fi: } \l_@@_internal_b_tl }
               {
                 \if_charcode:w \c_left_brace_str #2
-                  \__kernel_msg_expandable_error:nnn { regex } { cu-lbrace } { u }
+                  \msg_expandable_error:nnn { regex } { cu-lbrace } { u }
                 \else:
                   #2
                 \fi:
@@ -3481,7 +3481,7 @@
           }
           {
             \if_false: { \fi: }
-            \__kernel_msg_error:nnx { regex } { u-missing-rbrace } {#2}
+            \msg_error:nnx { regex } { u-missing-rbrace } {#2}
             \l_@@_internal_b_tl
             #1 #2
           }
@@ -5597,7 +5597,7 @@
         {#1}
       \prg_do_nothing: \prg_do_nothing:
       \if_int_compare:w \l_@@_replacement_csnames_int > \c_zero_int
-        \__kernel_msg_error:nnx { regex } { replacement-missing-rbrace }
+        \msg_error:nnx { regex } { replacement-missing-rbrace }
           { \int_use:N \l_@@_replacement_csnames_int }
         \tl_build_put_right:Nx \l_@@_build_tl
           { \prg_replicate:nn \l_@@_replacement_csnames_int \cs_end: }
@@ -5604,7 +5604,7 @@
       \fi:
       \seq_if_empty:NF \l_@@_replacement_category_seq
         {
-          \__kernel_msg_error:nnx { regex } { replacement-missing-rparen }
+          \msg_error:nnx { regex } { replacement-missing-rparen }
             { \seq_count:N \l_@@_replacement_category_seq }
           \seq_clear:N \l_@@_replacement_category_seq
         }
@@ -5747,7 +5747,7 @@
     \if_int_compare:w #1 < \l_@@_capturing_group_int
       \@@_replacement_put_submatch_aux:n {#1}
     \else:
-      \__kernel_msg_expandable_error:nnff { regex } { submatch-too-big }
+      \msg_expandable_error:nnff { regex } { submatch-too-big }
         {#1} { \int_eval:n { \l_@@_capturing_group_int - 1 } }
     \fi:
   }
@@ -5894,7 +5894,7 @@
 \cs_new_protected:Npn \@@_replacement_lbrace:N #1
   {
     \if_int_compare:w \l_@@_replacement_csnames_int > \c_zero_int
-      \__kernel_msg_error:nnn { regex } { cu-lbrace } { u }
+      \msg_error:nnn { regex } { cu-lbrace } { u }
     \else:
       \@@_replacement_normal:n {#1}
     \fi:
@@ -5915,11 +5915,11 @@
 \cs_new_protected:Npn \@@_replacement_cat:NNN #1#2#3
   {
     \token_if_eq_meaning:NNTF \prg_do_nothing: #3
-      { \__kernel_msg_error:nn { regex } { replacement-catcode-end } }
+      { \msg_error:nn { regex } { replacement-catcode-end } }
       {
         \int_compare:nNnTF { \l_@@_replacement_csnames_int } > 0
           {
-            \__kernel_msg_error:nnnn
+            \msg_error:nnnn
               { regex } { replacement-catcode-in-cs } {#1} {#3}
             #2 #3
           }
@@ -5935,7 +5935,7 @@
                   {
                     \@@_char_if_alphanumeric:NTF #3
                       {
-                        \__kernel_msg_error:nnnn
+                        \msg_error:nnnn
                           { regex } { replacement-catcode-escaped }
                           {#1} {#3}
                       }
@@ -6100,7 +6100,7 @@
   \cs_new_protected:Npn \@@_replacement_c_S:w #1#2
     {
       \if_int_compare:w `#2 = \c_zero_int
-        \__kernel_msg_error:nn { regex } { replacement-null-space }
+        \msg_error:nn { regex } { replacement-null-space }
       \fi:
       \tex_lccode:D `\ = `#2 \scan_stop:
       \tex_lowercase:D { \@@_replacement_put:n {~} }
@@ -6143,7 +6143,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_replacement_error:NNN #1#2#3
   {
-    \__kernel_msg_error:nnx { regex } { replacement-#1 } {#3}
+    \msg_error:nnx { regex } { replacement-#1 } {#3}
     #2 #3
   }
 %    \end{macrocode}
@@ -6201,8 +6201,8 @@
 %   Then show the variable with some appropriate text. The auxiliary
 %   \cs{@@_show:N} is defined in a different section.
 %    \begin{macrocode}
-\cs_new_protected:Npn \regex_show:n { \@@_show:Nn \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:n { \@@_show:Nn \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:n { \@@_show:Nn \msg_show:nnxxxx }
+\cs_new_protected:Npn \regex_log:n { \@@_show:Nn \msg_log:nnxxxx }
 \cs_new_protected:Npn \@@_show:Nn #1#2
   {
     \@@_compile:n {#2}
@@ -6211,8 +6211,8 @@
       { \tl_to_str:n {#2} } { }
       { \l_@@_internal_a_tl } { }
   }
-\cs_new_protected:Npn \regex_show:N { \@@_show:NN \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:N { \@@_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \regex_log:N { \@@_show:NN \msg_log:nnxxxx }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {
     \__kernel_chk_tl_type:NnnT #2 { regex }
@@ -6561,7 +6561,7 @@
       \int_compare:nNnT
         { \l_@@_added_begin_int + \l_@@_added_end_int } > 0
         {
-          \__kernel_msg_error:nnxxx { regex } { result-unbalanced }
+          \msg_error:nnxxx { regex } { result-unbalanced }
             { splitting~or~extracting~submatches }
             { \int_use:N \l_@@_added_begin_int }
             { \int_use:N \l_@@_added_end_int }
@@ -6876,7 +6876,7 @@
     \@@_group_end_replace_try:
     \int_compare:nNnT { \l_@@_added_begin_int + \l_@@_added_end_int } > 0
       {
-        \__kernel_msg_error:nnxxx { regex } { result-unbalanced }
+        \msg_error:nnxxx { regex } { result-unbalanced }
           { replacing } { \int_use:N \l_@@_added_begin_int }
           { \int_use:N \l_@@_added_end_int }
       }
@@ -7287,14 +7287,14 @@
 %    \begin{macrocode}
 \use:x
   {
-    \__kernel_msg_new:nnn { regex } { trailing-backslash }
-      { Trailing~escape~char~'\iow_char:N\\'~in~regex~or~replacement. }
-    \__kernel_msg_new:nnn { regex } { x-missing-rbrace }
+    \msg_new:nnn { regex } { trailing-backslash }
+      { Trailing~'\iow_char:N\\'~in~regex~or~replacement. }
+    \msg_new:nnn { regex } { x-missing-rbrace }
       {
         Missing~brace~'\iow_char:N\}'~in~regex~
         '...\iow_char:N\\x\iow_char:N\{...##1'.
       }
-    \__kernel_msg_new:nnn { regex } { x-overflow }
+    \msg_new:nnn { regex } { x-overflow }
       {
         Character~code~##1~too~large~in~
         \iow_char:N\\x\iow_char:N\{##2\iow_char:N\}~regex.
@@ -7304,7 +7304,7 @@
 %
 % Invalid quantifier.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { invalid-quantifier }
+\msg_new:nnnn { regex } { invalid-quantifier }
   { Braced~quantifier~'#1'~may~not~be~followed~by~'#2'. }
   {
     The~character~'#2'~is~invalid~in~the~braced~quantifier~'#1'.~
@@ -7316,13 +7316,13 @@
 % Messages for missing or extra closing brackets and parentheses, with
 % some fancy singular/plural handling for the case of parentheses.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { missing-rbrack }
+\msg_new:nnnn { regex } { missing-rbrack }
   { Missing~right~bracket~inserted~in~regular~expression. }
   {
     LaTeX~was~given~a~regular~expression~where~a~character~class~
     was~started~with~'[',~but~the~matching~']'~is~missing.
   }
-\__kernel_msg_new:nnnn { regex } { missing-rparen }
+\msg_new:nnnn { regex } { missing-rparen }
   {
     Missing~right~
     \int_compare:nTF { #1 = 1 } { parenthesis } { parentheses } ~
@@ -7332,7 +7332,7 @@
     LaTeX~was~given~a~regular~expression~with~\int_eval:n {#1} ~
     more~left~parentheses~than~right~parentheses.
   }
-\__kernel_msg_new:nnnn { regex } { extra-rparen }
+\msg_new:nnnn { regex } { extra-rparen }
   { Extra~right~parenthesis~ignored~in~regular~expression. }
   {
     LaTeX~came~across~a~closing~parenthesis~when~no~submatch~group~
@@ -7342,7 +7342,7 @@
 %
 % Some escaped alphanumerics are not allowed everywhere.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { bad-escape }
+\msg_new:nnnn { regex } { bad-escape }
   {
     Invalid~escape~'\iow_char:N\\#1'~
     \@@_if_in_cs:TF { within~a~control~sequence. }
@@ -7370,7 +7370,7 @@
 %
 % Range errors.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { range-missing-end }
+\msg_new:nnnn { regex } { range-missing-end }
   { Invalid~end-point~for~range~'#1-#2'~in~character~class. }
   {
     The~end-point~'#2'~of~the~range~'#1-#2'~may~not~serve~as~an~
@@ -7377,7 +7377,7 @@
     end-point~for~a~range:~alphanumeric~characters~should~not~be~
     escaped,~and~non-alphanumeric~characters~should~be~escaped.
   }
-\__kernel_msg_new:nnnn { regex } { range-backwards }
+\msg_new:nnnn { regex } { range-backwards }
   { Range~'[#1-#2]'~out~of~order~in~character~class. }
   {
     In~ranges~of~characters~'[x-y]'~appearing~in~character~classes,~
@@ -7389,7 +7389,7 @@
 %
 % Errors related to |\c| and |\u|.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { c-bad-mode }
+\msg_new:nnnn { regex } { c-bad-mode }
   { Invalid~nested~'\iow_char:N\\c'~escape~in~regular~expression. }
   {
     The~'\iow_char:N\\c'~escape~cannot~be~used~within~
@@ -7397,7 +7397,7 @@
     nor~another~category~test.~
     To~combine~several~category~tests,~use~'\iow_char:N\\c[...]'.
   }
-\__kernel_msg_new:nnnn { regex } { c-C-invalid }
+\msg_new:nnnn { regex } { c-C-invalid }
   { '\iow_char:N\\cC'~should~be~followed~by~'.'~or~'(',~not~'#1'. }
   {
     The~'\iow_char:N\\cC'~construction~restricts~the~next~item~to~be~a~
@@ -7404,7 +7404,7 @@
     control~sequence~or~the~next~group~to~be~made~of~control~sequences.~
     It~only~makes~sense~to~follow~it~by~'.'~or~by~a~group.
   }
-\__kernel_msg_new:nnnn { regex } { cu-lbrace }
+\msg_new:nnnn { regex } { cu-lbrace }
   { Left~braces~must~be~escaped~in~'\iow_char:N\\#1{...}'. }
   {
     Constructions~such~as~'\iow_char:N\\#1{...\iow_char:N\{...}'~are~
@@ -7411,13 +7411,13 @@
     not~allowed~and~should~be~replaced~by~
     '\iow_char:N\\#1{...\token_to_str:N\{...}'.
   }
-\__kernel_msg_new:nnnn { regex } { c-lparen-in-class }
+\msg_new:nnnn { regex } { c-lparen-in-class }
   { Catcode~test~cannot~apply~to~group~in~character~class }
   {
     Construction~such~as~'\iow_char:N\\cL(abc)'~are~not~allowed~inside~a~
     class~'[...]'~because~classes~do~not~match~multiple~characters~at~once.
   }
-\__kernel_msg_new:nnnn { regex } { c-missing-rbrace }
+\msg_new:nnnn { regex } { c-missing-rbrace }
   { Missing~right~brace~inserted~for~'\iow_char:N\\c'~escape. }
   {
     LaTeX~was~given~a~regular~expression~where~a~
@@ -7424,13 +7424,13 @@
     '\iow_char:N\\c\iow_char:N\{...'~construction~was~not~ended~
     with~a~closing~brace~'\iow_char:N\}'.
   }
-\__kernel_msg_new:nnnn { regex } { c-missing-rbrack }
+\msg_new:nnnn { regex } { c-missing-rbrack }
   { Missing~right~bracket~inserted~for~'\iow_char:N\\c'~escape. }
   {
     A~construction~'\iow_char:N\\c[...'~appears~in~a~
     regular~expression,~but~the~closing~']'~is~not~present.
   }
-\__kernel_msg_new:nnnn { regex } { c-missing-category }
+\msg_new:nnnn { regex } { c-missing-category }
   { Invalid~character~'#1'~following~'\iow_char:N\\c'~escape. }
   {
     In~regular~expressions,~the~'\iow_char:N\\c'~escape~sequence~
@@ -7438,19 +7438,19 @@
     capital~letter~representing~a~character~category,~namely~
     one~of~'ABCDELMOPSTU'.
   }
-\__kernel_msg_new:nnnn { regex } { c-trailing }
+\msg_new:nnnn { regex } { c-trailing }
   { Trailing~category~code~escape~'\iow_char:N\\c'... }
   {
     A~regular~expression~ends~with~'\iow_char:N\\c'~followed~
     by~a~letter.~It~will~be~ignored.
   }
-\__kernel_msg_new:nnnn { regex } { u-missing-lbrace }
+\msg_new:nnnn { regex } { u-missing-lbrace }
   { Missing~left~brace~following~'\iow_char:N\\u'~escape. }
   {
     The~'\iow_char:N\\u'~escape~sequence~must~be~followed~by~
     a~brace~group~with~the~name~of~the~variable~to~use.
   }
-\__kernel_msg_new:nnnn { regex } { u-missing-rbrace }
+\msg_new:nnnn { regex } { u-missing-rbrace }
   { Missing~right~brace~inserted~for~'\iow_char:N\\u'~escape. }
   {
     LaTeX~
@@ -7464,7 +7464,7 @@
 %
 % Errors when encountering the \textsc{posix} syntax |[:...:]|.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { posix-unsupported }
+\msg_new:nnnn { regex } { posix-unsupported }
   { POSIX~collating~element~'[#1 ~ #1]'~not~supported. }
   {
     The~'[.foo.]'~and~'[=bar=]'~syntaxes~have~a~special~meaning~
@@ -7471,7 +7471,7 @@
     in~POSIX~regular~expressions.~This~is~not~supported~by~LaTeX.~
     Maybe~you~forgot~to~escape~a~left~bracket~in~a~character~class?
   }
-\__kernel_msg_new:nnnn { regex } { posix-unknown }
+\msg_new:nnnn { regex } { posix-unknown }
   { POSIX~class~'[:#1:]'~unknown. }
   {
     '[:#1:]'~is~not~among~the~known~POSIX~classes~
@@ -7480,7 +7480,7 @@
     '[:print:]',~'[:punct:]',~'[:space:]',~'[:upper:]',~
     '[:word:]',~and~'[:xdigit:]'.
   }
-\__kernel_msg_new:nnnn { regex } { posix-missing-close }
+\msg_new:nnnn { regex } { posix-missing-close }
   { Missing~closing~':]'~for~POSIX~class. }
   { The~POSIX~syntax~'#1'~must~be~followed~by~':]',~not~'#2'. }
 %    \end{macrocode}
@@ -7489,7 +7489,7 @@
 % with an unbalanced token list, which we must re-balance by adding
 % begin-group or end-group character tokens.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { result-unbalanced }
+\msg_new:nnnn { regex } { result-unbalanced }
   { Missing~brace~inserted~when~#1. }
   {
     LaTeX~was~asked~to~do~some~regular~expression~operation,~
@@ -7501,13 +7501,13 @@
 %
 % Error message for unknown options.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { unknown-option }
+\msg_new:nnnn { regex } { unknown-option }
   { Unknown~option~'#1'~for~regular~expressions. }
   {
     The~only~available~option~is~'case-insensitive',~toggled~by~
     '(?i)'~and~'(?-i)'.
   }
-\__kernel_msg_new:nnnn { regex } { special-group-unknown }
+\msg_new:nnnn { regex } { special-group-unknown }
   { Unknown~special~group~'#1~...'~in~a~regular~expression. }
   {
     The~only~valid~constructions~starting~with~'(?'~are~
@@ -7517,7 +7517,7 @@
 %
 % Errors in the replacement text.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { replacement-c }
+\msg_new:nnnn { regex } { replacement-c }
   { Misused~'\iow_char:N\\c'~command~in~a~replacement~text. }
   {
     In~a~replacement~text,~the~'\iow_char:N\\c'~escape~sequence~
@@ -7524,7 +7524,7 @@
     can~be~followed~by~one~of~the~letters~'ABCDELMOPSTU'~
     or~a~brace~group,~not~by~'#1'.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-u }
+\msg_new:nnnn { regex } { replacement-u }
   { Misused~'\iow_char:N\\u'~command~in~a~replacement~text. }
   {
     In~a~replacement~text,~the~'\iow_char:N\\u'~escape~sequence~
@@ -7531,7 +7531,7 @@
     must~be~~followed~by~a~brace~group~holding~the~name~of~the~
     variable~to~use.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-g }
+\msg_new:nnnn { regex } { replacement-g }
   {
     Missing~brace~for~the~'\iow_char:N\\g'~construction~
     in~a~replacement~text.
@@ -7541,7 +7541,7 @@
     submatches~are~represented~either~as~'\iow_char:N \\g{dd..d}',~
     or~'\\d',~where~'d'~are~single~digits.~Here,~a~brace~is~missing.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-catcode-end }
+\msg_new:nnnn { regex } { replacement-catcode-end }
   {
     Missing~character~for~the~'\iow_char:N\\c<category><character>'~
     construction~in~a~replacement~text.
@@ -7552,7 +7552,7 @@
     the~character~category.~Then,~a~character~must~follow.~LaTeX~
     reached~the~end~of~the~replacement~when~looking~for~that.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-catcode-escaped }
+\msg_new:nnnn { regex } { replacement-catcode-escaped }
   {
     Escaped~letter~or~digit~after~category~code~in~replacement~text.
   }
@@ -7562,7 +7562,7 @@
     the~character~category.~Then,~a~character~must~follow,~not~
     '\iow_char:N\\#2'.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-catcode-in-cs }
+\msg_new:nnnn { regex } { replacement-catcode-in-cs }
   {
     Category~code~'\iow_char:N\\c#1#3'~ignored~inside~
     '\iow_char:N\\c\{...\}'~in~a~replacement~text.
@@ -7572,7 +7572,7 @@
     '\iow_char:N\\c\{...\}'~are~ignored~when~building~the~control~
     sequence~name.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-null-space }
+\msg_new:nnnn { regex } { replacement-null-space }
   { TeX~cannot~build~a~space~token~with~character~code~0. }
   {
     You~asked~for~a~character~token~with~category~space,~
@@ -7581,13 +7581,13 @@
     This~specific~case~is~impossible~and~will~be~replaced~
     by~a~normal~space.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-missing-rbrace }
+\msg_new:nnnn { regex } { replacement-missing-rbrace }
   { Missing~right~brace~inserted~in~replacement~text. }
   {
     There~ \int_compare:nTF { #1 = 1 } { was } { were } ~ #1~
     missing~right~\int_compare:nTF { #1 = 1 } { brace } { braces } .
   }
-\__kernel_msg_new:nnnn { regex } { replacement-missing-rparen }
+\msg_new:nnnn { regex } { replacement-missing-rparen }
   { Missing~right~parenthesis~inserted~in~replacement~text. }
   {
     There~ \int_compare:nTF { #1 = 1 } { was } { were } ~ #1~
@@ -7594,13 +7594,13 @@
     missing~right~
     \int_compare:nTF { #1 = 1 } { parenthesis } { parentheses } .
   }
-\__kernel_msg_new:nnn { regex } { submatch-too-big }
+\msg_new:nnn { regex } { submatch-too-big }
   { Submatch~#1~used~but~regex~only~has~#2~group(s) }
 %    \end{macrocode}
 %
 % Some escaped alphanumerics are not allowed everywhere.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { regex } { backwards-quantifier }
+\msg_new:nnnn { regex } { backwards-quantifier }
   { Quantifer~"{#1,#2}"~is~backwards. }
   { The~values~given~in~a~quantifier~must~be~in~order. }
 %    \end{macrocode}
@@ -7607,12 +7607,14 @@
 %
 % Used when showing a regex.
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { regex } { show }
+\msg_new:nnn { regex } { show }
   {
     >~Compiled~regex~
     \tl_if_empty:nTF {#1} { variable~ #2 } { {#1} } :
     #3
   }
+\prop_gput:Nnn \g_msg_module_name_prop { regex } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { regex } { }
 %    \end{macrocode}
 %
 % \begin{macro}{\@@_msg_repeated:nnN}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1077,7 +1077,7 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_item:n
   {
-    \__kernel_msg_expandable_error:nn { seq } { misused }
+    \msg_expandable_error:nn { seq } { misused }
     \use_none:n
   }
 %    \end{macrocode}
@@ -1617,7 +1617,7 @@
       {
         \int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int
           {
-            \__kernel_msg_error:nnx { seq } { shuffle-too-large }
+            \msg_error:nnx { seq } { shuffle-too-large }
               { \token_to_str:N #2 }
           }
           {
@@ -1648,7 +1648,7 @@
   {
     \cs_new_protected:Npn \seq_shuffle:N #1
       {
-        \__kernel_msg_error:nnn { kernel } { fp-no-random }
+        \msg_error:nnn { kernel } { fp-no-random }
           { \seq_shuffle:N #1 }
       }
     \cs_new_eq:NN \seq_gshuffle:N \seq_shuffle:N
@@ -2273,7 +2273,7 @@
           }
       }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { bad-variable } {#1}
       }
   }
@@ -2380,9 +2380,9 @@
 % \UnitTested
 %   Apply the general \cs{__kernel_chk_tl_type:NnnT}.
 %    \begin{macrocode}
-\cs_new_protected:Npn \seq_show:N { \@@_show:NN \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \seq_show:N { \@@_show:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \seq_show:N { c }
-\cs_new_protected:Npn \seq_log:N { \@@_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \seq_log:N { \@@_show:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \seq_log:N { c }
 \cs_new_protected:Npn \@@_show:NN #1#2
   {

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1542,7 +1542,7 @@
       {
         \dim_compare:nNnTF {#2} = \c_zero_dim
           {
-            \__kernel_msg_expandable_error:nnn { kernel } { zero-step } {#4}
+            \msg_expandable_error:nnn { kernel } { zero-step } {#4}
             \use_none:nnnn
           }
           { \@@_step:NnnnN < }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -590,7 +590,7 @@
 \cs_new_protected:Npn \@@_return_mark:w #1 \s_@@_mark { }
 \cs_new_protected:Npn \@@_return_none_error:
   {
-    \__kernel_msg_error:nnxx { sort } { return-none }
+    \msg_error:nnxx { sort } { return-none }
       { \tex_the:D \tex_toks:D \l_@@_A_int }
       { \tex_the:D \tex_toks:D \l_@@_C_int }
     \@@_return_same:w \@@_return_none_error:
@@ -597,7 +597,7 @@
   }
 \cs_new_protected:Npn \@@_return_two_error:
   {
-    \__kernel_msg_error:nnxx { sort } { return-two }
+    \msg_error:nnxx { sort } { return-two }
       { \tex_the:D \tex_toks:D \l_@@_A_int }
       { \tex_the:D \tex_toks:D \l_@@_C_int }
   }
@@ -1025,12 +1025,12 @@
   { \cs_set_eq:NN \toksdef \@@_disabled_toksdef:n }
 \cs_new_protected:Npn \@@_disabled_toksdef:n #1
   {
-    \__kernel_msg_error:nnx { sort } { toksdef }
+    \msg_error:nnx { sort } { toksdef }
       { \token_to_str:N #1 }
     \@@_error:
     \tex_toksdef:D #1
   }
-\__kernel_msg_new:nnnn { sort } { toksdef }
+\msg_new:nnnn { sort } { toksdef }
   { Allocation~of~\iow_char:N\\toks~registers~impossible~while~sorting. }
   {
     The~comparison~code~used~for~sorting~a~list~has~attempted~to~
@@ -1049,13 +1049,13 @@
 \cs_new_protected:Npn \@@_too_long_error:NNw #1#2 \fi:
   {
     \fi:
-    \__kernel_msg_error:nnxxx { sort } { too-large }
+    \msg_error:nnxxx { sort } { too-large }
       { \token_to_str:N #2 }
       { \int_eval:n { \l_@@_true_max_int - \l_@@_min_int } }
       { \int_eval:n { \l_@@_top_int - \l_@@_min_int } }
     #1 \@@_error:
   }
-\__kernel_msg_new:nnnn { sort } { too-large }
+\msg_new:nnnn { sort } { too-large }
   { The~list~#1~is~too~long~to~be~sorted~by~TeX. }
   {
     TeX~has~#2~toks~registers~still~available:~
@@ -1066,7 +1066,7 @@
 % \end{macro}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { sort } { return-none }
+\msg_new:nnnn { sort } { return-none }
   { The~comparison~code~did~not~return. }
   {
     When~sorting~a~list,~the~code~to~compare~items~#1~and~#2~
@@ -1075,7 +1075,7 @@
     \iow_char:N\\sort_return_swapped: .~
     Exactly~one~of~these~should~be~called.
   }
-\__kernel_msg_new:nnnn { sort } { return-two }
+\msg_new:nnnn { sort } { return-two }
   { The~comparison~code~returned~multiple~times. }
   {
     When~sorting~a~list,~the~code~to~compare~items~#1~and~#2~called~
@@ -1083,6 +1083,8 @@
     \iow_char:N\\sort_return_swapped: ~multiple~times.~
     Exactly~one~of~these~should~be~called.
   }
+\prop_gput:Nnn \g_msg_module_name_prop { sort } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { sort } { }
 %    \end{macrocode}
 %
 %    \begin{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -614,7 +614,7 @@
 \cs_new_protected:Npn \@@_if_flag_error:nnx #1
   {
     \flag_if_raised:nTF {#1}
-      { \__kernel_msg_error:nnx { str } }
+      { \msg_error:nnx { str } }
       { \use_none:nn }
   }
 \cs_new_protected:Npn \@@_if_flag_no_error:nnx #1#2#3
@@ -758,7 +758,7 @@
   {
     \if_meaning:w #1 #5
       \tl_if_empty:nF {#3}
-        { \__kernel_msg_error:nnx { str } { native-escaping } {#3} }
+        { \msg_error:nnx { str } { native-escaping } {#3} }
       #1
     \else:
       #4 #2 #1
@@ -830,7 +830,7 @@
               }
               {
                 \tl_clear:N \l_@@_internal_tl
-                \__kernel_msg_error:nnxx { str } { unknown-#2 } {#4} {#1}
+                \msg_error:nnxx { str } { unknown-#2 } {#4} {#1}
               }
           }
         \cs_if_exist:cF { @@_convert_#3_#1: }
@@ -1009,7 +1009,7 @@
           \char_generate:nn {#1} {12}
         \fi:
       }
-    \__kernel_msg_new:nnnn { str } { native-overflow }
+    \msg_new:nnnn { str } { native-overflow }
       { Character~code~too~large~for~this~engine. }
       {
         This~engine~only~support~8-bit~characters:~
@@ -1257,11 +1257,11 @@
 % General messages, and messages for the encodings and escapings loaded
 % by default (\enquote{native}, and \enquote{bytes}).
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { str } { unknown-esc }
+\msg_new:nnn { str } { unknown-esc }
   { Escaping~scheme~'#1'~(filtered:~'#2')~unknown. }
-\__kernel_msg_new:nnn { str } { unknown-enc }
+\msg_new:nnn { str } { unknown-enc }
   { Encoding~scheme~'#1'~(filtered:~'#2')~unknown. }
-\__kernel_msg_new:nnnn { str } { native-escaping }
+\msg_new:nnnn { str } { native-escaping }
   { The~'native'~encoding~scheme~does~not~support~any~escaping. }
   {
     Since~native~strings~do~not~consist~in~bytes,~
@@ -1268,7 +1268,7 @@
     none~of~the~escaping~methods~make~sense.~
     The~specified~escaping,~'#1',~will be ignored.
   }
-\__kernel_msg_new:nnn { str } { file-not-found }
+\msg_new:nnn { str } { file-not-found }
   { File~'l3str-#1.def'~not~found. }
 %    \end{macrocode}
 %
@@ -1284,7 +1284,7 @@
     \sys_if_engine_xetex_p:
   }
   {
-    \__kernel_msg_new:nnnn { str } { non-byte }
+    \msg_new:nnnn { str } { non-byte }
       { String~invalid~in~escaping~'#1':~it~may~only~contain~bytes. }
       {
         Some~characters~in~the~string~you~asked~to~convert~are~not~
@@ -1302,13 +1302,13 @@
 %
 % Those messages are used when converting to and from 8-bit encodings.
 %    \begin{macrocode}
-\__kernel_msg_new:nnnn { str } { decode-8-bit }
+\msg_new:nnnn { str } { decode-8-bit }
   { Invalid~string~in~encoding~'#1'. }
   {
     LaTeX~came~across~a~byte~which~is~not~defined~to~represent~
     any~character~in~the~encoding~'#1'.
   }
-\__kernel_msg_new:nnnn { str } { encode-8-bit }
+\msg_new:nnnn { str } { encode-8-bit }
   { Unicode~string~cannot~be~converted~to~encoding~'#1'. }
   {
     The~encoding~'#1'~only~contains~a~subset~of~all~Unicode~characters.~
@@ -1384,7 +1384,7 @@
         \@@_unescape_hex_auxii:N
       }
   }
-\__kernel_msg_new:nnnn { str } { unescape-hex }
+\msg_new:nnnn { str } { unescape-hex }
   { String~invalid~in~escaping~'hex':~only~hexadecimal~digits~allowed. }
   {
     Some~characters~in~the~string~you~asked~to~convert~are~not~
@@ -1459,7 +1459,7 @@
         \@@_output_end:
         \use_i:nnn #3 ##2##3
       }
-    \__kernel_msg_new:nnnn { str } { unescape-#2 }
+    \msg_new:nnnn { str } { unescape-#2 }
       { String~invalid~in~escaping~'#2'. }
       {
         LaTeX~came~across~the~escape~character~'#1'~not~followed~by~
@@ -1582,7 +1582,7 @@
       \if_charcode:w ^^J #2 \else: ^^J \fi:
       \@@_unescape_string_newlines:wN #2
     }
-  \__kernel_msg_new:nnnn { str } { unescape-string }
+  \msg_new:nnnn { str } { unescape-string }
     { String~invalid~in~escaping~'string'. }
     {
       LaTeX~came~across~an~escape~character~'\c_backslash_str'~
@@ -1848,7 +1848,7 @@
 \flag_clear_new:n { str_extra }
 \flag_clear_new:n { str_overlong }
 \flag_clear_new:n { str_overflow }
-\__kernel_msg_new:nnnn { str } { utf8-decode }
+\msg_new:nnnn { str } { utf8-decode }
   {
     Invalid~UTF-8~string:
     \exp_last_unbraced:Nf \use_none:n
@@ -1895,6 +1895,8 @@
         Unicode~limits~code~points~to~the~range~[0,1114111].
       }
   }
+\prop_gput:Nnn \g_msg_module_name_prop { str } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { str } { }
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2161,7 +2163,7 @@
   \flag_clear_new:n { str_missing }
   \flag_clear_new:n { str_extra }
   \flag_clear_new:n { str_end }
-  \__kernel_msg_new:nnnn { str } { utf16-encode }
+  \msg_new:nnnn { str } { utf16-encode }
     { Unicode~string~cannot~be~expressed~in~UTF-16:~surrogate. }
     {
       Surrogate~code~points~(in~the~range~[U+D800,~U+DFFF])~
@@ -2168,7 +2170,7 @@
       can~be~expressed~in~the~UTF-8~and~UTF-32~encodings,~
       but~not~in~the~UTF-16~encoding.
     }
-  \__kernel_msg_new:nnnn { str } { utf16-decode }
+  \msg_new:nnnn { str } { utf16-decode }
     {
       Invalid~UTF-16~string:
       \exp_last_unbraced:Nf \use_none:n
@@ -2461,7 +2463,7 @@
 %    \begin{macrocode}
   \flag_clear_new:n { str_overflow }
   \flag_clear_new:n { str_end }
-  \__kernel_msg_new:nnnn { str } { utf32-decode }
+  \msg_new:nnnn { str } { utf32-decode }
     {
       Invalid~UTF-32~string:
       \exp_last_unbraced:Nf \use_none:n

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -342,7 +342,7 @@
 %
 % \begin{function}[TF, added = 2017-10-08]{\str_if_in:nn}
 %   \begin{syntax}
-%     \cs{str_if_in:nnTF} \meta{tl_1} \Arg{tl_2} \Arg{true code} \Arg{false code}
+%     \cs{str_if_in:nnTF} \Arg{tl_1} \Arg{tl_2} \Arg{true code} \Arg{false code}
 %   \end{syntax}
 %   Converts both \meta{token lists} to \meta{strings} and
 %   tests whether \meta{string_2} is found inside \meta{string_1}.
@@ -1051,7 +1051,7 @@
   {
     \tl_if_empty:nTF {#4}
       {
-        \__kernel_msg_error:nnx { kernel } { empty-search-pattern } {#5}
+        \msg_error:nnx { kernel } { empty-search-pattern } {#5}
       }
       {
         \use:x

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -211,7 +211,7 @@
 %     \cs{sys_get_shell:nnN} \Arg{shell~command} \Arg{setup} \meta{tl~var}
 %     \cs{sys_get_shell:nnNTF} \Arg{shell~command} \Arg{setup} \meta{tl~var} \Arg{true code} \Arg{false code}
 %   \end{syntax}
-%   Defines \meta{tl} to the text returned by the \meta{shell command}.
+%   Defines \meta{tl~var} to the text returned by the \meta{shell command}.
 %   The \meta{shell command} is converted to a string using
 %   \cs{tl_to_str:n}.  Category codes may need to be set appropriately
 %   via the \meta{setup} argument, which is run just before running the
@@ -494,7 +494,7 @@
     \str_if_exist:NTF \c_sys_backend_str
       {
         \str_if_eq:VnF \c_sys_backend_str {#1}
-          { \__kernel_msg_error:nn { sys } { backend-set } }
+          { \msg_error:nn { sys } { backend-set } }
       }
       {
         \tl_if_blank:nF {#1}
@@ -516,7 +516,7 @@
             { xetex }     { }
           }
           {
-            \__kernel_msg_error:nnxx { sys } { wrong-backend }
+            \msg_error:nnxx { sys } { wrong-backend }
               #1 { xetex }
             \tl_gset:Nn #1 { xetex }
           }
@@ -535,7 +535,7 @@
                   { \str_if_eq_p:Vn #1 { luatex } }
                   { \str_if_eq_p:Vn #1 { pdftex } }
                   {
-                    \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                    \msg_error:nnxx { sys } { wrong-backend }
                       #1 { \sys_if_engine_luatex:TF { luatex } { pdftex } }
                     \sys_if_engine_luatex:TF
                       { \tl_gset:Nn #1 { luatex } }
@@ -551,7 +551,7 @@
                 { dvisvgm }  { }
               }
               {
-                \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                \msg_error:nnxx { sys } { wrong-backend }
                   #1 { dvips }
                 \tl_gset:Nn #1 { dvips }
               }
@@ -623,7 +623,7 @@
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \__kernel_msg_error:nnx
+        \msg_error:nnx
           { kernel } { quote-in-shell } {#1}
         \prg_return_false:
       }
@@ -844,7 +844,7 @@
         \cs_new:Npn \sys_rand_seed:
           {
             \int_value:w
-            \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+            \msg_expandable_error:nnn { kernel } { fp-no-random }
               { \sys_rand_seed: }
             \c_zero_int
           }
@@ -866,7 +866,7 @@
       {
         \cs_new_protected:Npn \sys_gset_rand_seed:n #1
           {
-            \__kernel_msg_error:nnn { kernel } { fp-no-random }
+            \msg_error:nnn { kernel } { fp-no-random }
               { \sys_gset_rand_seed:n {#1} }
           }
       }
@@ -903,13 +903,13 @@
           { \int_value:w \tex_elapsedtime:D }
       }
       {
-        \__kernel_msg_new:nnnn { kernel } { no-elapsed-time }
+        \msg_new:nnnn { kernel } { no-elapsed-time }
           { No~clock~detected~for~#1. }
           { The~current~engine~provides~no~way~to~access~the~system~time. }
         \cs_new:Npn \sys_timer:
           {
             \int_value:w
-            \__kernel_msg_expandable_error:nnn { kernel } { no-elapsed-time }
+            \msg_expandable_error:nnn { kernel } { no-elapsed-time }
               { \sys_timer: }
             \c_zero_int
           }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3text.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -989,9 +989,9 @@
 %   as \cs{tl_show:N} by simply calling that function.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_analysis_show:N
-  { \@@_analysis_show:NNN \__kernel_msg_show:nnxxxx \tl_show:N }
+  { \@@_analysis_show:NNN \msg_show:nnxxxx \tl_show:N }
 \cs_new_protected:Npn \tl_analysis_log:N
-  { \@@_analysis_show:NNN \__kernel_msg_log:nnxxxx \tl_log:N }
+  { \@@_analysis_show:NNN \msg_log:nnxxxx \tl_log:N }
 \cs_new_protected:Npn \@@_analysis_show:NNN #1#2#3
   {
     \tl_if_exist:NTF #3
@@ -1009,9 +1009,9 @@
 %   No existence test needed here.
 %    \begin{macrocode}
 \cs_new_protected:Npn \tl_analysis_show:n
-  { \@@_analysis_show:Nn \__kernel_msg_show:nnxxxx }
+  { \@@_analysis_show:Nn \msg_show:nnxxxx }
 \cs_new_protected:Npn \tl_analysis_log:n
-  { \@@_analysis_show:Nn \__kernel_msg_log:nnxxxx }
+  { \@@_analysis_show:Nn \msg_log:nnxxxx }
 \cs_new_protected:Npn \@@_analysis_show:Nn #1#2
   {
     \@@_analysis:n {#2}
@@ -1498,7 +1498,7 @@
 % \end{variable}
 %
 %    \begin{macrocode}
-\__kernel_msg_new:nnn { tl } { show-analysis }
+\msg_new:nnn { tl } { show-analysis }
   {
     The~token~list~ \tl_if_empty:nF {#1} { #1 ~ }
     \tl_if_empty:nTF {#2}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1967,7 +1967,7 @@
   {
     \tl_if_empty:nTF {#6}
       {
-        \__kernel_msg_error:nnx { kernel } { empty-search-pattern }
+        \msg_error:nnx { kernel } { empty-search-pattern }
           { \tl_to_str:n {#7} }
       }
       {
@@ -2633,7 +2633,7 @@
   {
     \tl_if_exist:NTF #1 {#1}
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { bad-variable } {#1}
       }
   }
@@ -3195,7 +3195,7 @@
 % \begin{macro}[EXP]{\@@_act_normal:NwNNN}
 % \begin{macro}[EXP]{\@@_act_group:nwNNN}
 % \begin{macro}[EXP]{\@@_act_space:wwNNN}
-% \begin{macro}[EXP]{\@@_act_end:w}
+% \begin{macro}[EXP]{\@@_act_end:wn}
 % \begin{macro}[EXP]
 %   {
 %     \@@_act_if_head_is_space:nTF,
@@ -3567,7 +3567,7 @@
               { \token_to_str:N #2 = \__kernel_exp_not:w \exp_after:wN {#2} }
           }
           {
-            \__kernel_msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nnxxx { kernel } { bad-type }
               { \token_to_str:N #2 } { \token_to_meaning:N #2 } { tl }
           }
       }
@@ -3641,13 +3641,13 @@
             \tl_if_eq:NNTF #1 \l_@@_internal_a_tl
               {#4}
               {
-                \__kernel_msg_error:nnxxxx { kernel } { bad-type }
+                \msg_error:nnxxxx { kernel } { bad-type }
                   { \token_to_str:N #1 } { \tl_to_str:N #1 }
                   {#2} { \tl_to_str:N \l_@@_internal_a_tl }
               }
           }
           {
-            \__kernel_msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nnxxx { kernel } { bad-type }
               { \token_to_str:N #1 } { \token_to_meaning:N #1 } {#2}
           }
       }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1581,9 +1581,9 @@
   {
     \if_int_compare:w #2 = 10 \exp_stop_f:
       \if_int_compare:w #1 =  \c_zero_int
-        \__kernel_msg_expandable_error:nn { char } { null-space }
+        \msg_expandable_error:nn { char } { null-space }
       \else:
-        \__kernel_msg_expandable_error:nn { char } { space }
+        \msg_expandable_error:nn { char } { space }
       \fi:
     \else:
       \if_int_odd:w 0
@@ -1591,13 +1591,13 @@
           \if_int_compare:w #2 = 5  \exp_stop_f: 1 \fi:
           \if_int_compare:w #2 = 9  \exp_stop_f: 1 \fi:
           \if_int_compare:w #2 > 13 \exp_stop_f: 1 \fi: \exp_stop_f:
-        \__kernel_msg_expandable_error:nn { char }
+        \msg_expandable_error:nn { char }
           { invalid-catcode }
       \else:
         \if_int_odd:w 0
           \if_int_compare:w #1 < \c_zero_int 1 \fi:
           \if_int_compare:w #1 > \c_max_char_int 1 \fi: \exp_stop_f:
-          \__kernel_msg_expandable_error:nn { char }
+          \msg_expandable_error:nn { char }
             { out-of-range }
         \else:
           \@@_generate_aux:nnw {#1} {#2}
@@ -1641,7 +1641,7 @@
             {
               #3
               \if_int_compare:w #2 = 13 \exp_stop_f:
-                \__kernel_msg_expandable_error:nn { char } { active }
+                \msg_expandable_error:nn { char } { active }
               \else:
                 \@@_generate_auxii:nnw {#1} {#2}
               \fi:

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-07-12}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -62,7 +62,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -139,7 +139,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2021-08-04}{}
+\ProvidesExplPackage{l3keys2e}{2021-08-27}{}
   {LaTeX2e option processing using LaTeX3 keys}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -166,7 +166,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xfp}{2021-08-04}{}
+\ProvidesExplPackage{xfp}{2021-08-27}{}
   {L3 Floating point unit}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -65,7 +65,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -535,7 +535,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2021-08-04}{}
+\ProvidesExplPackage{xfrac}{2021-08-27}{}
   {L3 Experimental split-level fractions}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -67,7 +67,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -1064,7 +1064,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xparse}{2021-08-04}{}
+\ProvidesExplPackage{xparse}{2021-08-27}{}
   {L3 Experimental document command parser}
 %    \end{macrocode}
 %
@@ -1087,10 +1087,10 @@
       }
     \keys_set:nV {#1} \l_@@_options_clist
     \bool_if:NF \l_@@_log_bool
-      { \msg_redirect_module:nnn { LaTeX / #1 } { info } { none } }
+      { \msg_redirect_module:nnn {#1} { info } { none } }
     \cs_new_protected:Npn \@@_unknown_argument_type_error:n ##1
       {
-        \__kernel_msg_error:nnxx {#1} { unknown-argument-type }
+        \msg_error:nnxx {#1} { unknown-argument-type }
           { \@@_environment_or_command: } { \tl_to_str:n {##1} }
       }
   }

Modified: trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2021-08-04}
+% \date{Released 2021-08-27}
 %
 % \maketitle
 %
@@ -682,7 +682,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2021-08-04}{}
+\ProvidesExplPackage{xtemplate}{2021-08-27}{}
   {L3 Experimental prototype document functions}
 %    \end{macrocode}
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3benchmark.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2021-08-04}{}
+\ProvidesExplPackage{l3benchmark}{2021-08-27}{}
   {L3 Experimental benchmarking}
 \fp_new:N \g_benchmark_duration_target_fp
 \fp_gset:Nn \g_benchmark_duration_target_fp { 1 }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3bitset/l3bitset.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3bitset.dtx
-\ProvidesExplPackage{l3bitset}{2021-08-04}{}
+\ProvidesExplPackage{l3bitset}{2021-08-27}{}
   {L3 Experimental bitset support}
 \cs_new_protected:Npn \bitset_new:N #1
   {
@@ -126,7 +126,7 @@
             \prop_gput:cnn { g__bitset_ \cs_to_str:N #2 _name_prop } {#3} {#3}
           }
           {
-            \__kernel_msg_warning:nnxx { bitset } { bitset-unknown-name }
+            \msg_warning:nnxx { bitset } { unknown-name }
               { \token_to_str:N #2 }
               { \tl_to_str:n {#3} }
           }
@@ -195,7 +195,7 @@
   {
     \__kernel_chk_defined:NT #2
       {
-        #1 { LaTeX/bitset } { show-bitset }
+        #1 { bitset } { show }
            { \token_to_str:N #2 }
            { \bitset_to_bin:N #2 }
            { \bitset_to_arabic:N #2 }
@@ -206,7 +206,7 @@
   {
     \__kernel_chk_defined:NT #2
       {
-        #1 { LaTeX/bitset } { show-names }
+        #1 { bitset } { show-names }
            { \token_to_str:N #2 }
            { \prop_map_function:cN { g__bitset_ \cs_to_str:N #2 _name_prop }  \msg_show_item:nn  }
            { }
@@ -213,13 +213,13 @@
            { }
       }
   }
- \__kernel_msg_new:nnn { bitset } { show-bitset }
+ \msg_new:nnn { bitset } { show }
   {
     The~bitset~#1~has~the~representation: \\
     >~binary:~#2  \\
     >~arabic:~#3 .
   }
-\__kernel_msg_new:nnn { bitset } { show-names }
+\msg_new:nnn { bitset } { show-names }
   {
     The~bitset~#1~
     \tl_if_empty:nTF {#2}
@@ -226,9 +226,10 @@
       { knows~no~names~yet \\>~ . }
       { knows~the~name/index~pairs~(without~outer~braces): #2 . }
   }
-\__kernel_msg_new:nnn { bitset } { bitset-unknown-name }
+\msg_new:nnn { bitset } { unknown-name }
   { The~name~'#2'~is~unknown~for~bitset~\tl_to_str:n {#1} }
-
+\prop_gput:Nnn \g_msg_module_name_prop { bitset } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { bitset } { }
 %% 
 %%
 %% End of file `l3bitset.sty'.

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -28,7 +28,7 @@
 %% 
 %% File: l3draw.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2021-08-04}{}
+\ProvidesExplPackage{l3draw}{2021-08-27}{}
   {L3 Experimental core drawing support}
 \scan_new:N \s__draw_mark
 \scan_new:N \s__draw_stop

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3graphics.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3graphics}{2021-08-04}{}
+\ProvidesExplPackage{l3graphics}{2021-08-27}{}
   {L3 Experimental graphics inclusion support}
 \ior_new:N \l__graphics_tmp_ior
 \tl_new:N  \l__graphics_tmp_tl
@@ -37,7 +37,7 @@
 \cs_new_protected:Npn \graphics_bb_save:n #1
   {
     \dim_if_exist:cTF { c__graphics_ #1 _urx_dim }
-      { \__kernel_msg_error:nnn { graphic } { bb-already-cached } {#1} }
+      { \msg_error:nnn { graphic } { bb-already-cached } {#1} }
       {
         \dim_compare:nNnF \l_graphics_llx_dim = { 0pt }
           { \dim_const:cn { c__graphics_ #1 _llx_dim } { \l_graphics_llx_dim } }
@@ -104,7 +104,7 @@
   {
     #1
     \exp_not:N \ior_if_eof:NTF \exp_not:N \l__graphics_tmp_ior
-      { \__kernel_msg_error:nnn { graphics } {#2} {#3} }
+      { \msg_error:nnn { graphics } {#2} {#3} }
       {
         \ior_str_map_inline:Nn \exp_not:N \l__graphics_tmp_ior
           {
@@ -188,7 +188,7 @@
           { \seq_map_break:n { \use_i:nnn \__graphics_include: } }
       }
     \use:n
-      { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} }
+      { \msg_error:nnn { graphics } { graphic-not-found } {#1} }
   }
 \cs_new_protected:Npn \__graphics_include:
   {
@@ -209,7 +209,7 @@
           \exp_args:Ne \__graphics_include_auxi:n
             { \str_foldcase:n {#1} }
         }
-        { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} }
+        { \msg_error:nnn { graphics } { graphic-not-found } {#1} }
     \group_end:
   }
 \cs_new_protected:Npn \__graphics_include_auxi:n #1
@@ -234,7 +234,7 @@
           { \__graphics_include_auxiv:n }
             {#1}
       }
-      { \__kernel_msg_error:nnn { graphics } { unsupported-graphic-type } {#1} }
+      { \msg_error:nnn { graphics } { unsupported-graphic-type } {#1} }
   }
 \cs_new_protected:Npn \__graphics_include_auxiii:n #1
   {
@@ -285,19 +285,19 @@
         { } { } { }
   }
 \cs_new:Npn \__graphics_list_aux:n #1 { \iow_newline: #1 }
-\__kernel_msg_new:nnnn { graphics } { graphic-not-found }
+\msg_new:nnnn { graphics } { graphic-not-found }
   { Image~file~'#1'~not~found. }
   {
     LaTeX~tried~to~open~graphic~file~'#1',
     ~but~the~file~could~not~be~read.
   }
-\__kernel_msg_new:nnnn { graphics } { pipe-failed }
+\msg_new:nnnn { graphics } { pipe-failed }
   { Cannot~run~piped~system~commands. }
   {
     LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
     Try~the~"--shell-escape"~(or~"--enable-pipes")~option.
   }
-\__kernel_msg_new:nnnn { graphics } { unsupported-graphic-type }
+\msg_new:nnnn { graphics } { unsupported-graphic-type }
   { Image~type~'#1'~not~supported~by~current~driver. }
   {
     LaTeX~was~asked~to~include~an~graphic~of~type~'#1',~

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3opacity/l3opacity.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3opacity.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3opacity}{2021-08-04}{}
+\ProvidesExplPackage{l3opacity}{2021-08-27}{}
   {L3 Experimental opacity support}
 \cs_new_protected:Npn \opacity_select:n #1
   { \__opacity_select:nN {#1} \__opacity_backend_select:n }

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3str-format.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2021-08-04}{}
+\ProvidesExplPackage{l3str-format}{2021-08-27}{}
   {L3 Experimental string formatting}
 \cs_generate_variant:Nn \use:nn { nf }
 \cs_generate_variant:Nn \use:nnn { fnf }
@@ -101,7 +101,7 @@
 \cs_new:Npn \__str_format_parse_end:nwn #1 #2 \s__str_stop \s__str_stop #3
   {
     \tl_if_empty:nF {#2}
-      { \__kernel_msg_expandable_error:nnn { str } { invalid-format } {#3} }
+      { \msg_expandable_error:nnn { str } { invalid-format } {#3} }
     #1
   }
 \cs_new:cpn { __str_format_align_<:nnnN } #1#2#3#4
@@ -168,7 +168,7 @@
   {
     \token_if_eq_charcode:NNTF #2 =
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-align-format } {#2} {tl}
         \__str_format_put:nw { #1 < }
       }
@@ -179,7 +179,7 @@
       }
     \token_if_eq_charcode:NNF #3 ?
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-sign-format } {#3} {tl}
       }
     \__str_format_put:nw { {#4} }
@@ -190,7 +190,7 @@
       {
         \token_if_eq_charcode:NNF #6 ?
           {
-            \__kernel_msg_expandable_error:nnnn
+            \msg_expandable_error:nnnn
               { str } { invalid-style-format } {#6} {tl}
           }
       }
@@ -259,7 +259,7 @@
     \__str_format_put:nw { {#4} }
     \tl_if_empty:nF {#5}
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-precision-format } {#5} {int}
       }
     \str_case:nnF {#6}
@@ -271,7 +271,7 @@
         { X } { \__str_format_int:NwnnNNn \int_to_Hex:n }
       }
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-style-format } {#6} { int }
         \__str_format_int:NwnnNNn \use:n
       }
@@ -328,7 +328,7 @@
         { ? } { \__str_format_fp:wnnnNNn \__str_format_fp_g:nn }
       }
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { str } { invalid-style-format } {#6} { fp }
         \__str_format_fp:wnnnNNn \__str_format_fp_g:nn
       }
@@ -436,16 +436,18 @@
 \cs_new:Npn \__str_format_fp_trim_loop:w #1 0; #2 { #2 #1 ; #2 }
 \cs_new:Npn \__str_format_fp_trim_dot:w #1 .; { \__str_format_fp_trim_end:w #1 ; }
 \cs_new:Npn \__str_format_fp_trim_end:w #1 ; #2 \s__str_stop { #1 }
-\__kernel_msg_new:nnn { str } { invalid-format }
+\msg_new:nnn { str } { invalid-format }
   { Invalid~format~'#1'. }
-\__kernel_msg_new:nnn { str } { invalid-align-format }
+\msg_new:nnn { str } { invalid-align-format }
   { Invalid~alignment~'#1'~for~type~'#2'. }
-\__kernel_msg_new:nnn { str } { invalid-sign-format }
+\msg_new:nnn { str } { invalid-sign-format }
   { Invalid~sign~'#1'~for~type~'#2'. }
-\__kernel_msg_new:nnn { str } { invalid-precision-format }
+\msg_new:nnn { str } { invalid-precision-format }
   { Invalid~precision~'#1'~for~type~'#2'. }
-\__kernel_msg_new:nnn { str } { invalid-style-format }
+\msg_new:nnn { str } { invalid-style-format }
   { Invalid~style~'#1'~for~type~'#2'. }
+\prop_gput:Nnn \g_msg_module_name_prop { str } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { str } { }
 %% 
 %%
 %% End of file `l3str-format.sty'.

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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -20,7 +20,7 @@
 %% 
 %% File: l3sys-shell.dtx
 \RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2021-08-04}{}
+\ProvidesExplPackage{l3sys-shell}{2021-08-27}{}
   {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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: xcoffins.dtx
-\ProvidesExplPackage{xcoffins}{2021-08-04}{}
+\ProvidesExplPackage{xcoffins}{2021-08-27}{}
   {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	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3galley}{2021-08-04}{}
+\ProvidesExplPackage{l3galley}{2021-08-27}{}
   {L3 Experimental galley code}
 \int_new:N \l__galley_tmp_int
 \seq_new:N \g__galley_tmpa_seq
@@ -706,7 +706,7 @@
 \cs_new_protected:Npn \galley_break_line:Nn #1#2
   {
     \mode_if_vertical:TF
-      { \__kernel_msg_error:nn { galley } { no-line-to-end } }
+      { \msg_error:nn { galley } { no-line-to-end } }
       {
         \tex_unskip:D
         \bool_if:NF #1
@@ -881,7 +881,7 @@
   { \int_value:w \tex_widowpenalties:D \int_eval:n {#1} , }
 \cs_new_protected:Npn \galley_interline_penalty:
   { \int_value:w \tex_interlinepenalties:D \tex_interlinepenalties:D \c_zero_int }
-\__kernel_msg_new:nnn { galley } { no-line-to-end }
+\msg_new:nnn { galley } { no-line-to-end }
   { There's~no~line~here~to~end. }
 \cs_set:Npn \clearpage
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: xgalley.dtx
-\ProvidesExplPackage{xgalley}{2021-08-04}{}
+\ProvidesExplPackage{xgalley}{2021-08-27}{}
   {L3 Experimental galley}
 \RequirePackage{xtemplate,l3galley}
 \clist_new:N \l__galley_tmpa_clist

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2021-08-27 22:42:05 UTC (rev 60338)
@@ -70,7 +70,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2021-07-12}%
+\def\ExplFileDate{2021-08-27}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -1303,6 +1303,8 @@
   \__kernel_primitive:NN \omathchardef          \tex_omathchardef:D
   \__kernel_primitive:NN \omathcode             \tex_omathcode:D
   \__kernel_primitive:NN \oradical              \tex_oradical:D
+  \__kernel_primitive:NN \partokencontext       \tex_partokencontext:D
+  \__kernel_primitive:NN \partokenname          \tex_partokenname:D
   \__kernel_primitive:NN \tracingstacklevels    \tex_tracingstacklevels:D
 \tex_endgroup:D
 \tex_ifdefined:D \@@end
@@ -1618,12 +1620,12 @@
 \cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#2}
 \cs_set_protected:Npn \debug_on:n #1
   {
-    \__kernel_msg_error:nnx { debug } { enable-debug }
+    \msg_error:nnx { debug } { enable-debug }
       { \tl_to_str:n { \debug_on:n {#1} } }
   }
 \cs_set_protected:Npn \debug_off:n #1
   {
-    \__kernel_msg_error:nnx { debug } { enable-debug }
+    \msg_error:nnx { debug } { enable-debug }
        { \tl_to_str:n { \debug_off:n {#1} } }
   }
 \cs_set_protected:Npn \debug_suspend: { }
@@ -1681,7 +1683,7 @@
       { \__prg_generate_conditional:nnNNNnnn {#1} {#2} #3 #4 #5 }
       { \tl_count:n {#2} }
       {
-        \__kernel_msg_error:nnxx { kernel } { bad-number-of-arguments }
+        \msg_error:nnxx { kernel } { bad-number-of-arguments }
           { \token_to_str:c { #1 : #2 } }
           { \tl_count:n {#2} }
         \use_none:nn
@@ -1690,7 +1692,7 @@
 \cs_set_protected:Npn \__prg_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8
   {
     \if_meaning:w \c_false_bool #3
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \use_none:nn
     \fi:
@@ -1721,7 +1723,7 @@
     \use:c { __prg_generate_ #8 _form:wNNnnnnN }
         \tl_if_empty:nF {#8}
           {
-            \__kernel_msg_error:nnxx
+            \msg_error:nnxx
               { kernel } { conditional-form-unknown }
               {#8} { \token_to_str:c { #3 : #4 } }
           }
@@ -1745,7 +1747,7 @@
           { #7 \__prg_p_true:w \fi: \c_false_bool }
       }
       {
-        \__kernel_msg_error:nnx { kernel } { protected-predicate }
+        \msg_error:nnx { kernel } { protected-predicate }
           { \token_to_str:c { #4 _p: #5 } }
       }
   }
@@ -1796,12 +1798,12 @@
 \cs_set_protected:Npn \__prg_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6
   {
     \if_meaning:w \c_false_bool #3
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w
     \fi:
     \if_meaning:w \c_false_bool #6
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#4} }
       \exp_after:wN \__prg_use_none_delimit_by_q_recursion_stop:w
     \fi:
@@ -1815,7 +1817,7 @@
     \use:c { __prg_set_eq_conditional_ #6 _form:wNnnnn }
         \tl_if_empty:nF {#6}
           {
-            \__kernel_msg_error:nnxx
+            \msg_error:nnxx
               { kernel } { conditional-form-unknown }
               {#6} { \token_to_str:c { #1 : #2 } }
           }
@@ -1931,7 +1933,7 @@
   { \cs_if_exist:cTF {#1} { \use:c {#1} #2 } { } }
 \cs_set:Npn \cs_if_exist_use:c #1
   { \cs_if_exist:cTF {#1} { \use:c {#1} } { } }
-\cs_set_protected:Npn \__kernel_msg_error:nnxx #1#2#3#4
+\cs_set_protected:Npn \msg_error:nnxx #1#2#3#4
   {
     \tex_newlinechar:D = `\^^J \scan_stop:
     \tex_errmessage:D
@@ -1944,10 +1946,10 @@
       }
     \tex_end:D
   }
-\cs_set_protected:Npn \__kernel_msg_error:nnx #1#2#3
-  { \__kernel_msg_error:nnxx {#1} {#2} {#3} { } }
-\cs_set_protected:Npn \__kernel_msg_error:nn #1#2
-  { \__kernel_msg_error:nnxx {#1} {#2} { } { } }
+\cs_set_protected:Npn \msg_error:nnx #1#2#3
+  { \msg_error:nnxx {#1} {#2} {#3} { } }
+\cs_set_protected:Npn \msg_error:nn #1#2
+  { \msg_error:nnxx {#1} {#2} { } { } }
 \cs_set:Npn \msg_line_context:
   { on~line~ \tex_the:D \tex_inputlineno:D }
 \cs_set_protected:Npn \iow_log:x
@@ -1958,7 +1960,7 @@
   {
     \cs_if_free:NF #1
       {
-        \__kernel_msg_error:nnxx { kernel } { command-already-defined }
+        \msg_error:nnxx { kernel } { command-already-defined }
           { \token_to_str:N #1 } { \token_to_meaning:N #1 }
       }
   }
@@ -2081,7 +2083,7 @@
   {
     \__kernel_cs_parm_from_arg_count:nnF { \use:nnn #2 #1 } {#3}
       {
-        \__kernel_msg_error:nnxx { kernel } { bad-number-of-arguments }
+        \msg_error:nnxx { kernel } { bad-number-of-arguments }
           { \token_to_str:N #1 } { \int_eval:n {#3} }
         \use_none:n
       }
@@ -2116,7 +2118,7 @@
           { \tl_map_function:nN {#2} \__cs_generate_from_signature:n }
         \tl_if_empty:oF \__cs_tmp:w
           {
-            \__kernel_msg_error:nnxxx { kernel } { non-base-function }
+            \msg_error:nnxxx { kernel } { non-base-function }
               { \token_to_str:N #5 } {#2} { \__cs_tmp:w }
           }
         \cs_generate_from_arg_count:NNnn
@@ -2123,7 +2125,7 @@
           #5 #4 { \tl_count:n {#2} } {#6}
       }
       {
-        \__kernel_msg_error:nnx { kernel } { missing-colon }
+        \msg_error:nnx { kernel } { missing-colon }
           { \token_to_str:N #5 }
       }
   }
@@ -2210,7 +2212,7 @@
     \cs_if_exist:NTF #1
       {#2}
       {
-        \__kernel_msg_error:nnx { kernel } { variable-not-defined }
+        \msg_error:nnx { kernel } { variable-not-defined }
           { \token_to_str:N #1 }
       }
   }
@@ -2381,7 +2383,7 @@
   {
       \fi:
     \fi:
-    \__kernel_msg_expandable_error:nnn { kernel } { bad-variable } {#2}
+    \msg_expandable_error:nnn { kernel } { bad-variable } {#2}
     \exp_end:
   }
 \cs_new:Npn \exp_args:NNc #1#2#3
@@ -2652,7 +2654,7 @@
   \if_cs_exist:N ^^@
   \else:
     \cs_new:Npn ^^@
-      { \__kernel_msg_expandable_error:nn { kernel } { bad-exp-end-f } }
+      { \msg_expandable_error:nn { kernel } { bad-exp-end-f } }
   \fi:
   \cs_new:Npn \exp_end_continue_f:nw #1 { `^^@ #1 }
 \group_end:
@@ -2728,7 +2730,7 @@
           \tl_if_head_is_N_type:nTF {#2}
             { \__exp_e_primitive_aux:NNw #1 }
             {
-              \__kernel_msg_expandable_error:nnn { kernel } { e-type }
+              \msg_expandable_error:nnn { kernel } { e-type }
                 { Missing~primitive~name }
               \__exp_e_primitive_aux:NNw #1 \c_empty_tl
             }
@@ -2788,7 +2790,7 @@
               {
                 \tl_if_empty:nTF {#1}
                   {
-                    \__kernel_msg_expandable_error:nnn
+                    \msg_expandable_error:nnn
                       { kernel } { e-type }
                       { \unexpanded missing~brace }
                     \__exp_e_end:nn
@@ -2812,7 +2814,7 @@
               \token_if_eq_meaning:NNTF #2 \scan_stop:
                 { \exp_stop_f: }
                 {
-                  \__kernel_msg_expandable_error:nnn
+                  \msg_expandable_error:nnn
                     { kernel } { e-type }
                     { \unexpanded missing~brace }
                   { }
@@ -2980,7 +2982,7 @@
 \cs_new_protected:Npn \__cs_generate_variant:nnNN #1#2#3#4
   {
     \if_meaning:w \c_false_bool #3
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \exp_after:wN \__cs_use_none_delimit_by_q_recursion_stop:w
     \fi:
@@ -3065,7 +3067,7 @@
     \exp_not:n
       {
         \s__cs_mark
-        \__kernel_msg_error:nnxx { kernel } { variant-too-long }
+        \msg_error:nnxx { kernel } { variant-too-long }
           {#5} { \token_to_str:N #3 }
         \use_none:nnn
         \s__cs_stop
@@ -3080,7 +3082,7 @@
     \exp_not:n
       {
         \s__cs_mark
-        \__kernel_msg_error:nnxxxx { kernel } { invalid-variant }
+        \msg_error:nnxxxx { kernel } { invalid-variant }
           {#7} { \token_to_str:N #5 } {#1} {#2}
         \use_none:nnn
         \s__cs_stop
@@ -3094,7 +3096,7 @@
     #3 \s__cs_stop #4 #5 {#6} {#7}
     \exp_not:n
       {
-        \__kernel_msg_error:nnxxxx
+        \msg_error:nnxxxx
           { kernel } { deprecated-variant }
           {#7} { \token_to_str:N #5 } {#1} {#2}
       }
@@ -3254,7 +3256,7 @@
 \cs_new_protected:Npn \__cs_generate_variant:nnNnn #1#2#3#4#5
   {
     \if_meaning:w \c_false_bool #3
-      \__kernel_msg_error:nnx { kernel } { missing-colon }
+      \msg_error:nnx { kernel } { missing-colon }
         { \token_to_str:c {#1} }
       \__cs_use_i_delimit_by_s_stop:nw
     \fi:
@@ -3274,7 +3276,7 @@
       \cs_if_exist_use:cTF { __cs_generate_variant_#1_form:nnn }
         { {#3} {#4} {#5} }
         {
-          \__kernel_msg_error:nnxx
+          \msg_error:nnxx
             { kernel } { conditional-form-unknown }
             {#1} { \token_to_str:c { #3 : #4 } }
         }
@@ -3297,7 +3299,7 @@
           {
             \str_if_in:nnF { NnpcofeVvx } {####1}
               {
-                \__kernel_msg_error:nnnn { kernel } { invalid-exp-args }
+                \msg_error:nnnn { kernel } { invalid-exp-args }
                   {####1} {##1}
                 \str_map_break:n { \use_none:nn }
               }
@@ -3464,7 +3466,7 @@
 \cs_new_protected:Npn \__quark_new_test_aux:Nn #1 #2
   {
     \if_meaning:w \q_nil #2 \q_nil
-      \__kernel_msg_error:nnx { quark } { invalid-function }
+      \msg_error:nnx { quark } { invalid-function }
         { \token_to_str:N #1 }
     \else:
       \__quark_new_test:Nccn #1
@@ -3488,11 +3490,11 @@
 \cs_new_protected:Npn \__quark_new_conditional:Nnnn #1#2#3#4
   {
     \if_meaning:w \q_nil #2 \q_nil
-      \__kernel_msg_error:nnx { quark } { invalid-function }
+      \msg_error:nnx { quark } { invalid-function }
         { \token_to_str:N #1 }
     \else:
       \if_meaning:w \q_nil #3 \q_nil
-        \__kernel_msg_error:nnx { quark } { invalid-function }
+        \msg_error:nnx { quark } { invalid-function }
           { \token_to_str:N #1 }
       \else:
         \exp_last_unbraced:Nf \__quark_new_test_aux:nnNNnnnn
@@ -3507,7 +3509,7 @@
   {
     \cs_if_exist_use:cTF { __quark_new_#5_#2:Nnnn } { #4 }
       {
-        \__kernel_msg_error:nnxx { quark } { invalid-function }
+        \msg_error:nnxx { quark } { invalid-function }
           { \token_to_str:N #4 } {#2}
         \use_none:nnn
       }
@@ -3636,7 +3638,7 @@
   {
     \tl_if_in:NnTF \g__scan_marks_tl { #1 }
       {
-        \__kernel_msg_error:nnx { scanmark } { already-defined }
+        \msg_error:nnx { scanmark } { already-defined }
           { \token_to_str:N #1 }
       }
       {
@@ -3949,7 +3951,7 @@
   {
     \tl_if_empty:nTF {#6}
       {
-        \__kernel_msg_error:nnx { kernel } { empty-search-pattern }
+        \msg_error:nnx { kernel } { empty-search-pattern }
           { \tl_to_str:n {#7} }
       }
       {
@@ -4269,7 +4271,7 @@
   {
     \tl_if_exist:NTF #1 {#1}
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { bad-variable } {#1}
       }
   }
@@ -4773,7 +4775,7 @@
               { \token_to_str:N #2 = \__kernel_exp_not:w \exp_after:wN {#2} }
           }
           {
-            \__kernel_msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nnxxx { kernel } { bad-type }
               { \token_to_str:N #2 } { \token_to_meaning:N #2 } { tl }
           }
       }
@@ -4806,13 +4808,13 @@
             \tl_if_eq:NNTF #1 \l__tl_internal_a_tl
               {#4}
               {
-                \__kernel_msg_error:nnxxxx { kernel } { bad-type }
+                \msg_error:nnxxxx { kernel } { bad-type }
                   { \token_to_str:N #1 } { \tl_to_str:N #1 }
                   {#2} { \tl_to_str:N \l__tl_internal_a_tl }
               }
           }
           {
-            \__kernel_msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nnxxx { kernel } { bad-type }
               { \token_to_str:N #1 } { \token_to_meaning:N #1 } {#2}
           }
       }
@@ -4901,7 +4903,7 @@
   {
     \tl_if_empty:nTF {#4}
       {
-        \__kernel_msg_error:nnx { kernel } { empty-search-pattern } {#5}
+        \msg_error:nnx { kernel } { empty-search-pattern } {#5}
       }
       {
         \use:x
@@ -5483,7 +5485,7 @@
 \scan_new:N \s__seq_stop
 \cs_new:Npn \__seq_item:n
   {
-    \__kernel_msg_expandable_error:nn { seq } { misused }
+    \msg_expandable_error:nn { seq } { misused }
     \use_none:n
   }
 \tl_new:N \l__seq_internal_a_tl
@@ -5711,7 +5713,7 @@
       {
         \int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int
           {
-            \__kernel_msg_error:nnx { seq } { shuffle-too-large }
+            \msg_error:nnx { seq } { shuffle-too-large }
               { \token_to_str:N #2 }
           }
           {
@@ -5742,7 +5744,7 @@
   {
     \cs_new_protected:Npn \seq_shuffle:N #1
       {
-        \__kernel_msg_error:nnn { kernel } { fp-no-random }
+        \msg_error:nnn { kernel } { fp-no-random }
           { \seq_shuffle:N #1 }
       }
     \cs_new_eq:NN \seq_gshuffle:N \seq_shuffle:N
@@ -6102,7 +6104,7 @@
           }
       }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { bad-variable } {#1}
       }
   }
@@ -6153,9 +6155,9 @@
 \prg_new_eq_conditional:NNn \seq_pop:cN  \seq_pop_left:cN  { T , F , TF }
 \prg_new_eq_conditional:NNn \seq_gpop:NN \seq_gpop_left:NN { T , F , TF }
 \prg_new_eq_conditional:NNn \seq_gpop:cN \seq_gpop_left:cN { T , F , TF }
-\cs_new_protected:Npn \seq_show:N { \__seq_show:NN \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \seq_show:N { \__seq_show:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \seq_show:N { c }
-\cs_new_protected:Npn \seq_log:N { \__seq_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \seq_log:N { \__seq_show:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \seq_log:N { c }
 \cs_new_protected:Npn \__seq_show:NN #1#2
   {
@@ -6385,7 +6387,7 @@
   {
     { }
     \c_zero_int \fi:
-    \__kernel_msg_expandable_error:nnn
+    \msg_expandable_error:nnn
       { kernel } { unknown-comparison } {#1}
     \prg_return_false:
   }
@@ -6566,7 +6568,7 @@
       {
         \int_compare:nNnTF {#2} = \c_zero_int
           {
-            \__kernel_msg_expandable_error:nnn
+            \msg_expandable_error:nnn
               { kernel } { zero-step } {#4}
             \prg_break:
           }
@@ -7135,7 +7137,7 @@
             \c_false_bool { \exp_args:Nx #1 { \token_to_str:N #2 = false } }
           }
           {
-            \__kernel_msg_error:nnxxx { kernel } { bad-type }
+            \msg_error:nnxxx { kernel } { bad-type }
               { \token_to_str:N #2 } { \token_to_meaning:N #2 } { bool }
           }
       }
@@ -7341,7 +7343,7 @@
 \cs_new:cpn { __prg_replicate_first_-:n } #1
   {
     \exp_end:
-    \__kernel_msg_expandable_error:nn { prg } { negative-replication }
+    \msg_expandable_error:nn { prg } { negative-replication }
   }
 \cs_new:cpn { __prg_replicate_first_0:n } #1 { \exp_end: }
 \cs_new:cpn { __prg_replicate_first_1:n } #1 { \exp_end: #1 }
@@ -7464,7 +7466,7 @@
     \str_if_exist:NTF \c_sys_backend_str
       {
         \str_if_eq:VnF \c_sys_backend_str {#1}
-          { \__kernel_msg_error:nn { sys } { backend-set } }
+          { \msg_error:nn { sys } { backend-set } }
       }
       {
         \tl_if_blank:nF {#1}
@@ -7486,7 +7488,7 @@
             { xetex }     { }
           }
           {
-            \__kernel_msg_error:nnxx { sys } { wrong-backend }
+            \msg_error:nnxx { sys } { wrong-backend }
               #1 { xetex }
             \tl_gset:Nn #1 { xetex }
           }
@@ -7505,7 +7507,7 @@
                   { \str_if_eq_p:Vn #1 { luatex } }
                   { \str_if_eq_p:Vn #1 { pdftex } }
                   {
-                    \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                    \msg_error:nnxx { sys } { wrong-backend }
                       #1 { \sys_if_engine_luatex:TF { luatex } { pdftex } }
                     \sys_if_engine_luatex:TF
                       { \tl_gset:Nn #1 { luatex } }
@@ -7521,7 +7523,7 @@
                 { dvisvgm }  { }
               }
               {
-                \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                \msg_error:nnxx { sys } { wrong-backend }
                   #1 { dvips }
                 \tl_gset:Nn #1 { dvips }
               }
@@ -7559,7 +7561,7 @@
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \__kernel_msg_error:nnx
+        \msg_error:nnx
           { kernel } { quote-in-shell } {#1}
         \prg_return_false:
       }
@@ -7656,7 +7658,7 @@
         \cs_new:Npn \sys_rand_seed:
           {
             \int_value:w
-            \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+            \msg_expandable_error:nnn { kernel } { fp-no-random }
               { \sys_rand_seed: }
             \c_zero_int
           }
@@ -7672,7 +7674,7 @@
       {
         \cs_new_protected:Npn \sys_gset_rand_seed:n #1
           {
-            \__kernel_msg_error:nnn { kernel } { fp-no-random }
+            \msg_error:nnn { kernel } { fp-no-random }
               { \sys_gset_rand_seed:n {#1} }
           }
       }
@@ -7689,13 +7691,13 @@
           { \int_value:w \tex_elapsedtime:D }
       }
       {
-        \__kernel_msg_new:nnnn { kernel } { no-elapsed-time }
+        \msg_new:nnnn { kernel } { no-elapsed-time }
           { No~clock~detected~for~#1. }
           { The~current~engine~provides~no~way~to~access~the~system~time. }
         \cs_new:Npn \sys_timer:
           {
             \int_value:w
-            \__kernel_msg_expandable_error:nnn { kernel } { no-elapsed-time }
+            \msg_expandable_error:nnn { kernel } { no-elapsed-time }
               { \sys_timer: }
             \c_zero_int
           }
@@ -8324,7 +8326,7 @@
           }
       }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { bad-variable } {#1}
       }
   }
@@ -8443,9 +8445,9 @@
       { \clist_item:Nn #1 { \int_rand:nn { 1 } { \clist_count:N #1 } } }
   }
 \cs_generate_variant:Nn \clist_rand_item:N { c }
-\cs_new_protected:Npn \clist_show:N { \__clist_show:NN \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \clist_show:N { \__clist_show:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \clist_show:N { c }
-\cs_new_protected:Npn \clist_log:N { \__clist_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_log:N { \__clist_show:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \clist_log:N { c }
 \cs_new_protected:Npn \__clist_show:NN #1#2
   {
@@ -8460,13 +8462,13 @@
               { } { }
           }
           {
-            \__kernel_msg_error:nnxx { kernel } { non-clist }
+            \msg_error:nnxx { clist } { non-clist }
               { \token_to_str:N #2 } { \tl_to_str:N #2 }
           }
       }
   }
-\cs_new_protected:Npn \clist_show:n { \__clist_show:Nn \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \clist_log:n { \__clist_show:Nn \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_show:n { \__clist_show:Nn \msg_show:nnxxxx }
+\cs_new_protected:Npn \clist_log:n { \__clist_show:Nn \msg_log:nnxxxx }
 \cs_new_protected:Npn \__clist_show:Nn #1#2
   {
     #1 { clist } { show }
@@ -8611,9 +8613,9 @@
   {
     \if_int_compare:w #2 = 10 \exp_stop_f:
       \if_int_compare:w #1 =  \c_zero_int
-        \__kernel_msg_expandable_error:nn { char } { null-space }
+        \msg_expandable_error:nn { char } { null-space }
       \else:
-        \__kernel_msg_expandable_error:nn { char } { space }
+        \msg_expandable_error:nn { char } { space }
       \fi:
     \else:
       \if_int_odd:w 0
@@ -8621,13 +8623,13 @@
           \if_int_compare:w #2 = 5  \exp_stop_f: 1 \fi:
           \if_int_compare:w #2 = 9  \exp_stop_f: 1 \fi:
           \if_int_compare:w #2 > 13 \exp_stop_f: 1 \fi: \exp_stop_f:
-        \__kernel_msg_expandable_error:nn { char }
+        \msg_expandable_error:nn { char }
           { invalid-catcode }
       \else:
         \if_int_odd:w 0
           \if_int_compare:w #1 < \c_zero_int 1 \fi:
           \if_int_compare:w #1 > \c_max_char_int 1 \fi: \exp_stop_f:
-          \__kernel_msg_expandable_error:nn { char }
+          \msg_expandable_error:nn { char }
             { out-of-range }
         \else:
           \__char_generate_aux:nnw {#1} {#2}
@@ -8657,7 +8659,7 @@
             {
               #3
               \if_int_compare:w #2 = 13 \exp_stop_f:
-                \__kernel_msg_expandable_error:nn { char } { active }
+                \msg_expandable_error:nn { char } { active }
               \else:
                 \__char_generate_auxii:nnw {#1} {#2}
               \fi:
@@ -9442,7 +9444,7 @@
 %% File: l3prop.dtx
 \scan_new:N \s__prop
 \cs_new:Npn \__prop_pair:wn #1 \s__prop #2
-  { \__kernel_msg_expandable_error:nn { prop } { misused } }
+  { \msg_expandable_error:nn { prop } { misused } }
 \tl_new:N \l__prop_internal_tl
 \tl_const:Nn \c_empty_prop { \s__prop }
 \scan_new:N \s__prop_mark
@@ -9564,7 +9566,7 @@
       {
         \tl_if_empty:nF { #3 #1 #2 }
           {
-            \__kernel_msg_error:nnx { prop } { prop-keyval }
+            \msg_error:nnx { prop } { prop-keyval }
               { \exp_not:o {#4} }
           }
       }
@@ -9809,9 +9811,9 @@
   { \prg_map_break:Nn \prop_map_break: { } }
 \cs_new:Npn \prop_map_break:n
   { \prg_map_break:Nn \prop_map_break: }
-\cs_new_protected:Npn \prop_show:N { \__prop_show:NN \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \prop_show:N { \__prop_show:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \prop_show:N { c }
-\cs_new_protected:Npn \prop_log:N { \__prop_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \prop_log:N { \__prop_show:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \prop_log:N { c }
 \cs_new_protected:Npn \__prop_show:NN #1#2
   {
@@ -9852,7 +9854,7 @@
   {
     \msg_if_exist:nnT {#1} {#2}
       {
-        \__kernel_msg_error:nnxx { msg } { already-defined }
+        \msg_error:nnxx { msg } { already-defined }
           {#1} {#2}
       }
   }
@@ -10118,6 +10120,9 @@
         \c__msg_critical_text_tl
       \tex_endinput:D
     }
+  \cs_undefine:N \msg_error:nnxx
+  \cs_undefine:N \msg_error:nnx
+  \cs_undefine:N \msg_error:nn
   \__msg_class_new:nn { error }
     {
       \__msg_interrupt:NnnnN
@@ -10125,47 +10130,19 @@
         { {#3} {#4} {#5} {#6} }
         \c_empty_tl
     }
-  \__msg_class_new:nn { warning }
+  \cs_new_protected:Npn \__msg_info_aux:NNnnnnnn #1#2#3#4#5#6#7#8
     {
-      \str_set:Nx \l__msg_text_str { \msg_warning_text:n {#1} }
-      \str_set:Nx \l__msg_name_str { \msg_module_name:n {#1} }
-      \iow_term:n { }
+      \str_set:Nx \l__msg_text_str { #2 {#3} }
+      \str_set:Nx \l__msg_name_str { \msg_module_name:n {#3} }
+      #1 { }
       \iow_wrap:nxnN
         {
           \l__msg_text_str : ~
-          \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6}
+          \use:c { \c__msg_text_prefix_tl #3 / #4 } {#5} {#6} {#7} {#8}
         }
         {
           ( \l__msg_name_str )
           \prg_replicate:nn
-            {
-                \str_count:N \l__msg_text_str
-              - \str_count:N \l__msg_name_str
-            }
-            { ~ }
-        }
-        { } \iow_term:n
-      \iow_term:n { }
-    }
-  \__msg_class_new:nn { note }
-    {
-      \__msg_info_aux:Nnn \iow_term:n {#1}
-        { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
-    }
-  \__msg_class_new:nn { info }
-    {
-      \__msg_info_aux:Nnn \iow_log:n {#1}
-        { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
-    }
-  \cs_new_protected:Npn \__msg_info_aux:Nnn #1#2#3
-    {
-      \str_set:Nx \l__msg_text_str { \msg_info_text:n {#2} }
-      \str_set:Nx \l__msg_name_str { \msg_module_name:n {#2} }
-      #1 { }
-      \iow_wrap:nxnN { \l__msg_text_str : ~ #3 }
-        {
-          ( \l__msg_name_str )
-          \prg_replicate:nn
              {
                  \str_count:N \l__msg_text_str
                - \str_count:N \l__msg_name_str
@@ -10175,6 +10152,21 @@
          { } #1
        #1 { }
     }
+  \__msg_class_new:nn { warning }
+    {
+      \__msg_info_aux:NNnnnnnn \iow_term:n \msg_warning_text:n
+        {#1} {#2} {#3} {#4} {#5} {#6}
+    }
+  \__msg_class_new:nn { note }
+    {
+      \__msg_info_aux:NNnnnnnn \iow_term:n \msg_info_text:n
+        {#1} {#2} {#3} {#4} {#5} {#6}
+    }
+  \__msg_class_new:nn { info }
+    {
+      \__msg_info_aux:NNnnnnnn \iow_log:n \msg_info_text:n
+        {#1} {#2} {#3} {#4} {#5} {#6}
+    }
   \__msg_class_new:nn { log }
     {
       \iow_wrap:nnnN
@@ -10226,7 +10218,7 @@
 \cs_new:Npn \__msg_class_chk_exist:nT #1
   {
     \cs_if_free:cTF { __msg_ #1 _code:nnnnnn }
-      { \__kernel_msg_error:nnx { msg } { class-unknown } {#1} }
+      { \msg_error:nnx { msg } { class-unknown } {#1} }
   }
 \tl_new:N \l__msg_class_tl
 \tl_new:N \l__msg_current_class_tl
@@ -10252,7 +10244,7 @@
             \__msg_use_redirect_name:n { #2 / #3 }
           }
       }
-      { \__kernel_msg_error:nnxx { msg } { unknown } {#2} {#3} }
+      { \msg_error:nnxx { msg } { unknown } {#2} {#3} }
     \cs_if_exist_use:N \conditionally at traceon
   }
 \cs_new_protected:Npn \__msg_use_code: { }
@@ -10340,7 +10332,7 @@
             \tl_if_eq:NNTF \l__msg_class_tl \l__msg_current_class_tl
               {
                 \prop_put:cnn { l__msg_redirect_ #2 _prop } {#3} {#2}
-                \__kernel_msg_warning:nnxxxx
+                \msg_warning:nnxxxx
                   { msg } { redirect-loop }
                   { \seq_item:Nn \l__msg_class_loop_seq { 1 } }
                   { \seq_item:Nn \l__msg_class_loop_seq { 2 } }
@@ -10357,71 +10349,29 @@
   }
 \cs_generate_variant:Nn \__msg_redirect_loop_chk:nnn { o }
 \cs_new:Npn \__msg_redirect_loop_list:n #1 { {#1} ~ => ~ }
-\cs_new_protected:Npn \__kernel_msg_new:nnnn #1#2
-  { \msg_new:nnnn { LaTeX } { #1 / #2 } }
-\cs_new_protected:Npn \__kernel_msg_new:nnn #1#2
-  { \msg_new:nnn { LaTeX } { #1 / #2 } }
-\cs_new_protected:Npn \__kernel_msg_set:nnnn #1#2
-  { \msg_set:nnnn { LaTeX } { #1 / #2 } }
-\cs_new_protected:Npn \__kernel_msg_set:nnn #1#2
-  { \msg_set:nnn { LaTeX } { #1 / #2 } }
-\group_begin:
-  \cs_set_protected:Npn \__msg_kernel_class_new:nN #1
-    { \__msg_kernel_class_new_aux:nN { __kernel_msg_ #1 } }
-  \cs_set_protected:Npn \__msg_kernel_class_new_aux:nN #1#2
-    {
-      \cs_new_protected:cpn { #1 :nnnnnn } ##1##2##3##4##5##6
-        {
-          \use:x
-            {
-              \exp_not:n { #2 { LaTeX } { ##1 / ##2 } }
-                { \tl_to_str:n {##3} } { \tl_to_str:n {##4} }
-                { \tl_to_str:n {##5} } { \tl_to_str:n {##6} }
-            }
-        }
-      \cs_new_protected:cpx { #1 :nnnnn } ##1##2##3##4##5
-        { \exp_not:c { #1 :nnnnnn } {##1} {##2} {##3} {##4} {##5} { } }
-      \cs_new_protected:cpx { #1 :nnnn } ##1##2##3##4
-        { \exp_not:c { #1 :nnnnnn } {##1} {##2} {##3} {##4} { } { } }
-      \cs_new_protected:cpx { #1 :nnn } ##1##2##3
-        { \exp_not:c { #1 :nnnnnn } {##1} {##2} {##3} { } { } { } }
-      \cs_new_protected:cpx { #1 :nn } ##1##2
-        { \exp_not:c { #1 :nnnnnn } {##1} {##2} { } { } { } { } }
-      \cs_new_protected:cpx { #1 :nnxxxx } ##1##2##3##4##5##6
-        {
-          \use:x
-            {
-              \exp_not:N \exp_not:n
-                { \exp_not:c { #1 :nnnnnn } {##1} {##2} }
-                {##3} {##4} {##5} {##6}
-            }
-        }
-      \cs_new_protected:cpx { #1 :nnxxx } ##1##2##3##4##5
-        { \exp_not:c { #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { } }
-      \cs_new_protected:cpx { #1 :nnxx } ##1##2##3##4
-        { \exp_not:c { #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { } }
-      \cs_new_protected:cpx { #1 :nnx } ##1##2##3
-        { \exp_not:c { #1 :nnxxxx } {##1} {##2} {##3} { } { } { } }
-    }
-  \__msg_kernel_class_new:nN { fatal } \__msg_fatal_code:nnnnnn
-  \__msg_kernel_class_new:nN { critical } \__msg_critical_code:nnnnnn
-  \cs_undefine:N \__kernel_msg_error:nnxx
-  \cs_undefine:N \__kernel_msg_error:nnx
-  \cs_undefine:N \__kernel_msg_error:nn
-  \__msg_kernel_class_new:nN { error } \__msg_error_code:nnnnnn
-  \__msg_kernel_class_new:nN { warning } \msg_warning:nnxxxx
-  \__msg_kernel_class_new:nN { info } \msg_info:nnxxxx
-\cs_new_protected:Npn \__kernel_msg_log:nnnnnn #1
-  { \msg_log:nnnnnn { LaTeX / #1 } }
-\cs_generate_variant:Nn \__kernel_msg_log:nnnnnn { nnxxxx }
-\cs_new_protected:Npn \__kernel_msg_term:nnnnnn #1
-  { \msg_term:nnnnnn { LaTeX / #1 } }
-\cs_generate_variant:Nn \__kernel_msg_term:nnnnnn { nnxxxx }
-\cs_new_protected:Npn \__kernel_msg_show:nnnnnn #1
-  { \msg_show:nnnnnn { LaTeX / #1 } }
-\cs_generate_variant:Nn \__kernel_msg_show:nnnnnn { nnxxxx }
-\group_end:
-\__kernel_msg_new:nnnn { msg } { already-defined }
+\cs_new_protected:Npn \__kernel_msg_new:nnnn #1
+  { \msg_new:nnnn { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_new:nnn #1
+  { \msg_new:nnn { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_info:nnxx #1
+  { \msg_info:nnxx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nnx #1
+  { \msg_warning:nnx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nnxx #1
+  { \msg_warning:nnxx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nnx #1
+  { \msg_error:nnx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nnxx #1
+  { \msg_error:nnxx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nnxxx #1
+  { \msg_error:nnxxx { LaTeX / #1 } }
+\cs_new:Npn \__kernel_msg_expandable_error:nnn #1
+  { \msg_expandable_error:nnn { LaTeX / #1 } }
+\cs_new:Npn \__kernel_msg_expandable_error:nnf #1
+  { \msg_expandable_error:nnf { LaTeX / #1 } }
+\cs_new:Npn \__kernel_msg_expandable_error:nnff #1
+  { \msg_expandable_error:nnff { LaTeX / #1 } }
+\msg_new:nnnn { msg } { already-defined }
   { Message~'#2'~for~module~'#1'~already~defined. }
   {
     \c__msg_coding_error_text_tl
@@ -10429,7 +10379,7 @@
     by~the~module~'#1':~this~message~already~exists.
     \c__msg_return_text_tl
   }
-\__kernel_msg_new:nnnn { msg } { unknown }
+\msg_new:nnnn { msg } { unknown }
   { Unknown~message~'#2'~for~module~'#1'. }
   {
     \c__msg_coding_error_text_tl
@@ -10437,7 +10387,7 @@
     by~the~module~'#1':~this~message~does~not~exist.
     \c__msg_return_text_tl
   }
-\__kernel_msg_new:nnnn { msg } { class-unknown }
+\msg_new:nnnn { msg } { class-unknown }
   { Unknown~message~class~'#1'. }
   {
     LaTeX~has~been~asked~to~redirect~messages~to~a~class~'#1':\\
@@ -10444,7 +10394,7 @@
     this~was~never~defined.
     \c__msg_return_text_tl
   }
-\__kernel_msg_new:nnnn { msg } { redirect-loop }
+\msg_new:nnnn { msg } { redirect-loop }
   {
     Message~redirection~loop~caused~by~ {#1} ~=>~ {#2}
     \tl_if_empty:nF {#3} { ~for~module~' \use_none:n #3 ' } .
@@ -10455,7 +10405,7 @@
     created~an~infinite~loop\\\\
     \iow_indent:n { #4 \\\\ }
   }
-\__kernel_msg_new:nnnn { kernel } { bad-number-of-arguments }
+\msg_new:nnnn { kernel } { bad-number-of-arguments }
   { Function~'#1'~cannot~be~defined~with~#2~arguments. }
   {
     \c__msg_coding_error_text_tl
@@ -10463,7 +10413,7 @@
     #2~arguments.~
     TeX~allows~between~0~and~9~arguments~for~a~single~function.
   }
-\__kernel_msg_new:nnnn { kernel } { command-already-defined }
+\msg_new:nnnn { kernel } { command-already-defined }
   { Control~sequence~#1~already~defined. }
   {
     \c__msg_coding_error_text_tl
@@ -10472,7 +10422,7 @@
     The~current~meaning~is:\\
     \ \ #2
   }
-\__kernel_msg_new:nnnn { kernel } { command-not-defined }
+\msg_new:nnnn { kernel } { command-not-defined }
   { Control~sequence~#1~undefined. }
   {
     \c__msg_coding_error_text_tl
@@ -10479,7 +10429,7 @@
     LaTeX~has~been~asked~to~use~a~control~sequence~'#1':\\
     this~has~not~been~defined~yet.
   }
-\__kernel_msg_new:nnnn { kernel } { empty-search-pattern }
+\msg_new:nnnn { kernel } { empty-search-pattern }
   { Empty~search~pattern. }
   {
     \c__msg_coding_error_text_tl
@@ -10486,14 +10436,7 @@
     LaTeX~has~been~asked~to~replace~an~empty~pattern~by~'#1':~that~
     would~lead~to~an~infinite~loop!
   }
-\__kernel_msg_new:nnnn { kernel } { out-of-registers }
-  { No~room~for~a~new~#1. }
-  {
-    TeX~only~supports~\int_use:N \c_max_register_int \ %
-    of~each~type.~All~the~#1~registers~have~been~used.~
-    This~run~will~be~aborted~now.
-  }
-\__kernel_msg_new:nnnn { kernel } { non-base-function }
+\msg_new:nnnn { kernel } { non-base-function }
   { Function~'#1'~is~not~a~base~function }
   {
     \c__msg_coding_error_text_tl
@@ -10503,7 +10446,7 @@
     To~define~variants~use~\iow_char:N\\cs_generate_variant:Nn~
     and~to~define~other~functions~use~\iow_char:N\\cs_new:Npn.
   }
-\__kernel_msg_new:nnnn { kernel } { missing-colon }
+\msg_new:nnnn { kernel } { missing-colon }
   { Function~'#1'~contains~no~':'. }
   {
     \c__msg_coding_error_text_tl
@@ -10512,7 +10455,7 @@
     needed~when~defining~conditionals~or~variants,~or~when~building~a~
     parameter~text~from~the~number~of~arguments~of~the~function.
   }
-\__kernel_msg_new:nnnn { kernel } { overflow }
+\msg_new:nnnn { kernel } { overflow }
   { Integers~larger~than~2^{30}-1~cannot~be~stored~in~arrays. }
   {
     An~attempt~was~made~to~store~#3~
@@ -10519,13 +10462,13 @@
     \tl_if_empty:nF {#2} { at~position~#2~ } in~the~array~'#1'.~
     The~largest~allowed~value~#4~will~be~used~instead.
   }
-\__kernel_msg_new:nnnn { kernel } { out-of-bounds }
+\msg_new:nnnn { kernel } { out-of-bounds }
   { Access~to~an~entry~beyond~an~array's~bounds. }
   {
     An~attempt~was~made~to~access~or~store~data~at~position~#2~of~the~
     array~'#1',~but~this~array~has~entries~at~positions~from~1~to~#3.
   }
-\__kernel_msg_new:nnnn { kernel } { protected-predicate }
+\msg_new:nnnn { kernel } { protected-predicate }
   { Predicate~'#1'~must~be~expandable. }
   {
     \c__msg_coding_error_text_tl
@@ -10532,9 +10475,9 @@
     LaTeX~has~been~asked~to~define~'#1'~as~a~protected~predicate.~
     Only~expandable~tests~can~have~a~predicate~version.
   }
-\__kernel_msg_new:nnn { kernel } { randint-backward-range }
-  { Bounds~ordered~backwards~in~\iow_char:N\\int_rand:nn~{#1}~{#2}. }
-\__kernel_msg_new:nnnn { kernel } { conditional-form-unknown }
+\msg_new:nnn { kernel } { randint-backward-range }
+  { Wrong~order~of~bounds~in~\iow_char:N\\int_rand:nn{#1}{#2}. }
+\msg_new:nnnn { kernel } { conditional-form-unknown }
   { Conditional~form~'#1'~for~function~'#2'~unknown. }
   {
     \c__msg_coding_error_text_tl
@@ -10541,7 +10484,7 @@
     LaTeX~has~been~asked~to~define~the~conditional~form~'#1'~of~
     the~function~'#2',~but~only~'TF',~'T',~'F',~and~'p'~forms~exist.
   }
-\__kernel_msg_new:nnnn { kernel } { variant-too-long }
+\msg_new:nnnn { kernel } { variant-too-long }
   { Variant~form~'#1'~longer~than~base~signature~of~'#2'. }
   {
     \c__msg_coding_error_text_tl
@@ -10549,7 +10492,7 @@
     with~a~signature~starting~with~'#1',~but~that~is~longer~than~
     the~signature~(part~after~the~colon)~of~'#2'.
   }
-\__kernel_msg_new:nnnn { kernel } { invalid-variant }
+\msg_new:nnnn { kernel } { invalid-variant }
   { Variant~form~'#1'~invalid~for~base~form~'#2'. }
   {
     \c__msg_coding_error_text_tl
@@ -10557,7 +10500,7 @@
     with~a~signature~starting~with~'#1',~but~cannot~change~an~argument~
     from~type~'#3'~to~type~'#4'.
   }
-\__kernel_msg_new:nnnn { kernel } { invalid-exp-args }
+\msg_new:nnnn { kernel } { invalid-exp-args }
   { Invalid~variant~specifier~'#1'~in~'#2'. }
   {
     \c__msg_coding_error_text_tl
@@ -10565,7 +10508,7 @@
     function~with~signature~'N#2'~but~'#1'~is~not~a~valid~argument~
     specifier.
   }
-\__kernel_msg_new:nnn { kernel } { deprecated-variant }
+\msg_new:nnn { kernel } { deprecated-variant }
   {
     Variant~form~'#1'~deprecated~for~base~form~'#2'.~
     One~should~not~change~an~argument~from~type~'#3'~to~type~'#4'
@@ -10576,20 +10519,20 @@
         {#4} { :~base~form~is~already~a~variant. }
       } { . }
   }
-\__kernel_msg_new:nnn { char } { active }
+\msg_new:nnn { char } { active }
   { Cannot~generate~active~chars. }
-\__kernel_msg_new:nnn { char } { invalid-catcode }
+\msg_new:nnn { char } { invalid-catcode }
   { Invalid~catcode~for~char~generation. }
-\__kernel_msg_new:nnn { char } { null-space }
+\msg_new:nnn { char } { null-space }
   { Cannot~generate~null~char~as~a~space. }
-\__kernel_msg_new:nnn { char } { out-of-range }
+\msg_new:nnn { char } { out-of-range }
   { Charcode~requested~out~of~engine~range. }
-\__kernel_msg_new:nnn { char } { space }
+\msg_new:nnn { char } { space }
   { Cannot~generate~space~chars. }
-\__kernel_msg_new:nnnn { ior } { quote-in-shell }
+\msg_new:nnnn { ior } { quote-in-shell }
   { Quotes~in~shell~command~'#1'. }
   { Shell~commands~cannot~contain~quotes~("). }
-\__kernel_msg_new:nnnn { keys } { no-property }
+\msg_new:nnnn { keys } { no-property }
   { No~property~given~in~definition~of~key~'#1'. }
   {
     \c__msg_coding_error_text_tl
@@ -10598,13 +10541,13 @@
     \iow_indent:n { #1 .<property> } \\ \\
     LaTeX~did~not~find~a~'.'~to~indicate~the~start~of~a~property.
   }
-\__kernel_msg_new:nnnn { keys } { property-boolean-values-only }
+\msg_new:nnnn { keys } { property-boolean-values-only }
   { The~property~'#1'~accepts~boolean~values~only. }
   {
     \c__msg_coding_error_text_tl
     The~property~'#1'~only~accepts~the~values~'true'~and~'false'.
   }
-\__kernel_msg_new:nnnn { keys } { property-requires-value }
+\msg_new:nnnn { keys } { property-requires-value }
   { The~property~'#1'~requires~a~value. }
   {
     \c__msg_coding_error_text_tl
@@ -10611,7 +10554,7 @@
     LaTeX~was~asked~to~set~property~'#1'~for~key~'#2'.\\
     No~value~was~given~for~the~property,~and~one~is~required.
   }
-\__kernel_msg_new:nnnn { keys } { property-unknown }
+\msg_new:nnnn { keys } { property-unknown }
   { The~key~property~'#1'~is~unknown. }
   {
     \c__msg_coding_error_text_tl
@@ -10618,7 +10561,7 @@
     LaTeX~has~been~asked~to~set~the~property~'#1'~for~key~'#2':~
     this~property~is~not~defined.
   }
-\__kernel_msg_new:nnnn { quark } { invalid-function }
+\msg_new:nnnn { quark } { invalid-function }
   { Quark~test~function~'#1'~is~invalid. }
   {
     \c__msg_coding_error_text_tl
@@ -10630,7 +10573,7 @@
   }
 \__kernel_msg_new:nnn { quark } { invalid }
   { Invalid~quark~variable~'#1'. }
-\__kernel_msg_new:nnnn { scanmark } { already-defined }
+\msg_new:nnnn { scanmark } { already-defined }
   { Scan~mark~#1~already~defined. }
   {
     \c__msg_coding_error_text_tl
@@ -10637,7 +10580,7 @@
     LaTeX~has~been~asked~to~create~a~new~scan~mark~'#1'~
     but~this~name~has~already~been~used~for~a~scan~mark.
   }
-\__kernel_msg_new:nnnn { seq } { shuffle-too-large }
+\msg_new:nnnn { seq } { shuffle-too-large }
   { The~sequence~#1~is~too~long~to~be~shuffled~by~TeX. }
   {
     TeX~has~ \int_eval:n { \c_max_register_int + 1 } ~
@@ -10645,7 +10588,7 @@
     \int_use:N \c_max_register_int \ items.~
     The~list~will~not~be~shuffled.
   }
-\__kernel_msg_new:nnnn { kernel } { variable-not-defined }
+\msg_new:nnnn { kernel } { variable-not-defined }
   { Variable~#1~undefined. }
   {
     \c__msg_coding_error_text_tl
@@ -10652,7 +10595,7 @@
     LaTeX~has~been~asked~to~show~a~variable~#1,~but~this~has~not~
     been~defined~yet.
   }
-\__kernel_msg_new:nnnn { kernel } { bad-type }
+\msg_new:nnnn { kernel } { bad-type }
   { Variable~'#1'~is~not~a~valid~#3. }
   {
     \c__msg_coding_error_text_tl
@@ -10668,7 +10611,7 @@
           { internal~structure:\\\\\iow_indent:n {#4} }
       }
   }
-\__kernel_msg_new:nnnn { kernel } { non-clist }
+\msg_new:nnnn { clist } { non-clist }
   { Variable~'#1'~is~not~a~valid~clist. }
   {
     \c__msg_coding_error_text_tl
@@ -10677,7 +10620,7 @@
     should~be~a~clist~variable,~but~it~includes~empty~or~blank~items~
     without~braces.
   }
-\__kernel_msg_new:nnnn { debug } { enable-debug }
+\msg_new:nnnn { debug } { enable-debug }
   { To~use~'#1'~set~the~'enable-debug'~option. }
   {
     The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
@@ -10686,28 +10629,28 @@
     'enable-debug',~'check-declarations'~or~'log-functions'~was~
     given~as~an~option:~see~the~main~expl3~documentation.
   }
-\__kernel_msg_new:nnn { kernel } { bad-exp-end-f }
+\msg_new:nnn { kernel } { bad-exp-end-f }
   { Misused~\exp_end_continue_f:w or~:nw }
-\__kernel_msg_new:nnn { kernel } { bad-variable }
+\msg_new:nnn { kernel } { bad-variable }
   { Erroneous~variable~#1 used! }
-\__kernel_msg_new:nnn { seq } { misused }
+\msg_new:nnn { seq } { misused }
   { A~sequence~was~misused. }
-\__kernel_msg_new:nnn { prop } { misused }
+\msg_new:nnn { prop } { misused }
   { A~property~list~was~misused. }
-\__kernel_msg_new:nnn { prg } { negative-replication }
+\msg_new:nnn { prg } { negative-replication }
   { Negative~argument~for~\iow_char:N\\prg_replicate:nn. }
-\__kernel_msg_new:nnn { prop } { prop-keyval }
+\msg_new:nnn { prop } { prop-keyval }
   { Missing/extra~'='~in~'#1'~(in~'..._keyval:Nn') }
-\__kernel_msg_new:nnn { kernel } { unknown-comparison }
-  { Relation~'#1'~unknown:~use~=,~<,~>,~==,~!=,~<=,~>=. }
-\__kernel_msg_new:nnn { kernel } { zero-step }
-  { Zero~step~size~for~step~function~#1. }
+\msg_new:nnn { kernel } { unknown-comparison }
+  { Relation~'#1'~not~among~=,<,>,==,!=,<=,>=. }
+\msg_new:nnn { kernel } { zero-step }
+  { Zero~step~size~for~function~#1. }
 \cs_if_exist:NF \tex_expanded:D
   {
-    \__kernel_msg_new:nnn { kernel } { e-type }
+    \msg_new:nnn { kernel } { e-type }
       { #1 ~ in~e-type~argument }
   }
-\__kernel_msg_new:nnn { clist } { show }
+\msg_new:nnn { clist } { show }
   {
     The~comma~list~ \tl_if_empty:nF {#1} { #1 ~ }
     \tl_if_empty:nTF {#2}
@@ -10714,9 +10657,9 @@
       { is~empty \\>~ . }
       { contains~the~items~(without~outer~braces): #2 . }
   }
-\__kernel_msg_new:nnn { intarray } { show }
+\msg_new:nnn { intarray } { show }
   { The~integer~array~#1~contains~#2~items: \\ #3 . }
-\__kernel_msg_new:nnn { prop } { show }
+\msg_new:nnn { prop } { show }
   {
     The~property~list~#1~
     \tl_if_empty:nTF {#2}
@@ -10723,7 +10666,7 @@
       { is~empty \\>~ . }
       { contains~the~pairs~(without~outer~braces): #2 . }
   }
-\__kernel_msg_new:nnn { seq } { show }
+\msg_new:nnn { seq } { show }
   {
     The~sequence~#1~
     \tl_if_empty:nTF {#2}
@@ -10730,7 +10673,7 @@
       { is~empty \\>~ . }
       { contains~the~items~(without~outer~braces): #2 . }
   }
-\__kernel_msg_new:nnn { kernel } { show-streams }
+\msg_new:nnn { kernel } { show-streams }
   {
     \tl_if_empty:nTF {#2} { No~ } { The~following~ }
     \str_case:nn {#1}
@@ -10741,75 +10684,33 @@
     streams~are~
     \tl_if_empty:nTF {#2} { open } { in~use: #2 . }
   }
-\__kernel_msg_new:nnnn { sys } { backend-set }
+\msg_new:nnnn { sys } { backend-set }
   { Backend~configuration~already~set. }
   {
     Run-time~backend~selection~may~only~be~carried~out~once~during~a~run.~
     This~second~attempt~to~set~them~will~be~ignored.
   }
-\__kernel_msg_new:nnnn { sys } { wrong-backend }
+\msg_new:nnnn { sys } { wrong-backend }
   { Backend~request~inconsistent~with~engine:~using~'#2'~backend. }
   {
     You~have~requested~backend~'#1',~but~this~is~not~suitable~for~use~with~the~
     active~engine.~LaTeX3~will~use~the~'#2'~backend~instead.
   }
-\group_begin:
-\cs_set_protected:Npn \__msg_tmp:w #1#2
+\cs_set_protected:Npn \__msg_tmp:w #1
   {
-    \cs_new:Npn \__msg_expandable_error:n ##1
+    \cs_new:Npn #1 ? { }
+    \cs_new:Npn \__msg_expandable_error:nn ##1##2
       {
-        \exp:w
         \exp_after:wN \exp_after:wN
-        \exp_after:wN \__msg_expandable_error:w
-        \exp_after:wN \exp_after:wN
-        \exp_after:wN \exp_end:
-        \use:n { #1 #2 ##1 } #2
+        \exp_after:wN \__msg_use_none_delimit_by_s_stop:w
+        \use:n { #1 ~ ! ~ ##2 : ~ ##1 } \s__msg_stop
       }
-    \cs_new:Npn \__msg_expandable_error:w ##1 #2 ##2 #2 {##1}
   }
-\exp_args:Ncx \__msg_tmp:w { LaTeX3~error: }
-  { \char_generate:nn { `\  } { 7 } }
-\group_end:
+\exp_args:Nc \__msg_tmp:w { ??? }
 \exp_args_generate:n { oooo }
-\cs_new:Npn \__kernel_msg_expandable_error:nnnnnn #1#2#3#4#5#6
-  {
-    \exp_args:Ne \__msg_expandable_error:n
-      {
-        \exp_args:Nc \exp_args:Noooo
-          { \c__msg_text_prefix_tl LaTeX / #1 / #2 }
-          { \tl_to_str:n {#3} }
-          { \tl_to_str:n {#4} }
-          { \tl_to_str:n {#5} }
-          { \tl_to_str:n {#6} }
-      }
-  }
-\cs_new:Npn \__kernel_msg_expandable_error:nnnnn #1#2#3#4#5
-  {
-    \__kernel_msg_expandable_error:nnnnnn
-      {#1} {#2} {#3} {#4} {#5} { }
-  }
-\cs_new:Npn \__kernel_msg_expandable_error:nnnn #1#2#3#4
-  {
-    \__kernel_msg_expandable_error:nnnnnn
-      {#1} {#2} {#3} {#4} { } { }
-  }
-\cs_new:Npn \__kernel_msg_expandable_error:nnn #1#2#3
-  {
-    \__kernel_msg_expandable_error:nnnnnn
-      {#1} {#2} {#3} { } { } { }
-  }
-\cs_new:Npn \__kernel_msg_expandable_error:nn #1#2
-  {
-    \__kernel_msg_expandable_error:nnnnnn
-      {#1} {#2} { } { } { } { }
-  }
-\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnnnn { nnffff }
-\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnnn { nnfff }
-\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnn { nnff }
-\cs_generate_variant:Nn \__kernel_msg_expandable_error:nnn { nnf }
 \cs_new:Npn \msg_expandable_error:nnnnnn #1#2#3#4#5#6
   {
-    \exp_args:Ne \__msg_expandable_error_module:nn
+    \exp_args:Nee \__msg_expandable_error:nn
       {
         \exp_args:Nc \exp_args:Noooo
           { \c__msg_text_prefix_tl #1 / #2 }
@@ -10818,7 +10719,7 @@
           { \tl_to_str:n {#5} }
           { \tl_to_str:n {#6} }
       }
-      {#1}
+      { \msg_error_text:n {#1} }
   }
 \cs_new:Npn \msg_expandable_error:nnnnn #1#2#3#4#5
   { \msg_expandable_error:nnnnnn {#1} {#2} {#3} {#4} {#5} { } }
@@ -10832,12 +10733,21 @@
 \cs_generate_variant:Nn \msg_expandable_error:nnnnn  { nnfff }
 \cs_generate_variant:Nn \msg_expandable_error:nnnn   { nnff }
 \cs_generate_variant:Nn \msg_expandable_error:nnn    { nnf }
-\cs_new:Npn \__msg_expandable_error_module:nn #1#2
+\prop_gput:Nnn \g_msg_module_name_prop { kernel } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { kernel } { }
+\clist_map_inline:nn
   {
-    \exp_after:wN \exp_after:wN
-    \exp_after:wN \__msg_use_none_delimit_by_s_stop:w
-    \use:n { \::error ! ~ #2 : ~ #1 } \s__msg_stop
+    char , clist , coffin , debug , deprecation , msg ,
+    quark , prg , prop , scanmark , seq , sys
   }
+  {
+    \prop_gput:Nnn \g_msg_module_name_prop {#1} { LaTeX3 }
+    \prop_gput:Nnn \g_msg_module_type_prop {#1} { }
+  }
+\prop_gput:Nnn \g_msg_module_name_prop { LaTeX / cmd } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { LaTeX / cmd } { }
+\prop_gput:Nnn \g_msg_module_name_prop { LaTeX / ltcmd } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { LaTeX / ltcmd } { }
 %% File: l3file.dtx
 \tl_new:N  \l__ior_internal_tl
 \int_const:Nn \c__ior_term_ior { 16 }
@@ -10935,8 +10845,8 @@
           { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } }
       }
   }
-\cs_new_protected:Npn \ior_show_list: { \__ior_list:N \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \ior_log_list: { \__ior_list:N \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \ior_show_list: { \__ior_list:N \msg_show:nnxxxx }
+\cs_new_protected:Npn \ior_log_list: { \__ior_list:N \msg_log:nnxxxx }
 \cs_new_protected:Npn \__ior_list:N #1
   {
     #1 { kernel } { show-streams }
@@ -11148,8 +11058,8 @@
           { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } }
       }
   }
-\cs_new_protected:Npn \iow_show_list: { \__iow_list:N \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \iow_log_list: { \__iow_list:N \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \iow_show_list: { \__iow_list:N \msg_show:nnxxxx }
+\cs_new_protected:Npn \iow_log_list: { \__iow_list:N \msg_log:nnxxxx }
 \cs_new_protected:Npn \__iow_list:N #1
   {
     #1 { kernel } { show-streams }
@@ -11230,18 +11140,18 @@
   }
 \cs_new_protected:Npn \iow_allow_break:
   {
-    \__kernel_msg_error:nnnn { kernel } { iow-indent }
+    \msg_error:nnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_allow_break: }
   }
 \cs_new:Npx \__iow_allow_break: { \c__iow_wrap_allow_break_marker_tl }
 \cs_new:Npn \__iow_allow_break_error:
   {
-    \__kernel_msg_expandable_error:nnnn { kernel } { iow-indent }
+    \msg_expandable_error:nnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_allow_break: }
   }
 \cs_new_protected:Npn \iow_indent:n #1
   {
-    \__kernel_msg_error:nnnnn { kernel } { iow-indent }
+    \msg_error:nnnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_indent:n } {#1}
     #1
   }
@@ -11253,7 +11163,7 @@
   }
 \cs_new:Npn \__iow_indent_error:n #1
   {
-    \__kernel_msg_expandable_error:nnnnn { kernel } { iow-indent }
+    \msg_expandable_error:nnnnn { kernel } { iow-indent }
       { \iow_wrap:nnnN } { \iow_indent:n } {#1}
     #1
   }
@@ -11583,7 +11493,7 @@
 \cs_new:Npn \__file_name_expand_cleanup:w #1 \tl_to_str:n { __file_name = } { }
 \cs_new:Npn \__file_name_expand_end:
   {
-    \__kernel_msg_expandable_error:nn
+    \msg_expandable_error:nn
       { kernel } { filename-missing-endcsname }
     \cs_end: \__file_name_expand_end:
   }
@@ -11592,7 +11502,7 @@
 \cs_new:Npn \__file_name_expand_error_aux:Nw #1 #2 \cs_end: #3
     \__file_name_expand_end:
   {
-    \__kernel_msg_expandable_error:nnff
+    \msg_expandable_error:nnff
       { kernel } { filename-chars-lost }
         { \token_to_str:N #1 } { \exp_stop_f: #2 }
   }
@@ -11615,7 +11525,7 @@
     \fi:
     \int_if_odd:nT {#2}
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { unbalanced-quote-in-filename } {#3}
       }
   }
@@ -11762,12 +11672,12 @@
   {
     \cs_gset:Npn \file_full_name:n #1
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { primitive-not-available }
           { \(pdf)filesize }
       }
   }
-\__kernel_msg_new:nnnn { kernel } { primitive-not-available }
+\msg_new:nnnn { kernel } { primitive-not-available }
   { Primitive~\token_to_str:N #1 not~available }
   {
     The~version~of~your~TeX~engine~does~not~provide~functionality~equivalent~to~
@@ -11947,7 +11857,7 @@
     \cs_set_protected:Npn \__file_get_details:nnN #1#2#3
        {
         \tl_clear:N #3
-        \__kernel_msg_error:nnx
+        \msg_error:nnx
           { kernel } { primitive-not-available }
           {
             \token_to_str:N \(pdf)file
@@ -12023,7 +11933,7 @@
     \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
       { p , T , F , TF }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { kernel } { primitive-not-available }
           { \(pdf)filemoddate }
         \prg_return_false:
@@ -12049,7 +11959,7 @@
 \cs_new_protected:Npn \file_input_stop: { \tex_endinput:D }
 \cs_new_protected:Npn \__kernel_file_missing:n #1
   {
-    \__kernel_msg_error:nnx { kernel } { file-not-found }
+    \msg_error:nnx { kernel } { file-not-found }
       { \__kernel_file_name_sanitize:n {#1} }
   }
 \cs_new_protected:Npn \file_input:n #1
@@ -12155,8 +12065,8 @@
     \str_set:Nn #6 {#3}
   }
 \cs_generate_variant:Nn \file_parse_full_name:nNNN { V }
-\cs_new_protected:Npn \file_show_list: { \__file_list:N \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \file_log_list: { \__file_list:N \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \file_show_list: { \__file_list:N \msg_show:nnxxxx }
+\cs_new_protected:Npn \file_log_list: { \__file_list:N \msg_log:nnxxxx }
 \cs_new_protected:Npn \__file_list:N #1
   {
     \seq_clear:N \l__file_tmp_seq
@@ -12256,11 +12166,11 @@
     \ior_map_inline:Nn \g__file_internal_ior
       { \seq_put_right:Nn \l__file_tmp_seq {##1} }
     \ior_close:N \g__file_internal_ior
-    \__kernel_msg_error:nnnn { kernel } { mismatched-support-file }
+    \msg_error:nnnn { kernel } { mismatched-support-file }
       {#1} {#2}
     \tex_endinput:D
   }
-\__kernel_msg_new:nnnn { kernel } { mismatched-support-file }
+\msg_new:nnnn { kernel } { mismatched-support-file }
   {
     Mismatched~LaTeX~support~files~detected. \\
     Loading~'#2'~aborted!
@@ -12293,25 +12203,25 @@
     but~this~may~lead~to \\ later~errors.~Please~ensure~that~
     your~LaTeX~format~is~correctly~regenerated.
   }
-\__kernel_msg_new:nnnn { kernel } { file-not-found }
+\msg_new:nnnn { kernel } { file-not-found }
   { File~'#1'~not~found. }
   {
     The~requested~file~could~not~be~found~in~the~current~directory,~
     in~the~TeX~search~path~or~in~the~LaTeX~search~path.
   }
-\__kernel_msg_new:nnn { kernel } { file-list }
+\msg_new:nnn { kernel } { file-list }
   {
     >~File~List~<
     #1 \\
     .............
   }
-\__kernel_msg_new:nnnn { kernel } { filename-chars-lost }
+\msg_new:nnnn { kernel } { filename-chars-lost }
   { #1~invalid~in~file~name.~Lost:~#2. }
   {
     There~was~an~invalid~token~in~the~file~name~that~caused~
     the~characters~following~it~to~be~lost.
   }
-\__kernel_msg_new:nnnn { kernel } { filename-missing-endcsname }
+\msg_new:nnnn { kernel } { filename-missing-endcsname }
   { Missing~\iow_char:N\\endcsname~inserted~in~filename. }
   {
     The~file~name~had~more~\iow_char:N\\csname~commands~than~
@@ -12318,13 +12228,13 @@
     \iow_char:N\\endcsname~ones.~LaTeX~will~add~the~missing~
     \iow_char:N\\endcsname~and~try~to~continue~as~best~as~it~can.
   }
-\__kernel_msg_new:nnnn { kernel } { unbalanced-quote-in-filename }
+\msg_new:nnnn { kernel } { unbalanced-quote-in-filename }
   { Unbalanced~quotes~in~file~name~'#1'. }
   {
     File~names~must~contain~balanced~numbers~of~quotes~(").
   }
-\__kernel_msg_new:nnnn { kernel } { iow-indent }
-  { Only~#1 (arg~1)~allows~#2 }
+\msg_new:nnnn { kernel } { iow-indent }
+  { Only~#1 allows~#2 }
   {
     The~command~#2 can~only~be~used~in~messages~
     which~will~be~wrapped~using~#1.
@@ -12597,7 +12507,7 @@
       {
         \dim_compare:nNnTF {#2} = \c_zero_dim
           {
-            \__kernel_msg_expandable_error:nnn { kernel } { zero-step } {#4}
+            \msg_expandable_error:nnn { kernel } { zero-step } {#4}
             \use_none:nnnn
           }
           { \__dim_step:NnnnN < }
@@ -12976,7 +12886,7 @@
            \s__keyval_mark ##3 \s__keyval_nil
            #2 \s__keyval_mark \__keyval_clean_up_active:w
         {
-          \__kernel_msg_expandable_error:nn
+          \msg_expandable_error:nn
             { keyval } { misplaced-equals-sign }
           \__keyval_loop_other:nnw
         }
@@ -12984,7 +12894,7 @@
           \s__keyval_mark ##1 \s__keyval_stop \s__keyval_mark ##2 \s__keyval_nil
           ##3 \s__keyval_mark ##4 ##5
         {
-          \__kernel_msg_expandable_error:nn
+          \msg_expandable_error:nn
             { keyval } { misplaced-equals-sign }
           \__keyval_loop_other:nnw
         }
@@ -13038,13 +12948,15 @@
   { \__keyval_loop_other:nnw }
 \cs_new:Npn \__keyval_blank_key_error:w #1 \__keyval_loop_other:nnw
   {
-    \__kernel_msg_expandable_error:nn { keyval } { blank-key-name }
+    \msg_expandable_error:nn { keyval } { blank-key-name }
     \__keyval_loop_other:nnw
   }
-\__kernel_msg_new:nnn { keyval } { misplaced-equals-sign }
-  { Misplaced~equals~sign~in~key-value~input~\msg_line_context: }
-\__kernel_msg_new:nnn { keyval } { blank-key-name }
+\msg_new:nnn { keyval } { misplaced-equals-sign }
+  { Misplaced~'='~in~key-value~input~\msg_line_context: }
+\msg_new:nnn { keyval } { blank-key-name }
   { Blank~key~name~in~key-value~input~\msg_line_context: }
+\prop_gput:Nnn \g_msg_module_name_prop { keyval } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { keyval } { }
 \group_begin:
   \cs_set_protected:Npn \__keyval_tmp:w #1
     {
@@ -13147,7 +13059,7 @@
       {
         \str_if_empty:NF \l__keys_property_str
           {
-            \__kernel_msg_error:nnxx { keys } { property-unknown }
+            \msg_error:nnxx { keys } { property-unknown }
               \l__keys_property_str \l_keys_path_str
           }
       }
@@ -13190,7 +13102,7 @@
     #1 \s__keys_nil #2 \__keys_property_find_err:w
   {
     \str_clear:N \l__keys_property_str
-    \__kernel_msg_error:nnn { keys } { no-property } {#1}
+    \msg_error:nnn { keys } { no-property } {#1}
   }
 \cs_new_protected:Npn \__keys_define_code:n #1
   {
@@ -13200,7 +13112,7 @@
           \l__keys_property_str \s__keys_stop
           { \use:c { \c__keys_props_root_str \l__keys_property_str } }
           {
-            \__kernel_msg_error:nnxx { keys } { property-requires-value }
+            \msg_error:nnxx { keys } { property-requires-value }
               \l__keys_property_str \l_keys_path_str
           }
       }
@@ -13219,7 +13131,7 @@
       { \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
     \__keys_cmd_set:nn { \l_keys_path_str / unknown }
       {
-        \__kernel_msg_error:nnx { keys } { boolean-values-only }
+        \msg_error:nnx { keys } { boolean-values-only }
           \l_keys_key_str
       }
     \__keys_default_set:n { true }
@@ -13235,7 +13147,7 @@
       { \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
     \__keys_cmd_set:nn { \l_keys_path_str / unknown }
       {
-        \__kernel_msg_error:nnx { keys } { boolean-values-only }
+        \msg_error:nnx { keys } { boolean-values-only }
           \l_keys_key_str
       }
     \__keys_default_set:n { true }
@@ -13254,7 +13166,7 @@
           { \c__keys_type_root_str \__keys_parent:o \l_keys_path_str }
           { choice }
           {
-            \__kernel_msg_error:nnxx { keys } { nested-choice-key }
+            \msg_error:nnxx { keys } { nested-choice-key }
               \l_keys_path_tl { \__keys_parent:o \l_keys_path_str }
           }
           { \__keys_choice_make_aux:N #1 }
@@ -13268,7 +13180,7 @@
     \__keys_cmd_set:nn \l_keys_path_str { #1 {##1} }
     \__keys_cmd_set:nn { \l_keys_path_str / unknown }
       {
-        \__kernel_msg_error:nnxx { keys } { choice-unknown }
+        \msg_error:nnxx { keys } { choice-unknown }
           \l_keys_path_str {##1}
       }
   }
@@ -13403,7 +13315,7 @@
           }
       }
       {
-        \__kernel_msg_error:nnx { keys }
+        \msg_error:nnx { keys }
           { property-boolean-values-only }
           { .value_ #1 :n }
       }
@@ -13412,7 +13324,7 @@
   {
     \bool_if:NF \l__keys_no_value_bool
       {
-        \__kernel_msg_error:nnxx { keys } { value-forbidden }
+        \msg_error:nnxx { keys } { value-forbidden }
           \l_keys_path_str \l_keys_value_tl
         \use_none:nnn
       }
@@ -13421,7 +13333,7 @@
   {
     \bool_if:NT \l__keys_no_value_bool
       {
-        \__kernel_msg_error:nnx { keys } { value-required }
+        \msg_error:nnx { keys } { value-required }
           \l_keys_path_str
         \use_none:nnn
       }
@@ -13909,7 +13821,7 @@
           { \c__keys_code_root_str \l__keys_module_str / unknown }
           { \__keys_execute:no { \l__keys_module_str / unknown } \l_keys_value_tl }
           {
-            \__kernel_msg_error:nnxx { keys } { unknown }
+            \msg_error:nnxx { keys } { unknown }
               \l_keys_path_str \l__keys_module_str
           }
       }
@@ -13962,7 +13874,7 @@
         {
           \tl_if_blank:nF {##1}
             {
-              \__kernel_msg_error:nnxx { keys } { bad-relative-key-path }
+              \msg_error:nnxx { keys } { bad-relative-key-path }
                 \l_keys_path_str
                 \l__keys_relative_tl
             }
@@ -14067,9 +13979,9 @@
       { \prg_return_false: }
   }
 \cs_new_protected:Npn \keys_show:nn
-  { \__keys_show:Nnn \__kernel_msg_show:nnxxxx }
+  { \__keys_show:Nnn \msg_show:nnxxxx }
 \cs_new_protected:Npn \keys_log:nn
-  { \__keys_show:Nnn \__kernel_msg_log:nnxxxx }
+  { \__keys_show:Nnn \msg_log:nnxxxx }
 \cs_new_protected:Npn \__keys_show:Nnn #1#2#3
   {
     #1 { keys } { show-key }
@@ -14089,43 +14001,43 @@
       }
       { } { }
   }
-\__kernel_msg_new:nnnn { keys } { bad-relative-key-path }
+\msg_new:nnnn { keys } { bad-relative-key-path }
   { The~key~'#1'~is~not~inside~the~'#2'~path. }
   { The~key~'#1'~cannot~be~expressed~relative~to~path~'#2'. }
-\__kernel_msg_new:nnnn { keys } { boolean-values-only }
+\msg_new:nnnn { keys } { boolean-values-only }
   { Key~'#1'~accepts~boolean~values~only. }
   { The~key~'#1'~only~accepts~the~values~'true'~and~'false'. }
-\__kernel_msg_new:nnnn { keys } { choice-unknown }
+\msg_new:nnnn { keys } { choice-unknown }
   { Key~'#1'~accepts~only~a~fixed~set~of~choices. }
   {
     The~key~'#1'~only~accepts~predefined~values,~
     and~'#2'~is~not~one~of~these.
   }
-\__kernel_msg_new:nnnn { keys } { unknown }
+\msg_new:nnnn { keys } { unknown }
   { The~key~'#1'~is~unknown~and~is~being~ignored. }
   {
     The~module~'#2'~does~not~have~a~key~called~'#1'.\\
     Check~that~you~have~spelled~the~key~name~correctly.
   }
-\__kernel_msg_new:nnnn { keys } { nested-choice-key }
+\msg_new:nnnn { keys } { nested-choice-key }
   { Attempt~to~define~'#1'~as~a~nested~choice~key. }
   {
     The~key~'#1'~cannot~be~defined~as~a~choice~as~the~parent~key~'#2'~is~
     itself~a~choice.
   }
-\__kernel_msg_new:nnnn { keys } { value-forbidden }
+\msg_new:nnnn { keys } { value-forbidden }
   { The~key~'#1'~does~not~take~a~value. }
   {
     The~key~'#1'~should~be~given~without~a~value.\\
     The~value~'#2'~was~present:~the~key~will~be~ignored.
   }
-\__kernel_msg_new:nnnn { keys } { value-required }
+\msg_new:nnnn { keys } { value-required }
   { The~key~'#1'~requires~a~value. }
   {
     The~key~'#1'~must~have~a~value.\\
     No~value~was~present:~the~key~will~be~ignored.
   }
-\__kernel_msg_new:nnn { keys } { show-key }
+\msg_new:nnn { keys } { show-key }
   {
     The~key~#1~
     \tl_if_empty:nTF {#2}
@@ -14132,6 +14044,8 @@
       { is~undefined. }
       { has~the~properties: #2 . }
   }
+\prop_gput:Nnn \g_msg_module_name_prop { keys } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { keys } { }
 %% File: l3intarray.dtx
 \cs_new_eq:NN \__intarray_entry:w \tex_fontdimen:D
 \cs_new_eq:NN \__intarray_count:w \tex_hyphenchar:D
@@ -14138,7 +14052,7 @@
 \int_new:N \l__intarray_loop_int
 \dim_const:Nn \c__intarray_sp_dim { 1 sp }
 \int_new:N \g__intarray_font_int
-\__kernel_msg_new:nnn { kernel } { negative-array-size }
+\msg_new:nnn { kernel } { negative-array-size }
   { Size~of~array~may~not~be~negative:~#1 }
 \cs_new_protected:Npn \__intarray_new:N #1
   {
@@ -14155,7 +14069,7 @@
     \__intarray_count:w #1 = \int_eval:n {#2} \scan_stop:
     \int_compare:nNnT { \intarray_count:N #1 } < 0
       {
-        \__kernel_msg_error:nnx { kernel } { negative-array-size }
+        \msg_error:nnx { kernel } { negative-array-size }
           { \intarray_count:N #1 }
       }
     \int_compare:nNnT { \intarray_count:N #1 } > 0
@@ -14196,7 +14110,7 @@
 \cs_generate_variant:Nn \intarray_gset:Nnn { c }
 \cs_new_protected:Npn \__intarray_gset:Nww #1#2 ; #3 ;
   {
-    \__intarray_bounds:NNnTF \__kernel_msg_error:nnxxx #1 {#2}
+    \__intarray_bounds:NNnTF \msg_error:nnxxx #1 {#2}
       {
         \__intarray_gset_overflow_test:nw {#3}
         \__kernel_intarray_gset:Nnn #1 {#2} {#3}
@@ -14222,7 +14136,7 @@
   }
 \cs_new_protected:Npn \__intarray_gset_overflow:NNnn #1#2#3#4
   {
-    \__kernel_msg_error:nnxxxx { kernel } { overflow }
+    \msg_error:nnxxxx { kernel } { overflow }
       { \token_to_str:N #2 } {#3} {#4} {  \__intarray_signed_max_dim:n {#4} }
     #1 #2 {#3} { \__intarray_signed_max_dim:n {#4} }
   }
@@ -14247,7 +14161,7 @@
 \cs_generate_variant:Nn \intarray_item:Nn { c }
 \cs_new:Npn \__intarray_item:Nw #1#2 ;
   {
-    \__intarray_bounds:NNnTF \__kernel_msg_expandable_error:nnfff #1 {#2}
+    \__intarray_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
       { \__kernel_intarray_item:Nn #1 {#2} }
       { 0 }
   }
@@ -14321,9 +14235,9 @@
     \int_incr:N \l__intarray_loop_int
     \__intarray_gset_range:Nw #1
   }
-\cs_new_protected:Npn \intarray_show:N { \__intarray_show:NN \__kernel_msg_show:nnxxxx }
+\cs_new_protected:Npn \intarray_show:N { \__intarray_show:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \intarray_show:N { c }
-\cs_new_protected:Npn \intarray_log:N { \__intarray_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \intarray_log:N { \__intarray_show:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \intarray_log:N { c }
 \cs_new_protected:Npn \__intarray_show:NN #1#2
   {
@@ -14350,7 +14264,7 @@
       {
         \int_compare:nNnTF {#2} > {#3}
           {
-            \__kernel_msg_expandable_error:nnnn
+            \msg_expandable_error:nnnn
               { kernel } { randint-backward-range } {#2} {#3}
             \__intarray_gset_rand:Nnn #1 {#3} {#2}
           }
@@ -14398,7 +14312,7 @@
   {
     \cs_new_protected:Npn \intarray_gset_rand:Nnn #1#2#3
       {
-        \__kernel_msg_error:nnn { kernel } { fp-no-random }
+        \msg_error:nnn { kernel } { fp-no-random }
           { \intarray_gset_rand:Nnn #1 {#2} {#3} }
       }
   }
@@ -14419,7 +14333,7 @@
 \cs_new:Npn \__fp_use_i:ww #1; #2; { #1; }
 \cs_new:Npn \__fp_use_i:www #1; #2; #3; { #1; }
 \cs_new_protected:Npn \__fp_misused:n #1
-  { \__kernel_msg_error:nnx { fp } { misused } { \fp_to_tl:n {#1} } }
+  { \msg_error:nnx { fp } { misused } { \fp_to_tl:n {#1} } }
 \scan_new:N \s__fp
 \cs_new_protected:Npn \__fp_chk:w #1 ;
   { \__fp_misused:n { \s__fp \__fp_chk:w #1 ; } }
@@ -14788,7 +14702,7 @@
   { \cs_new:Npn \__fp_func_to_name_aux:w ##1 #1 ##2 #2 ##3 X {##2} }
 \exp_args:Nff \__fp_tmp:w { \tl_to_str:n { __fp_ } }
   { \tl_to_str:n { _o: } }
-\__kernel_msg_new:nnnn { fp } { misused }
+\msg_new:nnnn { fp } { misused }
   { A~floating~point~with~value~'#1'~was~misused. }
   {
     To~obtain~the~value~of~a~floating~point~variable,~use~
@@ -14796,6 +14710,8 @@
     '\token_to_str:N \fp_to_tl:N',~or~other~
     conversion~functions.
   }
+\prop_gput:Nnn \g_msg_module_name_prop { fp } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { fp } { }
 %% File: l3fp-traps.dtx
 \flag_new:n { fp_invalid_operation }
 \flag_new:n { fp_division_by_zero }
@@ -14809,11 +14725,11 @@
           { invalid_operation , division_by_zero , overflow , underflow }
           {#1}
           {
-            \__kernel_msg_error:nnxx { fp }
+            \msg_error:nnxx { fp }
               { unknown-fpu-trap-type } {#1} {#2}
           }
           {
-            \__kernel_msg_error:nnx
+            \msg_error:nnx
               { fp } { unknown-fpu-exception } {#1}
           }
       }
@@ -14924,9 +14840,9 @@
   { \__fp_invalid_operation:nnw { \exp_after:wN \c_nan_fp } }
 \cs_generate_variant:Nn \__fp_invalid_operation_o:nw { f }
 \cs_new:Npn \__fp_error:nnnn
-  { \__kernel_msg_expandable_error:nnnnn { fp } }
+  { \msg_expandable_error:nnnnn { fp } }
 \cs_generate_variant:Nn \__fp_error:nnnn { nnf, nff , nfff }
-\__kernel_msg_new:nnnn { fp } { unknown-fpu-exception }
+\msg_new:nnnn { fp } { unknown-fpu-exception }
   {
     The~FPU~exception~'#1'~is~not~known:~
     that~trap~will~never~be~triggered.
@@ -14941,7 +14857,7 @@
         * ~ underflow
       }
   }
-\__kernel_msg_new:nnnn { fp } { unknown-fpu-trap-type }
+\msg_new:nnnn { fp } { unknown-fpu-trap-type }
   { The~FPU~trap~type~'#2'~is~not~known. }
   {
     The~trap~type~must~be~one~of \\
@@ -14952,19 +14868,19 @@
         * ~ none
       }
   }
-\__kernel_msg_new:nnn { fp } { flow }
+\msg_new:nnn { fp } { flow }
   { An ~ #3 ~ occurred. }
-\__kernel_msg_new:nnn { fp } { flow-to }
+\msg_new:nnn { fp } { flow-to }
   { #1 ~ #3 ed ~ to ~ #2 . }
-\__kernel_msg_new:nnn { fp } { zero-div }
+\msg_new:nnn { fp } { zero-div }
   { Division~by~zero~in~ #1 (#2) }
-\__kernel_msg_new:nnn { fp } { zero-div-ii }
+\msg_new:nnn { fp } { zero-div-ii }
   { Division~by~zero~in~ (#1) #3 (#2) }
-\__kernel_msg_new:nnn { fp } { invalid }
+\msg_new:nnn { fp } { invalid }
   { Invalid~operation~ #1 (#2) }
-\__kernel_msg_new:nnn { fp } { invalid-ii }
+\msg_new:nnn { fp } { invalid-ii }
   { Invalid~operation~ (#1) #3 (#2) }
-\__kernel_msg_new:nnn { fp } { unknown-type }
+\msg_new:nnn { fp } { unknown-type }
   { Unknown~type~for~'#1' }
 %% File: l3fp-round.dtx
 \cs_new:Npn \__fp_parse_word_trunc:N
@@ -15337,7 +15253,7 @@
           }
       }
       {
-        \__kernel_msg_expandable_error:nn { fp } { early-end }
+        \msg_expandable_error:nn { fp } { early-end }
         \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
       }
     #1
@@ -15344,7 +15260,7 @@
   }
 \cs_new:cpn { __fp_exp_after_?_f:nw } #1#2
   {
-    \__kernel_msg_expandable_error:nnn { kernel } { bad-variable }
+    \msg_expandable_error:nnn { kernel } { bad-variable }
       {#2}
     \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w #1
   }
@@ -15359,12 +15275,12 @@
               {
                 \cs_if_eq:NNTF ##2 #1 { \use_i:nn } { \use:n }
                 {
-                  \__kernel_msg_expandable_error:nnn { fp }
+                  \msg_expandable_error:nnn { fp }
                     { robust-cmd }
                 }
               }
               {
-                \__kernel_msg_expandable_error:nnn { kernel }
+                \msg_expandable_error:nnn { kernel }
                   { bad-variable } {##2}
               }
           }
@@ -15430,7 +15346,7 @@
     #3
     \str_if_eq:nnTF {#1} {#2}
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { fp } { infty-pi } {#1}
         \c_nan_fp
       }
@@ -15487,7 +15403,7 @@
         \cs_if_exist_use:cF
           { __fp_parse_caseless_ \str_foldcase:n {#2} :N }
           {
-            \__kernel_msg_expandable_error:nnn
+            \msg_expandable_error:nnn
               { fp } { unknown-fp-word } {#2}
             \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
             \__fp_parse_infix:NN
@@ -15526,13 +15442,13 @@
   {
     \cs_if_exist:cTF { __fp_parse_infix_ \token_to_str:N #1 :N }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { fp } { missing-number } {#1}
         \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
         \__fp_parse_infix:NN #3 #1
       }
       {
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { fp } { unknown-symbol } {#1}
         \__fp_parse_one:Nw #3
       }
@@ -15870,12 +15786,12 @@
             \__fp_str_if_eq:nn { \s__fp } { \exp_not:N #1 }
             = \c_zero_int
           0
-          \__kernel_msg_expandable_error:nnn
+          \msg_expandable_error:nnn
             { fp } { after-e } { floating~point~ }
           \prg_return_true:
         \else:
           0
-          \__kernel_msg_expandable_error:nnn
+          \msg_expandable_error:nnn
             { kernel } { bad-variable } {#1}
           \prg_return_false:
         \fi:
@@ -15886,7 +15802,7 @@
           \int_value:w #1
         \else:
           0
-          \__kernel_msg_expandable_error:nnn
+          \msg_expandable_error:nnn
             { fp } { after-e } { dimension~#1 }
         \fi:
         \prg_return_false:
@@ -15893,7 +15809,7 @@
       \fi:
     \else:
       0
-      \__kernel_msg_expandable_error:nnn
+      \msg_expandable_error:nnn
         { fp } { missing } { exponent }
       \prg_return_true:
     \fi:
@@ -15984,7 +15900,7 @@
         \exp_not:N \__fp_parse_expand:w
       }
       {
-        \exp_not:N \__kernel_msg_expandable_error:nnn
+        \exp_not:N \msg_expandable_error:nnn
           { fp } { missing } { ) }
         \exp_not:N \tl_if_empty:nT {#2} \exp_not:N \c__fp_empty_tuple_fp
         #2 @
@@ -15998,7 +15914,7 @@
       \if_int_compare:w #1 = \c__fp_prec_tuple_int
         \exp_after:wN \c__fp_empty_tuple_fp \exp:w
       \else:
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { fp } { missing-number } { ) }
         \exp_after:wN \c_nan_fp \exp:w
       \fi:
@@ -16198,7 +16114,7 @@
 \cs_new:Npn \__fp_parse_infix_check:NNN #1#2#3
   {
     \if_meaning:w \scan_stop: #1
-      \__kernel_msg_expandable_error:nnn
+      \msg_expandable_error:nnn
         { fp } { missing } { * }
       \exp_after:wN \__fp_parse_infix_mul:N
       \exp_after:wN #2
@@ -16251,7 +16167,7 @@
           \exp_after:wN \use_none:n
           \exp_after:wN #1
         \else:
-          \__kernel_msg_expandable_error:nnn { fp } { extra } { ) }
+          \msg_expandable_error:nnn { fp } { extra } { ) }
           \exp_after:wN \__fp_parse_infix:NN
           \exp_after:wN ##1
           \exp:w \exp_after:wN \__fp_parse_expand:w
@@ -16385,7 +16301,7 @@
 \exp_args:Nc \__fp_tmp:w { __fp_parse_infix_::N }
   \__fp_ternary_auxii:NwwN \c__fp_prec_colon_int
   {
-    \__kernel_msg_expandable_error:nnnn
+    \msg_expandable_error:nnnn
       { fp } { missing } { ? } { ~for~?: }
   }
 \cs_new:cpn { __fp_parse_infix_<:N } #1
@@ -16406,7 +16322,7 @@
   }
 \cs_new:Npn \__fp_parse_excl_error:
   {
-    \__kernel_msg_expandable_error:nnnn
+    \msg_expandable_error:nnnn
       { fp } { missing } { = } { ~after~!. }
   }
 \cs_new:Npn \__fp_parse_compare:NNNNNNN #1
@@ -16583,37 +16499,37 @@
     \exp:w \exp_end_continue_f:w
     \__fp_tuple_mapthread_loop_o:nw {#1} #4 @
   }
-\__kernel_msg_new:nnn { fp } { deprecated }
+\msg_new:nnn { fp } { deprecated }
   { '#1'~deprecated;~use~'#2' }
-\__kernel_msg_new:nnn { fp } { unknown-fp-word }
+\msg_new:nnn { fp } { unknown-fp-word }
   { Unknown~fp~word~#1. }
-\__kernel_msg_new:nnn { fp } { missing }
+\msg_new:nnn { fp } { missing }
   { Missing~#1~inserted #2. }
-\__kernel_msg_new:nnn { fp } { extra }
+\msg_new:nnn { fp } { extra }
   { Extra~#1~ignored. }
-\__kernel_msg_new:nnn { fp } { early-end }
+\msg_new:nnn { fp } { early-end }
   { Premature~end~in~fp~expression. }
-\__kernel_msg_new:nnn { fp } { after-e }
+\msg_new:nnn { fp } { after-e }
   { Cannot~use~#1 after~'e'. }
-\__kernel_msg_new:nnn { fp } { missing-number }
+\msg_new:nnn { fp } { missing-number }
   { Missing~number~before~'#1'. }
-\__kernel_msg_new:nnn { fp } { unknown-symbol }
+\msg_new:nnn { fp } { unknown-symbol }
   { Unknown~symbol~#1~ignored. }
-\__kernel_msg_new:nnn { fp } { extra-comma }
+\msg_new:nnn { fp } { extra-comma }
   { Unexpected~comma~turned~to~nan~result. }
-\__kernel_msg_new:nnn { fp } { no-arg }
+\msg_new:nnn { fp } { no-arg }
   { #1~got~no~argument;~used~nan. }
-\__kernel_msg_new:nnn { fp } { multi-arg }
+\msg_new:nnn { fp } { multi-arg }
   { #1~got~more~than~one~argument;~used~nan. }
-\__kernel_msg_new:nnn { fp } { num-args }
+\msg_new:nnn { fp } { num-args }
   { #1~expects~between~#2~and~#3~arguments. }
-\__kernel_msg_new:nnn { fp } { bad-args }
+\msg_new:nnn { fp } { bad-args }
   { Arguments~in~#1#2~are~invalid. }
-\__kernel_msg_new:nnn { fp } { infty-pi }
+\msg_new:nnn { fp } { infty-pi }
   { Math~command~#1 is~not~an~fp }
 \cs_if_exist:cT { @unexpandable at protect }
   {
-    \__kernel_msg_new:nnn { fp } { robust-cmd }
+    \msg_new:nnn { fp } { robust-cmd }
       { Robust~command~#1 invalid~in~fp~expression! }
   }
 %% File: l3fp-assign.dtx
@@ -16917,7 +16833,7 @@
       {
         \token_if_eq_meaning:NNTF #2 0
           {
-            \__kernel_msg_expandable_error:nnn { kernel }
+            \msg_expandable_error:nnn { kernel }
               { zero-step } {#6}
           }
           {
@@ -16970,12 +16886,12 @@
     \fp_step_function:nnnN {#3} {#4} {#5} #2
     \prg_break_point:Nn \scan_stop: { \int_gdecr:N \g__kernel_prg_map_int }
   }
-\__kernel_msg_new:nnn { fp } { step-tuple }
+\msg_new:nnn { fp } { step-tuple }
   { Tuple~argument~in~fp_step_...~{#1}{#2}{#3}. }
-\__kernel_msg_new:nnn { fp } { bad-step }
-  { Invalid~step~size~#2~in~step~function~#3. }
-\__kernel_msg_new:nnn { fp } { tiny-step }
-  { Tiny~step~size~(#1+#2=#1)~in~step~function~#3. }
+\msg_new:nnn { fp } { bad-step }
+  { Invalid~step~size~#2~for~function~#3. }
+\msg_new:nnn { fp } { tiny-step }
+  { Tiny~step~size~(#1+#2=#1)~for~function~#3. }
 \cs_new:Npn \__fp_minmax_o:Nw #1
   {
     \__fp_parse_function_all_fp_o:fnw
@@ -17078,7 +16994,7 @@
         \__fp_parse_operand:Nw \c__fp_prec_colon_int
         \__fp_parse_expand:w
     \else:
-      \__kernel_msg_expandable_error:nnnn
+      \msg_expandable_error:nnnn
         { fp } { missing } { : } { ~for~?: }
       \exp_after:wN \__fp_parse_continue:NwN
       \exp_after:wN #1
@@ -20298,11 +20214,11 @@
   { \__fp_parse_function:NNN \__fp_randint_o:Nw ? }
 \sys_if_rand_exist:F
   {
-    \__kernel_msg_new:nnn { kernel } { fp-no-random }
+    \msg_new:nnn { kernel } { fp-no-random }
       { Random~numbers~unavailable~for~#1 }
     \cs_new:Npn \__fp_rand_o:Nw ? #1 @
       {
-        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+        \msg_expandable_error:nnn { kernel } { fp-no-random }
           { fp~rand }
         \exp_after:wN \c_nan_fp
       }
@@ -20309,13 +20225,13 @@
     \cs_new_eq:NN \__fp_randint_o:Nw \__fp_rand_o:Nw
     \cs_new:Npn \int_rand:nn #1#2
       {
-        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+        \msg_expandable_error:nnn { kernel } { fp-no-random }
           { \int_rand:nn {#1} {#2} }
         \int_eval:n {#1}
       }
     \cs_new:Npn \int_rand:n #1
       {
-        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+        \msg_expandable_error:nnn { kernel } { fp-no-random }
           { \int_rand:n {#1} }
         1
       }
@@ -20348,7 +20264,7 @@
             \__fp_rand_myriads:n { XXXX } { 0000 } { 0000 } ; 0
           }
           {
-            \__kernel_msg_expandable_error:nnnnn
+            \msg_expandable_error:nnnnn
               { fp } { num-args } { rand() } { 0 } { 0 }
             \exp_after:wN \c_nan_fp
           }
@@ -20481,7 +20397,7 @@
     \cs_new:Npn \__fp_randint:ww #1; #2;
       {
         \if_int_compare:w #1 > #2 \exp_stop_f:
-          \__kernel_msg_expandable_error:nnnn
+          \msg_expandable_error:nnnn
             { kernel } { randint-backward-range } {#1} {#2}
           \__fp_randint:ww #2; #1;
         \else:
@@ -20571,7 +20487,7 @@
     \cs_new:Npn \__fp_randint:n #1
       {
         \if_int_compare:w #1 < \c_one_int
-          \__kernel_msg_expandable_error:nnnn
+          \msg_expandable_error:nnnn
             { kernel } { randint-backward-range } { 1 } {#1}
           \__fp_randint:ww #1; 1;
         \else:
@@ -20603,7 +20519,7 @@
   {
     \int_compare:nNnTF {#1} < 0
       {
-        \__kernel_msg_error:nnn { kernel } { negative-array-size } {#1}
+        \msg_error:nnn { kernel } { negative-array-size } {#1}
         \cs_undefine:N #1
         \int_gsub:Nn \g__fp_array_int { 3 }
       }
@@ -20650,7 +20566,7 @@
 \cs_generate_variant:Nn \fparray_gset:Nnn { c }
 \cs_new_protected:Npn \__fp_array_gset:NNNNww #1#2#3#4#5 ; #6 ;
   {
-    \__fp_array_bounds:NNnTF \__kernel_msg_error:nnxxx #4 {#5}
+    \__fp_array_bounds:NNnTF \msg_error:nnxxx #4 {#5}
       {
         \exp_after:wN \__fp_change_func_type:NNN
           \__fp_use_i_until_s:nw #6 ;
@@ -20720,7 +20636,7 @@
 \cs_generate_variant:Nn \fparray_item_to_tl:Nn { c }
 \cs_new:Npn \__fp_array_item:NwN #1#2 ; #3
   {
-    \__fp_array_bounds:NNnTF \__kernel_msg_expandable_error:nnfff #1 {#2}
+    \__fp_array_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
       { \exp_after:wN \__fp_array_item:NNNnN #1 {#2} #3 }
       { \exp_after:wN #3 \c_nan_fp }
   }
@@ -20922,7 +20838,7 @@
           { \__cctab_nesting_number:N \l__cctab_internal_a_tl }
         \__cctab_select:N \l__cctab_internal_a_tl
       }
-      { \__kernel_msg_error:nn { cctab } { extra-end } }
+      { \msg_error:nn { cctab } { extra-end } }
   }
 \cs_new_protected:Npn \__cctab_chk_group_begin:n #1
   {
@@ -20940,7 +20856,7 @@
       }
       { \cs_if_exist_p:c { __cctab_group_ #1 _chk: } }
       {
-        \__kernel_msg_error:nnx { cctab } { group-mismatch }
+        \msg_error:nnx { cctab } { group-mismatch }
           {
             \int_sign:n
               { \tex_currentgrouplevel:D - \l__cctab_internal_b_tl }
@@ -20967,7 +20883,7 @@
     \hook_gput_code:nnn { enddocument/end } { cctab }
       {
         \seq_if_empty:NF \g__cctab_stack_seq
-          { \__kernel_msg_error:nn { cctab } { missing-end } }
+          { \msg_error:nn { cctab } { missing-end } }
       }
   }
 \cs_new:Npn \cctab_item:Nn #1#2
@@ -20998,13 +20914,13 @@
         \__cctab_chk_if_valid_aux:NTF #1
           { \prg_return_true: }
           {
-            \__kernel_msg_error:nnx { cctab } { invalid-cctab }
+            \msg_error:nnx { cctab } { invalid-cctab }
               { \token_to_str:N #1 }
             \prg_return_false:
           }
       }
       {
-        \__kernel_msg_error:nnx { kernel } { command-not-defined }
+        \msg_error:nnx { kernel } { command-not-defined }
           { \token_to_str:N #1 }
         \prg_return_false:
       }
@@ -21100,25 +21016,25 @@
         \char_set_catcode_active:n         { 126 }
       }
   }
-\__kernel_msg_new:nnnn { cctab } { stack-full }
+\msg_new:nnnn { cctab } { stack-full }
   { The~category~code~table~stack~is~exhausted. }
   {
     LaTeX~has~been~asked~to~switch~to~a~new~category~code~table,~
     but~there~is~no~more~space~to~do~this!
   }
-\__kernel_msg_new:nnnn { cctab } { extra-end }
+\msg_new:nnnn { cctab } { extra-end }
   { Extra~\iow_char:N\\cctab_end:~ignored~\msg_line_context:. }
   {
     LaTeX~came~across~a~\iow_char:N\\cctab_end:~without~a~matching~
     \iow_char:N\\cctab_begin:N.~This~command~will~be~ignored.
   }
-\__kernel_msg_new:nnnn { cctab } { missing-end }
+\msg_new:nnnn { cctab } { missing-end }
   { Missing~\iow_char:N\\cctab_end:~before~end~of~TeX~run. }
   {
     LaTeX~came~across~more~\iow_char:N\\cctab_begin:N~than~
     \iow_char:N\\cctab_end:.
   }
-\__kernel_msg_new:nnnn { cctab } { invalid-cctab }
+\msg_new:nnnn { cctab } { invalid-cctab }
   { Invalid~\iow_char:N\\catcode~table. }
   {
     You~can~only~switch~to~a~\iow_char:N\\catcode~table~that~is~
@@ -21125,7 +21041,7 @@
     initialized~using~\iow_char:N\\cctab_new:N~or~
     \iow_char:N\\cctab_const:Nn.
   }
-\__kernel_msg_new:nnnn { cctab } { group-mismatch }
+\msg_new:nnnn { cctab } { group-mismatch }
   {
     \iow_char:N\\cctab_end:~occurred~in~a~
     \int_case:nn {#1}
@@ -21141,6 +21057,8 @@
     you~tried~to~interleave~them.~LaTeX~will~try~to~proceed,~
     but~results~may~be~unexpected.
   }
+\prop_gput:Nnn \g_msg_module_name_prop { cctab } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { cctab } { }
 %% File l3sort.dtx
 \seq_new:N \g__sort_internal_seq
 \tl_new:N \g__sort_internal_tl
@@ -21376,7 +21294,7 @@
 \cs_new_protected:Npn \__sort_return_mark:w #1 \s__sort_mark { }
 \cs_new_protected:Npn \__sort_return_none_error:
   {
-    \__kernel_msg_error:nnxx { sort } { return-none }
+    \msg_error:nnxx { sort } { return-none }
       { \tex_the:D \tex_toks:D \l__sort_A_int }
       { \tex_the:D \tex_toks:D \l__sort_C_int }
     \__sort_return_same:w \__sort_return_none_error:
@@ -21383,7 +21301,7 @@
   }
 \cs_new_protected:Npn \__sort_return_two_error:
   {
-    \__kernel_msg_error:nnxx { sort } { return-two }
+    \msg_error:nnxx { sort } { return-two }
       { \tex_the:D \tex_toks:D \l__sort_A_int }
       { \tex_the:D \tex_toks:D \l__sort_C_int }
   }
@@ -21513,12 +21431,12 @@
   { \cs_set_eq:NN \toksdef \__sort_disabled_toksdef:n }
 \cs_new_protected:Npn \__sort_disabled_toksdef:n #1
   {
-    \__kernel_msg_error:nnx { sort } { toksdef }
+    \msg_error:nnx { sort } { toksdef }
       { \token_to_str:N #1 }
     \__sort_error:
     \tex_toksdef:D #1
   }
-\__kernel_msg_new:nnnn { sort } { toksdef }
+\msg_new:nnnn { sort } { toksdef }
   { Allocation~of~\iow_char:N\\toks~registers~impossible~while~sorting. }
   {
     The~comparison~code~used~for~sorting~a~list~has~attempted~to~
@@ -21529,13 +21447,13 @@
 \cs_new_protected:Npn \__sort_too_long_error:NNw #1#2 \fi:
   {
     \fi:
-    \__kernel_msg_error:nnxxx { sort } { too-large }
+    \msg_error:nnxxx { sort } { too-large }
       { \token_to_str:N #2 }
       { \int_eval:n { \l__sort_true_max_int - \l__sort_min_int } }
       { \int_eval:n { \l__sort_top_int - \l__sort_min_int } }
     #1 \__sort_error:
   }
-\__kernel_msg_new:nnnn { sort } { too-large }
+\msg_new:nnnn { sort } { too-large }
   { The~list~#1~is~too~long~to~be~sorted~by~TeX. }
   {
     TeX~has~#2~toks~registers~still~available:~
@@ -21542,7 +21460,7 @@
     this~only~allows~to~sort~with~up~to~#3~
     items.~The~list~will~not~be~sorted.
   }
-\__kernel_msg_new:nnnn { sort } { return-none }
+\msg_new:nnnn { sort } { return-none }
   { The~comparison~code~did~not~return. }
   {
     When~sorting~a~list,~the~code~to~compare~items~#1~and~#2~
@@ -21551,7 +21469,7 @@
     \iow_char:N\\sort_return_swapped: .~
     Exactly~one~of~these~should~be~called.
   }
-\__kernel_msg_new:nnnn { sort } { return-two }
+\msg_new:nnnn { sort } { return-two }
   { The~comparison~code~returned~multiple~times. }
   {
     When~sorting~a~list,~the~code~to~compare~items~#1~and~#2~called~
@@ -21559,6 +21477,8 @@
     \iow_char:N\\sort_return_swapped: ~multiple~times.~
     Exactly~one~of~these~should~be~called.
   }
+\prop_gput:Nnn \g_msg_module_name_prop { sort } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { sort } { }
 %% File: l3str-convert.dtx
 \cs_new_protected:Npn \__str_tmp:w { }
 \tl_new:N \l__str_internal_tl
@@ -21727,7 +21647,7 @@
 \cs_new_protected:Npn \__str_if_flag_error:nnx #1
   {
     \flag_if_raised:nTF {#1}
-      { \__kernel_msg_error:nnx { str } }
+      { \msg_error:nnx { str } }
       { \use_none:nn }
   }
 \cs_new_protected:Npn \__str_if_flag_no_error:nnx #1#2#3
@@ -21786,7 +21706,7 @@
   {
     \if_meaning:w #1 #5
       \tl_if_empty:nF {#3}
-        { \__kernel_msg_error:nnx { str } { native-escaping } {#3} }
+        { \msg_error:nnx { str } { native-escaping } {#3} }
       #1
     \else:
       #4 #2 #1
@@ -21818,7 +21738,7 @@
               }
               {
                 \tl_clear:N \l__str_internal_tl
-                \__kernel_msg_error:nnxx { str } { unknown-#2 } {#4} {#1}
+                \msg_error:nnxx { str } { unknown-#2 } {#4} {#1}
               }
           }
         \cs_if_exist:cF { __str_convert_#3_#1: }
@@ -21929,7 +21849,7 @@
           \char_generate:nn {#1} {12}
         \fi:
       }
-    \__kernel_msg_new:nnnn { str } { native-overflow }
+    \msg_new:nnnn { str } { native-overflow }
       { Character~code~too~large~for~this~engine. }
       {
         This~engine~only~support~8-bit~characters:~
@@ -22058,11 +21978,11 @@
       { \__str_output_byte:n {#1} }
       { \flag_raise:n { str_error } }
   }
-\__kernel_msg_new:nnn { str } { unknown-esc }
+\msg_new:nnn { str } { unknown-esc }
   { Escaping~scheme~'#1'~(filtered:~'#2')~unknown. }
-\__kernel_msg_new:nnn { str } { unknown-enc }
+\msg_new:nnn { str } { unknown-enc }
   { Encoding~scheme~'#1'~(filtered:~'#2')~unknown. }
-\__kernel_msg_new:nnnn { str } { native-escaping }
+\msg_new:nnnn { str } { native-escaping }
   { The~'native'~encoding~scheme~does~not~support~any~escaping. }
   {
     Since~native~strings~do~not~consist~in~bytes,~
@@ -22069,7 +21989,7 @@
     none~of~the~escaping~methods~make~sense.~
     The~specified~escaping,~'#1',~will be ignored.
   }
-\__kernel_msg_new:nnn { str } { file-not-found }
+\msg_new:nnn { str } { file-not-found }
   { File~'l3str-#1.def'~not~found. }
 \bool_lazy_any:nT
   {
@@ -22077,7 +21997,7 @@
     \sys_if_engine_xetex_p:
   }
   {
-    \__kernel_msg_new:nnnn { str } { non-byte }
+    \msg_new:nnnn { str } { non-byte }
       { String~invalid~in~escaping~'#1':~it~may~only~contain~bytes. }
       {
         Some~characters~in~the~string~you~asked~to~convert~are~not~
@@ -22091,13 +22011,13 @@
           }
       }
   }
-\__kernel_msg_new:nnnn { str } { decode-8-bit }
+\msg_new:nnnn { str } { decode-8-bit }
   { Invalid~string~in~encoding~'#1'. }
   {
     LaTeX~came~across~a~byte~which~is~not~defined~to~represent~
     any~character~in~the~encoding~'#1'.
   }
-\__kernel_msg_new:nnnn { str } { encode-8-bit }
+\msg_new:nnnn { str } { encode-8-bit }
   { Unicode~string~cannot~be~converted~to~encoding~'#1'. }
   {
     The~encoding~'#1'~only~contains~a~subset~of~all~Unicode~characters.~
@@ -22144,7 +22064,7 @@
         \__str_unescape_hex_auxii:N
       }
   }
-\__kernel_msg_new:nnnn { str } { unescape-hex }
+\msg_new:nnnn { str } { unescape-hex }
   { String~invalid~in~escaping~'hex':~only~hexadecimal~digits~allowed. }
   {
     Some~characters~in~the~string~you~asked~to~convert~are~not~
@@ -22189,7 +22109,7 @@
         \__str_output_end:
         \use_i:nnn #3 ##2##3
       }
-    \__kernel_msg_new:nnnn { str } { unescape-#2 }
+    \msg_new:nnnn { str } { unescape-#2 }
       { String~invalid~in~escaping~'#2'. }
       {
         LaTeX~came~across~the~escape~character~'#1'~not~followed~by~
@@ -22279,7 +22199,7 @@
       \if_charcode:w ^^J #2 \else: ^^J \fi:
       \__str_unescape_string_newlines:wN #2
     }
-  \__kernel_msg_new:nnnn { str } { unescape-string }
+  \msg_new:nnnn { str } { unescape-string }
     { String~invalid~in~escaping~'string'. }
     {
       LaTeX~came~across~an~escape~character~'\c_backslash_str'~
@@ -22394,7 +22314,7 @@
 \flag_clear_new:n { str_extra }
 \flag_clear_new:n { str_overlong }
 \flag_clear_new:n { str_overflow }
-\__kernel_msg_new:nnnn { str } { utf8-decode }
+\msg_new:nnnn { str } { utf8-decode }
   {
     Invalid~UTF-8~string:
     \exp_last_unbraced:Nf \use_none:n
@@ -22441,6 +22361,8 @@
         Unicode~limits~code~points~to~the~range~[0,1114111].
       }
   }
+\prop_gput:Nnn \g_msg_module_name_prop { str } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { str } { }
 \cs_new_protected:cpn { __str_convert_decode_utf8: }
   {
     \flag_clear:n { str_error }
@@ -22574,7 +22496,7 @@
   \flag_clear_new:n { str_missing }
   \flag_clear_new:n { str_extra }
   \flag_clear_new:n { str_end }
-  \__kernel_msg_new:nnnn { str } { utf16-encode }
+  \msg_new:nnnn { str } { utf16-encode }
     { Unicode~string~cannot~be~expressed~in~UTF-16:~surrogate. }
     {
       Surrogate~code~points~(in~the~range~[U+D800,~U+DFFF])~
@@ -22581,7 +22503,7 @@
       can~be~expressed~in~the~UTF-8~and~UTF-32~encodings,~
       but~not~in~the~UTF-16~encoding.
     }
-  \__kernel_msg_new:nnnn { str } { utf16-decode }
+  \msg_new:nnnn { str } { utf16-decode }
     {
       Invalid~UTF-16~string:
       \exp_last_unbraced:Nf \use_none:n
@@ -22753,7 +22675,7 @@
     }
   \flag_clear_new:n { str_overflow }
   \flag_clear_new:n { str_end }
-  \__kernel_msg_new:nnnn { str } { utf32-decode }
+  \msg_new:nnnn { str } { utf32-decode }
     {
       Invalid~UTF-32~string:
       \exp_last_unbraced:Nf \use_none:n
@@ -23238,9 +23160,9 @@
       { \int_gdecr:N \g__kernel_prg_map_int }
   }
 \cs_new_protected:Npn \tl_analysis_show:N
-  { \__tl_analysis_show:NNN \__kernel_msg_show:nnxxxx \tl_show:N }
+  { \__tl_analysis_show:NNN \msg_show:nnxxxx \tl_show:N }
 \cs_new_protected:Npn \tl_analysis_log:N
-  { \__tl_analysis_show:NNN \__kernel_msg_log:nnxxxx \tl_log:N }
+  { \__tl_analysis_show:NNN \msg_log:nnxxxx \tl_log:N }
 \cs_new_protected:Npn \__tl_analysis_show:NNN #1#2#3
   {
     \tl_if_exist:NTF #3
@@ -23252,9 +23174,9 @@
       { #2 #3 }
   }
 \cs_new_protected:Npn \tl_analysis_show:n
-  { \__tl_analysis_show:Nn \__kernel_msg_show:nnxxxx }
+  { \__tl_analysis_show:Nn \msg_show:nnxxxx }
 \cs_new_protected:Npn \tl_analysis_log:n
-  { \__tl_analysis_show:Nn \__kernel_msg_log:nnxxxx }
+  { \__tl_analysis_show:Nn \msg_log:nnxxxx }
 \cs_new_protected:Npn \__tl_analysis_show:Nn #1#2
   {
     \__tl_analysis:n {#2}
@@ -23543,7 +23465,7 @@
   }
 \tl_const:Nx \c__tl_analysis_show_etc_str % (
   { \token_to_str:N \ETC.) }
-\__kernel_msg_new:nnn { tl } { show-analysis }
+\msg_new:nnn { tl } { show-analysis }
   {
     The~token~list~ \tl_if_empty:nF {#1} { #1 ~ }
     \tl_if_empty:nTF {#2}
@@ -23867,7 +23789,7 @@
 \cs_new_eq:cN { __regex_escape_ \iow_char:N\\scan_stop: :w } \prg_break:
 \cs_new:cpn { __regex_escape_/ \iow_char:N\\scan_stop: :w }
   {
-    \__kernel_msg_expandable_error:nn { regex } { trailing-backslash }
+    \msg_expandable_error:nn { regex } { trailing-backslash }
     \prg_break:
   }
 \cs_new:cpn { __regex_escape_~:w } { }
@@ -23892,7 +23814,7 @@
   {
     \int_compare:nNnTF {#1} > \c_max_char_int
       {
-        \__kernel_msg_expandable_error:nnff { regex } { x-overflow }
+        \msg_expandable_error:nnff { regex } { x-overflow }
           {#1} { \int_to_Hex:n {#1} }
       }
       {
@@ -23962,7 +23884,7 @@
   }
 \cs_new:Npn \__regex_escape_x_loop_error:n #1
   {
-    \__kernel_msg_expandable_error:nnn { regex } { x-missing-rbrace } {#1}
+    \msg_expandable_error:nnn { regex } { x-missing-rbrace } {#1}
     \__regex_escape_loop:N #1
   }
 \prg_new_conditional:Npnn \__regex_hexadecimal_use:N #1 { TF }
@@ -24137,7 +24059,7 @@
       \if_int_compare:w \l__regex_mode_int = \c__regex_class_mode_int
         \exp_after:wN \exp_after:wN \exp_after:wN \use:n
       \else:
-        \__kernel_msg_error:nn { regex } { c-bad-mode }
+        \msg_error:nn { regex } { c-bad-mode }
         \exp_after:wN \exp_after:wN \exp_after:wN \use_none:n
       \fi:
     \fi:
@@ -24170,13 +24092,13 @@
   {
       \__regex_if_in_class:TF
         {
-          \__kernel_msg_error:nn { regex } { missing-rbrack }
+          \msg_error:nn { regex } { missing-rbrack }
           \use:c { __regex_compile_]: }
           \prg_do_nothing: \prg_do_nothing:
         }
         { }
       \if_int_compare:w \l__regex_group_level_int > \c_zero_int
-        \__kernel_msg_error:nnx { regex } { missing-rparen }
+        \msg_error:nnx { regex } { missing-rparen }
           { \int_use:N \l__regex_group_level_int }
         \prg_replicate:nn
           { \l__regex_group_level_int }
@@ -24218,10 +24140,10 @@
       \prg_do_nothing: \prg_do_nothing:
       \prg_do_nothing: \prg_do_nothing:
       \int_compare:nNnT \l__regex_mode_int = \c__regex_catcode_mode_int
-        { \__kernel_msg_error:nn { regex } { c-trailing } }
+        { \msg_error:nn { regex } { c-trailing } }
       \int_compare:nNnT \l__regex_mode_int < \c__regex_outer_mode_int
         {
-          \__kernel_msg_error:nn { regex } { c-missing-rbrace }
+          \msg_error:nn { regex } { c-missing-rbrace }
           \__regex_compile_end_cs:
           \prg_do_nothing: \prg_do_nothing:
           \prg_do_nothing: \prg_do_nothing:
@@ -24292,7 +24214,7 @@
 \cs_new_protected:Npn \__regex_compile_quantifier_abort:xNN #1#2#3
   {
     \__regex_compile_quantifier_none:
-    \__kernel_msg_warning:nnxx { regex } { invalid-quantifier } {#1} {#3}
+    \msg_warning:nnxx { regex } { invalid-quantifier } {#1} {#3}
     \__regex_compile_abort_tokens:x {#1}
     #2 #3
   }
@@ -24362,7 +24284,7 @@
       {
         \if_int_compare:w \l__regex_internal_a_int >
           \l__regex_internal_b_int
-          \__kernel_msg_error:nnxx { regex } { backwards-quantifier }
+          \msg_error:nnxx { regex } { backwards-quantifier }
             { \int_use:N \l__regex_internal_a_int }
             { \int_use:N \l__regex_internal_b_int }
           \int_zero:N \l__regex_internal_b_int
@@ -24385,7 +24307,7 @@
   }
 \cs_new_protected:Npn \__regex_compile_raw_error:N #1
   {
-    \__kernel_msg_error:nnx { regex } { bad-escape } {#1}
+    \msg_error:nnx { regex } { bad-escape } {#1}
     \__regex_compile_raw:N #1
   }
 \cs_new_protected:Npn \__regex_compile_raw:N #1#2#3
@@ -24427,7 +24349,7 @@
     \__regex_if_end_range:NNTF #2 #3
       {
         \if_int_compare:w `#1 > `#3 \exp_stop_f:
-          \__kernel_msg_error:nnxx { regex } { range-backwards } {#1} {#3}
+          \msg_error:nnxx { regex } { range-backwards } {#1} {#3}
         \else:
           \tl_build_put_right:Nx \l__regex_build_tl
             {
@@ -24441,7 +24363,7 @@
         \fi:
       }
       {
-        \__kernel_msg_warning:nnxx { regex } { range-missing-end }
+        \msg_warning:nnxx { regex } { range-missing-end }
           {#1} { \c_backslash_str #3 }
         \tl_build_put_right:Nx \l__regex_build_tl
           {
@@ -24586,11 +24508,11 @@
           {
             : { \__regex_compile_class_posix:NNNNw }
             = {
-                \__kernel_msg_warning:nnx { regex }
+                \msg_warning:nnx { regex }
                   { posix-unsupported } { = }
               }
             . {
-                \__kernel_msg_warning:nnx { regex }
+                \msg_warning:nnx { regex }
                   { posix-unsupported } { . }
               }
           }
@@ -24632,7 +24554,7 @@
               }
           }
           {
-            \__kernel_msg_warning:nnx { regex } { posix-unknown }
+            \msg_warning:nnx { regex } { posix-unknown }
               { \l__regex_internal_a_tl }
             \__regex_compile_abort_tokens:x
               {
@@ -24642,7 +24564,7 @@
           }
       }
       {
-        \__kernel_msg_error:nnxx { regex } { posix-missing-close }
+        \msg_error:nnxx { regex } { posix-missing-close }
           { [: \l__regex_internal_a_tl } { #2 #4 }
         \__regex_compile_abort_tokens:x { [: \l__regex_internal_a_tl }
         #1 #2 #3 #4
@@ -24670,7 +24592,7 @@
       \int_set_eq:NN \l__regex_catcodes_int \l__regex_default_catcodes_int
       \exp_after:wN \__regex_compile_quantifier:w
     \else:
-      \__kernel_msg_warning:nn { regex } { extra-rparen }
+      \msg_warning:nn { regex } { extra-rparen }
       \exp_after:wN \__regex_compile_raw:N \exp_after:wN )
     \fi:
   }
@@ -24680,7 +24602,7 @@
       {
         \if_int_compare:w \l__regex_mode_int =
           \c__regex_catcode_in_class_mode_int
-          \__kernel_msg_error:nn { regex } { c-lparen-in-class }
+          \msg_error:nn { regex } { c-lparen-in-class }
           \exp_after:wN \__regex_compile_raw:N \exp_after:wN (
         \else:
           \exp_after:wN \__regex_compile_lparen:w
@@ -24694,7 +24616,7 @@
         \cs_if_exist_use:cF
           { __regex_compile_special_group_\token_to_str:N #4 :w }
           {
-            \__kernel_msg_warning:nnx { regex } { special-group-unknown }
+            \msg_warning:nnx { regex } { special-group-unknown }
               { (? #4 }
             \__regex_compile_group_begin:N \__regex_group:nnnN
               \__regex_compile_raw:N ? #3 #4
@@ -24732,7 +24654,7 @@
           { \__regex_item_caseless_range:nn }
       }
       {
-        \__kernel_msg_warning:nnx { regex } { unknown-option } { (?i #2 }
+        \msg_warning:nnx { regex } { unknown-option } { (?i #2 }
         \__regex_compile_raw:N (
         \__regex_compile_raw:N ?
         \__regex_compile_raw:N i
@@ -24751,7 +24673,7 @@
           { \__regex_item_caseful_range:nn }
       }
       {
-        \__kernel_msg_warning:nnx { regex } { unknown-option } { (?-#2#4 }
+        \msg_warning:nnx { regex } { unknown-option } { (?-#2#4 }
         \__regex_compile_raw:N (
         \__regex_compile_raw:N ?
         \__regex_compile_raw:N -
@@ -24779,7 +24701,7 @@
       }
       { \cs_if_exist_use:cF { __regex_compile_c_#2:w } }
           {
-            \__kernel_msg_error:nnx { regex } { c-missing-category } {#2}
+            \msg_error:nnx { regex } { c-missing-category } {#2}
             #1 #2
           }
   }
@@ -24792,7 +24714,7 @@
           { \token_if_eq_charcode:NNF #2 ( } % )
       }
       { \use:n }
-    { \__kernel_msg_error:nnn { regex } { c-C-invalid } {#2} }
+    { \msg_error:nnn { regex } { c-C-invalid } {#2} }
     #1 #2
   }
 \cs_new_protected:cpn { __regex_compile_c_[:w } #1#2
@@ -24831,7 +24753,7 @@
           { \__regex_compile_c_lbrack_end: }
       }
           {
-            \__kernel_msg_error:nnx { regex } { c-missing-rbrack } {#2}
+            \msg_error:nnx { regex } { c-missing-rbrack } {#2}
             \__regex_compile_c_lbrack_end:
             #1 #2
           }
@@ -24864,7 +24786,7 @@
 \cs_new_protected:cpn { __regex_compile_ \c_left_brace_str : }
   {
     \__regex_if_in_cs:TF
-      { \__kernel_msg_error:nnn { regex } { cu-lbrace } { c } }
+      { \msg_error:nnn { regex } { cu-lbrace } { c } }
       { \exp_after:wN \__regex_compile_raw:N \c_left_brace_str }
   }
 \flag_new:n { __regex_cs }
@@ -24951,7 +24873,7 @@
         \__regex_compile_u_loop:NN
       }
       {
-        \__kernel_msg_error:nn { regex } { u-missing-lbrace }
+        \msg_error:nn { regex } { u-missing-lbrace }
         \token_if_eq_meaning:NNTF #1 \__regex_compile_ur_end:
           { \__regex_compile_raw:N u \__regex_compile_raw:N r }
           { \__regex_compile_raw:N u }
@@ -24969,7 +24891,7 @@
               { \if_false: { \fi: } \l__regex_internal_b_tl }
               {
                 \if_charcode:w \c_left_brace_str #2
-                  \__kernel_msg_expandable_error:nnn { regex } { cu-lbrace } { u }
+                  \msg_expandable_error:nnn { regex } { cu-lbrace } { u }
                 \else:
                   #2
                 \fi:
@@ -24978,7 +24900,7 @@
           }
           {
             \if_false: { \fi: }
-            \__kernel_msg_error:nnx { regex } { u-missing-rbrace } {#2}
+            \msg_error:nnx { regex } { u-missing-rbrace } {#2}
             \l__regex_internal_b_tl
             #1 #2
           }
@@ -26083,7 +26005,7 @@
         {#1}
       \prg_do_nothing: \prg_do_nothing:
       \if_int_compare:w \l__regex_replacement_csnames_int > \c_zero_int
-        \__kernel_msg_error:nnx { regex } { replacement-missing-rbrace }
+        \msg_error:nnx { regex } { replacement-missing-rbrace }
           { \int_use:N \l__regex_replacement_csnames_int }
         \tl_build_put_right:Nx \l__regex_build_tl
           { \prg_replicate:nn \l__regex_replacement_csnames_int \cs_end: }
@@ -26090,7 +26012,7 @@
       \fi:
       \seq_if_empty:NF \l__regex_replacement_category_seq
         {
-          \__kernel_msg_error:nnx { regex } { replacement-missing-rparen }
+          \msg_error:nnx { regex } { replacement-missing-rparen }
             { \seq_count:N \l__regex_replacement_category_seq }
           \seq_clear:N \l__regex_replacement_category_seq
         }
@@ -26185,7 +26107,7 @@
     \if_int_compare:w #1 < \l__regex_capturing_group_int
       \__regex_replacement_put_submatch_aux:n {#1}
     \else:
-      \__kernel_msg_expandable_error:nnff { regex } { submatch-too-big }
+      \msg_expandable_error:nnff { regex } { submatch-too-big }
         {#1} { \int_eval:n { \l__regex_capturing_group_int - 1 } }
     \fi:
   }
@@ -26277,7 +26199,7 @@
 \cs_new_protected:Npn \__regex_replacement_lbrace:N #1
   {
     \if_int_compare:w \l__regex_replacement_csnames_int > \c_zero_int
-      \__kernel_msg_error:nnn { regex } { cu-lbrace } { u }
+      \msg_error:nnn { regex } { cu-lbrace } { u }
     \else:
       \__regex_replacement_normal:n {#1}
     \fi:
@@ -26285,11 +26207,11 @@
 \cs_new_protected:Npn \__regex_replacement_cat:NNN #1#2#3
   {
     \token_if_eq_meaning:NNTF \prg_do_nothing: #3
-      { \__kernel_msg_error:nn { regex } { replacement-catcode-end } }
+      { \msg_error:nn { regex } { replacement-catcode-end } }
       {
         \int_compare:nNnTF { \l__regex_replacement_csnames_int } > 0
           {
-            \__kernel_msg_error:nnnn
+            \msg_error:nnnn
               { regex } { replacement-catcode-in-cs } {#1} {#3}
             #2 #3
           }
@@ -26305,7 +26227,7 @@
                   {
                     \__regex_char_if_alphanumeric:NTF #3
                       {
-                        \__kernel_msg_error:nnnn
+                        \msg_error:nnnn
                           { regex } { replacement-catcode-escaped }
                           {#1} {#3}
                       }
@@ -26369,7 +26291,7 @@
   \cs_new_protected:Npn \__regex_replacement_c_S:w #1#2
     {
       \if_int_compare:w `#2 = \c_zero_int
-        \__kernel_msg_error:nn { regex } { replacement-null-space }
+        \msg_error:nn { regex } { replacement-null-space }
       \fi:
       \tex_lccode:D `\ = `#2 \scan_stop:
       \tex_lowercase:D { \__regex_replacement_put:n {~} }
@@ -26383,7 +26305,7 @@
 \group_end:
 \cs_new_protected:Npn \__regex_replacement_error:NNN #1#2#3
   {
-    \__kernel_msg_error:nnx { regex } { replacement-#1 } {#3}
+    \msg_error:nnx { regex } { replacement-#1 } {#3}
     #2 #3
   }
 \cs_new_protected:Npn \regex_new:N #1
@@ -26407,8 +26329,8 @@
     \__regex_compile:n {#2}
     \tl_const:Nx #1 { \exp_not:o \l__regex_internal_regex }
   }
-\cs_new_protected:Npn \regex_show:n { \__regex_show:Nn \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:n { \__regex_show:Nn \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:n { \__regex_show:Nn \msg_show:nnxxxx }
+\cs_new_protected:Npn \regex_log:n { \__regex_show:Nn \msg_log:nnxxxx }
 \cs_new_protected:Npn \__regex_show:Nn #1#2
   {
     \__regex_compile:n {#2}
@@ -26417,8 +26339,8 @@
       { \tl_to_str:n {#2} } { }
       { \l__regex_internal_a_tl } { }
   }
-\cs_new_protected:Npn \regex_show:N { \__regex_show:NN \__kernel_msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:N { \__regex_show:NN \__kernel_msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:N { \__regex_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \regex_log:N { \__regex_show:NN \msg_log:nnxxxx }
 \cs_new_protected:Npn \__regex_show:NN #1#2
   {
     \__kernel_chk_tl_type:NnnT #2 { regex }
@@ -26604,7 +26526,7 @@
       \int_compare:nNnT
         { \l__regex_added_begin_int + \l__regex_added_end_int } > 0
         {
-          \__kernel_msg_error:nnxxx { regex } { result-unbalanced }
+          \msg_error:nnxxx { regex } { result-unbalanced }
             { splitting~or~extracting~submatches }
             { \int_use:N \l__regex_added_begin_int }
             { \int_use:N \l__regex_added_end_int }
@@ -26787,7 +26709,7 @@
     \__regex_group_end_replace_try:
     \int_compare:nNnT { \l__regex_added_begin_int + \l__regex_added_end_int } > 0
       {
-        \__kernel_msg_error:nnxxx { regex } { result-unbalanced }
+        \msg_error:nnxxx { regex } { result-unbalanced }
           { replacing } { \int_use:N \l__regex_added_begin_int }
           { \int_use:N \l__regex_added_end_int }
       }
@@ -27011,20 +26933,20 @@
   }
 \use:x
   {
-    \__kernel_msg_new:nnn { regex } { trailing-backslash }
-      { Trailing~escape~char~'\iow_char:N\\'~in~regex~or~replacement. }
-    \__kernel_msg_new:nnn { regex } { x-missing-rbrace }
+    \msg_new:nnn { regex } { trailing-backslash }
+      { Trailing~'\iow_char:N\\'~in~regex~or~replacement. }
+    \msg_new:nnn { regex } { x-missing-rbrace }
       {
         Missing~brace~'\iow_char:N\}'~in~regex~
         '...\iow_char:N\\x\iow_char:N\{...##1'.
       }
-    \__kernel_msg_new:nnn { regex } { x-overflow }
+    \msg_new:nnn { regex } { x-overflow }
       {
         Character~code~##1~too~large~in~
         \iow_char:N\\x\iow_char:N\{##2\iow_char:N\}~regex.
       }
   }
-\__kernel_msg_new:nnnn { regex } { invalid-quantifier }
+\msg_new:nnnn { regex } { invalid-quantifier }
   { Braced~quantifier~'#1'~may~not~be~followed~by~'#2'. }
   {
     The~character~'#2'~is~invalid~in~the~braced~quantifier~'#1'.~
@@ -27031,13 +26953,13 @@
     The~only~valid~quantifiers~are~'*',~'?',~'+',~'{<int>}',~
     '{<min>,}'~and~'{<min>,<max>}',~optionally~followed~by~'?'.
   }
-\__kernel_msg_new:nnnn { regex } { missing-rbrack }
+\msg_new:nnnn { regex } { missing-rbrack }
   { Missing~right~bracket~inserted~in~regular~expression. }
   {
     LaTeX~was~given~a~regular~expression~where~a~character~class~
     was~started~with~'[',~but~the~matching~']'~is~missing.
   }
-\__kernel_msg_new:nnnn { regex } { missing-rparen }
+\msg_new:nnnn { regex } { missing-rparen }
   {
     Missing~right~
     \int_compare:nTF { #1 = 1 } { parenthesis } { parentheses } ~
@@ -27047,13 +26969,13 @@
     LaTeX~was~given~a~regular~expression~with~\int_eval:n {#1} ~
     more~left~parentheses~than~right~parentheses.
   }
-\__kernel_msg_new:nnnn { regex } { extra-rparen }
+\msg_new:nnnn { regex } { extra-rparen }
   { Extra~right~parenthesis~ignored~in~regular~expression. }
   {
     LaTeX~came~across~a~closing~parenthesis~when~no~submatch~group~
     was~open.~The~parenthesis~will~be~ignored.
   }
-\__kernel_msg_new:nnnn { regex } { bad-escape }
+\msg_new:nnnn { regex } { bad-escape }
   {
     Invalid~escape~'\iow_char:N\\#1'~
     \__regex_if_in_cs:TF { within~a~control~sequence. }
@@ -27077,7 +26999,7 @@
         because~it~does~not~match~exactly~one~character.
       }
   }
-\__kernel_msg_new:nnnn { regex } { range-missing-end }
+\msg_new:nnnn { regex } { range-missing-end }
   { Invalid~end-point~for~range~'#1-#2'~in~character~class. }
   {
     The~end-point~'#2'~of~the~range~'#1-#2'~may~not~serve~as~an~
@@ -27084,7 +27006,7 @@
     end-point~for~a~range:~alphanumeric~characters~should~not~be~
     escaped,~and~non-alphanumeric~characters~should~be~escaped.
   }
-\__kernel_msg_new:nnnn { regex } { range-backwards }
+\msg_new:nnnn { regex } { range-backwards }
   { Range~'[#1-#2]'~out~of~order~in~character~class. }
   {
     In~ranges~of~characters~'[x-y]'~appearing~in~character~classes,~
@@ -27092,7 +27014,7 @@
     Here,~'#1'~has~character~code~\int_eval:n {`#1},~while~
     '#2'~has~character~code~\int_eval:n {`#2}.
   }
-\__kernel_msg_new:nnnn { regex } { c-bad-mode }
+\msg_new:nnnn { regex } { c-bad-mode }
   { Invalid~nested~'\iow_char:N\\c'~escape~in~regular~expression. }
   {
     The~'\iow_char:N\\c'~escape~cannot~be~used~within~
@@ -27100,7 +27022,7 @@
     nor~another~category~test.~
     To~combine~several~category~tests,~use~'\iow_char:N\\c[...]'.
   }
-\__kernel_msg_new:nnnn { regex } { c-C-invalid }
+\msg_new:nnnn { regex } { c-C-invalid }
   { '\iow_char:N\\cC'~should~be~followed~by~'.'~or~'(',~not~'#1'. }
   {
     The~'\iow_char:N\\cC'~construction~restricts~the~next~item~to~be~a~
@@ -27107,7 +27029,7 @@
     control~sequence~or~the~next~group~to~be~made~of~control~sequences.~
     It~only~makes~sense~to~follow~it~by~'.'~or~by~a~group.
   }
-\__kernel_msg_new:nnnn { regex } { cu-lbrace }
+\msg_new:nnnn { regex } { cu-lbrace }
   { Left~braces~must~be~escaped~in~'\iow_char:N\\#1{...}'. }
   {
     Constructions~such~as~'\iow_char:N\\#1{...\iow_char:N\{...}'~are~
@@ -27114,13 +27036,13 @@
     not~allowed~and~should~be~replaced~by~
     '\iow_char:N\\#1{...\token_to_str:N\{...}'.
   }
-\__kernel_msg_new:nnnn { regex } { c-lparen-in-class }
+\msg_new:nnnn { regex } { c-lparen-in-class }
   { Catcode~test~cannot~apply~to~group~in~character~class }
   {
     Construction~such~as~'\iow_char:N\\cL(abc)'~are~not~allowed~inside~a~
     class~'[...]'~because~classes~do~not~match~multiple~characters~at~once.
   }
-\__kernel_msg_new:nnnn { regex } { c-missing-rbrace }
+\msg_new:nnnn { regex } { c-missing-rbrace }
   { Missing~right~brace~inserted~for~'\iow_char:N\\c'~escape. }
   {
     LaTeX~was~given~a~regular~expression~where~a~
@@ -27127,13 +27049,13 @@
     '\iow_char:N\\c\iow_char:N\{...'~construction~was~not~ended~
     with~a~closing~brace~'\iow_char:N\}'.
   }
-\__kernel_msg_new:nnnn { regex } { c-missing-rbrack }
+\msg_new:nnnn { regex } { c-missing-rbrack }
   { Missing~right~bracket~inserted~for~'\iow_char:N\\c'~escape. }
   {
     A~construction~'\iow_char:N\\c[...'~appears~in~a~
     regular~expression,~but~the~closing~']'~is~not~present.
   }
-\__kernel_msg_new:nnnn { regex } { c-missing-category }
+\msg_new:nnnn { regex } { c-missing-category }
   { Invalid~character~'#1'~following~'\iow_char:N\\c'~escape. }
   {
     In~regular~expressions,~the~'\iow_char:N\\c'~escape~sequence~
@@ -27141,19 +27063,19 @@
     capital~letter~representing~a~character~category,~namely~
     one~of~'ABCDELMOPSTU'.
   }
-\__kernel_msg_new:nnnn { regex } { c-trailing }
+\msg_new:nnnn { regex } { c-trailing }
   { Trailing~category~code~escape~'\iow_char:N\\c'... }
   {
     A~regular~expression~ends~with~'\iow_char:N\\c'~followed~
     by~a~letter.~It~will~be~ignored.
   }
-\__kernel_msg_new:nnnn { regex } { u-missing-lbrace }
+\msg_new:nnnn { regex } { u-missing-lbrace }
   { Missing~left~brace~following~'\iow_char:N\\u'~escape. }
   {
     The~'\iow_char:N\\u'~escape~sequence~must~be~followed~by~
     a~brace~group~with~the~name~of~the~variable~to~use.
   }
-\__kernel_msg_new:nnnn { regex } { u-missing-rbrace }
+\msg_new:nnnn { regex } { u-missing-rbrace }
   { Missing~right~brace~inserted~for~'\iow_char:N\\u'~escape. }
   {
     LaTeX~
@@ -27163,7 +27085,7 @@
     when~parsing~the~argument~of~an~
     '\iow_char:N\\u\iow_char:N\{...\}'~escape.
   }
-\__kernel_msg_new:nnnn { regex } { posix-unsupported }
+\msg_new:nnnn { regex } { posix-unsupported }
   { POSIX~collating~element~'[#1 ~ #1]'~not~supported. }
   {
     The~'[.foo.]'~and~'[=bar=]'~syntaxes~have~a~special~meaning~
@@ -27170,7 +27092,7 @@
     in~POSIX~regular~expressions.~This~is~not~supported~by~LaTeX.~
     Maybe~you~forgot~to~escape~a~left~bracket~in~a~character~class?
   }
-\__kernel_msg_new:nnnn { regex } { posix-unknown }
+\msg_new:nnnn { regex } { posix-unknown }
   { POSIX~class~'[:#1:]'~unknown. }
   {
     '[:#1:]'~is~not~among~the~known~POSIX~classes~
@@ -27179,10 +27101,10 @@
     '[:print:]',~'[:punct:]',~'[:space:]',~'[:upper:]',~
     '[:word:]',~and~'[:xdigit:]'.
   }
-\__kernel_msg_new:nnnn { regex } { posix-missing-close }
+\msg_new:nnnn { regex } { posix-missing-close }
   { Missing~closing~':]'~for~POSIX~class. }
   { The~POSIX~syntax~'#1'~must~be~followed~by~':]',~not~'#2'. }
-\__kernel_msg_new:nnnn { regex } { result-unbalanced }
+\msg_new:nnnn { regex } { result-unbalanced }
   { Missing~brace~inserted~when~#1. }
   {
     LaTeX~was~asked~to~do~some~regular~expression~operation,~
@@ -27190,19 +27112,19 @@
     of~begin-group~and~end-group~tokens.~Braces~were~inserted:~
     #2~left,~#3~right.
   }
-\__kernel_msg_new:nnnn { regex } { unknown-option }
+\msg_new:nnnn { regex } { unknown-option }
   { Unknown~option~'#1'~for~regular~expressions. }
   {
     The~only~available~option~is~'case-insensitive',~toggled~by~
     '(?i)'~and~'(?-i)'.
   }
-\__kernel_msg_new:nnnn { regex } { special-group-unknown }
+\msg_new:nnnn { regex } { special-group-unknown }
   { Unknown~special~group~'#1~...'~in~a~regular~expression. }
   {
     The~only~valid~constructions~starting~with~'(?'~are~
     '(?:~...~)',~'(?|~...~)',~'(?i)',~and~'(?-i)'.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-c }
+\msg_new:nnnn { regex } { replacement-c }
   { Misused~'\iow_char:N\\c'~command~in~a~replacement~text. }
   {
     In~a~replacement~text,~the~'\iow_char:N\\c'~escape~sequence~
@@ -27209,7 +27131,7 @@
     can~be~followed~by~one~of~the~letters~'ABCDELMOPSTU'~
     or~a~brace~group,~not~by~'#1'.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-u }
+\msg_new:nnnn { regex } { replacement-u }
   { Misused~'\iow_char:N\\u'~command~in~a~replacement~text. }
   {
     In~a~replacement~text,~the~'\iow_char:N\\u'~escape~sequence~
@@ -27216,7 +27138,7 @@
     must~be~~followed~by~a~brace~group~holding~the~name~of~the~
     variable~to~use.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-g }
+\msg_new:nnnn { regex } { replacement-g }
   {
     Missing~brace~for~the~'\iow_char:N\\g'~construction~
     in~a~replacement~text.
@@ -27226,7 +27148,7 @@
     submatches~are~represented~either~as~'\iow_char:N \\g{dd..d}',~
     or~'\\d',~where~'d'~are~single~digits.~Here,~a~brace~is~missing.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-catcode-end }
+\msg_new:nnnn { regex } { replacement-catcode-end }
   {
     Missing~character~for~the~'\iow_char:N\\c<category><character>'~
     construction~in~a~replacement~text.
@@ -27237,7 +27159,7 @@
     the~character~category.~Then,~a~character~must~follow.~LaTeX~
     reached~the~end~of~the~replacement~when~looking~for~that.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-catcode-escaped }
+\msg_new:nnnn { regex } { replacement-catcode-escaped }
   {
     Escaped~letter~or~digit~after~category~code~in~replacement~text.
   }
@@ -27247,7 +27169,7 @@
     the~character~category.~Then,~a~character~must~follow,~not~
     '\iow_char:N\\#2'.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-catcode-in-cs }
+\msg_new:nnnn { regex } { replacement-catcode-in-cs }
   {
     Category~code~'\iow_char:N\\c#1#3'~ignored~inside~
     '\iow_char:N\\c\{...\}'~in~a~replacement~text.
@@ -27257,7 +27179,7 @@
     '\iow_char:N\\c\{...\}'~are~ignored~when~building~the~control~
     sequence~name.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-null-space }
+\msg_new:nnnn { regex } { replacement-null-space }
   { TeX~cannot~build~a~space~token~with~character~code~0. }
   {
     You~asked~for~a~character~token~with~category~space,~
@@ -27266,13 +27188,13 @@
     This~specific~case~is~impossible~and~will~be~replaced~
     by~a~normal~space.
   }
-\__kernel_msg_new:nnnn { regex } { replacement-missing-rbrace }
+\msg_new:nnnn { regex } { replacement-missing-rbrace }
   { Missing~right~brace~inserted~in~replacement~text. }
   {
     There~ \int_compare:nTF { #1 = 1 } { was } { were } ~ #1~
     missing~right~\int_compare:nTF { #1 = 1 } { brace } { braces } .
   }
-\__kernel_msg_new:nnnn { regex } { replacement-missing-rparen }
+\msg_new:nnnn { regex } { replacement-missing-rparen }
   { Missing~right~parenthesis~inserted~in~replacement~text. }
   {
     There~ \int_compare:nTF { #1 = 1 } { was } { were } ~ #1~
@@ -27279,17 +27201,19 @@
     missing~right~
     \int_compare:nTF { #1 = 1 } { parenthesis } { parentheses } .
   }
-\__kernel_msg_new:nnn { regex } { submatch-too-big }
+\msg_new:nnn { regex } { submatch-too-big }
   { Submatch~#1~used~but~regex~only~has~#2~group(s) }
-\__kernel_msg_new:nnnn { regex } { backwards-quantifier }
+\msg_new:nnnn { regex } { backwards-quantifier }
   { Quantifer~"{#1,#2}"~is~backwards. }
   { The~values~given~in~a~quantifier~must~be~in~order. }
-\__kernel_msg_new:nnn { regex } { show }
+\msg_new:nnn { regex } { show }
   {
     >~Compiled~regex~
     \tl_if_empty:nTF {#1} { variable~ #2 } { {#1} } :
     #3
   }
+\prop_gput:Nnn \g_msg_module_name_prop { regex } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { regex } { }
 \cs_new:Npn \__regex_msg_repeated:nnN #1#2#3
   {
     \str_if_eq:eeF { #1 #2 } { 1 0 }
@@ -27472,7 +27396,7 @@
         \group_end:
       }
       {
-        \__kernel_msg_error:nnx { kernel } { variable-not-defined }
+        \msg_error:nnx { kernel } { variable-not-defined }
           { \token_to_str:N #2 }
       }
   }
@@ -28137,7 +28061,7 @@
           { \__color_parse_loop_init:Nnn #1 {#2} {#3} }
       }
       {
-        \__kernel_msg_error:nnn { color } { unknown-color } {#2}
+        \msg_error:nnn { color } { unknown-color } {#2}
         \tl_set:Nn \l__color_current_tl { { gray } { 0 } }
       }
   }
@@ -28194,7 +28118,7 @@
           }
       }
       {
-        \__kernel_msg_error:nnn { color } { unknown-color } {#2}
+        \msg_error:nnn { color } { unknown-color } {#2}
         \__color_extract:nNN { black } \l__color_model_tl \l__color_value_tl
         \__color_parse_break:w
       }
@@ -28480,7 +28404,7 @@
         \tl_set:Nx #3
           { \use:c { __color_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s__color_stop }
       }
-      { \__kernel_msg_error:nnn { color } { unknown-model } {#1} }
+      { \msg_error:nnn { color } { unknown-model } {#1} }
   }
 \cs_new_protected:Npn \__color_select_swap:Nnn #1#2#3
   {
@@ -28618,7 +28542,7 @@
           }
       }
       {
-        \__kernel_msg_error:nnn { color } { unknown-color } {#2}
+        \msg_error:nnn { color } { unknown-color } {#2}
       }
   }
 \color_set:nnn { black } { gray } { 0 }
@@ -28654,7 +28578,7 @@
   {
     \cs_if_exist_use:cF { __color_export_format_ #3 :nnN }
       {
-        \__kernel_msg_error:nnn { color } { unknown-export-format } {#3}
+        \msg_error:nnn { color } { unknown-export-format } {#3}
         \use_none:nnn
       }
         {#1} {#2} #4
@@ -28761,7 +28685,7 @@
   {
     \cs_if_exist:cTF { __color_parse_model_ #1 :w }
       {
-        \__kernel_msg_error:nnn { color } { model-already-defined } {#1}
+        \msg_error:nnn { color } { model-already-defined } {#1}
       }
       {
         \cs_if_exist:cTF { __color_model_ #2 :n }
@@ -28770,7 +28694,7 @@
             \use:c { __color_model_ #2 :n } {#1}
           }
           {
-            \__kernel_msg_error:nnn { color } { unknown-model-type } {#2}
+            \msg_error:nnn { color } { unknown-model-type } {#2}
           }
       }
   }
@@ -28805,7 +28729,7 @@
           \l__color_internal_tl {#1}
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { separation-requires-name } {#1}
       }
   }
@@ -28818,7 +28742,7 @@
           \l__color_internal_tl {#2} {#1}
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { separation-alternative-model } {#2}
       }
   }
@@ -28833,12 +28757,12 @@
               , 0 , 0 , 0 , 0 \s__color_stop {#2} {#3} {#1}
           }
           {
-            \__kernel_msg_error:nnn { color }
+            \msg_error:nnn { color }
               { separation-alternative-values } {#2}
           }
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { unknown-alternative-model } {#1}
       }
   }
@@ -28919,7 +28843,7 @@
     \prop_get:NnNF \l__color_internal_prop { illuminant }
       \l__color_internal_tl
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { CIELAB-requires-illuminant } {#1}
         \tl_set:Nn \l__color_internal_tl { d50 }
       }
@@ -28939,7 +28863,7 @@
           { 1 }
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { unknown-CIELAB-illuminant } {#1}
       }
   }
@@ -28952,7 +28876,7 @@
           \l__color_internal_tl {#1}
       }
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { DeviceN-requires-names } {#1}
       }
   }
@@ -28969,7 +28893,7 @@
               {
                 \str_if_eq:VVF \l__color_model_tl \l__color_internal_tl
                   {
-                    \__kernel_msg_error:nnn { color }
+                    \msg_error:nnn { color }
                       { DeviceN-inconsistent-alternative }
                       {#2}
                     \clist_map_break:n { \use_none:nnnn }
@@ -28979,7 +28903,7 @@
           {
             \str_if_eq:nnF {##1} { none }
               {
-                \__kernel_msg_error:nnn { color }
+                \msg_error:nnn { color }
                   { DeviceN-no-alternative }
                   {#2}
               }
@@ -28987,7 +28911,7 @@
       }
     \tl_if_empty:NTF \l__color_model_tl
       {
-        \__kernel_msg_error:nnn { color }
+        \msg_error:nnn { color }
           { DeviceN-no-alternative } {#2}
       }
       { \exp_args:NV \__color_model_devicen:nnn \l__color_model_tl {#1} {#2} }
@@ -29313,9 +29237,9 @@
       }
   }
 \cs_new_protected:Npn \color_show:n
-  { \__color_show:Nn \__kernel_msg_show:nnxxxx }
+  { \__color_show:Nn \msg_show:nnxxxx }
 \cs_new_protected:Npn \color_log:n
-  { \__color_show:Nn \__kernel_msg_log:nnxxxx }
+  { \__color_show:Nn \msg_log:nnxxxx }
 \cs_new_protected:Npn \__color_show:Nn #1#2
   {
     #1 { color } { show }
@@ -29336,7 +29260,7 @@
   {
     \msg_show_item_unbraced:nn { model } {#1}
   }
-\__kernel_msg_new:nnnn { color } { CIELAB-requires-illuminant }
+\msg_new:nnnn { color } { CIELAB-requires-illuminant }
   { CIELAB~color~space~'#1'~require~an~illuminant. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space~using~
@@ -29346,13 +29270,13 @@
     key~was~given~with~the~correct~information.~LaTeX~will~use~illuminant~
     'd50'~for~recovery.
   }
-\__kernel_msg_new:nnnn { color } { conversion-not-available }
+\msg_new:nnnn { color } { conversion-not-available }
   { No~model~conversion~available~from~'#1'~to~'#2'. }
   {
     LaTeX~has~been~asked~to~convert~a~color~from~model~'#1'~
     to~model'#2',~but~there~is~no~method~available~to~do~that.
   }
-\__kernel_msg_new:nnnn { color } { DeviceN-inconsistent-alternative }
+\msg_new:nnnn { color } { DeviceN-inconsistent-alternative }
   { DeviceN~color~spaces~require~a~single~alternative~space. }
   {
     LaTeX~has~been~asked~to~create~a~DeviceN~color~space~'#1',~
@@ -29359,13 +29283,13 @@
     but~the~constituent~colors~do~not~have~a~common~alternative~
     color.
   }
-\__kernel_msg_new:nnnn { color } { DeviceN-no-alternative }
+\msg_new:nnnn { color } { DeviceN-no-alternative }
   { DeviceN~color~spaces~require~an~alternative~space. }
   {
     LaTeX~has~been~asked~to~create~a~DeviceN~color~space~'#1',~
     but~the~constituent~colors~do~not~all~have~a~device-based~alternative.
   }
-\__kernel_msg_new:nnnn { color } { DeviceN-requires-names }
+\msg_new:nnnn { color } { DeviceN-requires-names }
   { DeviceN~color~space~'#1'~require~a~list~of~names. }
   {
     LaTeX~has~been~asked~to~create~a~DeviceN~color~space,~
@@ -29374,13 +29298,13 @@
     \\ \\
     key~was~given~with~the~correct~information.
   }
-\__kernel_msg_new:nnnn { color } { model-already-defined }
+\msg_new:nnnn { color } { model-already-defined }
   { Color~model~'#1'~already~defined. }
   {
     LaTeX~was~asked~to~define~a~new~color~model~called~'#1',~but~
     this~color~model~already~exists.
   }
-\__kernel_msg_new:nnnn { color } { separation-alternative-model }
+\msg_new:nnnn { color } { separation-alternative-model }
   { Separation~color~space~'#1'~require~an~alternative~model. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
@@ -29389,7 +29313,7 @@
     \\ \\
     key~was~given~with~the~correct~information.
   }
-\__kernel_msg_new:nnnn { color } { separation-alternative-values }
+\msg_new:nnnn { color } { separation-alternative-values }
   { Separation~color~space~'#1'~require~values~for~the~alternative~space. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
@@ -29398,7 +29322,7 @@
     \\ \\
     key~was~given~with~the~correct~information.
   }
-\__kernel_msg_new:nnnn { color } { separation-requires-name }
+\msg_new:nnnn { color } { separation-requires-name }
   { Separation~color~space~'#1'~require~a~formal~name. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
@@ -29407,13 +29331,13 @@
     \\ \\
     key~was~given~with~the~correct~information.
   }
-\__kernel_msg_new:nnnn { color } { unknown-color }
+\msg_new:nnnn { color } { unknown-color }
   { Unknown~color~'#1'. }
   {
     LaTeX~has~been~asked~to~use~a~color~named~'#1',~
     but~this~has~never~been~defined.
   }
-\__kernel_msg_new:nnnn { color } { unknown-alternative-model }
+\msg_new:nnnn { color } { unknown-alternative-model }
   { Separation~color~space~'#1'~require~an~valid~alternative~space. }
   {
     LaTeX~has~been~asked~to~create~a~separation~color~space,~
@@ -29422,31 +29346,33 @@
     \\ \\
     is~unknown.
   }
-\__kernel_msg_new:nnnn { color } { unknown-export-format }
+\msg_new:nnnn { color } { unknown-export-format }
   { Unknown~export~format~'#1'. }
   {
     LaTeX~has~been~asked~to~export~a~color~in~format~'#1',~
     but~this~has~never~been~defined.
   }
-\__kernel_msg_new:nnnn { color } { unknown-CIELAB-illuminant }
+\msg_new:nnnn { color } { unknown-CIELAB-illuminant }
   { Unknown~illuminant~model~'#1'. }
   {
     LaTeX~has~been~asked~to~use~create~a~color~space~using~CIELAB~
     illuminant~'#1',~but~this~does~not~exist.
   }
-\__kernel_msg_new:nnnn { color } { unknown-model }
+\msg_new:nnnn { color } { unknown-model }
   { Unknown~color~model~'#1'. }
   {
     LaTeX~has~been~asked~to~use~a~color~model~called~'#1',~
     but~this~model~is~not~set~up.
   }
-\__kernel_msg_new:nnnn { color } { unknown-model-type }
+\msg_new:nnnn { color } { unknown-model-type }
   { Unknown~color~model~type~'#1'. }
   {
     LaTeX~has~been~asked~to~create~a~new~color~model~called~'#1',~
     but~this~type~of~model~was~never~set~up.
   }
-\__kernel_msg_new:nnn { color } { show }
+\prop_gput:Nnn \g_msg_module_name_prop { color } { LaTeX3 }
+\prop_gput:Nnn \g_msg_module_type_prop { color } { }
+\msg_new:nnn { color } { show }
   {
     The~color~#1~
     \tl_if_empty:nTF {#2}
@@ -29610,7 +29536,7 @@
     \coffin_if_exist:NTF #1
       { #2 }
       {
-        \__kernel_msg_error:nnx { coffin } { unknown }
+        \msg_error:nnx { coffin } { unknown }
           { \token_to_str:N #1 }
       }
   }
@@ -29830,7 +29756,7 @@
     \prop_get:cnNF
       { coffin ~ \__coffin_to_value:N #1 ~ poles } {#2} #3
       {
-        \__kernel_msg_error:nnxx { coffin } { unknown-pole }
+        \msg_error:nnxx { coffin } { unknown-pole }
           { \exp_not:n {#2} } { \token_to_str:N #1 }
         \tl_set:Nn #3 { { 0pt } { 0pt } { 0pt } { 0pt } }
       }
@@ -29988,7 +29914,7 @@
         \l__coffin_pole_a_tl \l__coffin_pole_b_tl
     \bool_if:NT \l__coffin_error_bool
       {
-        \__kernel_msg_error:nn { coffin } { no-pole-intersection }
+        \msg_error:nn { coffin } { no-pole-intersection }
         \dim_zero:N \l__coffin_x_dim
         \dim_zero:N \l__coffin_y_dim
       }
@@ -30752,10 +30678,10 @@
     \box_set_eq:NN \l__coffin_display_coffin \l__coffin_aligned_coffin
   }
 \cs_new_protected:Npn \coffin_show_structure:N
-  { \__coffin_show_structure:NN \__kernel_msg_show:nnxxxx }
+  { \__coffin_show_structure:NN \msg_show:nnxxxx }
 \cs_generate_variant:Nn \coffin_show_structure:N { c }
 \cs_new_protected:Npn \coffin_log_structure:N
-  { \__coffin_show_structure:NN \__kernel_msg_log:nnxxxx }
+  { \__coffin_show_structure:NN \msg_log:nnxxxx }
 \cs_generate_variant:Nn \coffin_log_structure:N { c }
 \cs_new_protected:Npn \__coffin_show_structure:NN #1#2
   {
@@ -30783,10 +30709,10 @@
   { \coffin_log:Nnn #1 \c_max_int \c_max_int }
 \cs_generate_variant:Nn \coffin_log:N { c }
 \cs_new_protected:Npn \coffin_show:Nnn
-  { \__coffin_show:NNNnn \__kernel_msg_term:nnxxxx \box_show:Nnn }
+  { \__coffin_show:NNNnn \msg_term:nnxxxx \box_show:Nnn }
 \cs_generate_variant:Nn \coffin_show:Nnn { c }
 \cs_new_protected:Npn \coffin_log:Nnn
-  { \__coffin_show:NNNnn \__kernel_msg_log:nnxxxx \box_show:Nnn }
+  { \__coffin_show:NNNnn \msg_log:nnxxxx \box_show:Nnn }
 \cs_generate_variant:Nn \coffin_log:Nnn { c }
 \cs_new_protected:Npn \__coffin_show:NNNnn #1#2#3#4#5
   {
@@ -30796,7 +30722,7 @@
         #2 #3 {#4} {#5}
       }
   }
-\__kernel_msg_new:nnnn { coffin } { no-pole-intersection }
+\msg_new:nnnn { coffin } { no-pole-intersection }
   { No~intersection~between~coffin~poles. }
   {
     LaTeX~was~asked~to~find~the~intersection~between~two~poles,~
@@ -30803,16 +30729,16 @@
     but~they~do~not~have~a~unique~meeting~point:~
     the~value~(0pt,~0pt)~will~be~used.
   }
-\__kernel_msg_new:nnnn { coffin } { unknown }
+\msg_new:nnnn { coffin } { unknown }
   { Unknown~coffin~'#1'. }
   { The~coffin~'#1'~was~never~defined. }
-\__kernel_msg_new:nnnn { coffin } { unknown-pole }
+\msg_new:nnnn { coffin } { unknown-pole }
   { Pole~'#1'~unknown~for~coffin~'#2'. }
   {
     LaTeX~was~asked~to~find~a~typesetting~pole~for~a~coffin,~
     but~either~the~coffin~does~not~exist~or~the~pole~name~is~wrong.
   }
-\__kernel_msg_new:nnn { coffin } { show }
+\msg_new:nnn { coffin } { show }
   {
     Size~of~coffin~#1 : #2 \\
     Poles~of~coffin~#1 : #3 .
@@ -30840,7 +30766,7 @@
       {
         \cs_set:Npn #1 ##1
           {
-            \__kernel_msg_expandable_error:nnn
+            \msg_expandable_error:nnn
               { luatex } { luatex-required } { #1 }
           }
       }
@@ -30849,12 +30775,12 @@
       {
         \cs_set_protected:Npn #1 ##1
           {
-            \__kernel_msg_error:nnn
+            \msg_error:nnn
               { luatex } { luatex-required } { #1 }
           }
       }
   }
-\__kernel_msg_new:nnnn { luatex } { luatex-required }
+\msg_new:nnnn { luatex } { luatex-required }
   { LuaTeX~engine~not~in~use!~Ignoring~#1. }
   {
     The~feature~you~are~using~is~only~available~
@@ -34000,12 +33926,12 @@
   {
     #6
       {
-        \__kernel_msg_error:nnxxx { seq } { item-too-large }
+        \msg_error:nnxxx { seq } { item-too-large }
           { \token_to_str:N #3 } {#2} {#1}
       }
       { \prg_return_false: }
   }
-\__kernel_msg_new:nnnn { seq } { item-too-large }
+\msg_new:nnnn { seq } { item-too-large }
   { Sequence~'#1'~does~not~have~an~item~#3 }
   {
     An~attempt~was~made~to~push~or~pop~the~item~at~position~#3~
@@ -34128,18 +34054,18 @@
   {
     \sys_if_shell:TF
       { \exp_args:No \__ior_shell_open:nN { \tl_to_str:n {#2} } #1 }
-      { \__kernel_msg_error:nn { ior } { pipe-failed } }
+      { \msg_error:nn { ior } { pipe-failed } }
   }
 \cs_new_protected:Npn \__ior_shell_open:nN #1#2
   {
     \tl_if_in:nnTF {#1} { " }
       {
-        \__kernel_msg_error:nnx
+        \msg_error:nnx
           { ior } { quote-in-shell } {#1}
       }
       { \__kernel_ior_open:Nn #2 { |#1 } }
   }
-\__kernel_msg_new:nnnn { ior } { pipe-failed }
+\msg_new:nnnn { ior } { pipe-failed }
   { Cannot~run~piped~system~commands. }
   {
     LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
@@ -34429,7 +34355,7 @@
       {
         \__kernel_if_debug:TF
           {
-            \exp_not:N \__kernel_msg_warning:nnxxx
+            \exp_not:N \msg_warning:nnxxx
               { deprecation } { deprecated-command }
               {#1}
               { \token_to_str:N #3 }
@@ -34456,8 +34382,8 @@
         \exp_not:N #4
         {
           \cs_if_eq:NNTF #3 \cs_gset_protected:Npn
-            { \exp_not:N \__kernel_msg_error:nnnnnn }
-            { \exp_not:N \__kernel_msg_expandable_error:nnnnnn }
+            { \exp_not:N \msg_error:nnnnnn }
+            { \exp_not:N \msg_expandable_error:nnnnnn }
             { deprecation } { deprecated-command }
             {#1}
             { \token_to_str:N #4 }
@@ -34470,15 +34396,15 @@
   {
     \tex_protected:D \tex_outer:D \tex_edef:D #1
       {
-        \exp_not:N \__kernel_msg_expandable_error:nnnnn
+        \exp_not:N \msg_expandable_error:nnnnn
           { deprecation } { deprecated-command }
           { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
-        \exp_not:N \__kernel_msg_error:nnxxx
+        \exp_not:N \msg_error:nnxxx
           { deprecation } { deprecated-command }
           { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
       }
   }
-\__kernel_msg_new:nnn { deprecation } { deprecated-command }
+\msg_new:nnn { deprecation } { deprecated-command }
   {
     \tl_if_blank:nF {#3} { Use~ \tl_trim_spaces:n {#3} ~not~ }
     #2~deprecated~on~#1.

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2021-08-27 22:42:05 UTC (rev 60338)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2021-07-12}%
+\def\ExplFileDate{2021-08-27}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx	2021-08-27 22:42:05 UTC (rev 60338)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2021-07-12}%
+\def\ExplFileDate{2021-08-27}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2021-07-12}%
+\def\ExplFileDate{2021-08-27}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3debug.def	2021-08-27 22:42:05 UTC (rev 60338)
@@ -32,7 +32,7 @@
     \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
        {
         \cs_if_exist_use:cF { __debug_ ##1 _on: }
-          { \__kernel_msg_error:nnn { debug } { debug } {##1} }
+          { \msg_error:nnn { debug } { debug } {##1} }
        }
   }
 \cs_set_protected:Npn \debug_off:n #1
@@ -40,7 +40,7 @@
     \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
       {
         \cs_if_exist_use:cF { __debug_ ##1 _off: }
-          { \__kernel_msg_error:nnn { debug } { debug } {##1} }
+          { \msg_error:nnn { debug } { debug } {##1} }
       }
   }
 \cs_new_protected:Npn \__debug_all_on:
@@ -93,7 +93,7 @@
         \__debug_suspended:T \use_none:nnn
         \cs_if_exist:NF ##1
           {
-            \__kernel_msg_error:nnx { debug } { non-declared-variable }
+            \msg_error:nnx { debug } { non-declared-variable }
               { \token_to_str:N ##1 }
           }
       }
@@ -102,7 +102,7 @@
         \__debug_suspended:T \use_none:nnn
         \cs_if_exist:NF ##1
           {
-            \__kernel_msg_error:nnx { kernel } { command-not-defined }
+            \msg_error:nnx { kernel } { command-not-defined }
               { \token_to_str:N ##1 }
           }
       }
@@ -111,7 +111,7 @@
         \__debug_suspended:T \use_none:nnn
         \flag_if_exist:nF {##1}
           {
-            \__kernel_msg_expandable_error:nnn
+            \msg_expandable_error:nnn
               { kernel } { bad-variable } { flag~##1~ }
           }
       }
@@ -163,7 +163,7 @@
       \if:w #1 \scan_stop:
         \cs_gset_nopar:Npn #1 {#2}
       \else:
-        \__kernel_msg_error:nnxxx { debug } { local-global }
+        \msg_error:nnxxx { debug } { local-global }
           {#1} {#2} { \iow_char:N \\ #3 }
       \fi:
     \fi:
@@ -199,7 +199,7 @@
         \int_value:w #3 #2 #1 \scan_stop:
       }
       {
-        \__kernel_msg_expandable_error:nnnn
+        \msg_expandable_error:nnnn
           { debug } { expr } {#4} {#1}
       }
     #1
@@ -260,12 +260,12 @@
   {
     \if:w n #1 \prg_return_true: \else:
       \if:w N #1 \prg_return_false: \else:
-        \__kernel_msg_expandable_error:nnn
+        \msg_expandable_error:nnn
           { debug } { bad-arg-type } {#1}
       \fi:
     \fi:
   }
-\__kernel_msg_new:nnn { debug } { bad-arg-type }
+\msg_new:nnn { debug } { bad-arg-type }
   { Wrong~argument~type~#1. }
 \cs_new:Npn \__debug_get_base_form:N #1
   {
@@ -962,7 +962,7 @@
       }
   }
 \exp_args:No \__skip_tmp:w { \tl_to_str:n { fil } }
-\__kernel_msg_new:nnnn { debug } { debug }
+\msg_new:nnnn { debug } { debug }
   { The~debugging~option~'#1'~does~not~exist~\msg_line_context:. }
   {
     The~functions~'\iow_char:N\\debug_on:n'~and~
@@ -970,8 +970,8 @@
     'all',~'check-declarations',~'check-expressions',~
     'deprecation',~'log-functions',~not~'#1'.
   }
-\__kernel_msg_new:nnn { debug } { expr } { '#2'~in~#1 }
-\__kernel_msg_new:nnnn { debug } { local-global }
+\msg_new:nnn { debug } { expr } { '#2'~in~#1 }
+\msg_new:nnnn { debug } { local-global }
   { Inconsistent~local/global~assignment }
   {
     \c__msg_coding_error_text_tl
@@ -988,7 +988,7 @@
     \ %
     variable~'#3'.
   }
-\__kernel_msg_new:nnnn { debug } { non-declared-variable }
+\msg_new:nnnn { debug } { non-declared-variable }
   { The~variable~#1~has~not~been~declared~\msg_line_context:. }
   {
     \c__msg_coding_error_text_tl

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{l3keys2e}{2021-08-04}{}
+\ProvidesExplPackage{l3keys2e}{2021-08-27}{}
   {LaTeX2e option processing using LaTeX3 keys}
 \cs_if_exist:NT \ProcessKeysOptions
   { \file_input_stop: }

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{xfp}{2021-08-04}{}
+\ProvidesExplPackage{xfp}{2021-08-27}{}
   {L3 Floating point unit}
 \NewExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
 \NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} }

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -34,7 +34,7 @@
     \endinput
   }
 \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate}
-\ProvidesExplPackage{xfrac}{2021-08-04}{}
+\ProvidesExplPackage{xfrac}{2021-08-27}{}
   {L3 Experimental split-level fractions}
 \keys_define:nn { xfrac }
   {

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -60,7 +60,7 @@
       }
   }
 \ExplSyntaxOff
-\ProvidesExplPackage{xparse}{2021-08-04}{}
+\ProvidesExplPackage{xparse}{2021-08-27}{}
   {L3 Experimental document command parser}
 \clist_new:N \l__cmd_options_clist
 \DeclareOption* { \clist_put_right:NV \l__cmd_options_clist \CurrentOption }
@@ -74,10 +74,10 @@
       }
     \keys_set:nV {#1} \l__cmd_options_clist
     \bool_if:NF \l__cmd_log_bool
-      { \msg_redirect_module:nnn { LaTeX / #1 } { info } { none } }
+      { \msg_redirect_module:nnn {#1} { info } { none } }
     \cs_new_protected:Npn \__cmd_unknown_argument_type_error:n ##1
       {
-        \__kernel_msg_error:nnxx {#1} { unknown-argument-type }
+        \msg_error:nnxx {#1} { unknown-argument-type }
           { \__cmd_environment_or_command: } { \tl_to_str:n {##1} }
       }
   }

Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty	2021-08-27 22:39:56 UTC (rev 60337)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty	2021-08-27 22:42:05 UTC (rev 60338)
@@ -32,7 +32,7 @@
       }%
     \endinput
   }
-\ProvidesExplPackage{xtemplate}{2021-08-04}{}
+\ProvidesExplPackage{xtemplate}{2021-08-27}{}
   {L3 Experimental prototype document functions}
 \tl_const:Nn \c__xtemplate_code_root_tl      { template~code~>~ }
 \tl_const:Nn \c__xtemplate_defaults_root_tl  { template~defaults~>~ }



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