Go 1.17 is scheduled for release (🎉!) and the tree is in the process of reopening for 1.18 development. Please see the tracking issue 47351 for the latest tree status, but as of this moment it's accepting early-in-cycle changes only. It will be opened up for general changes soon after that.
Please use this thread to discuss your own plans for the 1.18 development cycle and to coordinate submission.
(Reminder, this thread is for things you *PLAN TO DO YOURSELF*, not things you want other people to do.)
Please take special care when working on risky changes. As a reminder:
A change is risky if it can cause failures that are hard to diagnose (for example, changes to the runtime, GC, compiler, linker, TLS, other low-level component, or complex changes that need soak time under production workloads), or if it requires many CLs that are hard to revert (for example, large CLs or stacks of CLs).
If you’re planning on working on a change that may be risky, please do the following:
Unless the entire change is absolutely trivial to revert, protect the new code paths with a boolean flag, prefixed with "go118", that can be used to quickly toggle back to the old implementation. It can be a simple bool constant, for example, const go118UseEvenBetterLinker = true. Such flags must be findable by a simple grep for the string "go118". That way we can find them without missing any, and they can be cleaned up when we get to the Go 1.19 cycle.
Consider how you would answer the following questions for your change:
How risky is the change you're planning to make?
How will you know if it is working as intended?
How much production testing does it need for you to be confident it is working as intended?
At what time should the keep/revert decision be made?
Create a tracking issue in the Go 1.18 milestone with a release-blocker label. This issue will be used to track progress on the feature and make the final decision for Go 1.18.
If you have insights from past Go development cycles on how this practice can be improved further, we welcome your feedback. Its goal is to help everyone ship a robust release and minimize risk of unexpected delays. Thank you for your help!
Carlos for the Release team