From 8114a855da66750ebebfe4bcaf3516b688c375c0 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 5 Dec 2017 23:36:53 -0500 Subject: [PATCH] doc/go1.10: process comments from CL 78131 PS 5 Change-Id: Ie246756452cd872961aeb659b35297c229504a3c Reviewed-on: https://go-review.googlesource.com/81936 Reviewed-by: Russ Cox --- doc/go1.10.html | 113 ++++++++++++++++++++++++++++++------------------ 1 file changed, 70 insertions(+), 43 deletions(-) diff --git a/doc/go1.10.html b/doc/go1.10.html index a42c719c82..dcf45cd188 100644 --- a/doc/go1.10.html +++ b/doc/go1.10.html @@ -22,6 +22,16 @@ ul li { margin: 0.5em 0; } release notes. Go 1.10 is expected to be released in February 2018.

+ +

The latest Go release, version 1.10, arrives six months after go1.9. Most of its changes are in the implementation of the toolchain, runtime, and libraries. @@ -141,8 +151,8 @@ The new build cache makes future commands still run as quickly as if the dependencies had been installed. To force the installation of dependencies, use the new go install -i flag. -Installing dependencies should not be necessary in general, -and the very concept or installed packages may disappear in a future release. +Installing dependency packages should not be necessary in general, +and the very concept of installed packages may disappear in a future release.

@@ -208,7 +218,7 @@ merging most of the time.

The go test -v output now includes PAUSE and CONT status update -lines to make clearer when parallel tests pause and continue. +lines to mark when parallel tests pause and continue.

@@ -320,13 +330,14 @@ without the binary that produced the profile.

The go tool pprof profile visualizer has been updated to -the latest version from github.com/google/pprof. +the latest version from github.com/google/pprof, +which includes an updated web interface.

Vet

-The go vet command now always has access to +The go vet command now always has access to complete, up-to-date type information when checking packages, even for packages using cgo or vendored imports. The reports should be more accurate as a result. Note that only go vet has access to this information; @@ -386,9 +397,10 @@ spread fairly evenly across the supported architectures.

-TODO: What to say about DWARF work, if anything? -Global constants (CL 61019), variable decomposition (CL 50878), variable liveness and location lists (CL 41770), more? -What is enabled by default? +The DWARF debug information recorded in binaries has been improved in a few ways: +constant values are now recorded; +line number information is more accurate, making source-level stepping through a program work better; +and each package is now presented as its own DWARF compilation unit.

@@ -493,8 +505,8 @@ instructions.

-For the X86 64-bit port, the assembler now supports 359 new instructions -and is believed to be complete up to and including the Intel AVX-256 extensions. +For the X86 64-bit port, the assembler now supports 359 new instructions, +including the full AVX, AVX2, BMI, BMI2, F16C, FMA3, SSE2, SSE3, SSSE3, SSE4.1, and SSE4.2 extension sets. The assembler also no longer implements MOVL $0, AX as an XORL instruction, to avoid clearing the condition flags unexpectedly. @@ -509,12 +521,35 @@ TODO: Words about GCC 8 and Go 1.10.

Runtime

-TODO: Don't start new threads from locked threads or threads that Go did not create. LockOSThread/UnlockOSThread now nest. LockOSThread + return kills the thread +The behavior of nested calls to +LockOSThread and +UnlockOSThread +has changed. +These functions control whether a goroutine is locked to a specific operating system thread, +so that the goroutine only runs on that thread, and the thread only runs that goroutine. +Previously, calling LockOSThread more than once in a row +was equivalent to calling it once, and a single UnlockOSThread +always unlocked the thread. +Now, the calls nest: if LockOSThread is called multiple times, +UnlockOSThread must be called the same number of times +in order to unlock the thread. +Existing code that was careful not to nest these calls will remain correct. +Existing code that incorrectly assumed the calls nested will become correct. +Most uses of these functions in public Go source falls into the second category. +

+ +

+Because one common use of LockOSThread and UnlockOSThread +is to allow Go code to reliably modify thread-local state (for example, Linux or Plan 9 name spaces), +the runtime now treats locked threads as unsuitable for reuse or for creating new threads.

Stack traces no longer include implicit wrapper functions (previously marked <autogenerated>), unless a fault or panic happens in the wrapper itself. +As a result, skip counts passed to functions like Caller +should now always match the structure of the code as written, rather than depending on +optimization decisions and implementation details.

@@ -534,7 +569,7 @@ better generated code, and optimizations in the core library.

Garbage Collector

