From 51c56367a1b0c15113e6d5d03f0e7212f98a38b1 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Thu, 20 Aug 2026 11:59:45 +0800 Subject: [PATCH] feat: openkal 0.5.1 and the four packages that are written against it Six packages, and the last two are what the first four exist to make possible. openkal 0.5.1 the specification: the declarations in C as well as in modules, five error values, five operations and two naming rules that a C library above it could not be written without, and a conformance suite of 97 observations that an implementation runs against itself openkal-linux 0.5.1 reimplemented on the kernel's own system-call interface, so that a C library can sit above it openkal-macos 0.3.1 reimplemented on that kernel's own calls, and two names no C library defines openkal-windows 0.1.1 new: an implementation on the Win32 interfaces and the object manager beneath them, using no C runtime symbol openkal-musl 0.3.0 musl 1.2.5 redirected onto openkal --- 1345 sources compiled unmodified, four patched lines, nine replaced sources sbase 0.1.0 new: the 97 suckless base utilities, sources unmodified, running on Linux, macOS and Windows sbase is the measurement rather than the demonstration. It has no Windows port and does not build on macOS as it stands: three of its tools include a header of the Linux C libraries and four use a field POSIX 2008 specifies that the other system's C library does not have. Neither obstacle is in a kernel, and a C library removes both by being present rather than by being adapted to. Fifty comparisons against the system's own tools hold on all three. Two version notes, both about a tag being the one thing that cannot be given a second meaning. openkal 0.5.0 and its three implementations were tagged, released and mirrored, and then found to carry files that describe a machine rather than the package; the mirror allows neither replacing an asset nor deleting a release, so the cleaned trees are 0.5.1, 0.3.1 and 0.1.1 and the earlier tags are not carried here. openkal-musl was `openkal-libc' up to 0.2.0, whose tags are still in that repository, so its first version under the new name is 0.3.0; openkal-libc keeps its own descriptor for anything pinned to it. --- pkgs/o/openkal-linux.lua | 21 ++++++++++++++ pkgs/o/openkal-macos.lua | 21 ++++++++++++++ pkgs/o/openkal-musl.lua | 56 ++++++++++++++++++++++++++++++++++++++ pkgs/o/openkal-windows.lua | 54 ++++++++++++++++++++++++++++++++++++ pkgs/o/openkal.lua | 21 ++++++++++++++ pkgs/s/sbase.lua | 53 ++++++++++++++++++++++++++++++++++++ 6 files changed, 226 insertions(+) create mode 100644 pkgs/o/openkal-musl.lua create mode 100644 pkgs/o/openkal-windows.lua create mode 100644 pkgs/s/sbase.lua diff --git a/pkgs/o/openkal-linux.lua b/pkgs/o/openkal-linux.lua index b301c19..9b20f8b 100644 --- a/pkgs/o/openkal-linux.lua +++ b/pkgs/o/openkal-linux.lua @@ -19,6 +19,13 @@ package = { xpm = { linux = { + ["0.5.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.5.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-linux/releases/download/0.5.1/openkal-linux-0.5.1.tar.gz", + }, + sha256 = "fa9dd5daff81666e80b38f213e9b9a073e8461946f0a58a911fc67a04f1d8415", + }, ["0.4.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.4.0.tar.gz", @@ -28,6 +35,13 @@ package = { }, }, macosx = { + ["0.5.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.5.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-linux/releases/download/0.5.1/openkal-linux-0.5.1.tar.gz", + }, + sha256 = "fa9dd5daff81666e80b38f213e9b9a073e8461946f0a58a911fc67a04f1d8415", + }, ["0.4.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.4.0.tar.gz", @@ -37,6 +51,13 @@ package = { }, }, windows = { + ["0.5.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.5.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-linux/releases/download/0.5.1/openkal-linux-0.5.1.tar.gz", + }, + sha256 = "fa9dd5daff81666e80b38f213e9b9a073e8461946f0a58a911fc67a04f1d8415", + }, ["0.4.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-linux/archive/refs/tags/0.4.0.tar.gz", diff --git a/pkgs/o/openkal-macos.lua b/pkgs/o/openkal-macos.lua index c866a7b..4df420f 100644 --- a/pkgs/o/openkal-macos.lua +++ b/pkgs/o/openkal-macos.lua @@ -19,6 +19,13 @@ package = { xpm = { linux = { + ["0.3.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.3.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-macos/releases/download/0.3.1/openkal-macos-0.3.1.tar.gz", + }, + sha256 = "c9347af16af21969938cffd112abd9a2f930eab28500d15ab8cc17b236f4b766", + }, ["0.2.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.2.0.tar.gz", @@ -28,6 +35,13 @@ package = { }, }, macosx = { + ["0.3.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.3.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-macos/releases/download/0.3.1/openkal-macos-0.3.1.tar.gz", + }, + sha256 = "c9347af16af21969938cffd112abd9a2f930eab28500d15ab8cc17b236f4b766", + }, ["0.2.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.2.0.tar.gz", @@ -37,6 +51,13 @@ package = { }, }, windows = { + ["0.3.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.3.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-macos/releases/download/0.3.1/openkal-macos-0.3.1.tar.gz", + }, + sha256 = "c9347af16af21969938cffd112abd9a2f930eab28500d15ab8cc17b236f4b766", + }, ["0.2.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal-macos/archive/refs/tags/0.2.0.tar.gz", diff --git a/pkgs/o/openkal-musl.lua b/pkgs/o/openkal-musl.lua new file mode 100644 index 0000000..c31f548 --- /dev/null +++ b/pkgs/o/openkal-musl.lua @@ -0,0 +1,56 @@ +-- openkal-musl --- musl 1.2.5 above openkal rather than above one kernel. +-- +-- The version line continues rather than restarting. This repository was +-- `openkal-libc' up to 0.2.0, and those tags are still in it; a package that +-- restarted at 0.1.0 would give one tag two meanings, which is the one thing a +-- release chain cannot allow. The earlier name keeps its own descriptor so that +-- a project pinned to it continues to resolve, and nothing is added to it. +-- +-- No `deps'. The package names the specification it is written against and the +-- implementation of openkal for the target being built, both in its own +-- manifest --- because a C library is the one consumer that knows the program +-- above it carries no other runtime, and that is what selects the +-- implementation's `standalone' feature. +-- +-- The consequence for a program is that it names this package and nothing else. +package = { + spec = "1", + namespace = "mcpplibs", + name = "openkal-musl", + description = "musl 1.2.5 redirected onto openkal: one C library, ported once, above every implementation of the specification rather than above one kernel", + licenses = {"Apache-2.0", "MIT"}, + repo = "https://github.com/mcpplibs/openkal-musl", + type = "package", + + xpm = { + linux = { + ["0.3.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-musl/archive/refs/tags/0.3.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-musl/releases/download/0.3.0/openkal-musl-0.3.0.tar.gz", + }, + sha256 = "ec96bc1f68c42daf2b8db4815138b8fc548cebb910c13482dbefa4c4a8994f17", + }, + }, + macosx = { + ["0.3.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-musl/archive/refs/tags/0.3.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-musl/releases/download/0.3.0/openkal-musl-0.3.0.tar.gz", + }, + sha256 = "ec96bc1f68c42daf2b8db4815138b8fc548cebb910c13482dbefa4c4a8994f17", + }, + }, + windows = { + ["0.3.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-musl/archive/refs/tags/0.3.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-musl/releases/download/0.3.0/openkal-musl-0.3.0.tar.gz", + }, + sha256 = "ec96bc1f68c42daf2b8db4815138b8fc548cebb910c13482dbefa4c4a8994f17", + }, + }, + }, + + mcpp = "*/mcpp.toml", +} diff --git a/pkgs/o/openkal-windows.lua b/pkgs/o/openkal-windows.lua new file mode 100644 index 0000000..06c4bcd --- /dev/null +++ b/pkgs/o/openkal-windows.lua @@ -0,0 +1,54 @@ +-- openkal-windows --- an implementation for a system that shares no ancestry +-- with the one openkal was first written on. +-- +-- No `deps`. The interfaces it uses are the ones every installation of that +-- system already has, and it names them in the objects it produces rather than +-- on a link line, so a project that selects it needs nothing further. +-- +-- The package is listed for every platform because a descriptor's platform +-- table describes availability rather than applicability. A project selects +-- this implementation with a conditional dependency on `cfg(windows)`, and a +-- project that selects it elsewhere fails at compile time, which is the correct +-- place for that failure. +package = { + spec = "1", + namespace = "mcpplibs", + name = "openkal-windows", + description = "An implementation of openkal for Windows, on the Win32 interfaces and the object manager beneath them, using no C runtime symbol", + licenses = {"Apache-2.0"}, + repo = "https://github.com/mcpplibs/openkal-windows", + type = "package", + + xpm = { + linux = { + ["0.1.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-windows/archive/refs/tags/0.1.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-windows/releases/download/0.1.1/openkal-windows-0.1.1.tar.gz", + }, + sha256 = "e4e517c80d030eacd5427e85c4431a425d098a151c263554bf79d277f360d444", + }, + }, + macosx = { + ["0.1.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-windows/archive/refs/tags/0.1.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-windows/releases/download/0.1.1/openkal-windows-0.1.1.tar.gz", + }, + sha256 = "e4e517c80d030eacd5427e85c4431a425d098a151c263554bf79d277f360d444", + }, + }, + windows = { + ["0.1.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-windows/archive/refs/tags/0.1.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-windows/releases/download/0.1.1/openkal-windows-0.1.1.tar.gz", + }, + sha256 = "e4e517c80d030eacd5427e85c4431a425d098a151c263554bf79d277f360d444", + }, + }, + }, + + -- The package's own manifest, inside the tarball's wrap directory. + mcpp = "*/mcpp.toml", +} diff --git a/pkgs/o/openkal.lua b/pkgs/o/openkal.lua index 344ed04..1d4f8bc 100644 --- a/pkgs/o/openkal.lua +++ b/pkgs/o/openkal.lua @@ -22,6 +22,13 @@ package = { xpm = { linux = { + ["0.5.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.5.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.5.1/openkal-0.5.1.tar.gz", + }, + sha256 = "cc4bd91fe0ea7c2046307e9bee92b58c9ea29f18056a03ff717f6c8e1e839d20", + }, ["0.4.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.4.0.tar.gz", @@ -31,6 +38,13 @@ package = { }, }, macosx = { + ["0.5.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.5.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.5.1/openkal-0.5.1.tar.gz", + }, + sha256 = "cc4bd91fe0ea7c2046307e9bee92b58c9ea29f18056a03ff717f6c8e1e839d20", + }, ["0.4.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.4.0.tar.gz", @@ -40,6 +54,13 @@ package = { }, }, windows = { + ["0.5.1"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.5.1.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.5.1/openkal-0.5.1.tar.gz", + }, + sha256 = "cc4bd91fe0ea7c2046307e9bee92b58c9ea29f18056a03ff717f6c8e1e839d20", + }, ["0.4.0"] = { url = { GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.4.0.tar.gz", diff --git a/pkgs/s/sbase.lua b/pkgs/s/sbase.lua new file mode 100644 index 0000000..0a335aa --- /dev/null +++ b/pkgs/s/sbase.lua @@ -0,0 +1,53 @@ +-- sbase --- the suckless base utilities, above openkal-musl. +-- +-- The sources are upstream's, unmodified. What this package supplies is a +-- manifest naming one dependency, two build decisions that are about linking +-- rather than about sources, and fifty comparisons against the system's own +-- tools. +-- +-- It is listed for every platform, and that is the result rather than a +-- convention: sbase has no Windows port and does not build on macOS as it +-- stands --- three of its tools include a header of the Linux C libraries and +-- four use a field POSIX 2008 specifies that the other system's C library does +-- not have. Neither obstacle is in a kernel. +package = { + spec = "1", + namespace = "mcpplibs", + name = "sbase", + description = "The suckless base utilities recompiled above openkal-musl: ninety-seven tools, sources unmodified, on Linux, macOS and Windows", + licenses = {"MIT", "Apache-2.0"}, + repo = "https://github.com/mcpplibs/sbase", + type = "package", + + xpm = { + linux = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/sbase/archive/refs/tags/0.1.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/sbase/releases/download/0.1.0/sbase-0.1.0.tar.gz", + }, + sha256 = "cd8ea89e9b15ae1ef41c0efba58304d39e853d649783b9300c0fab69375e36ff", + }, + }, + macosx = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/sbase/archive/refs/tags/0.1.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/sbase/releases/download/0.1.0/sbase-0.1.0.tar.gz", + }, + sha256 = "cd8ea89e9b15ae1ef41c0efba58304d39e853d649783b9300c0fab69375e36ff", + }, + }, + windows = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/sbase/archive/refs/tags/0.1.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/sbase/releases/download/0.1.0/sbase-0.1.0.tar.gz", + }, + sha256 = "cd8ea89e9b15ae1ef41c0efba58304d39e853d649783b9300c0fab69375e36ff", + }, + }, + }, + + mcpp = "*/mcpp.toml", +}