Tools and libraries
Tools
-
cargo-verify: a tool for compiling a crate and either verifying main/tests or for fuzzing main/tests. (Use the--backendflag to select which.)cargo-verifyuses similar command-line flags to the standardcargo-testtool. The--script=PATHflag generates a list of all the commands executed bycargo-verify.The source code is here.
-
rvt-patch-llvm: a tool for preprocessing LLVM bitfiles before verification. (Used bycargo-verify.)This fixes problems in LLVM bitfiles that are designed to be used for compilation or execution including
-
--featurescauses all processor feature test functions to return false. This is useful for disabling hand-vectorized code.See Using FFI for details.
-
--initializerscausesmainto call all initializers before it runs. This is useful for programs that usestd::env::args()to access the command line arguments.See Using ARGV for details.
-
--seahornfixes various problems that affect the SeaHorn backend.
The source code is here.
-
-
rust2calltree: a tool for fixing (demangling) function names in kcachegrind profile files.See Profiling Rust for usage.
The source code is here.
Libraries
-
verification-annotationscrate: an FFI layer for creating symbolic values in KLEE, Crux-MIR or SeaHorn.See Using verification-annotations for details.
-
propverifycrate: an implementation of the proptest library for use with static verification tools.See Using PropVerify for usage.
-
compatibility-testtest crate: test programs that can be verified either using the originalproptestlibrary or usingpropverify. Used to check that proptest and propverify are compatible with each other.Partly based on examples in the PropTest book.