XU XUv0.8.8
EN

博客 / 版本进展

2026-10-13 · 开发进展

Xu 0.8.x:模块、离线构建与校验日志

从 0.1.0 的第一份快照到现在,Xu 的变化已经不止于语言语法。近期工作集中在模块身份、可复现的依赖安装、离线构建,以及独立于下载来源的内容校验。官网的中英文文档与 API 也已按当前源码同步。

0.8.1:包路径统一使用斜杠

包声明、导入和模块清单统一使用 /。本地路径写作 @team/util、#net/http;域名中的点保留,外部声明可以写作 @"example.com/team/my-lib"。导入别名与完整路径身份分别管理。

这是一项需要迁移的变化:旧点式路径应改为斜杠路径,域名、字段访问和版本号中的点保持原样。模块名称变化也会影响内容锁的身份,需要审查后重新建立锁,不能只改源码里的拼写。

0.8.2:安装快照与冻结构建

xu install 收集传递依赖并生成可校验的 vendor 快照。--offline 禁止下载,使用本地来源、已有缓存或 vendor;--frozen 进一步要求已有匹配锁条目,不补锁、不更新依赖缓存。本地 file: 依赖须先安装为 vendor 快照。

xu install app
xu check app/main.xu --offline
xu build app/main.xu --frozen --output app/program

依赖冻结约束的是依赖内容,主项目源码和本次编译产物仍可修改。审查后的 xu.lock 应随项目保存,内容不匹配时需要调查原因。

0.8.3:MVS、代理与并发事务

外部模块可以声明精确 SemVer 最低要求。编译器读取全部可达版本清单,通过 MVS 为每个模块选择图中最高的最低要求;它不自动查询 latest,也不解释版本范围。版本图使用 v3 锁,并在 vendor 中保留全部可达版本快照,供离线重放。

XUPROXY 支持 HTTP(S)、绝对 file://、direct 和 off。逗号只在 404/410 后回退,竖线允许请求错误后回退;身份或完整性不匹配始终失败。XUPRIVATE 与 XUNOPROXY 控制私有路径的代理绕过。依赖解析、锁文件合并和共享下载由内核锁保护。

0.8.4:固定公钥的校验日志客户端

XUSUMDB 配置可信 Ed25519 verifier 公钥及可选服务地址。对规范 SemVer 模块,客户端在接受缓存或写入锁之前验证签名树头、模块树摘要、记录包含证明和日志追加一致性。已有缓存、vendor 与版本快照也遵守相同认证策略。

XUNOSUMDB 独立控制校验绕过,默认沿用 XUPRIVATE。未配置 XUSUMDB 或设置 off 时仍采用首次使用信任;配置后认证失败不会自动降级。离线与冻结构建需要已有已验证证明。

公共 Xu 校验服务、跨客户端独立见证、vanity 仓库发现及断电持久性仍待继续。客户端的本机一致性校验不能替代这些服务,也不证明模块源码没有恶意行为。

文档与生态一起跟进

本轮官网同步了安装、CLI、模块依赖、教程路径和平台边界。API 索引包含 128 个标准库/UI 包和 29 个扩展包;声明、索引和统计现在由同一生成流程维护。具体服务驱动位于独立的 packages 根模块,版本继续与 Xu 分别管理。

模块与依赖 · packages 0.1.1 · API 索引 · 限制与现状