From af3da9d9f5ae4c2320d042080b4ff9d7d3460314 Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Wed, 30 Jun 2021 19:41:44 +0200
Subject: 2021-06-30 19:20:00

---
 tex/context/base/mkii/cont-new.mkii                |   2 +-
 tex/context/base/mkii/context.mkii                 |   2 +-
 tex/context/base/mkiv/cont-new.mkiv                |   2 +-
 tex/context/base/mkiv/context.mkiv                 |   2 +-
 tex/context/base/mkiv/l-os.lua                     |   4 +-
 tex/context/base/mkiv/mult-fun.lua                 |   3 +-
 tex/context/base/mkiv/status-files.pdf             | Bin 23621 -> 23614 bytes
 tex/context/base/mkiv/status-lua.pdf               | Bin 248363 -> 248360 bytes
 tex/context/base/mkxl/cont-new.mkxl                |   2 +-
 tex/context/base/mkxl/context.mkxl                 |   2 +-
 tex/context/base/mkxl/lang-ini.mkxl                |   1 +
 tex/context/base/mkxl/mlib-scn.lmt                 |  86 +++++++++++++++++++--
 tex/generic/context/luatex/luatex-fonts-merged.lua |   2 +-
 13 files changed, 90 insertions(+), 18 deletions(-)

(limited to 'tex')

diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 85130e123..4f89d4da4 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
 %C therefore copyrighted by \PRAGMA. See mreadme.pdf for
 %C details.
 
-\newcontextversion{2021.06.29 23:10}
+\newcontextversion{2021.06.30 19:17}
 
 %D This file is loaded at runtime, thereby providing an
 %D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii
index 60a3d86e2..4f837ca24 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
 %D your styles an modules.
 
 \edef\contextformat {\jobname}
-\edef\contextversion{2021.06.29 23:10}
+\edef\contextversion{2021.06.30 19:17}
 
 %D For those who want to use this:
 
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index d539b2840..2ac550b26 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
 
 % \normalend % uncomment this to get the real base runtime
 
-\newcontextversion{2021.06.29 23:10}
+\newcontextversion{2021.06.30 19:17}
 
 %D This file is loaded at runtime, thereby providing an excellent place for hacks,
 %D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index a79fb76a7..cd6c8d866 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -45,7 +45,7 @@
 %D {YYYY.MM.DD HH:MM} format.
 
 \edef\contextformat {\jobname}
-\edef\contextversion{2021.06.29 23:10}
+\edef\contextversion{2021.06.30 19:17}
 
 %D Kind of special:
 
diff --git a/tex/context/base/mkiv/l-os.lua b/tex/context/base/mkiv/l-os.lua
index d7934a937..dc70d0c5e 100644
--- a/tex/context/base/mkiv/l-os.lua
+++ b/tex/context/base/mkiv/l-os.lua
@@ -363,8 +363,8 @@ do
 
     elseif name == "freebsd" then
 
-        architecture = architecture or resultof("uname -m") or ""
-        if find(architecture) == "amd64" or find(architecture) == "AMD64" then
+        architecture = architecture or os.getenv("MACHTYPE") or resultof("uname -m") or ""
+        if find(architecture,"amd64") or find(architecture,"AMD64") then
             bits, platform = 64, "freebsd-amd64"
         else
             bits, platform = 32, "freebsd"
