AWS Developer Tools Blog

AWS SDK for Go Aligns with Go Release Policy on Supported Runtimes

On October 31, 2023, the AWS SDK for Go v1 and v2 will start following the Go release policy cadence. We will support the latest two GA versions of Go, with an additional six month support for the most recently deprecated compiler version.* In adherence to the maintenance policy, AWS SDK for Go v1 and v2 will end support for Go compiler versions 1.5 through 1.18 effective October 31, 2023.

Aligning our deprecation schedule to match with the Go release policy will enable us to continue to deliver an idiomatic Go experience built using newer language features.

The Go release policy states that each Go release is supported until there are two newer major releases. For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was supported until the Go 1.8 release. New Go major versions are released twice a year, typically occurring in February and August of each year. Under this cadence, a Go major version is supported by Go maintainers for one full year from the date of release. In accordance with the AWS SDKs and Tools maintenance policy for language runtimes, the AWS SDK for Go will support each Go major version for an additional 6 months past the Go end of support date.*

* AWS reserves the right to drop support for unsupported Go versions earlier to address critical security issues.

Go Version Release Date Go Release End of Support AWS SDKs End of Support
1.18 and older Various February 2023 October 31, 2023
1.19 August 2022 August 2023 February 2024
1.20 February 2023 February 2024* August 2024*
1.21 August 2023* August 2024* February 2025*
* These dates are speculative based on previous Go release cadence

To continue using the Go SDK with an older runtime after October 31, 2023, you will need to pin to older version of the Go SDK. We encourage you to update to a supported Go version, as older versions outside the Go release policy window do not receive critical security updates.

Migrating to 1.19 or later

Migrating to Go 1.19 or higher will vary depending on the operating system or environment you use for compiling your Go applications. We have outlined some options below to help you decide on how to migrate your application to use a more recent version of the Go compiler.

Installing using the available Go compiler

If your operating system’s package manager provides a version of Go that is out of date, you can still use it to download and install an updated Go version. This installation method requires that you have Git, and the Go compiler installed already. To determine what version of the Go compiler you have installed, use go version which will return you the Go compiler version in your path. Note: These instructions here are provided assuming the environment is Linux, but can be adapted to other operating systems as well. You can refer to Go installation instructions for details.

Versions < 1.16

If the reported Go compiler version is less than 1.16, you can use the following instructions to download a newer version.

  1. go get golang.org/dl/go1.19.9 which will download an executable binary go1.19.9 to $GOPATH/bin which by default will be $HOME/go/bin
  2. Execute $HOME/go/bin/go1.19.9 download which will download and install the target Go compiler version at $HOME/sdk/go1.19.9
  3. Update your environment PATH to include the downloaded Go compiler executable: export PATH=$HOME/sdk/go1.19.9/bin:$PATH
  4. Confirm the Go command is now the target version go version

Versions >= 1.16

If the reported Go compiler version is 1.16 or higher, you can use the following instructions to download a newer version.

  1. go install golang.org/dl/go1.19.9@latest which will download an executable binary go1.19.9 to $GOPATH/bin which by default will be $HOME/go/bin
  2. Execute $HOME/go/bin/go1.19.9 download which will download and install the target Go compiler version at $HOME/sdk/go1.19.9
  3. Update your environment PATH to include the downloaded Go compiler executable: export PATH=$HOME/sdk/go1.19.9/bin:$PATH
  4. Confirm the Go command is now the target version go version

The Go project provides a set of downloads and instructions that may be used for installing a Go compiler binary release for your target operating system and architecture. These binaries may be used in instances where your operating system does not have a built-in package manager, or in cases where the package manager version is outdated.

Feedback

If you have feedback or questions about our Go runtime dependency life-cycle maintenance policy, please engage with us by opening an issue on GitHub. We would love to hear from you.

About the author:

Aaron Todd

Aaron Todd

Aaron is a maintainer for the AWS SDK for Kotlin and AWS SDK for Go. You can find him on GitHub @aajtodd.