[latex3-commits] [latex3/latex2e] develop: Update l3backend, l3kernel and xparse to 2024-02-20 (8809ac6f)

github at latex-project.org github at latex-project.org
Tue Feb 20 11:08:29 CET 2024


Repository : https://github.com/latex3/latex2e
On branch  : develop
Link       : https://github.com/latex3/latex2e/commit/8809ac6fc68fa5caa8a94281ee6134880e6c1f11

>---------------------------------------------------------------

commit 8809ac6fc68fa5caa8a94281ee6134880e6c1f11
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Tue Feb 20 09:26:42 2024 +0000

    Update l3backend, l3kernel and xparse to 2024-02-20


>---------------------------------------------------------------

8809ac6fc68fa5caa8a94281ee6134880e6c1f11
 base/testfiles-lthooks/ltcmdhooks-001.tlg        |  2 +-
 base/testfiles/github-0479-often.luatex.tlg      |  3 +-
 base/testfiles/github-0479-often.tlg             |  3 +-
 base/testfiles/github-0479-often.xetex.tlg       |  3 +-
 base/testfiles/github-0944.tlg                   |  2 +-
 base/testfiles/tlb-rollback-005.luatex.tlg       |  4 +-
 base/testfiles/tlb-rollback-005.tlg              |  4 +-
 base/testfiles/tlb-rollback-005.xetex.tlg        |  4 +-
 texmf/tex/latex/l3backend/l3backend-dvipdfmx.def |  2 +-
 texmf/tex/latex/l3backend/l3backend-dvips.def    |  2 +-
 texmf/tex/latex/l3backend/l3backend-dvisvgm.def  |  4 +-
 texmf/tex/latex/l3backend/l3backend-luatex.def   |  2 +-
 texmf/tex/latex/l3backend/l3backend-pdftex.def   |  2 +-
 texmf/tex/latex/l3backend/l3backend-xetex.def    |  2 +-
 texmf/tex/latex/l3kernel/expl3-code.tex          | 82 +++++++++++++++++-------
 texmf/tex/latex/l3kernel/expl3-generic.tex       |  2 +-
 texmf/tex/latex/l3kernel/expl3.ltx               |  2 +-
 texmf/tex/latex/l3kernel/expl3.sty               |  2 +-
 texmf/tex/latex/l3kernel/l3debug.def             | 12 ++--
 texmf/tex/latex/l3kernel/l3doc.cls               |  2 +-
 texmf/tex/latex/l3packages/xparse/xparse.sty     |  2 +-
 21 files changed, 87 insertions(+), 56 deletions(-)

diff --git a/base/testfiles-lthooks/ltcmdhooks-001.tlg b/base/testfiles-lthooks/ltcmdhooks-001.tlg
index 4fc4dd17..05f16f07 100644
--- a/base/testfiles-lthooks/ltcmdhooks-001.tlg
+++ b/base/testfiles-lthooks/ltcmdhooks-001.tlg
@@ -58,7 +58,7 @@ l. ...\ShowHook{cmd/foo/after}
 #1#2->FOO #1 #2.
 l. ...\show\foo
 > \@kernel at after@begindocument=macro:
-->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
+->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \cs_gset_protected:Npn \sys_load_debug: {\msg_error:nn {sys}{load-debug-in-preamble}}\bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
 l. ...\show\@kernel at after@begindocument
 Update code for hook 'para/before' on input line ...:
 Update code for hook 'para/after' on input line ...:
diff --git a/base/testfiles/github-0479-often.luatex.tlg b/base/testfiles/github-0479-often.luatex.tlg
index d574406d..ba620702 100644
--- a/base/testfiles/github-0479-often.luatex.tlg
+++ b/base/testfiles/github-0479-often.luatex.tlg
@@ -899,8 +899,7 @@ l. ...\show \__kernel_chk_if_free_cs:N
 > \e at alloc=macro:
 #1#2#3#4#5#6->\global \advance #3\@ne \e at ch@ck {#3}{#4}{#5}#1\allocationnumber #3\relax \global #2#6\allocationnumber \wlog {\string #6=\string #1\the \allocationnumber }.
 l. ...\show \e at alloc
