about summary refs log tree commit diff
path: root/src/doc/rustc-dev-guide
diff options
context:
space:
mode:
authormark <markm@cs.wisc.edu>2020-04-04 13:17:04 -0500
committerWho? Me?! <mark-i-m@users.noreply.github.com>2020-04-18 11:11:33 -0500
commit943409bdfc4070923e81fff3dbd2838ef1f0873a (patch)
tree394cbd6706815294d2618625f5570a8eeb5afec6 /src/doc/rustc-dev-guide
parent1d95efa40012086cb999fb3edb5f16b5c1c73ec7 (diff)
downloadrust-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.md18
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