Skip to content

Commit 81497c6

Browse files
committed
declare the compiler runtime, which was always the larger half of this package
本包 729 个对象里,**498 个是 compiler-rt 的 builtins、21 个是 libunwind 的**。 那些是一个 **C 程序**需要的东西 —— `__udivti3` 和它的亲戚与 C++ 无关 —— 而清单此前只声明 `mcpp:c++-abi=libc++`,于是它说自己供给了不供给的东西, 同时隐瞒了真正供给的那一半。 provides = [ "hosted-standard-library", "mcpp:c++-abi=libc++", "mcpp:compiler-runtime=compiler-rt", ← 新增 ] 实测(本机,mcpp 2026.8.24.3): compiler llvm (22.1.8, payload) compiler-runtime compiler-rt (openkal-llvm-runtime@0.1.2, graph) ← 原为 payload kernel-abi openkal (openkal-linux@0.5.3, graph) c-abi musl (openkal-musl@0.3.3, graph) c++-abi libc++ (openkal-llvm-runtime@0.1.2, graph) 五层里四层来自图,只剩编译器本身来自载荷。 ── ⚠️ 同一改动里必须上移 MCPP_VERSION,原因不是兼容性 ──────── 一个键有三种结局,而其中两种都是 exit 0: provides = ["mcpp:compiler-runtime=…"] 2026.8.19.4 exit 0 **没有被校验** 2026.8.24.1 exit 2 拒绝 2026.8.24.3 exit 0 解析成功 ⭐ 19.4 那个零和 24.3 那个零**不是同一种成功**。前者早于层词表, 整个数组被当作不认识的键忽略 —— 它既不拒绝这条声明,也不读它。 CI 停在那里会在一份**中心主张从未被检查过**的清单上报绿。 因此 `MCPP_VERSION` 2026.8.19.4 → 2026.8.24.3 与本行同时改。 拒绝窗口只有 2026.8.24.1 一个版本(开始校验 `mcpp:` 前缀之后、 学会这一层之前)。索引已于今日到达 2026.8.24.3,且这些包尚无存量用户。
1 parent dfdcadc commit 81497c6

2 files changed

Lines changed: 36 additions & 33 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ on:
1717
workflow_dispatch:
1818

1919
env:
20-
MCPP_VERSION: 2026.8.19.4
20+
MCPP_VERSION: 2026.8.24.3
2121
XLINGS_VERSION: v2026.8.17.2
2222
XLINGS_NON_INTERACTIVE: '1'
2323

mcpp.toml

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)