Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update release-branch.go1.18 with changes for Go 1.18 final (Go 1.18.1 and future minor releases are out of scope) #51460

Closed
33 tasks done
dmitshur opened this issue Mar 3, 2022 · 25 comments
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done. release-blocker umbrella
Milestone

Comments

@dmitshur
Copy link
Contributor

dmitshur commented Mar 3, 2022

The release-branch.go1.18 branch as of this moment points to commit cb5a598, from when the Go 1.18 RC 1 release was made. Before the final Go 1.18 release, the branch needs to be updated to include all changes that are meant for Go 1.18, both those that landed while the tree was frozen, and a number of additional fixes that landed after the tree reopened for 1.19.

This is the tracking umbrella issue to collect the remaining CLs that need to land on the release branch, and sort them all. CLs that need to submitted first are on top of the list:

(The boxes can be checked after the corresponding CLs are submitted to release-branch.go1.18.)

CC @golang/release, @randall77, @griesemer.

@dmitshur dmitshur added NeedsFix The path to resolution is known, but the work has not been done. release-blocker umbrella labels Mar 3, 2022
@dmitshur dmitshur added this to the Go1.18 milestone Mar 3, 2022
@randall77
Copy link
Contributor

CL 389474 to fix #51250

@dmitshur
Copy link
Contributor Author

dmitshur commented Mar 3, 2022

Thanks, added it to the list.

@dmitshur
Copy link
Contributor Author

dmitshur commented Mar 4, 2022

By now, CL 389554 landed, so release-branch.go1.18 has all "for 1.18" CLs that landed while the tree was still frozen for 1.18 development. Next up are the fixes since then.

I reviewed all open release-blocking issues in Go 1.18 milestone, as well as open CLs targeting the Go 1.18 release branch and made sure everything in those 2 lists is included above. Then confirmed their order. Based on that, preparing the following stack that will check off all the boxes present at the time of this comment:

$ git switch release-branch.go1.18 && git pull --ff-only
$ git codereview change release-118-work

$ git show --oneline --no-decorate HEAD
9f2f0ee6ce [release-branch.go1.18] all: merge master (acc5f55) into release-branch.go1.18

git cherry-pick b0db2f00a0d540c3d3f5d14433da2e3e1ad41f9f  # cmd/compile: use AutogeneratedPos for method value wrapper
git cherry-pick 0807986fe6bf6040bafa9c415ab72e4cc8e519a4  # go/types, types2: correctly consider ~ (tilde) in constraint type inference
git cherry-pick 6da16b6ad5787a043fc9978d2d009934e3b2e165  # go/types, types2: clarify a comment and add an extra test
git cherry-pick d3672054fb58d5eaa241f15fa9d7fb9d61e9ac05  # cmd/compile: don't include instantiating types in type hash
git cherry-pick 86b5f6a7be707b9d84108df6f459c7e84bf9dbac  # cmd/go: ignore the workspace when running a package at a specified version
git cherry-pick d3fe4e193e387f250ba53a80f669eac465b1641d  # go/types, types2: fix scoping for iteration variables declared by range clause
git cherry-pick 58804ea67a28c1d8e37ed548b685bc0c09638886  # runtime: count spill slot for frame size at finalizer call
git cherry-pick 87a345ca3849a68de13f29bdc7628f2943734946  # cmd/go: make paths consistent between 'go work init' and 'go work use'
git cherry-pick 4f8094386c3c015f6b6f3efc3a002d188433d388  # cmd/go: error out of 'go work use' if no directories are given
git cherry-pick 1eb1f621da20d7c93ac0312e59c08afbde4d9f56  # cmd/go: add links to workspaces reference and tutorial to go help work

