长期路线图
言序从 0.3 数据与诊断阶段到 1.0 稳定语言的演进边界。
本路线以“先稳定语义,再优化执行”为原则。版本号代表语言能力的稳定层级,而不是单纯的功能数量。
设计原则
- 中文是语言本体:错误信息、关键字和核心库首先以中文设计,不把其他语言逐词翻译过来。
- 文言重可读,不求拟古:程序应简洁、有节奏,同时让现代中文使用者无需古汉语训练即可理解。
- 渐进式类型:无标注代码保持轻便;有标注代码获得明确约束。静态检查器与运行时遵循同一套类型关系。
- 模块即边界:文件、命名空间、缓存和未来的包系统围绕同一个模块模型演进。
- 前端与执行器解耦:词法、AST 和语义不依赖树遍历解释器,未来可平滑增加字节码后端。
- 错误可行动:错误应说明位置、所需类型、实际类型和调用路径,不只报告“失败”。
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 fmt、cargo test、严格 Clippy 全部通过- 对上一版本示例的兼容验证
- 变更日志与迁移提示