<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>
</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>
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>
<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.
</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>
+ 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.
+ 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>
<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>
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>
<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
<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>
</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>"" <gopher@example.com></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>
-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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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:
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)
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)