InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now. Learn more →
Top 8 Rust Verification Projects
-
Project mention: Matt Godbolt sold me on Rust (by showing me C++) | news.ycombinator.com | 2025-05-06
The point I'm sure was to prevent the checks from incurring runtime overhead in production. Even in release mode, the overflow will only wrap rather than trigger undefined behavior, so this won't cause memory corruption unless you are writing unsafe code that ignores the possibility of overflow.
The checks being on in the debug config means your tests and replications of bug reports will catch overflow if they occur. If you are working on some sensitive application where you can't afford logic bugs from overflows but can afford panics/crashes, you can just turn on checks in release mode.
If you are working on a library which is meant to do something sensible on overflow, you can use the wide variety of member functions such as 'wrapping_add' or 'checked_add' to control what happens on overflow regardless of build configuration.
Finally, if your application can't afford to have logic bugs from overflows and also can't panic, you can use kani [0] to prove that overflow never happens.
All in all, it seems to me like Rust supports a wide variety of use cases pretty nicely.
[0]: https://github.com/model-checking/kani
-
Stream
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video. Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
-
-
-
-
You tell it what you want it to prove. Or the tooling surrounding it does.
The tooling surrounding it might want to prove that "this main function never invokes undefined behavior", or something more local like "for all possible inputs to the public interface to this module, no undefined behavior is invoked".
Or you might want to specify constraints by hand. For examples, you might do that by writing normal tests except you can use magical variables that take on any value [1], or you might do that by annotating functions with contracts that they obey [2]. Or at a simpler level you might just annotate functions that should never panic.
Ultimately once you can prove things about your code, it's a tool in the toolbox for querying how your code works. You can use that to write correct code from the start, or to debug incorrect code, or various other things. The problem is that right now the state of the art (non-ai) can't reason about very complex code without a lot of human help - making it a fairly impractical tool. I think AI might mange to fix that.
[1] This is how kani works in rust, here's an example: https://github.com/model-checking/verify-rust-std/pull/112/f...
[2] Creusot takes this route, here's an example https://github.com/sarsko/CreuSAT/blob/master/CreuSAT/src/so...
-
anvil
Anvil is an experimental framework to build practical, formally verified, cluster management controllers. (by anvil-verifier)
-
-
InfluxDB
InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
-
Rust Verification discussion
Rust Verification related posts
-
LIMO: Less Is More for Reasoning
-
Rust is rolling off the Volvo assembly line
-
Re-fixing Servo's event-loop
-
Kani: A bit-precise model checker for Rust
-
Release Creusot 0.1 · creusot-rs/creusot
-
Verified Rust for low-level systems code
-
Creusot, a deductive verifier for Rust code
-
A note from our sponsor - InfluxDB
www.influxdata.com | 15 Jul 2025
Index
What are some of the best open-source Verification projects in Rust? This list will help you:
# | Project | Stars |
---|---|---|
1 | kani | 2,600 |
2 | prusti-dev | 1,656 |
3 | creusot | 1,297 |
4 | ed25519-dalek | 704 |
5 | CreuSAT | 648 |
6 | anvil | 122 |
7 | pyrustify | 17 |
8 | lincheck | 11 |