|
1 | 1 | # Getting started
|
2 | 2 |
|
3 |
| -Kani is a Rust verification tool based on _model checking_. With Kani, you can |
4 |
| -ensure that wide classes of problems are absent from your Rust code by writing |
5 |
| -_proof harnesses_, which are broadly similar to tests (especially property |
6 |
| -tests). |
| 3 | +Kani is an open-source verification tool that uses automated reasoning to analyze Rust programs. |
| 4 | +Kani is particularly useful for verifying unsafe code in Rust, where many of the Rust’s usual guarantees are no longer checked by the compiler. |
| 5 | +Some example properties you can prove with Kani include memory safety properties (e.g., null pointer dereferences, use-after-free, etc.), the absence of certain runtime errors (i.e., panics), and the absence of some types of unexpected behavior (e.g., arithmetic overflows). |
| 6 | +Kani can also prove custom properties provided in the form of user-specified assertions. |
7 | 7 |
|
8 |
| -Kani is particularly useful for verifying unsafe code in Rust, where |
9 |
| -many of the language's usual guarantees can no longer be checked by the |
10 |
| -compiler. But it's also useful for finding panics and check user-defined |
11 |
| -assertions in safe Rust. |
| 8 | +Kani uses proof harnesses to analyze programs. Proof harnesses are similar to test harnesses, especially property-based test harnesses. |
12 | 9 |
|
13 | 10 | ## Project Status
|
14 | 11 |
|
15 | 12 | Kani is currently under active development and has not made an official release yet.
|
16 |
| -There is support for a fair amount of the Rust language features, but not all of them. |
17 |
| -If you encounter issues when using Kani we encourage you to [report them to us](https://github.com/model-checking/kani/issues/new/choose). |
| 13 | +There is support for a fair amount of Rust language features, but not all (e.g., concurrency). |
| 14 | +Please see [Limitations - Rust feature support](./rust-feature-support.md) for a detailed list of supported features. |
18 | 15 |
|
19 |
| -Kani usually synchronizes with the main branch of Rust every two weeks, and so |
20 |
| -is generally up-to-date with the latest Rust language features. |
| 16 | +Kani usually synchronizes with the nightly release of Rust every two weeks, and so is generally up-to-date with the latest Rust language features. |
| 17 | + |
| 18 | +If you encounter issues when using Kani, we encourage you to [report them to us](https://github.com/model-checking/kani/issues/new/choose). |
0 commit comments