add a description of what miri can do for you
This commit is contained in:
parent
60a6a817d0
commit
c81e45f73a
1 changed files with 26 additions and 9 deletions
35
README.md
35
README.md
|
|
@ -1,13 +1,33 @@
|
|||
# Miri [[slides](https://solson.me/miri-slides.pdf)] [[report](https://solson.me/miri-report.pdf)] [](https://travis-ci.org/solson/miri) [](https://ci.appveyor.com/project/solson63299/miri)
|
||||
|
||||
|
||||
An experimental interpreter for [Rust][rust]'s [mid-level intermediate
|
||||
representation][mir] (MIR). This project began as part of my work for the
|
||||
undergraduate research course at the [University of Saskatchewan][usask].
|
||||
An experimental interpreter for [Rust][rust]'s
|
||||
[mid-level intermediate representation][mir] (MIR). It can run binaries and
|
||||
test suites of cargo projects and detect certain classes of undefined behavior,
|
||||
for example:
|
||||
|
||||
* Out-of-bounds memory accesses and use-after-free
|
||||
* Invalid use of uninitialized data
|
||||
* Violation of intrinsic preconditions (an [`unreachable_unchecked`] being
|
||||
reached, calling [`copy_nonoverlapping`] with overlapping ranges, ...)
|
||||
* Not sufficiently aligned memory accesses and references
|
||||
* Violation of basic type invariants (a `bool` that is not 0 or 1, for example,
|
||||
or an invalid enum discriminant)
|
||||
* WIP: Violations of the rules governing aliasing for reference types
|
||||
|
||||
This project began as part of an undergraduate research course at the
|
||||
[University of Saskatchewan][usask].
|
||||
|
||||
|
||||
[rust]: https://www.rust-lang.org/
|
||||
[mir]: https://github.com/rust-lang/rfcs/blob/master/text/1211-mir.md
|
||||
[usask]: https://www.usask.ca/
|
||||
[`unreachable_unchecked`]: https://doc.rust-lang.org/stable/std/hint/fn.unreachable_unchecked.html
|
||||
[`copy_nonoverlapping`]: https://doc.rust-lang.org/stable/std/ptr/fn.copy_nonoverlapping.html
|
||||
|
||||
## Building Miri
|
||||
|
||||
We recommend that you install [rustup][rustup] to obtain Rust. Then all you have
|
||||
We recommend that you install [rustup] to obtain Rust. Then all you have
|
||||
to do is:
|
||||
|
||||
```sh
|
||||
|
|
@ -25,6 +45,8 @@ To avoid repeating the nightly version all the time, you can use
|
|||
which means `nightly` Rust will automatically be used whenever you are working
|
||||
in this directory.
|
||||
|
||||
[rustup]: https://www.rustup.rs
|
||||
|
||||
## Running Miri
|
||||
|
||||
```sh
|
||||
|
|
@ -188,8 +210,3 @@ Licensed under either of
|
|||
Unless you explicitly state otherwise, any contribution intentionally submitted
|
||||
for inclusion in the work by you shall be dual licensed as above, without any
|
||||
additional terms or conditions.
|
||||
|
||||
[rust]: https://www.rust-lang.org/
|
||||
[mir]: https://github.com/rust-lang/rfcs/blob/master/text/1211-mir.md
|
||||
[usask]: https://www.usask.ca/
|
||||
[rustup]: https://www.rustup.rs
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue