Skip to content

交接:生态第 4 部分(openkal 0.23 一轮)剩余任务与依赖链 #885

Open

Description

@Sunrisepeak

本 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
Loading

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 消费者

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。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions