From 4d46ea56511fcf94d68a685189109ba8ea3d5499 Mon Sep 17 00:00:00 2001 From: speak-agent Date: Thu, 27 Aug 2026 17:32:35 +0800 Subject: [PATCH] openkal 0.8.0, and openkal-kit published from its tarball MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit openkal 0.8 adds five optional interfaces --- terminal, net, datagram, space and timeout --- each admitted against the criterion clause 3 states rather than because it was wanted. The version crosses a minor boundary, so under the leftmost-nonzero caret rule every already-published consumer of `"0.7.0"` resolves `>=0.7.0, <0.8.0` and is unaffected by this entry. openkal-kit is new here. It is the composed half of the specification: facilities that can be written in terms of openkal's atoms, which the specification therefore declines to admit, and which every caller would otherwise write again. It is published out of the specification's own tarball through `mcpp = "*/kit/mcpp.toml"`, as grpc-plugin and grpcgen are published out of grpc-m's, so its version key need not equal the tag: 0.1.0 comes from openkal's 0.8.0 archive and the two entries carry the same hash because they are the same bytes. ⚠️ Its manifest reaches the specification by `path = ".."` and its headers by `include_dirs = ["../include"]`. Both escape the package's own directory and hold only if the whole archive is extracted and the manifest then located within it. Measured before publishing rather than after: a consumer naming the kit's directory builds and runs against it, parsing an endpoint and refusing a malformed one. Both assets were fetched back from the CN mirror and compared by hash rather than trusted to the uploader's report, which has said `uploaded` for an object that then answered 404. --- pkgs/o/openkal-kit.lua | 74 ++++++++++++++++++++++++++++++++++++++++++ pkgs/o/openkal.lua | 21 ++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 pkgs/o/openkal-kit.lua diff --git a/pkgs/o/openkal-kit.lua b/pkgs/o/openkal-kit.lua new file mode 100644 index 00000000..bc386d7b --- /dev/null +++ b/pkgs/o/openkal-kit.lua @@ -0,0 +1,74 @@ +-- openkal-kit --- facilities composed from openkal's interfaces. +-- +-- Form A because the package is described by its own mcpp.toml. +-- +-- ⭐ PUBLISHED OUT OF THE SPECIFICATION'S OWN TARBALL, at `*/kit/mcpp.toml`. +-- The precedent is grpc-plugin and grpcgen, which are published the same way +-- out of grpc-m's archive, and it is why the version key here need not equal +-- the tag: openkal-kit 0.1.0 comes from openkal's 0.8.0 archive. +-- +-- The package's own manifest reaches the specification by `path = ".."` and its +-- headers by `include_dirs = ["../include"]`. Both escape the package's +-- directory and hold because the whole archive is extracted and the manifest is +-- then located within it --- which is what the glob below expresses. +-- +-- WHY IT IS A SEPARATE PACKAGE AND NOT PART OF THE SPECIFICATION. +-- +-- openkal admits an interface only when it is a minimal capability every kernel +-- has and cannot be composed from the interfaces already present. That rule is +-- what keeps openkal implementable on a machine with firmware and nothing else, +-- and it leaves a gap: awaiting two streams at once, or parsing an endpoint out +-- of a configuration file, are composed rather than primitive. This package is +-- where such a composition is written once. +-- +-- The distinction is structural rather than stated. Clause 10 makes openkal's +-- contract a C application binary interface; this package exports no name +-- beginning with `kal_` and is C++ modules in `namespace kal::kit`, so a +-- program linking it is not read as an implementation that has added names. +-- The consequence that matters is that this package MAY evolve, which clause 8 +-- forbids the specification from doing. +-- +-- No `deps`. Its one dependency is the specification, named in its own manifest +-- and satisfied from within the same archive. +package = { + spec = "1", + namespace = "mcpplibs", + name = "openkal-kit", + description = "Facilities composed from openkal's interfaces, and not part of the specification", + licenses = {"Apache-2.0"}, + repo = "https://github.com/mcpplibs/openkal", + type = "package", + + xpm = { + linux = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz", + }, + sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34", + }, + }, + macosx = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz", + }, + sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34", + }, + }, + windows = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz", + }, + sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34", + }, + }, + }, + + -- The package's own manifest, in the kit's directory inside the wrap. + mcpp = "*/kit/mcpp.toml", +} diff --git a/pkgs/o/openkal.lua b/pkgs/o/openkal.lua index 6cd59b96..8c002f36 100644 --- a/pkgs/o/openkal.lua +++ b/pkgs/o/openkal.lua @@ -22,6 +22,13 @@ package = { xpm = { linux = { + ["0.8.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz", + }, + sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34", + }, ["0.7.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.7.0.tar.gz", @@ -59,6 +66,13 @@ package = { }, }, macosx = { + ["0.8.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz", + }, + sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34", + }, ["0.7.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.7.0.tar.gz", @@ -96,6 +110,13 @@ package = { }, }, windows = { + ["0.8.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz", + }, + sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34", + }, ["0.7.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.7.0.tar.gz",