参考

兼容、迁移与公共格式

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

兼容语料

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

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

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

弃用与迁移

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

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

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

版本化格式

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

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

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

模糊测试

核心仓库fuzz/提供词法/解析、格式化重解析/幂等性和字节码归档解码三个 cargo-fuzz 目标。固定种子同时进入普通 Rust 测试,保证历史崩溃无需 libFuzzer 也会回归。