Repository navigation
Description
本 issue 交接生态设计第 4 部分(openkal 0.23 一轮)的剩余工作。设计与实现记录见:
.agents/docs/2026-10-29-ecosystem-target-sets-packaging-and-editors-design.md(第 1 部分).agents/docs/2026-10-30-ecosystem-part2-ide-and-language-service-design.md(第 2 部分).agents/docs/2026-11-02-ecosystem-part3-ok-image-performance-parity-design.md(第 3 部分).agents/docs/2026-11-03-ecosystem-part4-beyond-native-design.md(第 4 部分;§18 为实现记录,§18.7 为交付表)
1. 现状
1.1 已发布(GitHub release 与 GitCode mcpp-res 镜像的 sha256 一致,均已入 mcpp-index)
| 包 | 版本 | 要点 |
|---|---|---|
| openkal | 0.23.0 | 规范 0.23:放置、封存、私有与预取映射、衰减授予与隔离、故障报告、采样与触页、资源偏好 |
| openkal-linux / -windows / -emscripten | 0.24.0 / 0.19.0 / 0.12.0 | 0.23 的实现 |
| openkal-macos | 0.21.1、0.21.2、0.21.3 | 睡眠不再自旋(ulock_wait EFAULT);粒度取 mach_timebase_info;初始化前从加载器记录作答(hosted 程序得到被授予的目录) |
| openkal-musl | 0.27.0、0.27.1 | 列表缓存、描述符表、okm_preopen_attenuate、Windows 卷名折叠;0.27.1 跟随 macOS 0.21.3(mcpp-index#686 已合入) |
| openkal-llvm-runtime | 0.18.0、0.18.1 | 0.18.1:outline atomics 在分支保护下可汇编 |
| openkal-ld / run / tools / bind | 0.4.0、0.4.1、0.4.2 | 0.4.2 在 macOS 0.21.3 上构建运行器(mcpp-index#685 已合入) |
| openkal-platform | 0.23.0 | 标签位于 PR 头 b2c5a18(自举顺序,见 §3);被 0.23.1 取代 |
1.2 未完成的分支与 PR(本地提交均已推送)
| 仓库 | 分支 / PR | 头提交 | 内容 | 状态 |
|---|---|---|---|---|
| mcpplibs/openkal-llvm-runtime | 分支 0.18.2(未开 PR) |
3da3f6b1 |
0.18.2:固定 openkal-musl 0.27.1 | 待开 PR;musl 0.27.1 已在索引中 |
| mcpplibs/openkal-platform | #15(openkal-0.23) |
8b16538 |
0.23.1:macos 0.21.3、musl 0.27.1、llvm-runtime 0.18.2、image 0.4.2 | CI 需 llvm-runtime 0.18.2、os 0.2.8 入索引 |
| mcpplibs/os | #15(openkal-0.23) |
e7c038b |
0.2.8:固定 openkal-macos 0.21.3、openkal-platform 0.23.1 | CI 需 platform 0.23.1 入索引 |
| mcpp-community/mcpp | #884(release/2026.11.2.3) |
20da2d05 |
2026.11.2.3:std 模块带平台编译选项、mcpp cache gc 回收运行器缓存、okb 压缩、内置平台 0.23.1、launcher 用 os 0.2.8 |
e2e 955/964/994/995 与 mingw 需 platform 0.23.1、os 0.2.8 入索引后重跑 |
| Sunrisepeak/mcppls-clangd | #16(mcppls-clangd-0.0.20) |
5335ef5 |
openkal 0002(锁文件)、0003(B:缺失名字记录)、触页 note、平台 0.23.1 | 需 mcpp 2026.11.2.3 发布 |
| Sunrisepeak/mcpp-language-server | #75(mcppls-0.0.20) |
c3afdc1 |
mcppls.resources、mcppls.grants、mcppls.engine.confine、故障报告、平台 0.23.1 |
工作区 mcpp.lock 含本地 os 路径,未提交;os 0.2.8 入索引后重新生成 |
| mcpp-community/mcpp-ide | #3(release/0.2.0,草稿) |
6da6654 |
平台 0.23.1、os 0.2.8、mcpp ≥ 2026.11.2.3 | 需 mcpp 2026.11.2.3 发布 |
临时设置:mcpplibs/openkal-platform 与 mcpplibs/os 的仓库变量 MCPP_SOURCE_REF=release/2026.11.2.3,使其 CI 用候选 mcpp。mcpp 发布后删除。
2. 任务依赖链
graph TD
A[mcpp-index#686 musl 0.27.1 ✅] --> B[T1 llvm-runtime 0.18.2: PR、CI、发布、索引]
B --> C[T2 platform 0.23.1: 在 PR#15 头打标签并发布、镜像、索引]
C --> D[T3 os 0.2.8: PR#15 CI、发布、索引]
C --> I[T8 openkal-image release-binaries 0.4.2 / 0.23.1]
D --> E[T4 platform PR#15 重跑 CI、合入、强推 openkal-0.23]
D --> F[T5 mcpp #884 重跑 CI、自审、合入、发布]
E --> F
F --> G1[T6a 删除 MCPP_SOURCE_REF、重跑两仓库 main CI]
F --> G2[T6b mcpp-index 跟进: MCPP_VERSION 与 platform 测试成员]
F --> H1[T7a mcppls-clangd #16: CI、发布 0.0.20]
H1 --> H2[T7b mcppls #75: 引擎候选、lock、CI、发布 0.0.20]
F --> H3[T7c mcpp-ide #3: CI、发布 0.2.0]
I --> J[T9 xim-pkgindex: okrun/okld 0.4.2、okprof]
H2 --> K[T10 收尾: 实测数字、openkal 多角度审查、生态全局审查、xlings 洁净室验证、清理]
H3 --> K
J --> K
G1 --> K
G2 --> K
T1 openkal-llvm-runtime 0.18.2
分支 0.18.2 已推送。开 PR(标题 0.18.2 --- over openkal-musl 0.27.1),CI 通过后合入、发布、GitCode 镜像、索引 PR(pkgs/o/openkal-llvm-runtime.lua,测试成员 tests/examples/openkal 中的 openkal-llvm-runtime 移到 0.18.2,CHANGELOG ### Added 一条),之后把 main 强推到 refs/heads/openkal-0.23。
T2 openkal-platform 0.23.1(自举)
mcpp 以自身内置的平台版本构建 openkal 目标集的 Windows launcher,平台 CI 的 pack 步骤因此只能在平台与 os 都入索引后通过。顺序:在 PR #15 头(8b16538)打 0.23.1 标签并发布,GitCode 镜像,索引 PR 以 admin 合入(候选检查被 mcpp >= 2026.11.2.3 门槛拒绝,属预期)。PR 描述把 0.23.0 标为被取代、补 0.23.1 一组。
T3 os 0.2.8
平台 0.23.1 入索引(并过 CDN 延迟约 5 分钟)后重跑 PR #15 CI。重点核对 hosted macOS 的 process_test:被授予只读目录的子进程不能在其中创建文件(0.21.3 修正的缺陷)。通过后发布 0.2.8、镜像、索引。
T4 platform PR #15 合入
os 0.2.8 入索引后重跑 CI;全部通过后合入(标签仍在 PR 头,内容与合入提交相同),main 强推到 openkal-0.23。
T5 mcpp 2026.11.2.3(#884)
平台与 os 入索引后重跑失败的 e2e 与 mingw。之后全量自审(diff、文件清单、作者),squash 合入,取消 main CI,触发 release.yml,gtc 补 GitCode 资源,xim-pkgindex 的 bump PR(机器人 PR 不触发 CI:重开或空提交;合入后删除机器人分支),确认 CDN,重跑 main CI。
T6 mcpp 发布之后
- a. 删除两个仓库变量
MCPP_SOURCE_REF,重跑 openkal-platform 与 os 的 main CI。 - b. mcpp-index:
.github/workflows/xpkgindex-update.yml、openkal-compat.yml、tests/openkal/pins.toml的MCPP_VERSION改为 2026.11.2.3;openkal-platform测试成员改为 0.23.1。
T7 消费者
- a. mcppls-clangd docs(changelog): fold partition fix + lib-root into 0.0.2 entry #16:openkal.yml 在四个平台运行缺失名字验收(
ci/module_inputs_canary.py --absent-names-only)与 warm-prime;台账状态更新;发布 0.0.20。 - b. mcppls chore: fail-fast CI hangs + refresh README header #75:更新
packaging/engine-candidate.json与载荷 lock;以索引中的 os 0.2.8 重新生成mcpp.lock;CI;发布 0.0.20(GitCodexlings-res/mcppls)。 - c. mcpp-ide refactor(pm): extract DependencySpec into pm/dep_spec.cppm (PR-R1) #3:转为正式 PR,CI,发布 0.2.0(GitCode 镜像)。
T8–T9 运行器二进制
openkal-image 的 release-binaries 以 -f tag=0.4.2 -f platform=0.23.1 触发;压缩包镜像到 GitCode xlings-res/okrun、okld、okprof;xim-pkgindex 增加 okrun/okld 0.4.2 条目与新的 okprof.lua(以 okld.lua 为模板)。
T10 收尾
- 第 4 部分设计文档写入最终实测数字。
- openkal 多角度审查(规范一致性、拒绝路径、安全、并发、跨平台)。已查:Linux 的 Landlock 隔离失败即启动失败,不降级;macOS 沙箱规则中取不到路径的授予被略去(偏严)。待评估一项:macOS 规则缓冲区为 16 KiB,16 个长路径授予可能超出,此时启动以
kal_err_invalid被拒绝,错误码不贴切。Windows 按设计 §18.3 不声明KAL_PROCESS_PROP_CONFINE。 - 生态全局审查;xlings 洁净室真实验证(中立 cwd、
XDG_*指向洁净室、不用 shim);清理本轮的临时文件。
3. 约定与已知事实
- 提交与合入:作者 Sunrisepeak,带
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>;gh pr merge --admin --squash --subject "<标题> (#N)";openkal 家族合入后把 main 强推到openkal-<v>。 - 精确固定的级联:实现 → musl → llvm-runtime;image(ld/run/tools/bind 同版本);platform 的
[platform.versions];os;mcpp 的内置平台版本。 - 索引:Publish Index Artifact 之后约 5 分钟 CDN 延迟,期间依赖新条目的 CI 失败,重跑即可。macOS 作业若未分配到运行机,正好 15 分钟失败,重跑。
- 授予至多 16 个;mcppls 把只读授予合并到公共祖先目录。
- clang 23 的
-mbranch-protection=standard含 GCS,ok 映像用pac-ret+bti。 - 平台
[platform.build]的 cxxflags 必须进入 std 模块(clang 在 BMI 中记录-fcf-protection),故平台 0.23 要求 mcpp ≥ 2026.11.2.3。
Activity
openkal-platform 0.23.1 fixes the hosted macOS version group (#688)
openkal-platform 0.23.3 selects the corrected confinement graph (#697)
fix: preserve Windows worker paths and continuous shared leases
fix: preserve Windows paths in module reuse checks
fix: use cached plan grants on the first image launch
test: identify Zed payload processes by executable and image
fix: wait for the first plan before starting a confined engine
perf: inline checked BMI bitstream reads and run their native controls
ci: qualify the checked bitstream engine candidate
perf: reuse completed input audits and normalized source classification
perf: optimize image LLVM archives with bounded ThinLTO
Sunrisepeak commentedon Nov 5, 2026
实施计划补充(2026-11-05):按真实依赖并行推进,分别完成核心、插件和编辑器交付。
本计划承接 #885 原任务及异构构建补充方案。核心继续负责通用图、作用域、目标契约、身份和调度;计算模型、设备值域、SDK 流程及 CMake 表示归插件;系统资源监督归 openkal;后端定位与界面生命周期归编辑器适配器。每个仓库尽量复用一个 PR,文档与最终实现同步。
一、当前基线与交付出口
e530c80b;CI 42039719740 已结束:72 成功、2 失败、1 跳过79f7ba6,尚未推送;52 项逻辑测试、实际 GCC/Clang/COFF 控制、公开 11.5.1 上十步生成器/系统切换回归通过9f8b486的 CI 42021317951 25 项成功;两个稳定 CLion 实际检查分别为 32、31 项a139538的正式资格仍失败:Linux x64 冷 CPU 为 15.22/12.71=1.197,要求 ≤1.15;四宿主共 32 个语义会话通过b70ddaee的 CI 42021324231 为 37 成功、1 失败、15 跳过;当前服务端在两个稳定 CLion 上各通过 30 项实际检查二、实施依赖
插件的局部验证不等待核心发布;只有外部子工程独立可执行链接的最终集成需要 11.5.2。IDE 当前验证固定公开 mcppls 0.0.19,不依赖引擎 0.0.20。服务器的原生构建、请求生命周期及当前服务端编辑器回归继续并行,最终载荷发布仍依赖合格引擎。
三、立即并行的四组工作
P0:核心正确性与发布收尾,复用 #889。
退出条件: 2026.11.5.2 可从公开渠道普通安装,最终源码/资产身份一致,发布后的验证记录完整。
P1:插件局部修正先提交,最终集成随后完成,复用 #52。
79f7ba6,以已公开 2026.11.5.1 运行适用 CI。当前范围包括参数保真、CMake compiler-ID 的实际目标、生成器/系统缓存隔离、切换后返回及无变化不重编。退出条件: 最终提交通过适用矩阵,并使用公开核心完成真实消费者验证。多架构 SDK archive、GPU 执行及新增厂商支持继续单列,不能据此宣称全部 HPC 场景完成,也不将其自动设为本轮已确认修复的前置。
P2:IDE 独立完成功能验收和补丁发布,复用 #4。
退出条件: 既定功能矩阵各项有实际操作、可见结果及适用的负向/恢复证据;目标宿主和版本的缺口明确关闭或如实列为发布限制。静态 Verifier 与运行时测试分别记录。
P3:先完成性能因果实验,再整合版本链,复用引擎 #16。
退出条件: 根因和采用修正具有可复现证据,最终精确产物通过原正式门槛;其后才发布引擎、更新资格台账。当前 1.197 的失败仍然有效。
四、依赖满足后的服务器与全局收尾
进度记录方式: 每次更新分别列出“实现提交 / 局部验证 / 最终 CI / 公开发布”,并附精确提交、run、失败归因和下一验收条件。近期优先形成插件独立 CI、核心两个失败的因果结论,以及 IDE 功能矩阵的实际关闭项;引擎性能保持独立调查。以上全部出口完成前,#885 保持打开。
2026-11-06 更新:性能后续调查单独跟踪,本轮优先闭环发布。
用户已批准本次发布例外。该决定替代上文 P3 中“必须先完成全部性能根因闭环、达到原 1.15 门槛才能发布”的前置要求;此前实验、失败和未完成项保留,不追溯改写为通过。
详细数据与后续优化统一记录在 mcppls #77:覆盖 server/engine OKE、OKB、四种原生/image 组合、四宿主冷/热数据、计量修复、已验证原因、无收益候选及其边界。新的可选性能实验不再阻塞本轮发布。
本次例外仅适用于 mcppls-clangd 0.0.20 的 Linux x64 冷启动就绪 CPU,且两个条件同时成立:image/native ≤1.25,额外 ≤3.0 CPU 秒。继续使用原 304 单元、三探针、一冷三热负载与修复后的测量版本 3。报告分别保留原目标结果和本次发布准入结果,记录 Issue、版本、源码与实际产物 SHA256;不得整体提高通用
--limit。下一引擎版本自动恢复 1.15。冷/热就绪时间、热 CPU、其他受约束宿主的 CPU、完整生命周期缺页、所有语义和资源/取消/崩溃检查、最终服务端与编辑器 UX 均不放宽。任一上限越界或测量无效仍拒绝发布。Windows 的冷启动时间代价单独披露;CLion SDK 运行时问题不属于该 CPU 例外。
推进顺序调整为:已验证修正的一致公开版本组 → 一次最终 engine 生产构建及全部资格 → mcppls 候选载荷联合检查 → engine 发布并核验实际下载字节 → mcppls 更新锁定并以发布字节验收 → 生态发布、镜像、索引和普通安装。核心、插件、IDE 的独立任务继续并行,不等待额外性能研究。
当前新增落地:计量修复和范围受限的例外已本地实现,23 项计量/判定测试与 6 项既有 release gate 控制通过;engine 和 server 的 changelog、发布文档已补充并完成成文复核。最终生产者 CI 和发布字节资格仍待完成,不能据此称整个发行已通过。性能 Issue 在使用例外发布后仍保持打开。
mcppls-clangd 0.0.20: portable owned module workers and recorded abse…
0.0.20: one package for every system, the semantic kit of a project's…
docs: record the #885 closeout review, measurements and design