# Go 1.12 is released
25 Feb 2019
Summary: Go 1.12 adds opt-in TLS 1.3, improved modules, and more.

Andrew Bonventre
andybons@golang.org

##

Today the Go team is happy to announce the release of Go 1.12.
You can get it from the [download page](https://golang.org/dl/).

For details about the changes in Go 1.12, see the [**Go 1.12 release notes**](https://golang.org/doc/go1.12).

Some of the highlights include [opt-in support for TLS 1.3](https://golang.org/doc/go1.12#tls_1_3), [improved modules support](https://golang.org/doc/go1.12#modules) (in preparation [for being the default in Go 1.13](/modules2019)), support for `windows/arm`, and [improved macOS & iOS forwards compatibility.](https://golang.org/doc/go1.12#darwin)

As always, we also want to thank everyone who contributed to this release by writing code, filing bugs, providing feedback, and/or testing the betas and release candidates.
Your contributions and diligence helped to ensure that Go 1.12 is as stable as possible.
That said, if you do notice any problems, please [file an issue](https://golang.org/issues/new).

Enjoy the new release!
