<!--{
        "Title": "Go 1.14 Release Notes",
        "Path":  "/doc/go1.14"
}-->

<!--
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">DRAFT RELEASE NOTES — Introduction to Go 1.14</h2>

<p>
  <strong>
    Go 1.14 is not yet released. These are work-in-progress
    release notes. Go 1.14 is expected to be released in February 2020.
  </strong>
</p>

<p>
Module support in the <code>go</code> command is now ready for production use,
and we encourage all users to migrate to Go modules for dependency management.
If you are unable to migrate due to a problem in the Go toolchain,
please ensure that the problem has an
<a href="https://golang.org/issue?q=is%3Aissue+is%3Aopen+label%3Amodules">open issue</a>
filed. (If the issue is not on the <code>Go1.15</code> milestone, please let us
know why it prevents you from migrating so that we can prioritize it
appropriately.)
</p>

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

<p>
  Per the <a href="https://github.com/golang/proposal/blob/master/design/6977-overlapping-interfaces.md">overlapping interfaces proposal</a>,
  Go 1.14 now permits embedding of interfaces with overlapping method sets:
  methods from an embedded interface may have the same names and identical signatures
  as methods already present in the (embedding) interface. This solves problems that typically
  (but not exclusively) occur with diamond-shaped embedding graphs.
  Explicitly declared methods in an interface must remain
  <a href="https://tip.golang.org/ref/spec#Uniqueness_of_identifiers">unique</a>, as before.
</p>

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

<h3 id="darwin">Darwin</h3>

<p>
  Go 1.14 is the last release that will run on macOS 10.11 El Capitan.
  Go 1.15 will require macOS 10.12 Sierra or later.
</p>

<p><!-- golang.org/issue/34749 -->
  Go 1.14 is the last Go release to support 32-bit binaries on
  macOS (the <code>darwin/386</code> port). They are no longer
  supported by macOS, starting with macOS 10.15 (Catalina).
  Go continues to support the 64-bit <code>darwin/amd64</code> port.
</p>

<p><!-- golang.org/issue/34751 -->
  Go 1.14 will likely be the last Go release to support 32-bit
  binaries on iOS, iPadOS, watchOS, and tvOS
  (the <code>darwin/arm</code> port). Go continues to support the
  64-bit <code>darwin/arm64</code> port.
</p>

<h3 id="windows">Windows</h3>

<p><!-- CL 203601 -->
  Go binaries on Windows now
  have <a href="https://docs.microsoft.com/en-us/windows/win32/memory/data-execution-prevention">DEP
  (Data Execution Prevention)</a> enabled.
</p>

<h3 id="wasm">WebAssembly</h3>

<p><!-- CL 203600 -->
  JavaScript values referenced from Go via <code>js.Value</code>
  objects can now be garbage collected.
</p>

<p><!-- CL 203600 -->
  <code>js.Value</code> values can no longer be compared using
  the <code>==</code> operator, and instead must be compared using
  their <code>Equal</code> method.
</p>

<p><!-- CL 203600 -->
  <code>js.Value</code> now
  has <code>IsUndefined</code>, <code>IsNull</code>,
  and <code>IsNaN</code> methods.
</p>

<h3 id="riscv">RISC-V</h3>

<p><!-- Issue 27532 -->
  Go 1.14 contains experimental support for 64-bit RISC-V on Linux
  (<code>GOOS=linux</code>, <code>GOARCH=riscv64</code>). Be aware
  that performance, assembly syntax stability, and possibly
  correctness are a work in progress.
</p>

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

<p><!-- CL 199919 -->
  Go now supports the 64-bit ARM architecture on FreeBSD (the
  <code>freebsd/arm64</code> port).
</p>

<h3 id="nacl">Native Client (NaCl)</h3>

<p><!-- golang.org/issue/30439 -->
  As <a href="go1.13#ports">announced</a> in the Go 1.13 release notes,
  Go 1.14 drops support for the Native Client platform (<code>GOOS=nacl</code>).
</p>

<h3 id="illumos">Illumos</h3>

<p><!-- CL 203758 -->
  The runtime now respects zone CPU caps
  (the <code>zone.cpu-cap</code> resource control)
  for <code>runtime.NumCPU</code> and the default value
  of <code>GOMAXPROCS</code>.
