-# miri
+# Miri
-An experimental interpreter for [Rust][rust]'s [mid-level
-intermediate representation][mir] (MIR). This project is part of my course work
-for an undergraduate research course at the [University of Saskatchewan][usask].
+An experimental interpreter for [Rust][rust]'s [mid-level intermediate
+representation][mir] (MIR). This project began as a part of my course work for
+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/
+## Download Rust nightly
+
+I currently recommend that you install [multirust][multirust] and then use it to
+install the current rustc nightly version that works with Miri:
+
+```sh
+multirust update nightly-2016-04-05
+```
+
+## Build
+
+```sh
+multirust run nightly-2016-04-05 cargo build
+```
+
+## Run a test
+
+```sh
+multirust run nightly-2016-04-05 cargo run -- \
+ --sysroot $HOME/.multirust/toolchains/nightly-2016-04-05
+ test/filename.rs
+```
+
+If you installed without using multirust, you'll need to adjust the command to
+run your cargo and set the `sysroot` to the directory where your rust compiler
+is installed (`$sysroot/bin/rustc` should be a valid path).
## License
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/
+[multirust]: https://github.com/brson/multirust
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute, box_syntax)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute, specialization)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute, box_syntax)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]
+#![crate_type = "lib"]
#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]