blob: 7badbee2c82162996d6d598ec0638a268b8a0c17 [file] [view]
# Contribution procedures
## Bug reports
While bugs are unfortunate, they're a reality in software.
We can't fix what we don't know about, so please report liberally.
If you're not sure if something is a bug, feel free to open an issue anyway.
**If you believe reporting your bug publicly represents a security risk to Rust users,
please follow our [instructions for reporting security vulnerabilities][vuln]**.
[vuln]: https://www.rust-lang.org/policies/security
If you're using the nightly channel, please check if the bug exists in the
latest toolchain before filing your bug.
It might be fixed already.
If you have the chance, before reporting a bug, please [search existing issues],
as it's possible that someone else has already reported your error.
This doesn't always work, and sometimes it's hard to know what to search for, so consider this
extra credit.
We won't mind if you accidentally file a duplicate report.
Similarly, to help others who encountered the bug find your issue, consider
filing an issue with a descriptive title, which contains information that might be unique to it.
This can be the language or compiler feature used, the
conditions that trigger the bug, or part of the error message if there is any.
An example could be: **"impossible case reached" on lifetime inference for impl
Trait in return position**.
Opening an issue is as easy as following [this link][create an issue] and filling out the fields
in the appropriate provided template.
[search existing issues]: https://github.com/rust-lang/rust/issues?q=is%3Aissue
[create an issue]: https://github.com/rust-lang/rust/issues/new/choose
## Other procedures
Other contribution procedures are documented with the parts of the guide that own them:
<a id="bug-fixes-or-normal-code-changes"></a>
<a id="pull-requests"></a>
- For routine changes or large, cross-cutting pull requests, see [normal code changes](getting-started.md#bug-fixes-or-normal-code-changes), [PR lifecycle](./pr-lifecycle.md), and [pull request guidance](getting-started.md#pull-requests).
<a id="new-features"></a>
<a id="breaking-changes"></a>
<a id="major-changes"></a>
- For new features, major changes, and breaking changes, see [Implementing new language features](implementing-new-features.md) and [Procedures for breaking changes](bug-fix-procedure.md).
<a id="performance"></a>
- For performance-sensitive changes, see [Performance testing](tests/perf.md#performance-considerations).
<a id="writing-documentation"></a>
- For compiler documentation, see [Contributing documentation](building/compiler-documenting.md#contributing-documentation).
<a id="issue-triage"></a>
- For issue triage, see [Issue triage](getting-started.md#issue-triage).
<a id="llm-guidance"></a>
- For guidance on LLM usage, see [Running LLMs](llm-guidance.md).
<a id="contributing-to-rustc-dev-guide"></a>
- For changes to this guide itself, see [Writing rustc-dev-guide documentation](contributing-to-guide.md).
<a id="external-dependencies"></a>
- For external dependencies, see [Using external repositories](external-repos.md).
<a id="helpful-links-and-information"></a>
- For further resources, see [About this guide](about-this-guide.md#other-places-to-find-information).