From 8effb0ebcc2585e43bb6701ed5c4127023e2f06d Mon Sep 17 00:00:00 2001 From: speak-agent <248744407+speak-agent@users.noreply.github.com> Date: Fri, 4 Sep 2026 19:25:39 +0800 Subject: [PATCH] =?UTF-8?q?openarch=200.9.0=E3=80=81=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E6=9D=BF=E7=BA=A7=E5=8C=85=E7=9A=84=20run=20=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `mcpplibs.openarch@0.9.0` adds an ARMv7-A backend, and with it the answer to a question the layer's three original machines could not ask. All of them are 64-bit with 64-bit page-table entries, and `pte_encode.h` recorded that as a fact about every machine there. ARMv7-A's short-descriptor entry is 32 bits. The value fits in the `arch_u64` the interface carries, so the carrier did not change; what was missing is a way to ASK for the storage width. A kernel sizing a table from `sizeof(arch::pte)` builds one twice as large as the hardware walks, and nothing diagnoses it — the table is well formed, the entries are correct, and the machine reads the gaps. `arch_pte_entry_bytes()` is the answer and every backend implements it. Cortex-M could not settle this: it is a 32-bit machine with an MPU and no page table, so its pte group exists and refuses. A 32-bit machine WITHOUT paging leaves the question where it was. `openarch:preemption` is withheld on armv7a, by the mechanism Cortex-M already uses to withhold `openarch:address-space`: the resumption address lives on the SVC stack rather than in a register, so a trap-time switch is well defined only if the resumed context was suspended the same way, and that is not a design this backend has measured. `mcpplibs.riscv-virt-rt@0.7.1` and `mcpplibs.aarch64-virt-rt@0.2.1` move their emulator onto the `run` tier. The untiered form meant `Always`, so a CI job that compiled firmware and never ran it downloaded 33-36 MB of emulator for nothing. The engine has had `when` since 2026.9.4.2 and `cortex-m-rt` adopted it; these two had not, which left one batch with two spellings. Audited before submission: 37 versions, 74 URLs fetched and hashed against the index, every tarball's own manifest checked for identity, version and escaping path dependencies. --- pkgs/a/aarch64-virt-rt.lua | 21 +++++++++++++++++++++ pkgs/o/openarch.lua | 21 +++++++++++++++++++++ pkgs/r/riscv-virt-rt.lua | 21 +++++++++++++++++++++ 3 files changed, 63 insertions(+) diff --git a/pkgs/a/aarch64-virt-rt.lua b/pkgs/a/aarch64-virt-rt.lua index 41b2a10..ade307e 100644 --- a/pkgs/a/aarch64-virt-rt.lua +++ b/pkgs/a/aarch64-virt-rt.lua @@ -56,6 +56,13 @@ package = { xpm = { linux = { deps = { "xim:qemu-arm@9.2.4-1" }, + ["0.2.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/aarch64-virt-rt/archive/refs/tags/0.2.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/aarch64-virt-rt/releases/download/0.2.1/aarch64-virt-rt-0.2.1.tar.gz", + }, + sha256 = "a72495e2f4cb4e184522aafb605af35fe9e8573c4acdc093e13b52f67baa601b", + }, ["0.2.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/aarch64-virt-rt/archive/refs/tags/0.2.0.tar.gz", @@ -80,6 +87,13 @@ package = { }, macosx = { deps = { "xim:qemu-arm@9.2.4-1" }, + ["0.2.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/aarch64-virt-rt/archive/refs/tags/0.2.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/aarch64-virt-rt/releases/download/0.2.1/aarch64-virt-rt-0.2.1.tar.gz", + }, + sha256 = "a72495e2f4cb4e184522aafb605af35fe9e8573c4acdc093e13b52f67baa601b", + }, ["0.2.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/aarch64-virt-rt/archive/refs/tags/0.2.0.tar.gz", @@ -104,6 +118,13 @@ package = { }, windows = { deps = { "xim:qemu-arm@9.2.4-1" }, + ["0.2.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/aarch64-virt-rt/archive/refs/tags/0.2.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/aarch64-virt-rt/releases/download/0.2.1/aarch64-virt-rt-0.2.1.tar.gz", + }, + sha256 = "a72495e2f4cb4e184522aafb605af35fe9e8573c4acdc093e13b52f67baa601b", + }, ["0.2.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/aarch64-virt-rt/archive/refs/tags/0.2.0.tar.gz", diff --git a/pkgs/o/openarch.lua b/pkgs/o/openarch.lua index 84e9cea..e27c043 100644 --- a/pkgs/o/openarch.lua +++ b/pkgs/o/openarch.lua @@ -56,6 +56,13 @@ package = { xpm = { linux = { + ["0.9.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openarch/archive/refs/tags/0.9.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openarch/releases/download/0.9.0/openarch-0.9.0.tar.gz", + }, + sha256 = "0aeaa6714f3090e5824d625bc27054bd2b2a45c83d107797744fa277199bffff", + }, ["0.8.1"] = { url = { GLOBAL = "https://github.com/mcpplibs/openarch/archive/refs/tags/0.8.1.tar.gz", @@ -128,6 +135,13 @@ package = { }, }, macosx = { + ["0.9.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openarch/archive/refs/tags/0.9.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openarch/releases/download/0.9.0/openarch-0.9.0.tar.gz", + }, + sha256 = "0aeaa6714f3090e5824d625bc27054bd2b2a45c83d107797744fa277199bffff", + }, ["0.8.1"] = { url = { GLOBAL = "https://github.com/mcpplibs/openarch/archive/refs/tags/0.8.1.tar.gz", @@ -200,6 +214,13 @@ package = { }, }, windows = { + ["0.9.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openarch/archive/refs/tags/0.9.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openarch/releases/download/0.9.0/openarch-0.9.0.tar.gz", + }, + sha256 = "0aeaa6714f3090e5824d625bc27054bd2b2a45c83d107797744fa277199bffff", + }, ["0.8.1"] = { url = { GLOBAL = "https://github.com/mcpplibs/openarch/archive/refs/tags/0.8.1.tar.gz", diff --git a/pkgs/r/riscv-virt-rt.lua b/pkgs/r/riscv-virt-rt.lua index e0d6d1d..30d3574 100644 --- a/pkgs/r/riscv-virt-rt.lua +++ b/pkgs/r/riscv-virt-rt.lua @@ -62,6 +62,13 @@ package = { -- published is a version someone may have pinned. xpm = { linux = { + ["0.7.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/riscv-virt-rt/archive/refs/tags/0.7.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/riscv-virt-rt/releases/download/0.7.1/riscv-virt-rt-0.7.1.tar.gz", + }, + sha256 = "9ee8c325e81619d281979a857b8cff1252a9f920aa8167291228b6bfacf89357", + }, ["0.7.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/riscv-virt-rt/archive/refs/tags/0.7.0.tar.gz", @@ -135,6 +142,13 @@ package = { }, }, macosx = { + ["0.7.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/riscv-virt-rt/archive/refs/tags/0.7.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/riscv-virt-rt/releases/download/0.7.1/riscv-virt-rt-0.7.1.tar.gz", + }, + sha256 = "9ee8c325e81619d281979a857b8cff1252a9f920aa8167291228b6bfacf89357", + }, ["0.7.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/riscv-virt-rt/archive/refs/tags/0.7.0.tar.gz", @@ -208,6 +222,13 @@ package = { }, }, windows = { + ["0.7.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/riscv-virt-rt/archive/refs/tags/0.7.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/riscv-virt-rt/releases/download/0.7.1/riscv-virt-rt-0.7.1.tar.gz", + }, + sha256 = "9ee8c325e81619d281979a857b8cff1252a9f920aa8167291228b6bfacf89357", + }, ["0.7.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/riscv-virt-rt/archive/refs/tags/0.7.0.tar.gz",