Verus: A Practical Foundation for Systems Verification

  • Andrea Lattuada ,
  • Travis Hance ,
  • ,
  • Matthias Brun ,
  • Chanhee Cho ,
  • Hayley LeBlanc ,
  • Pranav Srinivasan ,
  • Reto Achermann ,
  • Tej Chajed ,
  • ,
  • Jon Howell ,
  • ,
  • Oded Padon ,
  • Bryan Parno

2024 Symposium on Operating Systems Principles |

Formal 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.