用 Verus 让 Rust 代码获得数学级正确性

Developing provably correct Rust code with Verus

用 Verus 让 Rust 代码获得数学级正确性

Rust 语言虽然凭借类型系统大幅减少了内存错误,但“更安全”并不等同于“绝对正确”。Amazon 推出的开源工具 Verus,作为 Rust 的自动化程序验证器,能够将代码与数学规格进行机械比对,从而验证所有可能输入下的正确性。开发者只需在源码中直接添加前置和后置条件,Verus 即可在秒级内完成验证,甚至支持 AI 辅助生成证明。从 AWS 的 Nitro Isolation Engine 到 Kubernetes 控制器,Verus 正帮助关键基础设施在保留 Rust 高性能的同时,重新建立机器可验证的安全保障,将软件验证从“测试覆盖”推向“数学证明”的新高度。

Rust 无法保证你的程序会计算出你期望的结果,也无法保证它不会泄露其访问的秘密。
  1. 63

    如果你觉得这个有趣,可能也会对一些目标/范围相似的相关项目感兴趣:Miri[0]、Kani[1] 和 Creusot[2]。Verus、Kani 和 Creusot 之间看起来有相当多的重叠,但我没用过其中任何一个,所以就不试图去区分它们了。

    [0]https://github.com/rust-lang/miri

    [1]https://github.com/model-checking/kani

    [2]https://github.com/creusot-rs/creusot

  2. sourdecor

    Verus 看起来正是我一直在寻找的东西!我前段时间在 HN 上发现了 AllConcur[0],本想把它移植到 Go,但它用了 TLA+ 和 C,对我来说很难理解,除非能把 TLA+ 编译成 C,否则很难让人信任其实现。

    我和 Gemini 聊过 Verus 与 TLA+ 的对比,它说 TLA+ 通常用于(例如)“证明分布式共识协议在逻辑上是健全的”,但当我问 Verus 是否也能做到时,它说可以。所以 Verus 可以编译并集成到 Rust 中,而 TLA+ 更多用于蓝图开发,随后由实现者在脑海中指导具体实现。

    太棒了!

    [0]: https://news.ycombinator.com/item?id=12357976

  3. MeetingsBrowser

    我长期以来一直批评那些需要注解的验证工具。人类都写不出正确的代码,那要求他们写出正确的证明注解似乎徒劳无功。

    但在 LLM 时代,情况或许会改变。一种确定性检查可以让 LLM 验证 API 的正确性,从而大幅提高大规模重构或性能优化的成功率。

    令人兴奋!

  4. freethinky

    有人知道有没有类似的东西存在,并且被用于 .NET/C#,而且还在积极维护?不要像 Dafny 那样需要我用另一种语言写(我公司大概率不会允许)。另外最好是注解形式的(这样我就能直接开始用了)。

  5. nottorp

    这对新改进版 ubuntu coreutils 里的 bug 有帮助吗?

同日更多故事

2026-09-17