doc: more go1.8.html content

TBR=See https://golang.org/cl/33244 and review there.

Updates #17929

Change-Id: I37b49318a9203b16c0c788926039288b99a36ce5
Reviewed-on: https://go-review.googlesource.com/33450
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Brad Fitzpatrick 2016-11-22 08:24:13 -07:00
parent 86ab09eed5
commit ac1dbe6392
2 changed files with 453 additions and 118 deletions

View file

@ -43,8 +43,15 @@ and <a href="#sort">simplifies sorting slices</a>.
<h2 id="language">Changes to the language</h2>
<p>
When explicitly converting structs, tags are now ignored for structural type identity.
See <a href="https://golang.org/cl/24190">change 24190</a> for details.
When explicitly converting structs, tags are now ignored for structural type identity.
See <a href="https://golang.org/cl/24190">change 24190</a> for details.
</p>
<p> <!-- CL 17711 -->
The language specification now only requires that implementations
support up to 16-bit exponents in constants. This does not affect
either the <code>gc</code> or <code>gccgo</code> compilers, both of
which still support 32-bit exponents.
</p>
<h2 id="ports">Ports</h2>
@ -56,7 +63,7 @@ Go now supports 32-bit MIPS on Linux for both big-endian
</p>
<p>
Go now requires DragonFly BSD 4.4.4 or later.
Go now requires DragonFly BSD 4.4.4 or later. <!-- CL 29491 -->
</p>
<p>
@ -65,16 +72,23 @@ and matches the behavior of Unix and Windows with respect to deadlines
and cancelation.
</p>
<p>
Go 1.8 now only supports OS X 10.8 or later. This is likely the last
Go release to continue supporting 10.8. Compiling Go or running
binaries on older OS X versions is untested.
</p>
<h3 id="known_issues">Known Issues</h3>
<p>
There are some instabilities on FreeBSD that are known but not understood.
There are some instabilities on FreeBSD and NetBSD that are known but not understood.
These can lead to program crashes in rare cases.
See
<a href="https://golang.org/issue/15658">issue 15658</a>
and <a href="https://golang.org/issue/16396">issue 16396</a>.
Any help in solving these FreeBSD-specific issues would be appreciated.
<a href="https://golang.org/issue/15658">issue 15658</a>,
<a href="https://golang.org/issue/16396">issue 16396</a>, and
<a href="https://golang.org/issue/16511">issue 16511</a>.
Any help in solving these issues would be appreciated.
</p>
<h2 id="tools">Tools</h2>
@ -99,7 +113,7 @@ added. See <a href="https://golang.org/cl/30510">change 30510</a>.
<h3 id="tool_yacc">Yacc</h3>
<p>
<p> <!-- CL 27324, CL 27325 -->
The <code>yacc</code> (previously available via
<code>go</code> <code>tool</code> <code>yacc</code>”)
has been removed. As of Go 1.7 it was no longer used by the Go compiler.
@ -132,15 +146,22 @@ the new backend has been removed in Go 1.8.
</p>
<p>
The compiler and linker have been optimized and run faster in this
release than in Go 1.7, although they are still slower than we would
like and will continue to be optimized in future releases.
In addition to enabling the new compiler back end for all systems,
Go 1.8 also introduces a new compiler front end. The new compiler
front end should not be noticeable to users is the foundation for
future performance work.
</p>
<p>
Due to changes across the compiler toolchain and standard library,
binaries built with this release should typically be smaller than binaries
built with Go 1.7, sometimes by as much as TODO numbers.
The compiler and linker have been optimized and run faster in this
release than in Go 1.7, although they are still slower than we would
like and will continue to be optimized in future releases.
</p>
<p>
Due to changes across the compiler toolchain and standard library,
binaries built with this release should typically be smaller than
binaries built with Go 1.7, sometimes by as much as TODO numbers.
</p>
@ -165,19 +186,53 @@ A new “<code>go</code> <code>bug</code>” command helps users file bug report
<h3 id="cmd_doc">Go doc</h3>
<p>
<p> <!-- CL 25419 -->
The “<code>go</code> <code>doc</code>” command
now groups constants and variables with their type,
following the behavior of
<a href="/cmd/godoc/"><code>godoc</code></a>.
</p>
<p>
<p> <!-- CL 25420 -->
In order to improve the readability of the <code>doc</code>'s
output, each summary of the first-level items is guaranteed to
occupy a single line.
</p>
<p> <!-- CL 31852 -->
Documentation for interface methods is now only shown when requested
explicitly.
</p>
<h3 id="plugin">Plug-ins</h3>
<p>
Go now supports a “<code>plugin</code>” build mode for generating
plug-ins written in Go, and a
new <a href="/pkg/plugin/"><code>plugin</code></a> package for
loading such plug-ins at run time. Plug-ins support is only currently
available on Linux and Darwin.
</p>
<h2 id="runtime">Runtime</h2>
<h3 id="liveness">Argument Liveness</h3>
<p>
<!-- Issue 15843 --> The garbage collector no longer considers
arguments live throughout the entirety of a function. For more
information, and for how to force a variable to remain live, see
the <a href="/pkg/runtime/#KeepAlive"><code>runtime.KeepAlive</code></a>
function added in Go 1.7.
</p>
<h3 id="memstats">MemStats Documentation</h3>
<p> <!-- CL 28972 -->
The runtime's <a href="/pkg/runtime/#MemStats"><code>MemStats</code></a>
type has been more throroughly documented.
</p>
<h2 id="performance">Performance</h2>
<p>
@ -185,7 +240,7 @@ As always, the changes are so general and varied that precise statements
about performance are difficult to make.
Most programs should run a bit faster,
due to speedups in the garbage collector and
optimizations in the core library.
optimizations in the standard library.
</p>
<p>
@ -219,20 +274,20 @@ More work remains for Go 1.9.
<p>Calls from Go into C are now TODO% faster.</p>
<h2 id="library">Core library</h2>
<h2 id="library">Standard library</h2>
<h3 id="examples">Examples</h3>
<p>
Many examples have been added to the documentation across many packages.
Examples have been added to the documentation across many packages.
</p>
<h3 id="sort">Sort</h3>
<h3 id="sortslice">Sort</h3>
<p>
The <a href="/pkg/sort/">sort</a> package
now includes a convenience function
<a href="/pkg/sort/#Slice"><code>sort.Slice</code></a> to sort a
<a href="/pkg/sort/#Slice"><code>Slice</code></a> to sort a
slice given a <em>less</em> function.
In many cases this means that writing a new sorter type is not
@ -241,8 +296,8 @@ necessary.
<p>
Also new are
<a href="/pkg/sort/#SliceStable"><code>sort.SliceStable</code></a> and
<a href="/pkg/sort/#SliceIsSorted"><code>sort.SliceIsSorted</code></a>.
<a href="/pkg/sort/#SliceStable"><code>SliceStable</code></a> and
<a href="/pkg/sort/#SliceIsSorted"><code>SliceIsSorted</code></a>.
</p>
<h3 id="h2push">HTTP/2 Push</h3>
@ -327,4 +382,256 @@ in mind.
</dd>
</dl>
<dl id="archive_tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt>
<dd>
<p> <!-- CL 30370 -->
The <code>DeadlineExceeded</code> error now implements
<a href="/pkg/net/#Error"><code>net.Error</code></a>
and reports true for both the <code>Timeout</code> and
<code>Temporary</code> methods.
</p>
</dd>
</dl>
<dl id="encoding_binary"><dt><a href="/pkg/encoding/">encoding/binary</a></dt>
<dd>
<p> <!-- CL 28514 -->
The package now supports boolean values.
TODO: add docs in encoding/binary package, then link to package docs
here.
</p>
</dd>
</dl>
<dl id="expvar"><dt><a href="/pkg/expvar/">expvar</a></dt>
<dd>
<p> <!-- CL 30917 -->
The new methods
<a href="/pkg/expvar/#Int.Value"><code>Int.Value</code></a>,
<a href="/pkg/expvar/#String.Value"><code>String.Value</code></a>,
<a href="/pkg/expvar/#Float.Value"><code>Float.Value</code></a>, and
<a href="/pkg/expvar/#Func.Value"><code>Func.Value</code></a>
report the current value of an exported variable.
</p>
<p> <!-- CL 24722 -->
The new
function <a href="/pkg/expvar/#Handler"><code>Handler</code></a>
returns the package's HTTP handler, to enable installing it in
non-standard locations.
</p>
</dd>
</dl>
<dl id="image_png"><dt><a href="/pkg/image/png/">image/png</a></dt>
<dd>
<p> <!-- CL 32143, CL 32140 -->
The PNG decoder now supports truecolor and grayscale transparency.
</p>
<p> <!-- CL 29872 -->
The PNG encoder is now faster and creates smaller output
when encoding paletted images.
</p>
</dd>
</dl>
<dl id="math_rand"><dt><a href="/pkg/math/rand/">math/rand</a></dt>
<dd>
<p>
There is a new
method <a href="/pkg/math/rand/#Rand.Uint64"><code>Rand.Uint64</code></a>
to return <code>uint64</code> values. <!-- CL 27253 -->
</p>
</dd>
</dl>
<dl id="mime_quotedprintable"><dt><a href="/pkg/mime/quotedprintable/">mime/quotedprintable</a></dt>
<dd>
<p>
The package's parsing has been relaxed in two ways to accept
more input seen in the wild. First, it now accepts
a <code>=</code> sign even if it's not followed by two hex
digits. <!-- CL 32174 -->
Second, it accepts a trailing soft line-break at the end of a
message. <!-- CL 27530 -->. That is, the final byte of the
message may be a <code>=</code> sign and it will now be ignored.
</p>
</dd>
</dl>
<dl id="net_http"><dt><a href="/pkg/net/http/">net/http</a></dt>
<dd>
<p>
TODO
</p>
</dd>
</dl>
<dl id="net_mail"><dt><a href="/pkg/net/mail/">net/mail</a></dt>
<dd>
<p> <!-- CL 32176 -->
Empty quoted strings are now allowed in the name part of an
address. That is, this is now a legal address:
<code>"" &lt;gopher@example.com&gt;</code>
</p>
<p> <!-- CL 31581 -->
The <a href="/pkg/net/mail/#ParseDate"><code>ParseDate</code></a>
function has been exported.
</p>
</dd>
</dl>
<dl id="net_smtp"><dt><a href="/pkg/net/smtp/">net/smtp</a></dt>
<dd>
<p> <!-- CL 33143 -->
If implementations of the <a href="/pkg/net/smtp/#Auth"><code>Auth</code></a>
interface return an empty <code>toServer</code> value, the package
no longer sends trailing whitespace after the SMTP <code>AUTH</code>
command, which some servers rejected.
</p>
</dd>
</dl>
<dl id="net_url"><dt><a href="/pkg/net/url/">net/url</a></dt>
<dd>
<p> <!-- CL 31322 --> The new functions
<a href="/pkg/net/url/#PathEscape"><code>PathEscape</code></a>
and
<a href="/pkg/net/url/#PathUnescape"><code>PathUnescape</code></a>
deal with path escaping.</p>
<p> <!-- CL 28933 --> The new methods
<a href="/pkg/net/url/#URL.Hostname"><code>URL.Hostname</code></a>
and
<a href="/pkg/net/url/#URL.Port"><code>URL.Port</code></a>
are accessors to the hostname and port fields of a URL
and deal with the case where the port may or may not be present.
</p>
<p> <!-- CL 28343 --> The existing method
<a href="/pkg/net/url/#URL.ResolveReference"><code>URL.ResolveReference</code></a>
now properly handles paths with escaped bytes without losing
the escaping.
</p>
<p> <!-- CL 31467 -->
The <code>URL</code> type now implements
<a href="/pkg/encoding/#BinaryMarshaler"><code>encoding.BinaryMarshaler</code></a> and
<a href="/pkg/encoding/#BinaryUnmarshaler"><code>encoding.BinaryUnmarshaler</code></a>.
</p>
<p> <!-- CL 29610, CL 31582 -->
<code>Parse</code> now rejects relative URLs containing a "<code>:</code>" in
the first path segment. Such paths should be prefixed with "<code>./</code>".
The <code>URL.String</code> method now prepends "<code>./</code>" to such paths.
</p>
</dd>
</dl>
<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
<dd>
<p> <!-- CL 30088 -->
The new function
<a href="/pkg/reflect/#Swapper"><code>Swapper</code></a> was
added to support
the <a href="#sortslice">new <code>sort.Slice</code>
support</a>.
</p>
</dd>
</dl>
<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
<dd>
<p> <!-- CL 31210 -->
The <a href="/pkg/strconv/#Unquote"><code>Unquote</code></a>
function now strips carriage returns (<code>\r</code>) in
backquoted raw strings.
</p>
</dd>
</dl>
<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
<dd>
<p> <!-- CL 20118 --> The new function
<a href="/pkg/time/#Until"><code>Until</code></a> complements
the analogous <code>Since</code> function.
</p>
<p> <!-- CL 29338 --> <code>ParseDuration</code> now accepts long fractional parts.</p>
<p> <!-- CL 33429 -->
<code>Parse</code> now validates days that are too small, in
addition to days that are too large.
</p>
<p>
</dd>
</dl>
<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
<dd>
<p><!-- CL 29970 -->
The new method
<a href="/pkg/testing/#T.Name"><code>T.Name</code></a>
(and <code>B.Name</code>) returns the name of the current
test or benchmark.
</p>
<p><!-- CL 31724 -->
The new method
<a href="/pkg/testing/#T.Context"><code>T.Context</code></a>
(and <code>B.Context</code>) returns
a <a href="/pkg/context/#Context"><code>Context</code></a> for
the current running test or benchmark.
</p>
<p><!-- CL 32483 -->
The new function
<a href="/pkg/testing/#CoverMode"><code>CoverMode</code></a>
reports what the test coverage mode is set to.
</p>
<p><!-- CL 32615 -->
Tests and benchmarks are now marked as failed if the race
detector is enabled and a data race occurs during execution.
</p>
</dd>
</dl>
<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
<dd>
<p><!-- CL 30935 -->
<code>SimpleFold</code> now returns its argument unchanged
if the provided input was an invalid rune.
</p>
</dd>
</dl>
<dl id="foo"><dt><a href="/pkg/foo/">foo</a></dt>
<dd>
<p> <!-- CL nnn -->
</p>
</dd>
</dl>

