Go 1.8 is released
16 Feb 2017

Chris Broadfoot
cbro@golang.org

* Introduction

Today the Go team is happy to announce the release of Go 1.8.
You can get it from the [[https://golang.org/dl/][download page]].
There are significant performance improvements and changes across the standard library.

The compiler back end introduced in [[https://blog.golang.org/go1.7][Go 1.7]] for 64-bit x86 is now used
on all architectures, and those architectures should see significant [[https://golang.org/doc/go1.8#compiler][performance improvements]].
For instance, the CPU time required by our benchmark programs was reduced by 20-30% on 32-bit ARM systems.
There are also some modest performance improvements in this release for 64-bit x86 systems.
The compiler and linker have been made faster.
Compile times should be improved by about 15% over Go 1.7.
There is still more work to be done in this area: expect faster compilation speeds in future releases.

Garbage collection pauses should be [[https://golang.org/doc/go1.8#gc][significantly shorter]],
usually under 100 microseconds and often as low as 10 microseconds.

The HTTP server adds support for [[https://golang.org/doc/go1.8#h2push][HTTP/2 Push]],
allowing servers to preemptively send responses to a client.
This is useful for minimizing network latency by eliminating roundtrips.
The HTTP server also adds support for [[https://golang.org/doc/go1.8#http_shutdown][graceful shutdown]],
allowing servers to minimize downtime by shutting down only after serving all requests that are in flight.

[[https://golang.org/pkg/context/][Contexts]] (added to the standard library in Go 1.7)
provide a cancelation and timeout mechanism.
Go 1.8 [[https://golang.org/doc/go1.8#more_context][adds]] support for contexts in more parts of the standard library,
including the [[https://golang.org/pkg/database/sql][`database/sql`]] and [[https://golang.org/pkg/net][`net`]] packages
and [[http://beta.golang.org/pkg/net/http/#Server.Shutdown][`Server.Shutdown`]] in the `net/http` package.

It's now much simpler to sort slices using the newly added [[https://golang.org/pkg/sort/#Slice][`Slice`]]
function in the `sort` package. For example, to sort a slice of structs by their `Name` field:

	sort.Slice(s, func(i, j int) bool { return s[i].Name < s[j].Name })

Go 1.8 includes many more additions, improvements, and fixes.
Find the complete set of changes, and more information about the improvements listed above, in the
[[https://golang.org/doc/go1.8.html][Go 1.8 release notes]].

To celebrate the release, Go User Groups around the world are holding [[https://github.com/golang/go/wiki/Go-1.8-release-party][release parties]] this week.
Release parties have become a tradition in the Go community, so if you missed out this time, keep an eye out when 1.9 nears.

Thank you to over 200 contributors who helped with this release.
