Skip to content

Commit 1e44ae3

Browse files
authored
release: 0.0.86 — pipeline hardening (A4), unified macOS test stdlib (A1), cross gcc16 floor (A2/R5a) (#203)
Version bump + remediation-doc live status. Ships on top of the merged PRs #201 (verified gated mirroring) and #202 (static libc++ for test binaries, llvm 22.1.8 green); this branch adds the aarch64 cross floor: <triple>-gcc@16.1.0 (xim entry #344), retiring GCC 15 from the cross path. The manifest instantiation anchor REMAINS for the x86_64 musl release build (musl-gcc 15.1.0) until R5b packages its gcc 16.
1 parent 3730d23 commit 1e44ae3

6 files changed

Lines changed: 18 additions & 13 deletions

File tree

.agents/docs/2026-07-08-root-cause-remediation-design.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,11 +189,11 @@ defense-in-depth for the next regression of any kind.
189189

190190
| # | Task | Repo / PR | Status |
191191
|---|------|-----------|--------|
192-
| R1 (A4) | pipeline hardening: timeouts, GH-side verify+retry, completeness gate, fresh-install bounded wait | mcpp `.github/` | 🔄 |
193-
| R2 (A1) | TestBinary → toolchain libc++ (dynamic+rpath); e2e otool assertion; unpin macOS llvm | mcpp `flags.cppm` | pending |
194-
| R3 (A3) | staged+atomic index acquisition | xlings `downloader.cppm` | pending |
195-
| R4 (C.1) | toolchain-bump consumer smoke | xim-pkgindex CI | pending |
196-
| R5 (A2) | cross gcc 16 packaging feasibility → floor bump → delete anchor | xlings-res packaging | pending |
192+
| R1 (A4) | pipeline hardening | ✅ PR #201 merged (6/6); positive+negative tested against live 0.0.85 mirror | |
193+
| R2 (A1) | TestBinary stdlib unification | ✅ PR #202 merged (6/6, 8 forensics-driven rounds): static -load_hidden for tests = distributable model; llvm 22.1.8 green; dynamic route falsified (dylib set upward-links system libc++) | |
194+
| R3 (A3) | staged+atomic git index acquisition + catalog self-heal |xlings PR #353 merged; artifact path already atomic since 0.4.62 — incidents were v0.4.44 pins, bumped in #343 | |
195+
| R4 (C.1) | toolchain-bump consumer smoke + xlings pin v0.4.62 |xim-pkgindex PR #343 merged | |
196+
| R5 (A2) | cross gcc 16 packaging → floor bump | ✅ packaged (build-cross/build-native workflows added, release 16.1.0 4 assets, smoke-tested); xim entry merged (#344); mcpp cross pin → 16.1.0. **R5b remains**: anchor stays until xim ships x86_64 musl gcc 16 (the x86_64-linux-musl release build is still on musl-gcc 15.1.0) | 🔄 |
197197
| R6 | mcpp 0.0.86 release + ecosystem closure (mirror / index bump / fresh-install) | all | pending |
198198

199199
## Order of execution

.github/workflows/cross-build-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ name: cross-build-test
1010
# ── Supported cross matrix (built + verified below) ────────────────────────
1111
# target | toolchain | host→target | run
1212
# ----------------------|---------------------------------|---------------|-----
13-
# aarch64-linux-musl | aarch64-linux-musl-gcc@15.1.0 | x86_64→arm64 | qemu
13+
# aarch64-linux-musl | aarch64-linux-musl-gcc@16.1.0 | x86_64→arm64 | qemu
1414
#
1515
# mcpp resolves a cross `--target <triple>-musl` build to the triple-named cross
1616
# gcc musl toolchain from the xlings ecosystem (xim:<triple>-gcc, see

mcpp.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mcpp"
3-
version = "0.0.85"
3+
version = "0.0.86"
44
description = "Modern C++ build & package management tool"
55
license = "Apache-2.0"
66
authors = ["mcpp-community"]

src/build/prepare.cppm

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -636,9 +636,11 @@ prepare_build(bool print_fingerprint,
636636
// - target arch != host arch → CROSS build, use the target-named
637637
// cross toolchain `<triple>-gcc@15.1.0` (→ xim:<triple>-gcc),
638638
// e.g. building aarch64 on an x86_64 host.
639-
// We pin 15.1.0 because xim only has musl variants for 9.4 / 11.5 /
640-
// 13.3 / 15.1 (gcc 16.1 has none yet); 15.1.0 matches what mcpp uses
641-
// for `mcpp build --target x86_64-linux-musl` (see mcpp.toml).
639+
// Versions: CROSS uses 16.1.0 (packaged 2026-07-08; GCC 15 drops
640+
// module template instantiations at link — remediation doc A2).
641+
// NATIVE musl stays 15.1.0 until xim ships an x86_64 musl gcc 16
642+
// (R5b); the manifest:types instantiation anchor covers it until
643+
// then.
642644
if (endswith(overrides.target_triple, "-musl")
643645
&& (it == m->targetOverrides.end() || it->second.toolchain.empty()))
644646
{
@@ -649,7 +651,7 @@ prepare_build(bool print_fingerprint,
649651
if (targetArch.empty() || targetArch == mcpp::platform::host_arch)
650652
tcSpec = "gcc@15.1.0-musl"; // native
651653
else
652-
tcSpec = overrides.target_triple + "-gcc@15.1.0"; // cross
654+
tcSpec = overrides.target_triple + "-gcc@16.1.0"; // cross
653655
}
654656
if (endswith(overrides.target_triple, "-musl")
655657
&& m->buildConfig.linkage.empty()) {

src/manifest/types.cppm

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,10 @@ std::filesystem::path resolve_lib_root_path(const Manifest& manifest) {
517517

518518

519519
// ── GCC 15 cross-link workaround ────────────────────────────────────
520-
// GCC 15 (aarch64-linux-musl cross, xim gcc 15.1.0) does not emit
520+
// GCC 15 does not emit
521+
// (cross is on gcc 16 since 2026-07-08; this anchor stays for the
522+
// x86_64-linux-musl NATIVE release build, still on musl-gcc 15.1.0 —
523+
// remove when xim ships an x86_64 musl gcc 16, remediation doc R5b)
521524
// implicit template instantiations for std::map/... members of
522525
// module-attached structs in IMPORTER object files — it expects the
523526
// owning module to provide them. The old single-file mcpp.manifest

src/toolchain/fingerprint.cppm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import mcpp.toolchain.detect;
1818

1919
export namespace mcpp::toolchain {
2020

21-
inline constexpr std::string_view MCPP_VERSION = "0.0.85";
21+
inline constexpr std::string_view MCPP_VERSION = "0.0.86";
2222

2323
struct FingerprintInputs {
2424
Toolchain toolchain;

0 commit comments

Comments
 (0)