[latex3-commits] [latex3/latex2e] develop: Update l3kernel to 2023-05-11 (2b644de8)

github at latex-project.org github at latex-project.org
Thu May 11 10:57:15 CEST 2023


Repository : https://github.com/latex3/latex2e
On branch  : develop
Link       : https://github.com/latex3/latex2e/commit/2b644de87198547913ee9a126dd3df4b6ce33a48

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

commit 2b644de87198547913ee9a126dd3df4b6ce33a48
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Thu May 11 09:57:10 2023 +0100

    Update l3kernel to 2023-05-11


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

2b644de87198547913ee9a126dd3df4b6ce33a48
 base/testfiles/github-0944.tlg             |   2 +-
 texmf/tex/latex/l3kernel/expl3-code.tex    | 255 ++++++++++++++---------------
 texmf/tex/latex/l3kernel/expl3-generic.tex |   2 +-
 texmf/tex/latex/l3kernel/expl3.ltx         |   2 +-
 texmf/tex/latex/l3kernel/expl3.sty         |   2 +-
 5 files changed, 125 insertions(+), 138 deletions(-)

diff --git a/base/testfiles/github-0944.tlg b/base/testfiles/github-0944.tlg
index 048c3c52..cea42408 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 <2023-05-05>
+L3 programming layer <2023-05-11>
  ***********
  *File List*
  -show the file list here-
diff --git a/texmf/tex/latex/l3kernel/expl3-code.tex b/texmf/tex/latex/l3kernel/expl3-code.tex
index 2b822a03..d8dcbac8 100644
--- a/texmf/tex/latex/l3kernel/expl3-code.tex
+++ b/texmf/tex/latex/l3kernel/expl3-code.tex
@@ -71,7 +71,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2023-05-05}%
+\def\ExplFileDate{2023-05-11}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -5810,6 +5810,72 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
   }
 \cs_generate_variant:Nn \seq_remove_all:Nn  { c }
 \cs_generate_variant:Nn \seq_gremove_all:Nn { c }
