Skip to content

Commit 10fa191

Browse files
speak-agentclaude
andcommitted
the execution record: what the measurement settled, and the three defects found on the way
Co-authored-by: Claude Code <noreply@anthropic.com>
1 parent 68bb737 commit 10fa191

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

‎.agents/docs/2026-09-20-ecosystem-execution-plan.md‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)