texlive[51879] Master/texmf-dist: lualibs (14aug19)

commits+karl at tug.org commits+karl at tug.org
Wed Aug 14 22:51:13 CEST 2019


Revision: 51879
          http://tug.org/svn/texlive?view=revision&revision=51879
Author:   karl
Date:     2019-08-14 22:51:13 +0200 (Wed, 14 Aug 2019)
Log Message:
-----------
lualibs (14aug19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/luatex/lualibs/NEWS
    trunk/Master/texmf-dist/doc/luatex/lualibs/lualibs.pdf
    trunk/Master/texmf-dist/source/luatex/lualibs/lualibs.dtx
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-basic.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-extended-merged.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-extended.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-lua.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-table.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-trac-inf.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-jsn.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-str.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-tab.lua
    trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs.lua

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/luatex/lualibs/README.md

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/luatex/lualibs/README

Modified: trunk/Master/texmf-dist/doc/luatex/lualibs/NEWS
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/lualibs/NEWS	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/doc/luatex/lualibs/NEWS	2019-08-14 20:51:13 UTC (rev 51879)
@@ -1,4 +1,7 @@
                         History of the lualibs package
+2019/08/11 v2.67/
+    * sync with Context current as of 2019/08/11
+                        
 2019/07/04 v2.66/
     * sync with Context current as of 2019/07/04
     * changed kpse initialization to avoid conflicts with latex-dev format    

Deleted: trunk/Master/texmf-dist/doc/luatex/lualibs/README
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/lualibs/README	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/doc/luatex/lualibs/README	2019-08-14 20:51:13 UTC (rev 51879)
@@ -1,95 +0,0 @@
-********************************************************************************
-                              The Lualibs Package
-********************************************************************************
-
-
-Lualibs is a collection of Lua modules useful for general programming.
-
-This work is based on Lua modules shipped with ConTeXt, to make them available
-for use independent of ConTeXt.
-
-This package has been developed by the LuaLaTeX development team on
-<http://github.com/lualatex/lualibs>. 
-
-The current verson 2.6601 has been build by Ulrike Fischer on
-<https://github.com/u-fischer/lualibs> from context 2019-06-20. 
-
-See the 'NEWS' file for version history.
-
-
-
-Installation
---------------------------------------------------------------------------------
-
-
-1. If you are using TeX Live 2010 or later use 'tlmgr install lualibs'. 
-   With miktex, use the miktex console. 
-   Alternatively, use your (TeX or Linux) distribution's package management
-   system.
-
-2. a. Grab lualibs.tds.zip on CTAN.
-   b. Unzip it at the root of one or your TDS trees.
-   c. You may need to update some filename database after this, see your TeX
-      distribution's manual for details.
-
-
-Manifest
---------------------------------------------------------------------------------
-            file                            TDS location
-
-Source files:
-    lualibs.dtx                     source/luatex/lualibs/lualibs.dtx
-    lualibs-boolean.lua             tex/luatex/lualibs/lualibs-boolean.lua
-    lualibs-compat.lua              tex/luatex/lualibs/lualibs-compat.lua
-    lualibs-dir.lua                 tex/luatex/lualibs/lualibs-dir.lua
-    lualibs-file.lua                tex/luatex/lualibs/lualibs-file.lua
-    lualibs-gzip.lua                tex/luatex/lualibs/lualibs-gzip.lua
-    lualibs-function.lua            tex/luatex/lualibs/lualibs-function.lua
-    lualibs-io.lua                  tex/luatex/lualibs/lualibs-io.lua
-    lualibs-lpeg.lua                tex/luatex/lualibs/lualibs-lpeg.lua
-    lualibs-lua.lua                 tex/luatex/lualibs/lualibs-lua.lua
-    lualibs-math.lua                tex/luatex/lualibs/lualibs-math.lua
-    lualibs-md5.lua                 tex/luatex/lualibs/lualibs-md5.lua
-    lualibs-number.lua              tex/luatex/lualibs/lualibs-number.lua
-    lualibs-os.lua                  tex/luatex/lualibs/lualibs-os.lua
-    lualibs-package.lua             tex/luatex/lualibs/lualibs-package.lua
-    lualibs-set.lua                 tex/luatex/lualibs/lualibs-set.lua
-    lualibs-string.lua              tex/luatex/lualibs/lualibs-string.lua
-    lualibs-table.lua               tex/luatex/lualibs/lualibs-table.lua
-    lualibs-trac-inf.lua            tex/luatex/lualibs/lualibs-trac-inf.lua
-    lualibs-unicode.lua*            tex/luatex/lualibs/lualibs-unicode.lua
-    lualibs-url.lua                 tex/luatex/lualibs/lualibs-url.lua
-    lualibs-util-deb.lua            tex/luatex/lualibs/lualibs-util-deb.lua
-    lualibs-util-dim.lua            tex/luatex/lualibs/lualibs-util-dim.lua
-    lualibs-util-jsn.lua            tex/luatex/lualibs/lualibs-util-jsn.lua
-    lualibs-util-lua.lua            tex/luatex/lualibs/lualibs-util-lua.lua
-    lualibs-util-prs.lua            tex/luatex/lualibs/lualibs-util-prs.lua
-    lualibs-util-sta.lua            tex/luatex/lualibs/lualibs-util-sta.lua
-    lualibs-util-sto.lua            tex/luatex/lualibs/lualibs-util-sto.lua
-    lualibs-util-str.lua            tex/luatex/lualibs/lualibs-util-str.lua
-    lualibs-util-tab.lua            tex/luatex/lualibs/lualibs-util-tab.lua
-    lualibs-util-tpl.lua            tex/luatex/lualibs/lualibs-util-tpl.lua
-    LICENSE                         doc/luatex/lualibs/LICENSE
-    NEWS                            doc/luatex/lualibs/NEWS
-    README                          doc/luatex/lualibs/README
-    
-* the file has been modified to enable the unicode library again    
-
-Derived files:
-    lualibs.lua                     tex/luatex/lualibs/lualibs.lua
-    lualibs-basic.lua               tex/luatex/lualibs/lualibs-basic.lua
-    lualibs-basic-merged.lua        tex/luatex/lualibs/lualibs-basic-merged.lua
-    lualibs-extended.lua            tex/luatex/lualibs/lualibs-extended.lua
-    lualibs-extended-merged.lua     tex/luatex/lualibs/lualibs-extended-merged.lua
-    lualibs.pdf                     doc/luatex/lualibs/lualibs.pdf
-
-License and Copyright
---------------------------------------------------------------------------------
-
-As a derived work of Context, this work and the derived files are under the
-GNU GPL v.2.0 license.
-The full text of the license is included in the file LICENSE.
-
-The files taken from Context (lualibs-*.lua) are copyright PRAGMA ADE / ConTeXt
-Development Team.
-

Added: trunk/Master/texmf-dist/doc/luatex/lualibs/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/lualibs/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/luatex/lualibs/README.md	2019-08-14 20:51:13 UTC (rev 51879)
@@ -0,0 +1,99 @@
+# The Lualibs Package
+
+VERSION: 2.67
+
+DATE: 2019-08-11
+
+Lualibs is a collection of Lua modules useful for general programming.
+
+This work is based on Lua modules shipped with ConTeXt, to make them available
+for use independent of ConTeXt.
+
+This package has been developed by the LuaLaTeX development team on
+<https://github.com/lualatex/lualibs>. 
+
+The current version has been build by Ulrike Fischer on
+<https://github.com/u-fischer/lualibs>. The date equals the date of the context files. 
+
+See the 'NEWS' file for version history.
+
+
+
+## Installation
+
+
+1. If you are using TeX Live 2010 or later use 'tlmgr install lualibs'. 
+   With miktex, use the miktex console. 
+   Alternatively, use your (TeX or Linux) distribution's package management
+   system.
+
+2. 
+    1. Grab lualibs.tds.zip on CTAN.
+    2. Unzip it at the root of one or your TDS trees.
+    3. You may need to update some filename database after this, see your TeX
+      distribution's manual for details.
+
+
+## Manifest
+
+### Source files:
+
+|            file                    |           TDS location
+|------------------------------------|-----------------------------------
+|    lualibs.dtx                     |source/luatex/lualibs/lualibs.dtx
+|    lualibs-boolean.lua             |tex/luatex/lualibs/lualibs-boolean.lua
+|    lualibs-compat.lua              |tex/luatex/lualibs/lualibs-compat.lua
+|    lualibs-dir.lua                 |tex/luatex/lualibs/lualibs-dir.lua
+|    lualibs-file.lua                | tex/luatex/lualibs/lualibs-file.lua
+|    lualibs-gzip.lua                | tex/luatex/lualibs/lualibs-gzip.lua
+|    lualibs-function.lua            | tex/luatex/lualibs/lualibs-function.lua
+|    lualibs-io.lua                  | tex/luatex/lualibs/lualibs-io.lua
+|    lualibs-lpeg.lua                | tex/luatex/lualibs/lualibs-lpeg.lua
+|    lualibs-lua.lua                 | tex/luatex/lualibs/lualibs-lua.lua
+|    lualibs-math.lua                | tex/luatex/lualibs/lualibs-math.lua
+|    lualibs-md5.lua                 | tex/luatex/lualibs/lualibs-md5.lua
+|    lualibs-number.lua              | tex/luatex/lualibs/lualibs-number.lua
+|    lualibs-os.lua                  | tex/luatex/lualibs/lualibs-os.lua
+|    lualibs-package.lua             | tex/luatex/lualibs/lualibs-package.lua
+|    lualibs-set.lua                 | tex/luatex/lualibs/lualibs-set.lua
+|    lualibs-string.lua              | tex/luatex/lualibs/lualibs-string.lua
+|    lualibs-table.lua               | tex/luatex/lualibs/lualibs-table.lua
+|    lualibs-trac-inf.lua            | tex/luatex/lualibs/lualibs-trac-inf.lua
+|    lualibs-unicode.lua\*           | tex/luatex/lualibs/lualibs-unicode.lua
+|    lualibs-url.lua                 | tex/luatex/lualibs/lualibs-url.lua
+|    lualibs-util-deb.lua            | tex/luatex/lualibs/lualibs-util-deb.lua
+|    lualibs-util-dim.lua            | tex/luatex/lualibs/lualibs-util-dim.lua
+|    lualibs-util-jsn.lua            | tex/luatex/lualibs/lualibs-util-jsn.lua
+|    lualibs-util-lua.lua            | tex/luatex/lualibs/lualibs-util-lua.lua
+|    lualibs-util-prs.lua            | tex/luatex/lualibs/lualibs-util-prs.lua
+|    lualibs-util-sta.lua            | tex/luatex/lualibs/lualibs-util-sta.lua
+|    lualibs-util-sto.lua            | tex/luatex/lualibs/lualibs-util-sto.lua
+|    lualibs-util-str.lua            | tex/luatex/lualibs/lualibs-util-str.lua
+|    lualibs-util-tab.lua            | tex/luatex/lualibs/lualibs-util-tab.lua
+|    lualibs-util-tpl.lua            | tex/luatex/lualibs/lualibs-util-tpl.lua
+|    LICENSE                         | doc/luatex/lualibs/LICENSE
+|    NEWS                            | doc/luatex/lualibs/NEWS
+|    README                          | doc/luatex/lualibs/README
+    
+\* the file has been modified to enable the unicode library again    
+
+### Derived files:
+
+|            file                    |           TDS location
+|------------------------------------|-----------------------------------
+|    lualibs.lua                     | tex/luatex/lualibs/lualibs.lua
+|    lualibs-basic.lua               | tex/luatex/lualibs/lualibs-basic.lua
+|    lualibs-basic-merged.lua        | tex/luatex/lualibs/lualibs-basic-merged.lua
+|    lualibs-extended.lua            | tex/luatex/lualibs/lualibs-extended.lua
+|    lualibs-extended-merged.lua     | tex/luatex/lualibs/lualibs-extended-merged.lua
+|    lualibs.pdf                     | doc/luatex/lualibs/lualibs.pdf
+
+## License and Copyright
+
+As a derived work of Context, this work and the derived files are under the
+GNU GPL v.2.0 license.
+The full text of the license is included in the file LICENSE.
+
+The files taken from Context (lualibs-*.lua) are copyright PRAGMA ADE / ConTeXt
+Development Team.
+


Property changes on: trunk/Master/texmf-dist/doc/luatex/lualibs/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/luatex/lualibs/lualibs.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/luatex/lualibs/lualibs.dtx
===================================================================
--- trunk/Master/texmf-dist/source/luatex/lualibs/lualibs.dtx	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/source/luatex/lualibs/lualibs.dtx	2019-08-14 20:51:13 UTC (rev 51879)
@@ -37,7 +37,7 @@
 \input docstrip.tex
 \Msg{************************************************************************}
 \Msg{* Installation}
-\Msg{* Package: lualibs 2019-07-04 v2.66 Lua additional functions.}
+\Msg{* Package: lualibs 2019-08-11 v2.67 Lua additional functions.}
 \Msg{************************************************************************}
 
 \keepsilent
@@ -107,7 +107,7 @@
 %<*driver>
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesFile{lualibs.drv}
-  [2019/07/04 v2.66 Lua Libraries.]
+  [2019/08/11 v2.67 Lua Libraries.]
 \documentclass{ltxdoc}
 \usepackage{fancyvrb,xspace}
 \usepackage[x11names]{xcolor}
@@ -208,7 +208,7 @@
 % \GetFileInfo{lualibs.drv}
 %
 % \title{The \identifier{lualibs} package}
-% \date{2019/07/04 v2.66}
+% \date{2019/08/11 v2.67}
 % \author{Élie Roux      · \email{elie.roux at telecom-bretagne.eu}\\
 %         Philipp Gesang · \email{phg at phi-gamma.net}\\
 %         Ulrike Fischer · \email{fischer at troubleshooting-tex.de}\\
@@ -429,8 +429,8 @@
 
 lualibs.module_info = {
   name          = "lualibs",
-  version       = 2.66,
-  date          = "2019-07-04",
+  version       = "2.67",       --TAGVERSION
+    date        = "2019-08-11", --TAGDATE
   description   = "ConTeXt Lua standard libraries.",
   author        = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
   copyright     = "PRAGMA ADE / ConTeXt Development Team",
@@ -505,8 +505,7 @@
   lualibs.error, lualibs.warn, lualibs.info = error, warn, info
 end
 
-local info = status.list()
-if info.kpse_used == 0 then
+if status.kpse_used == 0 then
  kpse.set_program_name("luatex")
 end
 
@@ -584,8 +583,8 @@
 
 local lualibs_basic_module = {
   name          = "lualibs-basic",
-  version       = 2.66,
-  date          = "2019-07-04",
+  version       = "2.67",       --TAGVERSION
+  date          = "2019-08-11", --TAGDATE
   description   = "ConTeXt Lua libraries -- basic collection.",
   author        = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
   copyright     = "PRAGMA ADE / ConTeXt Development Team",
@@ -666,8 +665,8 @@
 
 local lualibs_extended_module = {
   name          = "lualibs-extended",
-  version       = 2.66,
-  date          = "2019-07-04",
+  version       = "2.67",       --TAGVERSION
+  date          = "2019-08-11", --TAGDATE
   description   = "ConTeXt Lua libraries -- extended collection.",
   author        = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
   copyright     = "PRAGMA ADE / ConTeXt Development Team",

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -1,6 +1,6 @@
 -- merged file : lualibs-basic-merged.lua
 -- parent file : lualibs-basic.lua
--- merge date  : Sun Jul 14 15:31:33 2019
+-- merge date  : Tue Aug 13 20:13:08 2019
 
 do -- begin closure to overcome local limits and interference
 
@@ -121,6 +121,9 @@
 end
 if LUAVERSION>5.3 then
 end
+if status and os.setenv then
+ os.setenv("engine",string.lower(status.luatex_engine or "unknown"))
+end
 
 end -- closure
 
@@ -2305,7 +2308,7 @@
 local function sequenced(t,sep,simple)
  if not t then
   return ""
- elseif type(t)=="string" then
+ elseif type(t)~="table" then
   return t 
  end
  local n=#t
@@ -2344,7 +2347,11 @@
    end
   end
  end
- return concat(s,sep or " | ")
+ if sep==true then
+  return "{ "..concat(s,", ").." }"
+ else
+  return concat(s,sep or " | ")
+ end
 end
 table.sequenced=sequenced
 function table.print(t,...)

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-basic.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-basic.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-basic.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -29,8 +29,8 @@
 
 local lualibs_basic_module = {
   name          = "lualibs-basic",
-  version       = 2.66,
-  date          = "2019-07-04",
+  version       = "2.67",       --TAGVERSION
+  date          = "2019-08-11", --TAGDATE
   description   = "ConTeXt Lua libraries -- basic collection.",
   author        = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
   copyright     = "PRAGMA ADE / ConTeXt Development Team",

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-extended-merged.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-extended-merged.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-extended-merged.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -1,6 +1,6 @@
 -- merged file : lualibs-extended-merged.lua
 -- parent file : lualibs-extended.lua
--- merge date  : Sun Jul 14 15:31:26 2019
+-- merge date  : Tue Aug 13 20:12:59 2019
 
 do -- begin closure to overcome local limits and interference
 
@@ -332,6 +332,13 @@
 %s
 return function(%s) return %s end
 ]]
+local pattern=Cs(Cc('"')*(
+ (1-S('"\\\n\r'))^1+P('"')/'\\"'+P('\\')/'\\\\'+P('\n')/'\\n'+P('\r')/'\\r'
+)^0*Cc('"'))
+patterns.escapedquotes=pattern
+function string.escapedquotes(s)
+ return lpegmatch(pattern,s)
+end
 local preamble=""
 local environment={
  global=global or _G,
@@ -358,6 +365,7 @@
  formattedfloat=number.formattedfloat,
  stripzero=patterns.stripzero,
  stripzeros=patterns.stripzeros,
+ escapedquotes=string.escapedquotes,
  FORMAT=string.f9,
 }
 local arguments={ "a1" } 
@@ -415,7 +423,7 @@
 end
 local format_Q=function() 
  n=n+1
- return format("format('%%q',tostring(a%s))",n)
+ return format("escapedquotes(tostring(a%s))",n)
 end
 local format_i=function(f)
  n=n+1
@@ -1389,15 +1397,15 @@
   } )
  end
 end
-local f_hashed_string=formatters["[%q]=%q,"]
-local f_hashed_number=formatters["[%q]=%s,"]
-local f_hashed_boolean=formatters["[%q]=%l,"]
-local f_hashed_table=formatters["[%q]="]
-local f_indexed_string=formatters["[%s]=%q,"]
+local f_hashed_string=formatters["[%Q]=%Q,"]
+local f_hashed_number=formatters["[%Q]=%s,"]
+local f_hashed_boolean=formatters["[%Q]=%l,"]
+local f_hashed_table=formatters["[%Q]="]
+local f_indexed_string=formatters["[%s]=%Q,"]
 local f_indexed_number=formatters["[%s]=%s,"]
 local f_indexed_boolean=formatters["[%s]=%l,"]
 local f_indexed_table=formatters["[%s]="]
-local f_ordered_string=formatters["%q,"]
+local f_ordered_string=formatters["%Q,"]
 local f_ordered_number=formatters["%s,"]
 local f_ordered_boolean=formatters["%l,"]
 function table.fastserialize(t,prefix)
@@ -1560,22 +1568,22 @@
 local f_start_key_nop=formatters["%w{"]
 local f_stop=formatters["%w},"]
 local f_key_num_value_num=formatters["%w[%s]=%s,"]
-local f_key_str_value_num=formatters["%w[%q]=%s,"]
+local f_key_str_value_num=formatters["%w[%Q]=%s,"]
 local f_key_boo_value_num=formatters["%w[%l]=%s,"]
-local f_key_num_value_str=formatters["%w[%s]=%q,"]
-local f_key_str_value_str=formatters["%w[%q]=%q,"]
-local f_key_boo_value_str=formatters["%w[%l]=%q,"]
+local f_key_num_value_str=formatters["%w[%s]=%Q,"]
+local f_key_str_value_str=formatters["%w[%Q]=%Q,"]
+local f_key_boo_value_str=formatters["%w[%l]=%Q,"]
 local f_key_num_value_boo=formatters["%w[%s]=%l,"]
-local f_key_str_value_boo=formatters["%w[%q]=%l,"]
+local f_key_str_value_boo=formatters["%w[%Q]=%l,"]
 local f_key_boo_value_boo=formatters["%w[%l]=%l,"]
 local f_key_num_value_not=formatters["%w[%s]={},"]
-local f_key_str_value_not=formatters["%w[%q]={},"]
+local f_key_str_value_not=formatters["%w[%Q]={},"]
 local f_key_boo_value_not=formatters["%w[%l]={},"]
 local f_key_num_value_seq=formatters["%w[%s]={ %, t },"]
-local f_key_str_value_seq=formatters["%w[%q]={ %, t },"]
+local f_key_str_value_seq=formatters["%w[%Q]={ %, t },"]
 local f_key_boo_value_seq=formatters["%w[%l]={ %, t },"]
 local f_val_num=formatters["%w%s,"]
-local f_val_str=formatters["%w%q,"]
+local f_val_str=formatters["%w%Q,"]
 local f_val_boo=formatters["%w%l,"]
 local f_val_not=formatters["%w{},"]
 local f_val_seq=formatters["%w{ %, t },"]
@@ -1583,7 +1591,7 @@
 local f_table_return=formatters["return {"]
 local f_table_name=formatters["%s={"]
 local f_table_direct=formatters["{"]
-local f_table_entry=formatters["[%q]={"]
+local f_table_entry=formatters["[%Q]={"]
 local f_table_finish=formatters["}"]
 local spaces=utilities.strings.newrepeater(" ")
 local original_serialize=table.serialize
@@ -2826,10 +2834,13 @@
  local f_key_val_num=f_key_val_seq
  local f_key_val_yes=formatters[ "\n"..'%w"%s" : true'  ]
  local f_key_val_nop=formatters[ "\n"..'%w"%s" : false' ]
+ local f_key_val_null=formatters[ "\n"..'%w"%s" : null'  ]
  local f_val_num=formatters[ "\n"..'%w%s' ]
  local f_val_str=formatters[ "\n"..'%w"%s"'  ]
  local f_val_yes=formatters[ "\n"..'%wtrue'  ]
  local f_val_nop=formatters[ "\n"..'%wfalse' ]
+ local f_val_null=formatters[ "\n"..'%wnull'  ]
+ local f_val_empty=formatters[ "\n"..'%w{ }'  ]
  local f_val_seq=f_val_num
  local t={}
  local n=0
@@ -2857,8 +2868,10 @@
      n=n+1 t[n]='"'
     elseif tv=="boolean" then
      n=n+1 t[n]=v and "true" or "false"
+    elseif v then
+     n=n+1 t[n]=tostring(v)
     else
-     n=n+1 t[n]=tostring(v)
+     n=n+1 t[n]="null"
     end
    end
    n=n+1 t[n]=" ]"
@@ -2915,8 +2928,11 @@
        if st then
         n=n+1 t[n]=f_val_seq(depth,st)
        else
-        tojsonpp(v,k,depth,level+1,0)
+        tojsonpp(v,nil,depth,level+1,#v)
        end
+      else
+       n=n+1
+       t[n]=f_val_empty(depth)
       end
      elseif tv=="boolean" then
       n=n+1
@@ -2925,6 +2941,9 @@
       else
        t[n]=f_val_nop(depth,v)
       end
+     else
+      n=n+1
+      t[n]=f_val_null(depth)
      end
     end
    elseif next(root) then
@@ -2942,12 +2961,12 @@
        n=n+1 t[n]=f_key_val_num(depth,k,v)
       elseif tk=="string" then
        k=lpegmatch(escaper,k) or k
-       n=n+1 t[n]=f_key_val_str(depth,k,v)
+       n=n+1 t[n]=f_key_val_num(depth,k,v)
       end
      elseif tv=="string" then
       if tk=="number" then
        v=lpegmatch(escaper,v) or v
-       n=n+1 t[n]=f_key_val_num(depth,k,v)
+       n=n+1 t[n]=f_key_val_str(depth,k,v)
       elseif tk=="string" then
        k=lpegmatch(escaper,k) or k
        v=lpegmatch(escaper,v) or v
@@ -2985,6 +3004,15 @@
         t[n]=f_key_val_nop(depth,k)
        end
       end
+     else
+      if tk=="number" then
+       n=n+1
+       t[n]=f_key_val_null(depth,k)
+      elseif tk=="string" then
+       k=lpegmatch(escaper,k) or k
+       n=n+1
+       t[n]=f_key_val_null(depth,k)
+      end
      end
     end
    end
@@ -3042,6 +3070,8 @@
    n=n+1;t[n]=value
   elseif kind=="boolean" then
    n=n+1;t[n]=tostring(value)
+  else
+   n=n+1;t[n]="null"
   end
   return t,n
  end
@@ -3066,7 +3096,7 @@
     tojsonpp(value,name,0,0,#value)
     value=concat(t,"",1,n)
    else
-    tojson(value,0)
+    t,n=tojson(value,0)
     value=concat(t,"",1,n)
    end
    t=nil
@@ -3279,7 +3309,11 @@
 end
 function statistics.memused() 
  local round=math.round or math.floor
- return format("%s MB (ctx: %s MB)",round(collectgarbage("count")/1000),round(status.luastate_bytes/1000000))
+ return format("%s MB, ctx: %s MB, max: %s MB)",
+  round(collectgarbage("count")/1000),
+  round(status.luastate_bytes/1000000),
+  status.luastate_bytes_max and round(status.luastate_bytes_max/1000000) or "unknown"
+ )
 end
 starttiming(statistics)
 function statistics.formatruntime(runtime) 

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-extended.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-extended.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-extended.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -30,8 +30,8 @@
 
 local lualibs_extended_module = {
   name          = "lualibs-extended",
-  version       = 2.66,
-  date          = "2019-07-04",
+  version       = "2.67",       --TAGVERSION
+  date          = "2019-08-11", --TAGDATE
   description   = "ConTeXt Lua libraries -- extended collection.",
   author        = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
   copyright     = "PRAGMA ADE / ConTeXt Development Team",

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-lua.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-lua.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-lua.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -212,7 +212,7 @@
 
 if not FFISUPPORTED then
 
-    -- Maybe we should check for LUATEXENGINE but that's also a bti tricky as we still
+    -- Maybe we should check for LUATEXENGINE but that's also a bit tricky as we still
     -- can have a weird ffi library laying around. Checking for presence of 'jit' is
     -- also not robust. So for now we hope for the best.
 
@@ -253,3 +253,7 @@
  -- collectgarbage("collect")
  -- collectgarbage("generational") -- crashes on unix
 end
+
+if status and os.setenv then
+    os.setenv("engine",string.lower(status.luatex_engine or "unknown"))
+end

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-table.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-table.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-table.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -1261,10 +1261,12 @@
     end
 end
 
+-- This one is for really simple cases where need a hash from a table.
+
 local function sequenced(t,sep,simple)
     if not t then
         return ""
-    elseif type(t) == "string" then
+    elseif type(t) ~= "table" then
         return t -- handy fallback
     end
     local n = #t
@@ -1305,7 +1307,11 @@
             end
         end
     end
-    return concat(s,sep or " | ")
+    if sep == true then
+        return "{ " .. concat(s,", ") .. " }"
+    else
+        return concat(s,sep or " | ")
+    end
 end
 
 table.sequenced = sequenced

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-trac-inf.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-trac-inf.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-trac-inf.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -262,7 +262,11 @@
 
 function statistics.memused() -- no math.round yet -)
     local round = math.round or math.floor
-    return format("%s MB (ctx: %s MB)",round(collectgarbage("count")/1000), round(status.luastate_bytes/1000000))
+    return format("%s MB, ctx: %s MB, max: %s MB)",
+        round(collectgarbage("count")/1000),
+        round(status.luastate_bytes/1000000),
+        status.luastate_bytes_max and round(status.luastate_bytes_max/1000000) or "unknown"
+    )
 end
 
 starttiming(statistics)

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-jsn.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-jsn.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-jsn.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -122,11 +122,14 @@
     local f_key_val_num     = f_key_val_seq
     local f_key_val_yes     = formatters[ "\n" .. '%w"%s" : true'  ]
     local f_key_val_nop     = formatters[ "\n" .. '%w"%s" : false' ]
+    local f_key_val_null    = formatters[ "\n" .. '%w"%s" : null'  ]
 
     local f_val_num         = formatters[ "\n" .. '%w%s'    ]
     local f_val_str         = formatters[ "\n" .. '%w"%s"'  ]
     local f_val_yes         = formatters[ "\n" .. '%wtrue'  ]
     local f_val_nop         = formatters[ "\n" .. '%wfalse' ]
+    local f_val_null        = formatters[ "\n" .. '%wnull'  ]
+    local f_val_empty       = formatters[ "\n" .. '%w{ }'  ]
     local f_val_seq         = f_val_num
 
     -- no empty tables because unknown if table or hash
@@ -158,8 +161,10 @@
                     n = n + 1 t[n] = '"'
                 elseif tv == "boolean" then
                     n = n + 1 t[n] = v and "true" or "false"
+                elseif v then
+                    n = n + 1 t[n] = tostring(v)
                 else
-                    n = n + 1 t[n] = tostring(v)
+                    n = n + 1 t[n] = "null"
                 end
             end
             n = n + 1 t[n] = " ]"
@@ -217,8 +222,11 @@
                             if st then
                                 n = n + 1 t[n] = f_val_seq(depth,st)
                             else
-                                tojsonpp(v,k,depth,level+1,0)
+                                tojsonpp(v,nil,depth,level+1,#v)
                             end
+                        else
+                            n = n + 1
+                            t[n] = f_val_empty(depth)
                         end
                     elseif tv == "boolean" then
                         n = n + 1
@@ -227,6 +235,9 @@
                         else
                             t[n] = f_val_nop(depth,v)
                         end
+                    else
+                        n = n + 1
+                        t[n] = f_val_null(depth)
                     end
                 end
             elseif next(root) then
@@ -244,12 +255,12 @@
                             n = n + 1 t[n] = f_key_val_num(depth,k,v)
                         elseif tk == "string" then
                             k = lpegmatch(escaper,k) or k
-                            n = n + 1 t[n] = f_key_val_str(depth,k,v)
+                            n = n + 1 t[n] = f_key_val_num(depth,k,v)
                         end
                     elseif tv == "string" then
                         if tk == "number" then
                             v = lpegmatch(escaper,v) or v
-                            n = n + 1 t[n] = f_key_val_num(depth,k,v)
+                            n = n + 1 t[n] = f_key_val_str(depth,k,v)
                         elseif tk == "string" then
                             k = lpegmatch(escaper,k) or k
                             v = lpegmatch(escaper,v) or v
@@ -287,6 +298,15 @@
                                 t[n] = f_key_val_nop(depth,k)
                             end
                         end
+                    else
+                        if tk == "number" then
+                            n = n + 1
+                            t[n] = f_key_val_null(depth,k)
+                        elseif tk == "string" then
+                            k = lpegmatch(escaper,k) or k
+                            n = n + 1
+                            t[n] = f_key_val_null(depth,k)
+                        end
                     end
                 end
             end
@@ -348,6 +368,8 @@
             n = n + 1 ; t[n] = value
         elseif kind == "boolean" then
             n = n + 1 ; t[n] = tostring(value)
+        else
+            n = n + 1 ; t[n] = "null"
         end
         return t, n
     end
@@ -377,10 +399,9 @@
             n = 0
             if pretty then
                 tojsonpp(value,name,0,0,#value)
---                 value = concat(t,"\n",1,n)
                 value = concat(t,"",1,n)
             else
-                tojson(value,0)
+                t, n = tojson(value,0)
                 value = concat(t,"",1,n)
             end
             t = nil

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-str.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-str.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-str.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -584,6 +584,26 @@
 return function(%s) return %s end
 ]]
 
+-- this might move
+
+local pattern = Cs(Cc('"') * (
+    (1-S('"\\\n\r'))^1
+  + P('"')  / '\\"'
+  + P('\\') / '\\\\'
+  + P('\n') / '\\n'
+  + P('\r') / '\\r'
+)^0 * Cc('"'))
+
+patterns.escapedquotes = pattern
+
+function string.escapedquotes(s)
+    return lpegmatch(pattern,s)
+end
+
+-- print(string.escapedquotes('1\\23\n"'))
+
+-- but for now here
+
 local preamble = ""
 
 local environment = {
@@ -611,6 +631,7 @@
     formattedfloat  = number.formattedfloat,
     stripzero       = patterns.stripzero,
     stripzeros      = patterns.stripzeros,
+    escapedquotes   = string.escapedquotes,
 
     FORMAT          = string.f9,
 }
@@ -685,11 +706,13 @@
     -- lua 5.3 has a different q than lua 5.2 (which does a tostring on numbers)
  -- return format("(a%s ~= nil and format('%%q',a%s) or '')",n,n)
     return format("(a%s ~= nil and format('%%q',tostring(a%s)) or '')",n,n)
+ -- return format("(a%s ~= nil and escapedquotes(tostring(a%s)) or '')",n,n)
 end
 
-local format_Q = function() -- can be optimized
+local format_Q = function() -- fast escaping
     n = n + 1
-    return format("format('%%q',tostring(a%s))",n)
+--  return format("format('%%q',tostring(a%s))",n)
+    return format("escapedquotes(tostring(a%s))",n)
 end
 
 local format_i = function(f)

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-tab.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-tab.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs-util-tab.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -314,21 +314,21 @@
 -- best keep [%q] keys (as we have some in older applications i.e. saving user data (otherwise
 -- we also need to check for reserved words)
 
-local f_hashed_string   = formatters["[%q]=%q,"]
-local f_hashed_number   = formatters["[%q]=%s,"]
-local f_hashed_boolean  = formatters["[%q]=%l,"]
-local f_hashed_table    = formatters["[%q]="]
+local f_hashed_string   = formatters["[%Q]=%Q,"]
+local f_hashed_number   = formatters["[%Q]=%s,"]
+local f_hashed_boolean  = formatters["[%Q]=%l,"]
+local f_hashed_table    = formatters["[%Q]="]
 
-local f_indexed_string  = formatters["[%s]=%q,"]
+local f_indexed_string  = formatters["[%s]=%Q,"]
 local f_indexed_number  = formatters["[%s]=%s,"]
 local f_indexed_boolean = formatters["[%s]=%l,"]
 local f_indexed_table   = formatters["[%s]="]
 
-local f_ordered_string  = formatters["%q,"]
+local f_ordered_string  = formatters["%Q,"]
 local f_ordered_number  = formatters["%s,"]
 local f_ordered_boolean = formatters["%l,"]
 
-function table.fastserialize(t,prefix)
+function table.fastserialize(t,prefix) -- todo, move local function out
 
     -- prefix should contain the =
     -- not sorted
@@ -525,27 +525,27 @@
 local f_stop              = formatters["%w},"]
 
 local f_key_num_value_num = formatters["%w[%s]=%s,"]
-local f_key_str_value_num = formatters["%w[%q]=%s,"]
+local f_key_str_value_num = formatters["%w[%Q]=%s,"]
 local f_key_boo_value_num = formatters["%w[%l]=%s,"]
 
-local f_key_num_value_str = formatters["%w[%s]=%q,"]
-local f_key_str_value_str = formatters["%w[%q]=%q,"]
-local f_key_boo_value_str = formatters["%w[%l]=%q,"]
+local f_key_num_value_str = formatters["%w[%s]=%Q,"]
+local f_key_str_value_str = formatters["%w[%Q]=%Q,"]
+local f_key_boo_value_str = formatters["%w[%l]=%Q,"]
 
 local f_key_num_value_boo = formatters["%w[%s]=%l,"]
-local f_key_str_value_boo = formatters["%w[%q]=%l,"]
+local f_key_str_value_boo = formatters["%w[%Q]=%l,"]
 local f_key_boo_value_boo = formatters["%w[%l]=%l,"]
 
 local f_key_num_value_not = formatters["%w[%s]={},"]
-local f_key_str_value_not = formatters["%w[%q]={},"]
+local f_key_str_value_not = formatters["%w[%Q]={},"]
 local f_key_boo_value_not = formatters["%w[%l]={},"]
 
 local f_key_num_value_seq = formatters["%w[%s]={ %, t },"]
-local f_key_str_value_seq = formatters["%w[%q]={ %, t },"]
+local f_key_str_value_seq = formatters["%w[%Q]={ %, t },"]
 local f_key_boo_value_seq = formatters["%w[%l]={ %, t },"]
 
 local f_val_num           = formatters["%w%s,"]
-local f_val_str           = formatters["%w%q,"]
+local f_val_str           = formatters["%w%Q,"]
 local f_val_boo           = formatters["%w%l,"]
 local f_val_not           = formatters["%w{},"]
 local f_val_seq           = formatters["%w{ %, t },"]
@@ -554,7 +554,7 @@
 local f_table_return      = formatters["return {"]
 local f_table_name        = formatters["%s={"]
 local f_table_direct      = formatters["{"]
-local f_table_entry       = formatters["[%q]={"]
+local f_table_entry       = formatters["[%Q]={"]
 local f_table_finish      = formatters["}"]
 
 ----- f_string            = formatters["%q"]

Modified: trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs.lua	2019-08-14 17:09:49 UTC (rev 51878)
+++ trunk/Master/texmf-dist/tex/luatex/lualibs/lualibs.lua	2019-08-14 20:51:13 UTC (rev 51879)
@@ -25,8 +25,8 @@
 
 lualibs.module_info = {
   name          = "lualibs",
-  version       = 2.66,
-  date          = "2019-07-04",
+  version       = "2.67",       --TAGVERSION
+    date        = "2019-08-11", --TAGDATE
   description   = "ConTeXt Lua standard libraries.",
   author        = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
   copyright     = "PRAGMA ADE / ConTeXt Development Team",
@@ -79,8 +79,7 @@
   lualibs.error, lualibs.warn, lualibs.info = error, warn, info
 end
 
-local info = status.list()
-if info.kpse_used == 0 then
+if status.kpse_used == 0 then
  kpse.set_program_name("luatex")
 end
 



More information about the tex-live-commits mailing list