最后核对:2026-10-07(S9 修复批进度回灌:脱钩工序①~④收官〔native/ 删区〕后的修复批批一~批五 20/22 销案 + #27 图标语义化 + #49 统一入口批——当前状态表全面对单轨真值;前一沿革 2026-10-04 全库逐份翻新第三轮:S8 收官 + 0.8.0 发版件 + CLI 出口总账对齐 + 10 份过程记录归档;再前 2026-09-29 S7 批一~五全落 + 0.7.0 发版件就绪对齐)
核心原则:不急着发布,不把时间浪费在"能用"上;每一分投入都指向教学场景真正需要、而通用工具链不提供的能力。 当前定位:教学 C 子集参考执行引擎(白箱后端,MIT;迁移 v1 = C only,C++ 已裁砍冻结于 oracle)。前端已切割给社区,原生移动端放弃。 当前工作:MoonBit 迁移(同仓绞杀者模式)——Rust 版冻结为差分对照 oracle,
moonbit/活跃区承载全部新开发;排期权威 = MoonBit迁移总计划.md §10 S 系列。
一、当前状态(2026-10-07)
| 维度 | 状态 |
|---|---|
| 引擎核心 | MoonBit 单轨(vitro/engine,2026-10-05 S9 工序④起唯一实现):原 Rust workspace(10 子 crate)已随删区物理退役——档案 = tag rust-oracle-freeze + 分支 frozen-oracle-snapshot + git 历史(取回方法见总计划 §11) |
| MoonBit 迁移 | 🚧 进行中(S0.5–S8 已收官,S9 修复批推进中):S2 lexer / S3 parser / S4 typeck / S5 codegen+bytecode / S6 memory+host+vm / **S8 时间旅行与教学智能四域(time_travel/teaching/steps/diagnostics,验收三件 2026-10-04 销案——见S8 总览)**全部收官;S7 协议/会话/出口批一~五全落;0.7.0 已发布(2026-09-30);0.8.0 已发布(2026-10-05,tag vitro-engine-0.8.0,线上验收三件全绿——发布档案);当前阶段 = S9 修复批(脱钩工序①~④已全部完成——native/ 删区、golden 固化、裁定十项全裁;修复面 22 条已销 20,剩 #10/#20;#47 母跟踪收尾中);moon test 685 用例全绿(facts moonbit_test_passed,裸 moon test 口径) |
| 出口 1 · C ABI | ⛔ 已随删区退役(2026-10-05;第一批 13 入口为冻结区存量)——「不提供 C ABI」方向不变(U2 拍板,下游改道 wasm/serve,见 wasm多实例并发模型与U2拍板) |
| 出口 2 · wasm | ✅ wasm-gc 单出口在役(主出口):gateway library + foreign_library 薄壳 + Node 宿主(零功能性 imports,仅 js-string ×6);#49 批一~三后统一入口 launcher 默认消费 wasm 臂 |
| 出口 3 · serve/CLI | ✅ MoonBit 单侧在役:cmd/serve(S7 批三号)+ vitro 总入口(run/compile/step/api 四子命令,#37 三批冻结)+ 统一入口 launcher(#49:scripts/bin/vitro,默认 wasm 臂自动降级 native,双臂同形 CI 闸锁定)+ icons.get/memory.dump 等新方法(协议契约 spec/CLI_PROTOCOL_V1.md,见 CLI使用手册)——Rust vitro_cli serve 已随删区退役 |
| 协议 | ✅ StepPayload schema v0.1 已冻结(签字回放 61/61;TS 类型生成链 @vitro/protocol 在役,gen_protocol_ts 权威源 = MoonBit)+ CLI 输出协议 v1 已冻结(2026-10-04,#37 随批);#27 图标语义化(2026-10-07):error_catalog.icon 语义 id + icons.get 资产通道,protocol_frames 基线 47 帧(48 序列 − capabilities 结构豁免;oracle 臂退役后单臂 vs 冻结基线) |
| 测试防线 | ✅ 单轨全防线(Rust 侧三防线已随删区退役):clang_direct 直拍门禁 732 语料全量(吸收原 shadow 685——语料域差量 0,known 白名单 digest 锁定)+ e2e 627 用例〔baseline 390 / knr 81 / leetcode 138 / gap 18,facts c_e2e_*〕+ MoonBit moon test 728 用例(facts moonbit_test_passed,裸 moon test 口径)+ 全部闸门绿(闸清单以 ci.yml 为权威,闸随批增长不锚闸数) |
| C 子集 | ✅ 教学子集 + C99/C11 扩展(VLA / _Generic / 复合字面量 / 变参 / VFS 文件 I/O 等)——S9 修复批后与 Clang 对拍面持续收敛(已知活缺陷清零,见已知限制与差异) |
| C++ 子集 | ⛔ 已裁砍(2026-09-20):MoonBit 侧零迁移;语义参考随删区转档案态(tag rust-oracle-freeze,规范已归档,见文档地图) |
| 统一模式 | ✅ MoonBit 单侧全链路(time_travel 帧语义与检查点体系 + teaching 43 族 311 条 golden 对拍全绿 + diagnostics 教学七元组;demo 前端已接入,见S8 总览) |
| 前端 | ⛔ 已迁出(标签 before-frontend-split);demo 单页(社区演示前端)在库:TS 全量重写 + S8 时间旅行/调用树/数组动画 + 本地文件夹工作区(File System Access API,2026-10-05)+ 图标语义化渲染(2026-10-07) |
二、已完成里程碑
引擎与语言(Stage 0~8)
| 阶段 | 内容 | 状态 |
|---|---|---|
| Stage 0 | 基础编译器(Lexer → Parser → AST → TypeChecker) | ✅ |
| Stage 1 | 自研 VitroVM(字节码定义 + 解释器 + C API 接线 + 安全加固) | ✅ |
| Stage 2 | 运行时中文诊断(符号表导出 / 越界 / 除零 / 空指针 / 死循环分析) | ✅ |
| Stage 3 | 指令级单步 + 内存视图 + 指针追踪 | ✅ |
| Stage 4 | 零侵入可视化(算法识别骨架 + VM 运行时教学事件 + 运行时验证) | ✅ |
| Stage 5 | 诊断与修复系统(三级信息架构 + 结构化自动修复 + 知识卡片) | ✅ |
| Stage 6 | ⛔ | |
| Stage 7 | C 子集拓展(float/位运算/三目/指针算术/const/NULL/函数指针等) |
✅ |
| Stage 8 | 统一模式 / 时间旅行(快照 + 检查点 + Seek + 自动执行 + 异常回退) | ✅ |
工程化(Phase 0~42,逐项记录见 AGENTS.md 与 CHANGELOG.md)
- Phase 18~26:地毯式审阅(P0 soundness 修复、VM 优化、clippy 0 警告)、UAF/Double-Free 检测、认知推理 P0~P3(轨迹根因 / 误区模式 / 知识图谱 / 意图推断)、语义补全 v2、模板 JIT
- Phase 27~30:数据结构语法拓展(数组退化 /
unsigned/const/extern/ VLA)、CLI 工具、Bytecode Libc 产品化、语法拓展(逗号运算符 / Designated Initializer /offsetof) - Phase 31~42:C++ 教学子集(类/继承/模板单态化 → RAII →
new[]·delete[]→ 引用 → 隐式移动构造 →unique_ptr→ 内置容器收口与布局解耦 → M6 测试防线 → Phase 42〔随砍 C++ 裁定冻结于 oracle,2026-09-20〕) - 2026-09-06:全面代码审阅(137 条发现)+ 四批修复;Shadow 与 CI 门禁"带牙齿"
- 2026-09-11:前端切割(仓库转型纯后端);capi 第一批;
vitro_cli serve;StepPayload schema v0.1;堆内存 bump + 有界隔离决议;Shadow 提速(103.6s → 1.1s 缓存命中)与 stdin 注入 - 2026-09-18:MoonBit 迁移总计划定稿(四道证伪门全关 + 包切分 L0–L9 + S 系列里程碑);同日起实际排期权威从 U 系列让位于总计划 S 系列
- 2026-09-19:S0.5 Rust 止血批 + S1 基础片 + S2 lexer 收官(
vitro/engine首发 mooncakes);S3 parser 收官 - 2026-09-20:S4 typeck 收官(598 语料 E1–E4 全绿);砍 C++ 裁定落档(总计划 F-2 + C# 计划 v4)
- 2026-09-21:S5 codegen 收尾(A 级对拍 598/598 全闭环)+ 0.4.0 发布;架构审阅报告 v1/v2 入库
- 2026-09-22:性能探究实录四轮(时间旅行累赘实锤 + wasm 生成器路线裁定);@vitro/protocol TS 类型生成链;四个跨语言一致性闸门
- 2026-09-23:0.5.0 发布(parser 随架);S6 memory + host 建包与余量三批(110 路由 handler 全接线含 VFS 17 件);CI 拆 core/hygiene 两 job
- 2026-09-26:S6 收官(vm executor 全量 + CallHost 110 臂全接线 + 门 3 集成版销账;vm_diff/clang_direct 双防线 601 例全绿 = SAME 596 / KNOWN 5 / DIFF 0);发版件就绪
- 2026-09-27:0.6.0 发布(mooncakes 线上验收全绿);S7 开工(protocol 批一号 + 段二 stream 差分编码入库);G 系列抽象治理收官(总计划 §10.5)
- 2026-09-28:S7 批二号 session 建包(SessionConfig 单一真相源)+ 批三号一段 cmd/serve 骨架(自写标准 JSON 解析器);唯一依赖清除 B 路线落地(vendor moonbitlang/x/fs 子集进仓 + 上游漂移探针,x@0.5.5 依赖删除);SVG 插图防漂移批(状态 facts 化 +
gen_svg -check入 CI);serve 输入通道与主循环两处 P1 修复 - 2026-09-29:S7 批三~五全落(cmd/serve 方法族 16 方法 → serve_smoke 双宿主对拍 + gen_protocol_ts 权威源切 MoonBit → gateway wasm-gc 单出口 + Node 宿主;gateway 拆 library/wasm 双件);《已知限制与差异》建册(四分类 30 条主动披露);0.7.0 发版件就绪(moon.mod 0.7.0 + 彩排全绿,publish 待用户令);模块审阅轮 13 份产物交叉处置(serve 超长行静默丢弃修复等)
- 2026-09-30:0.7.0 线上发布(publish 200 OK + 干净项目 native/wasm-gc 双目标验收全绿);S8 批零号差异台账落地(单源 24 条实测复核 +
diff_ledger二段闸 + CI 接线) - 2026-10-01~02:S8 四域主体收官——time_travel 建包(CheckpointManager 迁入 + FrameWindow + run_batch/seek_to「Trap 回退改检查点+正向重放」)→ serve step 族五方法 + dump 族三方法接入 → teaching/steps 七族 43 算法全量(311/311 golden 对拍全绿,族级对拍器
teaching_annotation_diff入 CI)→ diagnostics 数据层外置 + 教学七元组 + probe 双臂 67 断言 - 2026-10-03:CLI 出口总账三批落地(#37:
vitro总入口 + 单包 cmd/lib/cli + 协议 spec v1 冻结);demo-ui 分支合入(TS 全量重写 + 时间旅行 tab + 调用树 + 数组动画 + 移动端);CI 三 job 拆批(core/moonbit/hygiene) - 2026-10-04:S8 验收三件销案 + 0.8.0 发版件就绪(bump + 彩排 registry 投放法四件验收全绿;版本轴重拍板——0.8.0 = S8 收官版不脱钩,0.9.0 = S9 脱钩 + 裁定 + 解锁修复面)+ 性能实录 §13–§17(S8 交付面 / wasm-gc 出口 / 跨实现对照)+ host_contract 三态对账 --strict 收官(103/103)+
vitro api万能单帧 + 本文档翻新第三轮(10 份过程记录归档) - 2026-10-05:0.8.0 线上发布(用户 moon publish + push;tag
vitro-engine-0.8.0推远端;线上验收三件全绿——search 在架 35 downloads / 干净项目消费双目标 / zip 348 条目核对;实录见发布档案);S9 工序①~④全落(#39 真值源迁移四链 → 判定书终稿十项全裁 → golden 固化 → native/ 物理删除〔de9c9b2b,档案 = tagrust-oracle-freeze+ 分支frozen-oracle-snapshot〕;clang_direct 吸收 shadow 语料差量 0 + fuzz 路 A 迁移 + CI 拆臂 core 63→42);S9 修复批开工(批一 3ddc4684 起);demo 打开本地文件夹批(File System Access API 工作区) - 2026-10-06:#49 wasm 承载 CLI 批一~批三全落(统一入口 launcher
scripts/bin/vitro默认 wasm 臂 + 双臂对拍 373 例同形 + memory.dump 帧 + 壳 serve 子命令与四防线 wasm 臂插座);S9 修复批批二~批三(21 条销案:#4/#5/#6/#7/#9/#11/#12/#13/#15/#17/#18/#19/#23/#24 等) - 2026-10-07:#27 图标语义化全链(emoji 码点退役为语义图标 id——52 枚 SVG 真源
moonbit/icons/+ error_catalog.icon + icons.get 方法帧 + trap 文案语义 id 徽章 + demo 渲染链,protocol_frames 31→33 帧);S9 修复批批四~批五(N3/N4 libc 签名三面单源、格式符严重级对齐、static 聚合地址、note 无界通道治理、freshness 五家单源)——修复面 22 条销至 20(#3~#9/#11~#15/#17~#19/#21~#24/#34 全关,剩 #10/#20)
三、进行中与下一步
排期权威已移交(2026-09-18 起):实际执行以 MoonBit迁移总计划.md §10 S 系列为准,本节为执行视图摘要。前端切割时代的 Phase 2a/2b/3 计划处置如下:Phase 2a wasm 白箱 → 目标出口改为 MoonBit wasm-gc 单出口(S7 gateway 片);Phase 2b/3 capi 第二三批 → 已裁不做(wasm多实例并发模型与U2拍板:19 声明冻结现状,下游改道 wasm/serve);Phase 3 时间旅行 CoW → 性能路线已实测裁定(checkpoint+写集 undo 替代每步全量快照,性能探究实录③;MoonBit 侧"Trap 回退改检查点+正向重放"已列入按目标架构实现清单)。
S6 · memory + host + vm ✅ 已收官(2026-09-26)
- ✅
vitro/engine/memory建包(1MB 载体 + MemoryMap 单出口 + FreedLogs 有序数组,27 测试) - ✅
vitro/engine/host建包 + 余量三批(路由表单源落 bytecode 包、输出通道 Bytes 化、printf/scanf 引擎、VFS 17 handler) - ✅
vitro/engine/vm全量(executor 135 opcode 穷尽 match + CallHost 110 臂全接线 + CheckpointManager + 快照体系)+cmd/run端到端 runner - 验收锚全部达成:门 3 集成版销账 + D 级三联 diff 全量化 601 例(SAME 596 / DIFF-KNOWN 5 / DIFF 0)+ 层 2 clang_direct 601 例同口径 + 条件 A 性能锚实测;0.6.0 已发布(2026-09-27)
S7(批一~五已全落,0.7.0 已发布 2026-09-30)–S9 与全量切换
| 片 | 内容 |
|---|---|
| S7 | ✅ 批一~五全落:protocol 建包(schema 契约 + 受控词汇表 + DTO 族)+ stream 差分编码 → session 会话层(SessionConfig 单一真相源)→ cmd/serve(compile/run + 方法族)→ serve_smoke 双宿主对拍 + gen_protocol_ts 权威源切 MoonBit → gateway wasm-gc 单出口(library + foreign_library 薄壳)+ Node 宿主;module 依赖清零(x vendored 进 fs 包);✅ 0.7.0 已于 2026-09-30 发布(tag vitro-engine-0.7.0;publish 200 OK + 干净项目 native/wasm-gc 双目标验收全绿,实录见发布档案) |
| S8 | ✅ 已收官(验收三件 2026-10-04 销案):time_travel 建包(CheckpointManager 迁入 + FrameWindow O(1) 窗口 + run_batch/seek_to Trap 回退改检查点+正向重放)→ teaching/steps 七族 43 算法(311/311 标注 golden 对拍全绿)→ diagnostics 数据层外置 + 教学七元组 → analysis 裁定(M14 迁、M7/M8 半成品不照搬挂 #32)→ serve step 族/dump 族全接;差异台账 CI 化;详见S8 总览 |
| 0.8.0 | ✅ S8 收官版已发布(2026-10-05)(2026-10-04 版本轴重拍板——原排期脱钩批挪 0.9.0):S8 四域 + demo 前端接入 + CLI 出口总账(#37)+ 性能测试 + JIT 评估(只判定书不实现);tag vitro-engine-0.8.0,线上验收三件全绿(发布档案) |
| S9 / 0.9.0 | 🚧 推进中(2026-10-07):脱钩工序①~④全部完成(#39 真值源迁移 → 判定书终稿十项全裁 → golden 固化 → native/ 物理删除);修复面 22 条已销 20(批一~批五,refs #47——剩 #10 标准库盘点 / #20 分层 fail-fast)+ #47 母跟踪收尾(写法债/覆盖度差集);单侧演化 #32/#33 待排;收在 0.9.0 发版;2026-10-04 排期改写与批内裁定见总计划 §10 |
| 全量切换 | ✅ 已于 2026-10-05 执行(S9 工序④):Rust 区整体删除,档案 = tag rust-oracle-freeze + 分支 frozen-oracle-snapshot + git 历史(16 份探测文档取回 = 提交 917251e,方法见总计划 §11) |
持续项
- 文档同步:实现变更必须同步
C语言子集规范.md/CHANGELOG.md/ 相关 AGENTS.md(MoonBit 侧以 moonbit/AGENTS.md 包清单为状态权威); - 防线维护:
*_FAILURES.md双向对账(转绿未更新文档即 CI 失败); - facts 对账:CURRENT 文档裸数字与
reports/facts.json真值机判(go run ./scripts/facts check)。
四、已知缺口(诚实记录)
| # | 缺口 | 影响 | 处置 |
|---|---|---|---|
| G1 | 链路断裂 | ✅ 已恢复(重构批次 R4,2026-09-12):scripts/sync_templates.py(已退役) 自历史提交恢复并去除 Flutter 输出口径 |
|
| G2 | wasm 出口缺 CI 守护 | ✅ 已固化(重构批次 R4,2026-09-12);2026-10-05 删区后:Rust wasm32 出口随区退役,冒烟脚本已删——现役 wasm 守护 = scripts/wasm_gateway/host.js(wasm-gc 单出口,16 断言) |
|
| G3 | wasm 下统一模式无 catch_unwind(panic → abort) |
与原生出口行为有差异 | 已记录,评估中 |
| G4 | time() / clock() 使用真实墙钟,破坏重放确定性 |
时间旅行回放可能不一致 | Rust 侧冻结不修;MoonBit 侧已以确定性时钟(恒 0)随 host 落地(总计划 S6 批),S8 快照边界完整化时复核 |
| G5 | fprintf 到自定义 FILE* 不落盘(写入被当作 stdout) |
与 Clang 不一致 | 已记录;教学场景请用 fputs/fwrite/fputc;MoonBit 侧哨兵流等价分支已随 host VFS 批照搬,行为差分以 vm_diff/clang_direct 双防线监控 |
| G6 | native/src/flutter_bridge.rs 命名与定位残留 |
历史包装层,命名易误解 | ✅ 已收敛(重构批次 R2,2026-09-11):flutter_bridge.rs 整删,vitro_cli 全部子命令直用本地 Session + session_api,全局会话单例(u64 map + static)清零 |
| G7 | 协议冻结未闭环 | ✅ 已闭环:签字回放 61/61(scripts/replay/replay_s1_s5.go,facts replay_assertions 机判;2026-09-21 架构审阅复核确认冻结成立) |
|
| G8 | 通用解释器路径仍有性能优化空间(时间旅行每步全量快照) | 10 万步级程序 seek 延迟 | 性能路线已实测裁定(2026-09-22):checkpoint 重放 + 写集 undo 替代每步全量快照,MoonBit 侧随 S8 落地(性能探究实录③);Rust 侧冻结不修 |
| G9 | algorithm_matches wire 出口;本条原指的 validate_algorithm()「运行时验证」环节仍待评估):原载体 CideFlutter/lib/models/algorithm_validation.dart 已随前端迁出;LearningProgress 进度追踪同理(后端仅有 learning_path.rs 的 LearningPath)。澄清:AlgorithmMatch(算法检测结果结构体)在 native/src/session.rs 确实存在,缺的是"运行时验证"环节本身 |
零侵入可视化的"运行时验证"维度缺后端支撑 | 检测/推断已随 S8 落地(S8总览);运行时验证环节待评估重建(详见 算法与数据结构教学设计.md §7 历史口径) |
| G10 | 文档数字与实际断言不一致 | ✅ 已对账(重构批次 R4,2026-09-12):CPP_FAILURES.md 更新为 78 | |
| G11 | 与"生产代码 0 unwrap"的历史验收标准不符 | ✅ 已收口(重构批次 R4,2026-09-12):unwrap 归零、engineering_health 进 CI、decl.rs 792 行 + decl_types.rs 拆分 | |
| G12 | CI 双向对账存在盲点 | ✅ 已统一(重构批次 R4,2026-09-12):实测 infixEvaluation_default 已通过并从失败口径移除;AGENTS 口径更正为 82/80 绿/2 已知失败,与常量一致 |
|
| G13 | C++子集规范.md |
学生可见边界缺权威记录 | ✅ 已补记(重构批次 R4,2026-09-12):C++子集规范.md 新增"模板活约束"小节 |
其它已知语言子集差异见 C语言子集规范.md(C++ 差异随规范归档,见 ARCHIVE_C++子集规范.md), 测试差异见
native/tests/*_FAILURES.md。
五、差异化能力(相对通用工具链)
- 运行时中文教学诊断:GDB 只说
SIGSEGV,OnlineGDB 只说Runtime Error;Vitro 说"你访问了arr[5],但数组只有 5 个元素,有效索引 0~4;发生在第 3 行;当前i = 5",并给出一键修复。 - 零侵入算法可视化:写纯 C 冒泡排序,引擎自动识别并给出每一步的比较/交换语义与数组快照,无需任何可视化 API。
- 内存与指针白箱:值级变量快照、指针四状态(Valid / Freed / Null / Dangling)、堆区域与泄漏报告、隔离区可视化。
- 时间旅行回放:任意回退、异常自动回退到上一步并给根因卡片——这是"程序不是黑箱"的直接教学载体。
- 协议化交付:三出口 + 语言中立 schema,任何前端/IDE/判分服务都能接入,而不必绑定某一种 UI 技术栈。
单步/回放体验的设计论证见 VM教学体验优势.md。
六、文档地图
| 想知道什么 | 看哪里 |
|---|---|
| MoonBit 迁移(当前工作) | MoonBit迁移总计划.md(排期权威 §10)+ 第一阶段计划(已归档) + 活跃区操作手册 |
| 后端定位与切割决策 | 后端定位与白箱计划.md |
| 架构总纲 | 架构设计.md |
| 构建与测试防线 | 构建指南.md、快速入门.md |
| CLI 命令 | CLI使用手册.md |
| 语言子集契约 | C语言子集规范.md(C++ 规范已归档:ARCHIVE_C++子集规范.md) |
| 标准库支持矩阵 | 标准库支持矩阵.md |
| 协议 schema | STEP_PAYLOAD_SCHEMA_V0_1.md |
| 审查与修复追踪 | 代码审阅与修复追踪20260906.md(已归档——追踪使命随 Rust 冻结终局;0911 复核归档见 ARCHIVE_代码审查复核20260911.md) |
| 工程维护 | 工程债务维护方案.md |
| 已知限制与差异(as-of 0.7.0 主动披露) | 已知限制与差异.md |
| 历史文档 | ../../archive/(仅供追溯,可能严重过时) |