33This is the main source code repository for [ Rust] . It contains the compiler,
44standard library, and documentation.
55
6- [ Rust ] : https://www.rust-lang.org
6+ [ Rust ] : https://www.rust-lang.org/
77
88** Note: this README is for _ users_ rather than _ contributors_ .**
9- If you wish to _ contribute_ to the compiler, you should read [ CONTRIBUTING.md] ( CONTRIBUTING.md ) instead.
9+ If you wish to _ contribute_ to the compiler, you should read
10+ [ CONTRIBUTING.md] ( CONTRIBUTING.md ) instead.
1011
1112## Quick Start
1213
@@ -20,13 +21,15 @@ Read ["Installation"] from [The Book].
2021The Rust build system uses a Python script called ` x.py ` to build the compiler,
2122which manages the bootstrapping process. It lives at the root of the project.
2223
23- The ` x.py ` command can be run directly on most Unix systems in the following format:
24+ The ` x.py ` command can be run directly on most Unix systems in the following
25+ format:
2426
2527``` sh
2628./x.py < subcommand> [flags]
2729```
2830
29- This is how the documentation and examples assume you are running ` x.py ` . Some alternative ways are:
31+ This is how the documentation and examples assume you are running ` x.py ` .
32+ Some alternative ways are:
3033
3134``` sh
3235# On a Unix shell if you don't have the necessary `python3` command
@@ -39,8 +42,8 @@ x.py <subcommand> [flags]
3942python x.py < subcommand> [flags]
4043```
4144
42- More information about ` x.py ` can be found
43- by running it with the ` --help ` flag or reading the [ rustc dev guide] [ rustcguidebuild ] .
45+ More information about ` x.py ` can be found by running it with the ` --help ` flag
46+ or reading the [ rustc dev guide] [ rustcguidebuild ] .
4447
4548[ gettingstarted ] : https://rustc-dev-guide.rust-lang.org/getting-started.html
4649[ rustcguidebuild ] : https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html
@@ -49,24 +52,29 @@ by running it with the `--help` flag or reading the [rustc dev guide][rustcguide
4952
5053Make sure you have installed the dependencies:
5154
52- * ` python ` 3 or 2.7
53- * ` git `
54- * A C compiler (when building for the host, ` cc ` is enough; cross-compiling may need additional compilers)
55- * ` curl ` (not needed on Windows)
56- * ` pkg-config ` if you are compiling on Linux and targeting Linux
57- * ` libiconv ` (already included with glibc on Debian-based distros)
55+ * ` python ` 3 or 2.7
56+ * ` git `
57+ * A C compiler (when building for the host, ` cc ` is enough; cross-compiling may
58+ need additional compilers)
59+ * ` curl ` (not needed on Windows)
60+ * ` pkg-config ` if you are compiling on Linux and targeting Linux
61+ * ` libiconv ` (already included with glibc on Debian-based distros)
5862
59- To build cargo, you'll also need OpenSSL (` libssl-dev ` or ` openssl-devel ` on most Unix distros).
63+ To build Cargo, you'll also need OpenSSL (` libssl-dev ` or ` openssl-devel ` on
64+ most Unix distros).
6065
6166If building LLVM from source, you'll need additional tools:
6267
6368* ` g++ ` , ` clang++ ` , or MSVC with versions listed on
6469 [ LLVM's documentation] ( https://llvm.org/docs/GettingStarted.html#host-c-toolchain-both-compiler-and-standard-library )
65- * ` ninja ` , or GNU ` make ` 3.81 or later (ninja is recommended, especially on Windows)
70+ * ` ninja ` , or GNU ` make ` 3.81 or later (Ninja is recommended, especially on
71+ Windows)
6672* ` cmake ` 3.13.4 or later
67- * ` libstdc++-static ` may be required on some Linux distributions such as Fedora and Ubuntu
73+ * ` libstdc++-static ` may be required on some Linux distributions such as Fedora
74+ and Ubuntu
6875
69- On tier 1 or tier 2 with host tools platforms, you can also choose to download LLVM by setting ` llvm.download-ci-llvm = true ` .
76+ On tier 1 or tier 2 with host tools platforms, you can also choose to download
77+ LLVM by setting ` llvm.download-ci-llvm = true ` .
7078Otherwise, you'll need LLVM installed and ` llvm-config ` in your path.
7179See [ the rustc-dev-guide for more info] [ sysllvm ] .
7280
@@ -86,52 +94,57 @@ See [the rustc-dev-guide for more info][sysllvm].
8694
87952 . Configure the build settings:
8896
89- The Rust build system uses a file named ` config.toml ` in the root of the
90- source tree to determine various configuration settings for the build.
91- Set up the defaults intended for distros to get started. You can see a full list of options
92- in ` config.toml.example ` .
97+ The Rust build system uses a file named ` config.toml ` in the root of the
98+ source tree to determine various configuration settings for the build.
99+ Set up the defaults intended for distros to get started. You can see a full
100+ list of options in ` config.toml.example ` .
93101
94- ``` sh
95- printf ' profile = "user" \nchangelog-seen = 2 \n' > config.toml
96- ```
102+ ``` sh
103+ printf ' profile = "user" \nchangelog-seen = 2 \n' > config.toml
104+ ```
97105
98- If you plan to use ` x.py install` to create an installation, it is recommended
99- that you set the ` prefix` value in the ` [install]` section to a directory.
106+ If you plan to use ` x.py install ` to create an installation, it is
107+ recommended that you set the ` prefix ` value in the ` [install] ` section to a
108+ directory.
100109
1011103 . Build and install:
102111
103- ` ` ` sh
104- ./x.py build && ./x.py install
105- ` ` `
112+ ``` sh
113+ ./x.py build && ./x.py install
114+ ```
106115
107- When complete, ` ./x.py install` will place several programs into
108- ` $PREFIX /bin` : ` rustc` , the Rust compiler, and ` rustdoc` , the
109- API-documentation tool. If you' ve set `profile = "user"` or `build.extended = true`, it will
110- also include [Cargo], Rust' s package manager.
116+ When complete, ` ./x.py install ` will place several programs into
117+ ` $PREFIX/bin ` : ` rustc ` , the Rust compiler, and ` rustdoc ` , the
118+ API-documentation tool. If you've set ` profile = "user" ` or
119+ ` build.extended = true ` , it will also include [ Cargo] , Rust's package
120+ manager.
111121
112122[ Cargo ] : https://github.com/rust-lang/cargo
113123
114124### Building on Windows
115125
116- On Windows, we suggest using [winget] to install dependencies by running the following in a terminal:
126+ On Windows, we suggest using [ winget] to install dependencies by running the
127+ following in a terminal:
117128
118129``` powershell
119130winget install -e Python.Python.3
120131winget install -e Kitware.CMake
121132winget install -e Git.Git
122133```
123134
124- Then edit your system' s `PATH` variable and add: `C:\Program Files\CMake\bin`. See
125- [this guide on editing the system `PATH`](https://www.java.com/en/download/help/path.html) from the
126- Java documentation.
135+ Then edit your system's ` PATH ` variable and add: ` C:\Program Files\CMake\bin ` .
136+ See
137+ [ this guide on editing the system ` PATH ` ] ( https://www.java.com/en/download/help/path.html )
138+ from the Java documentation.
127139
128140[ winget ] : https://github.com/microsoft/winget-cli
129141
130142There are two prominent ABIs in use on Windows: the native (MSVC) ABI used by
131143Visual Studio and the GNU ABI used by the GCC toolchain. Which version of Rust
132144you need depends largely on what C/C++ libraries you want to interoperate with.
133- Use the MSVC build of Rust to interop with software produced by Visual Studio and
134- the GNU build to interop with GNU software built using the MinGW/MSYS2 toolchain.
145+ Use the MSVC build of Rust to interop with software produced by Visual Studio
146+ and the GNU build to interop with GNU software built using the MinGW/MSYS2
147+ toolchain.
135148
136149#### MinGW
137150
@@ -144,7 +157,7 @@ the GNU build to interop with GNU software built using the MinGW/MSYS2 toolchain
1441572 . Run ` mingw32_shell.bat ` or ` mingw64_shell.bat ` from the MSYS2 installation
145158 directory (e.g. ` C:\msys64 ` ), depending on whether you want 32-bit or 64-bit
146159 Rust. (As of the latest version of MSYS2 you have to run `msys2_shell.cmd
147- -mingw32` or `msys2_shell.cmd -mingw64` from the command line instead)
160+ -mingw32` or ` msys2_shell.cmd -mingw64` from the command line instead. )
148161
1491623 . From this terminal, install the required tools:
150163
@@ -153,11 +166,11 @@ the GNU build to interop with GNU software built using the MinGW/MSYS2 toolchain
153166 pacman -Sy pacman-mirrors
154167
155168 # Install build tools needed for Rust. If you're building a 32-bit compiler,
156- # then replace "x86_64" below with "i686". If you've already got git, python ,
157- # or CMake installed and in PATH you can remove them from this list. Note
158- # that it is important that you do **not** use the 'python2', 'cmake' and 'ninja'
159- # packages from the 'msys2' subsystem. The build has historically been known
160- # to fail with these packages.
169+ # then replace "x86_64" below with "i686". If you've already got Git, Python ,
170+ # or CMake installed and in PATH you can remove them from this list.
171+ # Note that it is important that you do **not** use the 'python2', 'cmake',
172+ # and 'ninja' packages from the 'msys2' subsystem.
173+ # The build has historically been known to fail with these packages.
161174 pacman -S git \
162175 make \
163176 diffutils \
@@ -178,12 +191,12 @@ the GNU build to interop with GNU software built using the MinGW/MSYS2 toolchain
178191
179192MSVC builds of Rust additionally require an installation of Visual Studio 2017
180193(or later) so ` rustc ` can use its linker. The simplest way is to get
181- [ Visual Studio] , check the “ C++ build tools” and “ Windows 10 SDK” workload.
194+ [ Visual Studio] , check the " C++ build tools" and " Windows 10 SDK" workload.
182195
183196[ Visual Studio ] : https://visualstudio.microsoft.com/downloads/
184197
185- (If you're installing cmake yourself, be careful that “ C++ CMake tools for
186- Windows” doesn't get included under “ Individual components” .)
198+ (If you're installing CMake yourself, be careful that " C++ CMake tools for
199+ Windows" doesn't get included under " Individual components" .)
187200
188201With these dependencies installed, you can build the compiler in a ` cmd.exe `
189202shell with:
@@ -192,10 +205,11 @@ shell with:
192205python x.py build
193206```
194207
195- Right now, building Rust only works with some known versions of Visual Studio. If
196- you have a more recent version installed and the build system doesn't understand,
197- you may need to force rustbuild to use an older version. This can be done
198- by manually calling the appropriate vcvars file before running the bootstrap.
208+ Right now, building Rust only works with some known versions of Visual Studio.
209+ If you have a more recent version installed and the build system doesn't
210+ understand, you may need to force rustbuild to use an older version.
211+ This can be done by manually calling the appropriate vcvars file before running
212+ the bootstrap.
199213
200214``` batch
201215CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
@@ -215,9 +229,9 @@ Windows build triples are:
215229 - ` x86_64-pc-windows-msvc `
216230
217231The build triple can be specified by either specifying ` --build=<triple> ` when
218- invoking ` x.py ` commands, or by creating a ` config.toml ` file (as described
219- in [ Installing From Source] ( #installing-from-source ) ), and modifying the
220- ` build ` option under the ` [build] ` section.
232+ invoking ` x.py ` commands, or by creating a ` config.toml ` file (as described in
233+ [ Installing from Source] ( #installing-from-source ) ), and modifying the ` build `
234+ option under the ` [build] ` section.
221235
222236### Configure and Make
223237
@@ -229,33 +243,35 @@ configure script and makefile (the latter of which just invokes `x.py`).
229243make && sudo make install
230244```
231245
232- ` configure ` generates a ` config.toml ` which can also be used with normal ` x.py ` invocations.
246+ ` configure ` generates a ` config.toml ` which can also be used with normal ` x.py `
247+ invocations.
233248
234249## Building Documentation
235250
236- If you’ d like to build the documentation, it’ s almost the same:
251+ If you' d like to build the documentation, it' s almost the same:
237252
238253``` sh
239254./x.py doc
240255```
241256
242257The generated documentation will appear under ` doc ` in the ` build ` directory for
243- the ABI used. I.e. , if the ABI was ` x86_64-pc-windows-msvc ` , the directory will be
244- ` build\x86_64-pc-windows-msvc\doc ` .
258+ the ABI used. That is , if the ABI was ` x86_64-pc-windows-msvc ` , the directory
259+ will be ` build\x86_64-pc-windows-msvc\doc ` .
245260
246261## Notes
247262
248- Since the Rust compiler is written in Rust, it must be built by a
249- precompiled "snapshot" version of itself (made in an earlier stage of
250- development). As such, source builds require an Internet connection to
251- fetch snapshots, and an OS that can execute the available snapshot binaries.
263+ Since the Rust compiler is written in Rust, it must be built by a precompiled
264+ "snapshot" version of itself (made in an earlier stage of development).
265+ As such, source builds require an Internet connection to fetch snapshots, and an
266+ OS that can execute the available snapshot binaries.
252267
253- See https://doc.rust-lang.org/nightly/rustc/platform-support.html for a list of supported platforms.
254- Only "host tools" platforms have a pre-compiled snapshot binary available; to compile for a platform
255- without host tools you must cross-compile.
268+ See https://doc.rust-lang.org/nightly/rustc/platform-support.html for a list of
269+ supported platforms.
270+ Only "host tools" platforms have a pre-compiled snapshot binary available; to
271+ compile for a platform without host tools you must cross-compile.
256272
257- You may find that other platforms work, but these are our officially
258- supported build environments that are most likely to work.
273+ You may find that other platforms work, but these are our officially supported
274+ build environments that are most likely to work.
259275
260276## Getting Help
261277
@@ -267,23 +283,24 @@ See [CONTRIBUTING.md](CONTRIBUTING.md).
267283
268284## License
269285
270- Rust is primarily distributed under the terms of both the MIT license
271- and the Apache License (Version 2.0), with portions covered by various
272- BSD-like licenses.
286+ Rust is primarily distributed under the terms of both the MIT license and the
287+ Apache License (Version 2.0), with portions covered by various BSD-like
288+ licenses.
273289
274290See [ LICENSE-APACHE] ( LICENSE-APACHE ) , [ LICENSE-MIT] ( LICENSE-MIT ) , and
275291[ COPYRIGHT] ( COPYRIGHT ) for details.
276292
277293## Trademark
278294
279295[ The Rust Foundation] [ rust-foundation ] owns and protects the Rust and Cargo
280- trademarks and logos (the “ Rust Trademarks” ).
296+ trademarks and logos (the " Rust Trademarks" ).
281297
282- If you want to use these names or brands, please read the [ media guide] [ media-guide ] .
298+ If you want to use these names or brands, please read the
299+ [ media guide] [ media-guide ] .
283300
284301Third-party logos may be subject to third-party copyrights and trademarks. See
285302[ Licenses] [ policies-licenses ] for details.
286303
287304[ rust-foundation ] : https://foundation.rust-lang.org/
288- [ media-guide ] : https://www .rust-lang.org/policies/media-guide
305+ [ media-guide ] : https://foundation .rust-lang.org/policies/logo-policy-and- media-guide/
289306[ policies-licenses ] : https://www.rust-lang.org/policies/licenses
0 commit comments