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

Consider adopting go 1.20 as go 1.19 is now out of support #16393

Closed
5 tasks done
jmhbnz opened this issue Aug 9, 2023 · 8 comments
Closed
5 tasks done

Consider adopting go 1.20 as go 1.19 is now out of support #16393

jmhbnz opened this issue Aug 9, 2023 · 8 comments
Assignees
Labels
area/tooling go Pull requests that update Go code type/feature

Comments

@jmhbnz
Copy link
Member

jmhbnz commented Aug 9, 2023

What would you like to be added?

Golang 1.21 has now been released today:

This means 1.19 is now out of support so we should consider adopting 1.20. This would also bring etcd in line with kubernetes/kubernetes go version.

Consider updating:

Why is this needed?

Ensure etcd is built using supported versions of golang. Ensure the project continues to apply timely security patches.

@ahrtr
Copy link
Member

ahrtr commented Aug 9, 2023

thx @jmhbnz

  • There should be no any golang breaking change to etcd. I suggest to bump go version to 1.20 for all versions, including main/3.5/3.4;
  • Can we do a simple benchmark comparison on the main branch?

@ahrtr ahrtr added the go Pull requests that update Go code label Aug 9, 2023
@jmhbnz
Copy link
Member Author

jmhbnz commented Aug 9, 2023

There should be no any golang breaking change to etcd. I suggest to bump go version to 1.20 for all versions, including main/3.5/3.4;

Can we do a simple benchmark comparison on the main branch?

Raised pr for main. Workflows passing and benchmark comparison posted in pr is looking pretty similar.

@jmhbnz
Copy link
Member Author

jmhbnz commented Aug 16, 2023

Note there are two deprecations in 1.20 we should stay on top of:

@serathius
Copy link
Member

serathius commented Aug 17, 2023

My thoughts, main branch should say to latest Go version (avoid taking dept, better upgrade earlier than later). Etcd supported branches should use supported Go version, latest patch, but avoid upgrading minor if possible (avoid distuptions).

So it would mean that go1.21 for main branch and go1.20 for release-3.4 and release-3.5.

@ahrtr
Copy link
Member

ahrtr commented Aug 17, 2023

So it would mean that go1.21 for main branch and go1.20 for release-3.4 and release-3.5.

Due to the faster release pace of golang (e.g. around 6 months for each a minor release), we have to upgrade to golang 1.21 for all etcd supported versions on around Feb 2024.

For the etcd main branch, it shouldn't be a big problem to upgrade to 1.21 earlier. But I tend to be consistent with K8s. Currently K8s is on golang 1.20 on master (1.28 was also released on golang 1.20). WDYT?

@serathius
Copy link
Member

Kubernetes 1.28 was cut over a month ago, they only released it recently. They are already preparing for 1.21 kubernetes/kubernetes#119027

@jmhbnz
Copy link
Member Author

jmhbnz commented Aug 17, 2023

My vote would be to aim that our main follows k/k master for go version where possible. Based on progress that will likely mean an update to 1.21 in the next couple of months. We have a couple minor 1.20 deprecations to tidy up under #16428 but those won't take long.

Agree we do minor version upgrades when necessary on supported release branches to keep them on a supported golang version but otherwise we just focus on staying on latest patch release.

@jmhbnz
Copy link
Member Author

jmhbnz commented Aug 27, 2023

Closing, 1.20 upgrade complete 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/tooling go Pull requests that update Go code type/feature
Development

No branches or pull requests

3 participants