]> git.lizzy.rs Git - rust.git/blob - README.md
Handle size_of_val for slice types.
[rust.git] / README.md
1 # Miri
2
3 [[slides](https://solson.me/miri-slides.pdf)]
4 [[report](https://solson.me/miri-report.pdf)]
5
6 An experimental interpreter for [Rust][rust]'s [mid-level intermediate
7 representation][mir] (MIR). This project began as part of my work for the
8 undergraduate research course at the [University of Saskatchewan][usask].
9
10 [![Build Status](https://travis-ci.org/solson/miri.svg?branch=master)](https://travis-ci.org/solson/miri)
11
12 ## Download Rust nightly
13
14 I currently recommend that you install [multirust][multirust] and then use it to
15 install the current rustc nightly version:
16
17 ```sh
18 multirust update nightly
19 ```
20
21 ## Build
22
23 ```sh
24 multirust run nightly cargo build
25 ```
26
27 If Miri fails to build, it's likely because a change in the latest nightly
28 compiler broke it. You could try an older nightly with `multirust update
29 nightly-<date>` where `<date>` is a few days or weeks ago, e.g. `2016-05-20` for
30 May 20th. Otherwise, you could notify me in an issue or on IRC. Or, if you know
31 how to fix it, you could send a PR. :smile:
32
33 ## Run a test
34
35 ```sh
36 multirust run nightly cargo run -- \
37   --sysroot $HOME/.multirust/toolchains/nightly \
38   test/filename.rs
39 ```
40
41 If you are using [rustup][rustup] (the name of the multirust rewrite in Rust),
42 the `sysroot` path will also include your build target (e.g.
43 `$HOME/.multirust/toolchains/nightly-x86_64-apple-darwin`). You can see the
44 current toolchain's directory by running `rustup which cargo` (ignoring the
45 trailing `/bin/cargo`).
46
47 If you installed without using multirust or rustup, you'll need to adjust the
48 command to run your cargo and set the `sysroot` to the directory where your
49 Rust compiler is installed (`$sysroot/bin/rustc` should be a valid path).
50
51 ## License
52
53 Licensed under either of
54   * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
55     http://www.apache.org/licenses/LICENSE-2.0)
56   * MIT license ([LICENSE-MIT](LICENSE-MIT) or
57     http://opensource.org/licenses/MIT) at your option.
58
59 ### Contribution
60
61 Unless you explicitly state otherwise, any contribution intentionally submitted
62 for inclusion in the work by you shall be dual licensed as above, without any
63 additional terms or conditions.
64
65 [rust]: https://www.rust-lang.org/
66 [mir]: https://github.com/rust-lang/rfcs/blob/master/text/1211-mir.md
67 [usask]: https://www.usask.ca/
68 [multirust]: https://github.com/brson/multirust
69 [rustup]: https://www.rustup.rs