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.