DRAFT RELEASE NOTES - Introduction to Go 1.11

Go 1.11 is not yet released. These are work-in-progress release notes. Go 1.11 is expected to be released in August 2018.

The latest Go release, version 1.11, arrives six months after Go 1.10. Most of its changes are in the implementation of the toolchain, runtime, and libraries. As always, the release maintains the Go 1 promise of compatibility. We expect almost all Go programs to continue to compile and run as before.

Changes to the language

There are no changes to the language specification.

Ports

As announced in the Go 1.10 release notes, Go 1.11 now requires OpenBSD 6.2 or later, macOS 10.10 Yosemite or later, or Windows 7 or later; Support for previous versions of these operating systems has been removed.

There are known issues with NetBSD on i386 hardware.

TODO: PPC64LE race detector support

Package Versioning (vgo)

NOTE: This is not present in go1.11beta1 but will be available in future betas and subsequent releases. Go 1.11 adds experimental, integrated support for package versioning.

WebAssembly

Go 1.11 adds an experimental port to WebAssembly (js/wasm).

Core library

All of the changes to the standard library are minor.

Minor changes to the library

As always, there are various minor changes and updates to the library, made with the Go 1 promise of compatibility in mind.

all

TODO: https://golang.org/cl/93875: enable c-shared/c-archive support for freebsd/amd64

TODO: https://golang.org/cl/94255: drop support for Windows Vista or below (Windows XP)

TODO: https://golang.org/cl/115038: remove support for macOS 10.9 and earlier

crypto

TODO: https://golang.org/cl/64451: randomly read an extra byte of randomness in some places.

crypto/cipher

TODO: https://golang.org/cl/48510: add NewGCMWithTagSize for custom tag sizes.

crypto/rsa

TODO: https://golang.org/cl/103876: add PublicKey.Size accessor

debug/elf

TODO: https://golang.org/cl/112115: add machine and OSABI constants

encoding/asn1

TODO: https://golang.org/cl/110561: allow Marshaling and Unmarshaling private tag class

encoding/base32

TODO: https://golang.org/cl/112516: handle surplus padding consistently

encoding/csv

TODO: https://golang.org/cl/99696: disallow quote for use as Comma

go/build, runtime/internal/sys

TODO: https://golang.org/cl/106256: reserve RISC-V arch names

image/gif

TODO: https://golang.org/cl/93076: support non-looping animated gifs (LoopCount=-1)

io/ioutil

TODO: https://golang.org/cl/105675: change TempFile prefix to a pattern

math/big

TODO: https://golang.org/cl/74851: speed-up addMulVVW on amd64

net

TODO: https://golang.org/cl/72810: add ListenConfig, Dialer.Control to permit socket opts before listen/dial

TODO: https://golang.org/cl/76391: implement (*syscall.RawConn).Read/Write on Windows

TODO: https://golang.org/cl/107715: add support for splice(2) in (*TCPConn).ReadFrom on Linux

TODO: https://golang.org/cl/108297: calling File leaves the socket in nonblocking mode

net/http

TODO: https://golang.org/cl/89275: don't sniff Content-type in Server when X-Content-Type-Options:nosniff

TODO: https://golang.org/cl/93296: add StatusMisdirectedRequest (421)

os

TODO: https://golang.org/cl/78835: add UserCacheDir

TODO: https://golang.org/cl/94856: add ModeIrregular flag

TODO: https://golang.org/cl/99337: enable symlink creation on Windows 10

TODO: https://golang.org/cl/100077: use poller when NewFile is called with a blocking descriptor.

os/signal

TODO: https://golang.org/cl/108376: add func Ignored(sig Signal) bool

os/user

TODO: https://golang.org/cl/92456: add a way to enforce pure Go implementation

runtime

TODO: https://golang.org/cl/85887: use sparse mappings for the heap

TODO: https://golang.org/cl/94076: use native CAS and memory barrier on ARMv7

TODO: https://golang.org/cl/106156: use fixed TLS offsets on darwin/amd64 and darwin/386

TODO: https://golang.org/cl/109255: enable memory sanitizer on arm64

runtime,cmd/ld

TODO: https://golang.org/cl/108679: on darwin, create theads using libc

runtime/pprof

TODO: https://golang.org/cl/102696: introduce "allocs" profile

runtime/traceback

TODO: https://golang.org/cl/70993: support tracking goroutine ancestor tracebacks with GODEBUG="tracebackancestors=N"

sync

TODO: https://golang.org/cl/87095: enable profiling of RWMutex

syscall

TODO: https://golang.org/cl/106275: introduce Pointer type and use it instead of uintptr

text/scanner

TODO: https://golang.org/cl/112037: return RawString token rather than String for raw string literals

text/template

TODO: https://golang.org/cl/84480: add variable assignments

time

TODO: https://golang.org/cl/98157: add support for parsing timezones denoted by sign and offset