参考迁移指南

从 1.1.5 升级到 1.1.6

迁移 YXB 权限、制品验证、原生扩展和言包独立分发。

1.1.6 是稳定性修复版本,不增加不必要的语法破坏。普通源码、格式 2 清单、锁文件 2、字节码 1、旧版未压缩 YXB v1 和原生 ABI v1 继续兼容;需要关注的是安全边界和发布可追溯性被收紧。

YXB 权限改为申请与授权分离

YXB 内记录的文件、网络、TCP 监听、UDP 绑定、环境、进程和原生扩展权限只是应用申请。有效权限为:

宿主最终授权 = 宿主权限上限 ∩ 应用申请权限

嵌入宿主应继续用沙箱配置创建Engine,并用PermissionSet::intersect显式审计合并结果。不要把归档清单直接写回宿主 VM。需要增加权限时,必须由宿主配置主动授权。

重新验证外部制品

1.1.6 会在读取和解压前后检查 YXB 体积,并限制模块、字节码、指令、函数、类、调试跨度及资源数量与解码大小。重复 JSON 键、非法或重复模块 ID、缺失入口、越界资源路径、归档外导入和资源摘要不一致会在执行前失败。若旧制品触发限制,应修复异常构建输入或拆分资源,不要绕过预算。

YXB 的 SHA-256 校验仅证明完整性,不证明发布者身份。应从受信任 Release 获取制品和摘要;可选数字签名仍是后续格式提案。

审查原生扩展

原生扩展依然是宿主进程内的受信任机器码,不受语言沙箱完全约束。1.1.6 在校验后把动态库复制到进程私有、内容寻址、只读路径,再次核对目标和摘要后加载,并确保畸形 JSON、错误状态和未知资源走释放函数。扩展发布者应重新运行三平台异常路径与资源析构测试。

更新工具和发布基线

  • 重新生成锁文件,使generator和最低版本记录为 1.1.6;
  • 使用yanxu version --json记录构建提交 SHA、目标与模式;
  • VS Code 扩展升级到 1.3.2;
  • 言据升级到 1.1.2;
  • 1.1.6 发布时对应的言包版本为 0.2.1;言包 0.5.0 起要求言序 1.1.7,并继续复用系统运行时与 GitHub 默认包来源。

发布前应重新执行静态检查、树解释器/VM 对照、删除源码后的 YXB 运行、standalone、离线/vendor、安装器和生态兼容矩阵。