← All releases

go1.13.0

Major

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.

highlights
  • 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