# Edit: More CLs to cherry-pick since this comment was created.
git cherry-pick 1e122e3894bd12407b0043ab25c2a5f665b3f6e5  # syscall: remove TestRlimit
git cherry-pick 2b8aa2b734721487bb718ee5fb6080f51b57efd9  # internal/fuzz: handle Inf/NaN float values
git cherry-pick 63bd6f68e6cbb237b46a99775103758afaee370a  # internal/fuzz: fix TestUnmarshalMarshal on MIPS
git cherry-pick 7dc6c5ec34ca6780e8eac1760116ff69d0c27d7a  # go/types, types2: correctly include comparable in type set intersection
git cherry-pick 114d5deac2f513a7397ab4c2ee8d2d567a901266  # go/types, types2: don't crash in selectors referring to the type being declared
git cherry-pick 43b09c096a33b8a3cd3477546c445e2c41efcfdf  # go/types, types2: record all type instances, even duplicates
git cherry-pick 20dd9a42fb80ed4919d79bfb4644c16ab9e09e72  # go/types: document that predicates are undefined on generic types
git cherry-pick 28fab5ef21d8aef72634f9c251fbeb4039dababa  # go/types, types2: disable inference for type instances
git cherry-pick d3070a767bc0ddfdca1f84e2018de1c906b817ca  # cmd/compile/internal/types2: more consistently print "check go.mod" if language version < 1.18
git cherry-pick 7419bb3ebb8ea2b9b3745cdcbaf747e4dffc52ae  # internal/fuzz: fix encoding for out-of-range ints and runes
git cherry-pick 0add0647d80f8ec794042b4608275830372fe298  # go/printer: don't print unnecesary commas for func type param lists
git cherry-pick 7026eeb8cfdc5801adddaaa678fb6495a998db0e  # cmd/go: fix buildvcs when using older git versions
git cherry-pick b8248fab897da9bee2211a98df1656883ccecd6d  # go/types, types2: disable field accesses through type parameters
git cherry-pick e189b5e06d4831025758c0b152838fa1a0375525  # go/types, types2: clarify documentation with respect to generic types
git cherry-pick 3a5e3d8173df547d8360a609097fc80f01182db1  # go/types, types2: pointer base types cannot be type constraints
git cherry-pick 8cf11694abbfbdbd4fe0b2c08511f81b8bfe5017  # cmd/compile: fix transform of OEQ/ONE when one arg is a type param
git cherry-pick 2e46a0a99768408c90cf4eeda3690831693fd8b2  # cmd/compile: fix expression switches using type parameters
git cherry-pick 914195c132cbec651aa43c409e8aac2614b53b38  # go/types, types2: remove incorrect assertion (don't crash)
git cherry-pick bd71dee2b4c0a44f9c32e9eb23d990b54ce06bae  # internal/fuzz: don't use dirty coverage maps during minimization
git cherry-pick 5003ed884a67ee26b4cedbe6f5b1c02bd5eb6630  # internal/fuzz: minimization should not reduce coverage
git cherry-pick 9743e9b6d8e150639f509fc64e4bc5f24ecce562  # cmd/compile: fix re-export closure

Mailed out the stack (10 commits) with https://go.dev/cl/389914 at the top. 6 of 10 cherry-pick CLs need a Code-Review vote.

@ianlancetaylor
Copy link
Contributor

CL 390020 should be backported to the 1.18 branch for #51479. I can do the backport if you like.

@dmitshur
Copy link
Contributor Author

dmitshur commented Mar 4, 2022

Thanks Ian. It is probably better if I add it to the top of the existing stack for better visibility, and it's very easy for me to do since there aren't any conflicts. It's sent as CL 390022. Also added it to the list in the original issue.

@rolandshoemaker
Copy link
Member

CL 388354 has just landed and should be backported, thanks!

@dmitshur
Copy link
Contributor Author

dmitshur commented Mar 4, 2022

Thanks! Added and mailed https://go.dev/cl/390095.

@griesemer
Copy link
Contributor

griesemer commented Mar 5, 2022

CL 390025 needs to be backported once it has landed.

[edit] This has landed.

@griesemer
Copy link
Contributor

griesemer commented Mar 7, 2022

CL 390314 needs to be backported once it has landed.

[edit] This has landed.

@rolandshoemaker
Copy link
Member

CL 390214 has landed and should be backported, thanks!

@findleyr
Copy link
Contributor

findleyr commented Mar 7, 2022

CL 390041, CL 390039, and CL 387934 should be included as well (the latter is not yet +2ed however).

@dmitshur dmitshur added the WaitingForInfo Issue is not actionable because of missing required information, which needs to be provided. label Mar 8, 2022
@bcmills
Copy link
Contributor

bcmills commented Mar 8, 2022

