]> git.proxmox.com Git - rustc.git/blob - src/doc/rustc-dev-guide/src/contributing.md
bump version to 1.80.1+dfsg1-1~bpo12+pve1
[rustc.git] / src / doc / rustc-dev-guide / src / contributing.md
1 # Contribution Procedures
2
3 <!-- toc -->
4
5 ## Bug reports
6
7 While bugs are unfortunate, they're a reality in software. We can't fix what we
8 don't know about, so please report liberally. If you're not sure if something
9 is a bug or not, feel free to file a bug anyway.
10
11 **If you believe reporting your bug publicly represents a security risk to Rust users,
12 please follow our [instructions for reporting security vulnerabilities][vuln]**.
13
14 [vuln]: https://www.rust-lang.org/policies/security
15
16 If you're using the nightly channel, please check if the bug exists in the
17 latest toolchain before filing your bug. It might be fixed already.
18
19 If you have the chance, before reporting a bug, please [search existing issues],
20 as it's possible that someone else has already reported your error. This doesn't
21 always work, and sometimes it's hard to know what to search for, so consider this
22 extra credit. We won't mind if you accidentally file a duplicate report.
23
24 Similarly, to help others who encountered the bug find your issue, consider
25 filing an issue with a descriptive title, which contains information that might
26 be unique to it. This can be the language or compiler feature used, the
27 conditions that trigger the bug, or part of the error message if there is any.
28 An example could be: **"impossible case reached" on lifetime inference for impl
29 Trait in return position**.
30
31 Opening an issue is as easy as following [this
32 link](https://github.com/rust-lang/rust/issues/new/choose) and filling out the fields
33 in the appropriate provided template.
34
35 ## Bug fixes or "normal" code changes
36
37 For most PRs, no special procedures are needed. You can just [open a PR], and it
38 will be reviewed, approved, and merged. This includes most bug fixes,
39 refactorings, and other user-invisible changes. The next few sections talk
40 about exceptions to this rule.
41
42 Also, note that it is perfectly acceptable to open WIP PRs or GitHub [Draft PRs].
43 Some people prefer to do this so they can get feedback along the
44 way or share their code with a collaborator. Others do this so they can utilize
45 the CI to build and test their PR (e.g. when developing on a slow machine).
46
47 [open a PR]: #pull-requests
48 [Draft PRs]: https://github.blog/2019-02-14-introducing-draft-pull-requests/
49
50 ## New features
51
52 Rust has strong backwards-compatibility guarantees. Thus, new features can't
53 just be implemented directly in stable Rust. Instead, we have 3 release
54 channels: stable, beta, and nightly.
55
56 - **Stable**: this is the latest stable release for general usage.
57 - **Beta**: this is the next release (will be stable within 6 weeks).
58 - **Nightly**: follows the `master` branch of the repo. This is the only
59 channel where unstable, incomplete, or experimental features are usable with
60 feature gates.
61
62 See [this chapter on implementing new features](./implementing_new_features.md) for more
63 information.
64
65 ### Breaking changes
66
67 Breaking changes have a [dedicated section][Breaking Changes] in the dev-guide.
68
69 ### Major changes
70
71 The compiler team has a special process for large changes, whether or not they
72 cause breakage. This process is called a Major Change Proposal (MCP). MCP is a
73 relatively lightweight mechanism for getting feedback on large changes to the
74 compiler (as opposed to a full RFC or a design meeting with the team).
75
76 Example of things that might require MCPs include major refactorings, changes
77 to important types, or important changes to how the compiler does something, or
78 smaller user-facing changes.
79
80 **When in doubt, ask on [zulip]. It would be a shame to put a lot of work
81 into a PR that ends up not getting merged!** [See this document][mcpinfo] for
82 more info on MCPs.
83
84 [mcpinfo]: https://forge.rust-lang.org/compiler/mcp.html
85 [zulip]: https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler
86
87 ### Performance
88
89 Compiler performance is important. We have put a lot of effort over the last
90 few years into [gradually improving it][perfdash].
91
92 [perfdash]: https://perf.rust-lang.org/dashboard.html
93
94 If you suspect that your change may cause a performance regression (or
95 improvement), you can request a "perf run" (and your reviewer may also request one
96 before approving). This is yet another bot that will compile a collection of
97 benchmarks on a compiler with your changes. The numbers are reported
98 [here][perf], and you can see a comparison of your changes against the latest
99 master.
100
101 > For an introduction to the performance of Rust code in general
102 > which would also be useful in rustc development, see [The Rust Performance Book].
103
104 [perf]: https://perf.rust-lang.org
105 [The Rust Performance Book]: https://nnethercote.github.io/perf-book/
106
107 ## Pull requests
108
109 Pull requests (or PRs for short) are the primary mechanism we use to change Rust.
110 GitHub itself has some [great documentation][about-pull-requests] on using the
111 Pull Request feature. We use the "fork and pull" model [described here][development-models],
112 where contributors push changes to their personal fork and create pull requests to
113 bring those changes into the source repository. We have more info about how to use git
114 when contributing to Rust under [the git section](./git.md).
115
116 [about-pull-requests]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
117 [development-models]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models#fork-and-pull-model
118
119 ### r?
120
121 All pull requests are reviewed by another person. We have a bot,
122 [@rustbot], that will automatically assign a random person
123 to review your request based on which files you changed.
124
125 If you want to request that a specific person reviews your pull request, you
126 can add an `r?` to the pull request description or in a comment. For example,
127 if you want to ask a review to @awesome-reviewer, add
128
129 r? @awesome-reviewer
130
131 to the end of the pull request description, and [@rustbot] will assign
132 them instead of a random person. This is entirely optional.
133
134 You can also assign a random reviewer from a specific team by writing `r? rust-lang/groupname`.
135 As an example,
136 if you were making a diagnostics change,
137 then you could get a reviewer from the diagnostics team by adding:
138
139 r? rust-lang/diagnostics
140
141 For a full list of possible `groupname`s,
142 check the `adhoc_groups` section at the [triagebot.toml config file],
143 or the list of teams in the [rust-lang teams database].
144
145 ### Waiting for reviews
146
147 > NOTE
148 >
149 > Pull request reviewers are often working at capacity,
150 > and many of them are contributing on a volunteer basis.
151 > In order to minimize review delays,
152 > pull request authors and assigned reviewers should ensure that the review label
153 > (`S-waiting-on-review` and `S-waiting-on-author`) stays updated,
154 > invoking these commands when appropriate:
155 >
156 > - `@rustbot author`:
157 > the review is finished,
158 > and PR author should check the comments and take action accordingly.
159 >
160 > - `@rustbot review`:
161 > the author is ready for a review,
162 > and this PR will be queued again in the reviewer's queue.
163
164 Please note that the reviewers are humans, who for the most part work on `rustc`
165 in their free time. This means that they can take some time to respond and review
166 your PR. It also means that reviewers can miss some PRs that are assigned to them.
167
168 To try to move PRs forward, the Triage WG regularly goes through all PRs that
169 are waiting for review and haven't been discussed for at least 2 weeks. If you
170 don't get a review within 2 weeks, feel free to ask the Triage WG on
171 Zulip ([#t-release/triage]). They have knowledge of when to ping, who might be
172 on vacation, etc.
173
174 The reviewer may request some changes using the GitHub code review interface.
175 They may also request special procedures for some PRs.
176 See [Crater] and [Breaking Changes] chapters for some examples of such procedures.
177
178 [r?]: https://github.com/rust-lang/rust/pull/78133#issuecomment-712692371
179 [#t-release/triage]: https://rust-lang.zulipchat.com/#narrow/stream/242269-t-release.2Ftriage
180 [Crater]: tests/crater.md
181
182 ### CI
183
184 In addition to being reviewed by a human, pull requests are automatically tested,
185 thanks to continuous integration (CI). Basically, every time you open and update
186 a pull request, CI builds the compiler and tests it against the
187 [compiler test suite], and also performs other tests such as checking that
188 your pull request is in compliance with Rust's style guidelines.
189
190 Running continuous integration tests allows PR authors to catch mistakes early
191 without going through a first review cycle, and also helps reviewers stay aware
192 of the status of a particular pull request.
193
194 Rust has plenty of CI capacity, and you should never have to worry about wasting
195 computational resources each time you push a change. It is also perfectly fine
196 (and even encouraged!) to use the CI to test your changes if it can help your
197 productivity. In particular, we don't recommend running the full `./x test` suite locally,
198 since it takes a very long time to execute.
199
200 ### r+
201
202 After someone has reviewed your pull request, they will leave an annotation
203 on the pull request with an `r+`. It will look something like this:
204
205 @bors r+
206
207 This tells [@bors], our lovable integration bot, that your pull request has
208 been approved. The PR then enters the [merge queue], where [@bors]
209 will run *all* the tests on *every* platform we support. If it all works out,
210 [@bors] will merge your code into `master` and close the pull request.
211
212 Depending on the scale of the change, you may see a slightly different form of `r+`:
213
214 @bors r+ rollup
215
216 The additional `rollup` tells [@bors] that this change should always be "rolled up".
217 Changes that are rolled up are tested and merged alongside other PRs, to
218 speed the process up. Typically only small changes that are expected not to conflict
219 with one another are marked as "always roll up".
220
221 Be patient; this can take a while and the queue can sometimes be long. PRs are never merged by hand.
222
223 [@rustbot]: https://github.com/rustbot
224 [@bors]: https://github.com/bors
225
226 ### Opening a PR
227
228 You are now ready to file a pull request? Great! Here are a few points you
229 should be aware of.
230
231 All pull requests should be filed against the `master` branch,
232 unless you know for sure that you should target a different branch.
233
234 Make sure your pull request is in compliance with Rust's style guidelines by running
235
236 $ ./x test tidy --bless
237
238 We recommend to make this check before every pull request (and every new commit
239 in a pull request); you can add [git hooks]
240 before every push to make sure you never forget to make this check.
241 The CI will also run tidy and will fail if tidy fails.
242
243 Rust follows a _no merge-commit policy_, meaning, when you encounter merge
244 conflicts you are expected to always rebase instead of merging. E.g. always use
245 rebase when bringing the latest changes from the master branch to your feature
246 branch. If your PR contains merge commits, it will get marked as `has-merge-commits`.
247 Once you have removed the merge commits, e.g., through an interactive rebase, you
248 should remove the label again:
249
250 @rustbot label -has-merge-commits
251
252 See [this chapter][labeling] for more details.
253
254 If you encounter merge conflicts or when a reviewer asks you to perform some
255 changes, your PR will get marked as `S-waiting-on-author`. When you resolve
256 them, you should use `@rustbot` to mark it as `S-waiting-on-review`:
257
258 @rustbot ready
259
260 GitHub allows [closing issues using keywords][closing-keywords]. This feature
261 should be used to keep the issue tracker tidy. However, it is generally preferred
262 to put the "closes #123" text in the PR description rather than the issue commit;
263 particularly during rebasing, citing the issue number in the commit can "spam"
264 the issue in question.
265
266 However, if your PR fixes a stable-to-beta or stable-to-stable regression and has
267 been accepted for a beta and/or stable backport (i.e., it is marked `beta-accepted`
268 and/or `stable-accepted`), please do *not* use any such keywords since we don't
269 want the corresponding issue to get auto-closed once the fix lands on master.
270 Please update the PR description while still mentioning the issue somewhere.
271 For example, you could write `Fixes (after beta backport) #NNN.`.
272
273 As for further actions, please keep a sharp look-out for a PR whose title begins with
274 `[beta]` or `[stable]` and which backports the PR in question. When that one gets
275 merged, the relevant issue can be closed. The closing comment should mention all
276 PRs that were involved. If you don't have the permissions to close the issue, please
277 leave a comment on the original PR asking the reviewer to close it for you.
278
279 [labeling]: ./rustbot.md#issue-relabeling
280 [closing-keywords]: https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue
281
282 ## External dependencies
283
284 This section has moved to ["Using External Repositories"](./external-repos.md).
285
286 ## Writing documentation
287
288 Documentation improvements are very welcome. The source of `doc.rust-lang.org`
289 is located in [`src/doc`] in the tree, and standard API documentation is generated
290 from the source code itself (e.g. [`library/std/src/lib.rs`][std-root]). Documentation pull requests
291 function in the same way as other pull requests.
292
293 [`src/doc`]: https://github.com/rust-lang/rust/tree/master/src/doc
294 [std-root]: https://github.com/rust-lang/rust/blob/master/library/std/src/lib.rs#L1
295
296 To find documentation-related issues, sort by the [A-docs label].
297
298 You can find documentation style guidelines in [RFC 1574].
299
300 To build the standard library documentation, use `x doc --stage 0 library --open`.
301 To build the documentation for a book (e.g. the unstable book), use `x doc src/doc/unstable-book.`
302 Results should appear in `build/host/doc`, as well as automatically open in your default browser.
303 See [Building Documentation](./building/compiler-documenting.md#building-documentation) for more
304 information.
305
306 You can also use `rustdoc` directly to check small fixes. For example,
307 `rustdoc src/doc/reference.md` will render reference to `doc/reference.html`.
308 The CSS might be messed up, but you can verify that the HTML is right.
309
310 ### Contributing to rustc-dev-guide
311
312 Contributions to the [rustc-dev-guide] are always welcome, and can be made directly at
313 [the rust-lang/rustc-dev-guide repo][rdgrepo].
314 The issue tracker in that repo is also a great way to find things that need doing.
315 There are issues for beginners and advanced compiler devs alike!
316
317 Just a few things to keep in mind:
318
319 - Please try to avoid overly long lines and use semantic line breaks (so break the line after a sentence).
320 There is no strict limit on line lengths, let the sentence or part of the sentence flow to its proper end on the same line.
321 There is currently nothing stopping anyone from creating overly long lines, just do your best to avoid them.
322
323 - When contributing text to the guide, please contextualize the information with some time period
324 and/or a reason so that the reader knows how much to trust or mistrust the information.
325 Aim to provide a reasonable amount of context, possibly including but not limited to:
326
327 - A reason for why the data may be out of date other than "change",
328 as change is a constant across the project.
329
330 - The date the comment was added, e.g. instead of writing _"Currently, ..."_
331 or _"As of now, ..."_,
332 consider adding the date, in one of the following formats:
333 - Jan 2021
334 - January 2021
335 - jan 2021
336 - january 2021
337
338 There is a CI action (in `~/.github/workflows/date-check.yml`)
339 that generates a monthly issue with any of these that are over 6 months old.
340
341 For the action to pick the date,
342 add a special annotation before specifying the date:
343
344 ```md
345 <!-- date-check --> Jan 2023
346 ```
347
348 Example:
349
350 ```md
351 As of <!-- date-check --> Jan 2023, the foo did the bar.
352 ```
353
354 For cases where the date should not be part of the visible rendered output,
355 use the following instead:
356
357 ```md
358 <!-- date-check: Jan 2023 -->
359 ```
360
361 - A link to a relevant WG, tracking issue, `rustc` rustdoc page, or similar, that may provide
362 further explanation for the change process or a way to verify that the information is not
363 outdated.
364
365 - If a text grows rather long (more than a few page scrolls) or complicated (more than four
366 subsections) it might benefit from having a Table of Contents at the beginning, which you can
367 auto-generate by including the `<!-- toc -->` marker.
368
369 ## Issue triage
370
371 Sometimes, an issue will stay open, even though the bug has been fixed.
372 And sometimes, the original bug may go stale because something has changed in the meantime.
373
374 It can be helpful to go through older bug reports and make sure that they are still valid.
375 Load up an older issue, double check that it's still true,
376 and leave a comment letting us know if it is or is not.
377 The [least recently updated sort][lru] is good for finding issues like this.
378
379 [Thanks to `@rustbot`][rustbot], anyone can help triage issues by adding
380 appropriate labels to issues that haven't been triaged yet:
381
382 [lru]: https://github.com/rust-lang/rust/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-asc
383 [rustbot]: ./rustbot.md
384
385 <style>
386 .label-color {
387 border-radius:0.5em;
388 }
389 table td:nth-child(2) {
390 white-space: nowrap;
391 }
392
393 </style>
394
395 | Labels | Color | Description |
396 |--------|-------|-------------|
397 | [A-] | <span class="label-color" style="background-color:#f7e101;">&#x2003;</span>&nbsp;Yellow | The **area** of the project an issue relates to. |
398 | [B-] | <span class="label-color" style="background-color:#d304cb;">&#x2003;</span>&nbsp;Magenta | Issues which are **blockers**. |
399 | [beta-] | <span class="label-color" style="background-color:#1e76d9;">&#x2003;</span>&nbsp;Dark Blue | Tracks changes which need to be [backported to beta][beta-backport] |
400 | [C-] | <span class="label-color" style="background-color:#f5f1fd;">&#x2003;</span>&nbsp;Light Purple | The **category** of an issue. |
401 | [D-] | <span class="label-color" style="background-color:#c9f7a3;">&#x2003;</span>&nbsp;Mossy Green | Issues for **diagnostics**. |
402 | [E-] | <span class="label-color" style="background-color:#02e10c;">&#x2003;</span>&nbsp;Green | The **experience** level necessary to fix an issue. |
403 | [F-] | <span class="label-color" style="background-color:#f9c0cc;">&#x2003;</span>&nbsp;Peach | Issues for **nightly features**. |
404 | [I-] | <span class="label-color" style="background-color:#e10c02;">&#x2003;</span>&nbsp;Red | The **importance** of the issue. |
405 | [I-\*-nominated] | <span class="label-color" style="background-color:#e10c02;">&#x2003;</span>&nbsp;Red | The issue has been nominated for discussion at the next meeting of the corresponding team. |
406 | [I-prioritize] | <span class="label-color" style="background-color:#e10c02;">&#x2003;</span>&nbsp;Red | The issue has been nominated for prioritization by the team tagged with a **T**-prefixed label. |
407 | [L-] | <span class="label-color" style="background-color:#64E9CF;">&#x2003;</span>&nbsp;Teal | The relevant **lint**. |
408 | [metabug] | <span class="label-color" style="background-color:#5319e7;">&#x2003;</span>&nbsp;Purple | Bugs that collect other bugs. |
409 | [O-] | <span class="label-color" style="background-color:#6e6ec0;">&#x2003;</span>&nbsp;Purple Grey | The **operating system** or platform that the issue is specific to. |
410 | [P-] | <span class="label-color" style="background-color:#eb6420;">&#x2003;</span>&nbsp;Orange | The issue **priority**. These labels can be assigned by anyone that understand the issue and is able to prioritize it, and remove the [I-prioritize] label. |
411 | [regression-] | <span class="label-color" style="background-color:#e4008a;">&#x2003;</span>&nbsp;Pink | Tracks regressions from a stable release. |
412 | [relnotes] | <span class="label-color" style="background-color:#fad8c7;">&#x2003;</span>&nbsp;Light Orange | Changes that should be documented in the release notes of the next release. |
413 | [S-] | <span class="label-color" style="background-color:#d3dddd;">&#x2003;</span>&nbsp;Gray | Tracks the **status** of pull requests. |
414 | [S-tracking-] | <span class="label-color" style="background-color:#4682b4;">&#x2003;</span>&nbsp;Steel Blue | Tracks the **status** of [tracking issues]. |
415 | [stable-] | <span class="label-color" style="background-color:#00229c;">&#x2003;</span>&nbsp;Dark Blue | Tracks changes which need to be [backported to stable][stable-backport] in anticipation of a point release. |
416 | [T-] | <span class="label-color" style="background-color:#bfd4f2;">&#x2003;</span>&nbsp;Blue | Denotes which **team** the issue belongs to. |
417 | [WG-] | <span class="label-color" style="background-color:#c2e0c6;">&#x2003;</span>&nbsp;Green | Denotes which **working group** the issue belongs to. |
418
419
420 [A-]: https://github.com/rust-lang/rust/labels?q=A
421 [B-]: https://github.com/rust-lang/rust/labels?q=B
422 [C-]: https://github.com/rust-lang/rust/labels?q=C
423 [D-]: https://github.com/rust-lang/rust/labels?q=D
424 [E-]: https://github.com/rust-lang/rust/labels?q=E
425 [F-]: https://github.com/rust-lang/rust/labels?q=F
426 [I-]: https://github.com/rust-lang/rust/labels?q=I
427 [L-]: https://github.com/rust-lang/rust/labels?q=L
428 [O-]: https://github.com/rust-lang/rust/labels?q=O
429 [P-]: https://github.com/rust-lang/rust/labels?q=P
430 [S-]: https://github.com/rust-lang/rust/labels?q=S
431 [T-]: https://github.com/rust-lang/rust/labels?q=T
432 [WG-]: https://github.com/rust-lang/rust/labels?q=WG
433 [stable-]: https://github.com/rust-lang/rust/labels?q=stable
434 [beta-]: https://github.com/rust-lang/rust/labels?q=beta
435 [I-\*-nominated]: https://github.com/rust-lang/rust/labels?q=nominated
436 [I-prioritize]: https://github.com/rust-lang/rust/labels/I-prioritize
437 [tracking issues]: https://github.com/rust-lang/rust/labels/C-tracking-issue
438 [beta-backport]: https://forge.rust-lang.org/release/backporting.html#beta-backporting-in-rust-langrust
439 [stable-backport]: https://forge.rust-lang.org/release/backporting.html#stable-backporting-in-rust-langrust
440 [metabug]: https://github.com/rust-lang/rust/labels/metabug
441 [regression-]: https://github.com/rust-lang/rust/labels?q=regression
442 [relnotes]: https://github.com/rust-lang/rust/labels/relnotes
443 [S-tracking-]: https://github.com/rust-lang/rust/labels?q=s-tracking
444
445 ### Rfcbot labels
446
447 [rfcbot] uses its own labels for tracking the process of coordinating
448 asynchronous decisions, such as approving or rejecting a change.
449 This is used for [RFCs], issues, and pull requests.
450
451 | Labels | Color | Description |
452 |--------|-------|-------------|
453 | [proposed-final-comment-period] | <span class="label-color" style="background-color:#ededed;">&#x2003;</span>&nbsp;Gray | Currently awaiting signoff of all team members in order to enter the final comment period. |
454 | [disposition-merge] | <span class="label-color" style="background-color:#008800;">&#x2003;</span>&nbsp;Green | Indicates the intent is to merge the change. |
455 | [disposition-close] | <span class="label-color" style="background-color:#dd0000;">&#x2003;</span>&nbsp;Red | Indicates the intent is to not accept the change and close it. |
456 | [disposition-postpone] | <span class="label-color" style="background-color:#ededed;">&#x2003;</span>&nbsp;Gray | Indicates the intent is to not accept the change at this time and postpone it to a later date. |
457 | [final-comment-period] | <span class="label-color" style="background-color:#1e76d9;">&#x2003;</span>&nbsp;Blue | Currently soliciting final comments before merging or closing. |
458 | [finished-final-comment-period] | <span class="label-color" style="background-color:#f9e189;">&#x2003;</span>&nbsp;Light Yellow | The final comment period has concluded, and the issue will be merged or closed. |
459 | [postponed] | <span class="label-color" style="background-color:#fbca04;">&#x2003;</span>&nbsp;Yellow | The issue has been postponed. |
460 | [closed] | <span class="label-color" style="background-color:#dd0000;">&#x2003;</span>&nbsp;Red | The issue has been rejected. |
461 | [to-announce] | <span class="label-color" style="background-color:#ededed;">&#x2003;</span>&nbsp;Gray | Issues that have finished their final-comment-period and should be publicly announced. Note: the rust-lang/rust repository uses this label differently, to announce issues at the triage meetings. |
462
463 [disposition-merge]: https://github.com/rust-lang/rust/labels/disposition-merge
464 [disposition-close]: https://github.com/rust-lang/rust/labels/disposition-close
465 [disposition-postpone]: https://github.com/rust-lang/rust/labels/disposition-postpone
466 [proposed-final-comment-period]: https://github.com/rust-lang/rust/labels/proposed-final-comment-period
467 [final-comment-period]: https://github.com/rust-lang/rust/labels/final-comment-period
468 [finished-final-comment-period]: https://github.com/rust-lang/rust/labels/finished-final-comment-period
469 [postponed]: https://github.com/rust-lang/rfcs/labels/postponed
470 [closed]: https://github.com/rust-lang/rfcs/labels/closed
471 [to-announce]: https://github.com/rust-lang/rfcs/labels/to-announce
472 [rfcbot]: https://github.com/anp/rfcbot-rs/
473 [RFCs]: https://github.com/rust-lang/rfcs
474
475 ## Helpful links and information
476
477 This section has moved to the ["About this guide"] chapter.
478
479 ["About this guide"]: about-this-guide.md#other-places-to-find-information
480 [search existing issues]: https://github.com/rust-lang/rust/issues?q=is%3Aissue
481 [Breaking Changes]: bug-fix-procedure.md
482 [triagebot.toml config file]: https://github.com/rust-lang/rust/blob/HEAD/triagebot.toml
483 [rust-lang teams database]: https://github.com/rust-lang/team/tree/HEAD/teams
484 [compiler test suite]: tests/intro.md
485 [merge queue]: https://bors.rust-lang.org/queue/rust
486 [git hooks]: https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
487 [A-docs label]: https://github.com/rust-lang/rust/issues?q=is%3Aopen%20is%3Aissue%20label%3AA-docs
488 [RFC 1574]: https://github.com/rust-lang/rfcs/blob/master/text/1574-more-api-documentation-conventions.md#appendix-a-full-conventions-text
489 [rustc-dev-guide]: https://rustc-dev-guide.rust-lang.org/
490 [rdgrepo]: https://github.com/rust-lang/rustc-dev-guide