Skip to content

[temp][do not merge] probe: i686-windows-msvc import std under LLVM 23.1.3 (#781 part 3, G1/G2) - #788

Closed
Sunrisepeak wants to merge 27 commits into
mainfrom
probe/llvm-2313-x86-msvc-coroutines
Closed

Sunrisepeak wants to merge 27 commits into
mainfrom
probe/llvm-2313-x86-msvc-coroutines

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Temporary probe for the LLVM 23.1.3 Part 3 plan (#781, #786). Based on the #781 head c6dca54e; every other workflow is removed so only the probe runs. Nothing asserts; logs are in the job summaries and artifacts.

  • G1: import std on i686-windows-msvc, C++23, llvm@23.1.3 — the reported failure and where it occurs; the same with llvm@22.1.8 via [target.i686-windows-msvc] and [target.x86-windows-msvc].
  • G2: the same target as C++20 (std, std.compat, and the coroutine library itself).
  • G3: x86_64-windows-msvc control.
  • MSVC STL facts: the guards of <coroutine> / <generator> and the std.ixx conditionals.

Do not merge. Closed after the release ships.

speak-agent and others added 27 commits October 8, 2026 04:12
23.1.3 is the first point release carrying the macOS 27 arm64e.x1 ld64.lld
fix (llvm-project#222721, backported to release/23.x as ee66426) — the
release #669 was blocked on. clang 23.1.0's MSVC STL std-module defect was
fixed in 23.1.1 (#640, llvm-project#218152).

The line move (single PR per SPEC-009 §10.6):
- kKnownTargets: the 17 llvm rows move 22.1.8 -> 23.1.3; the gcc rows stay.
- Host defaults: macOS and Windows-with-MSVC move to llvm@23.1.3, resolving
  the [toolchain] macos/windows deviations (SPEC-009 §12). Linux keeps
  gcc@16.1.0 by design — native glibc ABI — now recorded as a §4.1 reason
  at the single pin site, with the gcc@15.1.0-musl reason beside it.
- All four known-red legs (#669) become unconditional normal legs; the
  known-red floor assertion moves to zero. The xcode-27 legs went green on
  rerun and #669 is closed.
- Readers move with the tables: workflows, the macOS action, CI tools, e2e
  fixtures, tests/matrix/expected.tsv, examples, user docs (en/zh); SPEC-009
  v0.4 records the move.
- libc++ 23 adaptation the gate caught: _LIBCPP_BEGIN_NAMESPACE_STD opens
  under the ODR-signature abi_tag pragma, and clang refuses to add abi_tag
  on a redeclaration — e2e 133's verbose_abort override now spells the
  namespaces by hand.

The #782 repair: a held unserved-target diagnosis no longer skips the
toolchain install. A declared or --target toolchain resolves and installs
even when no payload here serves the target — a retargetable clang plus a
graph package supplying the target's system is the arrangement the openkal
rows exist for, and the skip fired before the graph release could run the
moment the suite stopped installing the pinned version out of band
(measured on the openkal macos leg, twice). When the install itself fails
and the diagnosis stands, it releases there. e2e 890 pins the contract on
the mac/windows legs.

The e2e toolchain-version abstraction: tests/e2e/_toolchain_env.sh is the
one place a test learns a toolchain version — override, newest installed,
fallback constant, per family — and the llvm family's ~90 literals across
38 scripts now read it. The next line move edits one file here. _llvm_env.sh
becomes an alias shim.

Closes #780. Closed #669 (xcode-27 legs green on rerun). Files #782 as the
remaining openkal macos regression this repair addresses.
Add the ARM64 first-run pin, native GNU host row and runtime paths; preserve explicit musl and existing user defaults. Add cold payload admission, complete xcode-27 shards, respect MCPP_HOME and capture Windows compiler failure evidence.

Prepare release 2026.10.8.1. Native ARM64 remains preview until the coordinated resources and client release pass the measured integration gates.

Refs: #784, #783
Exercise standard modules, exceptions, threads, 16-byte atomics, a C shared-library consumer and relocated self-contained deployment. Record managed loader/header resolution, require native openkal execution and preserve fresh-install Windows failure diagnostics.

Document the explicit compiler-and-target migration command and its publication prerequisites.

Refs: #784
Sunrisepeak added a commit that referenced this pull request Oct 8, 2026
… out

LLVM 23.1.3 Part 3, from the review of #781 and #786.

- clang 23 does not predefine __cpp_impl_coroutine for i686-pc-windows-msvc,
  so the MSVC STL's <coroutine> is empty: the C++23 std module stops inside
  <generator>, and code that uses coroutines stops at "use of undeclared
  identifier 'std'". mcpp follows the compiler and appends a note to either
  failure (mcpp.toolchain.msvc_coroutines): C++20 first, where import std and
  import std.compat build, and llvm@22.1.8 for that target as an option. The
  note is decided after the failure from the failed command and a -dM -E
  probe of the same compiler, on the std precompile, the ninja path and the
  fast path alike. Measured on probe PR #788.
- The graph C library note fires only when the C library is the graph's: the
  plan checks cAbi.fromGraph(), and the fast path reads .mcpp-graph-c-library
  beside build.ninja. A native build on a managed glibc carries -nostdlibinc
  too, which made the token alone a wrong answer.
- GCC without a usable subos takes -isysroot <C library payload>, replacing
  the sysroot recorded when the compiler was built.
- No host system header directory is searched on a managed C library; a
  project that needs one writes -idirafter /usr/include (e2e 891).
- aarch64-linux-gnu is preview until the released engine is consumed on a
  clean ARM64 host; README rows and the baremetal sample name LLVM 23.
- docs/20 (en/zh), SPEC-006 §3.8, SPEC-009 §6.4, CHANGELOG.

Refs: #786
Sunrisepeak added a commit that referenced this pull request Oct 8, 2026
…routine note and no host system headers (#781)

Moves the LLVM line to 23.1.3, makes native Linux aarch64 select LLVM 23.1.3
with the GNU target, and closes the review findings of Part 3.

LLVM line and defaults
- kKnownTargets' llvm rows, the macOS and Windows-with-MSVC first-run
  defaults and the self-hosting manifest move to llvm@23.1.3 (the first
  release with the macOS 27 arm64e.x1 linker fix). Linux x86_64 keeps
  gcc@16.1.0. Existing user declarations and the musl rows are unchanged.
- Native Linux aarch64 defaults to llvm@23.1.3 on the managed glibc;
  aarch64-linux-gnu is preview until the released engine is consumed on a
  clean ARM64 host. xlings is pinned to 2026.10.8.1.
- A declared toolchain for a graph-supplied target is installed even when no
  payload here serves the target; an engine-chosen one still releases the
  held diagnosis (#782).
- AArch64 std modules and programs share compiler-rt settings; a
  self-contained ELF that embeds libunwind.a links with --unwindlib=none.

Part 3
- clang 23 does not predefine __cpp_impl_coroutine for i686-pc-windows-msvc.
  mcpp follows the compiler and appends a note to the two failures that
  follow (the C++23 std module inside <generator>, and code that uses
  coroutines): C++20 first, llvm@22.1.8 for that target as an option. The std
  module case is decided from its command; the ninja and fast paths from the
  output. Measured on probe PR #788; e2e 892.
- No host system header directory is searched on a managed C library: clang
  carries -nostdlibinc, GCC without a usable subos takes -isysroot <C library
  payload>. A project that needs a host header writes -idirafter (e2e 891).
- The graph C library note fires only when the C library is the graph's, on
  the plan path and the fast path (.mcpp-graph-c-library).

Tests and documents
- tests/e2e/_toolchain_env.sh is the one place an e2e learns a toolchain
  version; the four-host target matrix (244 rows) is declared; ARM64 native
  admission, openkal cross and hosted-thread checks run in CI.
- docs/20 and docs/21 (en/zh), READMEs, SPEC-006 v0.7 (§3.8), SPEC-009 v0.6
  (§6.4), CHANGELOG.

Closes #780
Closes #783
Refs: #784, #786
@Sunrisepeak

Copy link
Copy Markdown
Member Author

Probe finished. Its measurements (runs 37791590252 and 37792334189) set the 32-bit MSVC coroutine note shipped in 2026.10.8.1 (#781): C++20 import std/import std.compat build on i686-windows-msvc with clang 23.1.3, llvm@22.1.8 builds the C++23 std module there, and the MSVC STL's <generator> is the only std header that needs coroutines.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants