<!--{
	"Title": "Go 1.8 Release Notes"
}-->

<!--
NOTE: In this document and others in this directory, the convention is to
set fixed-width phrases with non-fixed-width spaces, as in
<code>hello</code> <code>world</code>.
Do not send CLs removing the interior tags from such phrases.
-->

<style>
  main ul li { margin: 0.5em 0; }
</style>

<h2 id="introduction">Introduction to Go 1.8</h2>

<p>
The latest Go release, version 1.8, arrives six months after <a href="go1.7">Go 1.7</a>.
Most of its changes are in the implementation of the toolchain, runtime, and libraries.
There are <a href="#language">two minor changes</a> to the language specification.
As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
We expect almost all Go programs to continue to compile and run as before.
</p>

<p>
The release <a href="#ports">adds support for 32-bit MIPS</a>,
<a href="#compiler">updates the compiler back end</a> to generate more efficient code,
<a href="#gc">reduces GC pauses</a> by eliminating stop-the-world stack rescanning,
<a href="#h2push">adds HTTP/2 Push support</a>,
<a href="#http_shutdown">adds HTTP graceful shutdown</a>,
<a href="#more_context">adds more context support</a>,
<a href="#mutex_prof">enables profiling mutexes</a>,
and <a href="#sort_slice">simplifies sorting slices</a>.
</p>

<h2 id="language">Changes to the language</h2>

<p>
  When explicitly converting a value from one struct type to another,
  as of Go 1.8 the tags are ignored. Thus two structs that differ
  only in their tags may be converted from one to the other:
</p>

<pre>
func example() {
	type T1 struct {
		X int `json:"foo"`
	}
	type T2 struct {
		X int `json:"bar"`
	}
	var v1 T1
	var v2 T2
	v1 = T1(v2) // now legal
}
</pre>


<p> <!-- CL 17711 -->
  The language specification now only requires that implementations
  support up to 16-bit exponents in floating-point constants.  This does not affect
  either the “<a href="/cmd/compile/"><code>gc</code></a>” or
  <code>gccgo</code> compilers, both of
  which still support 32-bit exponents.
</p>

<h2 id="ports">Ports</h2>

<p>
Go now supports 32-bit MIPS on Linux for both big-endian
(<code>linux/mips</code>) and little-endian machines
(<code>linux/mipsle</code>) that implement the MIPS32r1 instruction set with FPU
or kernel FPU emulation. Note that many common MIPS-based routers lack an FPU and
have firmware that doesn't enable kernel FPU emulation; Go won't run on such machines.
</p>

<p>
On DragonFly BSD, Go now requires DragonFly 4.4.4 or later. <!-- CL 29491, CL 29971 -->
</p>

<p>
On OpenBSD, Go now requires OpenBSD 5.9 or later. <!-- CL 34093 -->
</p>

<p>
The Plan 9 port's networking support is now much more complete
and matches the behavior of Unix and Windows with respect to deadlines
and cancelation. For Plan 9 kernel requirements, see the
<a href="https://golang.org/wiki/Plan9">Plan 9 wiki page</a>.
</p>

<p>
  Go 1.8 now only supports OS X 10.8 or later. This is likely the last
  Go release to support 10.8. Compiling Go or running
  binaries on older OS X versions is untested.
</p>

<p>
  Go 1.8 will be the last release to support Linux on ARMv5E and ARMv6 processors:
  Go 1.9 will likely require the ARMv6K (as found in the Raspberry Pi 1) or later.
  To identify whether a Linux system is ARMv6K or later, run
  “<code>go</code> <code>tool</code> <code>dist</code> <code>-check-armv6k</code>”
  (to facilitate testing, it is also possible to just copy the <code>dist</code> command to the
  system without installing a full copy of Go 1.8)
  and if the program terminates with output "ARMv6K supported." then the system
  implements ARMv6K or later.
  Go on non-Linux ARM systems already requires ARMv6K or later.
</p>


<h3 id="known_issues">Known Issues</h3>

<p>
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/16511">issue 16511</a>.
Any help in solving these issues would be appreciated.
</p>

<h2 id="tools">Tools</h2>

<h3 id="cmd_asm">Assembler</h3>

<p>
For 64-bit x86 systems, the following instructions have been added:
<code>VBROADCASTSD</code>,
<code>BROADCASTSS</code>,
<code>MOVDDUP</code>,
<code>MOVSHDUP</code>,
<code>MOVSLDUP</code>,
<code>VMOVDDUP</code>,
<code>VMOVSHDUP</code>, and
<code>VMOVSLDUP</code>.
</p>

<p>
For 64-bit PPC systems, the common vector scalar instructions have been
added:
<code>LXS</code>,
<code>LXSDX</code>,
<code>LXSI</code>,
<code>LXSIWAX</code>,
<code>LXSIWZX</code>,
<code>LXV</code>,
<code>LXVD2X</code>,
<code>LXVDSX</code>,
<code>LXVW4X</code>,
<code>MFVSR</code>,
<code>MFVSRD</code>,
<code>MFVSRWZ</code>,
<code>MTVSR</code>,
<code>MTVSRD</code>,
<code>MTVSRWA</code>,
<code>MTVSRWZ</code>,
<code>STXS</code>,
<code>STXSDX</code>,
<code>STXSI</code>,
<code>STXSIWX</code>,
<code>STXV</code>,
<code>STXVD2X</code>,
<code>STXVW4X</code>,
<code>XSCV</code>,
<code>XSCVDPSP</code>,
<code>XSCVDPSPN</code>,
<code>XSCVDPSXDS</code>,
<code>XSCVDPSXWS</code>,
<code>XSCVDPUXDS</code>,
<code>XSCVDPUXWS</code>,
<code>XSCVSPDP</code>,
<code>XSCVSPDPN</code>,
<code>XSCVSXDDP</code>,
<code>XSCVSXDSP</code>,
<code>XSCVUXDDP</code>,
<code>XSCVUXDSP</code>,
<code>XSCVX</code>,
<code>XSCVXP</code>,
<code>XVCV</code>,
<code>XVCVDPSP</code>,
<code>XVCVDPSXDS</code>,
<code>XVCVDPSXWS</code>,
<code>XVCVDPUXDS</code>,
<code>XVCVDPUXWS</code>,
<code>XVCVSPDP</code>,
<code>XVCVSPSXDS</code>,
<code>XVCVSPSXWS</code>,
<code>XVCVSPUXDS</code>,
<code>XVCVSPUXWS</code>,
<code>XVCVSXDDP</code>,
<code>XVCVSXDSP</code>,
<code>XVCVSXWDP</code>,
<code>XVCVSXWSP</code>,
<code>XVCVUXDDP</code>,
<code>XVCVUXDSP</code>,
<code>XVCVUXWDP</code>,
<code>XVCVUXWSP</code>,
<code>XVCVX</code>,
<code>XVCVXP</code>,
<code>XXLAND</code>,
<code>XXLANDC</code>,
<code>XXLANDQ</code>,
<code>XXLEQV</code>,
<code>XXLNAND</code>,
<code>XXLNOR</code>,
<code>XXLOR</code>,
<code>XXLORC</code>,
<code>XXLORQ</code>,
<code>XXLXOR</code>,
<code>XXMRG</code>,
<code>XXMRGHW</code>,
<code>XXMRGLW</code>,
<code>XXPERM</code>,
<code>XXPERMDI</code>,
<code>XXSEL</code>,
<code>XXSI</code>,
<code>XXSLDWI</code>,
<code>XXSPLT</code>, and
<code>XXSPLTW</code>.
</p>

