@@ -62,3 +62,64 @@ C openkal-musl(absent + requires)─────┘
6262- P3(撤 ` __CYGWIN__ ` ):需要 E1 的重测数据才能判断代价,本轮只记录证据,不落地。
6363- P4(合成节点层):openkal-musl 的移植工作量独立,另轮。
6464- P6(openkal-win-ucrt):需要 c++-abi 侧配套,另轮。
65+
66+ ---
67+
68+ ## 4. 执行记录(2026-09-20)
69+
70+ ### 4.1 E1 测量:声明第一次生效
71+
72+ ` tests/openkal/pins.toml ` 的 ` runtime ` 从 0.10.0 抬到 0.12.0,重测 30 个成员
73+ (mcpp-index run ` 35503820978 ` ,mcpp 2026.9.18.3,llvm@22.1.8)。
74+
75+ | target | 之前 | 之后 |
76+ | --- | --- | --- |
77+ | ` x86_64-linux-gnu ` | 27 runs / 3 fails | 27 runs / 3 fails |
78+ | ` x86_64-windows-gnu ` | 15 runs / 15 fails | ** 23 runs / 7 fails** |
79+
80+ ** 八个成员零适配转绿** : asio (经 cmp-module)、catch2、cli11、eigen、fmtlib.fmt、
81+ libpng、re2、lua(经 capi-lua)。全部是按 ` _WIN32 ` / ` __MINGW32__ ` 选分支的那一类。
82+
83+ ** 剩余七个分三组** ,与评审文档的预测逐条对上:
84+
85+ | member | 诊断 | 预测 | 结果 |
86+ | --- | --- | --- | --- |
87+ | mimalloc | ` atomic.h:16 'windows.h' ` | ` __CYGWIN__ ` 挡住 | 确认 |
88+ | sqlite3 | ` sqlite3.c:29506 'windows.h' ` | ` __CYGWIN__ ` 挡住 | 确认 |
89+ | archive(xz) | ` tuklib_physmem.c:21 'windows.h' ` | 本来就要 configure | 确认 |
90+ | c-ares | ` ares_setup.h:81 'windows.h' ` | 同上 | 确认 |
91+ | curl | ` "too small curl_off_t" ` | 同上 | 确认 |
92+ | doctest | ` undefined symbol: __cxa_thread_atexit ` | ** 未预测** | 新发现 |
93+ | spdlog | 同上 | ** 未预测** | 新发现 |
94+
95+ ### 4.2 本轮新发现
96+
97+ 1 . ** ` __CYGWIN__ ` 的 trade-off 已可结算。** mimalloc 的守卫注释写着
98+ "we use windows locks on cygwin, but otherwise treat it at unix",sqlite3 的
99+ ` SQLITE_OS_WIN ` 检测列表含 ` __CYGWIN__ ` 。** 上游用这个名字回答的是"Win32 可用",
100+ 不是"对象格式是 PE"。** 这是 P3 的直接判据,可在下一轮落地。
101+
102+ 2 . ** ` __cxa_thread_atexit ` 缺口。** doctest 与 spdlog 此前停在缺头文件,现在编译
103+ 过去、停在链接。这是 openkal 之上 C++ 运行时的缺口(libc++abi 用来登记
104+ ` thread_local ` 析构的钩子),在环境正确之前到不了。属 openkal-llvm-runtime /
105+ openkal-musl,另轮。
106+
107+ 3 . ** clang 20.1.7 在 Windows 上对三种写法都崩。** ` [c-abi.absent] ` 的解析块写成
108+ ` parse_string ` 内的语句块、写成模块导出 purview 里返回
109+ ` expected<vector<struct-with-strings>, string> ` 的自由函数、以及用成员指针作
110+ sort 投影,在 Windows 上各崩一次,其他宿主全过。最终形态是匿名命名空间里的内部
111+ helper + 出参 + ` optional<string> ` + 比较器。
112+
113+ 4 . ** 两个新键的向后兼容性不同,且这条差别要写进文档。** ` [kernel-abi] ` 是未知
114+ ** 顶层表** ,旧引擎忽略(实测 2026.9.17.1 静默接受);` [c-abi.absent] ` 是已知表里的
115+ 新键,旧引擎拒绝整份清单。因此前者不需要抬 floor,后者需要。
116+
117+ ### 4.3 PR
118+
119+ | 仓库 | PR | 内容 |
120+ | --- | --- | --- |
121+ | mcpp | #678 | 探针带目标、撤 hostStripMacros、` [kernel-abi] ` 、` [c-abi.absent] ` 、冻结 ` presents ` |
122+ | openkal | #42 | ` check-surface.sh --interfaces/--toml ` ,接口集由产物派生 |
123+ | openkal-musl | #39 | 0.17.0 ` [c-abi.absent] ` + CI 断言 |
124+ | openkal-linux | #29 | 0.15.0 ` provides-interfaces ` ,CI 重新生成并 diff |
125+ | mcpp-index | #444 | 抬 pins、重测、` refused ` |
0 commit comments