</p>

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

<h3 id="go-command">Go command</h3>

<h4 id="vendor">Vendoring</h4>
<!-- golang.org/issue/33848 -->

<p>
  When the main module contains a top-level <code>vendor</code> directory and
  its <code>go.mod</code> file specifies <code>go</code> <code>1.14</code> or
  higher, the <code>go</code> command now defaults to <code>-mod=vendor</code>
  for operations that accept that flag. A new value for that flag,
  <code>-mod=mod</code>, causes the <code>go</code> command to instead load
  modules from the module cache (as when no <code>vendor</code> directory is
  present).
</p>

<p>
  When <code>-mod=vendor</code> is set (explicitly or by default), the
  <code>go</code> command now verifies that the main module's
  <code>vendor/modules.txt</code> file is consistent with its
  <code>go.mod</code> file.
</p>

<p>
  <code>go</code> <code>list</code> <code>-m</code> no longer silently omits
  transitive dependencies that do not provide packages in
  the <code>vendor</code> directory. It now fails explicitly if
  <code>-mod=vendor</code> is set and information is requested for a module not
  mentioned in <code>vendor/modules.txt</code>.
</p>

<h4 id="go-flags">Flags</h4>

<p><!-- golang.org/issue/32502, golang.org/issue/30345 -->
  The <code>go</code> <code>get</code> command no longer accepts
  the <code>-mod</code> flag. Previously, the flag's setting either
  <a href="https://golang.org/issue/30345">was ignored</a> or
  <a href="https://golang.org/issue/32502">caused the build to fail</a>.
</p>

<p><!-- golang.org/issue/33326 -->
  <code>-mod=readonly</code> is now set by default when the <code>go.mod</code>
  file is read-only and no top-level <code>vendor</code> directory is present.
</p>

<p><!-- golang.org/issue/31481 -->
  <code>-modcacherw</code> is a new flag that instructs the <code>go</code>
  command to leave newly-created directories in the module cache at their
  default permissions rather than making them read-only.
  The use of this flag makes it more likely that tests or other tools will
  accidentally add files not included in the module's verified checksum.
  However, it allows the use of <code>rm</code> <code>-rf</code>
  (instead of <code>go</code> <code>clean</code> <code>-modcache</code>)
  to remove the module cache.
</p>

<p><!-- golang.org/issue/34506 -->
  <code>-modfile=file</code> is a new flag that instructs the <code>go</code>
  command to read (and possibly write) an alternate <code>go.mod</code> file
  instead of the one in the module root directory. A file
  named <code>go.mod</code> must still be present in order to determine the
  module root directory, but it is not accessed. When <code>-modfile</code> is
  specified, an alternate <code>go.sum</code> file is also used: its path is
  derived from the <code>-modfile</code> flag by trimming the <code>.mod</code>
  extension and appending <code>.sum</code>.
</p>

<h4 id="go-env-vars">Environment variables</h4>

<p><!-- golang.org/issue/32966 -->
  <code>GOINSECURE</code> is a new environment variable that instructs
  the <code>go</code> command to not require an HTTPS connection, and to skip
  certificate validation, when fetching certain modules directly from their
  origins. Like the existing <code>GOPRIVATE</code> variable, the value
  of <code>GOINSECURE</code> is a comma-separated list of glob patterns.
</p>

<h4 id="commands-outside-modules">Commands outside modules</h4>

<p><!-- golang.org/issue/32027 -->
  When module-aware mode is enabled explicitly (by setting
  <code>GO111MODULE=on</code>), most module commands have more
  limited functionality if no <code>go.mod</code> file is present. For
  example, <code>go</code> <code>build</code>,
  <code>go</code> <code>run</code>, and other build commands can only build
  packages in the standard library and packages specified as <code>.go</code>
  files on the command line.
</p>

<p>
  Previously, the <code>go</code> command would resolve each package path
  to the latest version of a module but would not record the module path
  or version. This resulted in <a href="https://golang.org/issue/32027">slow,
  non-reproducible builds</a>.
</p>