-> \__kernel_msg_error:nne=\protected\long macro:
-#1->\msg_error:nne {LaTeX/#1}.
+> \__kernel_msg_error:nne=undefined.
 l. ...\show \__kernel_msg_error:nne
 > \msg_new:nnnn=\protected\long macro:
 #1#2#3#4->\__msg_chk_free:nn {#1}{#2}\cs_gset:cpn {\c__msg_text_prefix_tl #1/#2}##1##2##3##4{#3}\cs_gset:cpn {\c__msg_more_text_prefix_tl #1/#2}##1##2##3##4{#4}.
diff --git a/base/testfiles/github-0479-often.tlg b/base/testfiles/github-0479-often.tlg
index 3b4d7fe9..8b855390 100644
--- a/base/testfiles/github-0479-often.tlg
+++ b/base/testfiles/github-0479-often.tlg
@@ -1324,8 +1324,7 @@ l. ...\show \__kernel_chk_if_free_cs:N
 > \e at alloc=macro:
 #1#2#3#4#5#6->\global \advance #3\@ne \e at ch@ck {#3}{#4}{#5}#1\allocationnumber #3\relax \global #2#6\allocationnumber \wlog {\string #6=\string #1\the \allocationnumber }.
 l. ...\show \e at alloc
-> \__kernel_msg_error:nne=\protected\long macro:
-#1->\msg_error:nne {LaTeX/#1}.
+> \__kernel_msg_error:nne=undefined.
 l. ...\show \__kernel_msg_error:nne
 > \msg_new:nnnn=\protected\long macro:
 #1#2#3#4->\__msg_chk_free:nn {#1}{#2}\cs_gset:cpn {\c__msg_text_prefix_tl #1/#2}##1##2##3##4{#3}\cs_gset:cpn {\c__msg_more_text_prefix_tl #1/#2}##1##2##3##4{#4}.
diff --git a/base/testfiles/github-0479-often.xetex.tlg b/base/testfiles/github-0479-often.xetex.tlg
index 95e42d59..4902356b 100644
--- a/base/testfiles/github-0479-often.xetex.tlg
+++ b/base/testfiles/github-0479-often.xetex.tlg
@@ -896,8 +896,7 @@ l. ...\show \__kernel_chk_if_free_cs:N
 > \e at alloc=macro:
 #1#2#3#4#5#6->\global \advance #3\@ne \e at ch@ck {#3}{#4}{#5}#1\allocationnumber #3\relax \global #2#6\allocationnumber \wlog {\string #6=\string #1\the \allocationnumber }.
 l. ...\show \e at alloc
-> \__kernel_msg_error:nne=\protected\long macro:
-#1->\msg_error:nne {LaTeX/#1}.
+> \__kernel_msg_error:nne=undefined.
 l. ...\show \__kernel_msg_error:nne
 > \msg_new:nnnn=\protected\long macro:
 #1#2#3#4->\__msg_chk_free:nn {#1}{#2}\cs_gset:cpn {\c__msg_text_prefix_tl #1/#2}##1##2##3##4{#3}\cs_gset:cpn {\c__msg_more_text_prefix_tl #1/#2}##1##2##3##4{#4}.
