September 3, 2019
Go 1.13 adds new number literal syntax and signed shift counts, introduces error wrapping (%w, errors.Is/As/Unwrap), turns on TLS 1.3 by default, and overhauls module proxy/checksum defaults (GOPROXY, GOSUMDB, GOPRIVATE) alongside a 30% defer speedup.
New number literal syntax: binary (0b1011), octal (0o660), hex floating-point (0x1.0p-1021), underscore digit separators (1_000_000), and imaginary suffix allowed on any literal type
Shift counts no longer need to be unsigned, removing a common source of artificial uint conversions
Error wrapping added: fmt.Errorf gets a %w verb, plus new errors.Unwrap, errors.Is, and errors.As functions
TLS 1.3 is now enabled by default in crypto/tls (disable via GODEBUG=tls13=0; the opt-out is removed in Go 1.14)
New crypto/ed25519 package for the Ed25519 signature scheme, now also supported in TLS 1.2/1.3 certificates
Module proxy/checksum defaults changed: GOPROXY now defaults to proxy.golang.org,direct, plus new GOSUMDB and GOPRIVATE env vars for controlling checksum verification of private modules
go get -u now updates a narrower, more predictable set of dependencies; the -m flag has been removed
New go env -w/-u flags to persist default environment variable settings, and a new go build -trimpath flag for reproducible builds
Runtime defer performance improved by about 30%, escape analysis is more precise (more stack allocation), and memory is returned to the OS more promptly
Out-of-range panic messages now include the offending index and the slice's length or capacity
godoc webserver removed from the main distribution; must be installed separately via go get
Platform changes: last release supporting NaCl, new illumos GOOS, AIX ppc64 gains cgo/pie support, internally-linked Windows binaries now target Windows 7