11# Miri [[ slides] ( https://solson.me/miri-slides.pdf )] [[ report] ( https://solson.me/miri-report.pdf )] [ ![ Build Status] ( https://travis-ci.org/solson/miri.svg?branch=master )] ( https://travis-ci.org/solson/miri ) [ ![ Windows build status] ( https://ci.appveyor.com/api/projects/status/github/solson/miri?svg=true )] ( https://ci.appveyor.com/project/solson63299/miri )
22
33
4- An experimental interpreter for [ Rust] [ rust ] 's [ mid-level intermediate
5- representation] [ mir ] (MIR). This project began as part of my work for the
6- undergraduate research course at the [ University of Saskatchewan] [ usask ] .
4+ An experimental interpreter for [ Rust] [ rust ] 's
5+ [ mid-level intermediate representation] [ mir ] (MIR). It can run binaries and
6+ test suites of cargo projects and detect certain classes of undefined behavior,
7+ for example:
8+
9+ * Out-of-bounds memory accesses and use-after-free
10+ * Invalid use of uninitialized data
11+ * Violation of intrinsic preconditions (an [ ` unreachable_unchecked ` ] being
12+ reached, calling [ ` copy_nonoverlapping ` ] with overlapping ranges, ...)
13+ * Not sufficiently aligned memory accesses and references
14+ * Violation of basic type invariants (a ` bool ` that is not 0 or 1, for example,
15+ or an invalid enum discriminant)
16+ * WIP: Violations of the rules governing aliasing for reference types
17+
18+ This project began as part of an undergraduate research course at the
19+ [ University of Saskatchewan] [ usask ] .
20+
21+
22+ [ rust ] : https://www.rust-lang.org/
23+ [ mir ] : https://github.com/rust-lang/rfcs/blob/master/text/1211-mir.md
24+ [ usask ] : https://www.usask.ca/
25+ [ `unreachable_unchecked` ] : https://doc.rust-lang.org/stable/std/hint/fn.unreachable_unchecked.html
26+ [ `copy_nonoverlapping` ] : https://doc.rust-lang.org/stable/std/ptr/fn.copy_nonoverlapping.html
727
828## Building Miri
929
10- We recommend that you install [ rustup] [ rustup ] to obtain Rust. Then all you have
30+ We recommend that you install [ rustup] to obtain Rust. Then all you have
1131to do is:
1232
1333``` sh
@@ -25,6 +45,8 @@ To avoid repeating the nightly version all the time, you can use
2545which means ` nightly ` Rust will automatically be used whenever you are working
2646in this directory.
2747
48+ [ rustup ] : https://www.rustup.rs
49+
2850## Running Miri
2951
3052``` sh
@@ -188,8 +210,3 @@ Licensed under either of
188210Unless you explicitly state otherwise, any contribution intentionally submitted
189211for inclusion in the work by you shall be dual licensed as above, without any
190212additional terms or conditions.
191-
192- [ rust ] : https://www.rust-lang.org/
193- [ mir ] : https://github.com/rust-lang/rfcs/blob/master/text/1211-mir.md
194- [ usask ] : https://www.usask.ca/
195- [ rustup ] : https://www.rustup.rs
0 commit comments