Skip to content

all: end support for macOS 10.15 in Go 1.23 #64207

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

Closed
dmitshur opened this issue Nov 16, 2023 · 31 comments
Closed

all: end support for macOS 10.15 in Go 1.23 #64207

dmitshur opened this issue Nov 16, 2023 · 31 comments
Assignees
Labels
early-in-cycle A change that should be done early in the 3 month dev cycle. FixPending Issues that have a fix which has not yet been reviewed or submitted. OS-Darwin Proposal Proposal-Accepted release-blocker
Milestone

Comments

@dmitshur
Copy link
Contributor

Go added support for macOS 14 that was publicly released this September. After internal discussion, we believe the summer of 2024 will be a good time to drop support for macOS 10.15. The last security update it received was in July 2022.

On behalf of @golang/release, I propose we announce the end of support in the Go 1.22 release notes, and disable the builder for Go 1.23.

CC @golang/darwin.

@dmitshur dmitshur added this to the Proposal milestone Nov 16, 2023
@ianlancetaylor ianlancetaylor moved this to Incoming in Proposals Dec 2, 2023
@rsc
Copy link
Contributor

rsc commented Dec 6, 2023

Usually we link to our macOS history in these issues. Is #23011 (comment) the most recent statement of our history? Is there a better policy link?

Regardless, since Apple stopped issuing updates in July 2022, and dropping in Go 1.23 would mean we stop issuing security patches (for Go 1.22) at the release of Go 1.24 in Feb 2025, that seems entirely reasonable. If anything we seem late.

@dmitshur
Copy link
Contributor Author

dmitshur commented Dec 6, 2023

