Verus is a tool for verifying the correctness of code written in Rust. Developers write specifications of what their code should do, and Verus statically checks that the executable Rust code will always satisfy the specifications for all possible executions of the code. Rather than adding run-time checks, Verus instead relies on powerful solvers to prove the code is correct. Verus currently supports a subset of Rust (which we are working to expand), and in some cases, it allows developers to go beyond the standard Rust type system and statically check the correctness of code that, for example, manipulates raw pointers.
Verus is under active development. Features may be broken and/or missing, and the documentation is still incomplete. If you want to try Verus, please be prepared to ask for help in the 💬 Zulip.
The Verus community has published a number of research papers, and there are a variety of industry and academic projects using Verus. You can find a list on our publications and projects page. If you're using Verus please consider adding your project to that page (see the instructions there).
To try Verus in your browser, please visit the Verus Playground. For more involved development, please follow our installation instructions. Then you can dive into the documentation below, starting with the 📖 Tutorial and reference. We also support an auto-formatter (verusfmt) for your Verus code.
Our (work-in-progress) documentation resources include:
- 📖 Tutorial and reference
- 📖 API documentation for Verus's standard library
- 📖 Guide for verifying concurrent code
- Project Goals
- Contributing to Verus
- Verus License
- Verus Logos
In addition to the documentation above, it can be helpful to see Verus used in action. Here are some starting points.
- Publications and projects using Verus.
- Standalone examples showing Verus in use for small, concrete tasks.
- Small and medium-sized examples illustrating various Verus features
- Unit tests for Verus, containing examples of Verus syntax and features.
Please report issues or start discussions here on GitHub, or join us on 💬 Zulip for more realtime discussions and if you need help. Thank you for using and contributing to Verus!
We use GitHub discussions for feature requests and more open-ended conversations about upcoming features, and we reserve GitHub issues for actionable issues (bugs) with existing features. Don't worry though: if we think an issue should be a discussion (or vice versa) we can always move it later.
We welcome contributions! If you'd like to contribute code, have a look at the tips in Contributing to Verus.
Zulip sponsors free hosting for Verus. Zulip is an open-source modern team chat app designed to keep both live and asynchronous conversations organized.
Special thanks to Johanna Polzin for her contribution to the design of the Verus Logo. The Verus logos (bitmap and vector) are by the Verus Contributors and licensed under the terms of Creative Commons Attribution 4.0 International license.