This repository is a fork of the official Rust programming language repository, created solely to verify the Rust standard library. It should not be used as an alternative to the official Rust releases. The repository is tool agnostic and welcomes the addition of new tools.
The goal is to have a verified Rust standard library and prove that it is safe.
- Contributing to the core mechanism of verifying the rust standard library
- Creating new techniques to perform scalable verification
- Apply techniques to verify previously unverified parts of the standard library.
The Kani Rust Verifier is a bit-precise model checker for Rust. Kani verifies:
- Memory safety (e.g., null pointer dereferences)
- User-specified assertions (i.e
assert!(...)
) - The absence of panics (eg.,
unwrap()
onNone
values) - The absence of some types of unexpected behavior (e.g., arithmetic overflows).
You can find out more about Kani from the Kani book or the Kani repository on Github.
For questions, suggestions or feedback, feel free to open an issue here.
See SECURITY for more information.
Kani is distributed under the terms of both the MIT license and the Apache License (Version 2.0). See LICENSE-APACHE and LICENSE-MIT for details.
Rust is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.
See the Rust repository for details.
Please use the template available in this repository to introduce a new verification tool.