@@ -18,39 +18,42 @@ repo = "https://github.com/mcpplibs/openkal-llvm-runtime"
1818# The older spelling is kept beside the current one so that an engine
1919# predating the layer vocabulary still recognises this package. Both name the
2020# same layer; a newer engine reads the second and ignores the first.
21- provides = [" hosted-standard-library" , " mcpp:c++-abi=libc++" ]
21+ provides = [
22+ " hosted-standard-library" ,
23+ " mcpp:c++-abi=libc++" ,
24+ # ⚠️ THE LARGER HALF OF THIS PACKAGE, AND IT IS NOT A C++ THING.
25+ #
26+ # Of the 729 objects built here, 498 are compiler-rt's builtins and 21 are
27+ # libunwind's. Those are what a C PROGRAM needs — `__udivti3` and its
28+ # relatives have nothing to do with C++ — so declaring them under the C++
29+ # layer would say this package supplies something it does not and conceal
30+ # something it does.
31+ " mcpp:compiler-runtime=compiler-rt" ,
32+ ]
2233
23- # ⚠️ THE COMPILER RUNTIME IS THE LARGER HALF OF THIS PACKAGE AND IS NOT YET
24- # DECLARED, BECAUSE DECLARING IT WOULD MAKE THIS MANIFEST UNREADABLE TO EVERY
25- # RELEASED BUILD TOOL.
26- #
27- # Measured: of the 729 objects built here, 498 are compiler-rt's builtins and 21
28- # are libunwind's. Those are what a C PROGRAM needs — `__udivti3` and its
29- # relatives have nothing to do with C++ — so declaring them under the C++ layer
30- # says this package supplies something it does not and conceals something it
31- # does.
32- #
33- # The layer is named `mcpp:compiler-runtime` from mcpp 2026.8.24.2, and a build
34- # tool released before that reports:
35- #
36- # error: `provides = ["mcpp:compiler-runtime=compiler-rt"]` names no
37- # capability mcpp knows.
38- #
39- # ⚠️ That refusal is itself fixed in 2026.8.24.2 — an unknown layer name in a
40- # DEPENDENCY's manifest is now ignored with a warning rather than refused — but
41- # the fix cannot apply retroactively to tools already released.
42- #
43- # ⚠️ AND THE CRITERION IS NOT THIS PACKAGE'S FLOOR. It is what the index serves,
44- # because that is what a reader of this file actually has. Measured 2026-08-24
45- # against the two keys, with a dependency declaring each and a build tool taken
46- # from the version the index named `latest`:
47- #
48- # requires = ["mcpp:compiler=llvm"] 2026.8.24.1 exit 0, ignored
49- # provides = ["mcpp:compiler-runtime=…"] 2026.8.24.1 exit 2, refused
50- #
51- # So `requires` is safe to publish today and the layer declaration is not. The
52- # gate on adding it is that the index's `latest` be at 2026.8.24.2 or above —
53- # not that a newer mcpp exists, and not that this package's floor was raised.
34+ # ── The floor this declaration puts under the package ───────────────────────
35+ #
36+ # `mcpp:compiler-runtime` is a layer name mcpp learned in 2026.8.24.2. Measured
37+ # 2026-08-24, one dependency declaring one key, each build tool taken from a
38+ # published release:
39+ #
40+ # requires = ["mcpp:compiler=llvm"] 2026.8.19.4 exit 0 not validated
41+ # 2026.8.24.1 exit 0 not validated
42+ # provides = ["mcpp:compiler-runtime=…"] 2026.8.19.4 exit 0 not validated
43+ # 2026.8.24.1 exit 2 REFUSED
44+ # 2026.8.24.3 exit 0 resolved
45+ #
46+ # ⚠️ THE TWO ZEROES AT 2026.8.19.4 ARE NOT THE SAME KIND OF SUCCESS AS THE ONE
47+ # AT 2026.8.24.3. That tool predates the layer vocabulary and ignores the whole
48+ # array, so it neither refuses the declaration nor reads it. A CI pinned there
49+ # would report green over a manifest whose central claim was never examined,
50+ # which is why this package's `MCPP_VERSION` moves to 2026.8.24.3 in the same
51+ # change that adds the line.
52+ #
53+ # The window that REFUSES is 2026.8.24.1 alone — between the release that began
54+ # validating the `mcpp:` prefix and the one that learned this layer. Publishing
55+ # into it was deferred until the index served a tool past it; the index reached
56+ # 2026.8.24.3 on 2026-08-24 and these packages have no installed base behind it.
5457
5558# What this package needs of the layer it does not supply.
5659#
0 commit comments