Go 1.6 is released
17 Feb 2016

Andrew Gerrand
adg@golang.org

* Introduction

Today we release [[https://golang.org/doc/go1.6][Go version 1.6]],
the seventh major stable release of Go.
You can grab it right now from the [[https://golang.org/dl/][download page]].
Although [[https://blog.golang.org/go1.5][the release of Go 1.5]] six months ago
contained dramatic implementation changes,
this release is more incremental.

The most significant change is support for [[https://http2.github.io/][HTTP/2]]
in the [[https://golang.org/pkg/net/http/][net/http package]].
HTTP/2 is a new protocol, a follow-on to HTTP that has already seen
widespread adoption by browser vendors and major websites.
In Go 1.6, support for HTTP/2 is [[https://golang.org/doc/go1.6#http2][enabled by default]]
for both servers and clients when using HTTPS,
bringing [[https://http2.github.io/faq/][the benefits]] of the new protocol
to a wide range of Go projects,
such as the popular [[https://caddyserver.com/download][Caddy web server]].

The template packages have learned some new tricks,
with support for [[https://golang.org/pkg/text/template/#hdr-Text_and_spaces][trimming spaces around template actions]]
to produce cleaner template output,
and the introduction of the [[https://golang.org/pkg/text/template/#hdr-Actions][`{{block}}` action]]
that can be used to create templates that build on other templates.
A [[https://github.com/golang/example/tree/master#template-godoc][new template example program]] demonstrates these new features.

Go 1.5 introduced [[https://golang.org/s/go15vendor][experimental support]]
for a “vendor” directory that was enabled by an environment variable.
In Go 1.6, the feature is now [[https://golang.org/doc/go1.6#go_command][enabled by default]].
Source trees that contain a directory named “vendor” that is not used in accordance with the new feature
will require changes to avoid broken builds (the simplest fix is to rename the directory).

The runtime has added lightweight, best-effort detection of concurrent misuse of maps.
As always, if one goroutine is writing to a map, no other goroutine should be reading or writing the map concurrently.
If the runtime detects this condition, it prints a diagnosis and crashes the program.
The best way to find out more about the problem is to run it under the
[[https://blog.golang.org/race-detector][race detector]],
which will more reliably identify the race and give more detail.

The runtime has also changed how it prints program-ending panics.
It now prints only the stack of the panicking goroutine, rather than all existing goroutines.
This behavior can be configured using the
[[https://golang.org/pkg/runtime/#hdr-Environment_Variables][GOTRACEBACK]] environment variable
or by calling the [[https://golang.org/pkg/runtime/debug/#SetTraceback][debug.SetTraceback]] function.

Users of cgo should be aware of major changes to the rules for sharing pointers between Go and C code.
The rules are designed to ensure that such C code can coexist with Go's garbage collector
and are checked during program execution, so code may require changes to avoid crashes.
See the [[https://golang.org/doc/go1.6#cgo][release notes]] and
[[https://golang.org/cmd/cgo/#hdr-Passing_pointers][cgo documentation]] for the details.

The compiler, linker, and go command have a new `-msan` flag
analogous to `-race` and only available on linux/amd64,
that enables interoperation with the
[[http://clang.llvm.org/docs/MemorySanitizer.html][Clang MemorySanitizer]].
This is useful for testing a program containing suspect C or C++ code.
You might like to try it while testing your cgo code with the new pointer rules.

Performance of Go programs built with Go 1.6 remains similar to those built with Go 1.5.
Garbage-collection pauses are even lower than with Go 1.5,
but this is particularly noticeable for programs using large amounts of memory.
With regard to the performance of the compiler tool chain,
build times should be similar to those of Go 1.5.

The algorithm inside [[https://golang.org/pkg/sort/#Sort][sort.Sort]]
was improved to run about 10% faster,
but the change may break programs that expect a specific ordering
of equal but distinguishable elements.
Such programs should refine their `Less` methods to indicate the desired ordering
or use [[https://golang.org/pkg/sort/#Stable][sort.Stable]]
to preserve the input order for equal values.

And, of course, there are many more additions, improvements, and fixes.
You can find them all in the comprehensive [[https://golang.org/doc/go1.6][release notes]].

To celebrate the release,
[[https://github.com/golang/go/wiki/Go-1.6-release-party][Go User Groups around the world]]
are holding release parties on the 17th of February.
Online, the Go contributors are hosting a question and answer session
on the [[https://reddit.com/r/golang][golang subreddit]] for the next 24 hours.
If you have questions about the project, the release, or just Go in general,
then please [[https://www.reddit.com/r/golang/comments/46bd5h/ama_we_are_the_go_contributors_ask_us_anything/][join the discussion]].

Thanks to everyone that contributed to the release.
Happy hacking.
