Skip to content

Add quickstart for how to build and run the compiler #1951

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 31, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
# Building and debugging `rustc`

- [How to build and run the compiler](./building/how-to-build-and-run.md)
- [Quickstart](./building/quickstart.md)
- [Prerequisites](./building/prerequisites.md)
- [Suggested Workflows](./building/suggested.md)
- [Distribution artifacts](./building/build-install-distribution-artifacts.md)
Expand Down
5 changes: 5 additions & 0 deletions src/building/how-to-build-and-run.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
The compiler is built using a tool called `x.py`. You will need to
have Python installed to run it.

## Quick Start

For a less in-depth quick-start of getting the compiler running, see [quickstart](./quickstart.md).


## Get the source code

The main repository is [`rust-lang/rust`][repo]. This contains the compiler,
Expand Down
60 changes: 60 additions & 0 deletions src/building/quickstart.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Quickstart

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:

```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".
On Unix-like platforms, use `./x`. On Windows, use `.\x.ps1`. This guide will use `./x`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

./x should work on Windows too, if run from powershell, because it'll autocomplete the extension.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh, i will remove the sentence about windows and hope no one gets confused


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 +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.

```sh
./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](./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).
Loading