From 92e03bbaa8731a5857cf0a914f1483af36b781ea Mon Sep 17 00:00:00 2001
From: Austin Clements
+ Go 1.11 supports the upcoming OpenBSD 6.4 release. Due to changes in + the OpenBSD kernel, older versions of Go will not work on OpenBSD 6.4. +
+There are known issues with NetBSD on i386 hardware.
@@ -55,6 +60,10 @@ Do not send CLs removing the interior tags from such phrases. has known issues. +
+ The memory sanitizer (-msan
) is now supported on linux/arm64
.
+
The build modes c-shared
and c-archive
are now supported on
freebsd/amd64
.
@@ -69,6 +78,21 @@ Do not send CLs removing the interior tags from such phrases.
as added in Go 1.10.
+ On soft-float ARM systems (GOARM=5
), Go now uses a more
+ efficient software floating point interface. This is transparent to
+ Go code, but ARM assembly that uses floating-point instructions not
+ guarded on GOARM will break and must be ported to
+ the new interface.
+
+ Go 1.11 on ARMv7 no longer requires a Linux kernel configured
+ with KUSER_HELPERS
. This setting is enabled in default
+ kernel configurations, but is sometimes disabled in stripped-down
+ configurations.
+
Go 1.11 adds an experimental port to WebAssembly (js/wasm
).
@@ -157,6 +181,88 @@ Do not send CLs removing the interior tags from such phrases.
please file an issue to let us know about them.
+ More functions are now eligible for inlining by default, including
+ functions that call panic
.
+
+ The compiler toolchain now supports column information + in line + directives. +
+ +
+ A new package export data format has been introduced.
+ This should be transparent to end users, except for speeding up
+ build times for large Go projects.
+ If it does cause problems, it can be turned off again by
+ passing -gcflags=all=-iexport=false
to
+ the go
tool when building a binary.
+
+ The compiler now rejects unused variables declared in a type switch
+ guard, such as x
in the following example:
+
+func f(v interface{}) { + switch x := v.(type) { + } +} ++
+ This was already rejected by both gccgo
+ and go/types.
+
+ The assembler for amd64
now accepts AVX512 instructions.
+
+ The compiler now produces significantly more accurate debug
+ information for optimized binaries, including variable location
+ information, line numbers, and breakpoint locations.
+
+ This should make it possible to debug binaries
+ compiled without -N
-l
.
+
+ There are still limitations to the quality of the debug information,
+ some of which are fundamental, and some of which will continue to
+ improve with future releases.
+
+ DWARF sections are now compressed by default because of the expanded
+ and more accurate debug information produced by the compiler.
+
+ This is transparent to most ELF tools (such as debuggers on Linux
+ and *BSD) and is supported by the Delve debugger on all platforms,
+ but has limited support in the native tools on macOS and Windows.
+
+ To disable DWARF compression,
+ pass -ldflags=-compressdwarf=false
to
+ the go
tool when building a binary.
+
+ Go 1.11 adds experimental support for calling Go functions from
+ within a debugger.
+
+ This is useful, for example, to call String
methods
+ when paused at a breakpoint.
+
+
+ This is currently only supported by Delve.
+
+ The -memprofile
flag
+ to go
test
now defaults to the
+ "allocs" profile, which records the total bytes allocated since the
+ test began (including garbage-collected bytes).
+
vet
to exit with status 1.
+
+ The runtime now uses a sparse heap layout so there is no longer a
+ limit to the size of the Go heap (previously, the limit was 512GiB).
+ This also fixes rare "address space conflict" failures in mixed Go/C
+ binaries or binaries compiled with -race
.
+
+ On macOS, the runtime now uses libSystem.so
instead of
+ calling the kernel directly. This should make Go binaries more
+ compatible with future versions of macOS.
+ The syscall package still makes direct
+ system calls; fixing this is planned for a future release.
+
- 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 -
- -- TODO: https://golang.org/cl/109699: support for debugger function calls -
- -- TODO: https://golang.org/cl/121657: remap stack spans with MAP_STACK on OpenBSD -
-
- TODO: https://golang.org/cl/70993: support tracking goroutine ancestor tracebacks with GODEBUG="tracebackancestors=N"
+ Setting the GODEBUG=tracebackancestors=N
+ environment variable now extends tracebacks with the stacks at
+ which goroutines were created, where N limits the
+ number of ancestor goroutines to report.
- TODO: https://golang.org/cl/108679: on darwin, create theads using libc -
- -
- TODO: https://golang.org/cl/102696: introduce "allocs" profile
+ This release adds a new "allocs" profile type that profiles
+ total number of bytes allocated since the program began
+ (including garbage-collected bytes). This is identical to the
+ existing "heap" profile viewed in -alloc_space
+ mode.
- TODO: https://golang.org/cl/108679: on darwin, create theads using libc -
- -- TODO: https://golang.org/cl/63274: user annotation API -
- -- TODO: https://golang.org/cl/70993: support tracking goroutine ancestor tracebacks with GODEBUG="tracebackancestors=N" -
- -
- TODO: https://golang.org/cl/87095: enable profiling of RWMutex
+ The mutex profile now includes reader/writer contention
+ for RWMutex
.
+ Writer/writer contention was already included in the mutex
+ profile.