diff --git a/tex/context/base/mkiv/mult-fun.lua b/tex/context/base/mkiv/mult-fun.lua
index c0209c89e..2cfe76951 100644
--- a/tex/context/base/mkiv/mult-fun.lua
+++ b/tex/context/base/mkiv/mult-fun.lua
@@ -38,8 +38,7 @@ return {
         "popparameters",
         "definecolor",
         --
-        "newrecord",
-        "getrecord",
+        "newrecord", "setrecord", "getrecord",
         --
         "anchorxy", "anchorx", "anchory",
         "anchorht", "anchordp",
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index a238c059b..5339844ef 100644
Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 6b0362e36..ca5ba949d 100644
Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 9dc2c1797..db941e888 100644
--- a/tex/context/base/mkxl/cont-new.mkxl
+++ b/tex/context/base/mkxl/cont-new.mkxl
@@ -13,7 +13,7 @@
 
 % \normalend % uncomment this to get the real base runtime
 
-\newcontextversion{2021.06.29 23:10}
+\newcontextversion{2021.06.30 19:17}
 
 %D This file is loaded at runtime, thereby providing an excellent place for hacks,
 %D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl
index 895f817ae..529d2cb2e 100644
--- a/tex/context/base/mkxl/context.mkxl
+++ b/tex/context/base/mkxl/context.mkxl
@@ -29,7 +29,7 @@
 %D {YYYY.MM.DD HH:MM} format.
 
 \immutable\edef\contextformat {\jobname}
-\immutable\edef\contextversion{2021.06.29 23:10}
+\immutable\edef\contextversion{2021.06.30 19:17}
 
 %overloadmode 1 % check frozen / warning
 %overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/lang-ini.mkxl b/tex/context/base/mkxl/lang-ini.mkxl
index 6ea18ac41..ba9e37d86 100644
--- a/tex/context/base/mkxl/lang-ini.mkxl
+++ b/tex/context/base/mkxl/lang-ini.mkxl
@@ -441,6 +441,7 @@
 
 \permanent \integerdef \partialhyphenationmodecode \numexpr
     \ignoreboundshyphenationmodecode      % just in case we have hyphens at the edges
+% + \explicithyphenationmodecode          % \-
   + \collapsehyphenationmodecode          % collapse -- and ---
 \relax
 
diff --git a/tex/context/base/mkxl/mlib-scn.lmt b/tex/context/base/mkxl/mlib-scn.lmt
index 2fb4e7428..1d6514a0b 100644
--- a/tex/context/base/mkxl/mlib-scn.lmt
+++ b/tex/context/base/mkxl/mlib-scn.lmt
@@ -795,15 +795,83 @@ registerdirect("newrecord", function()
     return n
 end)
 
+local function merge(old,new)
+    for knew, vnew in next, new do
+        local vold = old[knew]
+        if vold then
+            if type(vnew) == "table" then
+                if type(vold) == "table" then
+                    merge(vold,vnew)
+                else
+                    old[knew] = vnew
+                end
+            else
+                old[knew] = vnew
+            end
+        else
+            old[knew] = vnew
+        end
+    end
+end
+
+registerdirect("setrecord", function()
+    scantoken() -- semicolon
+    local p = get_parameters()
+    local n = 0
+    if interim > 0 then
+        local r = records[interim]
+        if r then
+            merge(r,p)
+        else
+            records[interim] = p
+        end
+        local top = stack[interim]
+        if top then
+            top = stack[interim][#top]
+            if top then
+                setmetatableindex(p,top)
+            end
+        end
+        n = interim
+        interim = 0
+    else
+        nofrecords = nofrecords + 1
+        records[nofrecords] = p
+        n = nofrecords
+    end
+    return n
+end)
+
+
 registerdirect("getrecord", function()
     local n = scaninteger()
     local v = records[n]
     while true do
         local t = scansymbol(true)
-        if t == ";" or t == ")" then
+        if t == ";" or t == ")" or t == ":" then
             return v
         elseif t == "." then
             scansymbol()
+        elseif t == "#" or t == "##" then -- from tex's we get a double
+            scansymbol()
+            t = scansymbol()
+            v = v[t]
+            return type(v) == "table" and #v or 0
+        elseif t == "[" then
+            scansymbol()
+            t = scansymbol(true)
+            if t == "]" then
+                scansymbol()
+                return #v
+            else
+                t = scaninteger()
+                v = v[t]
+                if scansymbol(true) == "]" then
+                    scansymbol()
+                else
+                    report("] expected")
+                end
+            end
         else
             t = scansymbol()
             v = v[t]
@@ -811,12 +879,16 @@ registerdirect("getrecord", function()
     end
 end)
 
-function metapost.runinternal(n,m)
-    if m == 0 then
-        insert(stack[n],records[n])
-        interim = n
-    elseif m == 1 then
-        records[n] = remove(stack[n]) or records[n]
+function metapost.runinternal(action,index,kind)
+    if action == 0 then
+        -- allocate
+    elseif action == 1 then
+        -- save
+        insert(stack[index],records[index])
+        interim = index
+    elseif action == 2 then
+        -- restore
+        records[index] = remove(stack[index]) or records[index]
     end
 end
 
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 4a2afb265..39670cb36 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
 -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
 -- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date  : 2021-06-29 23:10
+-- merge date  : 2021-06-30 19:17
 
 do -- begin closure to overcome local limits and interference
 
-- 
cgit v1.2.3