# Go 1.13 is released
3 Sep 2019
Summary: Go 1.13 adds module authentication, new number literals, error wrapping, TLS 1.3 on by default, and more.

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!