<p>
  <code>go</code> <code>get</code> continues to work as before, as do
  <code>go</code> <code>mod</code> <code>download</code> and
  <code>go</code> <code>list</code> <code>-m</code> with explicit versions.
</p>

<h4 id="incompatible-versions"><code>+incompatible</code> versions</h4>
<!-- golang.org/issue/34165 -->

<p>
  If the latest version of a module contains a <code>go.mod</code> file,
  <code>go</code> <code>get</code> will no longer upgrade to an
  <a href="/cmd/go/#hdr-Module_compatibility_and_semantic_versioning">incompatible</a>
  major version of that module unless such a version is requested explicitly
  or is already required.
  <code>go</code> <code>list</code> also omits incompatible major versions
  for such a module when fetching directly from version control, but may
  include them if reported by a proxy.
</p>


<h4 id="go.mod"><code>go.mod</code> file maintenance</h4>
<!-- golang.org/issue/34822 -->

<p>
  <code>go</code> commands other than
  <code>go</code> <code>mod</code> <code>tidy</code> no longer
  remove a <code>require</code> directive that specifies a version of an indirect dependency
  that is already implied by other (transitive) dependencies of the main
  module.
</p>

<p>
  <code>go</code> commands other than
  <code>go</code> <code>mod</code> <code>tidy</code> no longer
  edit the <code>go.mod</code> file if the changes are only cosmetic.
</p>

<p>
  When <code>-mod=readonly</code> is set, <code>go</code> commands will no
  longer fail due to a missing <code>go</code> directive or an erroneous
  <code>//&nbsp;indirect</code> comment.
</p>

<h4 id="module-downloading">Module downloading</h4>

<p><!-- golang.org/issue/26092 -->
  The <code>go</code> command now supports Subversion repositories in module mode.
</p>

<p><!-- golang.org/issue/30748 -->
  The <code>go</code> command now includes snippets of plain-text error messages
  from module proxies and other HTTP servers.
  An error message will only be shown if it is valid UTF-8 and consists of only
  graphic characters and spaces.
</p>

<h4 id="go-test">Testing</h4>

<p><!-- golang.org/issue/24929 -->
  <code>go test -v</code> now streams <code>t.Log</code> output as it happens,
  rather than at the end of all tests.
</p>

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

<p><!-- CL 190098 -->
  This release improves the performance of most uses
  of <code>defer</code> to incur almost zero overhead compared to
  calling the deferred function directly.
  As a result, <code>defer</code> can now be used in
  performance-critical code without overhead concerns.
</p>