diff --git a/base/testfiles/github-0944.tlg b/base/testfiles/github-0944.tlg
index 099d7ecb..f0324fb4 100644
--- a/base/testfiles/github-0944.tlg
+++ b/base/testfiles/github-0944.tlg
@@ -22,7 +22,7 @@ LaTeX Warning: Reference `unknown' on page 1 undefined on input line ....
 ] (github-0944.aux)
  ***********
 -formatname- <-formatversion-> pre-release-2 (-release-version-test- branch)
-L3 programming layer <2024-02-18>
+L3 programming layer <2024-02-20>
  ***********
  *File List*
  -show the file list here-
diff --git a/base/testfiles/tlb-rollback-005.luatex.tlg b/base/testfiles/tlb-rollback-005.luatex.tlg
index 4d9307e0..93c82b1d 100644
--- a/base/testfiles/tlb-rollback-005.luatex.tlg
+++ b/base/testfiles/tlb-rollback-005.luatex.tlg
@@ -1,7 +1,7 @@
 This is a generated file for the l3build validation system.
 Don't change this file in any respect.
 > \@kernel at after@begindocument=macro:
-->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
+->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \cs_gset_protected:Npn \sys_load_debug: {\msg_error:nn {sys}{load-debug-in-preamble}}\bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
 l. ...\makeatletter\show\@kernel at after@begindocument
                                                 \makeatother
 (latexrelease.sty
@@ -898,7 +898,7 @@ Applying: [....-..-..] UTF-8 default on input line ....
 Already applied: [....-..-..] UTF-8 default on input line ....
 )
 > \@kernel at after@begindocument=macro:
-->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
+->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \cs_gset_protected:Npn \sys_load_debug: {\msg_error:nn {sys}{load-debug-in-preamble}}\bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
 l. ...\makeatletter\show\@kernel at after@begindocument
                                                  \makeatother
 (minimal.cls
diff --git a/base/testfiles/tlb-rollback-005.tlg b/base/testfiles/tlb-rollback-005.tlg
index 6f78c9ef..22c2a676 100644
--- a/base/testfiles/tlb-rollback-005.tlg
+++ b/base/testfiles/tlb-rollback-005.tlg
@@ -1,7 +1,7 @@
 This is a generated file for the l3build validation system.
 Don't change this file in any respect.
 > \@kernel at after@begindocument=macro:
-->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
+->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \cs_gset_protected:Npn \sys_load_debug: {\msg_error:nn {sys}{load-debug-in-preamble}}\bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
 l. ...\makeatletter\show\@kernel at after@begindocument
                                                   \makeatother
 (latexrelease.sty
@@ -1323,7 +1323,7 @@ Now handling font encoding U ...
 Already applied: [....-..-..] UTF-8 default on input line ....
 )
 > \@kernel at after@begindocument=macro:
-->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
+->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \cs_gset_protected:Npn \sys_load_debug: {\msg_error:nn {sys}{load-debug-in-preamble}}\bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
 l. ......eatletter\show\@kernel at after@begindocument
                                                   \makeatother
 (minimal.cls
diff --git a/base/testfiles/tlb-rollback-005.xetex.tlg b/base/testfiles/tlb-rollback-005.xetex.tlg
index fe9a98f2..1d757944 100644
--- a/base/testfiles/tlb-rollback-005.xetex.tlg
+++ b/base/testfiles/tlb-rollback-005.xetex.tlg
@@ -1,7 +1,7 @@
 This is a generated file for the l3build validation system.
 Don't change this file in any respect.
 > \@kernel at after@begindocument=macro:
-->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
+->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \cs_gset_protected:Npn \sys_load_debug: {\msg_error:nn {sys}{load-debug-in-preamble}}\bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
 l. ...\makeatletter\show\@kernel at after@begindocument
                                                   \makeatother
 (latexrelease.sty
@@ -895,7 +895,7 @@ Applying: [....-..-..] UTF-8 default on input line ....
 Already applied: [....-..-..] UTF-8 default on input line ....
 )
 > \@kernel at after@begindocument=macro:
-->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
+->\prop_map_inline:Nn \l_keys_usage_preamble_prop {\clist_map_inline:nn {##2}{\keys_define:nn {##1}{####1.code:n=\msg_error:nnn {keys}{preamble-only}{####1}}}}\__hook_cmd_begindocument_code: \cs_gset_protected:Npn \sys_load_debug: {\msg_error:nn {sys}{load-debug-in-preamble}}\bool_gset_true:N \g__pdf_init_bool \group_begin: \cs_set_protected:Npn \__text_tmp:w ##1{\tl_clear:N \l_text_expand_exclude_tl \tl_map_inline:nn {##1}{\bool_lazy_any:nF {{\token_if_protected_macro_p:N ####1}{\token_if_protected_long_macro_p:N ####1}{\str_if_eq_p:ee {\cs_replacement_spec:N ####1}{\exp_not:n {\protect ####1}\c_space_tl }}}{\tl_put_right:Nn \l_text_expand_exclude_tl {####1}}}}\exp_args:NV \__text_tmp:w \l_text_expand_exclude_tl \exp_args:NNNV \group_end: \tl_set:Nn \l_text_expand_exclude_tl \l_text_expand_exclude_tl \group_begin: \cs_set_protected:Npn \__text_change_case_setup:Nn ##1##2{\quark_if_recursion_tail_stop:N ##1\tl_if_single_token:nT {##2}{\cs_if_exist:cF {c__text_uppercase_\token_to_str:N ##1_tl}{\tl_const:cn {c__text_uppercase_\token_to_str:N ##1_tl}{##2}}\cs_if_exist:cF {c__text_lowercase_\token_to_str:N ##2_tl}{\tl_const:cn {c__text_lowercase_\token_to_str:N ##2_tl}{##1}}}\__text_change_case_setup:Nn }\exp_after:wN \__text_change_case_setup:Nn \@uclclist \q_recursion_tail ?\q_recursion_stop \group_end: .
 l. ......eatletter\show\@kernel at after@begindocument
                                                   \makeatother
 (minimal.cls
diff --git a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
index afe957ed..128c0026 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvipdfmx.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvipdfmx.def}{2024-01-04}{}
+  {l3backend-dvipdfmx.def}{2024-02-20}{}
   {L3 backend support: dvipdfmx}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-dvips.def b/texmf/tex/latex/l3backend/l3backend-dvips.def
index 6db01a86..b808ec8c 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvips.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvips.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvips.def}{2024-01-04}{}
+  {l3backend-dvips.def}{2024-02-20}{}
   {L3 backend support: dvips}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
index f4b98af1..a51db469 100644
--- a/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
+++ b/texmf/tex/latex/l3backend/l3backend-dvisvgm.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvisvgm.def}{2024-01-04}{}
+  {l3backend-dvisvgm.def}{2024-02-20}{}
   {L3 backend support: dvisvgm}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -403,7 +403,7 @@
               "url( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int)"
           }
       }
-    \tl_gclear:N \g__draw_path_tl
+    \tl_gclear:N \g__draw_backend_path_tl
     \bool_gset_false:N \g__draw_draw_clip_bool
   }
 \cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2
diff --git a/texmf/tex/latex/l3backend/l3backend-luatex.def b/texmf/tex/latex/l3backend/l3backend-luatex.def
index 7130f0ed..e4369908 100644
--- a/texmf/tex/latex/l3backend/l3backend-luatex.def
+++ b/texmf/tex/latex/l3backend/l3backend-luatex.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-luatex.def}{2024-01-04}{}
+  {l3backend-luatex.def}{2024-02-20}{}
   {L3 backend support: PDF output (LuaTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-pdftex.def b/texmf/tex/latex/l3backend/l3backend-pdftex.def
index d53a8f49..0258ebe3 100644
--- a/texmf/tex/latex/l3backend/l3backend-pdftex.def
+++ b/texmf/tex/latex/l3backend/l3backend-pdftex.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-pdftex.def}{2024-01-04}{}
+  {l3backend-pdftex.def}{2024-02-20}{}
   {L3 backend support: PDF output (pdfTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3backend/l3backend-xetex.def b/texmf/tex/latex/l3backend/l3backend-xetex.def
index 1c208ea2..bab5a7d2 100644
--- a/texmf/tex/latex/l3backend/l3backend-xetex.def
+++ b/texmf/tex/latex/l3backend/l3backend-xetex.def
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-xetex.def}{2024-01-04}{}
+  {l3backend-xetex.def}{2024-02-20}{}
   {L3 backend support: XeTeX}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex
index 998fa55a..324ff825 100644
--- a/texmf/tex/latex/l3kernel/expl3-code.tex
+++ b/texmf/tex/latex/l3kernel/expl3-code.tex
@@ -75,7 +75,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2024-02-18}%
+\def\ExplFileDate{2024-02-20}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -1625,12 +1625,14 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \cs_set_protected:Npn \debug_on:n #1
   {
     \sys_load_debug:
-    \debug_on:n {#1}
+    \cs_if_exist:NT \__debug_all_on:
+      { \debug_on:n {#1} }
   }
 \cs_set_protected:Npn \debug_off:n #1
   {
     \sys_load_debug:
-    \debug_off:n {#1}
+    \cs_if_exist:NT \__debug_all_on:
+      { \debug_off:n {#1} }
   }
 \cs_set_protected:Npn \debug_suspend: { }
 \cs_set_protected:Npn \debug_resume: { }
@@ -7758,6 +7760,17 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
       { \__kernel_sys_configuration_load:n { l3debug } }
     \bool_gset_true:N \g__sys_debug_bool
   }
+\cs_if_exist:NT \@expl at finalise@setup@@
+  {
+    \tl_gput_right:Nn \@expl at finalise@setup@@
+      {
+        \tl_gput_right:Nn \@kernel at after@begindocument
+          {
+            \cs_gset_protected:Npn \sys_load_debug:
+              { \msg_error:nn { sys } { load-debug-in-preamble } }
+          }
+      }
+  }
 \tl_new:N \l__sys_internal_tl
 \tl_const:Ne \c__sys_marker_tl { : \token_to_str:N : }
 \cs_new_protected:Npn \sys_get_shell:nnN #1#2#3
@@ -9753,18 +9766,33 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_generate_variant:Nn \prop_const_linked_from_keyval:Nn { c }
 \cs_new_protected:Npn \__prop_split:NnTFn #1#2
-  { \exp_args:NNo \__prop_split_aux:NnTFn #1 { \tl_to_str:n {#2} } }
-\cs_new_protected:Npn \__prop_split_aux:NnTFn #1#2#3
-  {
-    \cs_set:Npn \__prop_split_aux:w ##1 \__prop_chk:w ##2
-      \__prop_pair:wn #2 \s__prop ##3 ##4 \s__prop_mark ##5 ##6 \s__prop_stop
-      { ##5 {#3} }
-    \exp_after:wN \__prop_split_aux:w #1 \s__prop_mark \use_i:nnn
-      \__prop_pair:wn #2 \s__prop { } \s__prop_mark \use_ii:nnn
-      \__prop_chk:w
-      \__prop_pair:wn #2 \s__prop { } \s__prop_mark \use_iii:nnn
+  {
+    \exp_after:wN \__prop_split_aux:nNTFn
+    \exp_after:wN { \tl_to_str:n {#2} } #1
+  }
+\cs_new_protected:Npn \__prop_split_aux:nNTFn #1#2#3
+  {
+    \cs_set:Npn \__prop_split_flat:w \__prop_split_linked:w ##1
+      \__prop_pair:wn #1 \s__prop ##2 ##3 \s__prop_mark ##4 ##5 \s__prop_stop
+      { ##4 {#3} }
+    \exp_after:wN \__prop_split_test:wn #2 \s__prop_mark \use_i:nnn
+      \__prop_pair:wn #1 \s__prop { ? \fi: \__prop_split_wrong:Nw #2 }
+      \s__prop_mark \use_ii:nnn
       \s__prop_stop
   }
+\cs_new:Npn \__prop_split_flat:w { }
+\cs_new_protected:Npn \__prop_split_test:wn #1 \s__prop #2
+  {
+    \if_meaning:w \__prop_chk:w #2 \exp_after:wN \__prop_split_flat:w \fi:
+    \__prop_split_linked:w
+  }
+\cs_new_protected:Npn \__prop_split_linked:w #1 \s__prop_stop #2#3 {#3}
+\cs_new_protected:Npn \__prop_split_wrong:Nw #1#2 \s__prop_stop #3#4
+  {
+    \prop_show:N #1
+    \cs_gset_eq:NN #1 \c_empty_prop
+    #3
+  }
 \cs_new_protected:Npn \prop_get:NnN #1#2#3
   {
     \__prop_get:NnnTF #1 {#2}
@@ -9787,7 +9815,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \cs_new_protected:Npn \__prop_get:NnnTF #1#2#3#4#5
   {
     \__prop_split:NnTFn #1 {#2}
-      { #3 {##3} #4 }
+      { #3 {##2} #4 }
       {#5}
       { \exp_after:wN \__prop_get_linked:w #1 {#2} {#3} {#4} {#5} }
   }
@@ -9828,8 +9856,8 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   {
     \__prop_split:NnTFn #1 {#2}
       {
-        #4 #1 { \exp_not:n { \s__prop \__prop_chk:w ##2 ##4 } }
-        #5 {##3}
+        #4 #1 { \exp_not:n { \s__prop \__prop_chk:w ##1 ##3 } }
+        #5 {##2}
         #6
       }
       {#7}
@@ -9974,8 +10002,8 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
       {
         #1 #2 #3
           {
-            \s__prop \__prop_chk:w \exp_not:n {##2}
-            \l__prop_internal_tl \exp_not:n {##4}
+            \s__prop \__prop_chk:w \exp_not:n {##1}
+            \l__prop_internal_tl \exp_not:n {##3}
           }
       }
       { #2 #3 { \exp_not:o {#3} \l__prop_internal_tl } }
@@ -10796,17 +10824,17 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   { \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:nnee #1
+\cs_new_protected:Npn \__kernel_msg_info:nnxx #1
   { \msg_info:nnee { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_warning:nne #1
+\cs_new_protected:Npn \__kernel_msg_warning:nnx #1
   { \msg_warning:nne { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_warning:nnee #1
+\cs_new_protected:Npn \__kernel_msg_warning:nnxx #1
   { \msg_warning:nnee { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nne #1
+\cs_new_protected:Npn \__kernel_msg_error:nnx #1
   { \msg_error:nne { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnee #1
+\cs_new_protected:Npn \__kernel_msg_error:nnxx #1
   { \msg_error:nnee { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nneee #1
+\cs_new_protected:Npn \__kernel_msg_error:nnxxx #1
   { \msg_error:nneee { LaTeX / #1 } }
 \cs_new:Npn \__kernel_msg_expandable_error:nnn #1
   { \msg_expandable_error:nnn { LaTeX / #1 } }
@@ -11159,6 +11187,12 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
     Run-time~backend~selection~may~only~be~carried~out~once~during~a~run.~
     This~second~attempt~to~set~them~will~be~ignored.
   }
+\msg_new:nnnn { sys } { load-debug-in-preamble }
+  { Load~debug~support~in~the~preamble. }
+  {
+    Debugging~requires~support~loaded~in~the~preamble: \\
+    Use~\sys_load_debug:~before~\begin{document}.
+  }
 \msg_new:nnnn { sys } { wrong-backend }
   { Backend~request~inconsistent~with~engine:~using~'#2'~backend. }
   {
diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex
index 79a79f11..e57bdbe4 100644
--- a/texmf/tex/latex/l3kernel/expl3-generic.tex
+++ b/texmf/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2024-02-18}%
+\def\ExplFileDate{2024-02-20}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx
index 38de0490..a40c3a31 100644
--- a/texmf/tex/latex/l3kernel/expl3.ltx
+++ b/texmf/tex/latex/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2024-02-18}%
+\def\ExplFileDate{2024-02-20}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty
index bae277a3..03a22d85 100644
--- a/texmf/tex/latex/l3kernel/expl3.sty
+++ b/texmf/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2024-02-18}%
+\def\ExplFileDate{2024-02-20}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%
diff --git a/texmf/tex/latex/l3kernel/l3debug.def b/texmf/tex/latex/l3kernel/l3debug.def
index 39b07816..1021e537 100644
--- a/texmf/tex/latex/l3kernel/l3debug.def
+++ b/texmf/tex/latex/l3kernel/l3debug.def
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: l3debug.dtx
-\ProvidesExplFile{l3debug.def}{2024-02-18}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2024-02-20}{}{L3 Debugging support}
 \scan_new:N \s__debug_stop
 \cs_new:Npn \__debug_use_i_delimit_by_s_stop:nw #1 #2 \s__debug_stop {#1}
 \quark_new:N \q__debug_recursion_tail
@@ -27,7 +27,7 @@
 \cs_new:Npn \__debug_use_none_delimit_by_q_recursion_stop:w
   #1 \q__debug_recursion_stop { }
 \__kernel_quark_new_test:N \__debug_if_recursion_tail_stop:N
-\cs_set_protected:Npn \debug_on:n #1
+\cs_gset_protected:Npn \debug_on:n #1
   {
     \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
       {
@@ -35,7 +35,7 @@
           { \msg_error:nnn { debug } { debug } {##1} }
       }
   }
-\cs_set_protected:Npn \debug_off:n #1
+\cs_gset_protected:Npn \debug_off:n #1
   {
     \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
       {
@@ -64,12 +64,12 @@
       }
   }
 \tl_new:N \l__debug_suspended_tl { }
-\cs_set_protected:Npn \debug_suspend:
+\cs_gset_protected:Npn \debug_suspend:
   {
     \tl_put_right:Nn \l__debug_suspended_tl { . }
     \cs_set_eq:NN \__debug_suspended:T \use:n
   }
-\cs_set_protected:Npn \debug_resume:
+\cs_gset_protected:Npn \debug_resume:
   {
     \__kernel_tl_set:Nx \l__debug_suspended_tl
       { \tl_tail:N \l__debug_suspended_tl }
@@ -1047,7 +1047,7 @@
     without~first~having: \\
     \ \ \tl_new:N ~ #1  \\
     \\
-    LaTeX~will~create~the~variable~and~continue.
+    LaTeX~will~continue,~creating~the~variable~where~it~is~the~one~being~set.
   }
 \cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#1}
 %% 
diff --git a/texmf/tex/latex/l3kernel/l3doc.cls b/texmf/tex/latex/l3kernel/l3doc.cls
index 1208bd3a..5c0b0436 100644
--- a/texmf/tex/latex/l3kernel/l3doc.cls
+++ b/texmf/tex/latex/l3kernel/l3doc.cls
@@ -20,7 +20,7 @@
 %% 
 %% File: l3doc.dtx
 \RequirePackage{calc}
-\ProvidesExplClass{l3doc}{2024-02-18}{}
+\ProvidesExplClass{l3doc}{2024-02-20}{}
   {L3 Experimental documentation class}
 \clist_new:N \g_docinput_clist
 \seq_new:N \g_doc_functions_seq
diff --git a/texmf/tex/latex/l3packages/xparse/xparse.sty b/texmf/tex/latex/l3packages/xparse/xparse.sty
index 7f2fb077..7aa5d530 100644
--- a/texmf/tex/latex/l3packages/xparse/xparse.sty
+++ b/texmf/tex/latex/l3packages/xparse/xparse.sty
@@ -60,7 +60,7 @@
       }
   }
 \ExplSyntaxOff
-\ProvidesExplPackage{xparse}{2024-02-18}{}
+\ProvidesExplPackage{xparse}{2024-02-20}{}
   {L3 Experimental document command parser}
 \clist_new:N \l__cmd_options_clist
 \DeclareOption* { \clist_put_right:NV \l__cmd_options_clist \CurrentOption }





More information about the latex3-commits mailing list.