Skip to content

RFC-003:版本规划

拒绝日期: 2026-06-01

⚠️ 拒绝原因

本 RFC 不符合 RFC 规范,已被拒绝。

问题分析

问题说明
文档类型错误RFC 是关于"为什么这样设计"的决策文档,本文是"现在在哪里、要去哪里"的项目管理文档
缺乏设计决策没有技术选型的权衡分析,没有替代方案比较,没有设计理由
过度规划规划了 9 个版本(v0.1-v1.0),但只完成了 1.5 个,v0.3 以后都是推测
维护成本高成功指标表有 50 个状态,难以维护
版本号混乱跳过 v0.8,没有解释

正确的文档类型

本文档应作为**项目路线图(Roadmap)**管理,而非 RFC。路线图记录事实和短期计划,RFC 记录设计决策。


以下为原始内容,保留供参考。

摘要

YaoXiang 的版本发布计划,从 v0.1 到 v1.0 的路线图。

核心目标

  1. 字节码编译:支持 REPL 和渐进式编译
  2. 自举 (Bootstrap):使用 YaoXiang 编写 YaoXiang 编译器
  3. AOT 编译:字节码编译为本地机器码

一、动机

为什么需要版本规划?

  1. 项目管理:将目标分解为可执行的里程碑
  2. 用户预期:让用户了解语言的发展阶段
  3. 资源分配:明确每个阶段的重点
  4. 风险控制:及时发现问题并调整方向

核心设计决策

  • 字节码优先:先实现解释执行,再考虑 AOT
  • 渐进式交付:每个版本都有可用功能
  • 向后兼容:v1.0 前 API 可能变更,但会提前公告
  • 自举验证:通过自举证明语言表达能力
  • 性能分层:先跑通,再优化

二、组件状态 (Phase)

Phase模块状态位置最后更新
P1词法分析器✅ 完成src/frontend/lexer/2025-01-23
P2类型检查器✅ 完成src/frontend/typecheck/2025-01-23
P3字节码生成器✅ 完成src/middle/codegen/2025-01-25
P4虚拟机✅ 完成src/middle/2025-01-25
P4.1任务系统✅ 完成src/backends/runtime/task.rs2025-01-23
P4.2DAG调度器🔶 设计完成.claude/plan/flow-scheduler-implementation.md2026-01-04
P5标准库⚠️ 部分完成src/std/2025-01-23
P6TUI REPL✅ 完成src/backends/dev/repl/2025-01-24
P7泛型系统✅ 完成docs/design/rfc/011-generic-type-system.md2025-01-25

核心成就

  • ✅ 编译器前端完整实现(P1-P2)
  • ✅ 字节码生成与虚拟机完成(P3-P4)
  • ✅ 基础任务系统完成(P4.1)
  • ✅ TUI REPL 开发完成(P6)
  • ✅ 泛型系统设计完成(P7)

下一步优先:实现 FlowScheduler 调度器 → 完善标准库(P5)→ v0.1 发布

三、版本路线图

v0.1:可运行里程碑 ✅

状态:基本完成(2025-01-25)

已完成

  • ✅ 词法分析、语法分析、类型检查完整
  • ✅ 字节码生成可用
  • ✅ 虚拟机能解释执行基本程序
  • ✅ 基础 print 函数
  • ✅ TUI REPL 完成
  • ✅ 基础任务系统(Task/Scheduler)
$ yaoxiang run hello.yx
Hello, YaoXiang!

技术亮点

  • 三层运行时架构设计完成
  • 任务系统完整实现
  • TUI REPL 现代化界面
  • 统一类型语法 + 泛型系统设计

未包含:完整 DAG 调度(基础调度器已实现)

v0.2:FlowScheduler 调度器 🚧

目标:实现完整的依赖感知调度器

  • ✅ 设计文档完成
  • 🔶 实现进行中
  • [ ] DAG 节点与图实现
  • [ ] 工作窃取算法
  • [ ] libuv IO 调度引擎
  • [ ] 惰性求值策略
  • [ ] spawn 语法支持

