Skip to content

Commit aa3d37c

Browse files
authored
Update release-notes.md
1 parent 86997a5 commit aa3d37c

File tree

1 file changed

+15
-93
lines changed

1 file changed

+15
-93
lines changed

release-notes.md

Lines changed: 15 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -3,100 +3,22 @@ layout: default
33
title: How to prepare Rust release notes · The Rust Programming Language
44
---
55

6-
_[Originally posted to the "milestone predictions" thread on internals.rlo](https://internals.rust-lang.org/t/rust-release-milestone-predictions/4591/33)._
6+
The release notes for the next release should be compiled at the beginning of
7+
the beta cycle, 6 weeks ahead of the release.
78

8-
Ideally the notes for the next release are compiled at the beginning
9-
of the beta cycle, 6 weeks ahead of the release.
9+
Clone the [relnotes] utility. This program pulls all pull requests made against
10+
`rust-lang/rust` and `rust-lang/cargo` within the latest release cycle and
11+
prints out a markdown document containing all the pull requests, categorised
12+
into their respective sections where possible, and prints the document to
13+
`stdout`.
1014

11-
Copy the previous version's section in README.md to a new section and
12-
strip out all the items. Reuse the existing section structure, but
13-
look out for themes in the release that might warrant other
14-
sections. e.g. sometimes there's a lot of interesting perf commits, or
15-
rustdoc commits.
15+
Only pull requests that impact stable users of Rust should be included.
16+
Generally, more exciting items go toward the top of sections. Most items are
17+
simply links to the PR that landed them; some that need more explanation have
18+
additional, unlinked text; anything supported by an RFC has an additional RFC
19+
link. Reuse the PR titles or write descriptions as needed for clarity.
1620

17-
Before I start I find the date ranges the release was on master, for
18-
making GitHub queries, and the commit ranges for the entire release,
19-
as well as commit ranges for just the releases backports.
21+
Try to keep the language of the document independent of en-US or en-UK, when
22+
it can't be avoided defer to en-US grammar and syntax.
2023

21-
I only pick out PRs that impact stable features. Currently, nightly
22-
development does not have a place in the release notes. Generally,
23-
more exciting items go toward the top of sections. Most items are
24-
simply links to the PR that landed them; some that need more
25-
explanation have additional, unlinked text; anything supported by an
26-
RFC has an additional RFC link. I reuse the PR titles or write my
27-
own descriptions as needed for clarity.
28-
29-
The main query I do is against GitHub merges for rust-lang/rust for
30-
the correct date range, e.g.:
31-
32-
https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Amerged+merged%3A2017-02-02..2017-03-16
33-
34-
Pick out interesting PRs, especially those tagged 'relnotes'. Because
35-
the date ranges are imprecise, I'll verify commits at the edges of the
36-
dates against git, using a command like:
37-
38-
git log `git merge-base origin/stable 1.16.0`..origin/stable | grep $commit
39-
40-
Note that the branches might be different depending on when you
41-
compile the notes.
42-
43-
Then I look for the "libs stabilization" PR, which contains a bunch
44-
of newly-stable APIs.
45-
46-
Then I check git for the range of backports. Sometimes there are
47-
things there worth mentioning that don't show up in the GitHub query,
48-
but most backports are to fix regressions that never hit stable, so
49-
aren't worth mentioning. The query is something like
50-
51-
git log `git merge-base origin/stable origin/beta`..origin/stable
52-
53-
Again the branch names may be different.
54-
55-
Then I do the same with rust-lang/cargo. When RLS is in-tree we'll do
56-
the same with rust-lang/rls.
57-
58-
There may be a GitHub milestone for the release. Check that to see if
59-
there's anything worth talking about.
60-
61-
Finally, compare the results to this milestone prediction thread and make
62-
sure they agree, updating the predictions as necessary.
63-
64-
## Example data for relnotes prep
65-
66-
- release: 2017-04-27
67-
- on master: 2017-02-02 - 2017-03-16
68-
- all commits: git log `git merge-base origin/stable 1.16.0`..origin/stable
69-
- just backports: git log `git merge-base origin/stable origin/beta`..origin/stable
70-
71-
- checklist
72-
- [ ] rust prs
73-
- https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Amerged+merged%3A2017-02-02..2017-03-16
74-
- [ ] rust backports
75-
- [ ] libs stabilization pr
76-
- [ ] cargo prs
77-
- https://github.com/rust-lang/cargo/pulls?q=is%3Apr+is%3Amerged+merged%3A2017-02-02..2017-03-16
78-
- [ ] cargo backports
79-
- [ ] check on GitHub release milestone
80-
- [ ] compare to on-thread milestone predictions
81-
82-
## How to prepare milestone predictions
83-
84-
Maintaining the [milestone predictions] is a less exact process. It's
85-
best to always be on the lookout for new information about what's in
86-
the pipeline, and update the thread incrementally.
87-
88-
[milestone predictions]: https://internals.rust-lang.org/t/rust-release-milestone-predictions/4591/33
89-
90-
Once a release though I do sit down and look for upcoming features. Generally
91-
what I do is:
92-
93-
- go through the existing predictions and re-estimate them
94-
- look for final-comment-period tags on rust-lang/rust and rust-lang/rfcs and
95-
try to divine new estimates from that
96-
- look for B-unstable tags on rust-lang/rust and see if there's any
97-
notable activity
98-
- compare the predictions to the actual release notes and bump features
99-
as appropriate
100-
101-
When I post updates to the predictions I also post a message
102-
indicating what was updated.
24+
[relnotes]: https://github.com/Aaronepower/relnotes

0 commit comments

Comments
 (0)