|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "rustc-dev-guide Overview" |
| 4 | +author: "Chris Simpkins" |
| 5 | +description: "2020-03-26 rustc-dev-guide Overview" |
| 6 | +team: the Learning Working Group <https://www.rust-lang.org/governance/teams/compiler#wg-learning> |
| 7 | +--- |
| 8 | + |
| 9 | +The `rustc` compiler includes over 380,000 lines of source across more than 40 crates<sup>1</sup> to support the lexing through binary linking stages of the Rust compile process. It is daunting for newcomers, and we recognize that a high-level survey of the pipeline is warranted. |
| 10 | + |
| 11 | +In our [December update](https://blog.rust-lang.org/inside-rust/2019/12/20/wg-learning-update.html), we announced plans for the publication of the "rustc-dev-guide Overview". Our goal is to describe the integrated components of the compiler in a high-level document for users and potential developers. The Overview will be published at the beginning of the [rustc-dev-guide](https://rustc-dev-guide.rust-lang.org/) to orient readers to the more detailed documentation of the compiler in subsequent chapters. |
| 12 | + |
| 13 | +## Rustc Overview Structure |
| 14 | + |
| 15 | +We will break the compiler down to address two questions at a high-level: |
| 16 | + |
| 17 | +1. What does the compiler do to your source code? |
| 18 | +2. How does the compiler do it? |
| 19 | + |
| 20 | +As we address these general areas, we will provide a synopsis that briefly covers frequent community questions like: |
| 21 | + |
| 22 | +- What are the conflicting goals of the compiler, and how are issues like compiler speed, compiler memory usage, program speed, program size, and compiler stability/correctness balanced? |
| 23 | +- What are the stages of the compile process, and how do they fit together? |
| 24 | +- What are the intermediate representations of my source code? |
| 25 | +- What happens to generics during the compile process? |
| 26 | +- What kind of optimizations are performed during the compile process? |
| 27 | +- How does incremental compilation work? |
| 28 | +- Does `rustc` have support for parallel compilation? |
| 29 | + |
| 30 | +## Get Involved! |
| 31 | + |
| 32 | +Work is in progress on the Overview, and we need your help. A working draft of the document is available in [this pull request](https://github.com/rust-lang/rustc-dev-guide/pull/633) on the `rustc-dev-guide` GitHub repository. |
| 33 | + |
| 34 | +If there is an area of `rustc` that you would like to understand better and it is appropriate for an overview document, please open an issue on our [issue tracker](https://github.com/rust-lang/rustc-dev-guide/issues) to let us know. |
| 35 | + |
| 36 | +And if you know the compiler and want to pitch in on the rustc-dev-guide Overview, open a pull request with your revisions. We welcome your contributions and look forward to your participation! |
| 37 | + |
| 38 | +## Interested in Learning (Working Group)? |
| 39 | + |
| 40 | +Are you interested in learning more about the `rustc` compiler and teaching others? Drop by our [Zulip stream](https://rust-lang.zulipchat.com/#narrow/stream/196385-t-compiler.2Fwg-learning) and say hello! |
| 41 | + |
| 42 | +--- |
| 43 | + |
| 44 | +<sup>1</sup> These numbers account for lines in Rust files across all dependencies necessary to build `rustc`. Thanks to @LeSeulArtichaut for these calculations! See [the notes on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/196385-t-compiler.2Fwg-learning/topic/The.20Rustc.20Overview.3A.20blog.20post/near/189441101) for additional details. |
0 commit comments