--- title: Rustc Dev Guide WG - Check-ins tags: dev-guide, rustc --- ## 2024-02-01 ### Most notable changes - Document unsafety checking [#1847](https://github.com/rust-lang/rustc-dev-guide/pull/1847) - Add guide for rustdoc search implementation [#1846](https://github.com/rust-lang/rustc-dev-guide/pull/1846) - Add a chapter on editions. [#1835](https://github.com/rust-lang/rustc-dev-guide/pull/1835) - Replace experts map with reviewers from triagebot [#1831](https://github.com/rust-lang/rustc-dev-guide/pull/1831) - Explain the important concepts of exhaustiveness checking [#1830](https://github.com/rust-lang/rustc-dev-guide/pull/1830) - Update how-to-build-and-run.md [#1828](https://github.com/rust-lang/rustc-dev-guide/pull/1828) - Emphasize that the experts map is not up to date [#1826](https://github.com/rust-lang/rustc-dev-guide/pull/1826) - Update documentation for coverage tests [#1823](https://github.com/rust-lang/rustc-dev-guide/pull/1823) - add a new type system invariant [#1822](https://github.com/rust-lang/rustc-dev-guide/pull/1822) - Add explanations on how to run rustc_codegen_gcc tests [#1821](https://github.com/rust-lang/rustc-dev-guide/pull/1821) - notification groups: add information about how to ping them [#1818](https://github.com/rust-lang/rustc-dev-guide/pull/1818) - Add some documentation for unsizing [#1817](https://github.com/rust-lang/rustc-dev-guide/pull/1817) ### Most notable WIPs - Add overview.drawio.svg [#1725](https://github.com/rust-lang/rustc-dev-guide/pull/1725) - rewrite bootstrapping stages [#1650](https://github.com/rust-lang/rustc-dev-guide/pull/1650) - new chapter with examples of diagnostic translation PRs [#1621](https://github.com/rust-lang/rustc-dev-guide/pull/1621) - Improve documentation of MIR queries & passes [#1434](https://github.com/rust-lang/rustc-dev-guide/pull/1434) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) ## 2023-10-26 ### Most notable changes - Start a chapter about the evolving const effect system [#1808](https://github.com/rust-lang/rustc-dev-guide/pull/1808) - Document subtle implied bounds issue in RPITIT inference [#1807](https://github.com/rust-lang/rustc-dev-guide/pull/1807) - update new trait solver docs [#1802](https://github.com/rust-lang/rustc-dev-guide/pull/1802) - Clarify all the `{AP,RP}IT{,IT}` impl trait types [#1798](https://github.com/rust-lang/rustc-dev-guide/pull/1798) - Add deep dive document about early/late bound parameters interacting with turbofish [#1794](https://github.com/rust-lang/rustc-dev-guide/pull/1794) - explain the MIR const vs TY const situation [#1793](https://github.com/rust-lang/rustc-dev-guide/pull/1793) - Document the `coverage-map` and `run-coverage` test suites [#1790](https://github.com/rust-lang/rustc-dev-guide/pull/1790) - Add section about building an optimized version of `rustc` [#1787](https://github.com/rust-lang/rustc-dev-guide/pull/1787) - Add dropck documentation [#1767](https://github.com/rust-lang/rustc-dev-guide/pull/1767) - Add RPITIT documentation [#1764](https://github.com/rust-lang/rustc-dev-guide/pull/1764) - Explain more in depth what early and late bound generic parameters are [#1732](https://github.com/rust-lang/rustc-dev-guide/pull/1732) - add section for normalization with the new solver [#1731](https://github.com/rust-lang/rustc-dev-guide/pull/1731) - various fixes/improvements to Contributing chapter [#1723](https://github.com/rust-lang/rustc-dev-guide/pull/1723) - document `./x test --rustc-args` option [#1719](https://github.com/rust-lang/rustc-dev-guide/pull/1719) ### Most notable WIPs - Update some outdated descriptions of coverage instrumentation [#1809](https://github.com/rust-lang/rustc-dev-guide/pull/1809) - update some of the diagnostic translations info [#1711](https://github.com/rust-lang/rustc-dev-guide/pull/1711) - rewrite bootstrapping stages [#1650](https://github.com/rust-lang/rustc-dev-guide/pull/1650) - new chapter with examples of diagnostic translation PRs [#1621](https://github.com/rust-lang/rustc-dev-guide/pull/1621) - Add back the `canonicalization` chapter. [#1532](https://github.com/rust-lang/rustc-dev-guide/pull/1532) - Improve documentation of MIR queries & passes [#1434](https://github.com/rust-lang/rustc-dev-guide/pull/1434) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) ## 2023-06-29 ### Most notable changes - add stub for proof trees [#1700](https://github.com/rust-lang/rustc-dev-guide/pull/1700) - Include information about setup defaults in how-to-build guide [#1694](https://github.com/rust-lang/rustc-dev-guide/pull/1694) - Define more lint terms. [#1681](https://github.com/rust-lang/rustc-dev-guide/pull/1681) - extend the sixth trait system requirement [#1671](https://github.com/rust-lang/rustc-dev-guide/pull/1671) ### Most notable WIPs - Improve feature gate and x.py docs [#1701](https://github.com/rust-lang/rustc-dev-guide/pull/1701) - new chapter with examples of diagnostic translation PRs [#1621](https://github.com/rust-lang/rustc-dev-guide/pull/1621) - Add back the `canonicalization` chapter. [#1532](https://github.com/rust-lang/rustc-dev-guide/pull/1532) - Improve documentation of MIR queries & passes [#1434](https://github.com/rust-lang/rustc-dev-guide/pull/1434) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) ## 2023-04-13 ### Most notable changes - Reorganize "Getting Started" and add a "What should I work on?" section [#1665](https://github.com/rust-lang/rustc-dev-guide/pull/1665) - Consolidate, deduplicate, and link information for getting started [#1653](https://github.com/rust-lang/rustc-dev-guide/pull/1653) - Add chapter on fuzzing [#1646](https://github.com/rust-lang/rustc-dev-guide/pull/1646) - Update rustdoc-internals.md [#1644](https://github.com/rust-lang/rustc-dev-guide/pull/1644) - Update labels overview [#1639](https://github.com/rust-lang/rustc-dev-guide/pull/1639) ### Most notable WIPs - docs: document new `suggest-tests` tool [#1660](https://github.com/rust-lang/rustc-dev-guide/pull/1660) - Add documentation for RUSTC_EMIT [#1635](https://github.com/rust-lang/rustc-dev-guide/pull/1635) - new chapter with examples of diagnostic translation PRs [#1621](https://github.com/rust-lang/rustc-dev-guide/pull/1621) - Add back the `canonicalization` chapter. [#1532](https://github.com/rust-lang/rustc-dev-guide/pull/1532) - Improve documentation of MIR queries & passes [#1434](https://github.com/rust-lang/rustc-dev-guide/pull/1434) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) ## 2023-03-02 ### Most notable changes - new solver: write canonicalization chapter [#1595](https://github.com/rust-lang/rustc-dev-guide/pull/1595) - update bootstrap guide [#1583](https://github.com/rust-lang/rustc-dev-guide/pull/1583) - Add section on comparing types [#1570](https://github.com/rust-lang/rustc-dev-guide/pull/1570) - extend bootstrap related documentations [#1563](https://github.com/rust-lang/rustc-dev-guide/pull/1563) ### Most notable WIPs - new chapter with examples of diagnostic translation PRs [#1621](https://github.com/rust-lang/rustc-dev-guide/pull/1621) - Add back the `canonicalization` chapter. [#1532](https://github.com/rust-lang/rustc-dev-guide/pull/1532) - Improve documentation of MIR queries & passes [#1434](https://github.com/rust-lang/rustc-dev-guide/pull/1434) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) ## 2023-01-26 ### Most notable changes - Add a section for how to review code more easily [#1538](https://github.com/rust-lang/rustc-dev-guide/pull/1538) - Add help for when you update a submodule by accident [#1537](https://github.com/rust-lang/rustc-dev-guide/pull/1537) - Add more rebasing help [#1536](https://github.com/rust-lang/rustc-dev-guide/pull/1536) - Add documentation for LLVM KCFI support [#1529](https://github.com/rust-lang/rustc-dev-guide/pull/1529) - Simplify "how to build and run" section [#1528](https://github.com/rust-lang/rustc-dev-guide/pull/1528) - Remove TyS [#1526](https://github.com/rust-lang/rustc-dev-guide/pull/1526) ### Most notable WIPs - wip: extend bootstrap related documentations [#1563](https://github.com/rust-lang/rustc-dev-guide/pull/1563) - bootsrapping stages overview list [#1555](https://github.com/rust-lang/rustc-dev-guide/pull/1555) - add section for the new trait solver [#1551](https://github.com/rust-lang/rustc-dev-guide/pull/1551) - Add Neovim configuration information [#1545](https://github.com/rust-lang/rustc-dev-guide/pull/1545) - Add back the `canonicalization` chapter. [#1532](https://github.com/rust-lang/rustc-dev-guide/pull/1532) - Create a chapter for AST validation [#1524](https://github.com/rust-lang/rustc-dev-guide/pull/1524) - Add a review checklist and suggest reviews as a way to get started with the project [#1463](https://github.com/rust-lang/rustc-dev-guide/pull/1463) - Improve documentation of MIR queries & passes [#1434](https://github.com/rust-lang/rustc-dev-guide/pull/1434) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) ## 2022-12-08 ### Most notable changes - Remove TyS [#1526](https://github.com/rust-lang/rustc-dev-guide/pull/1526) - clarify subtree tool policy [#1518](https://github.com/rust-lang/rustc-dev-guide/pull/1518) - rewrite the section about regions in the trait solver [#1508](https://github.com/rust-lang/rustc-dev-guide/pull/1508) ### Most notable WIPs - Create a chapter for AST validation [#1524](https://github.com/rust-lang/rustc-dev-guide/pull/1524) - Add -Ztrack-diagnostics information [#1506](https://github.com/rust-lang/rustc-dev-guide/pull/1506) - Add sample CodeLLDB launch.json [#1482](https://github.com/rust-lang/rustc-dev-guide/pull/1482) - Add a review checklist and suggest reviews as a way to get started with the project [#1463](https://github.com/rust-lang/rustc-dev-guide/pull/1463) - rewrite bootstrapping stages [#1458](https://github.com/rust-lang/rustc-dev-guide/pull/1458) - Improve documentation of MIR queries & passes [#1434](https://github.com/rust-lang/rustc-dev-guide/pull/1434) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) ## 2022-10-27 ### Most notable changes - Update `traits/resolution.md` [#1494](https://github.com/rust-lang/rustc-dev-guide/pull/1494) - Update rust-analyzer suggestions [#1487](https://github.com/rust-lang/rustc-dev-guide/pull/1487) ### Most notable WIPs - Update outdated queries section [#1483](https://github.com/rust-lang/rustc-dev-guide/pull/1483) - Add sample CodeLLDB launch.json [#1482](https://github.com/rust-lang/rustc-dev-guide/pull/1482) - Add a review checklist and suggest reviews as a way to get started with the project [#1463](https://github.com/rust-lang/rustc-dev-guide/pull/1463) - rewrite bootstrapping stages [#1458](https://github.com/rust-lang/rustc-dev-guide/pull/1458) - Improve documentation of MIR queries & passes [#1434](https://github.com/rust-lang/rustc-dev-guide/pull/1434) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Update build instructions for rustdoc [#1117](https://github.com/rust-lang/rustc-dev-guide/pull/1117) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) ## 2022-09-22 ### Most notable changes - Document multipart_suggestion derive on SessionSubdiagnostic [#1446](https://github.com/rust-lang/rustc-dev-guide/pull/1446) - Document changes introduced by kind-less SessionDiagnostics [#1440](https://github.com/rust-lang/rustc-dev-guide/pull/1440) - diagnostics: fix outdated use of string slugs [#1436](https://github.com/rust-lang/rustc-dev-guide/pull/1436) ### Most notable WIPs - Add a review checklist and suggest reviews as a way to get started with the project [#1463](https://github.com/rust-lang/rustc-dev-guide/pull/1463) - date-check: updating-llvm [#1424](https://github.com/rust-lang/rustc-dev-guide/pull/1424) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) ## 2022-08-11 ### Most notable changes - Add bootstrapping diagram [#1421](https://github.com/rust-lang/rustc-dev-guide/pull/1421) - Add gdb tips for symbol-mangling-version [#1417](https://github.com/rust-lang/rustc-dev-guide/pull/1417) - Add instructions to fix build errors in std after adding a new target [#1412](https://github.com/rust-lang/rustc-dev-guide/pull/1412) - Add documentation about Microsoft provided debuggers and CodeView/PDB… [#1406](https://github.com/rust-lang/rustc-dev-guide/pull/1406) - Document how to build a cross-compiler [#1405](https://github.com/rust-lang/rustc-dev-guide/pull/1405) - sync with hackmd: Inference of opaque types (impl Trait) [#1399](https://github.com/rust-lang/rustc-dev-guide/pull/1399) - Update the build instructions for the standard library [#1389](https://github.com/rust-lang/rustc-dev-guide/pull/1389) ### Most notable WIPs - date-check: updating-llvm [#1424](https://github.com/rust-lang/rustc-dev-guide/pull/1424) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2022-07-07 ### Most notable changes - diagnostics: structs with new slug syntax [#1377](https://github.com/rust-lang/rustc-dev-guide/pull/1377) - diagnostics: more translation and diagnostic derive documentation [#1363](https://github.com/rust-lang/rustc-dev-guide/pull/1363) - add section on user types [#1359](https://github.com/rust-lang/rustc-dev-guide/pull/1359) ### Most notable WIPs - Describe Type Alias Impl Trait (TAIT) Inference Algorithm [#1297](https://github.com/rust-lang/rustc-dev-guide/pull/1297) ## 2022-05-26 ### Most notable changes - Add docs for logging of queries. [#1350](https://github.com/rust-lang/rustc-dev-guide/pull/1350) - mention `WithOptConstParam` [#1346](https://github.com/rust-lang/rustc-dev-guide/pull/1346) - Update docs for deprecated attribute [#1338](https://github.com/rust-lang/rustc-dev-guide/pull/1338) ### Most notable WIPs - Update suggested config to expand proc macros [#1341](https://github.com/rust-lang/rustc-dev-guide/pull/1341) - rewrite bootstrapping stages [#1327](https://github.com/rust-lang/rustc-dev-guide/pull/1327) - Describe Type Alias Impl Trait (TAIT) Inference Algorithm [#1297](https://github.com/rust-lang/rustc-dev-guide/pull/1297) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Update build instructions for rustdoc [#1117](https://github.com/rust-lang/rustc-dev-guide/pull/1117) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2022-04-21 ### Most notable changes - sessiondiagnostic: translation [#1333](https://github.com/rust-lang/rustc-dev-guide/pull/1333) - Add example how lints can be feature gated [#1332](https://github.com/rust-lang/rustc-dev-guide/pull/1332) - update section for type system constants [#1329](https://github.com/rust-lang/rustc-dev-guide/pull/1329) ### Most notable WIPs - rewrite bootstrapping stages [#1327](https://github.com/rust-lang/rustc-dev-guide/pull/1327) - Document ErrorGuaranteed [#1316](https://github.com/rust-lang/rustc-dev-guide/pull/1316) - Edit "What the compiler does to your code" [#1306](https://github.com/rust-lang/rustc-dev-guide/pull/1306) - Describe Type Alias Impl Trait (TAIT) Inference Algorithm [#1297](https://github.com/rust-lang/rustc-dev-guide/pull/1297) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Update build instructions for rustdoc [#1117](https://github.com/rust-lang/rustc-dev-guide/pull/1117) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2022-03-17 ### Most notable changes - Edit glossary [#1302](https://github.com/rust-lang/rustc-dev-guide/pull/1302) - Edit "Queries" chapter [#1301](https://github.com/rust-lang/rustc-dev-guide/pull/1301) ### Most notable WIPs - rewrite bootstrapping stages [#1327](https://github.com/rust-lang/rustc-dev-guide/pull/1327) - Document ErrorGuaranteed [#1316](https://github.com/rust-lang/rustc-dev-guide/pull/1316) - Edit "What the compiler does to your code" [#1306](https://github.com/rust-lang/rustc-dev-guide/pull/1306) - Describe Type Alias Impl Trait (TAIT) Inference Algorithm [#1297](https://github.com/rust-lang/rustc-dev-guide/pull/1297) - Extend debugging llvm section [#1290](https://github.com/rust-lang/rustc-dev-guide/pull/1290) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2022-02-10 ### Most notable changes - Clean up section about FCPs [#1287](https://github.com/rust-lang/rustc-dev-guide/pull/1287) - Streamline "Getting Started" some more. [#1286](https://github.com/rust-lang/rustc-dev-guide/pull/1286) ### Most notable WIPs - Describe Type Alias Impl Trait (TAIT) Inference Algorithm [#1297](https://github.com/rust-lang/rustc-dev-guide/pull/1297) - method-lookup.md improvements [#1296](https://github.com/rust-lang/rustc-dev-guide/pull/1296) - Extend debugging llvm section [#1290](https://github.com/rust-lang/rustc-dev-guide/pull/1290) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Update build instructions for rustdoc [#1117](https://github.com/rust-lang/rustc-dev-guide/pull/1117) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2022-01-06 ### Most notable changes - Streamline "Getting Started" [#1279](https://github.com/rust-lang/rustc-dev-guide/pull/1279) - Update LLVM coverage mapping format version supported by rustc [#1267](https://github.com/rust-lang/rustc-dev-guide/pull/1267) ### Most notable WIPs - Reorganize and expand the testing chapters. [#1281](https://github.com/rust-lang/rustc-dev-guide/pull/1281) - Add inline assembly internals [#1266](https://github.com/rust-lang/rustc-dev-guide/pull/1266) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2021-11-24 ### Most notable changes - Make subtree docs an overview and add link to clippy docs for details [#1244](https://github.com/rust-lang/rustc-dev-guide/pull/1244) - Describe drop elaboration [#1240](https://github.com/rust-lang/rustc-dev-guide/pull/1240) - Edit bootstrapping chapter [#1239](https://github.com/rust-lang/rustc-dev-guide/pull/1239) - Add documentation for LLVM CFI support [#1234](https://github.com/rust-lang/rustc-dev-guide/pull/1234) ### Most notable WIPs - Document more compiletest headers. [#1249](https://github.com/rust-lang/rustc-dev-guide/pull/1249) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2021-10-14 ### Most notable changes - Document tracing awesomeness [#1223](https://github.com/rust-lang/rustc-dev-guide/pull/1223) - Update sanitizer documentation [#1220](https://github.com/rust-lang/rustc-dev-guide/pull/1220) - Parallel codegen [#1206](https://github.com/rust-lang/rustc-dev-guide/pull/1206) - Parallel docs [#1203](https://github.com/rust-lang/rustc-dev-guide/pull/1203) ### Most notable WIPs - Remove docs on Assemble step [#1233](https://github.com/rust-lang/rustc-dev-guide/pull/1233) - Added detail to codegen section [#1216](https://github.com/rust-lang/rustc-dev-guide/pull/1216) - Update build instructions for rustdoc [#1117](https://github.com/rust-lang/rustc-dev-guide/pull/1117) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2021-09-02 ### Most notable changes - Documenting diagnostic items with their usage and naming conventions [#1192](https://github.com/rust-lang/rustc-dev-guide/pull/1192) - Expand THIR section with more details [#1183](https://github.com/rust-lang/rustc-dev-guide/pull/1183) - Add description of -opt-bisect-limit LLVM option [#1182](https://github.com/rust-lang/rustc-dev-guide/pull/1182) ### Most notable WIPs - `ty::Unevaluated`: dealing with unused substs [#1190](https://github.com/rust-lang/rustc-dev-guide/pull/1190) - Update build instructions for rustdoc [#1117](https://github.com/rust-lang/rustc-dev-guide/pull/1117) - Move "ctags" section into "Suggested Workflow" [#1115](https://github.com/rust-lang/rustc-dev-guide/pull/1115) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2021-07-22 - @**Yuki Okushi|217081** joined the team as a new co-lead, thanks @**Joshua Nelson** for everything you've done! - Not a lot has happened lately but here's a small set of changes and WIPs ... ### Most notable changes - Create issues for many TODOs [#1163](https://github.com/rust-lang/rustc-dev-guide/pull/1163) - Update information on lints [#1154](https://github.com/rust-lang/rustc-dev-guide/pull/1154) - Document how to mark features as incomplete [#1151](https://github.com/rust-lang/rustc-dev-guide/pull/1151) - Document how to run unit tests [#1141](https://github.com/rust-lang/rustc-dev-guide/pull/1141) ### Most notable WIPs - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) ## 2021-06-10 ### Most notable changes - explain Miri engine vs Miri-the-tool [#1134](https://github.com/rust-lang/rustc-dev-guide/pull/1134) - Add more information about no_hash query modifier. [#1133](https://github.com/rust-lang/rustc-dev-guide/pull/1133) - Describe the difference of rustc_lint vs rustc_lint_defs. [#1131](https://github.com/rust-lang/rustc-dev-guide/pull/1131) - Document -Zunpretty=thir-tree [#1128](https://github.com/rust-lang/rustc-dev-guide/pull/1128) - Update coverage docs [#1122](https://github.com/rust-lang/rustc-dev-guide/pull/1122) ### Most notable WIPs - Update for merge of CrateDisambiguator into StableCrateId [#1135](https://github.com/rust-lang/rustc-dev-guide/pull/1135) - Document lang items [#1119](https://github.com/rust-lang/rustc-dev-guide/pull/1119) - Move "ctags" section into "Suggested Workflow" [#1115](https://github.com/rust-lang/rustc-dev-guide/pull/1115) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) - rewrite ty.md [#1057](https://github.com/rust-lang/rustc-dev-guide/pull/1057) - improve glossary page [#1053](https://github.com/rust-lang/rustc-dev-guide/pull/1053) ## 2021-04-29 ### Most notable changes - Add sample nix shell [#1113](https://github.com/rust-lang/rustc-dev-guide/pull/1113) - Mention -Z unpretty=mir-cfg for debugging MIR [#1112](https://github.com/rust-lang/rustc-dev-guide/pull/1112) - Mention CI build of LLVM in build instructions [#1104](https://github.com/rust-lang/rustc-dev-guide/pull/1104) - Document test input normalization [#1098](https://github.com/rust-lang/rustc-dev-guide/pull/1098) - Add quickstart for adding a new optimization [#1094](https://github.com/rust-lang/rustc-dev-guide/pull/1094) - Add Polymorphisation paper [#1093](https://github.com/rust-lang/rustc-dev-guide/pull/1093) - Suggest using `git range-diff` [#1092](https://github.com/rust-lang/rustc-dev-guide/pull/1092) ### Most notable WIPs - Update build instructions for rustdoc [#1117](https://github.com/rust-lang/rustc-dev-guide/pull/1117) - Remove requests or suggestions about rebase and fixup contradictory to rust-highfive bot comment [#1111](https://github.com/rust-lang/rustc-dev-guide/pull/1111) - Document inert vs active attributes [#1110](https://github.com/rust-lang/rustc-dev-guide/pull/1110) - Explain the new valtree system for type level constants. [#1097](https://github.com/rust-lang/rustc-dev-guide/pull/1097) - Add a section on keeping things up to date in the git section [#1031](https://github.com/rust-lang/rustc-dev-guide/pull/1031) ## 2021-03-18 - Continuing to work on a walkthrough of the compiler - Added support for `-Z unpretty=ast` to the compiler [rust-lang/rust#82304](https://github.com/rust-lang/rust/pull/82304) - Added support for `-Z unpretty=thir` [rust-lang/rust#82860](https://github.com/rust-lang/rust/pull/82860) - Working on adding support for `-Z unpretty=hir` to playground [rust-playground#683](https://github.com/integer32llc/rust-playground/pull/683) - At some point we would like to add `-Z dump-metadata` or similar ### Most notable changes - Add article on using WPA to profile rustc memory usage on Windows [#1074](https://github.com/rust-lang/rustc-dev-guide/pull/1074) - Switch from Travis to GHA [#1073](https://github.com/rust-lang/rustc-dev-guide/pull/1073) - Fix date-check comment formatting [#1066](https://github.com/rust-lang/rustc-dev-guide/pull/1066) - Add Oxide paper to bibliography [#1056](https://github.com/rust-lang/rustc-dev-guide/pull/1056) - Use more accurate estimate of generated LLVM IR with llvm-lines [#1049](https://github.com/rust-lang/rustc-dev-guide/pull/1049) - Update docs from date triage for 2021-02 [#1048](https://github.com/rust-lang/rustc-dev-guide/pull/1048) ### Most notable WIPs - Fix rust compiler meeting info [#1087](https://github.com/rust-lang/rustc-dev-guide/pull/1087) - rewrite ty.md [#1057](https://github.com/rust-lang/rustc-dev-guide/pull/1057) - improve glossary page [#1053](https://github.com/rust-lang/rustc-dev-guide/pull/1053) - Add a section on keeping things up to date in the git section [#1031](https://github.com/rust-lang/rustc-dev-guide/pull/1031) - Document lang items [#978](https://github.com/rust-lang/rustc-dev-guide/pull/978) ## 2021-02-04 - 🎉 New members! [@camelid](https://github.com/rust-lang/team/pull/504), [@igaray](https://github.com/rust-lang/team/pull/503) and [@rylev](https://github.com/rust-lang/team/issues/532) joined the WG 🎉 - We are starting to plan on working on a walkthrough section. That would be a section of the guide where we show Rust code and show what the compiler is doing and how is transforming the data. - There are [41 merged PRs since our last check-in](https://github.com/rust-lang/rustc-dev-guide/pulls?q=is%3Apr+is%3Aclosed+sort%3Aupdated-desc+updated%3A%3E2020-12-10+) and [4 WIP PRs](https://github.com/rust-lang/rustc-dev-guide/pulls) ### Most notable changes - Document how to stabilize a library feature [#1036](https://github.com/rust-lang/rustc-dev-guide/pull/1036) - Note that `x.py check` now allows using any stage [#1025](https://github.com/rust-lang/rustc-dev-guide/pull/1025) - Add a note about UI test entry limitation [#1019](https://github.com/rust-lang/rustc-dev-guide/pull/1019) - Make instructions for configuring compiler for debug more explicit [#1005](https://github.com/rust-lang/rustc-dev-guide/pull/1005) - Clarify that `check` uses a different stage than `build` [#999](https://github.com/rust-lang/rustc-dev-guide/pull/999) - Update logging section and explain `RUSTC_LOG_COLOR` [#997](https://github.com/rust-lang/rustc-dev-guide/pull/997) - [Fixes #778] Added and reorganized lecture links [#993](https://github.com/rust-lang/rustc-dev-guide/pull/993) - Document `error-pattern` header [#989](https://github.com/rust-lang/rustc-dev-guide/pull/989) ### Most notable WIPs - Add chapter on libs and metadata. [#1044](https://github.com/rust-lang/rustc-dev-guide/pull/1044) - Document lang items [#978](https://github.com/rust-lang/rustc-dev-guide/pull/978) ## 2020-12-09 ### Changes - Adds a dev guide section on Rust Coverage [#985](https://github.com/rust-lang/rustc-dev-guide/pull/985) - Add notes about running the UI test suite [#977](https://github.com/rust-lang/rustc-dev-guide/pull/977) - Document what 'sysroot' means [#976](https://github.com/rust-lang/rustc-dev-guide/pull/976) - Add information about common git issues [#974](https://github.com/rust-lang/rustc-dev-guide/pull/974) - Improve contributor experience for the dev-guide itself [#973](https://github.com/rust-lang/rustc-dev-guide/pull/973) - Update bootstrap documentation with the new envvars for RUSTFLAGS [#970](https://github.com/rust-lang/rustc-dev-guide/pull/970) - Document how to modify feature gates [#968](https://github.com/rust-lang/rustc-dev-guide/pull/968) - Document when errors should have an associated error code [#967](https://github.com/rust-lang/rustc-dev-guide/pull/967) - add mir-opt section for optimization fuel [#963](https://github.com/rust-lang/rustc-dev-guide/pull/963) - Document the SessionDiagnostic derive macro. [#961](https://github.com/rust-lang/rustc-dev-guide/pull/961) - Add some more examples of using the compiler [#952](https://github.com/rust-lang/rustc-dev-guide/pull/952) - Add a section on identifiers in the MIR [#951](https://github.com/rust-lang/rustc-dev-guide/pull/951) - Add a section on data-flow convergence [#950](https://github.com/rust-lang/rustc-dev-guide/pull/950) - Document `src/tools/x`, an `x.py` wrapper [#945](https://github.com/rust-lang/rustc-dev-guide/pull/945) ### Changes in progress - Document lang items [#978](https://github.com/rust-lang/rustc-dev-guide/pull/978) ## 2020-10-22 - [75 merged PRs!](https://github.com/rust-lang/rustc-dev-guide/pulls?q=is%3Apr+sort%3Aupdated-desc+updated%3A%3E2020-09-03+) - Joshua Nelson is now a co-lead of the rustc-dev-guide working group! [team#449](https://github.com/rust-lang/team/pull/449) ### Authors - **@1c3t3a** - **@arora-aman** - **@bugadani** - **@caass** - **@camelid** - **@ecstatic-morse** - **@follower** - **@guswynn** - **@JakobDegen** - **@JOE1994** - **@JohnTitor** - **@Julian-Wollersberger** - **@jyn514** - **@LeSeulArtichaut** - **@macdonaldo** - **@mark-i-m** - **@matklad** - **@mautamu** - **@mightyiam** - **@Monadic-Cat** - **@Nadrieril** - **@pickfire** - **@r-52** - **@richkadel** - **@spastorino** - **@Stupremee** ### Major Changes Some minor changes are omitted for brevity. #### Contributor-facing changes - New content - Explain stages in terms of the compiler currently running (take N+1) [#857](https://github.com/rust-lang/rustc-dev-guide/pull/857) - Explain pattern exhaustiveness checking [#923](https://github.com/rust-lang/rustc-dev-guide/pull/923) - Added description of word Scrutinee to the glossary [#921](https://github.com/rust-lang/rustc-dev-guide/pull/921) - Add a paragraph about reviewers and review latency in Getting Started chapter [#907](https://github.com/rust-lang/rustc-dev-guide/pull/907) - Document the usage of cargo-llvm-lines and -Ztimings. [#905](https://github.com/rust-lang/rustc-dev-guide/pull/905) - Add docs for `x.py setup` [#899](https://github.com/rust-lang/rustc-dev-guide/pull/899) - Add section on using git [#890](https://github.com/rust-lang/rustc-dev-guide/pull/890) - add suggested workflow to setup nightly rustup for rust/ [#883](https://github.com/rust-lang/rustc-dev-guide/pull/883) - Describe how to generate graphviz diagrams for dataflow [#882](https://github.com/rust-lang/rustc-dev-guide/pull/882) - Add Salsa In More Depth lecture [#879](https://github.com/rust-lang/rustc-dev-guide/pull/879) - Document new way to not build LLVM [#878](https://github.com/rust-lang/rustc-dev-guide/pull/878) - Add a chapter on useful `@rustbot` commands [#874](https://github.com/rust-lang/rustc-dev-guide/pull/874) - Add a chapter on all the identifiers used through `rustc` [#872](https://github.com/rust-lang/rustc-dev-guide/pull/872) - Add information about default stages for x.py [#865](https://github.com/rust-lang/rustc-dev-guide/pull/865) - Document how to promote a target from cross-compiled to hosted [#860](https://github.com/rust-lang/rustc-dev-guide/pull/860) - Add section describing git hook functionality [#848](https://github.com/rust-lang/rustc-dev-guide/pull/848) - Document CGU partioning in case of generic and inline functions [#847](https://github.com/rust-lang/rustc-dev-guide/pull/847) - Improvements and fixes - Recommend debug-logging instead of debug [#917](https://github.com/rust--lang/rustc-dev-guide/pull/917) - Link to the -Zmir-opt-level proposal [#888](https://github.com/rust-lang/rustc-dev-guide/pull/888) - Don't recommend building the compiler for running tests on the standard library [#887](https://github.com/rust-lang/rustc-dev-guide/pull/887) - Improve instructions for adding a new test [#881](https://github.com/rust-lang/rustc-dev-guide/pull/881) - Improve MIR sections in appendix [#880](https://github.com/rust-lang/rustc-dev-guide/pull/880) - Update prerequisites, with an eye towards windows [#863](https://github.com/rust-lang/rustc-dev-guide/pull/863) - update docs to refer to the `compiler/` move [#846](https://github.com/rust-lang/rustc-dev-guide/pull/846) #### Internal changes - Linkcheck only changed files (except for cron jobs) [#913](https://github.com/rust-lang/rustc-dev-guide/pull/913). This fixes persistent issues with CI spuriously failing. - Allow anyone to change the status of a PR [#910](https://github.com/rust-lang/rustc-dev-guide/pull/910) ### Changes in progress - Add a `check-in.sh` script to automate writing markdown links for weekly check-in [#930](https://github.com/rust-lang/rustc-dev-guide/pull/930) ## 2020-09-03 - Rewrite/update compiler source code chapter [#765](https://github.com/rust-lang/rustc-dev-guide/pull/765) - Document serialization in rustc [#785](https://github.com/rust-lang/rustc-dev-guide/pull/785) - Expand on the documentation for polymorphization. [#803](https://github.com/rust-lang/rustc-dev-guide/pull/803) - Add basic steps for a new target [#805](https://github.com/rust-lang/rustc-dev-guide/pull/805) - Fix misguided suggestions in config.toml [#840](https://github.com/rust-lang/rustc-dev-guide/pull/840) - Adds documentation to cover spanview output [#844](https://github.com/rust-lang/rustc-dev-guide/pull/844) - @**mark-i-m**, formerly one of the working group leads, [has stepped down](https://internals.rust-lang.org/t/until-we-meet-again/12985) on their Rust involvement. @**mark-i-m** was a great co-lead with me and an awesome person to hang with. The work they've done is invaluable and it will be hugely missed. ### Changes in progress - Explain stages (take N) [#843](https://github.com/rust-lang/rustc-dev-guide/pull/843). This is an attempt by @jynelson to explain stages better for new contributors. However, after some discussion on the PR, it's not clear that the new explanation is better than the existing '`--stage N` runs `stageN/rustc`'. Opinions welcome! - Name `rustbuild` instead of saying 'the bootstrap binary' [#808](https://github.com/rust-lang/rustc-dev-guide/pull/808). This needs a consensus that it's actually useful terminology. - Fix dep-graph-caller-callee test location [#845](https://github.com/rust-lang/rustc-dev-guide/pull/845) - Update error codes to match the current implementation [#841](https://github.com/rust-lang/rustc-dev-guide/pull/841) ## 2020-07-16 [68 merged PRs!](https://github.com/rust-lang/rustc-dev-guide/pulls?page=1&q=closed%3A%3E%3D2020-05-28) In fact, there was so much stuff, that I ran out of time to curate it... here is a prefix of the list of PRs (heavily biased towards earlier PRs); there are so many people that deserve credit: - Aaron Hill - Andy Russell - Bastian Kauschke - Drew Youngwerth - Eric Huss - Florian Gilcher - Ivan Veselov - Joshua Nelson - LeSeulArtichaut - mark-i-m - Matt Kraai - Nadrieril - Niko Matsakis - pierwill - Ralf Jung - Santiago Pastorino - Takayuki Nakata - ThePuzzlemaker - Tomasz Miąsko - Tom Eccles - Yuki Okushi Accomplished: - Tons of new content: - [Getting Started Guide](https://github.com/rust-lang/rustc-dev-guide/pull/731) + many improvements - Type-system [697] - Diagnostics [716] - Building and testing `rustc` [723], [727], [728], [729], and many more - Writing tests [724], [725], [749] - Updates to various current content: - [Lints](https://github.com/rust-lang/rustc-dev-guide/pull/713) - [`TyKind::Error`](https://github.com/rust-lang/rustc-dev-guide/pull/715) - [Coding Conventions](https://github.com/rust-lang/rustc-dev-guide/pull/735) - Notification Groups [739], [740], and more - Some reorganization: - [753], [752], [763], [764], [767], [768], [773] [697]: https://github.com/rust-lang/rustc-dev-guide/pull/697 [716]: https://github.com/rust-lang/rustc-dev-guide/pull/716 [723]: https://github.com/rust-lang/rustc-dev-guide/pull/723 [727]: https://github.com/rust-lang/rustc-dev-guide/pull/727 [728]: https://github.com/rust-lang/rustc-dev-guide/pull/728 [729]: https://github.com/rust-lang/rustc-dev-guide/pull/729 [724]: https://github.com/rust-lang/rustc-dev-guide/pull/724 [725]: https://github.com/rust-lang/rustc-dev-guide/pull/725 [749]: https://github.com/rust-lang/rustc-dev-guide/pull/749 [739]: https://github.com/rust-lang/rustc-dev-guide/pull/739 [740]: https://github.com/rust-lang/rustc-dev-guide/pull/740 [753]: https://github.com/rust-lang/rustc-dev-guide/pull/753 [752]: https://github.com/rust-lang/rustc-dev-guide/pull/752 [763]: https://github.com/rust-lang/rustc-dev-guide/pull/763 [764]: https://github.com/rust-lang/rustc-dev-guide/pull/764 [767]: https://github.com/rust-lang/rustc-dev-guide/pull/767 [768]: https://github.com/rust-lang/rustc-dev-guide/pull/768 [773]: https://github.com/rust-lang/rustc-dev-guide/pull/773 ## 2020-05-28 Accomplished: - [Overview chapter is now merged](https://github.com/rust-lang/rustc-dev-guide/pull/633) - [You can view it here](https://rustc-dev-guide.rust-lang.org/overview.html) - Resolved tech debt: - [Added some notes from estabank about diagnostics](https://github.com/rust-lang/rustc-dev-guide/pull/524) - [Added more notes from ehuss about diagnostics](https://github.com/rust-lang/rustc-dev-guide/pull/716) - [Added some guidelines from ehuss on CLI flags](https://github.com/rust-lang/rustc-dev-guide/pull/717) - [Clean up the trait-solving chapters](https://github.com/rust-lang/rustc-dev-guide/pull/679) - [Make it possible to link to specific items in the glossary](https://github.com/rust-lang/rustc-dev-guide/pull/662) - [Finally finished the macro expansion chapter from discussions with petrochenkov (this is a long-standing hole)](https://github.com/rust-lang/rustc-dev-guide/pull/683) - [Added some (limited) notes about parallel compilation](https://github.com/rust-lang/rustc-dev-guide/pull/695) - [Added and updated notes on `rustc_interface` (thanks to georgewfraser)](https://rustc-dev-guide.rust-lang.org/rustc-driver.html) - [Resolved some old TODOs around the type system](https://github.com/rust-lang/rustc-dev-guide/pull/697) - [Added "Debugging rustc type layouts" (thanks Ralf!)](https://github.com/rust-lang/rustc-dev-guide/pull/720) - [39 merged PRs](https://github.com/rust-lang/rustc-dev-guide/pulls?page=1&q=is%3Aclosed+closed%3A%3E2020-04-08) - [15 closed issues (a few were very long-standing)](https://github.com/rust-lang/rustc-dev-guide/issues?q=is%3Aissue+is%3Aclosed+closed%3A%3E2020-04-08+) We've also had a few discussions to flesh out the guide vs forge content. Next steps: - Focus on triaging issues in the repo for a full sprint - Try to close/consolidate old issues, resolve low-hanging fruit - Do a second pass about the organization of the guide - Re-visit part 1, decide what we want to keep vs the forge vs the compiler-team repo - Want to have a "Getting started" section at the front that has relatively straight-forward list of commands to do common things; move some content there from CONTRIBUTING.md - Thinking about an instrospection section that contains debugging/profiling/walkthrough/tools/etc. ## 2020-04-08 Accomplished - Lots of progress on Overview chapter, nearing mergable version - Reorganized the guide in a more logical way - Renamed the wg to wg-rustc-dev-guide - Started an initial list of PRs for the cookbook-style appendix - still needs curation - https://hackmd.io/xD2fQk_cT_ui6Nt40jHPwA?view - The rustc-dev-guide has recently gotten a bunch of great new content - anp added a very well-written chapter about `#[track_caller]` and implicit caller location - georgewfraser added some new content about using the `rustc_interface`, replacing our outdated `stupid-stats` appendix (which was taken from nrc's fantastic blog post) - michaelwoerister added content about query attributes, which was previously a grand mystery to me - arlosi added content about hashes in binaries - Fixed toolstate (at long last) Next steps: - Finish work on Overview chapter - WIP: chrissimpkins has done a lot of work to collect more info about lexing and parsing from centril, petrochenkov, and matklad to improve those chapters - Continue on cookbook-style appendix for PRs that help understanding some parts of the compiler - Continue work on filling in holes for backend chapters ## 2020-03-26 Accomplished: - Draft of Overview chapter, include a high-level walkthrough of what the compiler does to your code - Draft PR: https://github.com/rust-lang/rustc-dev-guide/pull/633 - Blog post to solicit feedback: https://github.com/rust-lang/blog.rust-lang.org/pull/551 - Renamed rustc-guide to rustc-dev-guide - Blog post: https://blog.rust-lang.org/inside-rust/2020/03/13/rename-rustc-guide.html - Went through nagisa's notes on backend and transcribed into a chapter about the compiler backend: https://rustc-dev-guide.rust-lang.org/backend/backend.html - Still needs filling out a bit more Next steps: - Continue work on Overview chapter - Decided to collect a document with holes in the current backend chapters (there are a lot) and fill them in incrementally, since it seems all of the backend experts are not available for a lecture/extended discussion. - HackMd to collect holes: https://hackmd.io/fTJHEkb5TXuKh2ClBL_c_w - Do a cookbook-style appendix for PRs that help understanding some parts of the compiler - May try to rename the WG to better reflect purpose - Possibility of filling out the parser chapter better with Centril (pending their availability). - Will try to improve the organization of the guide by reordering chapters. ## 2019-12-05 Acomplished: - We have a [chapter about Salsa](https://github.com/rust-lang/rustc-guide/pull/529), it was summarized from this [lecture](https://www.youtube.com/watch?v=_muY4HjSqVw) - We have a [PR for the ty chapter PR](https://github.com/rust-lang/rustc-guide/pull/530), it summarizes [this lecture](https://www.youtube.com/watch?v=c01TsOsr3-c) - We had a [planning meeting](https://rust-lang.zulipchat.com/#narrow/stream/196385-t-compiler.2Fwg-learning/topic/planning.20meeting), where we come up with a [document with ideas and next steps](https://hackmd.io/iamkyR_QTdSIdGjYQX_XjQ) for the rustc-guide. We've basically defined kind of a roadmap and a way to work towards those goals. Next steps: - Start writing an Overview chapter - Organize a lecture about codegen mir -> llvm IR (@nagisa, maybe?) - Organize a lecture about LLVM (@Alex Crichton, maybe?) - Organize a lecture about monomorphization/type memory layout (@oli, maybe?)