diff --git a/CHANGELOG.md b/CHANGELOG.md index f5ced3a6..45eace0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,13 @@ `xim:gcc` 16.1.0 载荷的头文件与运行库目录并写出自身清单(`std-module` 为 `bits/std.cc`), clang 据此以 libstdc++ 编译、`import std` 与链接(需要 mcpp 2026.10.26.1,SPEC-002 §7)。 新增测试成员 `tests/examples/libstdcxx-llvm`。 +- **openkal 0.17.1 及其实现 openkal-linux 0.18.1、openkal-macos 0.15.1、openkal-windows 0.13.1。** + openkal 增加 `KAL_SPAWN_ONE_STRING` / `KAL_PROCESS_PROP_ONE_STRING`:接收单个字符串的系统(Windows)上, + 程序名之后的参数按原样连接,供以自身语法读取命令的命令解释器使用;接收参数向量的系统拒绝该标志。 + openkal-windows 实现它;openkal-linux 与 openkal-macos 把 SIGHUP 纳入结束请求;openkal-linux 以绝对名 + 启动需要解释器的程序(`#!` 脚本的 `$0` 不再是 `/dev/fd/`);openkal-macos 把 EBADARCH 与 + EBADMACHO 译为 `kal_err_not_program`。测试成员 `openkal` 移到这些版本,并观察单字符串标志在 + 接收向量的系统上被拒绝。GLOBAL 为 GitHub 标签归档,CN 为 GitCode `mcpp-res` 镜像,sha256 两处一致。 ### Changed diff --git a/pkgs/o/openkal-linux.lua b/pkgs/o/openkal-linux.lua index 2852c71a..b97858ad 100644 --- a/pkgs/o/openkal-linux.lua +++ b/pkgs/o/openkal-linux.lua @@ -19,6 +19,13 @@ package = { xpm = { linux = { + ["0.18.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.18.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-linux/releases/download/0.18.1/openkal-linux-0.18.1.tar.gz", + }, + sha256 = "fd3024c4e17936ac2753a16b2b8682b86f694929b84724f731e7517738577b56", + }, ["0.18.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.18.0.tar.gz", @@ -161,6 +168,13 @@ package = { }, }, macosx = { + ["0.18.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.18.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-linux/releases/download/0.18.1/openkal-linux-0.18.1.tar.gz", + }, + sha256 = "fd3024c4e17936ac2753a16b2b8682b86f694929b84724f731e7517738577b56", + }, ["0.18.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.18.0.tar.gz", @@ -303,6 +317,13 @@ package = { }, }, windows = { + ["0.18.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.18.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-linux/releases/download/0.18.1/openkal-linux-0.18.1.tar.gz", + }, + sha256 = "fd3024c4e17936ac2753a16b2b8682b86f694929b84724f731e7517738577b56", + }, ["0.18.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.18.0.tar.gz", diff --git a/pkgs/o/openkal-macos.lua b/pkgs/o/openkal-macos.lua index ea648bb3..f7e47d6e 100644 --- a/pkgs/o/openkal-macos.lua +++ b/pkgs/o/openkal-macos.lua @@ -19,6 +19,13 @@ package = { xpm = { linux = { + ["0.15.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.15.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-macos/releases/download/0.15.1/openkal-macos-0.15.1.tar.gz", + }, + sha256 = "c82067b51ebee18d1c75720054726cae2114b39349f5874467471ae78ed083b7", + }, ["0.15.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.15.0.tar.gz", @@ -168,6 +175,13 @@ package = { }, }, macosx = { + ["0.15.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.15.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-macos/releases/download/0.15.1/openkal-macos-0.15.1.tar.gz", + }, + sha256 = "c82067b51ebee18d1c75720054726cae2114b39349f5874467471ae78ed083b7", + }, ["0.15.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.15.0.tar.gz", @@ -317,6 +331,13 @@ package = { }, }, windows = { + ["0.15.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.15.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-macos/releases/download/0.15.1/openkal-macos-0.15.1.tar.gz", + }, + sha256 = "c82067b51ebee18d1c75720054726cae2114b39349f5874467471ae78ed083b7", + }, ["0.15.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.15.0.tar.gz", diff --git a/pkgs/o/openkal-windows.lua b/pkgs/o/openkal-windows.lua index 849ccbf8..dabd28c0 100644 --- a/pkgs/o/openkal-windows.lua +++ b/pkgs/o/openkal-windows.lua @@ -21,6 +21,13 @@ package = { xpm = { linux = { + ["0.13.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-windows/archive/refs/tags/0.13.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-windows/releases/download/0.13.1/openkal-windows-0.13.1.tar.gz", + }, + sha256 = "8bc3dd196a4f5abb6746aedbe1ada6bbc7f4e18d6c6d626dc5c8aca2a9f705f7", + }, ["0.13.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-windows/archive/refs/tags/0.13.0.tar.gz", @@ -184,6 +191,13 @@ package = { }, }, macosx = { + ["0.13.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-windows/archive/refs/tags/0.13.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-windows/releases/download/0.13.1/openkal-windows-0.13.1.tar.gz", + }, + sha256 = "8bc3dd196a4f5abb6746aedbe1ada6bbc7f4e18d6c6d626dc5c8aca2a9f705f7", + }, ["0.13.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-windows/archive/refs/tags/0.13.0.tar.gz", @@ -347,6 +361,13 @@ package = { }, }, windows = { + ["0.13.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-windows/archive/refs/tags/0.13.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-windows/releases/download/0.13.1/openkal-windows-0.13.1.tar.gz", + }, + sha256 = "8bc3dd196a4f5abb6746aedbe1ada6bbc7f4e18d6c6d626dc5c8aca2a9f705f7", + }, ["0.13.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-windows/archive/refs/tags/0.13.0.tar.gz", diff --git a/pkgs/o/openkal.lua b/pkgs/o/openkal.lua index f217fb4a..81945fd6 100644 --- a/pkgs/o/openkal.lua +++ b/pkgs/o/openkal.lua @@ -22,6 +22,13 @@ package = { xpm = { linux = { + ["0.17.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.17.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.17.1/openkal-0.17.1.tar.gz", + }, + sha256 = "778b123192ab0acf73a5ab71cea9b4eba33a23f92d97a83700907c77a9b5213c", + }, ["0.17.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.17.0.tar.gz", @@ -136,6 +143,13 @@ package = { }, }, macosx = { + ["0.17.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.17.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.17.1/openkal-0.17.1.tar.gz", + }, + sha256 = "778b123192ab0acf73a5ab71cea9b4eba33a23f92d97a83700907c77a9b5213c", + }, ["0.17.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.17.0.tar.gz", @@ -250,6 +264,13 @@ package = { }, }, windows = { + ["0.17.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.17.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.17.1/openkal-0.17.1.tar.gz", + }, + sha256 = "778b123192ab0acf73a5ab71cea9b4eba33a23f92d97a83700907c77a9b5213c", + }, ["0.17.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.17.0.tar.gz", diff --git a/tests/examples/openkal/mcpp.toml b/tests/examples/openkal/mcpp.toml index ea8d26ab..30422dcb 100644 --- a/tests/examples/openkal/mcpp.toml +++ b/tests/examples/openkal/mcpp.toml @@ -18,16 +18,16 @@ name = "openkal-tests" version = "0.1.0" [dependencies.mcpplibs] -openkal = "0.17.0" +openkal = "0.17.1" [target.'cfg(os = "linux")'.dependencies.mcpplibs] -openkal-linux = "0.18.0" +openkal-linux = "0.18.1" [target.'cfg(os = "macos")'.dependencies.mcpplibs] -openkal-macos = "0.15.0" +openkal-macos = "0.15.1" [target.'cfg(windows)'.dependencies.mcpplibs] -openkal-windows = "0.13.0" +openkal-windows = "0.13.1" [target.'cfg(all(os = "linux", env = "musl"))'.dependencies.mcpplibs] openkal-llvm-runtime = "0.16.0" diff --git a/tests/examples/openkal/tests/kal.cpp b/tests/examples/openkal/tests/kal.cpp index c9b6551c..727dbe9a 100644 --- a/tests/examples/openkal/tests/kal.cpp +++ b/tests/examples/openkal/tests/kal.cpp @@ -4,7 +4,9 @@ // relies on: a context started with a least stack size is told at least that // size and has the room; a closed directory's enumeration is refused; and // (0.17) the system is named, this program names itself with the moment it -// started, and a rename that does not replace refuses a name that is taken. The terminal is not observed here, +// started, and a rename that does not replace refuses a name that is taken; +// (0.17.1) a joined command line is refused where programs receive vectors. +// The terminal is not observed here, // because a test run has none; the implementations observe it on a terminal // they make. #include @@ -41,6 +43,7 @@ void room(void* p) { int main() { check(KAL_VERSION_MINOR >= 17u || KAL_VERSION_MAJOR > 0u, "the declarations are openkal 0.17 or later"); + check(KAL_VERSION_MINOR > 17u || KAL_VERSION_PATCH >= 1u || KAL_VERSION_MAJOR > 0u, "and 0.17.1 or later"); check(kal_version() >= KAL_VERSION, "the implementation is at least as new as the declarations"); probe q{0, 0}; @@ -87,6 +90,18 @@ int main() { kal_fs_remove(root, "okt.b", 5); } + if ((kal_process_props() & KAL_PROCESS_PROP_ONE_STRING) == 0 && root.h) { + // Where a program receives a vector, a joined command line has no + // meaning and the start is refused before anything runs. + const char* argv[] = { "x" }; + const kal_uintptr lens[] = { 1 }; + const kal_spawn how{ root, root, nullptr, nullptr, 0, KAL_SPAWN_ONE_STRING }; + kal_process p{}; + check(kal_process_spawn(&how, "x", 1, argv, lens, 1, nullptr, nullptr, 0, nullptr, &p) + == kal_err_not_supported, + "a joined command line is refused where programs receive vectors"); + } + if (failures == 0) kal_stream_write(kal_stdout(), "openkal: held\n", 14); return failures == 0 ? 0 : 1; }