From: Austin Clements Date: Tue, 17 Jul 2018 21:49:37 +0000 (-0400) Subject: doc/go1.11: compiler and runtime release notes X-Git-Tag: go1.11beta2~68 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=92e03bbaa8731a5857cf0a914f1483af36b781ea;p=gostls13.git doc/go1.11: compiler and runtime release notes Change-Id: I487bdf0c828d28b2122bd93934dc5a9a5dbc6a00 Reviewed-on: https://go-review.googlesource.com/124517 Reviewed-by: Austin Clements --- diff --git a/doc/go1.11.html b/doc/go1.11.html index 7cdfebb706..48b18c737a 100644 --- a/doc/go1.11.html +++ b/doc/go1.11.html @@ -45,6 +45,11 @@ Do not send CLs removing the interior tags from such phrases. Support for previous versions of these operating systems has been removed.

+

+ 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. +

+

WebAssembly

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.

+

Compiler toolchain

+ +

+ 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. +

+ +

Assembler

+ +

+ The assembler for amd64 now accepts AVX512 instructions. +

+ +

Debugging

+ +

+ 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. +

+

Tools

Test

@@ -175,6 +281,12 @@ Do not send CLs removing the interior tags from such phrases. "unused variable" error in this case.

+

+ 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

@@ -185,6 +297,22 @@ Do not send CLs removing the interior tags from such phrases. a warning to be printed, and vet to exit with status 1.

+

Runtime

+ +

+ 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. +

Core library

@@ -200,17 +328,8 @@ Do not send CLs removing the interior tags from such phrases. in mind.

- - - - - - - - - @@ -523,48 +642,27 @@ Do not send CLs removing the interior tags from such phrases.
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 -

- -

- 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.

-
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 + 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.

@@ -577,37 +675,13 @@ Do not send CLs removing the interior tags from such phrases. - - - -
runtime,cmd/ld
-
-

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

- -
- -
runtime/trace
-
-

- TODO: https://golang.org/cl/63274: user annotation API -

- -
- -
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 + The mutex profile now includes reader/writer contention + for RWMutex. + Writer/writer contention was already included in the mutex + profile.