February 17, 2016
Go 1.6 makes no language changes but adds automatic HTTP/2 support in net/http, enforced runtime rules for sharing Go pointers with C via cgo, default-on vendoring, and runtime detection of concurrent map misuse, plus numerous library fixes and performance gains.
Transparent, automatic HTTP/2 support added to net/http for both clients and servers over HTTPS; disable via Transport.TLSNextProto or Server.TLSNextProto if needed
New enforced rules for sharing Go pointers with C in cgo: the runtime detects violations and crashes with a diagnosis (disable checks via GODEBUG=cgocheck=0, not recommended)
Vendoring (GO15VENDOREXPERIMENT) is now enabled by default and no longer experimental; can still be disabled by setting the env var to 0
Runtime now does best-effort detection of concurrent map misuse (unsynchronized reads/writes) and crashes with a diagnosis
Panic output now prints only the crashing goroutine's stack by default instead of all goroutines; use GOTRACEBACK=all or debug.SetTraceback for old behavior
New experimental ports: linux/mips64, linux/mips64le, and android/386; linux/ppc64le cgo with external linking is now roughly feature complete
reflect package fix for embedded unexported struct fields with exported members: code checking f.PkgPath != "" should now also check !f.Anonymous
sort.Sort rewritten for about 10% fewer Less/Swap calls, which changes ordering of equal elements; use sort.Stable if original order must be preserved
text/template gains whitespace trimming syntax ({{- and -}}) and a new {{block}} action for reusable/overridable template pieces
go vet now flags passing a function or method value to Printf where the result of calling it was likely intended
Build modes c-shared, shared, and pie expanded to more platforms including Android and additional Linux architectures
os/exec's Cmd.Output now includes a captured stderr snippet in the returned ExitError when a command fails and stderr wasn't otherwise captured