参考

兼容、迁移与公共格式

运行跨版本语料、处理弃用,并消费版本化 JSON 与字节码格式。

兼容语料

compat/保存从 0.3 至当前版本的公开语言程序。每一卷都由参考树解释器与独立字节码 VM 执行,并比较成功状态、最终值、输出和错误。

yanxu 兼容
yanxu 兼容 compat --json > compatibility.json

人类报告适合本地检查;JSON 使用compatibility-report-v1与schema_version: 1。新增或修复语言能力时,应先把最小程序加入对应版本语料。

弃用与迁移

弃用项有稳定编号、引入版本、诊断级别、替代形式和预计移除版本。查会显示警告但不把警告当作类型失败;迁支持只检查、显示差异和就地写入。

yanxu 迁 --检查 src/主.yx
yanxu 迁 --差异 src/主.yx
yanxu 迁 --写 src/主.yx

当前登记的YXD001把标准模块小写别名标准:csv迁移为标准:CSV,计划不早于 2.0 移除。迁移只改写导入语句,不会改动普通文字内容。

版本化格式

包清单与锁文件当前为格式 2,并兼容读取格式 1;字节码块当前为格式 2且只读取格式 2,YXB 外层仍为格式 1。工程协议、原生扩展 ABI、测试/兼容报告、C ABI JSON、标准库 API 清单与模块 API 清单各自使用显式主版本。未知主版本会被拒绝,不会猜测解析。JSON Schema 位于核心仓库schemas/,规范表位于spec/language/v1/formats.md。

格式 2 锁文件保存完整直接/传递依赖图、精确版本与 Git 提交、来源、校验和、目标平台、导出表和原生制品。YXB/YXP 使用固定顺序和元数据,相同输入必须逐字节相同;构建和运行不得在导入时临时重新选版。

yanxu 标准库 --json输出机器可读的模块、成员签名、确定性、平台和权限审计。字节码使用bytecode::serialize/deserialize往返,并在解码根块与嵌套法原型时验证格式版本。

模糊测试

核心仓库fuzz/覆盖前端、格式化、字节码归档、应用归档、清单、锁文件、工程协议和原生库八类结构化输入。固定种子同时进入普通 Rust 测试;1.1.20 还把预发布发现的单元素元组格式化崩溃与语义回归输入固化,保证历史问题无需 libFuzzer 也会回归。