# Go 1.13 is released
3 Sep 2019
Summary: Today the Go team is very happy to announce the release of Go 1.13. You can get it from the [download page](https://golang.org/dl).

Andrew Bonventre

##

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

Some of the highlights include:

  - The `go` command now downloads and authenticates modules [using the Go module mirror and Go checksum database by default](https://golang.org/doc/go1.13#introduction)
  - [Improvements to number literals](https://golang.org/doc/go1.13#language)
  - [Error wrapping](https://golang.org/doc/go1.13#error_wrapping)
  - [TLS 1.3 on by default](https://golang.org/doc/go1.13#tls_1_3)
  - [Improved modules support](https://golang.org/doc/go1.13#modules)

For the complete list of changes and more information about the improvements above, see the [**Go 1.13 release notes**](https://golang.org/doc/go1.13).

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

We hope you enjoy the new release!
