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

all: announce end of support for old macOS releases #23011

Open
bradfitz opened this issue Dec 6, 2017 · 57 comments
Open

all: announce end of support for old macOS releases #23011

bradfitz opened this issue Dec 6, 2017 · 57 comments
Labels
Builders x/build issues (builders, bots, dashboards) Documentation NeedsFix The path to resolution is known, but the work has not been done. recurring Issues that should never be closed, but moved to the next milestone once fixed in the current one. release-blocker
Milestone

Comments

@bradfitz
Copy link
Contributor

bradfitz commented Dec 6, 2017

Note, Aug 2022: See #23011 (comment) for the macOS deprecation schedule.


Apple continues to put out new macOS releases. We can't run builders for all of them forever.

I propose we announce in the Go 1.10 release notes that Go 1.10 will be the last release to officially support macOS 10.8 (Mountain Lion).

macOS 10.8 was last updated Oct 3, 2013, over 4 years ago.

(macOS 10.9 was last updated Mar 21, 2016, 19 months ago, which is somewhat more recent)

Apple doesn't publish official End-of-Life dates for macOS versions, but I read that their security policy is that they issue security updates for the past 3 releases.

Given that they're on 10.13 now, that means 10.13, 10.12, and 10.11 are supported by them.

Our policy of additionally supporting 10.10 and 10.9 in Go 1.11 would be even more.

/cc @rsc @ianlancetaylor

@bradfitz bradfitz added Documentation NeedsDecision Feedback is required from experts, contributors, and/or the community before a change can be made. release-blocker labels Dec 6, 2017
@bradfitz bradfitz added this to the Go1.10 milestone Dec 6, 2017
@rsc
Copy link
Contributor

rsc commented Dec 6, 2017

I just came here to suggest the same thing. SGTM.

@rsc rsc added NeedsFix The path to resolution is known, but the work has not been done. and removed NeedsDecision Feedback is required from experts, contributors, and/or the community before a change can be made. labels Dec 6, 2017
@gopherbot
Copy link
Contributor

Change https://golang.org/cl/82275 mentions this issue: doc/go1.10: preannounce removal of OS X 10.8 support in Go 1.11

gopherbot pushed a commit that referenced this issue Dec 6, 2017
For #23011.

Change-Id: Ibd934f32e41cb8dddbd3d68a324536cf29a97916
Reviewed-on: https://go-review.googlesource.com/82275
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
@rsc
Copy link
Contributor

rsc commented Dec 13, 2017

Looks like we could plausibly drop support in Go 1.11 for both Mountain Lion (as previously agreed) and also Mavericks. By the time Go 1.11 comes out in August 2018, Mavericks will have gone two years since its last security update.

version released updated security update
OS X 10.8 Mountain Lion Jul 2012 Oct 2013 (10.8.5) Aug 2015 (2015-006)
OS X 10.9 Mavericks Oct 2013 Sep 2014 (10.9.5) Jul 2016 (2016-004)
OS X 10.10 Yosemite Oct 2014 Aug 2015 (10.10.5) Jul 2017 (2017-003)
OS X 10.11 El Capitan Sep 2015 Jul 2016 (10.11.6) Dec 2017 (2017-005)
macOS 10.12 Sierra Sep 2016 Jul 2017 (10.12.6) Dec 2017 (2017-002)
macOS 10.13 High Sierra Sep 2017 Dec 2017 (10.13.2)

@gopherbot
Copy link
Contributor

Change https://golang.org/cl/83795 mentions this issue: doc/go1.10: preannounce deprecation of OS X 10.9 Mavericks

gopherbot pushed a commit that referenced this issue Dec 13, 2017
By the time Go 1.11 is released, OS X 10.9 Mavericks will have gone
two years with no security updates.

For #23011.

Change-Id: I6482852a14477985769b72c45c92416aae8be100
Reviewed-on: https://go-review.googlesource.com/83795
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
@rsc
Copy link
Contributor

rsc commented Dec 13, 2017

Filed #23122 for the actual removal work (whatever that is). Looks like we'll be caught up once Go 1.11 is out and then once caught up we should probably plan to deprecate one Mac OS version each year, alternating between preannounce and remove.

Go 1.12 preannounces dropping Yosemite
Go 1.13 drops Yosemite
Go 1.14 preannounces dropping El Capitan
Go 1.15 drops El Capitan
Go 1.16 preannounces dropping Sierra
etc.

@rsc
Copy link
Contributor

rsc commented Dec 13, 2017

Let's make this issue the open-forever tracking bug for this sequence. Moving to Go 1.11; once Go 1.12 milestone is created, can move to Go 1.12.

@rsc rsc modified the milestones: Go1.10, Go1.11 Dec 13, 2017
@rasky
Copy link
Member

rasky commented Dec 14, 2017

One bit of information ignored by the above table is which Mac hardware is dropped by each OS versions. Some macOS versions are "tocks" that drop hardware support, others are "ticks" that don't drop hardware support. I think this should be analyzed when taking decisions.

Also this page reports the usage share between different macOS versions:
http://gs.statcounter.com/macos-version-market-share/desktop/worldwide

Mavericks is about 5% of all Macs, while Mountain Lion is non existing.

@rsc
Copy link
Contributor

rsc commented Dec 14, 2017

The statcounter.com page makes no sense to me. I don't believe their numbers at all.

@gopherbot
Copy link
Contributor

