feat: 0.0.97 架构级修复批次 — scanner/flag/build-graph/cfg/nasm/workspace(#224-#235 + R6)#236
Merged
Conversation
…ubagent-driven) + progress tracker
…dirs; reuse resolved cache in `mcpp run` (#225)
…e per-package funnel (path/git deps + test mode) (#229)
…_xpkg_path gate (index refresh + hard error); stop swallowing config bootstrap errors (#232)
…pace index redirect + `mcpp run -p <member>` (#224, R6)
… $ORIGIN C3's shell_quote_arg (#234, for compile-time defines-with-spaces) was applied to per-unit LINK flags too, double-quoting the already-escaped rpath token `-Wl,-rpath,'$$ORIGIN'` → literal `'$ORIGIN'` in RUNPATH → dependency .so's next to the exe couldn't be resolved (e2e 55/56/57/64 regressed vs 0.0.96). join_flags gains shellQuote (default true for user compile flags); the link-flag join passes false. Regression test locks it.
Generalizes d3ad223: C3's shell_quote_arg (#234) was applied to ALL per-unit flags, breaking two kinds of element that legitimately contain a token-boundary space — raw descriptor flags (compat.lua `-include mcpp_lua_platform_config.h` → gcc saw one malformed arg → aarch64/macos/windows cross-build FAILED) and mcpp-generated pre-escaped link flags (rpath `$ORIGIN`). join_flags now quotes ONLY `-D`/`/D` define tokens whose value holds a space (the sole producer of an intra-value space); everything else is verbatim = 0.0.96 tokenization. +regression test RawMultiTokenFlagIsNotQuoted; LinkFlagsAreNotReQuoted + QuotesFlagValueWithSpace still green.
test_ninja_backend asserted Linux/POSIX-shaped output that fails on the windows self-host runner (unrelated to product behavior, which is correct per-platform): (1) CxxModule...Depfile asserts the POSIX-only filtered gcc depfile → skip on Windows (MSVC uses deps=msvc); (2) MsvcIncludeDirs... breaks on the runner's C:\ temp path whose ':' is ninja-escaped → run the (host- independent) MSVC-dialect check on POSIX; (3) QuotesFlagValueWithSpace expects single-quote but shell_quote_arg uses double-quote on Windows → assert the platform-appropriate spelling. Product unchanged.
The awk filter strips GCC -fmodules' reversed make-rules; Clang's module (.pcm) depfile shape differs and applying the GCC-shaped filter there is untested. macOS CI (Clang) failed e2e 118 because the purview-rebuild depfile didn't behave. Gate posixDepfile to CompilerId::GCC — Clang/MSVC keep the pre-#235 behavior (no compile-edge depfile; header/purview rebuild tracking on Clang is a follow-up, same as 0.0.96 → not a regression). e2e 118 now declares `# requires: gcc` so it skips where GCC isn't the toolchain (macOS has no gcc capability per run_all.sh). Linux GCC: depfile active, 117/118 green.
This was referenced Jul 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
0.0.97 架构级修复批次(单 PR / 逐簇 commit)
ffmpeg-m/opencv-m 全源码直编在 0.0.95/0.0.96 上暴露的第二层缺口,加 index 仓测试模块包所需的默认命名空间语法空洞。全部以根因收敛点的架构级修复完成(非 workaround),按"每一类问题一个 commit 修复节点"组织。设计与实施计划见
.agents/docs/2026-07-18-*。逐簇 commit
perf(scanner).git/target/子模块;mcpp run复用解析缓存(不再每次重扫大子模块,此前 ~9.5s)feat(manifest)[[build.flags]]数组表 + glob{a,b}花括号;清单层 closed-grammar 守卫([[x]]typo 硬报错不静默丢数据)fix(flags)-I/-iquote/-isystem/-idirafter/-iprefix/-L)按项目根重写 + 含空格值 shell 引号;顺修 MSVCinclude_dirs绝对化fix(build)-fmodules反向规则)根治 purview/普通头 stalefix(build)fix(nasm)resolve_xpkg_path(autoInstall)同步供给门;config 错误不再被吞feat(workspace)[indices] default={path}默认命名空间重定向(url 形式 loud 拒绝)+mcpp run -p <member>chore(release)实施方式
验证
mcpp build+mcpp test(35/35 单测二进制)全绿。run_all.sh回归通过(除本沙箱环境性失败:缺 gcc symlink 的 54/62 在未改基线上同样失败)。Closes #224 #225 #226 #227 #228 #229 #232 #233 #234 #235