-TODO: Anything? +Many applications should experience significantly lower allocation latency and overall performance overhead when the garbage collector is active.

Core library

@@ -571,12 +606,13 @@ The new Header.Format field of type Format controls which tar header format the Writer uses. The default, as before, is to select the most widely-supported header type -that can encoding the fields needed by the header (USTAR if possible, or else PAX if possible, or else GNU). +that can encode the fields needed by the header (USTAR if possible, or else PAX if possible, or else GNU). The Reader sets Header.Format for each header it reads.

-Reader and the Writer now support PAX records, -using the new Header.PAXRecords field. +Reader and the Writer now support arbitrary PAX records, +using the new Header.PAXRecords field, +a generalization of the existing Xattrs field.

The Reader no longer insists that the file name or link name in GNU headers @@ -587,10 +623,6 @@ When writing PAX- or GNU-format headers, the Writer now includes the Header.AccessTime and Header.ChangeTime fields (if set). When writing PAX-format headers, the times include sub-second precision.

-

-The Writer.Flush method, -which has had no real effect since Go 1.1, is now marked deprecated. -

archive/zip
@@ -607,8 +639,9 @@ now support the widely-understood Info-Zip extension that encodes the time separ The FileHeader's new Modified field of type time.Time obsoletes the ModifiedTime and ModifiedDate fields, which continue to hold the MS-DOS encoding. The Reader and Writer now adopt the common -convention that ZIP archive storing the Unix time encoding store the local time -in the MS-DOS field, so that the time zone offset can be inferred. +convention that a ZIP archive storing a time zone-independent Unix time +also stores the local time in the MS-DOS field, +so that the time zone offset can be inferred. For compatibility, the ModTime and SetModTime methods behave the same as in earlier releases; new code should use Modified directly. @@ -770,7 +803,7 @@ and

Go 1.10 adds support for reading relocations from Mach-O sections, using the Section struct's new Relocs field -and the newReloc, +and the new Reloc, RelocTypeARM, RelocTypeARM64, RelocTypeGeneric, @@ -846,7 +879,7 @@ When the functions and DecodeString encounter malformed input, -they each now return the number of bytes already converted +they now return the number of bytes already converted along with the error. Previously they always returned a count of 0 with any error.

@@ -857,7 +890,7 @@ Previously they always returned a count of 0 with any error.

The Decoder adds a new method -DisallowUnknownFields +DisallowUnknownFields that causes it to report inputs with unknown JSON fields as a decoding error. (The default behavior has always been to discard unknown fields.)

@@ -872,6 +905,10 @@ and no longer generate partial output when presented with a block that is impossible to encode as PEM data.

+ +

+TODO: Reflect fallout. +

encoding/xml
@@ -1005,7 +1042,7 @@ have been corrected to match the definitions used in the C99 standard.
math/rand

-The new function and corresponding +The new Shuffle function and corresponding Rand.Shuffle method shuffle an input sequence.

@@ -1018,9 +1055,9 @@ The new functions Round and RoundToEven -round their arguments to the nearest integer; +round their arguments to the nearest floating-point integer; Round rounds a half-integer to its larger integer neighbor (away from zero) -while RoundToEven rounds a half-integer its even integer neighbor. +while RoundToEven rounds a half-integer to its even integer neighbor.

@@ -1112,21 +1149,7 @@ if passed an invalid (non-3-digit) status code.

net/http/httputil

-The ReverseProxy now invokes -the -On the client side, an HTTP proxy (most commonly configured by -ProxyFromEnvironment) -can now be specified as an https:// URL, -meaning that the client connects to the proxy over HTTPS before issuing a standard, proxied HTTP request. -(Previously, HTTP proxy URLs were required to begin with http:// or socks5://.) -

-

-On the server side, FileServer and its single-file equivalent ServeFile -now apply If-Range checks to HEAD requests. -FileServer also now reports directory read failures to the Server's ErrorLog. -

-

-Redirect now sets the Content-Type header before writing its HTTP response. +TODO: ReverseProxy and back end errors and ModifyResponse.

@@ -1134,7 +1157,7 @@ now apply If-Range checks to HEAD requests.

ParseAddress and -ParseAddressList and +ParseAddressList now support a variety of obsolete address formats.

@@ -1243,6 +1266,10 @@ The Copy function now allows copyi from a string into a byte array or byte slice, to match the built-in copy function.

+ +

+TODO: New reflect CanSet change for pointers to unexported fields. +

runtime/pprof
-- 2.48.1