搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

verus-lang/verus

开发工具

静态验证 Rust 代码是否满足规格说明的工具,面向系统编程与形式化方法开发者。

3,770
263
Rust
MIT
创建于 5 年前

项目用途

Verus 用来验证 Rust 代码是否符合开发者写下的规格。开发者为函数声明前置条件和后置条件,Verus 借助求解器做静态分析,证明可执行代码在所有可能的执行路径上都满足这些规格。它不是运行时断言库:检查发生在验证阶段,通过后代码仍按普通 Rust 方式运行(在支持的子集内)。

Verus 目前支持 Rust 的一个子集,并在持续扩展。由于验证不局限于标准类型系统,它也能推理操作裸指针等底层写法,因此面向系统级代码。README 明确标注项目处于活跃开发中,功能可能缺失或不稳定,文档也不完整。

快速开始

想先体验,可以直接打开浏览器里的 Verus Playground,无需本地安装。正式开发则按安装说明配置环境,再阅读教程与参考手册。

带验证的函数把契约写在签名里:

fn octuple(x1: i8) -> (x8: i8)
    requires
        -16 <= x1,
        x1 < 16,
    ensures
        x8 == 8 * x1,
{
    let x2 = x1 + x1;
    let x4 = x2 + x2;
    x4 + x4
}

这个例子来自 Hacker News 评论,用来展示写法,并非安装步骤的一部分。实际使用时,把规格和实现写在 Verus 注释的 Rust 文件中,运行验证器,得到证明成功或指向反例的错误报告。具体命令、工具链版本和编辑器集成以安装说明为准,README 没有重复这些细节。

使用约束

  • Rust 子集:并非所有 Rust 语法都能通过 Verus,部分语言特性尚不支持,支持范围仍在扩大。
  • 文档成熟度:文档被描述为进行中,遇到问题需要到 Zulip 社区求助。
  • 规格成本:编写契约、调试失败的证明是工作流程的一部分;验证只证明你写下的规格,规格本身不准确或不完整会限制结论的意义。
  • 生态配套:发布经过验证的 crate 到 crates.io 有单独的实践指南;代码格式化由独立的 verusfmt 提供。
  • 许可证:仓库采用 MIT 许可证。

HotRepo 点评

Verus 在 2024 年 5 月登上 Hacker News 讨论,获得 284 分和 103 条评论。讨论中最具体的采用案例是 lsuresh 提到用 Verus 编写经过形式化验证的 Kubernetes 控制器,并证明「控制器最终会把集群调和到期望状态」这类活性属性,同时给出了代码和 OSDI 2024 论文。这类描述比笼统称赞更有参考价值,因为它点明了被证明的性质以及规格本身就很微妙的领域。讨论也暴露了一个实际摩擦点:有评论者指出 Verus 要求把代码包在 proc-macro 中,而 Creusot 等工具采用属性式语法,在 Rust 里更轻量、更符合习惯。站内最近一条 Rust 语言日榜快照是 2026-11-14,显示 3,768 星、当日新增 20 星、该榜第 3 名;单条快照只能说明当天情况,不足以判断趋势。

项目源码与说明

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Verified Rust for low-level systems code
▲ 284 · 103 条评论 · 2024年5月4日

相关推荐

  1. adityatandon15/Low-Level-Design-Course收录低层设计课程配套 Java 代码与笔记,面向学习系统设计和准备面试的读者。Java1,420