<h3 id="tool_yacc">Yacc</h3>

<p> <!-- CL 27324, CL 27325 -->
The <code>yacc</code> tool (previously available by running
“<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.
It has moved to the “tools” repository and is now available at
<code><a href="https://godoc.org/golang.org/x/tools/cmd/goyacc">golang.org/x/tools/cmd/goyacc</a></code>.
</p>

<h3 id="tool_fix">Fix</h3>

<p> <!-- CL 28872 -->
  The <code>fix</code> tool has a new “<code>context</code>”
  fix to change imports from “<code>golang.org/x/net/context</code>”
  to “<a href="/pkg/context/"><code>context</code></a>”.
</p>

<h3 id="tool_pprof">Pprof</h3>

<p> <!-- CL 33157 -->
  The <code>pprof</code> tool can now profile TLS servers
  and skip certificate validation by using the “<code>https+insecure</code>”
  URL scheme.
</p>

<p> <!-- CL 23781 -->
  The callgrind output now has instruction-level granularity.
</p>

<h3 id="tool_trace">Trace</h3>

<p> <!-- CL 23324 -->
  The <code>trace</code> tool has a new <code>-pprof</code> flag for
  producing pprof-compatible blocking and latency profiles from an
  execution trace.
</p>

<p> <!-- CL 30017, CL 30702 -->
  Garbage collection events are now shown more clearly in the
  execution trace viewer. Garbage collection activity is shown on its
  own row and GC helper goroutines are annotated with their roles.
</p>

<h3 id="tool_vet">Vet</h3>

<p>Vet is stricter in some ways and looser where it
  previously caused false positives.</p>

<p>Vet now checks for copying an array of locks,
  duplicate JSON and XML struct field tags,
  non-space-separated struct tags,
  deferred calls to HTTP <code>Response.Body.Close</code>
  before checking errors, and
  indexed arguments in <code>Printf</code>.
  It also improves existing checks.</p>
</p>

<h3 id="compiler">Compiler Toolchain</h3>

<p>
Go 1.7 introduced a new compiler back end for 64-bit x86 systems.
In Go 1.8, that back end has been developed further and is now used for
all architectures.
</p>

<p>
The new back end, based on
<a href="https://en.wikipedia.org/wiki/Static_single_assignment_form">static single assignment form</a> (SSA),
generates more compact, more efficient code
and provides a better platform for optimizations
such as bounds check elimination.
The new back end reduces the CPU time required by
<a href="https://golang.org/test/bench/go1/">our benchmark programs</a> by 20-30%
on 32-bit ARM systems. For 64-bit x86 systems, which already used the SSA back end in
Go 1.7, the gains are a more modest 0-10%. Other architectures will likely
see improvements closer to the 32-bit ARM numbers.
</p>

<p>
  The temporary <code>-ssa=0</code> compiler flag introduced in Go 1.7
  to disable the new back end has been removed in Go 1.8.
</p>

<p>
  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 but 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.
  Compared to the previous release, Go 1.8 is
  <a href="https://dave.cheney.net/2016/11/19/go-1-8-toolchain-improvements">about 15% faster</a>.
</p>

<h3 id="cmd_cgo">Cgo</h3>

<p> <!-- CL 31141 -->
The Go tool now remembers the value of the <code>CGO_ENABLED</code> environment
variable set during <code>make.bash</code> and applies it to all future compilations
by default to fix issue <a href="https://golang.org/issue/12808">#12808</a>.
When doing native compilation, it is rarely necessary to explicitly set
the <code>CGO_ENABLED</code> environment variable as <code>make.bash</code>
will detect the correct setting automatically. The main reason to explicitly
set the <code>CGO_ENABLED</code> environment variable is when your environment
supports cgo, but you explicitly do not want cgo support, in which case, set
<code>CGO_ENABLED=0</code> during <code>make.bash</code> or <code>all.bash</code>.
</p>

<p> <!-- CL 29991 -->
The environment variable <code>PKG_CONFIG</code> may now be used to
set the program to run to handle <code>#cgo</code> <code>pkg-config</code>
directives.  The default is <code>pkg-config</code>, the program
always used by earlier releases.  This is intended to make it easier
to cross-compile
<a href="/cmd/cgo/">cgo</a> code.
</p>

<p> <!-- CL 32354 -->
The <a href="/cmd/cgo/">cgo</a> tool now supports a <code>-srcdir</code>
option, which is used by the <a href="/cmd/go/">go</a> command.
</p>

<p> <!-- CL 31768, 31811 -->
If <a href="/cmd/cgo/">cgo</a> code calls <code>C.malloc</code>, and
<code>malloc</code> returns <code>NULL</code>, the program will now
crash with an out of memory error.
<code>C.malloc</code> will never return <code>nil</code>.
Unlike most C functions, <code>C.malloc</code> may not be used in a
two-result form returning an errno value.
</p>

<p> <!-- CL 33237 -->
If <a href="/cmd/cgo/">cgo</a> is used to call a C function passing a
pointer to a C union, and if the C union can contain any pointer
values, and if <a href="/cmd/cgo/#hdr-Passing_pointers">cgo pointer
checking</a> is enabled (as it is by default), the union value is now
checked for Go pointers.
</p>

<h3 id="gccgo">Gccgo</h3>

<p>
Due to the alignment of Go's semiannual release schedule with GCC's
annual release schedule,
GCC release 6 contains the Go 1.6.1 version of gccgo.
We expect that the next release, GCC 7, will contain the Go 1.8
version of gccgo.
</p>

<h3 id="gopath">Default GOPATH</h3>

<p>
  The
  <a href="/cmd/go/#hdr-GOPATH_environment_variable"><code>GOPATH</code>
  environment variable</a> now has a default value if it
  is unset. It defaults to
  <code>$HOME/go</code> on Unix and
  <code>%USERPROFILE%/go</code> on Windows.
</p>

<h3 id="go_get">Go get</h3>

<p> <!-- CL 34818 -->
  The “<code>go</code> <code>get</code>” command now always respects
  HTTP proxy environment variables, regardless of whether
  the <code style='white-space:nowrap'>-insecure</code> flag is used. In previous releases, the
  <code style='white-space:nowrap'>-insecure</code> flag had the side effect of not using proxies.
</p>

<h3 id="go_bug">Go bug</h3>

<p>
  The new
  “<a href="/cmd/go/#hdr-Print_information_for_bug_reports"><code>go</code> <code>bug</code></a>”
  command starts a bug report on GitHub, prefilled
  with information about the current system.
</p>

<h3 id="cmd_doc">Go doc</h3>

<p> <!-- CL 25419 -->
  The
  “<a href="/cmd/go/#hdr-Show_documentation_for_package_or_symbol"><code>go</code> <code>doc</code></a>”
  command now groups constants and variables with their type,
  following the behavior of
  <a href="/cmd/godoc/"><code>godoc</code></a>.
</p>

<p> <!-- CL 25420 -->
  In order to improve the readability of <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 a specific method in an interface definition can
  now be requested, as in
  “<code>go</code> <code>doc</code> <code>net.Conn.SetDeadline</code>”.
</p>

<h3 id="plugin">Plugins</h3>

<p>
  Go now provides early support for plugins with a “<code>plugin</code>”
  build mode for generating plugins written in Go, and a
  new <a href="/pkg/plugin/"><code>plugin</code></a> package for
  loading such plugins at run time. Plugin support is currently only
  available on Linux. Please report any issues.
</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>

<p>
  <i>Updating:</i>
  Code that sets a finalizer on an allocated object may need to add
  calls to <code>runtime.KeepAlive</code> in functions or methods
  using that object.
  Read the
  <a href="/pkg/runtime/#KeepAlive"><code>KeepAlive</code>
  documentation</a> and its example for more details.
</p>

<h3 id="mapiter">Concurrent Map Misuse</h3>

<p>
In Go 1.6, the runtime
<a href="/doc/go1.6#runtime">added lightweight,
best-effort detection of concurrent misuse of maps</a>. This release
improves that detector with support for detecting programs that
concurrently write to and iterate over a map.
</p>
<p>
As always, if one goroutine is writing to a map, no other goroutine should be
reading (which includes iterating) or writing the map concurrently.
If the runtime detects this condition, it prints a diagnosis and crashes the program.
The best way to find out more about the problem is to run the program
under the
<a href="https://blog.golang.org/race-detector">race detector</a>,
which will more reliably identify the race
and give more detail.
</p>

<h3 id="memstats">MemStats Documentation</h3>

<p> <!-- CL 28972 -->
  The <a href="/pkg/runtime/#MemStats"><code>runtime.MemStats</code></a>
  type has been more thoroughly documented.
</p>

<h2 id="performance">Performance</h2>

<p>
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 standard library.
</p>

<p>
There have been optimizations to implementations in the
<a href="/pkg/bytes/"><code>bytes</code></a>,
<a href="/pkg/crypto/aes/"><code>crypto/aes</code></a>,
<a href="/pkg/crypto/cipher/"><code>crypto/cipher</code></a>,
<a href="/pkg/crypto/elliptic/"><code>crypto/elliptic</code></a>,
<a href="/pkg/crypto/sha256/"><code>crypto/sha256</code></a>,
<a href="/pkg/crypto/sha512/"><code>crypto/sha512</code></a>,
<a href="/pkg/encoding/asn1/"><code>encoding/asn1</code></a>,
<a href="/pkg/encoding/csv/"><code>encoding/csv</code></a>,
<a href="/pkg/encoding/hex/"><code>encoding/hex</code></a>,
<a href="/pkg/encoding/json/"><code>encoding/json</code></a>,
<a href="/pkg/hash/crc32/"><code>hash/crc32</code></a>,
<a href="/pkg/image/color/"><code>image/color</code></a>,
<a href="/pkg/image/draw/"><code>image/draw</code></a>,
<a href="/pkg/math/"><code>math</code></a>,
<a href="/pkg/math/big/"><code>math/big</code></a>,
<a href="/pkg/reflect/"><code>reflect</code></a>,
<a href="/pkg/regexp/"><code>regexp</code></a>,
<a href="/pkg/runtime/"><code>runtime</code></a>,
<a href="/pkg/strconv/"><code>strconv</code></a>,
<a href="/pkg/strings/"><code>strings</code></a>,
<a href="/pkg/syscall/"><code>syscall</code></a>,
<a href="/pkg/text/template/"><code>text/template</code></a>, and
<a href="/pkg/unicode/utf8/"><code>unicode/utf8</code></a>
packages.
</p>

<h3 id="gc">Garbage Collector</h3>

<p>
  Garbage collection pauses should be significantly shorter than they
  were in Go 1.7, usually under 100 microseconds and often as low as
  10 microseconds.
  See the
  <a href="https://github.com/golang/proposal/blob/master/design/17503-eliminate-rescan.md"
     >document on eliminating stop-the-world stack re-scanning</a>
  for details.  More work remains for Go 1.9.
</p>

<h3 id="defer">Defer</h3>

<!-- CL 29656, CL 29656 -->
<p>
  The overhead of <a href="/ref/spec/#Defer_statements">deferred
  function calls</a> has been reduced by about half.
</p>

<h3 id="cgoperf">Cgo</h3>

<p>The overhead of calls from Go into C has been reduced by about half.</p>

<h2 id="library">Standard library</h2>

<h3 id="examples">Examples</h3>

<p>
Examples have been added to the documentation across many packages.
</p>

<h3 id="sort_slice">Sort</h3>

<p>
The <a href="/pkg/sort/">sort</a> package
now includes a convenience function
<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
necessary.
</p>

<p>
Also new are
<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>

<p>
The <a href="/pkg/net/http/">net/http</a> package now includes a
mechanism to
send HTTP/2 server pushes from a
<a href="/pkg/net/http/#Handler"><code>Handler</code></a>.
Similar to the existing <code>Flusher</code> and <code>Hijacker</code>
interfaces, an HTTP/2
<a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a>
now implements the new
<a href="/pkg/net/http/#Pusher"><code>Pusher</code></a> interface.
</p>

<h3 id="http_shutdown">HTTP Server Graceful Shutdown</h3>

<p> <!-- CL 32329 -->
  The HTTP Server now has support for graceful shutdown using the new
  <a href="/pkg/net/http/#Server.Shutdown"><code>Server.Shutdown</code></a>
  method and abrupt shutdown using the new
  <a href="/pkg/net/http/#Server.Close"><code>Server.Close</code></a>
  method.
</p>

<h3 id="more_context">More Context Support</h3>

<p>
  Continuing <a href="/doc/go1.7#context">Go 1.7's adoption</a>
  of <a href="/pkg/context/#Context"><code>context.Context</code></a>
  into the standard library, Go 1.8 adds more context support
  to existing packages:
</p>

<ul>
  <li>The new <a href="/pkg/net/http/#Server.Shutdown"><code>Server.Shutdown</code></a>
    takes a context argument.</li>
  <li>There have been <a href="#database_sql">significant additions</a> to the
    <a href="/pkg/database/sql/">database/sql</a> package with context support.</li>
  <li>All nine of the new <code>Lookup</code> methods on the new
    <a href="/pkg/net/#Resolver"><code>net.Resolver</code></a> now
    take a context.</li>
  </ul>

<h3 id="mutex_prof">Mutex Contention Profiling</h3>

<p>
  The runtime and tools now support profiling contended mutexes.
</p>

<p>
  Most users will want to use the new <code>-mutexprofile</code>
  flag with “<a href="/cmd/go/#hdr-Description_of_testing_flags"><code>go</code> <code>test</code></a>”,
  and then use <a href="/cmd/pprof/">pprof</a> on the resultant file.
</p>

<p>
  Lower-level support is also available via the new
  <a href="/pkg/runtime/#MutexProfile"><code>MutexProfile</code></a>
  and
  <a href="/pkg/runtime/#SetMutexProfileFraction"><code>SetMutexProfileFraction</code></a>.
</p>

<p>
  A known limitation for Go 1.8 is that the profile only reports contention for
  <a href="/pkg/sync/#Mutex"><code>sync.Mutex</code></a>,
  not
  <a href="/pkg/sync/#RWMutex"><code>sync.RWMutex</code></a>.
</p>

<h3 id="minor_library_changes">Minor changes to the library</h3>

<p>
As always, there are various minor changes and updates to the library,
made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
in mind. The following sections list the user visible changes and additions.
Optimizations and minor bug fixes are not listed.
</p>

<dl id="archive_tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt>
  <dd>

    <p> <!-- CL 28471, CL 31440, CL 31441, CL 31444, CL 28418, CL 31439 -->
      The tar implementation corrects many bugs in corner cases of the file format.
      The <a href="/pkg/archive/tar/#Reader"><code>Reader</code></a>
      is now able to process tar files in the PAX format with entries larger than 8GB.
      The <a href="/pkg/archive/tar/#Writer"><code>Writer</code></a>
      no longer produces invalid tar files in some situations involving long pathnames.
    </p>

  </dd>
</dl>

<dl id="compress_flate"><dt><a href="/pkg/compress/flate/">compress/flate</a></dt>
  <dd>

    <p> <!-- CL 31640, CL 31174, CL 32149 -->
      There have been some minor fixes to the encoder to improve the
      compression ratio in certain situations. As a result, the exact
      encoded output of <code>DEFLATE</code> may be different from Go 1.7. Since
      <code>DEFLATE</code> is the underlying compression of gzip, png, zlib, and zip,
      those formats may have changed outputs.
    </p>

    <p> <!-- CL 31174 -->
      The encoder, when operating in
      <a href="/pkg/compress/flate/#NoCompression"><code>NoCompression</code></a>
      mode, now produces a consistent output that is not dependent on
      the size of the slices passed to the
      <a href="/pkg/compress/flate/#Writer.Write"><code>Write</code></a>
      method.
    </p>

    <p> <!-- CL 28216 -->
      The decoder, upon encountering an error, now returns any
      buffered data it had uncompressed along with the error.
    </p>

  </dd>
</dl>


<dl id="compress_gzip"><dt><a href="/pkg/compress/gzip/">compress/gzip</a></dt>
  <dd>

    <p>
      The <a href="/pkg/compress/gzip/#Writer"><code>Writer</code></a>
      now encodes a zero <code>MTIME</code> field when
      the <a href="/pkg/compress/gzip/#Header"><code>Header.ModTime</code></a>
      field is the zero value.

      In previous releases of Go, the <code>Writer</code> would encode
      a nonsensical value.

      Similarly,
      the <a href="/pkg/compress/gzip/#Reader"><code>Reader</code></a>
      now reports a zero encoded <code>MTIME</code> field as a zero
      <code>Header.ModTime</code>.
    </p>

  </dd>
</dl>

<dl id="context"><dt><a href="/pkg/context/">context</a></dt>
  <dd>
    <p> <!-- CL 30370 -->
      The <a href="/pkg/context#DeadlineExceeded"><code>DeadlineExceeded</code></a>
      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="crypto_tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
  <dd>
    <p> <!-- CL 25159, CL 31318 -->
      The new method
      <a href="/pkg/crypto/tls/#Conn.CloseWrite"><code>Conn.CloseWrite</code></a>
      allows TLS connections to be half closed.
    </p>

    <p> <!-- CL 28075 -->
      The new method
      <a href="/pkg/crypto/tls/#Config.Clone"><code>Config.Clone</code></a>
      clones a TLS configuration.
    </p>

    <p>
      <!-- CL 30790 -->
      The new <a href="/pkg/crypto/tls/#Config.GetConfigForClient"><code>Config.GetConfigForClient</code></a>
      callback allows selecting a configuration for a client dynamically, based
      on the client's
      <a href="/pkg/crypto/tls/#ClientHelloInfo"><code>ClientHelloInfo</code></a>.

      <!-- CL 31391, CL 32119 -->
      The <a href="/pkg/crypto/tls/#ClientHelloInfo"><code>ClientHelloInfo</code></a>
      struct now has new
      fields <code>Conn</code>, <code>SignatureSchemes</code> (using
      the new
      type <a href="/kg/crypto/tls/#SignatureScheme"><code>SignatureScheme</code></a>),
      <code>SupportedProtos</code>, and <code>SupportedVersions</code>.
    </p>

    <p> <!-- CL 32115 -->
      The new <a href="/pkg/crypto/tls/#Config.GetClientCertificate"><code>Config.GetClientCertificate</code></a>
      callback allows selecting a client certificate based on the server's
      TLS <code>CertificateRequest</code> message, represented by the new
      <a href="/pkg/crypto/tls/#CertificateRequestInfo"><code>CertificateRequestInfo</code></a>.
    </p>

    <p> <!-- CL 27434 -->
      The new
      <a href="/pkg/crypto/tls/#Config.KeyLogWriter"><code>Config.KeyLogWriter</code></a>
      allows debugging TLS connections
      in <a href="https://www.wireshark.org/">WireShark</a> and
      similar tools.
    </p>

    <p> <!-- CL 32115 -->
      The new
      <a href="/pkg/crypto/tls/#Config.VerifyPeerCertificate"><code>Config.VerifyPeerCertificate</code></a>
      callback allows additional validation of a peer's presented certificate.
    </p>

    <p> <!-- CL 18130 -->
      The <code>crypto/tls</code> package now implements basic
      countermeasures against CBC padding oracles. There should be
      no explicit secret-dependent timings, but it does not attempt to
      normalize memory accesses to prevent cache timing leaks.
    </p>

    <p>
      The <code>crypto/tls</code> package now supports
      X25519 and <!-- CL 30824, CL 30825 -->
      ChaCha20-Poly1305.  <!-- CL 30957, CL 30958 -->
      ChaCha20-Poly1305 is now prioritized unless <!-- CL 32871 -->
      hardware support for AES-GCM is present.
    </p>

    <p> <!-- CL 27315, CL 35290 -->
      AES-128-CBC cipher suites with SHA-256 are also
      now supported, but disabled by default.
    </p>

  </dd>
</dl>

<dl id="crypto_x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
  <dd>
    <p> <!-- CL 24743 -->
      PSS signatures are now supported.
    </p>

    <p> <!-- CL 32644 -->
      <a href="/pkg/crypto/x509/#UnknownAuthorityError"><code>UnknownAuthorityError</code></a>
      now has a <code>Cert</code> field, reporting the untrusted
      certificate.
    </p>

    <p>
      Certificate validation is more permissive in a few cases and
      stricter in a few other cases.
    <!--
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: don't accept a root that already appears in a chain. (CL 32121)
crypto/x509: fix name constraints handling (CL 30155)
crypto/x509: parse all names in an RDN (CL 30810)
crypto/x509: recognise ISO OID for RSA+SHA1 (CL 27394)
crypto/x509: require a NULL parameters for RSA public keys (CL 16166, CL 27312)
crypto/x509: return error for missing SerialNumber (CL 27238)
-->
    </p>

    <p><!-- CL 30375 -->
      Root certificates will now also be looked for
      at <code>/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem</code>
      on Linux, to support RHEL and CentOS.
    </p>

  </dd>
</dl>

<dl id="database_sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
  <dd>
    <p>
      The package now supports <code>context.Context</code>. There are new methods
      ending in <code>Context</code> such as
      <a href="/pkg/database/sql/#DB.QueryContext"><code>DB.QueryContext</code></a> and
      <a href="/pkg/database/sql/#DB.PrepareContext"><code>DB.PrepareContext</code></a>
      that take context arguments. Using the new <code>Context</code> methods ensures that
      connections are closed and returned to the connection pool when the
      request is done; enables canceling in-progress queries
      should the driver support that; and allows the database
      pool to cancel waiting for the next available connection.
    </p>
    <p>
      The <a href="/pkg/database/sql#IsolationLevel"><code>IsolationLevel</code></a>
      can now be set when starting a transaction by setting the isolation level
      on <a href="/pkg/database/sql#TxOptions.Isolation"><code>TxOptions.Isolation</code></a> and passing
      it to <a href="/pkg/database/sql#DB.BeginTx"><code>DB.BeginTx</code></a>.
      An error will be returned if an isolation level is selected that the driver
      does not support. A read-only attribute may also be set on the transaction
      by setting <a href="/pkg/database/sql/#TxOptions.ReadOnly"><code>TxOptions.ReadOnly</code></a>
      to true.
    </p>
    <p>
      Queries now expose the SQL column type information for drivers that support it.
      Rows can return <a href="/pkg/database/sql#Rows.ColumnTypes"><code>ColumnTypes</code></a>
      which can include SQL type information, column type lengths, and the Go type.
    </p>
    <p>
      A <a href="/pkg/database/sql/#Rows"><code>Rows</code></a>
      can now represent multiple result sets. After
      <a href="/pkg/database/sql/#Rows.Next"><code>Rows.Next</code></a> returns false,
      <a href="/pkg/database/sql/#Rows.NextResultSet"><code>Rows.NextResultSet</code></a>
      may be called to advance to the next result set. The existing <code>Rows</code>
      should continue to be used after it advances to the next result set.
      </p>
    <p>
      <a href="/pkg/database/sql/#NamedArg"><code>NamedArg</code></a> may be used
      as query arguments. The new function <a href="/pkg/database/sql/#Named"><code>Named</code></a>
      helps create a <a href="/pkg/database/sql/#NamedArg"><code>NamedArg</code></a>
      more succinctly.
    <p>
      If a driver supports the new
      <a href="/pkg/database/sql/driver/#Pinger"><code>Pinger</code></a>
      interface, the
      <a href="/pkg/database/sql/#DB.Ping"><code>DB.Ping</code></a>
      and
      <a href="/pkg/database/sql/#DB.PingContext"><code>DB.PingContext</code></a>
      methods will use that interface to check whether a
      database connection is still valid.
    </p>
    <p>
      The new <code>Context</code> query methods work for all drivers, but
      <code>Context</code> cancelation is not responsive unless the driver has been
      updated to use them. The other features require driver support in
      <a href="/pkg/database/sql/driver"><code>database/sql/driver</code></a>.
      Driver authors should review the new interfaces. Users of existing
      driver should review the driver documentation to see what
      it supports and any system specific documentation on each feature.
    </p>
  </dd>
</dl>

<dl id="debug_pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
  <dd>
    <p> <!-- CL 22720, CL 27212, CL 22181, CL 22332, CL 22336, Issue 15345 -->
      The package has been extended and is now used by
      <a href="/cmd/link/">the Go linker</a> to read <code>gcc</code>-generated object files.
      The new
      <a href="/pkg/debug/pe/#File.StringTable"><code>File.StringTable</code></a>
      and
      <a href="/pkg/debug/pe/#Section.Relocs"><code>Section.Relocs</code></a>
      fields provide access to the COFF string table and COFF relocations.
      The new
      <a href="/pkg/debug/pe/#File.COFFSymbols"><code>File.COFFSymbols</code></a>
      allows low-level access to the COFF symbol table.
      </p>
  </dd>
</dl>

<dl id="encoding_base64"><dt><a href="/pkg/encoding/base64/">encoding/base64</a></dt>
  <dd>
    <p> <!-- CL 24964 -->
      The new
      <a href="/pkg/encoding/base64/#Encoding.Strict"><code>Encoding.Strict</code></a>
      method returns an <code>Encoding</code> that causes the decoder
      to return an error when the trailing padding bits are not zero.
    </p>
  </dd>
</dl>

<dl id="encoding_binary"><dt><a href="/pkg/encoding/binary/">encoding/binary</a></dt>
  <dd>
    <p> <!-- CL 28514 -->
      <a href="/pkg/encoding/binary/#Read"><code>Read</code></a>
      and
      <a href="/pkg/encoding/binary/#Write"><code>Write</code></a>
      now support booleans.
    </p>
  </dd>
</dl>

<dl id="encoding_json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
  <dd>

    <p> <!-- CL 18692  -->
      <a href="/pkg/encoding/json/#UnmarshalTypeError"><code>UnmarshalTypeError</code></a>
      now includes the struct and field name.
    </p>

    <p> <!-- CL 31932 -->
      A nil <a href="/pkg/encoding/json/#Marshaler"><code>Marshaler</code></a>
      now marshals as a JSON <code>null</code> value.
    </p>

    <p> <!-- CL 21811 -->
      A <a href="/pkg/encoding/json/#RawMessage"><code>RawMessage</code></a> value now
      marshals the same as its pointer type.
    </p>

    <p> <!-- CL 30371 -->
      <a href="/pkg/encoding/json/#Marshal"><code>Marshal</code></a>
      encodes floating-point numbers using the same format as in ES6,
      preferring decimal (not exponential) notation for a wider range of values.
      In particular, all floating-point integers up to 2<sup>64</sup> format the
      same as the equivalent <code>int64</code> representation.
    </p>

    <p> <!-- CL 30944 -->
      In previous versions of Go, unmarshaling a JSON <code>null</code> into an
      <a href="/pkg/encoding/json/#Unmarshaler"><code>Unmarshaler</code></a>
      was considered a no-op; now the <code>Unmarshaler</code>'s
      <code>UnmarshalJSON</code> method is called with the JSON literal
      <code>null</code> and can define the semantics of that case.
    </p>

  </dd>
</dl>

<dl id="encoding_pem"><dt><a href="/pkg/encoding/pem/">encoding/pem</a></dt>
  <dd>
    <p> <!-- CL 27391 -->
      <a href="/pkg/encoding/pem/#Decode"><code>Decode</code></a>
      is now strict about the format of the ending line.
    </p>
  </dd>
</dl>

<dl id="encoding_xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
  <dd>
    <p> <!-- CL 30946 -->
      <a href="/pkg/encoding/xml/#Unmarshal"><code>Unmarshal</code></a>
      now has wildcard support for collecting all attributes using
      the new <code>",any,attr"</code> struct tag.
    </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="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
  <dd>
    <p><!-- CL 30611 -->
      <a href="/pkg/fmt/#Scanf"><code>Scanf</code></a>,
      <a href="/pkg/fmt/#Fscanf"><code>Fscanf</code></a>, and
      <a href="/pkg/fmt/#Sscanf"><code>Sscanf</code></a> now
      handle spaces differently and more consistently than
      previous releases. See the
      <a href="/pkg/fmt/#hdr-Scanning">scanning documentation</a>
      for details.
    </p>
  </dd>
</dl>

<dl id="go_doc"><dt><a href="/pkg/go/doc/">go/doc</a></dt>
  <dd>
    <p><!-- CL 29870 -->
      The new <a href="/pkg/go/doc/#IsPredeclared"><code>IsPredeclared</code></a>
      function reports whether a string is a predeclared identifier.
    </p>
  </dd>
</dl>

<dl id="go_types"><dt><a href="/pkg/go/types/">go/types</a></dt>
  <dd>
    <p><!-- CL 30715 -->
      The new function
      <a href="/pkg/go/types/#Default"><code>Default</code></a>
      returns the default "typed" type for an "untyped" type.
    </p>

    <p><!-- CL 31939 -->
      The alignment of <code>complex64</code> now matches
      the <a href="/cmd/compile/">Go compiler</a>.
    </p>
  </dd>
</dl>

<dl id="html_template"><dt><a href="/pkg/html/template/">html/template</a></dt>
  <dd>
    <p><!-- CL 14336 -->
      The package now validates
      the <code>"type"</code> attribute on
      a <code>&lt;script&gt;</code> tag.
    </p>
  </dd>
</dl>

<dl id="image_png"><dt><a href="/pkg/image/png/">image/png</a></dt>
  <dd>
    <p> <!-- CL 32143, CL 32140 -->
      <a href="/pkg/image/png/#Decode"><code>Decode</code></a>
      (and <code>DecodeConfig</code>)
      now supports True Color and grayscale transparency.
    </p>
    <p> <!-- CL 29872 -->
      <a href="/pkg/image/png/#Encoder"><code>Encoder</code></a>
      is now faster and creates smaller output
      when encoding paletted images.
      </p>
  </dd>
</dl>

<dl id="math_big"><dt><a href="/pkg/math/big/">math/big</a></dt>
  <dd>
    <p><!-- CL 30706 -->
      The new method
      <a href="/pkg/math/big/#Int.Sqrt"><code>Int.Sqrt</code></a>
      calculates ⌊√x⌋.
    </p>

    <p>
      The new method
      <a href="/pkg/math/big/#Float.Scan"><code>Float.Scan</code></a>
      is a support routine for
      <a href="/pkg/fmt/#Scanner"><code>fmt.Scanner</code></a>.
    </p>

    <p>
      <a href="/pkg/math/big/#Int.ModInverse"><code>Int.ModInverse</code></a>
      now supports negative numbers.
    </p>

  </dd>
</dl>

<dl id="math_rand"><dt><a href="/pkg/math/rand/">math/rand</a></dt>
  <dd>

    <p><!-- CL 27253, CL 33456 -->
      The new <a href="/pkg/math/rand/#Rand.Uint64"><code>Rand.Uint64</code></a>
      method returns <code>uint64</code> values. The
      new <a href="/pkg/math/rand/#Source64"><code>Source64</code></a>
      interface describes sources capable of generating such values
      directly; otherwise the <code>Rand.Uint64</code> method
      constructs a <code>uint64</code> from two calls
      to <a href="/pkg/math/rand/#Source"><code>Source</code></a>'s
      <code>Int63</code> method.
    </p>

  </dd>
</dl>

<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
  <dd>
    <p> <!-- CL 32175 -->
    <a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a>
    now preserves unnecessary backslash escapes as literals,
    in order to support MSIE.
    When MSIE sends a full file path (in “intranet mode”), it does not
    escape backslashes: “<code>C:\dev\go\foo.txt</code>”, not
    “<code>C:\\dev\\go\\foo.txt</code>”.
    If we see an unnecessary backslash escape, we now assume it is from MSIE
    and intended as a literal backslash.
    No known MIME generators emit unnecessary backslash escapes
    for simple token characters like numbers and letters.
    </p>
  </dd>
</dl>

<dl id="mime_quotedprintable"><dt><a href="/pkg/mime/quotedprintable/">mime/quotedprintable</a></dt>
  <dd>

    <p>
      The
      <a href="/pkg/mime/quotedprintable/#Reader"><code>Reader</code></a>'s
      parsing has been relaxed in two ways to accept
      more input seen in the wild.

      <!-- CL 32174 -->
      First, it accepts an equals sign (<code>=</code>) not followed
      by two hex digits as a literal equal sign.

      <!-- CL 27530 -->
      Second, it silently ignores a trailing equals sign at the end of
      an encoded input.
    </p>

  </dd>
</dl>

<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
  <dd>

    <p><!-- CL 30164, CL 33473 -->
      The <a href="/pkg/net/#Conn"><code>Conn</code></a> documentation
      has been updated to clarify expectations of an interface
      implementation. Updates in the <code>net/http</code> packages
      depend on implementations obeying the documentation.
    </p>
    <p><i>Updating:</i> implementations of the <code>Conn</code> interface should verify
      they implement the documented semantics. The
      <a href="https://godoc.org/golang.org/x/net/nettest">golang.org/x/net/nettest</a>
      package will exercise a <code>Conn</code> and validate it behaves properly.
    </p>

    <p><!-- CL 32099 -->
      The new method
      <a href="/pkg/net/#UnixListener.SetUnlinkOnClose"><code>UnixListener.SetUnlinkOnClose</code></a>
      sets whether the underlying socket file should be removed from the file system when
      the listener is closed.
    </p>

    <p><!-- CL 29951 -->
      The new <a href="/pkg/net/#Buffers"><code>Buffers</code></a> type permits
      writing to the network more efficiently from multiple discontiguous buffers
      in memory. On certain machines, for certain types of connections,
      this is optimized into an OS-specific batch write operation (such as <code>writev</code>).
    </p>

    <p><!-- CL 29440 -->
      The new <a href="/pkg/net/#Resolver"><code>Resolver</code></a> looks up names and numbers
      and supports <a href="/pkg/context/#Context"><code>context.Context</code></a>.
      The <a href="/pkg/net/#Dialer"><code>Dialer</code></a> now has an optional
      <a href="/pkg/net/#Dialer.Resolver"><code>Resolver</code> field</a>.
    </p>

    <p><!-- CL 29892 -->
      <a href="/pkg/net/#Interfaces"><code>Interfaces</code></a> is now supported on Solaris.
    </p>

    <p><!-- CL 29233, CL 24901 -->
      The Go DNS resolver now supports <code>resolv.conf</code>'s “<code>rotate</code>”
      and “<code>option</code> <code>ndots:0</code>” options. The “<code>ndots</code>” option is
      now respected in the same way as <code>libresolve</code>.
    </p>

  </dd>
</dl>

<dl id="net_http"><dt><a href="/pkg/net/http/">net/http</a></dt>
  <dd>

    <p>Server changes:</p>
    <ul>
      <li>The server now supports graceful shutdown support, <a href="#http_shutdown">mentioned above</a>.</li>

      <li> <!-- CL 32024 -->
        The <a href="/pkg/net/http/#Server"><code>Server</code></a>
        adds configuration options
        <code>ReadHeaderTimeout</code> and <code>IdleTimeout</code>
        and documents <code>WriteTimeout</code>.
      </li>

      <li> <!-- CL 32014 -->
        <a href="/pkg/net/http/#FileServer"><code>FileServer</code></a>
        and
        <a href="/pkg/net/http/#ServeContent"><code>ServeContent</code></a>
        now support HTTP <code>If-Match</code> conditional requests,
        in addition to the previous <code>If-None-Match</code>
        support for ETags properly formatted according to RFC 7232, section 2.3.
      </li>
    </ul>

    <p>
      There are several additions to what a server's <code>Handler</code> can do:
    </p>

    <ul>
      <li><!-- CL 31173 -->
        The <a href="/pkg/context/#Context"><code>Context</code></a>
        returned
        by <a href="/pkg/net/http/#Request.Context"><code>Request.Context</code></a>
        is canceled if the underlying <code>net.Conn</code>
        closes. For instance, if the user closes their browser in the
        middle of a slow request, the <code>Handler</code> can now
        detect that the user is gone. This complements the
        existing <a href="/pkg/net/http/#CloseNotifier"><code>CloseNotifier</code></a>
        support. This functionality requires that the underlying
        <a href="/pkg/net/#Conn"><code>net.Conn</code></a> implements
        <a href="#net">recently clarified interface documentation</a>.
      </li>

      <li><!-- CL 32479 -->
        To serve trailers produced after the header has already been written,
        see the new
        <a href="/pkg/net/http/#TrailerPrefix"><code>TrailerPrefix</code></a>
        mechanism.
      </li>

      <li><!-- CL 33099 -->
        A <code>Handler</code> can now abort a response by panicking
        with the error
        <a href="/pkg/net/http/#ErrAbortHandler"><code>ErrAbortHandler</code></a>.
      </li>

      <li><!-- CL 30812 -->
        A <code>Write</code> of zero bytes to a
        <a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a>
        is now defined as a
        way to test whether a <code>ResponseWriter</code> has been hijacked:
        if so, the <code>Write</code> returns
        <a href="/pkg/net/http/#ErrHijacked"><code>ErrHijacked</code></a>
        without printing an error
        to the server's error log.
      </li>

    </ul>

    <p>Client &amp; Transport changes:</p>
    <ul>
      <li><!-- CL 28930, CL 31435 -->
        The <a href="/pkg/net/http/#Client"><code>Client</code></a>
        now copies most request headers on redirect. See
        <a href="/pkg/net/http/#Client">the documentation</a>
        on the <code>Client</code> type for details.
      </li>

      <li><!-- CL 29072 -->
        The <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
        now supports international domain names. Consequently, so do
        <a href="/pkg/net/http/#Get">Get</a> and other helpers.
      </li>

      <li><!-- CL 31733, CL 29852 -->
        The <code>Client</code> now supports 301, 307, and 308 redirects.

        For example, <code>Client.Post</code> now follows 301
        redirects, converting them to <code>GET</code> requests
        without bodies, like it did for 302 and 303 redirect responses
        previously.

        The <code>Client</code> now also follows 307 and 308
        redirects, preserving the original request method and body, if
        any. If the redirect requires resending the request body, the
        request must have the new
        <a href="/pkg/net/http/#Request"><code>Request.GetBody</code></a>
        field defined.
        <a href="/pkg/net/http/#NewRequest"><code>NewRequest</code></a>
        sets <code>Request.GetBody</code> automatically for common
        body types.
      </li>

      <li><!-- CL 32482 -->
        The <code>Transport</code> now rejects requests for URLs with
        ports containing non-digit characters.
      </li>

      <li><!-- CL 27117 -->
        The <code>Transport</code> will now retry non-idempotent
        requests if no bytes were written before a network failure
        and the request has no body.
      </li>

      <li><!-- CL 32481 -->
        The
        new <a href="/pkg/net/http/#Transport"><code>Transport.ProxyConnectHeader</code></a>
        allows configuration of header values to send to a proxy
        during a <code>CONNECT</code> request.
      </li>

      <li> <!-- CL 28077 -->
        The <a href="/pkg/net/http/#DefaultTransport"><code>DefaultTransport.Dialer</code></a>
        now enables <code>DualStack</code> ("<a href="https://tools.ietf.org/html/rfc6555">Happy Eyeballs</a>") support,
        allowing the use of IPv4 as a backup if it looks like IPv6 might be
        failing.
      </li>

      <li> <!-- CL 31726 -->
        The <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
        no longer reads a byte of a non-nil
        <a href="/pkg/net/http/#Request.Body"><code>Request.Body</code></a>
        when the
        <a href="/pkg/net/http/#Request.ContentLength"><code>Request.ContentLength</code></a>
        is zero to determine whether the <code>ContentLength</code>
        is actually zero or just undefined.
        To explicitly signal that a body has zero length,
        either set it to <code>nil</code>, or set it to the new value
        <a href="/pkg/net/http/#NoBody"><code>NoBody</code></a>.
        The new <code>NoBody</code> value is intended for use by <code>Request</code>
        constructor functions; it is used by
        <a href="/pkg/net/http/#NewRequest"><code>NewRequest</code></a>.
      </li>
    </ul>

  </dd>
</dl>

<dl id="net_http_httptrace"><dt><a href="/pkg/net/http/httptrace/">net/http/httptrace</a></dt>
  <dd>
    <p> <!-- CL 30359 -->
    There is now support for tracing a client request's TLS handshakes with
    the new
    <a href="/pkg/net/http/httptrace/#ClientTrace.TLSHandshakeStart"><code>ClientTrace.TLSHandshakeStart</code></a>
    and
    <a href="/pkg/net/http/httptrace/#ClientTrace.TLSHandshakeDone"><code>ClientTrace.TLSHandshakeDone</code></a>.
    </p>
  </dd>
</dl>

<dl id="net_http_httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
  <dd>
    <p> <!-- CL 32356 -->
    The <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
    has a new optional hook,
    <a href="/pkg/net/http/httputil/#ReverseProxy.ModifyResponse"><code>ModifyResponse</code></a>,
    for modifying the response from the back end before proxying it to the client.
    </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 once again allowed in the name part of
      an address. That is, Go 1.4 and earlier accepted
      <code>""</code> <code>&lt;gopher@example.com&gt;</code>,
      but Go 1.5 introduced a bug that rejected this address.
      The address is recognized again.
    </p>

    <p> <!-- CL 31581 -->
      The
      <a href="/pkg/net/mail/#Header.Date"><code>Header.Date</code></a>
      method has always provided a way to parse
      the <code>Date:</code> header.
      A new function
      <a href="/pkg/net/mail/#ParseDate"><code>ParseDate</code></a>
      allows parsing dates found in other
      header lines, such as the <code>Resent-Date:</code> header.
    </p>

  </dd>
</dl>

<dl id="net_smtp"><dt><a href="/pkg/net/smtp/">net/smtp</a></dt>
  <dd>

    <p> <!-- CL 33143 -->
      If an implementation of the
      <a href="/pkg/net/smtp/#Auth"><code>Auth.Start</code></a>
      method returns an empty <code>toServer</code> value,
      the package no longer sends
      trailing whitespace in 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>
      are similar to the query escaping and unescaping functions but
      for path elements.
    </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>
      return the hostname and port fields of a URL,
      correctly handling the case where the port 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>,
      making it possible to process URLs in <a href="/pkg/encoding/gob/">gob data</a>.
    </p>

    <p> <!-- CL 29610, CL 31582 -->
      Following RFC 3986,
      <a href="/pkg/net/url/#Parse"><code>Parse</code></a>
      now rejects URLs like <code>this_that:other/thing</code> instead of
      interpreting them as relative paths (<code>this_that</code> is not a valid scheme).
      To force interpretation as a relative path,
      such URLs should be prefixed with “<code>./</code>”.
      The <code>URL.String</code> method now inserts this prefix as needed.
    </p>

  </dd>
</dl>

<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
  <dd>
    <p> <!-- CL 16551 -->
      The new function
      <a href="/pkg/os/#Executable"><code>Executable</code></a> returns
      the path name of the running executable.
    </p>

    <p> <!-- CL 30614 -->
      An attempt to call a method on
      an <a href="/pkg/os/#File"><code>os.File</code></a> that has
      already been closed will now return the new error
      value <a href="/pkg/os/#ErrClosed"><code>os.ErrClosed</code></a>.
      Previously it returned a system-specific error such
      as <code>syscall.EBADF</code>.
    </p>

    <p> <!-- CL 31358 -->
      On Unix systems, <a href="/pkg/os/#Rename"><code>os.Rename</code></a>
      will now return an error when used to rename a directory to an
      existing empty directory.
      Previously it would fail when renaming to a non-empty directory
      but succeed when renaming to an empty directory.
      This makes the behavior on Unix correspond to that of other systems.
    </p>

    <p> <!-- CL 32451 -->
      On Windows, long absolute paths are now transparently converted to
      extended-length paths (paths that start with “<code>\\?\</code>”).
      This permits the package to work with files whose path names are
      longer than 260 characters.
    </p>

    <p> <!-- CL 29753 -->
      On Windows, <a href="/pkg/os/#IsExist"><code>os.IsExist</code></a>
      will now return <code>true</code> for the system
      error <code>ERROR_DIR_NOT_EMPTY</code>.
      This roughly corresponds to the existing handling of the Unix
      error <code>ENOTEMPTY</code>.
    </p>

    <p> <!-- CL 32152 -->
      On Plan 9, files that are not served by <code>#M</code> will now
      have <a href="/pkg/os/#ModeDevice"><code>ModeDevice</code></a> set in
      the value returned
      by <a href="/pkg/os/#FileInfo"><code>FileInfo.Mode</code></a>.
    </p>
  </dd>
</dl>

<dl id="path_filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt>
  <dd>
    <p>
      A number of bugs and corner cases on Windows were fixed:
      <a href="/pkg/path/filepath/#Abs"><code>Abs</code></a> now calls <code>Clean</code> as documented,
      <a href="/pkg/path/filepath/#Glob"><code>Glob</code></a> now matches
      “<code>\\?\c:\*</code>”,
      <a href="/pkg/path/filepath/#EvalSymlinks"><code>EvalSymlinks</code></a> now
      correctly handles “<code>C:.</code>”, and
      <a href="/pkg/path/filepath/#Clean"><code>Clean</code></a> now properly
      handles a leading “<code>..</code>” in the path.
    </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 <a href="#sortslice"><code>sort.Slice</code></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, following the
      <a href="/ref/spec#String_literals">Go language semantics</a>.
    </p>
  </dd>
</dl>

<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
  <dd>
    <p> <!-- CL 25050, CL 25022 -->
      The <a href="/pkg/syscall/#Getpagesize"><code>Getpagesize</code></a>
      now returns the system's size, rather than a constant value.
      Previously it always returned 4KB.
    </p>

    <p> <!-- CL 31446 -->
      The signature
      of <a href="/pkg/syscall/#Utimes"><code>Utimes</code></a> has
      changed on Solaris to match all the other Unix systems'
      signature. Portable code should continue to use
      <a href="/pkg/os/#Chtimes"><code>os.Chtimes</code></a> instead.
    </p>

    <p> <!-- CL 32319 -->
      The <code>X__cmsg_data</code> field has been removed from
      <a href="/pkg/syscall/#Cmsghdr"><code>Cmsghdr</code></a>.
      </p>
  </dd>
</dl>

<dl id="text_template"><dt><a href="/pkg/text/template/">text/template</a></dt>
  <dd>
    <p> <!-- CL 31462 -->
      <a href="/pkg/text/template/#Template.Execute"><code>Template.Execute</code></a>
      can now take a
      <a href="/pkg/reflect/#Value"><code>reflect.Value</code></a> as its data
      argument, and
      <a href="/pkg/text/template/#FuncMap"><code>FuncMap</code></a>
      functions can also accept and return <code>reflect.Value</code>.
    </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 -->
      <a href="/pkg/time/#ParseDuration"><code>ParseDuration</code></a>
      now accepts long fractional parts.
    </p>

    <p> <!-- CL 33429 -->
      <a href="/pkg/time/#Parse"><code>Parse</code></a>
      now rejects dates before the start of a month, such as June 0;
      it already rejected dates beyond the end of the month, such as
      June 31 and July 32.
    </p>

    <p> <!-- CL 33029 --> <!-- CL 34816 -->
      The <code>tzdata</code> database has been updated to version
      2016j for systems that don't already have a local time zone
      database.
    </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 32483 -->
      The new function
      <a href="/pkg/testing/#CoverMode"><code>CoverMode</code></a>
      reports the test coverage mode.
    </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.
      Previously, individual test cases would appear to pass,
      and only the overall execution of the test binary would fail.
    </p>

    <p><!-- CL 32455 -->
      The signature of the
      <a href="/pkg/testing/#MainStart"><code>MainStart</code></a>
      function has changed, as allowed by the documentation. It is an
      internal detail and not part of the Go 1 compatibility promise.
      If you're not calling <code>MainStart</code> directly but see
      errors, that likely means you set the
      normally-empty <code>GOROOT</code> environment variable and it
      doesn't match the version of your <code>go</code> command's binary.
    </p>

  </dd>
</dl>

<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
  <dd>
    <p><!-- CL 30935 -->
      <a href="/pkg/unicode/#SimpleFold"><code>SimpleFold</code></a>
      now returns its argument unchanged if the provided input was an invalid rune.
      Previously, the implementation failed with an index bounds check panic.
    </p>
  </dd>
</dl>
