texlive[64252] Master/texmf-dist: l3backend (31aug22)

commits+karl at tug.org commits+karl at tug.org
Wed Aug 31 22:20:02 CEST 2022


Revision: 64252
          http://tug.org/svn/texlive?view=revision&revision=64252
Author:   karl
Date:     2022-08-31 22:20:02 +0200 (Wed, 31 Aug 2022)
Log Message:
-----------
l3backend (31aug22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3backend/README.md
    trunk/Master/texmf-dist/doc/latex/l3backend/l3backend-code.pdf
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
    trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
    trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/CHANGELOG.md	2022-08-31 20:20:02 UTC (rev 64252)
@@ -6,6 +6,11 @@
 
 ## [Unreleased]
 
+## [2022-08-30]
+
+### Added
+- Support for new approach to writing PDF objects
+
 ## [2022-08-23]
 
 ### Changed
@@ -262,7 +267,8 @@
 - Include `l3backend` in file names
 - Moved backend code to internal for each 'parent' module
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2022-08-23...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2022-08-30...HEAD
+[2022-08-30]: https://github.com/latex3/latex3/compare/2022-08-23...2022-08-30
 [2022-08-23]: https://github.com/latex3/latex3/compare/2022-08-05...2022-08-23
 [2022-08-05]: https://github.com/latex3/latex3/compare/2022-07-01...2022-08-05
 [2022-07-01]: https://github.com/latex3/latex3/compare/2022-04-20...2022-07-01

Modified: trunk/Master/texmf-dist/doc/latex/l3backend/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/doc/latex/l3backend/README.md	2022-08-31 20:20:02 UTC (rev 64252)
@@ -1,7 +1,7 @@
 LaTeX3 Backend Drivers
 ======================
 
-Release 2022-08-23
+Release 2022-08-30
 
 This package forms parts of `expl3`, and contains the code used to interface
 with backends (drivers) across the `expl3` codebase. The functions here are

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

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx	2022-08-31 20:20:02 UTC (rev 64252)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2022-08-23}
+% \date{Released 2022-08-30}
 %
 % \maketitle
 %
@@ -70,27 +70,27 @@
 %    \begin{macrocode}
 \ProvidesExplFile
 %<*dvipdfmx>
-  {l3backend-dvipdfmx.def}{2022-08-23}{}
+  {l3backend-dvipdfmx.def}{2022-08-30}{}
   {L3 backend support: dvipdfmx}
 %</dvipdfmx>
 %<*dvips>
-  {l3backend-dvips.def}{2022-08-23}{}
+  {l3backend-dvips.def}{2022-08-30}{}
   {L3 backend support: dvips}
 %</dvips>
 %<*dvisvgm>
-  {l3backend-dvisvgm.def}{2022-08-23}{}
+  {l3backend-dvisvgm.def}{2022-08-30}{}
   {L3 backend support: dvisvgm}
 %</dvisvgm>
 %<*luatex>
-  {l3backend-luatex.def}{2022-08-23}{}
+  {l3backend-luatex.def}{2022-08-30}{}
   {L3 backend support: PDF output (LuaTeX)}
 %</luatex>
 %<*pdftex>
-  {l3backend-pdftex.def}{2022-08-23}{}
+  {l3backend-pdftex.def}{2022-08-30}{}
   {L3 backend support: PDF output (pdfTeX)}
 %</pdftex>
 %<*xetex>
-  {l3backend-xetex.def}{2022-08-23}{}
+  {l3backend-xetex.def}{2022-08-30}{}
   {L3 backend support: XeTeX}
 %</xetex>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx	2022-08-31 20:20:02 UTC (rev 64252)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2022-08-23}
+% \date{Released 2022-08-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx	2022-08-31 20:20:02 UTC (rev 64252)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2022-08-23}
+% \date{Released 2022-08-30}
 %
 % \maketitle
 %
