| # Quickstart |
| |
| This is a quickstart guide about getting the compiler running. For more |
| information on the individual steps, see the other pages in this chapter. |
| |
| First, clone the repository: |
| |
| ```sh |
| git clone https://github.com/rust-lang/rust.git |
| cd rust |
| ``` |
| |
| When building the compiler, we don't use `cargo` directly, instead we use a |
| wrapper called "x". It is invoked with `./x`. |
| |
| We need to create a configuration for the build. Use `./x setup` to create a |
| good default. |
| |
| ```sh |
| ./x setup |
| ``` |
| |
| Then, we can build the compiler. Use `./x build` to build the compiler, standard |
| library and a few tools. You can also `./x check` to just check it. All these |
| commands can take specific components/paths as arguments, for example `./x check |
| compiler` to just check the compiler. |
| |
| ```sh |
| ./x build |
| ``` |
| |
| > When doing a change to the compiler that does not affect the way it compiles |
| the standard library (so for example, a change to an error message), use |
| `--keep-stage-std 1` to avoid recompiling it. |
| |
| After building the compiler and standard library, you now have a working |
| compiler toolchain. You can use it with rustup by linking it. |
| |
| ```sh |
| rustup toolchain link stage1 build/host/stage1 |
| ``` |
| |
| Now you have a toolchain called `stage1` linked to your build. You can use it to |
| test the compiler. |
| |
| ```sh |
| rustc +stage1 testfile.rs |
| ``` |
| |
| After doing a change, you can run the compiler test suite with `./x test`. |
| |
| `./x test` runs the full test suite, which is slow and rarely what you want. |
| Usually, `./x test tests/ui` is what you want after a compiler change, testing |
| all [UI tests](../tests/ui.md) that invoke the compiler on a specific test file |
| and check the output. |
| |
| ```sh |
| ./x test tests/ui |
| ``` |
| |
| Use `--bless` if you've made a change and want to update the `.stderr` files |
| with the new output. |
| |
| > `./x suggest` can also be helpful for suggesting which tests to run after a |
| > change. |
| |
| Congrats, you are now ready to make a change to the compiler! If you have more |
| questions, [the full chapter](./how-to-build-and-run.md) might contain the |
| answers, and if it doesn't, feel free to ask for help on |
| [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp). |
| |
| If you use VSCode, Vim, Emacs or Helix, `./x setup` will ask you if you want to |
| set up the editor config. For more information, check out [suggested |
| workflows](./suggested.md). |