【Rust日报】2026-09-28 PolyXOR128:带 Lean 证明的高速 128 位通用哈希
内容提要
本期介绍四个 Rust 项目:PolyXOR128 是带 Lean 形式化证明的 128 位通用哈希,碰撞概率上界为 (n/4096+3)/2^128,吞吐接近 foldhash 的两倍;Casita 是 Cachix 团队的内容寻址存储层,用 BLAKE3 管理源码与构建产物;mbrotli 进入 lzbench,解压快于官方 Brotli;Taipei 提供 Tower 过载治理。
延伸解读
PolyXOR128 的适用边界
PolyXOR128 是通用哈希,要求密钥保密且不公开。它适用于文件或数据流完整性校验,但若密钥无法保密(如公开包校验和),则不能替代抗碰撞哈希。跨不安全信道传输时,应使用 finalize_mac 封装哈希。此外,便携参考实现极慢,嵌入式可能受限;小串(≤256 字节)尚未专项优化,零填充到 128 字节倍数。
Casita 的存储模型与现状
Casita 采用内容寻址存储,类似广义 Git 对象库:不可变 blob 用 BLAKE3 标识,可附带 Bao outboard 做区间校验;目录/文件记录形成图,修改文件会换新 ID 并向上传播。应用通过 root 命名保留可达图,可重建数据(如 Cargo target/)可用 evictable root。导入支持文件系统、tar、NAR 与 Git,并提供 Casitar 打包、实验性 Gix ODB 适配、CasitaFS 只读挂载及本地/SSH 同步。共享 S3 后端仍实验性,Cargo 集成性能尚
mbrotli 基准对比的注意点
mbrotli 0.5.2 已进入上游 lzbench,可与 Google Brotli 在同一 harness 下对比。在 WSL2、默认构建、window 22、单线程、Silesia 语料下,解压各 quality 上 mbrotli 更快(约 1.09–1.16×);q0–q1 压缩基本持平或略快;q2–q9 压缩慢约 1–9%;q10/q11 压缩显示更快(约 1.18×/1.35×)。但 q10/q11 的微小体积差源于 lzbench 对 C Brotli 使用 -ffast-math,作者强调不必过
Taipei 的过载治理思路
Taipei 是与 Tokio Tower 集成的库,以 Tower layer 形式提供过载治理,可包在已有 Service 外。示例包括:用 InstrumentedTokioRuntime 观测 CPU;CpuBackpressureLayer 在 CPU 高于阈值时托住请求;QueueLayer 做排队与超时,并把队列错误映射为 HTTP 503 等。文档从手写并发上限讲起,说明为何需要队列、背压与运行时观测,并对比“拍脑袋 limit”的局限。即使不直接使用该 crate,其交互式仿真也可作为参考。
Q&A
PolyXOR128 的碰撞概率上界是多少?
在密钥与输入独立且随机的前提下,长度至多 n 字节的两条消息碰撞概率上界为 (n/4096 + 3) / 2^128。
PolyXOR128 的吞吐性能如何?
在中大型输入上,除 CRC64 外快于所测主流哈希;在带 AVX-512 的机器上 bulk 吞吐可接近 foldhash 的约两倍。单线程示例:Ryzen 9950X 最高约 130 GB/s,Apple M2 Pro 约 60 GB/s。
Casita 是什么?它的主要功能有哪些?
Casita 是 Cachix 团队用 Rust 实现的内容寻址对象存储层,覆盖共享存储、校验、同步与垃圾回收。它提供 Rust 库和 CLI,目标平台 Linux/macOS/Windows,用于管理源码与构建产物。
mbrotli 与官方 Brotli 相比,解压和压缩性能如何?
在 WSL2、默认 lzbench 构建、window 22、单线程、Silesia 语料上对比 Google Brotli 1.2.0:解压在各 quality 上 mbrotli 更快(约 1.09–1.16×);q0–q1 压缩基本持平或略快;q2–q9 压缩约慢 1–9%;q10/q11 压缩约快 1.18×/1.35×。
Taipei 库的主要目标是什么?它如何帮助服务过载治理?
Taipei 是与 Tokio Tower 集成的库,目标是让服务在压力下仍表现稳定,并减少手调。它以 Tower layer 形式提供,可包在已有 Service 外,功能包括观测 CPU、CPU 背压、排队与超时等。
PolyXOR128 的 Lean 证明是如何生成的?
作者说明正文与最终代码主要为人工撰写,Lean 形式化由 AI 生成但结论经其核验且可被 Lean 检查。