DRAFT RELEASE NOTES — Introduction to Go 1.14

Go 1.14 is not yet released. These are work-in-progress release notes. Go 1.14 is expected to be released in February 2020.

Changes to the language

TODO

Ports

TODO: is Dragonfly passing? On both Dragonfly release & tip? (ABI change happened) Does the net package's interface APIs work on both? https://golang.org/issue/34368.

TODO: is Illumos up with a builder and passing? https://golang.org/issue/15581.

TODO: announce something about the Go Solaris port? Solaris itself is unmaintained? The builder is still running at Oracle, but the employee who set it up left the company and we have no way to maintain it.

Native Client (NaCl)

As announced in the Go 1.13 release notes, Go 1.14 drops support for the Native Client platform (GOOS=nacl).

Tools

TODO

Go command

When the main module contains a top-level vendor directory and its go.mod file specifies go 1.14 or higher, the go command now defaults to -mod=vendor for operations that accept that flag. A new value for that flag, -mod=mod, causes the go command to instead load modules from the module cache (as when no vendor directory is present).

When -mod=vendor is set (explicitly or by default), the go command now verifies that the main module's vendor/modules.txt file is consistent with its go.mod file.

go list -m no longer silently omits transitive dependencies that do not provide packages in the vendor directory. It now fails explicitly if -mod=vendor is set.

The go get command no longer accepts the -mod flag. Previously, the flag's setting either was ignored or caused the build to fail.

The go command now includes snippets of plain-text error messages from module proxies and other HTTP servers. An error message will only be shown if it is valid UTF-8 and consists of only graphic characters and spaces.

Runtime

TODO

Core library

TODO

bytes/hash

TODO: https://golang.org/cl/186877: add hashing package for bytes and strings

crypto/tls

TODO: https://golang.org/cl/191976: remove SSLv3 support

TODO: https://golang.org/cl/191999: remove TLS 1.3 opt-out

The tls package no longer supports NPN and now only supports ALPN. In previous releases it supported both. There are no API changes and code should function identically as before. Most other clients & servers have already removed NPN support in favor of the standardized ALPN.

encoding/asn1

TODO: https://golang.org/cl/126624: handle ASN1's string type BMPString

mime

TODO: https://golang.org/cl/186927: update type of .js and .mjs files to text/javascript

plugin

TODO: https://golang.org/cl/191617: add freebsd/amd64 plugin support

reflect

StructOf now supports creating struct types with unexported fields, by setting the PkgPath field in a StructField element.

runtime

TODO: https://golang.org/cl/187739: treat CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, CTRL_SHUTDOWN_EVENT as SIGTERM on Windows

TODO: https://golang.org/cl/188297: don't forward SIGPIPE on macOS

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.

TODO