feat(openkal): the 0.9.0 ecosystem — nine packages, one change - #275
Merged
Conversation
openkal 0.9.0, openkal-kit 0.2.0, openkal-linux 0.7.0, openkal-macos 0.6.0, openkal-windows 0.4.0, openkal-opensbi 0.3.0, openkal-uefi 0.3.0, openkal-musl 0.7.0 and openkal-llvm-runtime 0.4.0. They go in together because each names another by version. Adding them separately would leave this index, between two merges, in a state where a published manifest names a version it does not have -- which is the shape a consumer meets and that nothing in any of those repositories reproduces, because every workflow there substitutes working trees. openkal 0.9.0 makes every declaration one that could be bound at load or reached across an address space rather than only linked: one rule for how an operation reports its result, nothing returning a pointer into the implementation, an implementation that states its own version and interfaces, and the machine's memory quantum asked for rather than fixed when the program was compiled. Every source tarball was downloaded from BOTH hosts and compared byte for byte against the file the checksum was taken from, rather than trusted to either service's own listing -- a GitHub asset has been listed and served 404 before, and GitCode's HEAD returns a redirect stub whose length is not the asset's. Every descriptor here parses as Lua afterwards and carries its version in all three OS tables with the same checksum, checked on the parsed table rather than by searching the text.
Sunrisepeak
added a commit
that referenced
this pull request
Aug 29, 2026
riscv-virt-rt 0.6.0 and std-freestanding-alloc-kal 0.1.2, following #275. riscv-virt-rt is not only a consumer: behind `features = ["openkal"]` it supplies openkal's core set for QEMU's RISC-V virt machine, so 0.9's one-word transfers, kal_memory_granularity and the self-description all had to be implemented. Its granularity answers 1 -- no memory management unit, no rounding -- and its comment records that a C library above it must impose its own floor rather than adopt the number.⚠️ Nothing had ever called that implementation. The feature compiled the sources and the linker took all fourteen names into the test binary, so the suite was green while proving only that it compiles and links. It now has a test that asks, on both ISA profiles, measured to fail when the answers are made wrong. std-freestanding-alloc-kal is a repin: kal_alloc and kal_free are unchanged and nothing 0.9 altered is reachable from `operator new`. Writing it exposed that its manifest dependency catches a version mismatch and not a declaration one -- it declares the two itself rather than including openkal's header -- so continuous integration now compiles both against the header they came from. Both tarballs were downloaded from both hosts and compared byte for byte against the file the checksum was taken from. Both descriptors parse as Lua afterwards and carry the version in all three OS tables with the same checksum, checked on the parsed table rather than by searching the text.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Nine packages, published together because they are one change: openkal 0.9.0 and
the eight packages that implement, extend or stand on it.
openkalopenkal-kitopenkal-linuxopenkal-macosopenkal-windowsopenkal-opensbiopenkal-uefiopenkal-muslopenkal-llvm-runtimeWhy they go in one change
Every one of them names another by version. Adding them separately would leave
the index, between two merges, in a state where a published manifest names a
version the index does not have — which is the shape a consumer meets and
nothing else reproduces.
What 0.9.0 is
openkal has been a specification a program is linked against. This version
makes every declaration one that could also be bound at load, or reached across
an address space, without changing what it says: one rule for how an operation
reports its result, nothing returning a pointer into the implementation, an
implementation that states its own version and interfaces, and the machine's
memory quantum asked for rather than fixed when the program was compiled.
What was checked before this
byte against the file the checksum was taken from, rather than trusted to
the hosting service's own listing. A GitHub asset has been listed and served
404 before, and GitCode's
HEADreturns a redirect stub whose length is notthe asset's.
all three OS tables with the same checksum — checked on the parsed table, not
by searching the text.