Skip to content

Commit 2d2ef06

Browse files
Document process for breaking changes
1 parent aadb894 commit 2d2ef06

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/breaking-changes/new-trait-impls.md

+6
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ let b = Arc::from("a");
3737
will no longer compile, because we've previously been relying on inference to figure out the `T` in `Box<T>`.
3838

3939
This kind of breakage can be ok, but a [crater](https://github.com/rust-lang/crater/blob/master/docs/bot-usage.md) run should estimate the scope.
40+
When implementing traits known to have this problem, crater should be run before initiating FCP,
41+
so information on the scope of the breakage is available before deciding to accept the change.
42+
This can include, but is not limited to,
43+
44+
- From
45+
- FromIterator
4046

4147
## Deref coercion breaks when a new impl is introduced
4248

src/breaking-changes/summary.md

+6
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,11 @@ Breaking changes should be avoided when possible.
44
[RFC 1105](https://rust-lang.github.io/rfcs/1105-api-evolution.html) lays the foundations for what constitutes a breaking change.
55
Breakage may be deemed acceptable or not based on its actual impact,
66
which can be approximated with a [crater](https://github.com/rust-lang/crater/blob/master/docs/bot-usage.md) run.
7+
Running crater should be done if nontrivial breakage is expected, so the information is
8+
available during the final comment period.
79

810
If the impact isn't too high, looping in maintainers of broken crates and submitting PRs to fix them can be a valid strategy.
11+
12+
# Breaking and the trains
13+
If a PR is merged and it turns out to have caused code to not compile during the nightly release cycle,
14+
unless there is a trivial fix, the PR should be reverted and a crater run should assess the impact.

0 commit comments

Comments
 (0)