This is a quickstart guide about getting the compiler running. For more information in the individual steps, see the other pages in this chapter.
First, clone the repository:
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".
On Unix-like platforms, use ./x
. On Windows, use .\x.ps1
. This guide will use ./x
.
We need to create a configuration for the build. Use ./x setup
to create a good default.
./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.
./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.
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.
rustc +stage 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 comiler change,
testing all "UI" tests that invoke the compiler on a specific test file and check the output.
./x test tests/ui
./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 might contain the answers, and if it doesn't, feel free to ask for help on Zulip.