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
cmd/link: merge dev.link into master branch for Go 1.16 early #40703
Comments
This seems reasonable to me. Let’s plan to merge tomorrow when we open the tree to large changes. |
Change https://golang.org/cl/248197 mentions this issue: |
This issue is currently labeled as early-in-cycle for Go 1.16. |
Thanks Dmitri. This is being actively worked on. I am waiting on a couple more CLs from Jeremy before finalizing the merge. |
Change https://golang.org/cl/248200 mentions this issue: |
Hmm, I think I may need to generate a new CL instead of hijacking the old one. Stay tuned. |
Change https://golang.org/cl/248238 mentions this issue: |
Change https://golang.org/cl/248318 mentions this issue: |
In the dev.link branch we have continued developing the new object file format support and the linker improvements described in https://golang.org/s/better-linker . Since the last merge (May 1st 2020), more progress has been made to improve the new linker, with improvements on both linker speed and memory usage. Fixes #40703. Change-Id: I9924ea88d981845c3a40ec8c25820120fc21c003
Add a draft version of a blurb on improvements to the linker. This will need to be finalized later in the release since there are still some additional changes to be made to the linker in 1.16. Updates #40703. Change-Id: Id85c7e129071cc2faacb09c53a2968bd52b0a7b4 Reviewed-on: https://go-review.googlesource.com/c/go/+/248238 Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Austin Clements <austin@google.com>
This is a tracking issue for merging the dev.link branch into master for Go 1.16. A great deal of work has happened on dev.link to further improve the linker since Go 1.15, and we plan to merge this as soon as the 1.16 tree opens in order to avoid conflicts. At this point, we're wrapping up a few final changes and don't expect any more major changes to the linker in the near term.
While this is a large change, we propose to do the merge without a feature flag. Instead, we believe the following are sufficient risk mitigation:
By merging as soon as Go 1.16 opens and not making further major changes to the linker, the linker changes will have maximal soak time. The changes are involved enough that we believe fixing any new bugs at this point would be preferable to backing them out, and maximizing the soak time also maximizes the time we have to fix bugs. This soak time will include regular testing across Google's code base from the start.
Failures caused by the linker tend to be deterministic and are often not subtle, so testing is actually quite effective (in contrast with, say, runtime bugs, which tend to be non-deterministic and subtle). We theorized testing would be effective with the linker changes that went into 1.15 and, indeed, there were very few bugs and they were all relatively straightforward to debug.
Since this work has been happening on a branch, we've been able to monitor the build dashboard throughout development. Hence, the linker changes have already had significant automated testing, and we've been able to keep the branch quite stable throughout.
In contrast, we believe attempting to feature flag this work would be so involved as to actually increase risk and add significant testing burden, as there's no "obviously correct" fallback (unlike how Go 1.15 could fall back to the 1.14 linker).
/cc @rsc @andybons @jeremyfaller @cherrymui @thanm
The text was updated successfully, but these errors were encountered: