<!--{
	"Title": "Go 1.9 Release Notes",
	"Path":  "/doc/go1.9",
	"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.9</h2>

<p>
  The latest Go release, version 1.9, arrives six months
  after <a href="go1.8">Go 1.8</a> and is the tenth release in
  the <a href="https://golang.org/doc/devel/release.html">Go 1.x
  series</a>.
  There are two <a href="#language">changes to the language</a>:
  adding support for type aliases and defining when implementations
  may fuse floating point operations.
  Most of the changes are in the implementation of the toolchain,
  runtime, and libraries.
  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
  adds <a href="#monotonic-time">transparent monotonic time support</a>,
  <a href="#parallel-compile">parallelizes compilation of functions</a> within a package,
  better supports <a href="#test-helper">test helper functions</a>,
  includes a new <a href="#math-bits">bit manipulation package</a>,
  and has a new <a href="#sync-map">concurrent map type</a>.
</p>

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

<p>
  There are two changes to the language.
</p>
<p>
  Go now supports type aliases to support gradual code repair while
  moving a type between packages.
  The <a href="https://golang.org/design/18130-type-alias">type alias
  design document</a>
  and <a href="https://talks.golang.org/2016/refactor.article">an
  article on refactoring</a> cover the problem in detail.
  In short, a type alias declaration has the form:
</p>

<pre>
type T1 = T2
</pre>

<p>
  This declaration introduces an alias name <code>T1</code>—an
  alternate spelling—for the type denoted by <code>T2</code>; that is,
  both <code>T1</code> and <code>T2</code> denote the same type.
</p>

<p> <!-- CL 40391 -->
  A smaller language change is that the
  <a href="/ref/spec#Floating_point_operators">language specification
  now states</a> when implementations are allowed to fuse floating
  point operations together, such as by using an architecture's "fused
  multiply and add" (FMA) instruction to compute <code>x*y</code>&nbsp;<code>+</code>&nbsp;<code>z</code>
  without rounding the intermediate result <code>x*y</code>.
  To force the intermediate rounding, write <code>float64(x*y)</code>&nbsp;<code>+</code>&nbsp;<code>z</code>.
</p>

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

<p>
  There are no new supported operating systems or processor
  architectures in this release.
</p>

<h3 id="power8">ppc64x requires POWER8</h3>

<p> <!-- CL 36725, CL 36832 -->
  Both <code>GOARCH=ppc64</code> and <code>GOARCH=ppc64le</code> now
  require at least POWER8 support. In previous releases,
  only <code>GOARCH=ppc64le</code> required POWER8 and the big
  endian <code>ppc64</code> architecture supported older
  hardware.
<p>

<h3 id="freebsd">FreeBSD</h3>

<p>
  Go 1.9 is the last release that will run on FreeBSD 9.3,
  which is already
  <a href="https://www.freebsd.org/security/unsupported.html">unsupported by FreeBSD</a>.
  Go 1.10 will require FreeBSD 10.3+.
</p>

<h3 id="openbsd">OpenBSD 6.0</h3>

<p> <!-- CL 40331 -->
  Go 1.9 now enables PT_TLS generation for cgo binaries and thus
  requires OpenBSD 6.0 or newer. Go 1.9 no longer supports
  OpenBSD 5.9.
<p>

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

<p>
  There are some instabilities on FreeBSD 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>.
  Any help in solving this FreeBSD-specific issue would be appreciated.
</p>

<p>
  Go stopped running NetBSD builders during the Go 1.9 development
  cycle due to NetBSD kernel crashes, up to and including NetBSD 7.1.
  As Go 1.9 is being released, NetBSD 7.1.1 is being released with a fix.
  However, at this time we have no NetBSD builders passing our test suite.
  Any help investigating the
  <a href="https://github.com/golang/go/labels/OS-NetBSD">various NetBSD issues</a>
  would be appreciated.
</p>

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

<h3 id="parallel-compile">Parallel Compilation</h3>

<p>
  The Go compiler now supports compiling a package's functions in parallel, taking
  advantage of multiple cores. This is in addition to the <code>go</code> command's
  existing support for parallel compilation of separate packages.
  Parallel compilation is on by default, but it can be disabled by setting the
  environment variable <code>GO19CONCURRENTCOMPILATION</code> to <code>0</code>.
</p>

<h3 id="vendor-dotdotdot">Vendor matching with ./...</h3>

<p><!-- CL 38745 -->
  By popular request, <code>./...</code> no longer matches packages
  in <code>vendor</code> directories in tools accepting package names,
  such as <code>go</code> <code>test</code>. To match vendor
  directories, write <code>./vendor/...</code>.
</p>

<h3 id="goroot">Moved GOROOT</h3>

<p><!-- CL 42533 -->
  The <a href="/cmd/go/">go tool</a> will now use the path from which it
  was invoked to attempt to locate the root of the Go install tree.
  This means that if the entire Go installation is moved to a new
  location, the go tool should continue to work as usual.
  This may be overridden by setting <code>GOROOT</code> in the environment,
  which should only be done in unusual circumstances.
  Note that this does not affect the result of
  the <a href="/pkg/runtime/#GOROOT">runtime.GOROOT</a> function, which
  will continue to report the original installation location;
  this may be fixed in later releases.
</p>

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

<p><!-- CL 37441 -->
  Complex division is now C99-compatible. This has always been the
  case in gccgo and is now fixed in the gc toolchain.
</p>

<p> <!-- CL 36983 -->
  The linker will now generate DWARF information for cgo executables on Windows.
</p>

<p> <!-- CL 44210, CL 40095 -->
  The compiler now includes lexical scopes in the generated DWARF if the
  <code>-N -l</code> flags are provided, allowing
  debuggers to hide variables that are not in scope. The <code>.debug_info</code>
  section is now DWARF version 4.
</p>

<p> <!-- CL 43855 -->
  The values of <code>GOARM</code> and <code>GO386</code> now affect a
  compiled package's build ID, as used by the <code>go</code> tool's
  dependency caching.
</p>

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

<p> <!-- CL 42028 -->
  The four-operand ARM <code>MULA</code> instruction is now assembled correctly,
  with the addend register as the third argument and the result
  register as the fourth and final argument.
  In previous releases, the two meanings were reversed.
  The three-operand form, in which the fourth argument is implicitly
  the same as the third, is unaffected.
  Code using four-operand <code>MULA</code> instructions
  will need to be updated, but we believe this form is very rarely used.
  <code>MULAWT</code> and <code>MULAWB</code> were already
  using the correct order in all forms and are unchanged.
</p>

<p> <!-- CL 42990 -->
  The assembler now supports <code>ADDSUBPS/PD</code>, completing the
  two missing x86 SSE3 instructions.
</p>

<h3 id="go-doc">Doc</h3>

<p><!-- CL 36031 -->
  Long lists of arguments are now truncated. This improves the readability
  of <code>go</code> <code>doc</code> on some generated code.
</p>

<p><!-- CL 38438 -->
  Viewing documentation on struct fields is now supported.
  For example, <code>go</code> <code>doc</code> <code>http.Client.Jar</code>.
</p>

<h3 id="go-env-json">Env</h3>

<p> <!-- CL 38757 -->
  The new <code>go</code> <code>env</code> <code>-json</code> flag
  enables JSON output, instead of the default OS-specific output
  format.
</p>

<h3 id="go-test-list">Test</h3>

<p> <!-- CL 41195 -->
  The <a href="/cmd/go/#hdr-Description_of_testing_flags"><code>go</code> <code>test</code></a>
  command accepts a new <code>-list</code> flag, which takes a regular
  expression as an argument and prints to stdout the name of any
  tests, benchmarks, or examples that match it, without running them.
</p>


<h3 id="go-tool-pprof">Pprof</h3>

<p> <!-- CL 34192 -->
  Profiles produced by the <code>runtime/pprof</code> package now
  include symbol information, so they can be viewed
  in <code>go</code> <code>tool</code> <code>pprof</code>
  without the binary that produced the profile.
</p>

<p> <!-- CL 38343 -->
  The <code>go</code> <code>tool</code> <code>pprof</code> command now
  uses the HTTP proxy information defined in the environment, using
  <a href="/pkg/net/http/#ProxyFromEnvironment"><code>http.ProxyFromEnvironment</code></a>.
</p>

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

<!-- CL 40112 -->
<p>
  The <a href="/cmd/vet/"><code>vet</code> command</a>
  has been better integrated into the
  <a href="/cmd/go/"><code>go</code> tool</a>,
  so <code>go</code> <code>vet</code> now supports all standard build
  flags while <code>vet</code>'s own flags are now available
  from <code>go</code> <code>vet</code> as well as
  from <code>go</code> <code>tool</code> <code>vet</code>.
</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 7 contains the Go 1.8.3 version of gccgo.
We expect that the next release, GCC 8, will contain the Go 1.10
version of gccgo.
</p>

<h2 id="runtime">Runtime</h2>

<h3 id="callersframes">Call stacks with inlined frames</h3>

<p>
  Users of
  <a href="/pkg/runtime#Callers"><code>runtime.Callers</code></a>
  should avoid directly inspecting the resulting PC slice and instead use
  <a href="/pkg/runtime#CallersFrames"><code>runtime.CallersFrames</code></a>
  to get a complete view of the call stack, or
  <a href="/pkg/runtime#Caller"><code>runtime.Caller</code></a>
  to get information about a single caller.
  This is because an individual element of the PC slice cannot account
  for inlined frames or other nuances of the call stack.
</p>

<p>
  Specifically, code that directly iterates over the PC slice and uses
  functions such as
  <a href="/pkg/runtime#FuncForPC"><code>runtime.FuncForPC</code></a>
  to resolve each PC individually will miss inlined frames.
  To get a complete view of the stack, such code should instead use
  <code>CallersFrames</code>.
  Likewise, code should not assume that the length returned by
  <code>Callers</code> is any indication of the call depth.
  It should instead count the number of frames returned by
  <code>CallersFrames</code>.
</p>

<p>
  Code that queries a single caller at a specific depth should use
  <code>Caller</code> rather than passing a slice of length 1 to
  <code>Callers</code>.
</p>

<p>
  <a href="/pkg/runtime#CallersFrames"><code>runtime.CallersFrames</code></a>
  has been available since Go 1.7, so code can be updated prior to
  upgrading to Go 1.9.
</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,
  better generated code, and optimizations in the core library.
</p>

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

<p> <!-- CL 37520 -->
  Library functions that used to trigger stop-the-world garbage
  collection now trigger concurrent garbage collection.

  Specifically, <a href="/pkg/runtime/#GC"><code>runtime.GC</code></a>,
  <a href="/pkg/runtime/debug/#SetGCPercent"><code>debug.SetGCPercent</code></a>,
  and
  <a href="/pkg/runtime/debug/#FreeOSMemory"><code>debug.FreeOSMemory</code></a>,
  now trigger concurrent garbage collection, blocking only the calling
  goroutine until the garbage collection is done.
</p>

<p> <!-- CL 34103, CL 39835 -->
  The
  <a href="/pkg/runtime/debug/#SetGCPercent"><code>debug.SetGCPercent</code></a>
  function only triggers a garbage collection if one is immediately
  necessary because of the new GOGC value.
  This makes it possible to adjust GOGC on-the-fly.
</p>

<p> <!-- CL 38732 -->
  Large object allocation performance is significantly improved in
  applications using large (&gt;50GB) heaps containing many large
  objects.
</p>

<p> <!-- CL 34937 -->
  The <a href="/pkg/runtime/#ReadMemStats"><code>runtime.ReadMemStats</code></a>
  function now takes less than 100µs even for very large heaps.
</p>

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

<h3 id="monotonic-time">Transparent Monotonic Time support</h3>

<p> <!-- CL 36255 -->
  The <a href="/pkg/time/"><code>time</code></a> package now transparently
  tracks monotonic time in each <a href="/pkg/time/#Time"><code>Time</code></a>
  value, making computing durations between two <code>Time</code> values
  a safe operation in the presence of wall clock adjustments.
  See the <a href="/pkg/time/#hdr-Monotonic_Clocks">package docs</a> and
  <a href="https://golang.org/design/12914-monotonic">design document</a>
  for details.
</p>

<h3 id="math-bits">New bit manipulation package</h3>

<p> <!-- CL 36315 -->
  Go 1.9 includes a new package,
  <a href="/pkg/math/bits/"><code>math/bits</code></a>, with optimized
  implementations for manipulating bits. On most architectures,
  functions in this package are additionally recognized by the
  compiler and treated as intrinsics for additional performance.
</p>

<h3 id="test-helper">Test Helper Functions</h3>

<p> <!-- CL 38796 -->
  The
  new <a href="/pkg/testing/#T.Helper"><code>(*T).Helper</code></a>
  and <a href="/pkg/testing/#B.Helper"><code>(*B).Helper</code></a>
  methods mark the calling function as a test helper function.  When
  printing file and line information, that function will be skipped.
  This permits writing test helper functions while still having useful
  line numbers for users.
</p>

<h3 id="sync-map">Concurrent Map</h3>

<p> <!-- CL 36617 -->
  The new <a href="/pkg/sync/#Map"><code>Map</code></a> type
  in the <a href="/pkg/sync/"><code>sync</code></a> package
  is a concurrent map with amortized-constant-time loads, stores, and
  deletes. It is safe for multiple goroutines to call a <code>Map</code>'s methods
  concurrently.
</p>

<h3 id="pprof-labels">Profiler Labels</h3>

<p><!-- CL 34198 -->
  The <a href="/pkg/runtime/pprof"><code>runtime/pprof</code> package</a>
  now supports adding labels to <code>pprof</code> profiler records.
  Labels form a key-value map that is used to distinguish calls of the
  same function in different contexts when looking at profiles
  with the <a href="/cmd/pprof/"><code>pprof</code> command</a>.
  The <code>pprof</code> package's
  new <a href="/pkg/runtime/pprof/#Do"><code>Do</code> function</a>
  runs code associated with some provided labels. Other new functions
  in the package help work with labels.
</p>

</dl><!-- runtime/pprof -->


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

<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
  <dd>
    <p><!-- CL 39570 -->
      The
      ZIP <a href="/pkg/archive/zip/#Writer"><code>Writer</code></a>
      now sets the UTF-8 bit in
      the <a href="/pkg/archive/zip/#FileHeader.Flags"><code>FileHeader.Flags</code></a>
      when appropriate.
    </p>

</dl><!-- archive/zip -->

<dl id="crypto/rand"><dt><a href="/pkg/crypto/rand/">crypto/rand</a></dt>
  <dd>
    <p><!-- CL 43852 -->
      On Linux, Go now calls the <code>getrandom</code> system call
      without the <code>GRND_NONBLOCK</code> flag; it will now block
      until the kernel has sufficient randomness. On kernels predating
      the <code>getrandom</code> system call, Go continues to read
      from <code>/dev/urandom</code>.
    </p>

</dl><!-- crypto/rand -->

<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
  <dd>
    <p><!-- CL 36093 -->

      On Unix systems the environment
      variables <code>SSL_CERT_FILE</code>
      and <code>SSL_CERT_DIR</code> can now be used to override the
      system default locations for the SSL certificate file and SSL
      certificate files directory, respectively.
    </p>

    <p>The FreeBSD file <code>/usr/local/etc/ssl/cert.pem</code> is
      now included in the certificate search path.
    </p>

    <p><!-- CL 36900 -->

      The package now supports excluded domains in name constraints.
      In addition to enforcing such constraints,
      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
      will create certificates with excluded name constraints
      if the provided template certificate has the new
      field
      <a href="/pkg/crypto/x509/#Certificate.ExcludedDNSDomains"><code>ExcludedDNSDomains</code></a>
      populated.
    </p>

    <p><!-- CL 36696 -->

    If any SAN extension, including with no DNS names, is present
    in the certificate, then the Common Name from
    <a href="/pkg/crypto/x509/#Certificate.Subject"><code>Subject</code></a> is ignored.
    In previous releases, the code tested only whether DNS-name SANs were
    present in a certificate.
    </p>

</dl><!-- crypto/x509 -->

<dl id="database/sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
  <dd>
    <p><!-- CL 35476 -->
      The package will now use a cached <a href="/pkg/database/sql/#Stmt"><code>Stmt</code></a> if
      available in <a href="/pkg/database/sql/#Tx.Stmt"><code>Tx.Stmt</code></a>.
      This prevents statements from being re-prepared each time
      <a href="/pkg/database/sql/#Tx.Stmt"><code>Tx.Stmt</code></a> is called.
    </p>

    <p><!-- CL 38533 -->
      The package now allows drivers to implement their own argument checkers by implementing
      <a href="/pkg/database/sql/driver/#NamedValueChecker"><code>driver.NamedValueChecker</code></a>.
      This also allows drivers to support <code>OUTPUT</code> and <code>INOUT</code> parameter types.
      <a href="/pkg/database/sql/#Out"><code>Out</code></a> should be used to return output parameters
      when supported by the driver.
    </p>

    <p><!-- CL 39031 -->
      <a href="/pkg/database/sql/#Rows.Scan"><code>Rows.Scan</code></a> can now scan user-defined string types.
      Previously the package supported scanning into numeric types like <code>type</code> <code>Int</code> <code>int64</code>. It now also supports
      scanning into string types like <code>type</code> <code>String</code> <code>string</code>.
    </p>

    <p><!-- CL 40694 -->
      The new <a href="/pkg/database/sql/#DB.Conn"><code>DB.Conn</code></a> method returns the new
      <a href="/pkg/database/sql/#Conn"><code>Conn</code></a> type representing an
      exclusive connection to the database from the connection pool. All queries run on
      a <a href="/pkg/database/sql/#Conn"><code>Conn</code></a> will use the same underlying
      connection until <a href="/pkg/database/sql/#Conn.Close"><code>Conn.Close</code></a> is called
      to return the connection to the connection pool.
    </p>

</dl><!-- database/sql -->

<dl id="encoding/asn1"><dt><a href="/pkg/encoding/asn1/">encoding/asn1</a></dt>
  <dd>
    <p><!-- CL 38660 -->
	  The new
	  <a href="/pkg/encoding/asn1/#NullBytes"><code>NullBytes</code></a>
	  and
	  <a href="/pkg/encoding/asn1/#NullRawValue"><code>NullRawValue</code></a>
	  represent the ASN.1 NULL type.
    </p>

</dl><!-- encoding/asn1 -->

<dl id="encoding/base32"><dt><a href="/pkg/encoding/base32/">encoding/base32</a></dt>
  <dd>
    <p><!-- CL 38634 -->
	  The new <a href="/pkg/encoding/base32/#Encoding.WithPadding">Encoding.WithPadding</a>
	  method adds support for custom padding characters and disabling padding.
    </p>

</dl><!-- encoding/base32 -->

<dl id="encoding/csv"><dt><a href="/pkg/encoding/csv/">encoding/csv</a></dt>
  <dd>
    <p><!-- CL 41730 -->
      The new field
      <a href="/pkg/encoding/csv/#Reader.ReuseRecord"><code>Reader.ReuseRecord</code></a>
      controls whether calls to
      <a href="/pkg/encoding/csv/#Reader.Read"><code>Read</code></a>
      may return a slice sharing the backing array of the previous
      call's returned slice for improved performance.
    </p>

</dl><!-- encoding/csv -->

<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
  <dd>
    <p><!-- CL 37051 -->
      The sharp flag ('<code>#</code>') is now supported when printing
      floating point and complex numbers. It will always print a
      decimal point
      for <code>%e</code>, <code>%E</code>, <code>%f</code>, <code>%F</code>, <code>%g</code>
      and <code>%G</code>; it will not remove trailing zeros
      for <code>%g</code> and <code>%G</code>.
    </p>

</dl><!-- fmt -->

<dl id="hash/fnv"><dt><a href="/pkg/hash/fnv/">hash/fnv</a></dt>
  <dd>
    <p><!-- CL 38356 -->
      The package now includes 128-bit FNV-1 and FNV-1a hash support with
      <a href="/pkg/hash/fnv/#New128"><code>New128</code></a> and
      <a href="/pkg/hash/fnv/#New128a"><code>New128a</code></a>, respectively.
    </p>

</dl><!-- hash/fnv -->

<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
  <dd>
    <p><!-- CL 37880, CL 40936 -->
	  The package now reports an error if a predefined escaper (one of
	  "html", "urlquery" and "js") is found in a pipeline and does not match
	  what the auto-escaper would have decided on its own.
	  This avoids certain security or correctness issues.
	  Now use of one of these escapers is always either a no-op or an error.
	  (The no-op case eases migration from <a href="/pkg/text/template/">text/template</a>.)
    </p>

</dl><!-- html/template -->

<dl id="image"><dt><a href="/pkg/image/">image</a></dt>
  <dd>
    <p><!-- CL 36734 -->
	  The <a href="/pkg/image/#Rectangle.Intersect"><code>Rectangle.Intersect</code></a>
	  method now returns a zero <code>Rectangle</code> when called on
	  adjacent but non-overlapping rectangles, as documented. In
	  earlier releases it would incorrectly return an empty but
	  non-zero <code>Rectangle</code>.
    </p>

</dl><!-- image -->

<dl id="image/color"><dt><a href="/pkg/image/color/">image/color</a></dt>
  <dd>
    <p><!-- CL 36732 -->
	  The YCbCr to RGBA conversion formula has been tweaked to ensure
	  that rounding adjustments span the complete [0, 0xffff] RGBA
	  range.
    </p>

</dl><!-- image/color -->

<dl id="image/png"><dt><a href="/pkg/image/png/">image/png</a></dt>
  <dd>
    <p><!-- CL 34150 -->
	  The new <a href="/pkg/image/png/#Encoder.BufferPool"><code>Encoder.BufferPool</code></a>
	  field allows specifying an <a href="/pkg/image/png/#EncoderBufferPool"><code>EncoderBufferPool</code></a>,
	  that will be used by the encoder to get temporary <code>EncoderBuffer</code>
	  buffers when encoding a PNG image.

	  The use of a <code>BufferPool</code> reduces the number of
	  memory allocations performed while encoding multiple images.
    </p>

    <p><!-- CL 38271 -->
	  The package now supports the decoding of transparent 8-bit
	  grayscale ("Gray8") images.
    </p>

</dl><!-- image/png -->

<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
  <dd>
    <p><!-- CL 36487 -->
      The new
      <a href="/pkg/math/big/#Int.IsInt64"><code>IsInt64</code></a>
      and
      <a href="/pkg/math/big/#Int.IsUint64"><code>IsUint64</code></a>
      methods report whether an <code>Int</code>
      may be represented as an <code>int64</code> or <code>uint64</code>
      value.
    </p>

</dl><!-- math/big -->

<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
  <dd>
    <p><!-- CL 39223 -->
      The new
      <a href="/pkg/mime/multipart/#FileHeader.Size"><code>FileHeader.Size</code></a>
      field describes the size of a file in a multipart message.
    </p>

</dl><!-- mime/multipart -->

<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
  <dd>
    <p><!-- CL 32572 -->
      The new
      <a href="/pkg/net/#Resolver.StrictErrors"><code>Resolver.StrictErrors</code></a>
      provides control over how Go's built-in DNS resolver handles
      temporary errors during queries composed of multiple sub-queries,
      such as an A+AAAA address lookup.
    </p>

    <p><!-- CL 37260 -->
      The new
      <a href="/pkg/net/#Resolver.Dial"><code>Resolver.Dial</code></a>
      allows a <code>Resolver</code> to use a custom dial function.
    </p>

    <p><!-- CL 40510 -->
      <a href="/pkg/net/#JoinHostPort"><code>JoinHostPort</code></a> now only places an address in square brackets if the host contains a colon.
      In previous releases it would also wrap addresses in square brackets if they contained a percent ('<code>%</code>') sign.
    </p>

    <p><!-- CL 37913 -->
      The new methods
      <a href="/pkg/net/#TCPConn.SyscallConn"><code>TCPConn.SyscallConn</code></a>,
      <a href="/pkg/net/#IPConn.SyscallConn"><code>IPConn.SyscallConn</code></a>,
      <a href="/pkg/net/#UDPConn.SyscallConn"><code>UDPConn.SyscallConn</code></a>,
      and
      <a href="/pkg/net/#UnixConn.SyscallConn"><code>UnixConn.SyscallConn</code></a>
      provide access to the connections' underlying file descriptors.
    </p>

    <p><!-- 45088 -->
      It is now safe to call <a href="/pkg/net/#Dial"><code>Dial</code></a> with the address obtained from
      <code>(*TCPListener).String()</code> after creating the listener with
      <code><a href="/pkg/net/#Listen">Listen</a>("tcp", ":0")</code>.
      Previously it failed on some machines with half-configured IPv6 stacks.
    </p>

</dl><!-- net -->

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

    <p><!-- CL 37328 -->
      The <a href="/pkg/net/http/#Cookie.String"><code>Cookie.String</code></a> method, used for
      <code>Cookie</code> and <code>Set-Cookie</code> headers, now encloses values in double quotes
      if the value contains either a space or a comma.
    </p>

    <p>Server changes:</p>
    <ul>
      <li><!-- CL 38194 -->
        <a href="/pkg/net/http/#ServeMux"><code>ServeMux</code></a> now ignores ports in the host
        header when matching handlers. The host is matched unmodified for <code>CONNECT</code> requests.
      </li>

      <li><!-- CL 44074 -->
        The new <a href="/pkg/net/http/#Server.ServeTLS"><code>Server.ServeTLS</code></a> method wraps
        <a href="/pkg/net/http/#Server.Serve"><code>Server.Serve</code></a> with added TLS support.
      </li>

      <li><!-- CL 34727 -->
        <a href="/pkg/net/http/#Server.WriteTimeout"><code>Server.WriteTimeout</code></a>
        now applies to HTTP/2 connections and is enforced per-stream.
      </li>

      <li><!-- CL 43231 -->
        HTTP/2 now uses the priority write scheduler by default.
        Frames are scheduled by following HTTP/2 priorities as described in
        <a href="https://tools.ietf.org/html/rfc7540#section-5.3">RFC 7540 Section 5.3</a>.
      </li>

      <li><!-- CL 36483 -->
        The HTTP handler returned by <a href="/pkg/net/http/#StripPrefix"><code>StripPrefix</code></a>
        now calls its provided handler with a modified clone of the original <code>*http.Request</code>.
        Any code storing per-request state in maps keyed by <code>*http.Request</code> should
        use
        <a href="/pkg/net/http/#Request.Context"><code>Request.Context</code></a>,
        <a href="/pkg/net/http/#Request.WithContext"><code>Request.WithContext</code></a>,
        and
        <a href="/pkg/context/#WithValue"><code>context.WithValue</code></a> instead.
      </li>

      <li><!-- CL 35490 -->
        <a href="/pkg/net/http/#LocalAddrContextKey"><code>LocalAddrContextKey</code></a> now contains
        the connection's actual network address instead of the interface address used by the listener.
      </li>
    </ul>

    <p>Client &amp; Transport changes:</p>
    <ul>
      <li><!-- CL 35488 -->
        The <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
        now supports making requests via SOCKS5 proxy when the URL returned by
        <a href="/pkg/net/http/#Transport.Proxy"><code>Transport.Proxy</code></a>
        has the scheme <code>socks5</code>.
      </li>
    </ul>

</dl><!-- net/http -->

<dl id="net/http/fcgi"><dt><a href="/pkg/net/http/fcgi/">net/http/fcgi</a></dt>
  <dd>
    <p><!-- CL 40012 -->
      The new
      <a href="/pkg/net/http/fcgi/#ProcessEnv"><code>ProcessEnv</code></a>
      function returns FastCGI environment variables associated with an HTTP request
      for which there are no appropriate
      <a href="/pkg/net/http/#Request"><code>http.Request</code></a>
      fields, such as <code>REMOTE_USER</code>.
    </p>

</dl><!-- net/http/fcgi -->

<dl id="net/http/httptest"><dt><a href="/pkg/net/http/httptest/">net/http/httptest</a></dt>
  <dd>
    <p><!-- CL 34639 -->
      The new
      <a href="/pkg/net/http/httptest/#Server.Client"><code>Server.Client</code></a>
      method returns an HTTP client configured for making requests to the test server.
    </p>

    <p>
      The new
      <a href="/pkg/net/http/httptest/#Server.Certificate"><code>Server.Certificate</code></a>
      method returns the test server's TLS certificate, if any.
    </p>

</dl><!-- net/http/httptest -->

<dl id="net/http/httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
  <dd>
    <p><!-- CL 43712 -->
      The <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
      now proxies all HTTP/2 response trailers, even those not declared in the initial response
      header. Such undeclared trailers are used by the gRPC protocol.
    </p>

</dl><!-- net/http/httputil -->

<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
  <dd>
    <p><!-- CL 36800 -->
      The <code>os</code> package now uses the internal runtime poller
      for file I/O.
      This reduces the number of threads required for read/write
      operations on pipes, and it eliminates races when one goroutine
      closes a file while another is using the file for I/O.
    </p>

  <dd>
    <p><!-- CL 37915 -->
      On Windows,
      <a href="/pkg/os/#Args"><code>Args</code></a>
      is now populated without <code>shell32.dll</code>, improving process start-up time by 1-7 ms.
      </p>

</dl><!-- os -->

<dl id="os/exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
  <dd>
    <p><!-- CL 37586 -->
      The <code>os/exec</code> package now prevents child processes from being created with
      any duplicate environment variables.
      If <a href="/pkg/os/exec/#Cmd.Env"><code>Cmd.Env</code></a>
      contains duplicate environment keys, only the last
      value in the slice for each duplicate key is used.
    </p>

</dl><!-- os/exec -->

<dl id="os/user"><dt><a href="/pkg/os/user/">os/user</a></dt>
  <dd>
    <p><!-- CL 37664 -->
      <a href="/pkg/os/user/#Lookup"><code>Lookup</code></a> and
      <a href="/pkg/os/user/#LookupId"><code>LookupId</code></a> now
      work on Unix systems when <code>CGO_ENABLED=0</code> by reading
      the <code>/etc/passwd</code> file.
    </p>

    <p><!-- CL 33713 -->
      <a href="/pkg/os/user/#LookupGroup"><code>LookupGroup</code></a> and
      <a href="/pkg/os/user/#LookupGroupId"><code>LookupGroupId</code></a> now
      work on Unix systems when <code>CGO_ENABLED=0</code> by reading
      the <code>/etc/group</code> file.
    </p>

</dl><!-- os/user -->

<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
  <dd>
    <p><!-- CL 38335 -->
      The new
      <a href="/pkg/reflect/#MakeMapWithSize"><code>MakeMapWithSize</code></a>
      function creates a map with a capacity hint.
    </p>

</dl><!-- reflect -->

<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
  <dd>
    <p><!-- CL 37233, CL 37726 -->
      Tracebacks generated by the runtime and recorded in profiles are
      now accurate in the presence of inlining.
      To retrieve tracebacks programmatically, applications should use
      <a href="/pkg/runtime/#CallersFrames"><code>runtime.CallersFrames</code></a>
      rather than directly iterating over the results of
      <a href="/pkg/runtime/#Callers"><code>runtime.Callers</code></a>.
    </p>

    <p><!-- CL 38403 -->
      On Windows, Go no longer forces the system timer to run at high
      resolution when the program is idle.
      This should reduce the impact of Go programs on battery life.
    </p>

    <p><!-- CL 29341 -->
      On FreeBSD, <code>GOMAXPROCS</code> and
      <a href="/pkg/runtime/#NumCPU"><code>runtime.NumCPU</code></a>
      are now based on the process' CPU mask, rather than the total
      number of CPUs.
    </p>

    <p><!-- CL 43641 -->
      The runtime has preliminary support for Android O.
    </p>

</dl><!-- runtime -->

<dl id="runtime/debug"><dt><a href="/pkg/runtime/debug/">runtime/debug</a></dt>
  <dd>
    <p><!-- CL 34013 -->
      Calling
      <a href="/pkg/runtime/debug/#SetGCPercent"><code>SetGCPercent</code></a>
      with a negative value no longer runs an immediate garbage collection.
    </p>

</dl><!-- runtime/debug -->

<dl id="runtime/trace"><dt><a href="/pkg/runtime/trace/">runtime/trace</a></dt>
  <dd>
    <p><!-- CL 36015 -->
      The execution trace now displays mark assist events, which
      indicate when an application goroutine is forced to assist
      garbage collection because it is allocating too quickly.
    </p>

    <p><!-- CL 40810 -->
      "Sweep" events now encompass the entire process of finding free
      space for an allocation, rather than recording each individual
      span that is swept.
      This reduces allocation latency when tracing allocation-heavy
      programs.
      The sweep event shows how many bytes were swept and how many
      were reclaimed.
    </p>

</dl><!-- runtime/trace -->

<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
  <dd>
    <p><!-- CL 34310 -->
      <a href="/pkg/sync/#Mutex"><code>Mutex</code></a> is now more fair.
    </p>

</dl><!-- sync -->

<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
  <dd>
    <p><!-- CL 36697 -->
      The new field
      <a href="/pkg/syscall/#Credential.NoSetGroups"><code>Credential.NoSetGroups</code></a>
      controls whether Unix systems make a <code>setgroups</code> system call
      to set supplementary groups when starting a new process.
    </p>

    <p><!-- CL 43512 -->
      The new field
      <a href="/pkg/syscall/#SysProcAttr.AmbientCaps"><code>SysProcAttr.AmbientCaps</code></a>
      allows setting ambient capabilities on Linux 4.3+ when creating
      a new process.
    </p>

    <p><!-- CL 37439 -->
      On 64-bit x86 Linux, process creation latency has been optimized with
      use of <code>CLONE_VFORK</code> and <code>CLONE_VM</code>.
    </p>

    <p><!-- CL 37913 -->
      The new
      <a href="/pkg/syscall/#Conn"><code>Conn</code></a>
      interface describes some types in the
      <a href="/pkg/net/"><code>net</code></a>
      package that can provide access to their underlying file descriptor
      using the new
      <a href="/pkg/syscall/#RawConn"><code>RawConn</code></a>
      interface.
    </p>

</dl><!-- syscall -->


<dl id="testing/quick"><dt><a href="/pkg/testing/quick/">testing/quick</a></dt>
  <dd>
    <p><!-- CL 39152 -->
      The package now chooses values in the full range when
      generating <code>int64</code> and <code>uint64</code> random
      numbers; in earlier releases generated values were always
      limited to the [-2<sup>62</sup>, 2<sup>62</sup>) range.
    </p>

    <p>
      In previous releases, using a nil
      <a href="/pkg/testing/quick/#Config.Rand"><code>Config.Rand</code></a>
      value caused a fixed deterministic random number generator to be used.
      It now uses a random number generator seeded with the current time.
      For the old behavior, set <code>Config.Rand</code> to <code>rand.New(rand.NewSource(0))</code>.
    </p>

</dl><!-- testing/quick -->

<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
  <dd>
    <p><!-- CL 38420 -->
	  The handling of empty blocks, which was broken by a Go 1.8
	  change that made the result dependent on the order of templates,
	  has been fixed, restoring the old Go 1.7 behavior.
    </p>

</dl><!-- text/template -->

<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
  <dd>
    <p><!-- CL 36615 -->
      The new methods
      <a href="/pkg/time/#Duration.Round"><code>Duration.Round</code></a>
      and
      <a href="/pkg/time/#Duration.Truncate"><code>Duration.Truncate</code></a>
      handle rounding and truncating durations to multiples of a given duration.
    </p>

    <p><!-- CL 35710 -->
      Retrieving the time and sleeping now work correctly under Wine.
    </p>

    <p>
      If a <code>Time</code> value has a monotonic clock reading, its
      string representation (as returned by <code>String</code>) now includes a
      final field <code>"m=±value"</code>, where <code>value</code> is the
      monotonic clock reading formatted as a decimal number of seconds.
    </p>

    <p><!-- CL 44832 -->
      The included <code>tzdata</code> timezone database has been
      updated to version 2017b. As always, it is only used if the
      system does not already have the database available.
    </p>

</dl><!-- time -->
