Skip to content

Commit 71cdcc0

Browse files
committed
docs(11): 记下 layers[].interface 的取值变化
它是机器接口上的一个字段,而取值从 `gnu` 变成了 `glibc`/`ucrt`。§6 承诺的是 字段的**含义**不变 —— 含义确实没变 —— 但按字面量取值的客户端会受影响,而契约页 不说这件事,就只能靠对方撞上。
1 parent 2344269 commit 71cdcc0

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

docs/11-machine-output.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,16 @@ A field was added rather than `cLibrary` renamed or `mode` widened, because §6
320320
promises that fields are added and never removed and that a field's meaning
321321
never changes.
322322

323+
⚠️ **`layers[].interface` changed VALUE for a payload-supplied glibc in
324+
2026.9.1.1** — from `gnu` to `glibc`, and on Windows from `gnu` to `ucrt`. The
325+
field's meaning is unchanged (it still names the implementation), so §6 holds;
326+
what changed is that it stopped reporting the triple's env segment, which is a
327+
request rather than an implementation and is not the name of any C library. The
328+
values are now the ones [14 — The Target Side](14-target-side.md) has always
329+
listed, and a package may compare against them in a `cfg(c-abi = …)` predicate.
330+
A client keying on the literal `gnu` needs updating; `musl`, `picolibc` and
331+
`libSystem` are unaffected.
332+
323333
**`reason` is a token, not a sentence.** The refusal's message is still
324334
written for a person and still names the target, the rule and the way out — but
325335
a program classifying the outcome reads `reason`:

docs/zh/11-machine-output.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,14 @@ mcpp why toolchain [--target <triple>] [--toolchain <spec>] --format json
283283
**新增一个字段**而不是给 `cLibrary` 改名或给 `mode` 加取值,因为 §6 承诺字段
284284
只增不删、且一个字段的含义永不改变。
285285

286+
⚠️ **2026.9.1.1 起,载荷供给的 glibc 让 `layers[].interface`**取值**变了** ——
287+
`gnu` 变为 `glibc`,Windows 上从 `gnu` 变为 `ucrt`。字段的**含义**没变(它仍然是
288+
「哪个实现」),所以 §6 仍然成立;变的是它不再报三元组的 env 段 —— 那是一次请求而
289+
不是一个实现,也不是任何一个 C 库的名字。现在的取值就是
290+
[14 —— 目标侧](14-target-side.md)一直列着的那些,并且包可以在
291+
`cfg(c-abi = …)` 谓词里与它们比较。按字面量 `gnu` 取值的客户端需要更新;
292+
`musl``picolibc``libSystem` 不受影响。
293+
286294
**`reason` 是一个记号,不是一句话。** 拒绝的消息仍然写给人看,仍然点名目标、
287295
规则与出路;而一个要给结果分类的程序读 `reason`:
288296

0 commit comments

Comments
 (0)