View file

@ -1,47 +1,34 @@
Overall:
Note: once things are added to go1.8.html or deemed too minor they're
moved from the sections at top down to the "HTMLified" or "Probably
omit" sections below.
plugin build mode & package (many CLs)
Many ppc64, s390x, arm, arm64 optimizations
New frontend
Improvements to binary size, runtime speed, compile speed.
Hybrid barrier. <100us GC pauses.
cmd/compile: args no longer live until end of function - use runtime.KeepAlive instead (CL 28310)
Language:
When explicitly converting structs, tags are ignored for structural type identity (CL 24190).
These top sections remain to be HTMLified or deemed too boring:
Tools:
compile: SSA for 386, nacl, arm, arm64, ppc64, ppc64le, s390x ... (many CLs)
yacc: "go tool yacc" is removed. now at golang.org/x/tools/cmd/goyacc (CL 27324, CL 27325)
go: -buildmode=c-archive now builds PIC on ELF (CL 24180)
go: mobile pkg dir change, recommend using go list in scripts (CL 24930, CL 27929)
go, dist: can set default pkg-config tool using PKG_CONFIG env var (CL 29991)
go: can set secure/insecure GIT schemes using GIT_ALLOW_PROTOCOL env var (CL 30135)
Ports:
dragonfly: go1.8 requires DragonFly BSD 4.4.4 or above (CL 29491)
plan9: various fixes (Close unblocks Read, I/O deadline maybe?)
mips, mipsle
API additions and behavior changes:
all: freeze net/rpc and reword the 'frozen' message in other frozen packages (CL 32112)
archive/tar: fix and cleanup readOldGNUSparseMap (CL 28471)
archive/tar: fix parsePAX to be POSIX.1-2001 compliant (CL 31440)
archive/tar: fix parsePAXTime (CL 31441)
archive/tar: make Reader handle GNU format properly (CL 31444)
archive/tar: reapply Header.Size to regFileReader after merging (CL 28418)
archive/tar: validate sparse headers in parsePAX (CL 31439)
archive/zip: handle mtime in NTFS/UNIX/ExtendedTS extra fields (CL 18274)
archive/zip: only use Extended Timestamp on non-zero MS-DOS timestamps (CL 30811)
cmd/cgo: add #line directives to avoid printing bogus references to Go source files (CL 32613)
cmd/cgo: add -srcdir option (CL 32354)
cmd/cgo: don't ignore qualifiers, don't cast to void* (CL 33097)
cmd/cgo: fix line info in _cgo_gotypes.go (CL 29713)
cmd/cgo: throw if C.malloc returns nil (CL 31768)
cmd/compile, runtime, etc: get rid of constant FP registers (CL 28095)
cmd/compile, runtime: add go:yeswritebarrierrec pragma (CL 30938)
cmd/compile/internal/gc: add runtime/trace support (CL 25354)
@ -54,22 +41,20 @@ cmd/compile: add inline explainer (CL 22782)
cmd/compile: do more type conversion inline (CL 32313)
cmd/compile: enable flag-specified dump of specific phase+function (CL 23044)
cmd/compile: fail gracefully on export format skew (CL 27814)
cmd/compile: import/export of alias declarations (CL 32090)
cmd/compile: inline convI2E (CL 31260)
cmd/compile: make ssa compilation unconditional (CL 29155)
cmd/compile: remove -A flag (CL 31497)
cmd/compile: remove old lexer and parser (CL 32020)
cmd/compile: remove support for textual export format (CL 27171)
cmd/cover: Fix compiler directives handling (CL 30161)
cmd/cover: change covered block for switch/select case to exclude expression (CL 32612)
cmd/cover: handle gotos (CL 30977)
cmd/dist, go/build: make CGO_ENABLED during make.bash sticky (CL 31141)
cmd/dist: enable plugin test on darwin/amd64 (CL 29396)
cmd/dist: test PIE internal linking on linux/amd64 (CL 28545)
cmd/doc: ensure summaries truly are only one line (CL 25420)
cmd/doc: perform type grouping for constants and variables (CL 25419)
cmd/doc: show documentation for interface methods when requested explicitly (CL 31852)
cmd/fix: add golang.org/x/net/context fix (CL 28872)
cmd/go, testing: indicate when no tests are run (CL 22341)
cmd/go: add bug command (CL 28485)
cmd/go: add distribution-specific info for Linux to bug command (CL 28581)
@ -82,7 +67,7 @@ cmd/go: make go test -i -o x.test actually write x.test (CL 31352)
cmd/go: print more env variables in "go env" (CL 31330)
cmd/go: referee another vendor vs symlink fight (CL 31665)
cmd/go: use cgo -srcdir when using SWIG (CL 32485)
cmd/gofmt: don't eat source if -w fails (CL 33018)
cmd/internal/obj, cmd/link: darwin dynlink support (CL 29393)
cmd/internal/objfile: add ppc64/ppc64le disassembler support (CL 9682)
cmd/link, cmd/go: delay linking of mingwex and mingw32 until very end (CL 26670)
@ -100,12 +85,15 @@ cmd/link: remove the -shared flag (CL 28852)
cmd/link: split large elf text sections on ppc64x (CL 27790)
cmd/link: trampoline support for external linking on ARM (CL 31143)
cmd/objdump: implement objdump of .o files (CL 24818)
cmd/pprof: add options to skip tls verification (CL 33157)
cmd/pprof: don't print binary outputs in interactive mode (CL 31123)
cmd/pprof: instruction-level granularity in callgrind output (CL 23781)
cmd/trace: add option to output pprof files (CL 23324)
cmd/trace: fix a runnable goroutine count bug (CL 25552)
cmd/trace: move process-wide GC events to their own row (CL 30017)
cmd/vet: accept space-separated tag lists for compatibility with cmd/go (CL 32030)
cmd/vet: allow ^& uintptr arithmetic (CL 27156)
cmd/vet: allow any printf verb with any interface (CL 27127)
@ -116,17 +104,18 @@ cmd/vet: diagnose non-space-separated struct tag like `json:"x",xml:"y"` (CL 320
cmd/vet: improve asmdecl parameter handling (CL 27150)
cmd/vet: properly handle indexed arguments in printf (CL 24391)
cmd/vet: skip printf check for non-constant format string during failed import (CL 29014)
compress/flate: always return uncompressed data in the event of error (CL 28216)
compress/flate: level 1 (best speed) match across blocks (CL 31640)
compress/flate: make compression level 0 consistent (CL 31174)
compress/flate: tighten the BestSpeed max match offset bound. (CL 32149)
compress/gzip, compress/zlib: add HuffmanOnly as compression levels. (CL 31186)
compress/gzip: only encode MTIME if it is valid (CL 32325)
context: make DeadlineExceeded implement net.Error (CL 30370)
crypto/cipher: enforce message size limits for GCM (CL 28410)
crypto/rsa: ensure that generating toy RSA keys doesn't loop (CL 28969)
crypto/tls: add CloseWrite method to Conn (CL 25159)
crypto/tls: add CloseWrite method to Conn (CL 31318)
crypto/tls: add CloseWrite method to Conn (CL 25159, 31318)
crypto/tls: add Config.Clone (CL 28075)
crypto/tls: add Config.GetConfigForClient (CL 30790)
crypto/tls: add GetClientCertificate callback (CL 32115)
@ -143,6 +132,7 @@ crypto/tls: set Conn.ConnectionState.ServerName unconditionally (CL 22862)
crypto/tls: support AES-128-CBC cipher suites with SHA-256 (CL 27315)
crypto/tls: support ChaCha20-Poly1305. (CL 30957)
crypto/tls: support X25519 (CL 30824, CL 30825)
crypto/x509: Fix bug in UnknownAuthorityError.Error (CL 27992)
crypto/x509: allow a leaf certificate to be specified directly as root (CL 27393)
crypto/x509: check that the issuer name matches the issuer's subject name (CL 23571)
@ -157,7 +147,9 @@ crypto/x509: require a NULL parameters for RSA public keys (CL 27312)
crypto/x509: return error for missing SerialNumber (CL 27238)
crypto/x509: support PSS signatures (CL 24743)
crypto/x509: support RHEL 7 cert bundle (CL 30375)
crypto/{cipher,tls,internal/cryptohw}: prioritise AES-GCM when hardware support is present. (CL 32871)
database/sql: accept nil pointers to Valuers implemented on value receivers (CL 31259)
database/sql: add Pinger interface to driver Conn (CL 32136)
database/sql: add context helper methods and transaction types (CL 31258)
@ -166,25 +158,27 @@ database/sql: add option to use named parameter in query arguments (CL 30166)
database/sql: add support for multiple result sets (CL 30592)
database/sql: don't hang if the driver Exec method panics (CL 23576)
database/sql: support returning query database types (CL 29961)
debug/elf: add sparc64 relocations (CL 30870)
debug/pe: revert CL 22720 (CL 27212)
doc: document minimum OS X version as 10.8 (CL 28870)
encoding/asn1: return error for unexported fields in Marshal, Unmarshal (CL 31540)
encoding/base64: add Encoding.Strict (CL 24964)
encoding/binary: add bool support (CL 28514)
encoding/json: add struct and field name to UnmarshalTypeError message (CL 18692)
encoding/json: encode nil Marshaler as "null" (CL 31932)
encoding/json: fix decoding of null into Unmarshaler, TextUnmarshaler (CL 30944)
encoding/json: marshal the RawMessage value type the same as its pointer type (CL 21811)
encoding/json: use standard ES6 formatting for numbers during marshal (CL 30371)
encoding/pem: be stricter about the ending line (CL 27391)
encoding/xml: add wildcard support for collecting all attributes (CL 30946)
encoding/xml: prevent omitempty from omitting non-nil pointers to empty values (CL 15684)
expvar: add Value methods (CL 30917)
expvar: export http.Handler (CL 24722)
flag: arrange for FlagSet.Usage to be non-nil by default (CL 31576)
fmt: document and adjust Scanf space handling to eliminate a few paradoxes (CL 30611)
go/ast, go/parser: parse alias declarations (CL 30211)
go/build: allow % in ${SRCDIR} expansion for Jenkins (CL 31611)
go/build: do not record go:binary-only-package if build tags not satisfied (CL 31577)
go/build: implement default GOPATH (CL 32019)
@ -194,29 +188,21 @@ go/internal/gcimporter: fail gracefully on export format skew (CL 27816)
go/printer: don't drop required semi/linebreak after /*-comment (CL 33016)
go/token: fix race in FileSet.PositionFor. (CL 25345)
go/types: expose Default function, which converts untyped T to T (CL 30715)
go/types: handle imported aliases (CL 32534)
go/types: match cmd/compile's alignment for complex64 (CL 31939)
go/types: minimal support for alias declarations: don't crash (CL 30213)
html/template: check "type" attribute in <script> (CL 14336)
image/color: tweak the formula for converting to gray. (CL 31538)
image/png: implement grayscale transparency. (CL 32143)
image/png: implement truecolor transparency. (CL 32140)
image/png: improve compression by skipping filter for paletted images (CL 29872)
internal/trace: fix analysis of EvGoWaiting/EvGoInSyscall events (CL 25572)
io: fix infinite loop bug in MultiReader (CL 27397)
io: make MultiReader nil exhausted Readers for earlier GC (CL 28533)
lib/time: update tzdata to 2016i (CL 33029)
math/big: Rat.SetString to report error if input is not consumed entirely (CL 30472)
math/big: add (*Int).Sqrt (CL 30706)
math/big: implement Float.Scan, type assert fmt interfaces to enforce docs (CL 30723)
math/big: support negative numbers in ModInverse (CL 29299)
math/big: test and optimize Exp(2, y, n) for large y, odd n (CL 30708)
math/cmplx: prevent infinite loop in tanSeries (CL 31952)
math/rand: add Rand.Uint64 (CL 27253)
math: fix Gamma(-171.5) on all platforms (CL 30540)
mime/quotedprintable: accept = not followed by 2 hex digits as literal equals (CL 32174)
mime/quotedprintable: accept trailing soft line-break at the end of message (CL 27530)
mime: preserve unnecessary backslash escapes as literals (CL 32175)
net/http, net/http/httptest: make http2's TrailerPrefix work for http1 (CL 32479)
net/http/httptest: fill ContentLength in recorded Response (CL 28302)
net/http/httptrace: add ClientTrace.TLSHandshakeStart & TLSHandshakeDone (CL 30359)
@ -226,7 +212,7 @@ net/http/httputil: log err encountered during reverseproxy body copying (CL 3069
net/http/httputil: make ReverseProxy send nil Body requests when possible (CL 28412)
net/http/httputil: remove custom hop-by-hop headers from response in ReverseProxy (CL 28810)
net/http/httputil: remove proxied headers mentioned in connection-tokens (CL 27970)
net/http/internal: don't block unnecessarily in ChunkedReader (CL 31329)
net/http: add ErrAbortHandler, make Server quiet if used as panic value (CL 33099)
net/http: add NoBody, don't return nil from NewRequest on zero bodies (CL 31726)
net/http: add Request.GetBody func for 307/308 redirects (CL 31733)
@ -254,35 +240,24 @@ net/http: support If-Match in ServeContent (CL 32014)
net/http: support multiple identical Content-Length headers (CL 31252)
net/http: update bundled http2 for ErrAbortHandler support, document it more (CL 33103)
net/http: update bundled http2, add h2 Transport.IdleConnTimeout tests (CL 30078)
net/mail: allow empty quoted string name in address again (CL 32176)
net/mail: expose ParseDate, for use parsing Resent-Date headers (CL 31581)
net/smtp: make Client.Auth trim final space if Auth.Start toServer is empty (CL 33143)
net/url: add PathEscape, PathUnescape (CL 31322)
net/url: add URL.Hostname and URL.Port accessors (CL 28933)
net/url: handle escaped paths in ResolveReference (CL 28343)
net/url: make URL implement encoding.BinaryMarshaler, BinaryUnmarshaler (CL 31467)
net/url: prefix relative paths containing ":" in the first segment with "./" (CL 29610)
net/url: reject colon in first segment of relative path in Parse (CL 31582)
net: add (*UnixListener).SetUnlinkOnClose (CL 32099)
net: add Buffers type, do writev on unix (CL 29951)
net: add Resolver type, Dialer.Resolver, and DefaultResolver (CL 29440)
net: always wake up the readers on close on Plan 9 (CL 31390)
net: apply tcp4/tcp6 restrictions to literals in ResolveTCPAddr (CL 32100)
net: break up >1GB reads and writes on stream connections (CL 31584)
net: bring domain name length checks into RFC compliance (CL 31722)
net: close the connection gracefully on Plan 9 (CL 31271)
net: fix Dial(":80") on Windows (CL 32101)
net: implement Buffers on windows (CL 32371)
net: implement network interface API for Plan 9 (CL 29963)
net: implement network interface API for Solaris (CL 29892)
net: make LookupPort and lookupProtocol work on nacl (CL 28951)
net: make lookupPort case-insensitive on Plan 9 (CL 29051)
net: only remove Unix domain socket file on the first call to Close (CL 32098)
net: remove parsing of negative decimals in IPv4 literal (CL 28414)
net: respect resolv.conf rotate option (CL 29233)
net: support "option ndots:0" in resolv.conf (CL 24901)
net: there are no invalid domain names anymore (CL 31468)
net: use libresolv rules for ndots range and validation (CL 24901)
os, syscall: fix incorrect offset calculation in Readlink on windows (CL 31118)
os: add ErrClosed, return for use of closed File (CL 30614)
os: add Executable() (CL 16551)
@ -294,22 +269,17 @@ os: prevent infinite symlink loop of Stat on Windows (CL 27580)
os: reject Rename("old", "new") where new is a directory (CL 31358)
os: use GetConsoleCP() instead of GetACP() (CL 27575)
os: use extended-length paths on Windows when possible (CL 32451)
path/filepath: don't return SkipDir at top (CL 24780)
path/filepath: fix Abs on Windows (CL 32292)
path/filepath: fix match of \\?\c:\* on Windows (CL 31460)
path/filepath: handle ".." in normalizing a path on Windows (CL 27410)
path/filepath: handle "C:." correctly in EvalSymlinks on Windows (CL 28214)
plugin: darwin support (CL 29392)
plugin: mention OS X support and concurrency (CL 31463)
plugin: new package for loading plugins (CL 27823)
reflect: add Swapper func (CL 30088)
reflect: fix DeepEqual for some cyclic corner cases (CL 31588)
reflect: ignore struct tags when converting structs (CL 30191)
runtime, cmd/trace: annotate different mark worker types (CL 30702)
runtime, runtime/cgo: revert CL 18814; don't drop signal stack in new thread on dragonfly (CL 29971)
runtime/pprof: output CPU profiles in pprof protobuf format (CL 33071)
runtime/pprof: write profiles in protobuf format. (CL 32257)
runtime/race: don't crash on invalid PCs (CL 29714)
runtime/race: update race runtime (CL 32160)
runtime: Profile goroutines holding contended mutexes. (CL 29650)
runtime: assume 64kB physical pages on ARM (CL 25021)
@ -330,15 +300,7 @@ runtime: sleep on CLOCK_MONOTONIC in futexsleep1 on freebsd (CL 30154)
runtime: use RtlGenRandom instead of CryptGenRandom (CL 29700)
runtime: use clock_gettime(CLOCK_REALTIME) for nanosecond-precision time.now on arm64, mips64x (CL 32177)
runtime: use correct system page size on all arches (CL 25022)
sort: add Slice, SliceStable, and SliceIsSorted (CL 27321)
spec: add new language for alias declarations (CL 30601)
spec: ignore struct tags when converting structs (CL 24190)
spec: require 16 bit minimum exponent in constants rather than 32 (CL 17711)
spec: update language on type switches to match implementations (CL 27356)
strconv: strip \r in raw strings passed to Unquote (CL 31210)
strings, bytes: panic if Repeat overflows or if given a negative count (CL 29954)
sync: enable Pool when using race detector (CL 31589)
sync: throw, not panic, for unlock of unlocked mutex (CL 31359)
syscall: Clearenv now unsets env vars on Windows (CL 33168)
syscall: add bounds checking and error returns to ParseNetlinkMessage (CL 26990)
syscall: fix Send{msg,msgN}, Recvmsg and control message handling on solaris (CL 30171)
@ -347,19 +309,8 @@ syscall: make Utimes on Solaris match all the other geese (CL 31446)
syscall: remove X__cmsg_data from Cmsghdr (CL 32319)
syscall: unify NsecToTime{spec,val}, fix for times < 1970 (CL 30826)
syscall: validate ParseDirent inputs (CL 23780)
testing/quick, text/tabwriter: freeze packages (CL 31910)
testing: add Name method to *T and *B (CL 29970)
testing: add T.Context method (CL 31724)
testing: add a method testing.CoverMode (CL 32483)
testing: introduce testing/internal/testdeps for holding testmain dependencies (CL 32455)
testing: mark tests and benchmarks failed if a race occurs during execution (CL 32615)
testing: respect benchtime on very fast benchmarks (CL 26664)
text/template: add support for reflect.Value args, results in funcs (CL 31462)
time: add Until helper function (CL 20118)
time: allow long fractions in ParseDuration (CL 29338)
time: be consistent about representation of UTC location in Time struct (CL 31144)
unicode: change SimpleFold to handle invalid runes (CL 30935)
website: recreate 16px and 32px favicon (CL 26850)
Optimizations:
@ -465,11 +416,6 @@ text/template: improve lexer performance in finding left delimiters (CL 24863)
unicode/utf8: optimize ValidRune (CL 32122)
unicode/utf8: reduce bounds checks in EncodeRune (CL 28492)
Documentation:
all: many more examples in documentations (many CLs)
runtime: runtime.MemStats has much more detailed documentation (CL 28972)
Binary Size:
cmd/link: more efficient encoding of DWARF line number information (CL 30577)
@ -477,3 +423,85 @@ cmd/compile: recognize integer ranges in switch statements (CL 26770)
cmd/compile: use two tables for table-driven map inserts (CL 26669)
cmd/link: when dynlinking, do not mangle short symbol names (CL 26890)
cmd/compile, runtime: stop padding stackmaps to 4 bytes (CL 30817)
Probably omit: (too minor, or just bug fixes)
all: freeze net/rpc and reword the 'frozen' message in other frozen packages (CL 32112)
cmd/gofmt: don't eat source if -w fails (CL 33018)
image/color: tweak the formula for converting to gray. (CL 31538)
io: fix infinite loop bug in MultiReader (CL 27397)
io: make MultiReader nil exhausted Readers for earlier GC (CL 28533)
math/cmplx: prevent infinite loop in tanSeries (CL 31952)
math: fix Gamma(-171.5) on all platforms (CL 30540)
net/http/internal: don't block unnecessarily in ChunkedReader (CL 31329)
reflect: fix DeepEqual for some cyclic corner cases (CL 31588)
runtime/race: don't crash on invalid PCs (CL 29714)
spec: update language on type switches to match implementations (CL 27356)
strings, bytes: panic if Repeat overflows or if given a negative count (CL 29954)
sync: enable Pool when using race detector (CL 31589)
sync: throw, not panic, for unlock of unlocked mutex (CL 31359)
testing/quick, text/tabwriter: freeze packages (CL 31910)
testing: introduce testing/internal/testdeps for holding testmain dependencies (CL 32455)
testing: respect benchtime on very fast benchmarks (CL 26664)
time: be consistent about representation of UTC location in Time struct (CL 31144)
website: recreate 16px and 32px favicon (CL 26850)
HTMLified:
all: many more examples in documentations (many CLs)
all: plugin build mode & package (many CLs)
cmd/compile: args no longer live until end of function - use runtime.KeepAlive instead (CL 28310)
cmd/compile: make ssa compilation unconditional (CL 29155)
cmd/compile: remove old lexer and parser (CL 32020)
cmd/doc: ensure summaries truly are only one line (CL 25420)
cmd/doc: perform type grouping for constants and variables (CL 25419)
cmd/doc: show documentation for interface methods when requested explicitly (CL 31852)
context: make DeadlineExceeded implement net.Error (CL 30370)
encoding/binary: add bool support (CL 28514)
expvar: add Value methods (CL 30917)
expvar: export http.Handler (CL 24722)
image/png: implement grayscale transparency. (CL 32143)
image/png: implement truecolor transparency. (CL 32140)
image/png: improve compression by skipping filter for paletted images (CL 29872)
math/rand: add Rand.Uint64 (CL 27253)
mime/quotedprintable: accept = not followed by 2 hex digits as literal equals (CL 32174)
mime/quotedprintable: accept trailing soft line-break at the end of message (CL 27530)
net/mail: allow empty quoted string name in address again (CL 32176)
net/mail: expose ParseDate, for use parsing Resent-Date headers (CL 31581)
net/smtp: make Client.Auth trim final space if Auth.Start toServer is empty (CL 33143)
net/url: add PathEscape, PathUnescape (CL 31322)
net/url: add URL.Hostname and URL.Port accessors (CL 28933)
net/url: handle escaped paths in ResolveReference (CL 28343)
net/url: make URL implement encoding.BinaryMarshaler, BinaryUnmarshaler (CL 31467)
net/url: prefix relative paths containing ":" in the first segment with "./" (CL 29610)
net/url: reject colon in first segment of relative path in Parse (CL 31582)
net: always wake up the readers on close on Plan 9 (CL 31390)
net: close the connection gracefully on Plan 9 (CL 31271)
net: implement network interface API for Plan 9 (CL 29963)
net: make lookupPort case-insensitive on Plan 9 (CL 29051)
plugin: darwin support (CL 29392)
plugin: mention OS X support and concurrency (CL 31463)
plugin: new package for loading plugins (CL 27823)
ports: doc: document minimum OS X version as 10.8 (CL 28870)
ports: dragonfly: go1.8 requires DragonFly BSD 4.4.4 or above (CL 29491)
ports: mips, mipsle
ports: plan9: various fixes (Close unblocks Read, I/O deadline maybe?)
reflect: add Swapper func (CL 30088)
reflect: ignore struct tags when converting structs (CL 30191)
runtime: Hybrid barrier. <100us GC pauses.
runtime: runtime.MemStats has much more detailed documentation (CL 28972)
sort: add Slice, SliceStable, and SliceIsSorted (CL 27321)
spec: ignore struct tags when converting structs (CL 24190)
spec: require 16 bit minimum exponent in constants rather than 32 (CL 17711)
strconv: strip \r in raw strings passed to Unquote (CL 31210)
testing: add Name method to *T and *B (CL 29970)
testing: add T.Context method (CL 31724)
testing: add a method testing.CoverMode (CL 32483)
testing: mark tests and benchmarks failed if a race occurs during execution (CL 32615)
time: add Until helper function (CL 20118)
time: allow long fractions in ParseDuration (CL 29338)
tools: Many ppc64, s390x, arm, arm64 optimizations
tools: New frontend
tools: compile: SSA for 386, nacl, arm, arm64, ppc64, ppc64le, s390x ... (many CLs)
tools: yacc: "go tool yacc" is removed. now at golang.org/x/tools/cmd/goyacc (CL 27324, CL 27325)
unicode: change SimpleFold to handle invalid runes (CL 30935)