docs/current/01-定位与路线/项目路线图.md
GitHub ↗
当前有效

Vitro 路线图

5831 字·约 15 分钟 阅读 2026-10-10 17:07

最后核对: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 前端搭建(Flutter + 自研编辑器) → 已随前端切割迁出 ⛔
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,档案 = tag rust-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 冒烟脚本未固化 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 StepPayload schema v0.1 尚未完成对端回放校验 协议冻结未闭环 ✅ 已闭环:签字回放 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 算法属性验证能力在后端从未落地(历史口径——S8 已部分兑现(2026-10-04):teaching/steps 43 族检测+推断落地、311 条标注 golden 对拍全绿、compile 帧 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 C++ E2E 用例口径不一致 文档数字与实际断言不一致 ✅ 已对账(重构批次 R4,2026-09-12):CPP_FAILURES.md 更新为 78
G11 工程债务回升(D14 unwrap×3 / D15 health 未进 CI / D16 decl.rs 超标) 与"生产代码 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++ 活约束未记入 C++子集规范.md 学生可见边界缺权威记录 ✅ 已补记(重构批次 R4,2026-09-12):C++子集规范.md 新增"模板活约束"小节

其它已知语言子集差异见 C语言子集规范.md(C++ 差异随规范归档,见 ARCHIVE_C++子集规范.md), 测试差异见 native/tests/*_FAILURES.md。


五、差异化能力(相对通用工具链)

  1. 运行时中文教学诊断:GDB 只说 SIGSEGV,OnlineGDB 只说 Runtime Error;Vitro 说"你访问了 arr[5],但数组只有 5 个元素,有效索引 0~4;发生在第 3 行;当前 i = 5",并给出一键修复。
  2. 零侵入算法可视化:写纯 C 冒泡排序,引擎自动识别并给出每一步的比较/交换语义与数组快照,无需任何可视化 API。
  3. 内存与指针白箱:值级变量快照、指针四状态(Valid / Freed / Null / Dangling)、堆区域与泄漏报告、隔离区可视化。
  4. 时间旅行回放:任意回退、异常自动回退到上一步并给根因卡片——这是"程序不是黑箱"的直接教学载体。
  5. 协议化交付:三出口 + 语言中立 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/(仅供追溯,可能严重过时)