]> git.lizzy.rs Git - rust.git/blobdiff - CONTRIBUTING.md
Store protectors outside Item, pack Tag and Perm
[rust.git] / CONTRIBUTING.md
index c2290a966b239baf74c9b3eb34ba57f960cbda54..bde1921eb8ce467fbb85e5b86443ea7ebf2ce0ee 100644 (file)
@@ -60,8 +60,8 @@ generation and linking obviously will have no effect) [and more][miri-flags].
 For example, you can (cross-)run the driver on a particular file by doing
 
 ```sh
-./miri run tests/run-pass/format.rs
-./miri run tests/run-pass/hello.rs --target i686-unknown-linux-gnu
+./miri run tests/pass/format.rs
+./miri run tests/pass/hello.rs --target i686-unknown-linux-gnu
 ```
 
 and you can (cross-)run the entire test suite using:
@@ -71,6 +71,16 @@ and you can (cross-)run the entire test suite using:
 MIRI_TEST_TARGET=i686-unknown-linux-gnu ./miri test
 ```
 
+If your target doesn't support libstd, you can run miri with
+
+```
+MIRI_NO_STD=1 MIRI_TEST_TARGET=thumbv7em-none-eabihf ./miri test tests/fail/alloc/no_global_allocator.rs
+MIRI_NO_STD=1 ./miri run tests/pass/no_std.rs --target thumbv7em-none-eabihf
+```
+
+to avoid attempting (and failing) to build libstd. Note that almost no tests will pass
+this way, but you can run individual tests.
+
 `./miri test FILTER` only runs those tests that contain `FILTER` in their
 filename (including the base directory, e.g. `./miri test fail` will run all
 compile-fail tests).
@@ -79,7 +89,7 @@ You can get a trace of which MIR statements are being executed by setting the
 `MIRI_LOG` environment variable.  For example:
 
 ```sh
-MIRI_LOG=info ./miri run tests/run-pass/vec.rs
+MIRI_LOG=info ./miri run tests/pass/vec.rs
 ```
 
 Setting `MIRI_LOG` like this will configure logging for Miri itself as well as
@@ -88,7 +98,7 @@ can also do more targeted configuration, e.g. the following helps debug the
 stacked borrows implementation:
 
 ```sh
-MIRI_LOG=rustc_mir::interpret=info,miri::stacked_borrows ./miri run tests/run-pass/vec.rs
+MIRI_LOG=rustc_mir::interpret=info,miri::stacked_borrows ./miri run tests/pass/vec.rs
 ```
 
 In addition, you can set `MIRI_BACKTRACE=1` to get a backtrace of where an
@@ -134,7 +144,14 @@ build Miri yourself, the Miri shipped by `rustup` will work. All you have to do
 is set the `MIRI_LIB_SRC` environment variable to the `library` folder of a
 `rust-lang/rust` repository checkout. Note that changing files in that directory
 does not automatically trigger a re-build of the standard library; you have to
-clear the Miri build cache manually (on Linux, `rm -rf ~/.cache/miri`).
+clear the Miri build cache manually (on Linux, `rm -rf ~/.cache/miri`;
+and on Windows, `rmdir /S "%LOCALAPPDATA%\rust-lang\miri\cache"`).
+
+### Benchmarking
+
+Miri comes with a few benchmarks; you can run `./miri bench` to run them with the locally built
+Miri. Note: this will run `./miri install` as a side-effect. Also requires `hyperfine` to be
+installed (`cargo install hyperfine`).
 
 ## Configuring `rust-analyzer`
 
@@ -143,19 +160,24 @@ to `.vscode/settings.json` in your local Miri clone:
 
 ```json
 {
+    "rust-analyzer.rustc.source": "discover",
+    "rust-analyzer.linkedProjects": [
+        "./Cargo.toml",
+        "./cargo-miri/Cargo.toml"
+    ],
     "rust-analyzer.checkOnSave.overrideCommand": [
         "./miri",
         "check",
         "--message-format=json"
     ],
+    "rust-analyzer.buildScripts.overrideCommand": [
+        "./miri",
+        "check",
+        "--message-format=json",
+    ],
     "rust-analyzer.rustfmt.extraArgs": [
         "+nightly"
     ],
-    "rust-analyzer.rustcSource": "discover",
-    "rust-analyzer.linkedProjects": [
-        "./Cargo.toml",
-        "./cargo-miri/Cargo.toml"
-    ]
 }
 ```
 
@@ -226,7 +248,8 @@ rustup override set stage2
 ```
 
 Important: You need to delete the Miri cache when you change the stdlib; otherwise the
-old, chached version will be used. On Linux, the cache is located at `~/.cache/miri`; the exact
+old, chached version will be used. On Linux, the cache is located at `~/.cache/miri`,
+and on Windows, it is located at `%LOCALAPPDATA%\rust-lang\miri\cache`; the exact
 location is printed after the library build: "A libstd for Miri is now available in ...".
 
 Note: `./x.py --stage 2 compiler/rustc` currently errors with `thread 'main'