A tool for statically verifying the correctness of Rust code using formal specifications and automated solvers.
Verus is a verification tool for Rust that enables developers to write formal specifications for their code and then statically prove that the executable Rust code will always satisfy those specifications. It uses powerful solvers to mathematically verify correctness at compile time, going beyond Rust's standard type system to check low-level operations like raw pointer manipulation. The tool is designed to bring rigorous formal verification to practical Rust development, especially for safety-critical and low-level systems code.
Rust developers working on safety-critical systems, low-level systems code, or concurrent programs who need to prove correctness properties beyond what Rust's type system can guarantee. This includes developers in industries like embedded systems, operating systems, or security-sensitive applications where formal verification is valuable.
Developers choose Verus over alternatives because it provides static verification for a subset of Rust, using automated solvers to prove correctness for all possible executions without runtime overhead. Its unique selling point is the ability to verify low-level operations like raw pointer manipulation and concurrent code, which are often challenging for traditional type systems.
Verified Rust for low-level systems code
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses automated solvers to mathematically verify that code satisfies formal specifications for all possible executions, eliminating runtime checks as highlighted in the README.
Extends beyond Rust's standard type system to verify operations like raw pointer manipulation, making it suitable for safety-critical systems code, a key feature mentioned.
Includes specialized verification for concurrent programs, addressing complex correctness properties that are challenging with traditional type systems.
Backed by academic and industry projects, with publications and a growing community, as listed on the projects page, ensuring ongoing development and support.
The README explicitly states Verus is under active development with broken or missing features and incomplete documentation, making it unstable for production use.
Only supports a subset of Rust, which can limit its applicability to codebases using unsupported features like certain libraries or language constructs.
Requires learning formal specification techniques and integrating with external solvers, posing a steep learning curve and setup complexity for new users.