Verus: A Practical Foundation for Systems Verification
- Andrea Lattuada ,
- Travis Hance ,
- Jay Bosamiya ,
- Matthias Brun ,
- Chanhee Cho ,
- Hayley LeBlanc ,
- Pranav Srinivasan ,
- Reto Achermann ,
- Tej Chajed ,
- Chris Hawblitzel ,
- Jon Howell ,
- Jay Lorch ,
- Oded Padon ,
- Bryan Parno
Distinguished Artifact Award
Download BibTexFormal verification is a promising approach to eliminate bugs at compile time, before they ship. Indeed, our community has verified a wide variety of system software. However, much of this success has required heroic developer effort, relied on bespoke logics for individual domains, or sacrificed expressiveness for powerful proof automation.
Building on prior work on Verus, we aim to enable faster, cheaper verification of rich properties for realistic systems. We do so by integrating and optimizing the best choices from prior systems, tuning our design to overcome barriers encountered in those systems, and introducing novel techniques.
We evaluate Verus’s effectiveness with a wide variety of case-study systems, including distributed systems, an OS page table, a library for NUMA-aware concurrent data structure replication, a crash-safe storage system, and a concurrent memory allocator, together comprising 6.1K lines of implementation and 31K lines of proof. Verus verifies code 3–61x faster and with less effort than the state of the art.
Our results suggest that Verus offers a platform for exploring the next frontiers in system-verification research. Because Verus builds on Rust, Verus is also positioned for wider use in production by developers who have already adopted Rust in the pursuit of more robust systems.