# Go 1.10 is released
16 Feb 2018
Summary: Go 1.10 adds automatic caching of build & test results, and more.

Brad Fitzpatrick
bradfitz@golang.org

##

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

See the [Go 1.10 release notes](https://golang.org/doc/go1.10) for all the details.

The most exciting part of this release for many people will probably
be that the `go` tool now does
[automatic caching of build & test results](https://golang.org/doc/go1.10#build).
Of course, one of the hundreds of smaller changes may be **your** favorite.

To celebrate the release, Go User Groups around the world are holding
[release parties](https://github.com/golang/go/wiki/Go-1.10-Release-Party).
See if there's one in your area, or feel free to organize one!

Thanks to everyone who contributed to this release and everyone who
helped test the Go 1.10 betas and release candidates to ensure a perfect,
bug-free final release. However, if you do notice any bugs or unexpected
changes not noted in the release notes, be sure to
[file a bug](https://golang.org/issues/new).

Enjoy the weekend, and enjoy the new release!

P.S. Many of this year's Go conferences are accepting talk proposals
this month. We always love to see new speakers and encourage you to
think about proposing a talk. For more information, see
[golang.org/wiki/NewSpeakers](https://golang.org/wiki/NewSpeakers).