We had been following that pattern of adding a new macOS version and dropping the oldest one every 2 Go major releases (i.e., once a year) for a long while. After Go 1.17, there was a longer period where we supported older macOS versions, but Go 1.21 caught up by dropping two at once (proposal #57125).

If this proposal is accepted, then:

  • Go 1.22 (security patches until Feb 2025) is the last release with macOS 10.15 support
  • Go 1.23 (scheduled for Aug 2024 release) drops macOS 10.15, requires macOS 11

And if we continue dropping oldest macOS once-every-two-major-Go-releases after that, the pattern would be:

  • Go 1.24 (security patches until Feb 2026) last to support macOS 11
  • Go 1.25 requires macOS 12
  • Go 1.26 (security patches until Feb 2027) last to support macOS 12
  • Go 1.27 requires macOS 13
  • Go 1.28 (security patches until Feb 2028) last to support macOS 13
  • Go 1.29 requires macOS 14
  • ...

@lpar
Copy link

lpar commented Dec 8, 2023

It would be good to have a page somewhere indicating minimum OS versions currently required for the Go toolchain, and minimum OS versions supported by the Go runtime. (Apologies if there is one, but I haven't been able to find it.)

@dmitshur
Copy link
Contributor Author

dmitshur commented Dec 8, 2023

@lpar Minimum OS version information is there but can be made easier to find—see #41212 for that.

@randall77
Copy link
Contributor

https://github.com/golang/go/wiki/MinimumRequirements lists the minimum OS versions we require.

@lpar
Copy link

lpar commented Dec 8, 2023

Thanks. Do the minimum version requirements apply to the runtime for built binaries?

@randall77
Copy link
Contributor

@lpar I'm not sure what you are asking. They apply to everything in the built binary, runtime included.

@lpar
Copy link

lpar commented Dec 8, 2023

Thanks, that was what I was asking, whether ending support for macOS 10.15 meant that binaries compiled by the Go toolchain would no longer be supported on 10.15.

(Binaries built with Go 1.21.x still seem to work on some unsupported macOS versions, but of course that doesn't mean it's supported that they do.)

@rsc rsc changed the title proposal: end support for macOS 10.15 in Go 1.23 proposal: all: end support for macOS 10.15 in Go 1.23 Dec 9, 2023
@rsc
Copy link
Contributor

rsc commented Dec 9, 2023

Based on the discussion above, this proposal seems like a likely accept.
— rsc for the proposal review group

Following our usual pattern, more or less:

Apple stopped issuing security updates for macOS 10.15 in July 2022.
Go 1.22 (security patches until Feb 2025) is the last release with macOS 10.15 support
Go 1.23 (scheduled for Aug 2024 release) drops macOS 10.15, requires macOS 11

@rsc rsc moved this from Incoming to Likely Accept in Proposals Dec 9, 2023
@richardwilkes
Copy link
Contributor

Shouldn't Go only drop support for older OS's if both:

  • they aren't supported by the vendor any longer (which seems to be the current stance)
  • changes in the Go toolchain are actually required to continue supporting them

Naively, it appears that the second case isn't true for this (or many of the previous drops). Other than keeping some builders alive, is there any real downside to allowing the latest Go toolchain to continue working on these older OS releases that we already have working?

I'm asking because I like to stay with the current Go releases when developing, but this policy is going to force me to stop doing that, since a subset of my clients use OSs that are older than the officially supported versions out there.

@randall77
Copy link
Contributor

The problem is builders. If we support something, we need a builder for it. Running builders that aren't supported by the vendor is bad, because they are 1) connected to the internet, and 2) not receiving security patches.

@richardwilkes
Copy link
Contributor

@randall77 it seems that security patches aren't the determining factor, as current versions of Go claim support for Linux kernels going all the way back to 2.6.32, which was EOL'd in March of 2016 (and versions of the 2.6.x line newer than that were EOL'd much earlier than that).

@randall77
Copy link
Contributor

See #60792 , there are ongoing discussions there about bumping the linux min version.

RHEL 6 is still supported and runs a 2.6.32 kernel. https://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux

@richardwilkes
Copy link
Contributor

OK, fair enough. I didn't realize any Linux distributions were still supporting it (the few I checked were far beyond it).

Anyway, definitely not happy about dropping support, but can understand it.

@rsc
Copy link
Contributor

rsc commented Dec 13, 2023

changes in the Go toolchain are actually required to continue supporting them

You'd be surprised how much ongoing work it takes to keep all our builders running. Much of that work isn't visible as changes in the Go toolchain. Not running older, unsupported builders frees up time for higher priority work.

@rsc rsc moved this from Likely Accept to Accepted in Proposals Dec 14, 2023
@rsc
Copy link
Contributor

rsc commented Dec 14, 2023

No change in consensus, so accepted. 🎉
This issue now tracks the work of implementing the proposal.
— rsc for the proposal review group

Following our usual pattern, more or less:

Apple stopped issuing security updates for macOS 10.15 in July 2022.
Go 1.22 (security patches until Feb 2025) is the last release with macOS 10.15 support
Go 1.23 (scheduled for Aug 2024 release) drops macOS 10.15, requires macOS 11

@rsc rsc changed the title proposal: all: end support for macOS 10.15 in Go 1.23 all: end support for macOS 10.15 in Go 1.23 Dec 14, 2023
@rsc rsc modified the milestones: Proposal, Backlog Dec 14, 2023
@cherrymui
Copy link
Member

cherrymui commented Feb 14, 2024

Is there a need to update this line in the linker https://cs.opensource.google/go/go/+/master:src/cmd/link/internal/ld/macho.go;l=486 ? Perhaps it is fine either way... Or we can wait until the old version causes some trouble.

@dmitshur
Copy link
Contributor Author

Thanks for pointing that out. The comment there says "This must be fairly recent" and "In general this can be the most recent supported macOS version." If I understand correctly, that means it shouldn't cause problems to set that version to macOS 14, the most recent macOS version now, and that there's no hard requirement for it to not fall below the minimum macOS version that Go supports. We didn't update it for when macOS 10.13 became unsupported.

For now, I sent CL 563857 which seems like a small and safe step forward today. We can see if there's something more principled we should do for maintaining the version there later on.

@gopherbot
Copy link
Contributor

Change https://go.dev/cl/563857 mentions this issue: cmd/link/internal/ld: unify OS/SDK versions for macOS linking

gopherbot pushed a commit that referenced this issue Feb 14, 2024
For #64207.
For #65614.

Change-Id: Ia5365b4090060e0657c255341751d3e67691f836
Reviewed-on: https://go-review.googlesource.com/c/go/+/563856
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
gopherbot pushed a commit that referenced this issue Feb 14, 2024
Go 1.23 will require macOS 11 Big Sur or later, even on AMD64.
The comment here suggests the main requirement for the OS and
SDK version is to be recent enough not to break Apple signing,
and recent enough not to cause other problems.

For now, this CL simplifies the code by merging the ARM64 and
AMD64 cases into one, given 1.23 will be the first Go release
with a common minimum macOS version for both architectures so
there's no need to treat them separately here.

For #64207.

Change-Id: I821fcb9a2a316de0703833c8a75abcbaa10b17a3
Cq-Include-Trybots: luci.golang.try:gotip-darwin-amd64_11,gotip-darwin-amd64_14,gotip-darwin-arm64_11,gotip-darwin-arm64_13
Reviewed-on: https://go-review.googlesource.com/c/go/+/563857
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/564217 mentions this issue: internal/releasetargets: update MinMacOSVersion for Go 1.23

@gopherbot
Copy link
Contributor

Change https://go.dev/cl/564215 mentions this issue: dashboard: don't test the main branch on macOS 10.15

@dmitshur dmitshur added the FixPending Issues that have a fix which has not yet been reviewed or submitted. label Feb 14, 2024
@dmitshur dmitshur moved this to In Progress in Go Release Feb 14, 2024
gopherbot pushed a commit to golang/build that referenced this issue Feb 15, 2024
CL 558197 updated LUCI builders to take into account
that Go 1.23 will require macOS 11 Big Sur or later.
We haven't fully migrated away from the old dashboard,
so apply the same change here for now.

For golang/go#64207.

Change-Id: If0baa35d6f595d33911eaef43a467ad71c0a4c15
Reviewed-on: https://go-review.googlesource.com/c/build/+/564215
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Than McIntosh <thanm@google.com>
@github-project-automation github-project-automation bot moved this from In Progress to Done in Go Release Feb 16, 2024
ezz-no pushed a commit to ezz-no/go-ezzno that referenced this issue Feb 18, 2024
For golang#64207.
For golang#23011.

Change-Id: I17ff221718aef03e9cda0ae4eb7b79896933553a
Reviewed-on: https://go-review.googlesource.com/c/go/+/549655
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
ezz-no pushed a commit to ezz-no/go-ezzno that referenced this issue Feb 18, 2024
For golang#64207.
For golang#65614.

Change-Id: Ia5365b4090060e0657c255341751d3e67691f836
Reviewed-on: https://go-review.googlesource.com/c/go/+/563856
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
ezz-no pushed a commit to ezz-no/go-ezzno that referenced this issue Feb 18, 2024
Go 1.23 will require macOS 11 Big Sur or later, even on AMD64.
The comment here suggests the main requirement for the OS and
SDK version is to be recent enough not to break Apple signing,
and recent enough not to cause other problems.

For now, this CL simplifies the code by merging the ARM64 and
AMD64 cases into one, given 1.23 will be the first Go release
with a common minimum macOS version for both architectures so
there's no need to treat them separately here.

For golang#64207.

Change-Id: I821fcb9a2a316de0703833c8a75abcbaa10b17a3
Cq-Include-Trybots: luci.golang.try:gotip-darwin-amd64_11,gotip-darwin-amd64_14,gotip-darwin-arm64_11,gotip-darwin-arm64_13
Reviewed-on: https://go-review.googlesource.com/c/go/+/563857
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/605875 mentions this issue: internal/dl: require macos 11

gopherbot pushed a commit to golang/website that referenced this issue Aug 15, 2024
Fixes golang/go#68891
For golang/go#64207
For golang/go#65614

Change-Id: I9256d9de0687b9e3cf674b4d318f4d5023a9bf16
Reviewed-on: https://go-review.googlesource.com/c/website/+/605875
Reviewed-by: Carlos Amedee <carlos@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
@rolandjitsu
Copy link

Hmm ... it is a shame though. I'm currently forced to use my old MacBook Pro from early 2013 which does not support macOS 11, which means that I need to stay on macOS 10.15 (unless I use something like https://dortania.github.io/OpenCore-Legacy-Patcher/).

With this decision, it also means I can no longer use the latest Go if I understand this correctly (unless I can build from source?).

@gopherbot
Copy link
Contributor

Change https://go.dev/cl/647015 mentions this issue: cmd/makemac: turn down macOS 10.15 instances

gopherbot pushed a commit to golang/build that referenced this issue Feb 11, 2025
Darwin builders with macOS 10.15 are not needed now that Go 1.24.0 is
out and Go 1.22 stopped being supported per release policy¹.

Reallocate some of the freed up capacity between public and internal
swarming instances, weighing them slightly based on typical demand.

For golang/go#64207.

¹ https://go.dev/doc/devel/release#policy

Change-Id: I670d79ba297aba2d12720ecf9779f7c4fac457bd
Reviewed-on: https://go-review.googlesource.com/c/build/+/647015
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
@aclements aclements removed this from Proposals Feb 19, 2025
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/652235 mentions this issue: cmd/makemac: vacate active instances if they exceed configured count

gopherbot pushed a commit to golang/build that referenced this issue Feb 25, 2025
Makemac already takes on increasing instance count when the current
amount falls under the configured MinCount, and decreasing instance
count down to zero when an image outright stops being used.

Extend that to also cover the case of decreasing the instance count
when the configured target Count is lower than the current, as done
recently in CL 647015.

Note that we could also have kept MinCount and added MaxCount, but
that flexibility isn't needed now. It can be added if we ever want
to set MinCount != MaxCount.

For golang/go#64207.

Change-Id: Ifdf898365dafe70cf33be37ec51d80290c625eb5
Reviewed-on: https://go-review.googlesource.com/c/build/+/652235
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
early-in-cycle A change that should be done early in the 3 month dev cycle. FixPending Issues that have a fix which has not yet been reviewed or submitted. OS-Darwin Proposal Proposal-Accepted release-blocker
Projects
Archived in project
Development

No branches or pull requests

9 participants