Skip to content

two things verifying 2026.8.26.2 turned up - #513

Merged
Sunrisepeak merged 2 commits into
mainfrom
fix/the-example-says-what-the-engine-now-does
Aug 26, 2026
Merged

two things verifying 2026.8.26.2 turned up#513
Sunrisepeak merged 2 commits into
mainfrom
fix/the-example-says-what-the-engine-now-does

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Aug 26, 2026

Copy link
Copy Markdown
Member

Follow-up to #512, discovered while verifying it.

examples/06-openkal-cross teaches the short target spellings. It listed three; the fourth — --target aarch64-linux — is precisely the one 2026.8.26.2 made writable. Verified at the artifact:

$ mcpp build --target aarch64-linux
$ file target/aarch64-linux-musl/*/bin/portable-report
  ELF 64-bit LSB executable, ARM aarch64, statically linked

[toolchain] default = "llvm@22.1.8" is removed. openkal-llvm-runtime declares requires = ["mcpp:compiler=llvm"], and mcpp now reads it — so the manifest was restating what the graph already says. Measured with a gcc global default, all four targets:

Resolved llvm@22.1.8 → aarch64-linux-musl → …/xim-x-llvm/22.1.8/bin/clang++
         required by openkal-llvm-runtime@0.1.3
         (`requires = ["mcpp:compiler=llvm"]`), not your gcc@16.1.0 — this project only

and ~/.mcpp/config.toml byte-identical afterwards.

⚠️ The dependency floor had gone stale at 0.1.1, whose compiler-rt builtins do not compile for aarch64 — that is what the aarch64 leg actually died on. Nothing in CI builds this example, so a pin expiring here has nothing that would say so. I nearly recorded this as an mcpp/openkal aarch64 defect and a CI coverage gap; both were wrong. tests/e2e/287 does build aarch64-linux-musl over openkal and passes.

All four targets built locally before and after.


And the matrix's compiler axis was following the cache

⚠️ Same commit: the PR's scan (windows-x86_64) was green, and the same job on main was red. That run's restored cache carried an extra gcc@16.1.0, so the scan produced 24 cells where expected.tsv declares 16 for that host — and all eight extras were reported as cells the table does not mention.

What a runner happens to have installed is not what this repository declares, and the criterion has to be the second. scan.sh's compiler axis now comes from expected.tsv's own column via MATRIX_COMPILERS, computed by the workflow from the same column the install step reads — so "install these" and "scan these" cannot disagree.

⭐ Installed versions outside the declaration are named on stderr rather than silently dropped: a measurement that did not run and one that passed are indistinguishable from an exit code.

Verified locally — linux-x86_64 payload mode, 24 cells matched, three undeclared installed versions reported by name.

`examples/06-openkal-cross` documented three target spellings. The fourth —
`--target aarch64-linux` — is the one 2026.8.26.2 made writable; before it,
the request completed to `aarch64-linux-gnu`, a row registered but not
supported, and refused while `aarch64-linux-musl` built.

Its `[toolchain] default = "llvm@22.1.8"` is gone. `openkal-llvm-runtime`
declares `requires = ["mcpp:compiler=llvm"]`, and mcpp now reads that, so the
manifest naming a compiler was stating something the graph already says.
Measured on a machine whose global default is gcc: all four targets resolve
`llvm@22.1.8`, and `~/.mcpp/config.toml` is byte-identical afterwards.

⚠️ And the dependency floor still read `0.1.1`, whose compiler-rt builtins do
not compile for aarch64 — which is what the aarch64 leg actually died on before
this. Nothing builds this example in CI, so a pin going stale here has nothing
that would say so.
Same commit: the PR's `scan (windows-x86_64)` was green and the same job on
main was red. That run's restored cache carried an extra `gcc@16.1.0`, so the
scan produced 24 cells where the expected table declares 16 for that host, and
all eight extras were reported as cells the table does not mention.

What a runner happens to have installed is not what this repository declares,
and the criterion has to be the second. The compiler axis now comes from
expected.tsv's own column, computed by the workflow from the same column the
install step reads — so "install these" and "scan these" cannot disagree.
Installed versions outside the declaration are named on stderr; a measurement
that did not run and one that passed are indistinguishable from an exit code.
@Sunrisepeak Sunrisepeak changed the title the example says what the engine now does, and its pin had gone stale two things verifying 2026.8.26.2 turned up Aug 26, 2026
@Sunrisepeak
Sunrisepeak merged commit b54f4a6 into main Aug 26, 2026
36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants