August 15, 2016
Go 1.7 brings a new SSA-based amd64 compiler backend that cuts CPU time 5-35% and shrinks binaries up to 20-30%, promotes the context package into the standard library, finalizes vendoring, and adds subtests/sub-benchmarks to testing—mostly toolchain and library work with one trivial language spec clarification.
New SSA-based 64-bit x86 compiler backend generates more efficient code, cutting benchmark CPU time 5-35% (can be disabled with -ssa=0)
context package promoted from x/net into the standard library and wired into net, net/http, and os/exec
Vendoring support (started in Go 1.5) is now a permanent, standard go command feature; GO15VENDOREXPERIMENT env var removed
testing package now supports subtests and sub-benchmarks, enabling table-driven tests and shared setup/teardown
go vet adds a -lostcancel check for unreleased context cancel funcs and a -tests check for malformed test functions
Compiler now writes package export metadata in a compact binary format instead of text (revert with -newexport=0)
Resulting binaries are typically smaller than Go 1.6's, sometimes by 20-30%, and the compiler/linker run noticeably faster
New experimental ports: linux/s390x and the start of plan9/arm; linux/mips64(le) gain full cgo and external linking support; macOS 10.12 Sierra supported (older Go binaries need rebuilding for it)
go tool trace overhead drops from ~400% to ~25%, and trace files now embed file/line info
Minor language spec clarification: a terminating statement list is now judged by its final non-empty statement, matching existing compiler behavior
New net/http/httptrace package for tracing events within individual HTTP requests
crypto/tls now ramps up record sizes gradually for lower latency and adds limited support for server-initiated renegotiation