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

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