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

<!--
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.15</h2>

<p>
  The latest Go release, version 1.15, arrives six months after <a href="go1.14">Go 1.14</a>.
  Most of its 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>
  Go 1.15 includes <a href="#linker">substantial improvements to the linker</a>,
  improves <a href="#runtime">allocation for small objects at high core counts</a>, and
  deprecates <a href="#commonname">X.509 CommonName</a>.
  <code>GOPROXY</code> now supports skipping proxies that return errors and
  a new <a href="#time/tzdata">embedded tzdata package</a> has been added.
</p>

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

<p>
  There are no changes to the language.
</p>

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

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

<p>
  As <a href="go1.14#darwin">announced</a> in the Go 1.14 release
  notes, Go 1.15 requires macOS 10.12 Sierra or later; support for
  previous versions has been discontinued.
</p>

<p> <!-- golang.org/issue/37610, golang.org/issue/37611, CL 227582, and CL 227198  -->
  As <a href="/doc/go1.14#darwin">announced</a> in the Go 1.14 release
  notes, Go 1.15 drops support for 32-bit binaries on macOS, iOS,
  iPadOS, watchOS, and tvOS (the <code>darwin/386</code>
  and <code>darwin/arm</code> ports). Go continues to support the
  64-bit <code>darwin/amd64</code> and <code>darwin/arm64</code> ports.
</p>

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

<p> <!-- CL 214397 and CL 230217 -->
  Go now generates Windows ASLR executables when <code>-buildmode=pie</code>
  cmd/link flag is provided. Go command uses <code>-buildmode=pie</code>
  by default on Windows.
</p>

<p><!-- CL 227003 -->
  The <code>-race</code> and <code>-msan</code> flags now always
  enable <code>-d=checkptr</code>, which checks uses
  of <code>unsafe.Pointer</code>. This was previously the case on all
  OSes except Windows.
</p>

<p><!-- CL 211139 -->
  Go-built DLLs no longer cause the process to exit when it receives a
  signal (such as Ctrl-C at a terminal).
</p>

<h3 id="android">Android</h3>

<p> <!-- CL 235017, golang.org/issue/38838 -->
  When linking binaries for Android, Go 1.15 explicitly selects
  the <code>lld</code> linker available in recent versions of the NDK.
  The <code>lld</code> linker avoids crashes on some devices, and is
  planned to become the default NDK linker in a future NDK version.
</p>

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

<p><!-- CL 234381 -->
  Go 1.15 adds support for OpenBSD 6.7 on <code>GOARCH=arm</code>
  and <code>GOARCH=arm64</code>. Previous versions of Go already
  supported OpenBSD 6.7 on <code>GOARCH=386</code>
  and <code>GOARCH=amd64</code>.
</p>

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

<p> <!-- CL 226400, CL 226206, and others -->
  There has been progress in improving the stability and performance
  of the 64-bit RISC-V port on Linux (<code>GOOS=linux</code>,
  <code>GOARCH=riscv64</code>). It also now supports asynchronous
  preemption.
</p>

<h3 id="386">386</h3>

<p><!-- golang.org/issue/40255 -->
  Go 1.15 is the last release to support x87-only floating-point
  hardware (<code>GO386=387</code>). Future releases will require at
  least SSE2 support on 386, raising Go's
  minimum <code>GOARCH=386</code> requirement to the Intel Pentium 4
  (released in 2000) or AMD Opteron/Athlon 64 (released in 2003).
</p>

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

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

<p><!-- golang.org/issue/37367 -->
  The <code>GOPROXY</code> environment variable now supports skipping proxies
  that return errors. Proxy URLs may now be separated with either commas
  (<code>,</code>) or pipe characters (<code>|</code>). If a proxy URL is
  followed by a comma, the <code>go</code> command will only try the next proxy
  in the list after a 404 or 410 HTTP response. If a proxy URL is followed by a
  pipe character, the <code>go</code> command will try the next proxy in the
  list after any error. Note that the default value of <code>GOPROXY</code>
  remains <code>https://proxy.golang.org,direct</code>, which does not fall
  back to <code>direct</code> in case of errors.
</p>

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

<p><!-- https://golang.org/issue/36134 -->
  Changing the <code>-timeout</code> flag now invalidates cached test results. A
  cached result for a test run with a long timeout will no longer count as
  passing when <code>go</code> <code>test</code> is re-invoked with a short one.
</p>

<h4 id="go-flag-parsing">Flag parsing</h4>

<p><!-- https://golang.org/cl/211358 -->
  Various flag parsing issues in <code>go</code> <code>test</code> and
  <code>go</code> <code>vet</code> have been fixed. Notably, flags specified
  in <code>GOFLAGS</code> are handled more consistently, and
  the <code>-outputdir</code> flag now interprets relative paths relative to the
  working directory of the <code>go</code> command (rather than the working
  directory of each individual test).
</p>

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

<p><!-- https://golang.org/cl/219538 -->
  The location of the module cache may now be set with
  the <code>GOMODCACHE</code> environment variable. The default value of
  <code>GOMODCACHE</code> is <code>GOPATH[0]/pkg/mod</code>, the location of the
  module cache before this change.
