Skip to content

feat: std.compat module support + cxx_scan restat + E2E#38

Merged
Sunrisepeak merged 1 commit into
mainfrom
feat/stdcompat-restat-e2e
May 15, 2026
Merged

feat: std.compat module support + cxx_scan restat + E2E#38
Sunrisepeak merged 1 commit into
mainfrom
feat/stdcompat-restat-e2e

Conversation

@Sunrisepeak
Copy link
Copy Markdown
Member

Summary

Three remaining items in one PR:

  • std.compat module support (Clang): Discover, precompile, stage, and link std.compat.cppm for Clang/libc++. GCC's bits/std.cc implicitly covers std.compat, no GCC changes needed.
  • cxx_scan restat (P2): Re-implement backup-compare-restore on scan rule. Previous CI failure was a cache-restore fluke (confirmed by PR feat: fast-path fingerprint coherence, diagnostic warning, cxx_scan restat #35 second run succeeding without code changes). Preserves .ddi mtime when content unchanged → prevents downstream cascade.
  • E2E test: 41_llvm_std_compat.shimport std.compat with Clang, verifies printf works via compat layer.

Test plan

  • mcpp build + mcpp test — 12/12 pass
  • 41_llvm_std_compat.sh — OK
  • 38_llvm_modules.sh — OK (no regression)
  • CI passes

std.compat: Clang's libc++ ships std.compat.cppm alongside std.cppm.
Add discovery, precompilation, staging, and -fmodule-file flag for
std.compat. GCC's bits/std.cc implicitly covers std.compat so no
GCC changes needed.

cxx_scan restat: re-implement backup-compare-restore pattern on scan
rule. Previous CI failure was proven to be a cache-restore fluke.
When .ddi content is unchanged, old file is restored (preserving
mtime) + restat = 1 prevents downstream cascade.

E2E: add 41_llvm_std_compat.sh testing import std.compat with Clang.
@Sunrisepeak Sunrisepeak force-pushed the feat/stdcompat-restat-e2e branch from f9e5a62 to c7c1c3e Compare May 15, 2026 16:28
@Sunrisepeak Sunrisepeak merged commit 91d5336 into main May 15, 2026
1 check passed
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.

1 participant