+\cs_new_eq:NN \__seq_int_eval:w \tex_numexpr:D
+\cs_new_protected:Npn \seq_set_item:Nnn #1#2#3
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_i:nn }
+\cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
+\cs_generate_variant:Nn \seq_set_item:Nnn { c }
+\cs_generate_variant:Nn \seq_gset_item:Nnn { c }
+\prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
+\prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
+  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
+\prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
+\prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
+\cs_new_protected:Npn \__seq_set_item:NnnNN #1#2#3
+  {
+    \tl_set:Nn \l__seq_internal_a_tl { \__seq_item:n {#3} }
+    \exp_args:Nff \__seq_set_item:nnNNNN
+      { \int_eval:n {#2} } { \seq_count:N #1 } #1 \use_none:nn
+  }
+\cs_new_protected:Npn \__seq_set_item:nnNNNN #1#2
+  {
+    \int_compare:nNnTF {#1} > 0
+      { \int_compare:nNnF {#1} > {#2} { \__seq_set_item:nNnnNNNN { #1 - 1 } } }
+      {
+        \int_compare:nNnF {#1} < {-#2}
+          {
+            \int_compare:nNnF {#1} = 0
+              { \__seq_set_item:nNnnNNNN { #2 + #1 } }
+          }
+      }
+    \__seq_set_item_false:nnNNNN {#1} {#2}
+  }
+\cs_new_protected:Npn \__seq_set_item_false:nnNNNN #1#2#3#4#5#6
+  {
+    #6
+      {
+        \msg_error:nnxxx { seq } { item-too-large }
+          { \token_to_str:N #3 } {#2} {#1}
+      }
+      { \prg_return_false: }
+  }
+\cs_new_protected:Npn \__seq_set_item:nNnnNNNN #1#2#3#4#5#6#7#8
+  {
+    #7 #5
+      {
+        \s__seq
+        \exp_after:wN \__seq_set_item:wn
+        \int_value:w \__seq_int_eval:w #1
+        #5 \s__seq_stop #6
+      }
+    #8 { } { \prg_return_true: }
+  }
+\cs_new:Npn \__seq_set_item:wn #1 \__seq_item:n #2
+  {
+    \if_meaning:w 0 #1 \__seq_set_item_end:w \fi:
+    \exp_not:n { \__seq_item:n {#2} }
+    \exp_after:wN \__seq_set_item:wn
+    \int_value:w \__seq_int_eval:w #1 - 1 \s__seq
+  }
+\cs_new:Npn \__seq_set_item_end:w #1 \exp_not:n #2 #3 \s__seq #4 \s__seq_stop #5
+  {
+    #1
+    \exp_not:o \l__seq_internal_a_tl
+    \exp_not:n {#4}
+    #5 #2
+  }
 \cs_new_protected:Npn \seq_reverse:N
   { \__seq_reverse:NN \__kernel_tl_set:Nx }
 \cs_new_protected:Npn \seq_greverse:N
@@ -6168,6 +6234,28 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
     \exp_after:wN #1
     \int_value:w \int_eval:w 1 + #2 ;
   }
+\cs_new:Npn \seq_map_pairwise_function:NNN #1#2#3
+  { \exp_after:wN \__seq_map_pairwise_function:wNN #2 \s__seq_stop #1 #3 }
+\cs_new:Npn \__seq_map_pairwise_function:wNN \s__seq #1 \s__seq_stop #2#3
+  {
+    \exp_after:wN \__seq_map_pairwise_function:wNw #2 \s__seq_stop #3
+      #1 { ? \prg_break: } { }
+    \prg_break_point:
+  }
+\cs_new:Npn \__seq_map_pairwise_function:wNw \s__seq #1 \s__seq_stop #2
+  {
+    \__seq_map_pairwise_function:Nnnwnn #2
+      #1 { ? \prg_break: } { }
+    \s__seq_stop
+  }
+\cs_new:Npn \__seq_map_pairwise_function:Nnnwnn #1#2#3#4 \s__seq_stop #5#6
+  {
+    \use_none:n #2
+    \use_none:n #5
+    #1 {#3} {#6}
+    \__seq_map_pairwise_function:Nnnwnn #1 #4 \s__seq_stop
+  }
+\cs_generate_variant:Nn \seq_map_pairwise_function:NNN { Nc , c , cc }
 \cs_new_protected:Npn \seq_set_map_x:NNn
   { \__seq_set_map_x:NNNn \__kernel_tl_set:Nx }
 \cs_new_protected:Npn \seq_gset_map_x:NNn
@@ -10708,6 +10796,15 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
     LaTeX~has~been~asked~to~create~a~new~scan~mark~'#1'~
     but~this~name~has~already~been~used~for~a~scan~mark.
   }
+\msg_new:nnnn { seq } { item-too-large }
+  { Sequence~'#1'~does~not~have~an~item~#3 }
+  {
+    An~attempt~was~made~to~push~or~pop~the~item~at~position~#3~
+    of~'#1',~but~this~
+    \int_compare:nTF { #3 = 0 }
+      { position~does~not~exist. }
+      { sequence~only~has~#2~item \int_compare:nF { #2 = 1 } {s}. }
+  }
 \msg_new:nnnn { seq } { shuffle-too-large }
   { The~sequence~#1~is~too~long~to~be~shuffled~by~TeX. }
   {
@@ -11759,9 +11856,26 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \cs_new:Npn \__file_full_name:n #1
   {
     \tl_if_blank:nF {#1}
-      { \exp_args:Nne \__file_full_name_aux:nn {#1} { \__file_size:n {#1} } }
+      { \exp_args:Nne \__file_full_name_auxii:nn {#1} { \__file_full_name_aux:n {#1} } }
+  }
+\cs_new:Npn \__file_full_name_aux:n #1
+  {
+    \if_cs_exist:w __file_seen_ \tl_to_str:n {#1} : \cs_end:
+      -1
+    \else:
+      \exp_args:Ne \__file_full_name_auxi:nn { \__file_size:n {#1} } {#1}
+    \fi:
+  }
+\cs_new:Npn \__file_full_name_auxi:nn #1#2
+  {
+    \if:w \scan_stop: #1 \scan_stop:
+    \else:
+      \exp_after:wN \use_none:n
+        \cs:w __file_seen_ \tl_to_str:n {#2} : \cs_end:
+      #1
+    \fi:
   }
-\cs_new:Npn \__file_full_name_aux:nn #1 #2
+\cs_new:Npn \__file_full_name_auxii:nn #1 #2
   {
     \tl_if_blank:nTF {#2}
       {
@@ -11779,7 +11893,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \cs_new:Npn \__file_full_name_aux:Nnn #1#2#3
   { \exp_args:Ne \__file_full_name_aux:nN { \tl_to_str:n {#3} / #2 } #1 }
 \cs_new:Npn \__file_full_name_aux:nN #1
-  { \exp_args:Nne \__file_full_name_aux:nnN {#1} { \__file_size:n {#1} } }
+  { \exp_args:Nne \__file_full_name_aux:nnN {#1} { \__file_full_name_aux:n {#1} } }
 \cs_new:Npn \__file_full_name_aux:nnN #1 #2 #3
   {
     \tl_if_blank:nF {#2}
@@ -11814,7 +11928,7 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
       { #1 #3 }
   }
 \cs_new:Npn \__file_ext_check:nnn #1
-  { \exp_args:Nne \__file_ext_check:nnnn {#1} { \__file_size:n {#1} } }
+  { \exp_args:Nne \__file_ext_check:nnnn {#1} { \__file_full_name_aux:n {#1} } }
 \cs_new:Npn \__file_ext_check:nnnn #1#2#3#4
   {
     \tl_if_blank:nTF {#2}
@@ -35555,28 +35669,6 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
     \q_recursion_stop
 \group_end:
 %% File: l3candidates.dtx
-\cs_new:Npn \seq_mapthread_function:NNN #1#2#3
-  { \exp_after:wN \__seq_mapthread_function:wNN #2 \s__seq_stop #1 #3 }
-\cs_new:Npn \__seq_mapthread_function:wNN \s__seq #1 \s__seq_stop #2#3
-  {
-    \exp_after:wN \__seq_mapthread_function:wNw #2 \s__seq_stop #3
-      #1 { ? \prg_break: } { }
-    \prg_break_point:
-  }
-\cs_new:Npn \__seq_mapthread_function:wNw \s__seq #1 \s__seq_stop #2
-  {
-    \__seq_mapthread_function:Nnnwnn #2
-      #1 { ? \prg_break: } { }
-    \s__seq_stop
-  }
-\cs_new:Npn \__seq_mapthread_function:Nnnwnn #1#2#3#4 \s__seq_stop #5#6
-  {
-    \use_none:n #2
-    \use_none:n #5
-    #1 {#3} {#6}
-    \__seq_mapthread_function:Nnnwnn #1 #4 \s__seq_stop
-  }
-\cs_generate_variant:Nn \seq_mapthread_function:NNN { Nc , c , cc }
 \cs_new_protected:Npn \seq_set_filter:NNn
   { \__seq_set_filter:NNNn \__kernel_tl_set:Nx }
 \cs_new_protected:Npn \seq_gset_filter:NNn
@@ -35587,113 +35679,6 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
     #1 #2 { #3 }
     \__seq_pop_item_def:
   }
-\cs_new_eq:NN \__seq_int_eval:w \tex_numexpr:D
-\cs_new_protected:Npn \seq_set_item:Nnn #1#2#3
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_i:nn }
-\cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
-\cs_generate_variant:Nn \seq_set_item:Nnn { c }
-\cs_generate_variant:Nn \seq_gset_item:Nnn { c }
-\prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
-\prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
-  { \__seq_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
-\prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
-\prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
-\cs_new_protected:Npn \__seq_set_item:NnnNN #1#2#3
-  {
-    \tl_set:Nn \l__seq_internal_a_tl { \__seq_item:n {#3} }
-    \exp_args:Nff \__seq_set_item:nnNNNN
-      { \int_eval:n {#2} } { \seq_count:N #1 } #1 \use_none:nn
-  }
-\cs_new_protected:Npn \__seq_set_item:nnNNNN #1#2
-  {
-    \int_compare:nNnTF {#1} > 0
-      { \int_compare:nNnF {#1} > {#2} { \__seq_set_item:nNnnNNNN { #1 - 1 } } }
-      {
-        \int_compare:nNnF {#1} < {-#2}
-          {
-            \int_compare:nNnF {#1} = 0
-              { \__seq_set_item:nNnnNNNN { #2 + #1 } }
-          }
-      }
-    \__seq_set_item_false:nnNNNN {#1} {#2}
-  }
-\cs_new_protected:Npn \__seq_set_item_false:nnNNNN #1#2#3#4#5#6
-  {
-    #6
-      {
-        \msg_error:nnxxx { seq } { item-too-large }
-          { \token_to_str:N #3 } {#2} {#1}
-      }
-      { \prg_return_false: }
-  }
-\msg_new:nnnn { seq } { item-too-large }
-  { Sequence~'#1'~does~not~have~an~item~#3 }
-  {
-    An~attempt~was~made~to~push~or~pop~the~item~at~position~#3~
-    of~'#1',~but~this~
-    \int_compare:nTF { #3 = 0 }
-      { position~does~not~exist. }
-      { sequence~only~has~#2~item \int_compare:nF { #2 = 1 } {s}. }
-  }
-\cs_new_protected:Npn \__seq_set_item:nNnnNNNN #1#2#3#4#5#6#7#8
-  {
-    #7 #5
-      {
-        \s__seq
-        \exp_after:wN \__seq_set_item:wn
-        \int_value:w \__seq_int_eval:w #1
-        #5 \s__seq_stop #6
-      }
-    #8 { } { \prg_return_true: }
-  }
-\cs_new:Npn \__seq_set_item:wn #1 \__seq_item:n #2
-  {
-    \if_meaning:w 0 #1 \__seq_set_item_end:w \fi:
-    \exp_not:n { \__seq_item:n {#2} }
-    \exp_after:wN \__seq_set_item:wn
-    \int_value:w \__seq_int_eval:w #1 - 1 \s__seq
-  }
-\cs_new:Npn \__seq_set_item_end:w #1 \exp_not:n #2 #3 \s__seq #4 \s__seq_stop #5
-  {
-    #1
-    \exp_not:o \l__seq_internal_a_tl
-    \exp_not:n {#4}
-    #5 #2
-  }
-\cs_new_protected:Npn \seq_pop_item:NnN #1#2#3
-  { \seq_pop_item:NnNTF #1 {#2} #3 { } { } }
-\cs_new_protected:Npn \seq_gpop_item:NnN #1#2#3
-  { \seq_gpop_item:NnNTF #1 {#2} #3 { } { } }
-\cs_generate_variant:Nn \seq_pop_item:NnN { c }
-\cs_generate_variant:Nn \seq_gpop_item:NnN { c }
-\prg_new_protected_conditional:Npnn \seq_pop_item:NnN #1#2#3 { TF , T , F }
-  { \__seq_pop_item:NnNN #1 {#2} #3 \__kernel_tl_set:Nx }
-\prg_new_protected_conditional:Npnn \seq_gpop_item:NnN #1#2#3 { TF , T , F }
-  { \__seq_pop_item:NnNN #1 {#2} #3 \__kernel_tl_gset:Nx }
-\prg_generate_conditional_variant:Nnn \seq_pop_item:NnN { c } { TF , T , F }
-\prg_generate_conditional_variant:Nnn \seq_gpop_item:NnN { c } { TF , T , F }
-\cs_new_protected:Npn \__seq_pop_item:NnNN #1#2#3#4
-  {
-    \tl_clear:N \l__seq_internal_a_tl
-    \tl_set:Nn \l__seq_internal_b_tl { \__kernel_tl_set:Nx #3 }
-    \exp_args:Nff \__seq_set_item:nnNNNN
-      { \int_eval:n {#2} } { \seq_count:N #1 }
-      #1 \__seq_pop_item_aux:w #4 \__seq_pop_item:nn
-  }
-\cs_new_protected:Npn \__seq_pop_item:nn #1#2
-  {
-    \if_meaning:w \prg_return_false: #2
-      \l__seq_internal_b_tl { \exp_not:N \q_no_value }
-    \fi:
-    #2
-  }
-\cs_new:Npn \__seq_pop_item_aux:w \__seq_item:n #1
-  {
-    \if_false: { \fi: }
-    \l__seq_internal_b_tl { \if_false: } \fi: \exp_not:n {#1}
-  }
 \cs_new_protected:Npn \tl_build_begin:N #1
   { \__tl_build_begin:NN \cs_set_nopar:Npx #1 }
 \cs_new_protected:Npn \tl_build_gbegin:N #1
@@ -36132,6 +36117,8 @@ Type  H <return>  for immediate help}\def~{\errmessage{%
 \cs_gset_protected:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
 \__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_function:NN }
 \cs_gset:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
+\__kernel_patch_deprecation:nnNNpn { 2023-05-10 } { \seq_mapthread_function:NNN }
+\cs_gset:Npn \seq_mapthread_function:NNN { \seq_map_pairwise_function:NNN }
 \__kernel_patch_deprecation:nnNNpn { 2021-01-11 } { (no~longer~required) }
 \cs_gset_protected:Npn \sys_load_deprecation: { }
 \__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n }
diff --git a/texmf/tex/latex/l3kernel/expl3-generic.tex b/texmf/tex/latex/l3kernel/expl3-generic.tex
index 99c58440..0dd38b9e 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{2023-05-05}%
+\def\ExplFileDate{2023-05-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.ltx b/texmf/tex/latex/l3kernel/expl3.ltx
index b95a6bf2..e9b7a23e 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{2023-05-05}%
+\def\ExplFileDate{2023-05-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \catcode`\_=11
diff --git a/texmf/tex/latex/l3kernel/expl3.sty b/texmf/tex/latex/l3kernel/expl3.sty
index be1ef27a..7df6fceb 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{2023-05-05}%
+\def\ExplFileDate{2023-05-11}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%





More information about the latex3-commits mailing list.