You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: sync with 2026.8.3.4 — ZH windows→linux section, artifact naming, correct the pin-checker claim
Review of #348 against the current tree (2026.8.3.4, three releases newer than
when the sync was written). Four things needed adjusting.
1. The ZH toolchain doc was missing THREE sections the EN one has, including
the whole `x86_64-linux-musl`-from-Windows feature (2026.8.3.2). A Chinese
reader had no way to learn that Windows can produce Linux ELF at all. Added,
mirroring EN: "Windows 上产出 Linux ELF", "MSVC(系统工具链,Windows)", and
the Clang 20+ operator-template hazard. EN/ZH are now at 16 sections each,
and every other doc pair already matched.
The EN section's claims were re-derived from `toolchain::host_can_serve`
before translating: Windows serves linux targets only when musl AND same
arch, which is exactly "no x86_64-linux-gnu, no cross-arch". Both languages
now also state the fact that function makes explicit and the docs omitted —
**a macOS host has no Linux-targeting payload at all** — and point at
`mcpp toolchain list` as the authority so nobody has to memorize the matrix.
2. Artifact naming, undocumented since 2026.8.3.3 changed it. `kind = "lib"`
for `x86_64-windows-gnu` produces `libfoo.a`, not `foo.lib`: the static-lib
convention splits on the triple's *env* segment, not its OS. That release
fixed a name that was wrong (a GNU archive wearing an MSVC name, which MSVC
cannot consume), so anyone globbing `*.lib` out of a mingw build needs to
know. Added as a table to both languages.
3. `docs/spec/package-identity.md` carried "当前实现为 2026.8.3.2" — already
stale two releases later. A spec should not restate a value that expires on
every release; the minimum-implementation version (0.0.106) is the load
bearing one and it is still there. Dropped the parenthetical rather than
bumping it, so it cannot go stale again.
4. **`check_version_pins.sh` does not have a Bash syntax error.** It parses
(`bash -n`), runs, and exits 0 — verified on this tree. The failure is
`sh check_version_pins.sh`: the script uses process substitution
(`done < <(...)`), which dash cannot parse, so it reports
"line 95: Syntax error: redirection unexpected". That is the invoking shell,
not the script — its shebang is `#!/usr/bin/env bash` and CI invokes it as
bash.
This mattered enough to chase down because the claim appeared in six places
across three files, each instructing the releaser to skip the guard and
check pins by hand. That guard is the only machine check for pin drift, and
pin drift has broken releases here before. All six now show the correct
invocation and explain the sh-vs-bash trap instead.
Also noted the cache-entry layout change from 2026.8.3.4 in the `[build] cache`
section (both languages): entry layout is versioned, an upgrade that changes it
retires older entries and the next build repopulates — nothing to clean by hand.
The PR's other two findings were re-verified against the source and are correct:
`kind = "shared"` really is refused off Linux/ELF (plan.cppm:513), and
`[build].cxx_runtime` really is parsed but missing from `kKnownBuildKeys` — the
allowlist's own comment says it "MUST stay in sync with the doc->get_* reads",
and it is not. Left as-is; this PR touches no source.
0 commit comments