</p>

<p><!-- https://golang.org/cl/221157 -->
  A workaround is now available for Windows "Access is denied" errors in
  <code>go</code> commands that access the module cache, caused by external
  programs concurrently scanning the file system (see
  <a href="https://golang.org/issue/36568">issue #36568</a>). The workaround is
  not enabled by default because it is not safe to use when Go versions lower
  than 1.14.2 and 1.13.10 are running concurrently with the same module cache.
  It can be enabled by explicitly setting the environment variable
  <code>GODEBUG=modcacheunzipinplace=1</code>.
</p>

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

<h4 id="vet-string-int">New warning for string(x)</h4>

<p><!-- CL 212919, 232660 -->
  The vet tool now warns about conversions of the
  form <code>string(x)</code> where <code>x</code> has an integer type
  other than <code>rune</code> or <code>byte</code>.
  Experience with Go has shown that many conversions of this form
  erroneously assume that <code>string(x)</code> evaluates to the
  string representation of the integer <code>x</code>.
  It actually evaluates to a string containing the UTF-8 encoding of
  the value of <code>x</code>.
  For example, <code>string(9786)</code> does not evaluate to the
  string <code>"9786"</code>; it evaluates to the
  string <code>"\xe2\x98\xba"</code>, or <code>"☺"</code>.
</p>

<p>
  Code that is using <code>string(x)</code> correctly can be rewritten
  to <code>string(rune(x))</code>.
  Or, in some cases, calling <code>utf8.EncodeRune(buf, x)</code> with
  a suitable byte slice <code>buf</code> may be the right solution.
  Other code should most likely use <code>strconv.Itoa</code>
  or <code>fmt.Sprint</code>.
</p>

<p>
  This new vet check is enabled by default when
  using <code>go</code> <code>test</code>.
</p>

<p>
  We are considering prohibiting the conversion in a future release of Go.
  That is, the language would change to only
  permit <code>string(x)</code> for integer <code>x</code> when the
  type of <code>x</code> is <code>rune</code> or <code>byte</code>.
  Such a language change would not be backward compatible.
  We are using this vet check as a first trial step toward changing
  the language.
</p>

<h4 id="vet-impossible-interface">New warning for impossible interface conversions</h4>

<p><!-- CL 218779, 232660 -->
  The vet tool now warns about type assertions from one interface type
  to another interface type when the type assertion will always fail.
  This will happen if both interface types implement a method with the
  same name but with a different type signature.
</p>

<p>
  There is no reason to write a type assertion that always fails, so
  any code that triggers this vet check should be rewritten.
</p>

<p>
  This new vet check is enabled by default when
  using <code>go</code> <code>test</code>.
</p>

<p>
  We are considering prohibiting impossible interface type assertions
  in a future release of Go.
  Such a language change would not be backward compatible.
  We are using this vet check as a first trial step toward changing
  the language.
</p>

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

<p><!-- CL 221779 -->
  If <code>panic</code> is invoked with a value whose type is derived from any
  of: <code>bool</code>, <code>complex64</code>, <code>complex128</code>, <code>float32</code>, <code>float64</code>,
  <code>int</code>, <code>int8</code>, <code>int16</code>, <code>int32</code>, <code>int64</code>, <code>string</code>,
  <code>uint</code>, <code>uint8</code>, <code>uint16</code>, <code>uint32</code>, <code>uint64</code>, <code>uintptr</code>,
  then the value will be printed, instead of just its address.
  Previously, this was only true for values of exactly these types.
</p>

<p><!-- CL 228900 -->
  On a Unix system, if the <code>kill</code> command
  or <code>kill</code> system call is used to send
  a <code>SIGSEGV</code>, <code>SIGBUS</code>,
  or <code>SIGFPE</code> signal to a Go program, and if the signal
  is not being handled via
  <a href="/pkg/os/signal/#Notify"><code>os/signal.Notify</code></a>,
  the Go program will now reliably crash with a stack trace.
  In earlier releases the behavior was unpredictable.
</p>

<p><!-- CL 221182, CL 229998 -->
  Allocation of small objects now performs much better at high core
  counts, and has lower worst-case latency.
</p>

<p><!-- CL 216401 -->
  Converting a small integer value into an interface value no longer
  causes allocation.
</p>

<p><!-- CL 216818 -->
  Non-blocking receives on closed channels now perform as well as
  non-blocking receives on open channels.
</p>

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

<p><!-- CL 229578 -->
  Package <code>unsafe</code>'s <a href="/pkg/unsafe/#Pointer">safety
  rules</a> allow converting an <code>unsafe.Pointer</code>
  into <code>uintptr</code> when calling certain
  functions. Previously, in some cases, the compiler allowed multiple
  chained conversions (for example, <code>syscall.Syscall(…,</code>
  <code>uintptr(uintptr(ptr)),</code> <code>…)</code>). The compiler
  now requires exactly one conversion. Code that used multiple
  conversions should be updated to satisfy the safety rules.
</p>

<p><!-- CL 230544, CL 231397 -->
  Go 1.15 reduces typical binary sizes by around 5% compared to Go
  1.14 by eliminating certain types of GC metadata and more
  aggressively eliminating unused type metadata.
</p>

<p><!-- CL 219357, CL 231600 -->
  The toolchain now mitigates
  <a href="https://www.intel.com/content/www/us/en/support/articles/000055650/processors.html">Intel
  CPU erratum SKX102</a> on <code>GOARCH=amd64</code> by aligning
  functions to 32 byte boundaries and padding jump instructions. While
  this padding increases binary sizes, this is more than made up for
  by the binary size improvements mentioned above.
</p>

<p><!-- CL 222661 -->
  Go 1.15 adds a <code>-spectre</code> flag to both the
  compiler and the assembler, to allow enabling Spectre mitigations.
  These should almost never be needed and are provided mainly as a
  “defense in depth” mechanism.
  See the <a href="https://github.com/golang/go/wiki/Spectre">Spectre wiki page</a> for details.
</p>

<p><!-- CL 228578 -->
  The compiler now rejects <code>//go:</code> compiler directives that
  have no meaning for the declaration they are applied to with a
  "misplaced compiler directive" error. Such misapplied directives
  were broken before, but were silently ignored by the compiler.
</p>

<p><!-- CL 206658, CL 205066 -->
  The compiler's <code>-json</code> optimization logging now reports
  large (>= 128 byte) copies and includes explanations of escape
  analysis decisions.
</p>

<h2 id="linker">Linker</h2>

<p>
  This release includes substantial improvements to the Go linker,
  which reduce linker resource usage (both time and memory) and
  improve code robustness/maintainability.
</p>

<p>
  For a representative set of large Go programs, linking is 20% faster
  and requires 30% less memory on average, for <code>ELF</code>-based
  OSes (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, and Solaris)
  running on <code>amd64</code> architectures, with more modest
  improvements for other architecture/OS combinations.
</p>

<p>
  The key contributors to better linker performance are a newly
  redesigned object file format, and a revamping of internal
  phases to increase concurrency (for example, applying relocations to
  symbols in parallel). Object files in Go 1.15 are slightly larger
  than their 1.14 equivalents.
</p>

<p>
  These changes are part of a multi-release project
  to <a href="https://golang.org/s/better-linker">modernize the Go
  linker</a>, meaning that there will be additional linker
  improvements expected in future releases.
</p>

<p><!-- CL 207877 -->
  The linker now defaults to internal linking mode
  for <code>-buildmode=pie</code> on
  <code>linux/amd64</code> and <code>linux/arm64</code>, so these
  configurations no longer require a C linker.
</p>

<h2 id="objdump">Objdump</h2>

<p><!-- CL 225459 -->
  The <a href="/cmd/objdump/">objdump</a> tool now supports
  disassembling in GNU assembler syntax with the <code>-gnu</code>
  flag.
</p>

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

<h3 id="time/tzdata">New embedded tzdata package</h3>

<p> <!-- CL 224588 -->
  Go 1.15 includes a new package,
  <a href="/pkg/time/tzdata/"><code>time/tzdata</code></a>,
  that permits embedding the timezone database into a program.
  Importing this package (as <code>import _ "time/tzdata"</code>)
  permits the program to find timezone information even if the
  timezone database is not available on the local system.
  You can also embed the timezone database by building
  with <code>-tags timetzdata</code>.
  Either approach increases the size of the program by about 800 KB.
</p>

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

<p><!-- CL 235817 -->
  Go 1.15 will translate the C type <code>EGLConfig</code> to the
  Go type <code>uintptr</code>. This change is similar to how Go
  1.12 and newer treats <code>EGLDisplay</code>, Darwin's CoreFoundation and
  Java's JNI types. See the <a href="/cmd/cgo/#hdr-Special_cases">cgo
  documentation</a> for more information.
</p>

<h3 id="commonname">X.509 CommonName deprecation</h3>

<p><!-- CL 231379 -->
  The deprecated, legacy behavior of treating the <code>CommonName</code>
  field on X.509 certificates as a host name when no Subject Alternative Names
  are present is now disabled by default. It can be temporarily re-enabled by
  adding the value <code>x509ignoreCN=0</code> to the <code>GODEBUG</code>
  environment variable.
</p>

<p>
  Note that if the <code>CommonName</code> is an invalid host name, it's always
  ignored, regardless of <code>GODEBUG</code> settings. Invalid names include
  those with any characters other than letters, digits, hyphens and underscores,
  and those with empty labels or trailing dots.
</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="bufio"><dt><a href="/pkg/bufio/">bufio</a></dt>
  <dd>
    <p><!-- CL 225357, CL 225557 -->
      When a <a href="/pkg/bufio/#Scanner"><code>Scanner</code></a> is
      used with an invalid
      <a href="/pkg/io/#Reader"><code>io.Reader</code></a> that
      incorrectly returns a negative number from <code>Read</code>,
      the <code>Scanner</code> will no longer panic, but will instead
      return the new error
      <a href="/pkg/bufio/#ErrBadReadCount"><code>ErrBadReadCount</code></a>.
    </p>
  </dd>
</dl><!-- bufio -->

<dl id="crypto"><dt><a href="/pkg/crypto/">crypto</a></dt>
  <dd>
    <p><!-- CL 231417, CL 225460 -->
      The <code>PrivateKey</code> and <code>PublicKey</code> types in the
      <a href="/pkg/crypto/rsa/"><code>crypto/rsa</code></a>,
      <a href="/pkg/crypto/ecdsa/"><code>crypto/ecdsa</code></a>, and
      <a href="/pkg/crypto/ed25519/"><code>crypto/ed25519</code></a> packages
      now have an <code>Equal</code> method to compare keys for equivalence
      or to make type-safe interfaces for public keys. The method signature
      is compatible with
      <a href="https://pkg.go.dev/github.com/google/go-cmp/cmp#Equal"><code>go-cmp</code>'s
      definition of equality</a>.
    </p>

    <p><!-- CL 224937 -->
      <a href="/pkg/crypto/#Hash"><code>Hash</code></a> now implements
      <a href="/pkg/fmt/#Stringer"><code>fmt.Stringer</code></a>.
    </p>
  </dd>
</dl><!-- crypto -->

<dl id="crypto/ecdsa"><dt><a href="/pkg/crypto/ecdsa/">crypto/ecdsa</a></dt>
  <dd>
    <p><!-- CL 217940 -->
      The new <a href="/pkg/crypto/ecdsa/#SignASN1"><code>SignASN1</code></a>
      and <a href="/pkg/crypto/ecdsa/#VerifyASN1"><code>VerifyASN1</code></a>
      functions allow generating and verifying ECDSA signatures in the standard
      ASN.1 DER encoding.
    </p>
  </dd>
</dl><!-- crypto/ecdsa -->

<dl id="crypto/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt>
  <dd>
    <p><!-- CL 202819 -->
      The new <a href="/pkg/crypto/elliptic/#MarshalCompressed"><code>MarshalCompressed</code></a>
      and <a href="/pkg/crypto/elliptic/#UnmarshalCompressed"><code>UnmarshalCompressed</code></a>
      functions allow encoding and decoding NIST elliptic curve points in compressed format.
    </p>
  </dd>
</dl><!-- crypto/elliptic -->

<dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt>
  <dd>
    <p><!-- CL 226203 -->
      <a href="/pkg/crypto/rsa/#VerifyPKCS1v15"><code>VerifyPKCS1v15</code></a>
      now rejects invalid short signatures with missing leading zeroes, according to RFC 8017.
    </p>
  </dd>
</dl><!-- crypto/rsa -->

<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
  <dd>
    <p><!-- CL 214977 -->
      The new
      <a href="/pkg/crypto/tls/#Dialer"><code>Dialer</code></a>
      type and its
      <a href="/pkg/crypto/tls/#Dialer.DialContext"><code>DialContext</code></a>
      method permit using a context to both connect and handshake with a TLS server.
    </p>

    <p><!-- CL 229122 -->
      The new
      <a href="/pkg/crypto/tls/#Config.VerifyConnection"><code>VerifyConnection</code></a>
      callback on the <a href="/pkg/crypto/tls/#Config"><code>Config</code></a> type
      allows custom verification logic for every connection. It has access to the
      <a href="/pkg/crypto/tls/#ConnectionState"><code>ConnectionState</code></a>
      which includes peer certificates, SCTs, and stapled OCSP responses.
    </p>

    <p><!-- CL 230679 -->
      Auto-generated session ticket keys are now automatically rotated every 24 hours,
      with a lifetime of 7 days, to limit their impact on forward secrecy.
    </p>

    <p><!-- CL 231317 -->
      Session ticket lifetimes in TLS 1.2 and earlier, where the session keys
      are reused for resumed connections, are now limited to 7 days, also to
      limit their impact on forward secrecy.
    </p>

    <p><!-- CL 231038 -->
      The client-side downgrade protection checks specified in RFC 8446 are now
      enforced. This has the potential to cause connection errors for clients
      encountering middleboxes that behave like unauthorized downgrade attacks.
    </p>

    <p><!-- CL 208226 -->
      <a href="/pkg/crypto/tls/#SignatureScheme"><code>SignatureScheme</code></a>,
      <a href="/pkg/crypto/tls/#CurveID"><code>CurveID</code></a>, and
      <a href="/pkg/crypto/tls/#ClientAuthType"><code>ClientAuthType</code></a>
      now implement <a href="/pkg/fmt/#Stringer"><code>fmt.Stringer</code></a>.
    </p>

    <p><!-- CL 236737 -->
      The <a href="/pkg/crypto/tls/#ConnectionState"><code>ConnectionState</code></a>
      fields <code>OCSPResponse</code> and <code>SignedCertificateTimestamps</code>
      are now repopulated on client-side resumed connections.
    </p>

    <p><!-- CL 227840 -->
      <a href="/pkg/crypto/tls/#Conn"><code>tls.Conn</code></a>
      now returns an opaque error on permanently broken connections, wrapping
      the temporary
      <a href="/pkg/net/http/#Error"><code>net.Error</code></a>. To access the
      original <code>net.Error</code>, use
      <a href="/pkg/errors/#As"><code>errors.As</code></a> (or
      <a href="/pkg/errors/#Unwrap"><code>errors.Unwrap</code></a>) instead of a
      type assertion.
    </p>
  </dd>
</dl><!-- crypto/tls -->

<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
  <dd>
    <p><!-- CL 231378, CL 231380, CL 231381 -->
      If either the name on the certificate or the name being verified (with
      <a href="/pkg/crypto/x509/#VerifyOptions.DNSName"><code>VerifyOptions.DNSName</code></a>
      or <a href="/pkg/crypto/x509/#Certificate.VerifyHostname"><code>VerifyHostname</code></a>)
      are invalid, they will now be compared case-insensitively without further
      processing (without honoring wildcards or stripping trailing dots).
      Invalid names include those with any characters other than letters,
      digits, hyphens and underscores, those with empty labels, and names on
      certificates with trailing dots.
    </p>

    <p><!-- CL 217298 -->
      The new <a href="/pkg/crypto/x509/#CreateRevocationList"><code>CreateRevocationList</code></a>
      function and <a href="/pkg/crypto/x509/#RevocationList"><code>RevocationList</code></a> type
      allow creating RFC 5280-compliant X.509 v2 Certificate Revocation Lists.
    </p>

    <p><!-- CL 227098 -->
      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
      now automatically generates the <code>SubjectKeyId</code> if the template
      is a CA and doesn't explicitly specify one.
    </p>

    <p><!-- CL 228777 -->
      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
      now returns an error if the template specifies <code>MaxPathLen</code> but is not a CA.
    </p>

    <p><!-- CL 205237 -->
      On Unix systems other than macOS, the <code>SSL_CERT_DIR</code>
      environment variable can now be a colon-separated list.
    </p>

    <p><!-- CL 227037 -->
      On macOS, binaries are now always linked against
      <code>Security.framework</code> to extract the system trust roots,
      regardless of whether cgo is available. The resulting behavior should be
      more consistent with the OS verifier.
    </p>
  </dd>
</dl><!-- crypto/x509 -->

<dl id="crypto/x509/pkix"><dt><a href="/pkg/crypto/x509/pkix/">crypto/x509/pkix</a></dt>
  <dd>
    <p><!-- CL 229864, CL 240543 -->
      <a href="/pkg/crypto/x509/pkix/#Name.String"><code>Name.String</code></a>
      now prints non-standard attributes from
      <a href="/pkg/crypto/x509/pkix/#Name.Names"><code>Names</code></a> if
      <a href="/pkg/crypto/x509/pkix/#Name.ExtraNames"><code>ExtraNames</code></a> is nil.
    </p>
  </dd>
</dl><!-- crypto/x509/pkix -->

<dl id="database/sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
  <dd>
    <p><!-- CL 145758 -->
      The new <a href="/pkg/database/sql/#DB.SetConnMaxIdleTime"><code>DB.SetConnMaxIdleTime</code></a>
      method allows removing a connection from the connection pool after
      it has been idle for a period of time, without regard to the total
      lifespan of the connection.  The <a href="/pkg/database/sql/#DBStats.MaxIdleTimeClosed"><code>DBStats.MaxIdleTimeClosed</code></a>
      field shows the total number of connections closed due to
      <code>DB.SetConnMaxIdleTime</code>.
    </p>

    <p><!-- CL 214317 -->
      The new <a href="/pkg/database/sql/#Row.Err"><code>Row.Err</code></a> getter
      allows checking for query errors without calling
      <code>Row.Scan</code>.
    </p>
  </dd>
</dl><!-- database/sql -->

<dl id="database/sql/driver"><dt><a href="/pkg/database/sql/driver/">database/sql/driver</a></dt>
  <dd>
    <p><!-- CL 174122 -->
      The new <a href="/pkg/database/sql/driver/#Validator"><code>Validator</code></a>
      interface may be implemented by <code>Conn</code> to allow drivers
      to signal if a connection is valid or if it should be discarded.
    </p>
  </dd>
</dl><!-- database/sql/driver -->

<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
  <dd>
    <p><!-- CL 222637 -->
      The package now defines the
      <code>IMAGE_FILE</code>, <code>IMAGE_SUBSYSTEM</code>,
      and <code>IMAGE_DLLCHARACTERISTICS</code> constants used by the
      PE file format.
    </p>
  </dd>
</dl><!-- debug/pe -->

<dl id="encoding/asn1"><dt><a href="/pkg/encoding/asn1/">encoding/asn1</a></dt>
  <dd>
    <p><!-- CL 226984 -->
      <a href="/pkg/encoding/asn1/#Marshal"><code>Marshal</code></a> now sorts the components
      of SET OF according to X.690 DER.
    </p>

    <p><!-- CL 227320 -->
      <a href="/pkg/encoding/asn1/#Unmarshal"><code>Unmarshal</code></a> now rejects tags and
      Object Identifiers which are not minimally encoded according to X.690 DER.
    </p>
  </dd>
</dl><!-- encoding/asn1 -->

<dl id="encoding/json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
  <dd>
    <p><!-- CL 199837 -->
      The package now has an internal limit to the maximum depth of
      nesting when decoding. This reduces the possibility that a
      deeply nested input could use large quantities of stack memory,
      or even cause a "goroutine stack exceeds limit" panic.
    </p>
  </dd>
</dl><!-- encoding/json -->

<dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
  <dd>
    <p><!-- CL 221427 -->
      When the <code>flag</code> package sees <code>-h</code> or <code>-help</code>,
      and those flags are not defined, it now prints a usage message.
      If the <a href="/pkg/flag/#FlagSet"><code>FlagSet</code></a> was created with
      <a href="/pkg/flag/#ExitOnError"><code>ExitOnError</code></a>,
      <a href="/pkg/flag/#FlagSet.Parse"><code>FlagSet.Parse</code></a> would then
      exit with a status of 2. In this release, the exit status for <code>-h</code>
      or <code>-help</code> has been changed to 0. In particular, this applies to
      the default handling of command line flags.
    </p>
  </dd>
</dl>

<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
  <dd>
    <p><!-- CL 215001 -->
      The printing verbs <code>%#g</code> and <code>%#G</code> now preserve
      trailing zeros for floating-point values.
    </p>
  </dd>
</dl><!-- fmt -->

<dl id="go/format"><dt><a href="/pkg/go/format/">go/format</a></dt>
  <dd>
    <p><!-- golang.org/issue/37476, CL 231461, CL 240683 -->
      The <a href="/pkg/go/format/#Source"><code>Source</code></a> and
      <a href="/pkg/go/format/#Node"><code>Node</code></a> functions
      now canonicalize number literal prefixes and exponents as part
      of formatting Go source code. This matches the behavior of the
      <a href="/pkg/cmd/gofmt/"><code>gofmt</code></a> command as it
      was implemented <a href="/doc/go1.13#gofmt">since Go 1.13</a>.
    </p>
  </dd>
</dl><!-- go/format -->

<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
  <dd>
    <p><!-- CL 226097 -->
      The package now uses Unicode escapes (<code>\uNNNN</code>) in all
      JavaScript and JSON contexts. This fixes escaping errors in
      <code>application/ld+json</code> and <code>application/json</code>
      contexts.
    </p>
  </dd>
</dl><!-- html/template -->

<dl id="io/ioutil"><dt><a href="/pkg/io/ioutil/">io/ioutil</a></dt>
  <dd>
    <p><!-- CL 212597 -->
      <a href="/pkg/io/ioutil/#TempDir"><code>TempDir</code></a> and
      <a href="/pkg/io/ioutil/#TempFile"><code>TempFile</code></a>
      now reject patterns that contain path separators.
      That is, calls such as <code>ioutil.TempFile("/tmp",</code> <code>"../base*")</code> will no longer succeed.
      This prevents unintended directory traversal.
    </p>
  </dd>
</dl><!-- io/ioutil -->

<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
  <dd>
    <p><!-- CL 230397 -->
      The new <a href="/pkg/math/big/#Int.FillBytes"><code>Int.FillBytes</code></a>
      method allows serializing to fixed-size pre-allocated byte slices.
    </p>
  </dd>
</dl><!-- math/big -->

<dl id="math/cmplx"><dt><a href="/pkg/math/cmplx/">math/cmplx</a></dt>
  <dd>
    <p><!-- CL 220689 -->
      The functions in this package were updated to conform to the C99 standard
      (Annex G IEC 60559-compatible complex arithmetic) with respect to handling
      of special arguments such as infinity, NaN and signed zero.
    </p>
  </dd>
</dl><!-- math/cmplx-->

<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
  <dd>
    <p><!-- CL 228645 -->
      If an I/O operation exceeds a deadline set by
      the <a href="/pkg/net/#Conn"><code>Conn.SetDeadline</code></a>,
      <code>Conn.SetReadDeadline</code>,
      or <code>Conn.SetWriteDeadline</code> methods, it will now
      return an error that is or wraps
      <a href="/pkg/os/#ErrDeadlineExceeded"><code>os.ErrDeadlineExceeded</code></a>.
      This may be used to reliably detect whether an error is due to
      an exceeded deadline.
      Earlier releases recommended calling the <code>Timeout</code>
      method on the error, but I/O operations can return errors for
      which <code>Timeout</code> returns <code>true</code> although a
      deadline has not been exceeded.
    </p>

    <p><!-- CL 228641 -->
      The new <a href="/pkg/net/#Resolver.LookupIP"><code>Resolver.LookupIP</code></a>
      method supports IP lookups that are both network-specific and accept a context.
    </p>
  </dd>
</dl>

<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
  <dd>
    <p><!-- CL 231418, CL 231419 -->
      Parsing is now stricter as a hardening measure against request smuggling attacks:
      non-ASCII white space is no longer trimmed like SP and HTAB, and support for the
      "<code>identity</code>" <code>Transfer-Encoding</code> was dropped.
    </p>
  </dd>
</dl><!-- net/http -->

<dl id="net/http/httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
  <dd>
    <p><!-- CL 230937 -->
      <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
      now supports not modifying the <code>X-Forwarded-For</code>
      header when the incoming <code>Request.Header</code> map entry
      for that field is <code>nil</code>.
    </p>

    <p><!-- CL 224897 -->
      When a Switching Protocol (like WebSocket) request handled by
      <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
      is canceled, the backend connection is now correctly closed.
    </p>
  </dd>
</dl>

<dl id="net/http/pprof"><dt><a href="/pkg/net/http/pprof/">net/http/pprof</a></dt>
  <dd>
    <p><!-- CL 147598, CL 229537 -->
      All profile endpoints now support a "<code>seconds</code>" parameter. When present,
      the endpoint profiles for the specified number of seconds and reports the difference.
      The meaning of the "<code>seconds</code>" parameter in the <code>cpu</code> profile and
      the trace endpoints is unchanged.
    </p>
  </dd>
</dl>

<dl id="net/url"><dt><a href="/pkg/net/url/">net/url</a></dt>
  <dd>
    <p><!-- CL 227645 -->
      The new <a href="/pkg/net/url/#URL"><code>URL</code></a> field
      <code>RawFragment</code> and method <a href="/pkg/net/url/#URL.EscapedFragment"><code>EscapedFragment</code></a>
      provide detail about and control over the exact encoding of a particular fragment.
      These are analogous to
      <code>RawPath</code> and <a href="/pkg/net/url/#URL.EscapedPath"><code>EscapedPath</code></a>.
    </p>
    <p><!-- CL 207082 -->
      The new <a href="/pkg/net/url/#URL"><code>URL</code></a>
      method <a href="/pkg/net/url/#URL.Redacted"><code>Redacted</code></a>
      returns the URL in string form with any password replaced with <code>xxxxx</code>.
    </p>
  </dd>
</dl>

<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
  <dd>
    <p><!-- CL -->
      If an I/O operation exceeds a deadline set by
      the <a href="/pkg/os/#File.SetDeadline"><code>File.SetDeadline</code></a>,
      <a href="/pkg/os/#File.SetReadDeadline"><code>File.SetReadDeadline</code></a>,
      or <a href="/pkg/os/#File.SetWriteDeadline"><code>File.SetWriteDeadline</code></a>
      methods, it will now return an error that is or wraps
      <a href="/pkg/os/#ErrDeadlineExceeded"><code>os.ErrDeadlineExceeded</code></a>.
      This may be used to reliably detect whether an error is due to
      an exceeded deadline.
      Earlier releases recommended calling the <code>Timeout</code>
      method on the error, but I/O operations can return errors for
      which <code>Timeout</code> returns <code>true</code> although a
      deadline has not been exceeded.
    </p>

    <p><!-- CL 232862 -->
      Packages <code>os</code> and <code>net</code> now automatically
      retry system calls that fail with <code>EINTR</code>. Previously
      this led to spurious failures, which became more common in Go
      1.14 with the addition of asynchronous preemption. Now this is
      handled transparently.
    </p>

    <p><!-- CL 229101 -->
      The <a href="/pkg/os/#File"><code>os.File</code></a> type now
      supports a <a href="/pkg/os/#File.ReadFrom"><code>ReadFrom</code></a>
      method. This permits the use of the <code>copy_file_range</code>
      system call on some systems when using
      <a href="/pkg/io/#Copy"><code>io.Copy</code></a> to copy data
      from one <code>os.File</code> to another. A consequence is that
      <a href="/pkg/io/#CopyBuffer"><code>io.CopyBuffer</code></a>
      will not always use the provided buffer when copying to a
      <code>os.File</code>. If a program wants to force the use of
      the provided buffer, it can be done by writing
      <code>io.CopyBuffer(struct{ io.Writer }{dst}, src, buf)</code>.
    </p>
  </dd>
</dl>

<dl id="plugin"><dt><a href="/pkg/plugin/">plugin</a></dt>
  <dd>
    <p><!-- CL 182959 -->
      DWARF generation is now supported (and enabled by default) for <code>-buildmode=plugin</code> on macOS.
    </p>
  </dd>
  <dd>
    <p><!-- CL 191617 -->
      Building with <code>-buildmode=plugin</code> is now supported on <code>freebsd/amd64</code>.
    </p>
  </dd>
</dl>

<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
  <dd>
    <p><!-- CL 228902 -->
      Package <code>reflect</code> now disallows accessing methods of all
      non-exported fields, whereas previously it allowed accessing
      those of non-exported, embedded fields. Code that relies on the
      previous behavior should be updated to instead access the
      corresponding promoted method of the enclosing variable.
    </p>
  </dd>
</dl>

<dl id="regexp"><dt><a href="/pkg/regexp/">regexp</a></dt>
  <dd>
    <p><!-- CL 187919 -->
      The new <a href="/pkg/regexp/#Regexp.SubexpIndex"><code>Regexp.SubexpIndex</code></a>
      method returns the index of the first subexpression with the given name
      within the regular expression.
    </p>
  </dd>
</dl><!-- regexp -->

<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
  <dd>
    <p><!-- CL 216557 -->
      Several functions, including
      <a href="/pkg/runtime/#ReadMemStats"><code>ReadMemStats</code></a>
      and
      <a href="/pkg/runtime/#GoroutineProfile"><code>GoroutineProfile</code></a>,
      no longer block if a garbage collection is in progress.
    </p>
  </dd>
</dl>

<dl id="pkg-runtime-pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
  <dd>
    <p><!-- CL 189318 -->
      The goroutine profile now includes the profile labels associated with each
      goroutine at the time of profiling. This feature is not yet implemented for
      the profile reported with <code>debug=2</code>.
    </p>
  </dd>
</dl>

<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
  <dd>
    <p><!-- CL 216617 -->
      <a href="/pkg/strconv/#FormatComplex"><code>FormatComplex</code></a> and <a href="/pkg/strconv/#ParseComplex"><code>ParseComplex</code></a> are added for working with complex numbers.
    </p>
    <p>
      <a href="/pkg/strconv/#FormatComplex"><code>FormatComplex</code></a> converts a complex number into a string of the form (a+bi), where a and b are the real and imaginary parts.
    </p>
    <p>
      <a href="/pkg/strconv/#ParseComplex"><code>ParseComplex</code></a> converts a string into a complex number of a specified precision. <code>ParseComplex</code> accepts complex numbers in the format <code>N+Ni</code>.
    </p>
  </dd>
</dl><!-- strconv -->

<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
  <dd>
    <p><!-- CL 205899, golang.org/issue/33762 -->
      The new method
      <a href="/pkg/sync/#Map.LoadAndDelete"><code>Map.LoadAndDelete</code></a>
      atomically deletes a key and returns the previous value if present.
    </p>
    <p><!-- CL 205899 -->
      The method
      <a href="/pkg/sync/#Map.Delete"><code>Map.Delete</code></a>
      is more efficient.
    </p>
  </dd>
</dl><!-- sync -->

<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
  <dd>
    <p><!-- CL 231638 -->
      On Unix systems, functions that use
      <a href="/pkg/syscall/#SysProcAttr"><code>SysProcAttr</code></a>
      will now reject attempts to set both the <code>Setctty</code>
      and <code>Foreground</code> fields, as they both use
      the <code>Ctty</code> field but do so in incompatible ways.
      We expect that few existing programs set both fields.
    </p>
    <p>
      Setting the <code>Setctty</code> field now requires that the
      <code>Ctty</code> field be set to a file descriptor number in the
      child process, as determined by the <code>ProcAttr.Files</code> field.
      Using a child descriptor always worked, but there were certain
      cases where using a parent file descriptor also happened to work.
      Some programs that set <code>Setctty</code> will need to change
      the value of <code>Ctty</code> to use a child descriptor number.
    </p>

    <p><!-- CL 220578 -->
      It is <a href="/pkg/syscall/#Proc.Call">now possible</a> to call
      system calls that return floating point values
      on <code>windows/amd64</code>.
    </p>
  </dd>
</dl>

<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
  <dd>
    <p><!-- golang.org/issue/28135 -->
      The <code>testing.T</code> type now has a
      <a href="/pkg/testing/#T.Deadline"><code>Deadline</code></a> method
      that reports the time at which the test binary will have exceeded its
      timeout.
    </p>

    <p><!-- golang.org/issue/34129 -->
      A <code>TestMain</code> function is no longer required to call
      <code>os.Exit</code>. If a <code>TestMain</code> function returns,
      the test binary will call <code>os.Exit</code> with the value returned
      by <code>m.Run</code>.
    </p>

    <p><!-- CL 226877, golang.org/issue/35998 -->
       The new methods
       <a href="/pkg/testing/#T.TempDir"><code>T.TempDir</code></a> and
       <a href="/pkg/testing/#B.TempDir"><code>B.TempDir</code></a>
       return temporary directories that are automatically cleaned up
       at the end of the test.
    </p>

    <p><!-- CL 229085 -->
      <code>go</code> <code>test</code> <code>-v</code> now groups output by
      test name, rather than printing the test name on each line.
    </p>
  </dd>
</dl><!-- testing -->

<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
  <dd>
    <p><!-- CL 226097 -->
      <a href="/pkg/text/template/#JSEscape"><code>JSEscape</code></a> now
      consistently uses Unicode escapes (<code>\u00XX</code>), which are
      compatible with JSON.
    </p>
  </dd>
</dl><!-- text/template -->

<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
  <dd>
    <p><!-- CL 220424, CL 217362, golang.org/issue/33184 -->
       The new method
       <a href="/pkg/time/#Ticker.Reset"><code>Ticker.Reset</code></a>
       supports changing the duration of a ticker.
    </p>

    <p><!-- CL 227878 -->
      When returning an error, <a href="/pkg/time/#ParseDuration"><code>ParseDuration</code></a> now quotes the original value.
    </p>
  </dd>
</dl><!-- time -->