I just merged CL 390424 (for #51528), and it should have a backport too.

@dmitshur dmitshur removed the WaitingForInfo Issue is not actionable because of missing required information, which needs to be provided. label Mar 8, 2022
@findleyr
Copy link
Contributor

findleyr commented Mar 8, 2022

https://go.dev/cl/390914 should be cherry-picked too.

EDIT: added a check-box

@bcmills
Copy link
Contributor

bcmills commented Mar 9, 2022

https://go.dev/cl/388194, although if it doesn't make the boat it can probably wait for 1.18.1.

@griesemer
Copy link
Contributor

griesemer commented Mar 9, 2022

CL 391135 needs to be cherry-picked once it has landed.

[edit: this has now landed]

@findleyr
Copy link
Contributor

findleyr commented Mar 9, 2022

CL 391154 should also be cherry-picked once it has landed.

[edit: This has now landed.]

@griesemer
Copy link
Contributor

griesemer commented Mar 9, 2022

CL 391275 needs to be cherry-picked once it has landed.

[edit: This has now landed.]

@griesemer
Copy link
Contributor

CL 391615 needs to be cherry-picked.

Background: The fix simply removes an incorrect assertion (it was always incorrect). The rest of the changes is tests and the port to go/types. This CL will change the relevant issue #51593 from a release-blocker (crash) to a bug for Go 1.19.

@rolandshoemaker
Copy link
Member

CL 391454 and CL 391614 should be backported (and with that, I think I'm done with 1.18... 🤞.)

@cuonglm
Copy link
Member

cuonglm commented Mar 14, 2022

CL 391994 needs to be cherry-picked.

Background: for generic code, the compiler was using the wrong dict param for getting the dictionary type, causing mis-compile code when disable inlining. Debuggers (like devel) will have issues debugging generic code.

@dmitshur
Copy link
Contributor Author

Thanks @cuonglm.

At this point we are very close to the release and so the bar for fixes is very high. Per go.dev/s/release, "We may prefer to issue a release with a known but very rare crash than to issue a release with a new but not production-tested fix."

I will make a backport for CL 391994, make sure it passes tests, and then generate a CL for resolving #51532, at which point we will need to aim to stop changing release-branch.go1.18 for anything but the most critical issues that must block the final release. For everything else, we'll need to consider backports to minor releases, or waiting for Go 1.19. Thanks.

@cuonglm
Copy link
Member

cuonglm commented Mar 14, 2022

@dmitshur Thanks for clarifying, I made https://go-review.googlesource.com/c/go/+/392614 for backport CL 391994.

IMHO, that's a critical issue, which make compiler generate invalid code and can cause runtime crashes/wrong behavior. We were able to catch that bug with inlining disable does not mean we have enough coverage test case for making sure the bug won't happen with inlining enable.

How do you think @randall77 @mdempsky ?

@dmitshur dmitshur changed the title update release-branch.go1.18 with changes for Go 1.18 update release-branch.go1.18 with changes for Go 1.18 final (Go 1.18.1 and future minor releases are out of scope) Mar 14, 2022
@randall77
Copy link
Contributor

randall77 commented Mar 14, 2022

I think waiting is ok. I agree that #51413 isn't necessarily just a problem when turning inlining off. It could come up in other scenarios. That said, the code in question has been checked in since ~July, so the fact that we only found it recently means it is probably pretty rare. We can wait 2-3 weeks for a fix.

@dmitshur
Copy link
Contributor Author

@cuonglm @randall77 Thanks.

CL 392674 is the last CL needed resolve a release-blocking issue in 1.18 milestone, so after it's in, I will tentatively close this issue.

@dmitshur
Copy link
Contributor Author

Ok, as of this writing we are down to just 3 release-blocking issues in the Go1.18 milestone:

I'll mark this closed since the release-branch.go1.18 should have all the intended CLs that are needed for Go 1.18 final. (Everything to be cherry-picked for 1.18.1 will happen later—it's outside of scope of this issue.) Thanks to everyone's help here.

Go Release Team automation moved this from In Progress to Done Mar 14, 2022
@golang golang locked and limited conversation to collaborators Jun 22, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done. release-blocker umbrella
Projects
Archived in project
Development

No branches or pull requests

9 participants