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
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.
MIRAI is an abstract interpreter that operates on Rust's mid-level intermediate representation (MIR), designed to become a widely used static analysis tool for the Rust ecosystem. It helps developers improve code quality by detecting potential issues and verifying correctness properties through formal analysis. ## Key Features - **Panic Detection** — Identifies unintentional panics or suboptimal program termination paths - **Correctness Verification** — Validates program properties encoded via source annotations - **API Documentation** — Checks that explicit precondition annotations match the actual code implementation - **Security Analysis** — Performs taint analysis to find information leaks, code injection bugs, and side-channel vulnerabilities - **Path-Sensitive Analysis** — Conducts top-down, full-program analysis of package entry points - **Configurable Diagnostics** — Offers multiple diagnostic levels from default to paranoid for different analysis needs ## Philosophy MIRAI aims to make Rust code more reliable and better documented through rigorous static analysis, helping developers catch bugs early and maintain clear, verifiable contracts in their APIs.
A static analysis tool for Rust programs.
A coupling analysis tool for Rust projects - measuring the 'right distance' in your code
Compile-time assertions to ensure that invariants are met
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.