@@ -852,8 +852,8 @@
   {
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g_@@_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g_@@_model_int }
+        \pdf_object_new:n { color \int_use:N \g_@@_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g_@@_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
     \prop_gput:Nnx \g_@@_backend_colorant_prop { /#1 }
@@ -867,8 +867,8 @@
   {
     \pdf_object_if_exist:nF { @@_illuminant_CIELAB_ #1 }
       {
-        \pdf_object_new:nn { @@_illuminant_CIELAB_ #1 } { array }
-        \pdf_object_write:nx { @@_illuminant_CIELAB_ #1 }
+        \pdf_object_new:n { @@_illuminant_CIELAB_ #1 }
+        \pdf_object_write:nnx { @@_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -921,8 +921,8 @@
      }
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g_@@_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g_@@_model_int }
+        \pdf_object_new:n { color \int_use:N \g_@@_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g_@@_model_int } { array }
           {
             /DeviceN ~
             [ ~ #1 ~ ] ~
@@ -951,8 +951,8 @@
   {
     \pdf_object_if_exist:nF { @@_icc_ #1 }
       {
-        \pdf_object_new:nn { @@_icc_ #1 } { fstream }
-        \pdf_object_write:nx { @@_icc_ #1 }
+        \pdf_object_new:n { @@_icc_ #1 }
+        \pdf_object_write:nnx { @@_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -976,8 +976,8 @@
   {
     \pdf_object_if_exist:nF { @@_icc_ #1 }
       {
-        \pdf_object_new:nn { @@_icc_ #1 } { fstream }
-        \pdf_object_write:nn { @@_icc_ #1 }
+        \pdf_object_new:n { @@_icc_ #1 }
+        \pdf_object_write:nnn { @@_icc_ #1 } { fstream }
           {
             { /N ~ #3 }
             {#1}

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx	2022-08-31 20:20:02 UTC (rev 64252)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2022-08-23}
+% \date{Released 2022-08-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx	2022-08-31 20:20:02 UTC (rev 64252)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2022-08-23}
+% \date{Released 2022-08-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx	2022-08-31 20:20:02 UTC (rev 64252)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2022-08-23}
+% \date{Released 2022-08-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx	2022-08-31 20:20:02 UTC (rev 64252)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2022-08-23}
+% \date{Released 2022-08-30}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx	2022-08-31 20:20:02 UTC (rev 64252)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2022-08-23}
+% \date{Released 2022-08-30}
 %
 % \maketitle
 %
@@ -105,35 +105,36 @@
 %
 % \subsubsection{Objects}
 %
-% \begin{variable}{\g_@@_backend_object_int, \g_@@_backend_object_prop}
-%   For tracking objects to allow finalisation.
+% \begin{variable}{\g_@@_backend_object_int}
+%   For tracking objects.
 %    \begin{macrocode}
 \int_new:N \g_@@_backend_object_int
-\prop_new:N \g_@@_backend_object_prop
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\@@_backend_object_new:nn}
+% \begin{macro}{\@@_backend_object_new:n}
 % \begin{macro}[EXP]{\@@_backend_object_ref:n}
-%   Tracking objects is similar to \texttt{dvipdfmx}.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_object_new:nn #1#2
+\cs_new_protected:Npn \@@_backend_object_new:n #1
   {
     \int_gincr:N \g_@@_backend_object_int
     \int_const:cn
-      { c_@@_backend_object_ \tl_to_str:n {#1} _int }
+      { c_@@_object_ \tl_to_str:n {#1} _int }
       { \g_@@_backend_object_int }
-    \prop_gput:Nnn \g_@@_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \@@_backend_object_ref:n #1
-  { { pdf.obj \int_use:c { c_@@_backend_object_ \tl_to_str:n {#1} _int } } }
+  { { pdf.obj \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } } }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_backend_object_write:nn, \@@_backend_object_write:nx}
 % \begin{macro}
 %   {
+%     \@@_backend_object_write:nnn, \@@_backend_object_write:nnx,
+%     \@@_backend_object_write_aux:nnn
+%   }
+% \begin{macro}
+%   {
 %     \@@_backend_object_write_array:nn   ,
 %     \@@_backend_object_write_dict:nn    ,
 %     \@@_backend_object_write_fstream:nn ,
@@ -141,16 +142,23 @@
 %   }
 % \begin{macro}{\@@_backend_object_write_stream:nnn}
 %   This is where we choose the actual type: some work to get things
-%   right.
+%   right. To allow code sharing with the anonymous version, we use an
+%   auxiliary.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_object_write:nn #1#2
+\cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3
   {
+    \@@_backend_object_write_aux:nnn
+      { \@@_backend_object_ref:n {#1} }
+      {#2} {#3}
+  }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_new_protected:Npn \@@_backend_object_write_aux:nnn #1#2#3
+  {
     \@@_backend_pdfmark:x
       {
-        /_objdef ~ \@@_backend_object_ref:n {#1}
+        /_objdef ~ #1
         /type
-        \str_case_e:nn
-          { \prop_item:Nn \g_@@_backend_object_prop {#1} }
+        \str_case:nn {#2}
           {
             { array }   { /array }
             { dict }    { /dict }
@@ -159,11 +167,8 @@
           }
         /OBJ
       }
-    \use:c
-      { @@_backend_object_write_ \prop_item:Nn \g_@@_backend_object_prop {#1} :nn }
-      { \@@_backend_object_ref:n {#1} } {#2}
+    \use:c { @@_backend_object_write_ #2 :nn } {#1} {#3}
   }
-\cs_generate_variant:Nn \@@_backend_object_write:nn { nx }
 \cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2
   {
     \@@_backend_pdfmark:x
@@ -213,22 +218,9 @@
 \cs_new_protected:Npn \@@_backend_object_now:nn #1#2
   {
     \int_gincr:N \g_@@_backend_object_int
-    \@@_backend_pdfmark:x
-      {
-        /_objdef ~ { pdf.obj \int_use:N \g_@@_backend_object_int }
-        /type
-        \str_case:nn
-          {#1}
-          {
-            { array }   { /array }
-            { dict }    { /dict }
-            { fstream } { /stream }
-            { stream }  { /stream }
-          }
-        /OBJ
-      }
-    \exp_args:Nnx \use:c { @@_backend_object_write_ #1 :nn }
-      { { pdf.obj \int_use:N \g_@@_backend_object_int } } {#2}
+    \@@_backend_object_write_aux:nnn
+      { { pdf.obj \int_use:N \g_@@_backend_object_int } }
+      {#1} {#2}
   }
 \cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
 %    \end{macrocode}
@@ -971,12 +963,12 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\@@_backend_object_new:nn}
+% \begin{macro}{\@@_backend_object_new:n}
 % \begin{macro}[EXP]{\@@_backend_object_ref:n}
 %   Declaring objects means reserving at the PDF level plus starting
 %   tracking.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_object_new:nn #1#2
+\cs_new_protected:Npn \@@_backend_object_new:n #1
   {
 %<*luatex>
     \tex_pdfextension:D obj ~
@@ -986,7 +978,7 @@
 %</pdftex>
       reserveobjnum ~
       \int_const:cn
-        { c_@@_backend_object_ \tl_to_str:n {#1} _int }
+        { c_@@_object_ \tl_to_str:n {#1} _int }
 %<*luatex>
         { \tex_pdffeedback:D lastobj }
 %</luatex>
@@ -993,20 +985,20 @@
 %<*pdftex>
         { \tex_pdflastobj:D }
 %</pdftex>
-    \prop_gput:Nnn \g_@@_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \@@_backend_object_ref:n #1
-  { \int_use:c { c_@@_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
+  { \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_backend_object_write:nn,\@@_backend_object_write:nx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx}
+% \begin{macro}[EXP]{\@@_backend_object_write:nn}
 % \begin{macro}[EXP]{\@@_exp_not_i:nn, \@@_exp_not_ii:nn}
 %   Writing the data needs a little information about the structure of the
 %   object.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_object_write:nn #1#2
+\cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3
   {
 %<*luatex>
     \tex_immediate:D \tex_pdfextension:D obj ~
@@ -1016,9 +1008,12 @@
 %</pdftex>
       useobjnum ~
       \int_use:c
-        { c_@@_backend_object_ \tl_to_str:n {#1} _int }
-      \str_case_e:nn
-        { \prop_item:Nn \g_@@_backend_object_prop {#1} }
+        { c_@@_object_ \tl_to_str:n {#1} _int }
+      \@@_backend_object_write:nn {#2} {#3}
+  }
+\cs_new:Npn \@@_backend_object_write:nn #1#2
+  {
+      \str_case:nn {#1}
         {
           { array } { { [ ~ \exp_not:n {#2} ~ ] } }
           { dict }  { { << ~ \exp_not:n {#2} ~ >> } }
@@ -1034,12 +1029,13 @@
             }
         }
   }
-\cs_generate_variant:Nn \@@_backend_object_write:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
 \cs_new:Npn \@@_exp_not_i:nn #1#2 { \exp_not:n {#1} }
 \cs_new:Npn \@@_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
 %   Much like writing, but direct creation.
@@ -1052,22 +1048,7 @@
 %<*pdftex>
     \tex_immediate:D \tex_pdfobj:D
 %</pdftex>
-      \str_case:nn
-        {#1}
-        {
-          { array } { { [ ~ \exp_not:n {#2} ~ ] } }
-          { dict }  { { << ~ \exp_not:n {#2} ~ >> } }
-          { fstream }
-            {
-              stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~
-                file ~ { \@@_exp_not_ii:nn #2 }
-            }
-          { stream }
-            {
-              stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~
-                { \@@_exp_not_ii:nn #2 }
-            }
-        }
+      \@@_backend_object_write:nn {#1} {#2}
   }
 \cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
 %    \end{macrocode}
@@ -1267,27 +1248,25 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{macro}{\@@_backend_object_new:nn}
+% \begin{macro}{\@@_backend_object_new:n}
 % \begin{macro}[EXP]{\@@_backend_object_ref:n}
 %   Objects are tracked at the macro level, but we don't have to do anything
 %   at this stage.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_object_new:nn #1#2
+\cs_new_protected:Npn \@@_backend_object_new:n #1
   {
     \int_gincr:N \g_@@_backend_object_int
     \int_const:cn
-      { c_@@_backend_object_ \tl_to_str:n {#1} _int }
+      { c_@@_object_ \tl_to_str:n {#1} _int }
       { \g_@@_backend_object_int }
-    \prop_gput:Nnn \g_@@_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \@@_backend_object_ref:n #1
-  { @pdf.obj \int_use:c { c_@@_backend_object_ \tl_to_str:n {#1} _int } }
+  { @pdf.obj \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@@_backend_object_write:nn, \@@_backend_object_write:nx}
-% \begin{macro}{\@@_backend_object_write:nnn}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx}
 % \begin{macro}
 %   {
 %     \@@_backend_object_write_array:nn   ,
@@ -1298,17 +1277,12 @@
 % \begin{macro}{\@@_backend_object_write_stream:nnnn}
 %   This is where we choose the actual type.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_object_write:nn #1#2
-  {
-    \exp_args:Nx \@@_backend_object_write:nnn
-      { \prop_item:Nn \g_@@_backend_object_prop {#1} } {#1} {#2}
-  }
-\cs_generate_variant:Nn \@@_backend_object_write:nn { nx }
 \cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3
   {
-    \use:c { @@_backend_object_write_ #1 :nn }
-      { \@@_backend_object_ref:n {#2} } {#3}
+    \use:c { @@_backend_object_write_ #2 :nn }
+      { \@@_backend_object_ref:n {#1} } {#3}
   }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
 \cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2
   {
     \@@_backend:x
@@ -1335,7 +1309,6 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
-% \end{macro}
 %
 % \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
 %   No anonymous objects with \texttt{dvipdfmx} so we have to give an
@@ -1659,18 +1632,18 @@
 %
 % \subsubsection{Objects}
 %
-% \begin{macro}{\@@_backend_object_new:nn}
+% \begin{macro}{\@@_backend_object_new:n}
 % \begin{macro}[EXP]{\@@_backend_object_ref:n}
-% \begin{macro}{\@@_backend_object_write:nn, , \@@_backend_object_write:nx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nx}
 % \begin{macro}{\@@_backend_object_now:nn, , \@@_backend_object_now:nx}
 % \begin{macro}{\@@_backend_object_last:}
 % \begin{macro}[EXP]{\@@_backend_pageobject_ref:n}
 %   All no-ops here.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_object_new:nn #1#2 { }
+\cs_new_protected:Npn \@@_backend_object_new:nn #1 { }
 \cs_new:Npn \@@_backend_object_ref:n #1 { }
-\cs_new_protected:Npn \@@_backend_object_write:nn #1#2 { }
-\cs_new_protected:Npn \@@_backend_object_write:nx #1#2 { }
+\cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3 { }
+\cs_new_protected:Npn \@@_backend_object_write:nnx #1#2#3 { }
 \cs_new_protected:Npn \@@_backend_object_now:nn #1#2 { }
 \cs_new_protected:Npn \@@_backend_object_now:nx #1#2 { }
 \cs_new:Npn \@@_backend_object_last: { }

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def	2022-08-31 20:20:02 UTC (rev 64252)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvipdfmx.def}{2022-08-23}{}
+  {l3backend-dvipdfmx.def}{2022-08-30}{}
   {L3 backend support: dvipdfmx}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -147,8 +147,8 @@
   {
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g__color_model_int }
+        \pdf_object_new:n { color \int_use:N \g__color_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
     \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 }
@@ -158,8 +158,8 @@
   {
     \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
       {
-        \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array }
-        \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 }
+        \pdf_object_new:n { __color_illuminant_CIELAB_ #1 }
+        \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -202,8 +202,8 @@
      }
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g__color_model_int }
+        \pdf_object_new:n { color \int_use:N \g__color_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           {
             /DeviceN ~
             [ ~ #1 ~ ] ~
@@ -224,8 +224,8 @@
   {
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
-        \pdf_object_new:nn { __color_icc_ #1 } { fstream }
-        \pdf_object_write:nx { __color_icc_ #1 }
+        \pdf_object_new:n { __color_icc_ #1 }
+        \pdf_object_write:nnx { __color_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -242,8 +242,8 @@
   {
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
-        \pdf_object_new:nn { __color_icc_ #1 } { fstream }
-        \pdf_object_write:nn { __color_icc_ #1 }
+        \pdf_object_new:n { __color_icc_ #1 }
+        \pdf_object_write:nnn { __color_icc_ #1 } { fstream }
           {
             { /N ~ #3 }
             {#1}
@@ -625,27 +625,21 @@
   { \__pdf_backend:n { docinfo << /#1 ~ #2 >> } }
 \int_new:N \g__pdf_backend_object_int
 \prop_new:N \g__pdf_backend_object_prop
-\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2
+\cs_new_protected:Npn \__pdf_backend_object_new:n #1
   {
     \int_gincr:N \g__pdf_backend_object_int
     \int_const:cn
-      { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+      { c__pdf_object_ \tl_to_str:n {#1} _int }
       { \g__pdf_backend_object_int }
-    \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \__pdf_backend_object_ref:n #1
-  { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } }
-\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2
-  {
-    \exp_args:Nx \__pdf_backend_object_write:nnn
-      { \prop_item:Nn \g__pdf_backend_object_prop {#1} } {#1} {#2}
-  }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
+  { @pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } }
 \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3
   {
-    \use:c { __pdf_backend_object_write_ #1 :nn }
-      { \__pdf_backend_object_ref:n {#2} } {#3}
+    \use:c { __pdf_backend_object_write_ #2 :nn }
+      { \__pdf_backend_object_ref:n {#1} } {#3}
   }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
 \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2
   {
     \__pdf_backend:x

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvips.def	2022-08-31 20:20:02 UTC (rev 64252)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvips.def}{2022-08-23}{}
+  {l3backend-dvips.def}{2022-08-30}{}
   {L3 backend support: dvips}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -636,25 +636,29 @@
 \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2
   { \__pdf_backend_pdfmark:n { /#1 ~ #2 /DOCINFO } }
 \int_new:N \g__pdf_backend_object_int
-\prop_new:N \g__pdf_backend_object_prop
-\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2
+\cs_new_protected:Npn \__pdf_backend_object_new:n #1
   {
     \int_gincr:N \g__pdf_backend_object_int
     \int_const:cn
-      { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+      { c__pdf_object_ \tl_to_str:n {#1} _int }
       { \g__pdf_backend_object_int }
-    \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \__pdf_backend_object_ref:n #1
-  { { pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } }
-\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2
+  { { pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } } }
+\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3
   {
+    \__pdf_backend_object_write_aux:nnn
+      { \__pdf_backend_object_ref:n {#1} }
+      {#2} {#3}
+  }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
+\cs_new_protected:Npn \__pdf_backend_object_write_aux:nnn #1#2#3
+  {
     \__pdf_backend_pdfmark:x
       {
-        /_objdef ~ \__pdf_backend_object_ref:n {#1}
+        /_objdef ~ #1
         /type
-        \str_case_e:nn
-          { \prop_item:Nn \g__pdf_backend_object_prop {#1} }
+        \str_case:nn {#2}
           {
             { array }   { /array }
             { dict }    { /dict }
@@ -663,11 +667,8 @@
           }
         /OBJ
       }
-    \use:c
-      { __pdf_backend_object_write_ \prop_item:Nn \g__pdf_backend_object_prop {#1} :nn }
-      { \__pdf_backend_object_ref:n {#1} } {#2}
+    \use:c { __pdf_backend_object_write_ #2 :nn } {#1} {#3}
   }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
 \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2
   {
     \__pdf_backend_pdfmark:x
@@ -709,22 +710,9 @@
 \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
   {
     \int_gincr:N \g__pdf_backend_object_int
-    \__pdf_backend_pdfmark:x
-      {
-        /_objdef ~ { pdf.obj \int_use:N \g__pdf_backend_object_int }
-        /type
-        \str_case:nn
-          {#1}
-          {
-            { array }   { /array }
-            { dict }    { /dict }
-            { fstream } { /stream }
-            { stream }  { /stream }
-          }
-        /OBJ
-      }
-    \exp_args:Nnx \use:c { __pdf_backend_object_write_ #1 :nn }
-      { { pdf.obj \int_use:N \g__pdf_backend_object_int } } {#2}
+    \__pdf_backend_object_write_aux:nnn
+      { { pdf.obj \int_use:N \g__pdf_backend_object_int } }
+      {#1} {#2}
   }
 \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
 \cs_new:Npn \__pdf_backend_object_last:

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-dvisvgm.def	2022-08-31 20:20:02 UTC (rev 64252)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-dvisvgm.def}{2022-08-23}{}
+  {l3backend-dvisvgm.def}{2022-08-30}{}
   {L3 backend support: dvisvgm}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -657,10 +657,10 @@
 \cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { }
 \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2 { }
 \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { }
-\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 { }
+\cs_new_protected:Npn \__pdf_backend_object_new:nn #1 { }
 \cs_new:Npn \__pdf_backend_object_ref:n #1 { }
-\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 { }
-\cs_new_protected:Npn \__pdf_backend_object_write:nx #1#2 { }
+\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3 { }
+\cs_new_protected:Npn \__pdf_backend_object_write:nnx #1#2#3 { }
 \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { }
 \cs_new_protected:Npn \__pdf_backend_object_now:nx #1#2 { }
 \cs_new:Npn \__pdf_backend_object_last: { }

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def	2022-08-31 20:20:02 UTC (rev 64252)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-luatex.def}{2022-08-23}{}
+  {l3backend-luatex.def}{2022-08-30}{}
   {L3 backend support: PDF output (LuaTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -205,8 +205,8 @@
   {
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g__color_model_int }
+        \pdf_object_new:n { color \int_use:N \g__color_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
     \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 }
@@ -216,8 +216,8 @@
   {
     \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
       {
-        \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array }
-        \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 }
+        \pdf_object_new:n { __color_illuminant_CIELAB_ #1 }
+        \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -260,8 +260,8 @@
      }
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g__color_model_int }
+        \pdf_object_new:n { color \int_use:N \g__color_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           {
             /DeviceN ~
             [ ~ #1 ~ ] ~
@@ -282,8 +282,8 @@
   {
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
-        \pdf_object_new:nn { __color_icc_ #1 } { fstream }
-        \pdf_object_write:nx { __color_icc_ #1 }
+        \pdf_object_new:n { __color_icc_ #1 }
+        \pdf_object_write:nnx { __color_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -300,8 +300,8 @@
   {
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
-        \pdf_object_new:nn { __color_icc_ #1 } { fstream }
-        \pdf_object_write:nn { __color_icc_ #1 }
+        \pdf_object_new:n { __color_icc_ #1 }
+        \pdf_object_write:nnn { __color_icc_ #1 } { fstream }
           {
             { /N ~ #3 }
             {#1}
@@ -736,25 +736,27 @@
       { / #1 ~ #2 }
   }
 \prop_new:N \g__pdf_backend_object_prop
-\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2
+\cs_new_protected:Npn \__pdf_backend_object_new:n #1
   {
     \tex_pdfextension:D obj ~
       reserveobjnum ~
       \int_const:cn
-        { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+        { c__pdf_object_ \tl_to_str:n {#1} _int }
         { \tex_pdffeedback:D lastobj }
-    \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \__pdf_backend_object_ref:n #1
-  { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
-\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2
+  { \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
+\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3
   {
     \tex_immediate:D \tex_pdfextension:D obj ~
       useobjnum ~
       \int_use:c
-        { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
-      \str_case_e:nn
-        { \prop_item:Nn \g__pdf_backend_object_prop {#1} }
+        { c__pdf_object_ \tl_to_str:n {#1} _int }
+      \__pdf_backend_object_write:nn {#2} {#3}
+  }
+\cs_new:Npn \__pdf_backend_object_write:nn #1#2
+  {
+      \str_case:nn {#1}
         {
           { array } { { [ ~ \exp_not:n {#2} ~ ] } }
           { dict }  { { << ~ \exp_not:n {#2} ~ >> } }
@@ -770,28 +772,13 @@
             }
         }
   }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
 \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} }
 \cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
 \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
   {
     \tex_immediate:D \tex_pdfextension:D obj ~
-      \str_case:nn
-        {#1}
-        {
-          { array } { { [ ~ \exp_not:n {#2} ~ ] } }
-          { dict }  { { << ~ \exp_not:n {#2} ~ >> } }
-          { fstream }
-            {
-              stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
-                file ~ { \__pdf_exp_not_ii:nn #2 }
-            }
-          { stream }
-            {
-              stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
-                { \__pdf_exp_not_ii:nn #2 }
-            }
-        }
+      \__pdf_backend_object_write:nn {#1} {#2}
   }
 \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
 \cs_new:Npx \__pdf_backend_object_last:

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def	2022-08-31 20:20:02 UTC (rev 64252)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-pdftex.def}{2022-08-23}{}
+  {l3backend-pdftex.def}{2022-08-30}{}
   {L3 backend support: PDF output (pdfTeX)}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -205,8 +205,8 @@
   {
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g__color_model_int }
+        \pdf_object_new:n { color \int_use:N \g__color_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
     \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 }
@@ -216,8 +216,8 @@
   {
     \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
       {
-        \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array }
-        \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 }
+        \pdf_object_new:n { __color_illuminant_CIELAB_ #1 }
+        \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -260,8 +260,8 @@
      }
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g__color_model_int }
+        \pdf_object_new:n { color \int_use:N \g__color_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           {
             /DeviceN ~
             [ ~ #1 ~ ] ~
@@ -282,8 +282,8 @@
   {
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
-        \pdf_object_new:nn { __color_icc_ #1 } { fstream }
-        \pdf_object_write:nx { __color_icc_ #1 }
+        \pdf_object_new:n { __color_icc_ #1 }
+        \pdf_object_write:nnx { __color_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -300,8 +300,8 @@
   {
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
-        \pdf_object_new:nn { __color_icc_ #1 } { fstream }
-        \pdf_object_write:nn { __color_icc_ #1 }
+        \pdf_object_new:n { __color_icc_ #1 }
+        \pdf_object_write:nnn { __color_icc_ #1 } { fstream }
           {
             { /N ~ #3 }
             {#1}
@@ -736,25 +736,27 @@
       { / #1 ~ #2 }
   }
 \prop_new:N \g__pdf_backend_object_prop
-\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2
+\cs_new_protected:Npn \__pdf_backend_object_new:n #1
   {
     \tex_pdfobj:D
       reserveobjnum ~
       \int_const:cn
-        { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+        { c__pdf_object_ \tl_to_str:n {#1} _int }
         { \tex_pdflastobj:D }
-    \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \__pdf_backend_object_ref:n #1
-  { \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
-\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2
+  { \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
+\cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3
   {
     \tex_immediate:D \tex_pdfobj:D
       useobjnum ~
       \int_use:c
-        { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
-      \str_case_e:nn
-        { \prop_item:Nn \g__pdf_backend_object_prop {#1} }
+        { c__pdf_object_ \tl_to_str:n {#1} _int }
+      \__pdf_backend_object_write:nn {#2} {#3}
+  }
+\cs_new:Npn \__pdf_backend_object_write:nn #1#2
+  {
+      \str_case:nn {#1}
         {
           { array } { { [ ~ \exp_not:n {#2} ~ ] } }
           { dict }  { { << ~ \exp_not:n {#2} ~ >> } }
@@ -770,28 +772,13 @@
             }
         }
   }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
 \cs_new:Npn \__pdf_exp_not_i:nn #1#2 { \exp_not:n {#1} }
 \cs_new:Npn \__pdf_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
 \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2
   {
     \tex_immediate:D \tex_pdfobj:D
-      \str_case:nn
-        {#1}
-        {
-          { array } { { [ ~ \exp_not:n {#2} ~ ] } }
-          { dict }  { { << ~ \exp_not:n {#2} ~ >> } }
-          { fstream }
-            {
-              stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
-                file ~ { \__pdf_exp_not_ii:nn #2 }
-            }
-          { stream }
-            {
-              stream ~ attr ~ { \__pdf_exp_not_i:nn #2 } ~
-                { \__pdf_exp_not_ii:nn #2 }
-            }
-        }
+      \__pdf_backend_object_write:nn {#1} {#2}
   }
 \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx }
 \cs_new:Npx \__pdf_backend_object_last:

Modified: trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def	2022-08-31 20:19:45 UTC (rev 64251)
+++ trunk/Master/texmf-dist/tex/latex/l3backend/l3backend-xetex.def	2022-08-31 20:20:02 UTC (rev 64252)
@@ -26,7 +26,7 @@
 %% 
 %% File: l3backend-basics.dtx
 \ProvidesExplFile
-  {l3backend-xetex.def}{2022-08-23}{}
+  {l3backend-xetex.def}{2022-08-30}{}
   {L3 backend support: XeTeX}
 \cs_if_exist:NTF \__kernel_dependency_version_check:nn
   {
@@ -147,8 +147,8 @@
   {
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g__color_model_int }
+        \pdf_object_new:n { color \int_use:N \g__color_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           { /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
       }
     \prop_gput:Nnx \g__color_backend_colorant_prop { /#1 }
@@ -158,8 +158,8 @@
   {
     \pdf_object_if_exist:nF { __color_illuminant_CIELAB_ #1 }
       {
-        \pdf_object_new:nn { __color_illuminant_CIELAB_ #1 } { array }
-        \pdf_object_write:nx { __color_illuminant_CIELAB_ #1 }
+        \pdf_object_new:n { __color_illuminant_CIELAB_ #1 }
+        \pdf_object_write:nnx { __color_illuminant_CIELAB_ #1 } { array }
           {
             /Lab ~
             <<
@@ -202,8 +202,8 @@
      }
     \use:x
       {
-        \pdf_object_new:nn { color \int_use:N \g__color_model_int } { array }
-        \pdf_object_write:nn { color \int_use:N \g__color_model_int }
+        \pdf_object_new:n { color \int_use:N \g__color_model_int }
+        \pdf_object_write:nnn { color \int_use:N \g__color_model_int } { array }
           {
             /DeviceN ~
             [ ~ #1 ~ ] ~
@@ -224,8 +224,8 @@
   {
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
-        \pdf_object_new:nn { __color_icc_ #1 } { fstream }
-        \pdf_object_write:nx { __color_icc_ #1 }
+        \pdf_object_new:n { __color_icc_ #1 }
+        \pdf_object_write:nnx { __color_icc_ #1 } { fstream }
           {
             {
               /N ~ \exp_not:n { #2 } ~
@@ -242,8 +242,8 @@
   {
     \pdf_object_if_exist:nF { __color_icc_ #1 }
       {
-        \pdf_object_new:nn { __color_icc_ #1 } { fstream }
-        \pdf_object_write:nn { __color_icc_ #1 }
+        \pdf_object_new:n { __color_icc_ #1 }
+        \pdf_object_write:nnn { __color_icc_ #1 } { fstream }
           {
             { /N ~ #3 }
             {#1}
@@ -679,27 +679,21 @@
   { \__pdf_backend:n { docinfo << /#1 ~ #2 >> } }
 \int_new:N \g__pdf_backend_object_int
 \prop_new:N \g__pdf_backend_object_prop
-\cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2
+\cs_new_protected:Npn \__pdf_backend_object_new:n #1
   {
     \int_gincr:N \g__pdf_backend_object_int
     \int_const:cn
-      { c__pdf_backend_object_ \tl_to_str:n {#1} _int }
+      { c__pdf_object_ \tl_to_str:n {#1} _int }
       { \g__pdf_backend_object_int }
-    \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2}
   }
 \cs_new:Npn \__pdf_backend_object_ref:n #1
-  { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } }
-\cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2
-  {
-    \exp_args:Nx \__pdf_backend_object_write:nnn
-      { \prop_item:Nn \g__pdf_backend_object_prop {#1} } {#1} {#2}
-  }
-\cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx }
+  { @pdf.obj \int_use:c { c__pdf_object_ \tl_to_str:n {#1} _int } }
 \cs_new_protected:Npn \__pdf_backend_object_write:nnn #1#2#3
   {
-    \use:c { __pdf_backend_object_write_ #1 :nn }
-      { \__pdf_backend_object_ref:n {#2} } {#3}
+    \use:c { __pdf_backend_object_write_ #2 :nn }
+      { \__pdf_backend_object_ref:n {#1} } {#3}
   }
+\cs_generate_variant:Nn \__pdf_backend_object_write:nnn { nnx }
 \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2
   {
     \__pdf_backend:x



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