<p><!-- CL 201760, CL 201762 and many others -->
  Goroutines are now asynchronously preemptible.
  As a result, loops without function calls no longer potentially
  deadlock the scheduler or significantly delay garbage collection.
  This is supported on all platforms except <code>windows/arm</code>,
  <code>darwin/arm</code>, <code>js/wasm</code>, and
  <code>plan9/*</code>.
</p>

<p>
  A consequence of the implementation of preemption is that on Unix
  systems, including Linux and macOS systems, programs built with Go
  1.14 will receive more signals than programs built with earlier
  releases.
  This means that programs that use packages
  like <a href="/pkg/syscall/"><code>syscall</code></a>
  or <a href="https://godoc.org/golang.org/x/sys/unix"><code>golang.org/x/sys/unix</code></a>
  will see more slow system calls fail with <code>EINTR</code> errors.
  Those programs will have to handle those errors in some way, most
  likely looping to try the system call again.  For more
  information about this
  see <a href="http://man7.org/linux/man-pages/man7/signal.7.html"><code>man
  7 signal</code></a> for Linux systems or similar documentation for
  other systems.
</p>

<p><!-- CL 201765, CL 195701 and many others -->
  The page allocator is more efficient and incurs significantly less
  lock contention at high values of <code>GOMAXPROCS</code>.
  This is most noticeable as lower latency and higher throughput for
  large allocations being done in parallel and at a high rate.
</p>

<p><!-- CL 171844 and many others -->
  Internal timers, used by
  <a href="/pkg/time/#After"><code>time.After</code></a>,
  <a href="/pkg/time/#Tick"><code>time.Tick</code></a>,
  <a href="/pkg/net/#Conn"><code>net.Conn.SetDeadline</code></a>,
  and friends, are more efficient, with less lock contention and fewer
  context switches.
  This is a performance improvement that should not cause any user
  visible changes.
</p>

<h2 id="compiler">Compiler</h2>

<p><!-- CL 162237 -->
  This release adds <code>-d=checkptr</code> as a compile-time option
  for adding instrumentation to check that Go code is following
  <code>unsafe.Pointer</code> safety rules dynamically.
  This option is enabled by default (except on Windows) with
  the <code>-race</code> or <code>-msan</code> flags, and can be
  disabled with <code>-gcflags=all=-d=checkptr=0</code>.
  Specifically, <code>-d=checkptr</code> checks the following:
</p>

<ol>
  <li>
    When converting <code>unsafe.Pointer</code> to <code>*T</code>,
    the resulting pointer must be aligned appropriately
    for <code>T</code>.
  </li>
  <li>
    If the result of pointer arithmetic points into a Go heap object,
    one of the <code>unsafe.Pointer</code>-typed operands must point
    into the same object.
  </li>
</ol>

<p>
  Using <code>-d=checkptr</code> is not currently recommended on
  Windows because it causes false alerts in the standard library.
</p>

<p><!-- CL 204338 -->
  The compiler can now emit machine-readable logs of key optimizations
  using the <code>-json</code> flag, including inlining, escape
  analysis, bounds-check elimination, and nil-check elimination.
</p>

<p><!-- CL 196959 -->
  Detailed escape analysis diagnostics (<code>-m=2</code>) now work again.
  This had been dropped from the new escape analysis implementation in
  the previous release.
</p>

<p><!-- CL 196217 -->
  All Go symbols in macOS binaries now begin with an underscore,
  following platform conventions.
</p>

<p><!-- CL 202117 -->
  This release includes experimental support for compiler-inserted
  coverage instrumentation for fuzzing.
  See <a href="https://golang.org/issue/14565">the issue</a> for more
  details.
  This API may change in future releases.
</p>

<p><!-- CL 174704 --><!-- CL 196784 -->
  Bounds check elimination now uses information from slice creation and can
  eliminate checks for indexes with types smaller than <code>int</code>.
</p>

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

<h3 id="hash/maphash">New byte sequence hashing package</h3>

<p> <!-- golang.org/issue/28322, CL 186877 -->
  Go 1.14 includes a new package,
  <a href="/pkg/hash/maphash/"><code>hash/maphash</code></a>,
  which provides hash functions on byte sequences.
  These hash functions are intended to be used to implement hash tables or
  other data structures that need to map arbitrary strings or byte
  sequences to a uniform distribution on unsigned 64-bit integers.
</p>
<p>
  The hash functions are collision-resistant but not cryptographically secure.
</p>
<p>
  The hash value of a given byte sequence is consistent within a
  single process, but will be different in different processes.
</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.
</p>

<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
  <dd>
    <p><!-- CL 191976 -->
      Support for SSL version 3.0 (SSLv3) has been removed. Note that SSLv3 is the
      <a href="https://tools.ietf.org/html/rfc7568">cryptographically broken</a>
      protocol predating TLS.
    </p>

    <p><!-- CL 191999 -->
      TLS 1.3 can't be disabled via the <code>GODEBUG</code> environment
      variable anymore. Use the
      <a href="/pkg/crypto/tls/#Config.MaxVersion"><code>Config.MaxVersion</code></a>
      field to configure TLS versions.
    </p>

    <p><!-- CL 205059 -->
      When multiple certificate chains are provided through the
      <a href="/pkg/crypto/tls/#Config.Certificates"><code>Config.Certificates</code></a>
      field, the first one compatible with the peer is now automatically
      selected. This allows for example providing an ECDSA and an RSA
      certificate, and letting the package automatically select the best one.
      Note that the performance of this selection is going to be poor unless the
      <a href="/pkg/crypto/tls/#Certificate.Leaf"><code>Certificate.Leaf</code></a>
      field is set.
    </p>

    <p><!-- CL 175517 -->
      The new <a href="/pkg/crypto/tls/#CipherSuites"><code>CipherSuites</code></a>
      and <a href="/pkg/crypto/tls/#InsecureCipherSuites"><code>InsecureCipherSuites</code></a>
      functions return a list of currently implemented cipher suites.
      The new <a href="/pkg/crypto/tls/#CipherSuiteName"><code>CipherSuiteName</code></a>
      function returns a name for a cipher suite ID.
    </p>

    <p><!-- CL 205058, 205057 -->
      The new <a href="/pkg/crypto/tls/#ClientHelloInfo.SupportsCertificate">
      <code>(*ClientHelloInfo).SupportsCertificate</code></a> and
      <a href="/pkg/crypto/tls/#CertificateRequestInfo.SupportsCertificate">
      <code>(*CertificateRequestInfo).SupportsCertificate</code></a>
      methods expose whether a peer supports a certain certificate.
    </p>

    <p><!-- CL 174329 -->
      The <code>tls</code> package no longer supports the legacy Next Protocol
      Negotiation (NPN) extension and now only supports ALPN. In previous
      releases it supported both. There are no API changes and applications
      should function identically as before. Most other clients and servers have
      already removed NPN support in favor of the standardized ALPN.
    </p>

    <p><!-- CL 205063, 205062 -->
      RSA-PSS signatures are now used when supported in TLS 1.2 handshakes. This
      won't affect most applications, but custom
      <a href="/pkg/crypto/tls/#Certificate.PrivateKey"><code>Certificate.PrivateKey</code></a>
      implementations that don't support RSA-PSS signatures will need to use the new
      <a href="/pkg/crypto/tls/#Certificate.SupportedSignatureAlgorithms">
      <code>Certificate.SupportedSignatureAlgorithms</code></a>
      field to disable them.
    </p>

    <p><!-- CL 205059, 205059 -->
      <a href="/pkg/crypto/tls/#Config.Certificates"><code>Config.Certificates</code></a> and
      <a href="/pkg/crypto/tls/#Config.GetCertificate"><code>Config.GetCertificate</code></a>
      can now both be nil if
      <a href="/pkg/crypto/tls/#Config.GetConfigForClient"><code>Config.GetConfigForClient</code></a>
      is set. If the callbacks return neither certificates nor an error, the
      <code>unrecognized_name</code> is now sent.
    </p>

    <p><!-- CL 205058 -->
      The new <a href="/pkg/crypto/tls/#CertificateRequestInfo.Version"><code>CertificateRequestInfo.Version</code></a>
      field provides the TLS version to client certificates callbacks.
    </p>

    <p><!-- CL 205068 -->
      The new <code>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256</code> and
      <code>TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256</code> constants use
      the final names for the cipher suites previously referred to as
      <code>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305</code> and
      <code>TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305</code>.
    </p>
  </dd>
</dl><!-- crypto/tls -->

<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
  <dd>
    <p><!-- CL 204046 -->
      <a href="/pkg/crypto/x509/#Certificate.CreateCRL"><code>Certificate.CreateCRL</code></a>
      now supports Ed25519 issuers.
    </p>
  </dd>
</dl>

<dl id="debug/dwarf"><dt><a href="/pkg/debug/dwarf/">debug/dwarf</a></dt>
  <dd>
    <p><!-- CL 175138 -->
      The <code>debug/dwarf</code> package now supports reading DWARF
      version 5.
    </p>
    <p>
      The new
      method <a href="/pkg/debug/dwarf/#Data.AddSection"><code>(*Data).AddSection</code></a>
      supports adding arbitrary new DWARF sections from the input file
      to the DWARF <code>Data</code>.
    </p>

    <p><!-- CL 192698 -->
      The new
      method <a href="/pkg/debug/dwarf/#Reader.ByteOrder"><code>(*Reader).ByteOrder</code></a>
      returns the byte order of the current compilation unit.
      This may be used to interpret attributes that are encoded in the
      native ordering, such as location descriptions.
    </p>

    <p><!-- CL 192699 -->
      The new
      method <a href="/pkg/debug/dwarf/#LineReader.Files"><code>(*LineReader).Files</code></a>
      returns the file name table from a line reader.
      This may be used to interpret the value of DWARF attributes such
      as <code>AttrDeclFile</code>.
    </p>
  </dd>
</dl><!-- debug/dwarf -->

<dl id="encoding/asn1"><dt><a href="/pkg/encoding/asn1/">encoding/asn1</a></dt>
  <dd>
    <p><!-- CL 126624 -->
      <a href="/pkg/encoding/asn1/#Unmarshal"><code>Unmarshal</code></a>
      now supports ASN.1 string type BMPString, represented by the new
      <a href="/pkg/encoding/asn1/#TagBMPString"><code>TagBMPString</code></a>
      constant.
    </p>
  </dd>
</dl><!-- encoding/asn1 -->

<dl id="encoding/json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
  <dd>
    <p><!-- CL 200677 -->
      The <a href="/pkg/encoding/json/#Decoder"><code>Decoder</code></a>
      type supports a new
      method <a href="/pkg/encoding/json/#Decoder.InputOffset"><code>InputOffset</code></a>
      that returns the input stream byte offset of the current
      decoder position.
    </p>

    <p><!-- CL 200217 -->
      <a href="/pkg/encoding/json/#Compact"><code>Compact</code></a> no longer
      escapes the <code>U+2028</code> and <code>U+2029</code> characters, which
      was never a documented feature. For proper escaping, see <a
      href="/pkg/encoding/json/#HTMLEscape"><code>HTMLEscape</code></a>.
    </p>
  </dd>
</dl><!-- encoding/json -->

<dl id="go/build"><dt><a href="/pkg/go/build/">go/build</a></dt>
  <dd>
    <p><!-- CL 203820, 211657 -->
      The <a href="/pkg/go/build/#Context"><code>Context</code></a>
      type has a new field <code>Dir</code> which may be used to set
      the working directory for the build.
      The default is the current directory of the running process.
      In module mode, this is used to locate the main module.
    </p>
  </dd>
</dl><!-- go/build -->

<dl id="go/doc"><dt><a href="/pkg/go/doc/">go/doc</a></dt>
  <dd>
    <p><!-- CL 204830 -->
      The new
      function <a href="/pkg/go/doc/#NewFromFiles"><code>NewFromFiles</code></a>
      computes package documentation from a list
      of <code>*ast.File</code>'s and associates examples with the
      appropriate package elements.
      The new information is available in a new <code>Examples</code>
      field
      in the <a href="/pkg/go/doc/#Package"><code>Package</code></a>, <a href="/pkg/go/doc/#Type"><code>Type</code></a>,
      and <a href="/pkg/go/doc/#Func"><code>Func</code></a> types, and a
      new <a href="/pkg/go/doc/#Example.Suffix"><code>Suffix</code></a>
      field in
      the <a href="/pkg/go/doc/#Example"><code>Example</code></a>
      type.
    </p>
  </dd>
</dl><!-- go/doc -->

<dl id="io/ioutil"><dt><a href="/pkg/io/ioutil/">io/ioutil</a></dt>
  <dd>
    <p><!-- CL 198488 -->
      <a href="/pkg/io/ioutil/#TempDir"><code>TempDir</code></a> can now create directories
      whose names have predictable prefixes and suffixes.
      As with <a href="/pkg/io/ioutil/#TempFile"><code>TempFile</code></a>, if the pattern
      contains a '*', the random string replaces the last '*'.
    </p>
  </dd>
</dl>

<dl id="log"><dt><a href="/pkg/log/">log</a></dt>
  <dd>
    <p><!-- CL 186182 -->
      The
      new <a href="https://tip.golang.org/pkg/log/#pkg-constants"><code>Lmsgprefix</code></a>
      flag may be used to tell the logging functions to emit the
      optional output prefix immediately before the log message rather
      than at the start of the line.
    </p>
  </dd>
</dl><!-- log -->

<dl id="math"><dt><a href="/pkg/math/">math</a></dt>
  <dd>
    <p><!-- CL 127458 -->
      The new <a href="/pkg/math/#FMA"><code>FMA</code></a> function
      computes <code>x*y+z</code> in floating point with no
      intermediate rounding of the <code>x*y</code>
      computation. Several architectures implement this computation
      using dedicated hardware instructions for additional performance.
    </p>
  </dd>
</dl><!-- math -->

<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
  <dd>
    <p><!-- CL 164972 -->
      The <a href="/pkg/math/big/#Int.GCD"><code>GCD</code></a> method
      now allows the inputs <code>a</code> and <code>b</code> to be
      zero or negative.
    </p>
  </dd>
</dl><!-- math/big -->

<dl id="math/bits"><dt><a href="/pkg/math/bits/">math/bits</a></dt>
  <dd>
    <p><!-- CL 197838 -->
      The new functions
      <a href="/pkg/math/bits/#Rem"><code>Rem</code></a>,
      <a href="/pkg/math/bits/#Rem32"><code>Rem32</code></a>, and
      <a href="/pkg/math/bits/#Rem64"><code>Rem64</code></a>
      support computing a remainder even when the quotient overflows.
    </p>
  </dd>
</dl><!-- math/bits -->

<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
  <dd>
    <p><!-- CL 186927 -->
      The default type of <code>.js</code> and <code>.mjs</code> files
      is now <code>text/javascript</code> rather
      than <code>application/javascript</code>.
      This is in accordance
      with <a href="https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/">an
      IETF draft</a> that treats <code>application/javascript</code> as obsolete.
    </p>
  </dd>
</dl><!-- mime -->

<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
  <dd>
    <p>
      The
      new <a href="/pkg/mime/multipart/#Reader"><code>Reader</code></a>
      method <a href="/pkg/mime/multipart/#Reader.NextRawPart"><code>NextRawPart</code></a>
      supports fetching the next MIME part without transparently
      decoding <code>quoted-printable</code> data.
    </p>
  </dd>
</dl><!-- mime/multipart -->

<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
  <dd>
    <p><!-- CL 200760 -->
      The new <a href="/pkg/net/http/#Header"><code>Header</code></a>
      method <a href="/pkg/net/http/#Header.Values"><code>Values</code></a>
      can be used to fetch all values associated with a
      canonicalized key.
    </p>

    <p><!-- CL 61291 -->
      The
      new <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
      field <a href="/pkg/net/http/#Transport.DialTLSContext"><code>DialTLSContext</code></a>
      can be used to specify an optional dial function for creating
      TLS connections for non-proxied HTTPS requests.
      This new field can be used instead
      of <a href="/pkg/net/http/#Transport.DialTLS"><code>DialTLS</code></a>,
      which is now considered deprecated; <code>DialTLS</code> will
      continue to work, but new code should
      use <code>DialTLSContext</code>, which allows the transport to
      cancel dials as soon as they are no longer needed.
    </p>

    <p><!-- CL 192518, CL 194218 -->
      On Windows, <a href="/pkg/net/http/#ServeFile"><code>ServeFile</code></a> now correctly
      serves files larger than 2GB.
    </p>
  </dd>
</dl><!-- net/http -->

<dl id="net/http/httptest"><dt><a href="/pkg/net/http/httptest/">net/http/httptest</a></dt>
  <dd>
    <p><!-- CL 201557 -->
      The
      new <a href="/pkg/net/http/httptest/#Server"><code>Server</code></a>
      field <a href="/pkg/net/http/httptest/#Server.EnableHTTP2"><code>EnableHTTP2</code></a>
      supports enabling HTTP/2 on the test server.
    </p>
  </dd>
</dl><!-- net/http/httptest -->

<dl id="net/textproto"><dt><a href="/pkg/net/textproto/">net/textproto</a></dt>
  <dd>
    <p><!-- CL 200760 -->
      The
      new <a href="/pkg/net/textproto/#MIMEHeader"><code>MIMEHeader</code></a>
      method <a href="/pkg/net/textproto/#MIMEHeader.Values"><code>Values</code></a>
      can be used to fetch all values associated with a canonicalized
      key.
    </p>
  </dd>
</dl><!-- net/textproto -->

<dl id="os/signal"><dt><a href="/pkg/os/signal/">os/signal</a></dt>
  <dd>
    <p><!-- CL 187739 -->
      On Windows,
      the <code>CTRL_CLOSE_EVENT</code>, <code>CTRL_LOGOFF_EVENT</code>,
      and <code>CTRL_SHUTDOWN_EVENT</code> events now generate
      a <code>syscall.SIGTERM</code> signal, similar to how Control-C
      and Control-Break generate a <code>syscall.SIGINT</code> signal.
    </p>
  </dd>
</dl><!-- os/signal -->

<dl id="plugin"><dt><a href="/pkg/plugin/">plugin</a></dt>
  <dd>
    <p><!-- CL 191617 -->
      The <code>plugin</code> package now supports <code>freebsd/amd64</code>.
    </p>
  </dd>
</dl><!-- plugin -->

<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
  <dd>
    <p><!-- CL 85661 -->
      <a href="/pkg/reflect#StructOf"><code>StructOf</code></a> now
      supports creating struct types with unexported fields, by
      setting the <code>PkgPath</code> field in
      a <code>StructField</code> element.
    </p>
  </dd>
</dl><!-- reflect -->

<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
  <dd>
    <p><!-- CL 200081 -->
      <code>runtime.Goexit</code> can no longer be aborted by a
      recursive <code>panic</code>/<code>recover</code>.
    </p>

    <p><!-- CL 188297, CL 191785 -->
      On macOS, <code>SIGPIPE</code> is no longer forwarded to signal
      handlers installed before the Go runtime is initialized.
      This is necessary because macOS delivers <code>SIGPIPE</code>
      <a href="https://golang.org/issue/33384">to the main thread</a>
      rather than the thread writing to the closed pipe.
    </p>
  </dd>
</dl><!-- runtime -->

<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
  <dd>
    <p><!-- CL 204636, 205097 -->
    The generated profile no longer includes the pseudo-PCs used for inline
    marks. Symbol information of inlined functions is encoded in
    <a href="https://github.com/google/pprof/blob/5e96527/proto/profile.proto#L177-L184">the format</a>
    the pprof tool expects. This is a fix for the regression introduced
    during recent releases.
    </p>
  </dd>
</dl><!-- runtime/pprof -->

<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
  <dd>
    <p>
      The <a href="/pkg/strconv/#NumError"><code>NumError</code></a>
      type now has
      an <a href="/pkg/strconv/#NumError.Unwrap"><code>Unwrap</code></a>
      method that may be used to retrieve the reason that a conversion
      failed.
      This supports using <code>NumError</code> values
      with <a href="/pkg/errors/#Is"><code>errors.Is</code></a> to see
      if the underlying error
      is <a href="/pkg/strconv/#pkg-variables"><code>strconv.ErrRange</code></a>
      or <a href="/pkg/strconv/#pkg-variables"><code>strconv.ErrSyntax</code></a>.
    </p>
  </dd>
</dl><!-- strconv -->

<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
  <dd>
    <p><!-- CL 200577 -->
      Unlocking a highly contended <code>Mutex</code> now directly
      yields the CPU to the next goroutine waiting for
      that <code>Mutex</code>. This significantly improves the
      performance of highly contended mutexes on high CPU count
      machines.
    </p>
  </dd>
</dl><!-- sync -->

<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
  <dd>
    <p><!-- CL 201359 -->
       The testing package now supports cleanup functions, called after
       a test or benchmark has finished, by calling
       <a href="/pkg/testing#T.Cleanup"><code>T.Cleanup</code></a> or
       <a href="/pkg/testing#B.Cleanup"><code>B.Cleanup</code></a> respectively.
    </p>
  </dd>
</dl><!-- testing -->

<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
  <dd>
    <p><!-- CL 206124 -->
      The text/template package now correctly reports errors when a
      parenthesized argument is used as a function.
      This most commonly shows up in erroneous cases like
      <code>{{if (eq .F "a") or (eq .F "b")}}</code>.
      This should be written as <code>{{if or (eq .F "a") (eq .F "b")}}</code>.
      The erroneous case never worked as expected, and will now be
      reported with an error <code>can't give argument to non-function</code>.
    </p>
  </dd>
</dl><!-- text/template -->

<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
  <dd>
    <p>
      The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
      support throughout the system has been upgraded from Unicode 11.0 to
      <a href="https://www.unicode.org/versions/Unicode12.0.0/">Unicode 12.0</a>,
      which adds 554 new characters, including four new scripts, and 61 new emoji.
    </p>
  </dd>
</dl><!-- unicode -->
