From 841d3f15e4a561b3399f955b162cd65e13924342 Mon Sep 17 00:00:00 2001 From: Sunrisepeak Date: Sat, 7 Nov 2026 10:06:18 +0900 Subject: [PATCH 1/3] 0.24.2 --- openkal-llvm-runtime 0.19.2 keeps the volume of a normalized name Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com> --- README.md | 8 +++++++- mcpp.toml | 17 ++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b4552b0..2b7a9db 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,12 @@ whole name however long, openkal-llvm-runtime 0.19.1 reads a name beneath a Windows volume as absolute, openkal-macos 0.22.1 sizes its confinement rules to the grants of each start, and openkal-image 0.5.1 builds okrun over it. +Platform 0.24.2 changes one member: openkal-llvm-runtime 0.19.2 keeps the volume +of a name it rebuilds part by part (`lexically_normal`, `weakly_canonical`, and +`D:/a` / `/b`), which 0.19.1 lost on Windows, so that a launcher over the hosted +arrangement could not start its runner (openkal-llvm-runtime#68). It is the first +group released as a leaf and a patch of this group, through one index change. + A project overrides any group under `[target.]`, for example `[target.'cfg(platform = "openkal")'.layers] "c++-abi" = false`, and selects another platform, or none, with `platform = "..."` or `--platform`. @@ -162,7 +168,7 @@ group is released as one index change: python3 tools/family_release.py check # tags, GitCode mirrors, the index python3 tools/family_release.py defects # open issues, for the release notes python3 tools/family_release.py index ../mcpp-index # the group's one index change -python3 tools/family_release.py exports openkal-platform@0.24.0 openkal-platform@0.24.1 +python3 tools/family_release.py exports openkal-platform@0.24.1 openkal-platform@0.24.2 ``` `.github/workflows/family-release.yml` runs them on every change of the group: diff --git a/mcpp.toml b/mcpp.toml index f81fdd0..fdeff43 100644 --- a/mcpp.toml +++ b/mcpp.toml @@ -12,7 +12,7 @@ [package] namespace = "mcpplibs" name = "openkal-platform" -version = "0.24.1" +version = "0.24.2" description = "The platform of ok images (-openkal): their toolchain, C library and C++ run-time, tools, compile and link conventions, seal, runner and carrier, as one versioned statement mcpp reads." license = "Apache-2.0" authors = ["mcpplibs"] @@ -40,8 +40,8 @@ debuggee = ["okrun", "--debugger", "{}"] # The C library and the C++ run-time inside an image. A package of the graph # that provides a layer takes its place (`provides`), and `false` leaves it out. [platform.layers] -compiler-runtime = "openkal-llvm-runtime@0.19.1" -"c++-abi" = "openkal-llvm-runtime@0.19.1" +compiler-runtime = "openkal-llvm-runtime@0.19.2" +"c++-abi" = "openkal-llvm-runtime@0.19.2" c-abi = { name = "openkal-musl", version = "0.28.1", default-features = false, features = ["posix", "malloc-mimalloc"] } # Built for the building machine: `okld` writes and checks the notes, `okrun` @@ -162,8 +162,8 @@ targets = ["x86_64-linux-gnu", "aarch64-linux-gnu", "x86_64-linux-musl", "aarc toolchain = "llvm@23.1.3" [platform.hosted.layers] -compiler-runtime = "openkal-llvm-runtime@0.19.1" -"c++-abi" = "openkal-llvm-runtime@0.19.1" +compiler-runtime = "openkal-llvm-runtime@0.19.2" +"c++-abi" = "openkal-llvm-runtime@0.19.2" c-abi = { name = "openkal-musl", version = "0.28.1", default-features = false, features = ["posix", "malloc-mimalloc"] } # The family released together for openkal 0.17 (the 0.17.2 round: okb, the @@ -193,7 +193,10 @@ c-abi = { name = "openkal-musl", version = "0.28.1", default-features # relative relocations of an image packed; 0.24.1: openkal-musl 0.28.1 keeps a # directory's whole name, openkal-llvm-runtime 0.19.1 reads a name beneath a # Windows volume as absolute, openkal-macos 0.22.1 sizes its confinement rules -# to the grants, and openkal-image 0.5.1 starts programs over it): +# to the grants, and openkal-image 0.5.1 starts programs over it; 0.24.2: +# openkal-llvm-runtime 0.19.2 keeps the volume of a name it normalizes or +# appends a rooted name to, the first group released as a leaf and a patch of +# this group through one index change): # one version of each in a build. From 0.24.1 the members name one another by # compatible ranges (`^0.28.0`) and this group chooses the versions: mcpp # 2026.11.7.1 resolves within it, and a fix of one member is that member's @@ -205,7 +208,7 @@ openkal-linux = "0.25.0" openkal-macos = "0.22.1" openkal-windows = "0.20.0" openkal-musl = "0.28.1" -openkal-llvm-runtime = "0.19.1" +openkal-llvm-runtime = "0.19.2" openkal-ld = "0.5.1" openkal-run = "0.5.1" openkal-tools = "0.5.1" From 6a9fa348f0501daf1bc9a416b9dc895d77510f32 Mon Sep 17 00:00:00 2001 From: Sunrisepeak Date: Sat, 7 Nov 2026 10:34:56 +0900 Subject: [PATCH 2/3] fix(family-release): a failed check fails its step; inline libc++ functions are not compared The workflow's default shell, bash -e, let `exports | tee` pass with nine symbols reported removed. Every one carried libc++'s ODR-signature ABI tag: functions marked _LIBCPP_HIDE_FROM_ABI, which each object that calls them holds itself. They are left out of the comparison; 0.24.1 -> 0.24.2 keeps 2553 C library and 3622 C++ run-time symbols. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com> --- .github/workflows/family-release.yml | 6 ++++++ tools/family_release.py | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/family-release.yml b/.github/workflows/family-release.yml index 9bbf1d5..095b94a 100644 --- a/.github/workflows/family-release.yml +++ b/.github/workflows/family-release.yml @@ -33,6 +33,12 @@ on: permissions: contents: read +# `bash -eo pipefail`, not the default `bash -e`: a check piped into `tee` fails +# its step when the check fails. +defaults: + run: + shell: bash + env: MCPP_PREVIOUS: 2026.11.5.1 MCPP_SOURCE_REF: ${{ github.event.inputs.mcpp_ref || vars.MCPP_SOURCE_REF || '' }} diff --git a/tools/family_release.py b/tools/family_release.py index f57b01e..f07fdb6 100644 --- a/tools/family_release.py +++ b/tools/family_release.py @@ -17,7 +17,11 @@ release notes exports OLD NEW builds one image with the platform at OLD and at NEW and compares the global symbols of the C library and the C++ - run-time objects it links: a patch version removes none + run-time objects it links: a patch version removes none. + A function of libc++ marked _LIBCPP_HIDE_FROM_ABI carries + its ODR-signature ABI tag (`B9fqe220108`); it is inline, + every object that calls it holds its own copy, and it is + not compared Network reads use GITHUB_TOKEN when it is set. """ @@ -42,6 +46,8 @@ INDEX_RAW = "https://raw.githubusercontent.com/mcpplibs/mcpp-index/main/pkgs/o/{}.lua" # The layers whose objects an image links, by the directory mcpp builds them into. LAYERS = ("mcpplibs_openkal-musl", "mcpplibs_openkal-llvm-runtime") +# libc++'s ODR signature as an Itanium ABI tag: the hardening and exceptions letters and _LIBCPP_VERSION. +HIDDEN_FROM_ABI = re.compile(r"B\d+[a-z]{1,4}\d{6}") def group(also): @@ -173,7 +179,7 @@ def symbols(mcpp, platform, target, work, nm): sys.exit(f"{platform}: the build linked no objects of {layer}") out = subprocess.run([nm, "--defined-only", "--extern-only", "--format=just-symbols", *map(str, objects)], check=True, capture_output=True, text=True).stdout - found[layer] = {s for s in out.split() if s and not s.endswith(":")} + found[layer] = {s for s in out.split() if s and not s.endswith(":") and not HIDDEN_FROM_ABI.search(s)} return found From eca7b2c4091b64025059797379054e36acdaef27 Mon Sep 17 00:00:00 2001 From: Sunrisepeak Date: Sat, 7 Nov 2026 10:49:11 +0900 Subject: [PATCH 3/3] fix(family-release): a group the index lists already resolves over the published index Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com> --- .github/workflows/family-release.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/family-release.yml b/.github/workflows/family-release.yml index 095b94a..e36cfee 100644 --- a/.github/workflows/family-release.yml +++ b/.github/workflows/family-release.yml @@ -110,7 +110,12 @@ jobs: - name: The candidate index (the published one with the group's change) run: | git clone --quiet --depth 1 https://github.com/mcpplibs/mcpp-index.git "$RUNNER_TEMP/index" - git -C "$RUNNER_TEMP/index" apply "$GITHUB_WORKSPACE/index-change.patch" + # Empty once the index lists the group: the published index is then the candidate. + if [ -s "$GITHUB_WORKSPACE/index-change.patch" ]; then + git -C "$RUNNER_TEMP/index" apply "$GITHUB_WORKSPACE/index-change.patch" + else + echo "the published index lists the group" + fi python3 "$RUNNER_TEMP/index/tests/prepare_builtin_index.py" --home "$HOME/.mcpp" --source "$RUNNER_TEMP/index" - name: Both mcpp releases resolve and build an image of the group run: |