设计与贡献

长期路线图

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

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

设计原则

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

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

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

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

0.3:数据与诊断(已完成)

已完成:

  • 列、典、下标读写与稳定顺序

  • 列、文字、典的统一迭代语义和逐…于…则

  • 不可改写绑定

  • 试/救/抛、结构化错误值与函数/模块踪迹

  • 独立语义解析阶段,检查重复声明、非法和非法

  • 不可变元组、结构相等、统一迭代和长度

  • 列、元组、文字的半开切片与省略端点

  • Token、表达式和语句的完整源码跨度

  • 带源码片段、行列号、函数位置和模块路径的统一诊断

  • 捕获与重抛时保留原始错误位置

  • 插入删除键列值列容器原语

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

0.4:类型系统与对象复用(已完成)

  • 独立静态检查命令 yanxu 查
  • A|B联合类型,并与运行时约束共享类型关系
  • 变量、参数、归值、算术、调用元数与可变性检查
  • 受限单继承与继承方法查找
  • 可空、函数、联合和泛型容器的结构化类型 AST
  • 容器/调用推断与控制流收窄
  • 协/纳结构协议,公开/私有/只读/静态字段和方法
  • 不执行代码的跨模块公开 API 类型摘要

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

0.5:模块、标准库与包(已完成)

  • 显式导出和默认私有
  • 言序.toml包清单、向上发现与本地路径依赖
  • 包:标准:规范化模块名
  • 完整 TOML/SemVer 清单与固定来源、修订、入口、校验和的言序.lock
  • 路径、Git、中央索引依赖与离线校验缓存
  • 确定初始化顺序和完整循环依赖链诊断
  • 文字、数学、时间、文件、JSON、网络与测试标准模块基线

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

0.6:字节码虚拟机(已完成)

  • AST 到字节码的编译阶段
  • 栈式 VM、常量池、变量槽、控制流跳转和源码映射
  • 函数原型、调用帧、递归闭包、容器、迭代、异常与内建法
  • 类、协议、继承、方法绑定、字段约束和模块独立执行
  • 可观测标记清扫 GC、属性内联缓存与可失效模块字节码缓存
  • 树解释器/VM 全语义一致性规格与yanxu 基准
  • 树遍历解释器保留为语义参考实现

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

0.7:开发工具(已完成)

  • 官方格式化器 yanxu 格
  • 支持过滤、并发、预期失败、超时和 JSON 报告的测试运行器
  • LSP 诊断/格式化及语义补全、定义、引用、重命名、悬停和文档符号
  • 源码踪迹与 DAP 断点、继续、单步、调用栈和变量检查
  • 带声明注释、类型链接、模块索引和稳定锚点的 API 文档生成器
  • 终端级方向键历史、Tab 会话补全、Ctrl-C 和多行 REPL
  • 可单独发布的 Tree-sitter 语法与 VS Code 集成

0.8:并发与宿主交互(已完成)

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

任务冻结为单线程、确定性的协作模型;重复等候缓存结果,自相等候报错,结构化并候失败时取消尚未开始的同组任务。嵌入默认沙箱,包运行按清单权限执行。

0.9:稳定化(已完成)

  • 语言规范、兼容性测试套件和实现一致性测试
  • 性能、内存、安全与模糊测试基线
  • 标准库 API 审核
  • 弃用流程和自动迁移工具
  • 0.3–0.9 双执行器兼容语料、资源预算、版本化格式和三个模糊测试入口
  • yanxu 迁与机器可读标准库 API 审计

1.0:稳定语言(稳定基线,已完成)

1.0 已发布源代码兼容策略、稳定模块/包/锁/字节码与报告格式 1、Rust/C/WASI 嵌入边界、完整工具链,以及“诗笺台”“账册分析”两个中等规模参考项目。1.0 之后新语法必须经过 YXP 提案、原型、兼容性与工具链影响评审。

1.1:标准库、对象、生产 I/O 与工程化(当前版本 1.1.8

1.1 的向后兼容扩建已经完成:Base64处理标准与 URL 安全 UTF-8 编解码,正则提供线性时间 Unicode 匹配,URL负责纯地址解析与相对合并,日期提供确定性的 ISO 公历运算。四个模块不申请宿主权限,并已同步双运行时、静态类型、机器 API 清单、兼容语料、示例、文档和 VS Code,标准模块总数由 17 个增至 21 个。

1.1.1 进一步完成父.方法/父.初始化、继承赋值与覆写检查、值 是 类型和分支收窄;网络栈支持 HTTPS、分块传输、全程超时、响应大小限制、结构化响应与稳定NET_*错误。1.1.2 新增原生 TCP/UDP套接字资源,所有阻塞入口有调用级超时、读取硬上限与稳定SOCKET_*错误,WASI 保持明确拒绝语义。

1.1.3 完成安全收口:HTTP 重定向逐跳授权,DNS 后复查真实 IP,外连/TCP 监听/UDP 绑定权限分离;统一 DNS 与传输截止时间,增加 UTF-8 分片缓冲和套接字配额。同版本还加固包制品解压、失败后持久 Engine 一致性和发布供应链。

1.1.4 完成面向网络应用的底层二进制能力:不可变字节串、二进制文件/HTTP/TCP/UDP、明确 EOF 与精确读取、安全随机、HMAC、常量时间比较、HTTP 日期、文件状态和程序参数。树解释器、独立 VM、静态类型、LSP、格式化器、文档生成器、嵌入接口和跨平台门禁同步验收;HTML、HTTP 服务端、Web 框架、异步 I/O 与服务端 TLS 明确不在本版范围。

1.1.5 完成工程化与包生态基础:格式 2 清单、完整确定性锁图、依赖别名/显式导出/工作区/开发依赖、离线辖制与审计、YXP 打包、源码无关 YXB、当前平台自包含应用和原生扩展 ABI v1。言包 0.2.0 完全改用言序实现,只通过核心工程协议工作;新增进程资源后标准模块共 25 个。HIR/MIR、机器码后端、编译器自举、异步运行时、多线程调度和未经安全评审的公开注册表继续留待后续版本。

1.1.6 不引入新的破坏性语法,集中收口 1.1.5 发布后的稳定性与供应链问题:YXB 权限取宿主上限与应用申请的交集,外部归档执行完整大小和结构预算,原生动态库使用已验证字节的私有只读副本并以 RAII 覆盖异常释放路径;包写入与并发执行采用原子替换和项目锁,版本、CI、标签、Release、安装器、言包与生态仓库拥有可追溯的统一验收基线。

1.1.7 保持语法、ABI v1、旧 YXB 与嵌入接口兼容,新增原生 ABI v2、持久回调、有界宿主事件、父子资源和独立 GUI 权限。官方言窗以真实桌面后端提供中文 GUI API;YXB 可携带锁定原生制品,言包可生成 Windows、macOS、Linux 自包含 Bundle,六目标在原生 CI runner 分别构建和验收。

1.1.8 保持上述全部格式与接口兼容,为 Windows x86_64/ARM64 官方运行时保留 8 MiB 所有者线程栈,并以 PE32+ 回归和 Release 制品检查覆盖原生 GUI 回调中的言序方法嵌套。

跨版本工程要求

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

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