diff options
| author | mark <markm@cs.wisc.edu> | 2020-04-04 13:17:04 -0500 |
|---|---|---|
| committer | Who? Me?! <mark-i-m@users.noreply.github.com> | 2020-04-18 11:11:33 -0500 |
| commit | 943409bdfc4070923e81fff3dbd2838ef1f0873a (patch) | |
| tree | 394cbd6706815294d2618625f5570a8eeb5afec6 /src/doc/rustc-dev-guide | |
| parent | 1d95efa40012086cb999fb3edb5f16b5c1c73ec7 (diff) | |
| download | rust-943409bdfc4070923e81fff3dbd2838ef1f0873a.tar.gz rust-943409bdfc4070923e81fff3dbd2838ef1f0873a.zip | |
write a bit about bootstrapping
Diffstat (limited to 'src/doc/rustc-dev-guide')
| -rw-r--r-- | src/doc/rustc-dev-guide/src/overview.md | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/doc/rustc-dev-guide/src/overview.md b/src/doc/rustc-dev-guide/src/overview.md index d92142e38ee..7b8cae839b0 100644 --- a/src/doc/rustc-dev-guide/src/overview.md +++ b/src/doc/rustc-dev-guide/src/overview.md @@ -270,7 +270,23 @@ but there are already some promising performance improvements. ### Bootstrapping -**TODO (or do we want such a section)?** +`rustc` itself is written in Rust. So how do we compile the compiler? We use an +older compiler to compile the newer compiler. This is called _bootstrapping_. + +Bootstrapping has a lot of interesting implications. For example, it means that one +of the major users of Rust is Rust, so we are constantly testing our own +software ("eating our own dogfood"). Also, it means building the compiler can +take a long time because one must first build the compiler and then use that to +build the new compiler (sometimes you can get away without the full 2-stage +build, but for release artifacts you need the 2-stage build). + +Bootstrapping also has implications for when features are usable in the +compiler itself. The build system uses the current beta compiler to build the +stage-1 bootstrapping compiler. This means that the compiler source code can't +use some features until they reach beta (because otherwise the beta compiler +doesn't support them). On the other hand, for compiler intrinsics and internal +features, we may be able to use them immediately because the stage-1 +bootstrapping compiler will support them. # Unresolved Questions |