技术重点

  • FlowScheduler 架构实现
  • 工业级 IO 调度(libuv)
  • 零成本抽象

v0.3:并发预览 📋

目标:支持基础并发

  • DAG 任务依赖图
  • 基础调度器
  • spawn 并发

v0.4:泛型系统 📋

目标:完整泛型能力

  • [ ] RFC-011 Phase 1:基础泛型
  • [ ] RFC-011 Phase 2:类型约束
  • [ ] RFC-011 Phase 3:关联类型
  • [ ] RFC-011 Phase 4:Const 泛型
  • [ ] RFC-011 Phase 5:条件类型

技术重点

  • 死代码消除
  • 零成本抽象
  • 函数重载 + 内联优化

v0.5:标准库完善 📋

目标:可用性提升

  • IO、字典、网络模块
  • 工具链(fmt、基础 LSP)
  • 性能优化

v0.6:错误处理系统 📋

目标:完整错误处理

  • [ ] RFC-001 实现
  • [ ] Result 类型系统
  • [ ] 错误图可视化
  • [ ] DAG 错误传播

v0.7:稳定版本 📋

目标:API 趋于稳定

  • 完整文档
  • 工具链完善
  • 边界情况修复

v0.9:自举开始 📋

目标:核心模块用 YaoXiang 重写

  • Lexer → Parser → TypeChecker → Codegen 逐步替换
  • 交叉验证:两个编译器结果一致

v1.0:生产可用 📋

目标:稳定发布

  • 完整自举
  • AOT 编译(LLVM 后端)
  • 生产可用

四、编译策略三层设计

层级版本输入输出说明
L1: 字节码v0.1+源码 (.yx)字节码 (.yxb)VM 解释执行
L2: 自举v0.9+YaoXiang 源码字节码自己编译自己
L3: AOTv1.0+源码/字节码机器码原生性能

字节码优先的理由

  1. REPL 支持:即时编译输入代码,交互式开发
  2. 渐进式编译:修改单个函数只需重新编译该部分
  3. 平台无关:.yxb 文件跨平台运行,只需对应平台的 VM

五、依赖策略

短期:调用 Rust 库复用 crates.io(Cargo 寄生)

当前依赖

  • 并发:parking_lot, crossbeam, rayon
  • 数据结构:indexmap, hashbrown, smallvec
  • 网络:tokio
  • 序列化:serde, ron

长期:自建标准库和包管理器

六、工具链

版本工具状态
v0.1yaoxiang-cli✅ 已完成
v0.1TUI REPL✅ 已完成
v0.2yaoxiang-debug🚧 设计中
v0.3yaoxiang-fmt📋 计划中
v0.3yaoxiang-lsp (基础)📋 计划中
v0.5yaoxiang-clippy📋 计划中
v1.0完整工具链📋 计划中

七、成功指标

指标v0.1v0.2v0.3v0.5v1.0
端到端运行
基础任务系统
FlowScheduler🚧
并发支持⚠️🚧✅ 基础✅ 完整
标准库基础基础基础完善完整
泛型系统⚠️⚠️🚧
TUI REPL
自举
AOT
代码覆盖率60%70%80%90%95%

图例

  • ✅ 已完成
  • 🚧 进行中
  • ⚠️ 部分完成
  • 📋 计划中

八、开放问题

  • [ ] JIT vs AOT 时机选择
  • [ ] 包管理器设计
  • [ ] 自举模块替换顺序
  • [ ] AOT 后端选型(LLVM vs 自研)

九、版本发布标准

v0.x 系列

  • 功能完整但可能存在边界情况问题
  • API 可能变更
  • 仅供学习和试验

v1.0

  • 所有核心功能稳定
  • API 冻结
  • 适合生产使用
  • 完整的文档和教程

参考