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.
TODO
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.
Go 1.14 is the last Go release to support 32-bit binaries on
macOS (the darwin/386
port). They are no longer
supported by macOS, starting with macOS 10.15 (Catalina).
Go continues to support the 64-bit darwin/amd64
port.
Go 1.14 will likely be the last Go release to support 32-bit
binaries on iOS, iPadOS, watchOS, and tvOS
(the darwin/arm
port). Go continues to support the
64-bit darwin/arm64
port.
As announced in the Go 1.13 release notes,
Go 1.14 drops support for the Native Client platform (GOOS=nacl
).
TODO
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.
-modcacherw
is a new flag that instructs the go
command to leave newly-created directories in the module cache at their
default permissions rather than making them read-only.
The use of this flag makes it more likely that tests or other tools will
accidentally add files not included in the module's verified checksum.
However, it allows the use of rm
-rf
(instead of go
clean
-modcache
)
to remove the module cache.
-modfile=file
is a new flag that instructs the go
command to read (and possibly write) an alternate go.mod file instead of the
one in the module root directory. A file named "go.mod" must still be present
in order to determine the module root directory, but it is not
accessed. When -modfile
is specified, an alternate go.sum file
is also used: its path is derived from the -modfile
flag by
trimming the ".mod" extension and appending ".sum".
+incompatible
versions
If the latest version of a module contains a go.mod
file,
go
get
will no longer upgrade to an
incompatible
major version of that module unless such a version is requested explicitly
or is already required.
go
list
also omits incompatible major versions
for such a module when fetching directly from version control, but may
include them if reported by a proxy.
The go
command now supports Subversion repositories in module mode.
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.
TODO
TODO
TODO: https://golang.org/cl/186877: add hashing package for bytes and strings
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.
TODO: https://golang.org/cl/126624: handle ASN1's string type BMPString
TODO: https://golang.org/cl/186927: update type of .js and .mjs files to text/javascript
The new Fma
function
computes x*y+z
in floating point with no
intermediate rounding of the x*y
computation. Several architectures implement this computation
using dedicated hardware instructions for additional
performance.
TODO: https://golang.org/cl/191617: add freebsd/amd64 plugin support
StructOf
now
supports creating struct types with unexported fields, by
setting the PkgPath
field in
a StructField
element.
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
The testing package now supports cleanup functions, called after
a test or benchmark has finished, by calling
T.Cleanup
or
B.Cleanup
respectively.
As always, there are various minor changes and updates to the library, made with the Go 1 promise of compatibility in mind.
TODO