Change https://golang.org/cl/151360 mentions this issue: doc: preannounce dropping macOS 10.10 support

@ianlancetaylor ianlancetaylor modified the milestones: Go1.12, Go1.13 Nov 28, 2018
gopherbot pushed a commit that referenced this issue Nov 28, 2018
Updates #23011

Change-Id: I0eccea5d08a8758585f183540787b78fb80aa36a
Reviewed-on: https://go-review.googlesource.com/c/151360
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
@gopherbot
Copy link
Contributor

Change https://golang.org/cl/151361 mentions this issue: doc: fix formatting for Darwin entry

gopherbot pushed a commit that referenced this issue Nov 28, 2018
Updates #23011

Change-Id: I38360501c772ddf7cc4bd1b5d7b0225387ead535
Reviewed-on: https://go-review.googlesource.com/c/151361
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
@robaho
Copy link

robaho commented Feb 5, 2019

@rsc what is wrong with the statcounter? you just read it down in a line - they all seem to add to 100% (or close enough to it - there are probably lots of versions in use that they drop due to very low usage, and combined maybe less than 5% ?).

gopherbot pushed a commit that referenced this issue Dec 2, 2022
For #23011.

Change-Id: I386920928a98403180098f1da5ea7696a239210e
Reviewed-on: https://go-review.googlesource.com/c/go/+/454957
Auto-Submit: Heschi Kreinick <heschi@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Heschi Kreinick <heschi@google.com>
@heschi heschi modified the milestones: Go1.21, Go1.22 Mar 22, 2023
@dmitshur dmitshur changed the title build: announce end of support for old macOS releases all: announce end of support for old macOS releases Jun 14, 2023
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/518235 mentions this issue: internal/dl: update system requirements

gopherbot pushed a commit to golang/website that referenced this issue Aug 10, 2023
As described at https://go.dev/doc/go1.21#ports:

- Go 1.21 requires at least Windows 10 or Windows Server 2016;
  support for previous versions has been discontinued.
- Go 1.21 requires macOS 10.15 Catalina or later;
  support for previous versions has been discontinued.

For golang/go#23011.
For golang/go#52188.

Change-Id: I7a3dd6e82400b238a2220d34bcffbbfc2f1b68a1
GitHub-Last-Rev: c637a1c
GitHub-Pull-Request: #240
Reviewed-on: https://go-review.googlesource.com/c/website/+/518235
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
@dmitshur dmitshur added the okay-after-rc1 Used by release team to mark a release-blocker issue as okay to resolve either before or after rc1 label Nov 29, 2023
@gopherbot
Copy link
Contributor

Change https://go.dev/cl/549655 mentions this issue: doc/go1.22: pre-announce dropping macOS 10.15 support

@dmitshur
Copy link
Contributor

The pre-announcement is added in the CL above, moving to the next.

@dmitshur dmitshur modified the milestones: Go1.22, Go1.23 Dec 14, 2023
@dmitshur dmitshur removed their assignment Dec 14, 2023
@dmitshur dmitshur removed the okay-after-rc1 Used by release team to mark a release-blocker issue as okay to resolve either before or after rc1 label Dec 14, 2023
gopherbot pushed a commit that referenced this issue Dec 14, 2023
For #64207.
For #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>
@probonopd
Copy link

Is there a hard technical reason why newer versions of Go can't be built on older versions of Mac OS X?

@programmingkidx
Copy link

@probonopd Good question.
Just because Apple no longer supports a version of Mac OS doesn't mean Go can't support it.
I still use Mac OS 10.12 and find it very useful.

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>
@programmingkidx
Copy link

@probonopd I did the work and found out that there are technical reasons why newer versions of Go can't be built on older versions of Mac OS X. The reason is missing functions. While working on trying to make Go 1.22.0 build on Mac OS 10.12 I encountered these missing functions:

  • ptsname_r()
  • SecTrustEvaluateWithError()
  • utimensat()

The chtimes() function doesn't work correctly on Mac OS 10.12.

Overall not a very impressive reason to give up compatibility with older versions of Mac OS X. I did finally figure out how to build Go 1.22.0 on Mac OS 10.12. My patch seems to work well. I am working with MacPorts to try to make a port for Go 1.22.0. Here is where I post my directions on building the compiler on Mac OS 10.12: https://trac.macports.org/ticket/69466#no1.

@probonopd
Copy link

probonopd commented Mar 11, 2024

Thanks for taking the time to investigate this @programmingkidx. On my Macs, 10.6-10.9 is the latest I would like to install, and it would be awesome if Go programs could still run there. How hard is implementing the missing Mac OS X functions in Go?

@programmingkidx
Copy link

Actually most of the missing functions have already been implemented in C. See https://github.com/macports/macports-legacy-support/tree/bce12afbf6e10e0216a87ba15c246b446fc810e1.

I am investigating calling C functions from Go's runtime. My theory is I can compile all the new functions into a static library file and somehow embed these functions into a binary. If this works then it could be possible to make binaries and the Go compiler run on Mac OS 10.4 (x86). As for PowerPC that would take a little more work.

@dmitshur
Copy link
Contributor

CL 563856 added a note to Go 1.23 release notes, moving to the next.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Builders x/build issues (builders, bots, dashboards) Documentation NeedsFix The path to resolution is known, but the work has not been done. recurring Issues that should never be closed, but moved to the next milestone once fixed in the current one. release-blocker
Projects
Status: Planned
Status: No status
Development

No branches or pull requests

14 participants