言序文档

长期路线图

言序从 0.3 数据与诊断阶段到 1.0 稳定语言的演进边界。

本路线以“先稳定语义,再优化执行”为原则。版本号代表语言能力的稳定层级,而不是单纯的功能数量。

设计原则

  1. 中文是语言本体:错误信息、关键字和核心库首先以中文设计,不把其他语言逐词翻译过来。
  2. 文言重可读,不求拟古:程序应简洁、有节奏,同时让现代中文使用者无需古汉语训练即可理解。
  3. 渐进式类型:无标注代码保持轻便;有标注代码获得明确约束。静态检查器与运行时遵循同一套类型关系。
  4. 模块即边界:文件、命名空间、缓存和未来的包系统围绕同一个模块模型演进。
  5. 前端与执行器解耦:词法、AST 和语义不依赖树遍历解释器,未来可平滑增加字节码后端。
  6. 错误可行动:错误应说明位置、所需类型、实际类型和调用路径,不只报告“失败”。

0.2:结构化程序(已完成)

  • 可选变量类型:令 年岁:数 为 18;
  • 参数与返回类型:法 加一(值:数):数 则 … 终
  • 类、实例、动态字段、方法绑定、初始化
  • 文件模块、相对路径、命名空间、单次加载缓存和循环依赖检测
  • 持久化多行 REPL、表达式回显、上下文清理和文卷载入

类型约束当前在运行时执行。这是有意的渐进策略:先让标注语法和类型关系经过真实程序验证,再把同一规则前移到静态检查器。

0.3:数据与诊断

当前开发版:0.3.0-alpha.1

已完成:

  • 列、典、下标读写与稳定顺序
  • 列、文字、典的统一迭代语义和逐…于…则
  • 不可改写绑定
  • 试/救/抛、结构化错误值与函数/模块踪迹
  • 独立语义解析阶段,检查重复声明、非法和非法

下一 alpha:

  • 元组、切片与更完整的容器原语

  • Token 到 AST 的完整源码跨度

  • 带源码片段、行列号和模块链的诊断渲染

  • 列、元组、典(映射)、下标与切片

  • 迭代协议和 逐…于…则循环

  • 不可变绑定与常量

  • 源码跨度贯穿 Token、AST 和运行时

  • 调用栈、模块栈和带源码片段的诊断

  • 试/救/终错误处理与结构化错误值

  • 语义解析阶段:提前发现重复声明、非法 、非法

退出条件:常见数据处理程序无需依赖宿主内置函数;所有运行错误均能指回源码范围。

0.4:类型系统与对象协议

  • 独立静态检查命令 yanxu 查
  • 联合类型、可空类型、函数类型和泛型容器
  • 类型推断与控制流收窄
  • 接口/协议与组合优先的复用模型
  • 类继承仅在协议与组合不足时引入,并限定为单继承
  • 字段声明、可见性、只读字段和类方法
  • 类型信息文件,支持跨模块检查而不执行代码

退出条件:带完整标注的项目可在执行前发现类型错误;无标注项目仍可正常运行。

0.5:模块、标准库与包

  • 显式导出和默认私有
  • 规范化模块名,消除直接字符串路径对工程结构的耦合
  • 言序.toml包清单、语义化版本和锁文件
  • 本地、Git 与中央仓库依赖源
  • 标准库:文字、数学、时间、文件、JSON、网络与测试
  • 模块初始化顺序和受控循环依赖语义
  • 可复现构建与离线缓存

退出条件:多包项目可被可靠安装、检查、测试和执行。

0.6:字节码虚拟机

  • AST 到字节码的编译阶段
  • 栈式 VM、常量池、调用帧和闭包上值
  • 标记清扫垃圾回收,随后评估分代策略
  • 内联缓存加速字段和方法访问
  • 模块字节码缓存及版本校验
  • 树遍历解释器保留为语义参考实现

退出条件:语言一致性测试在两个执行器上结果相同,典型程序获得数量级性能提升。

0.7:开发工具

  • 官方格式化器 yanxu 格
  • 测试运行器 yanxu 试
  • LSP:诊断、补全、跳转、重命名和悬停类型
  • 调试器:断点、单步、调用栈与变量检查
  • 文档生成器和 REPL 历史/补全
  • Tree-sitter 语法与编辑器插件

0.8:并发与宿主交互

  • 基于任务的结构化并发
  • 异步函数与可取消任务
  • Rust FFI 与稳定的宿主嵌入 API
  • WASM/WASI 执行目标
  • 权限清单:文件、网络、环境变量和进程能力

并发语法只有在所有权、共享可变状态和错误传播模型明确后才冻结。

0.9:稳定化

  • 语言规范、兼容性测试套件和实现一致性测试
  • 性能、内存、安全与模糊测试基线
  • 标准库 API 审核
  • 弃用流程和自动迁移工具
  • 真实项目试用与反馈周期

1.0:稳定语言

1.0 承诺源代码兼容策略、稳定模块/包格式、可嵌入运行时、完整工具链,以及至少两个中等规模参考项目。1.0 之后新语法必须经过提案、原型、兼容性与工具链影响评审。

跨版本工程要求

每个里程碑都必须同时具备:

  • 语法和语义文档
  • 正向、错误与回归测试
  • 可运行示例
  • cargo fmtcargo test、严格 Clippy 全部通过
  • 对上一版本示例的兼容验证
  • 变更日志与迁移提示

本页目录