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

<p>
  The latest Go release, version 1.13, arrives six months after <a href="go1.12">Go 1.12</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>
  As of Go 1.13, the go command by default downloads and authenticates
  modules using the Go module mirror and Go checksum database run by Google. See
  <a href="https://proxy.golang.org/privacy">https://proxy.golang.org/privacy</a>
  for privacy information about these services and the
  <a href="/cmd/go/#hdr-Module_downloading_and_verification">go command documentation</a>
  for configuration details including how to disable the use of these servers or use
  different ones. If you depend on non-public modules, see the
  <a href="/cmd/go/#hdr-Module_configuration_for_non_public_modules">documentation for configuring your environment</a>.
</p>

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

<p>
  Per the <a href="https://github.com/golang/proposal/blob/master/design/19308-number-literals.md">number literal proposal</a>,
  Go 1.13 supports a more uniform and modernized set of number literal prefixes.
  <ul>
    <li>
      <a href="/ref/spec#Integer_literals">Binary integer literals</a>:
      The prefix <code>0b</code> or <code>0B</code> indicates a binary integer literal
      such as <code>0b1011</code>.
    </li>

    <li>
      <a href="/ref/spec#Integer_literals">Octal integer literals</a>:
      The prefix <code>0o</code> or <code>0O</code> indicates an octal integer literal
      such as <code>0o660</code>.
      The existing octal notation indicated by a leading <code>0</code> followed by
      octal digits remains valid.
    </li>

    <li>
      <a href="/ref/spec#Floating-point_literals">Hexadecimal floating point literals</a>:
      The prefix <code>0x</code> or <code>0X</code> may now be used to express the mantissa of a
      floating-point number in hexadecimal format such as <code>0x1.0p-1021</code>.
      A hexadecimal floating-point number must always have an exponent, written as the letter
      <code>p</code> or <code>P</code> followed by an exponent in decimal. The exponent scales
      the mantissa by 2 to the power of the exponent.
    </li>

    <li>
      <a href="/ref/spec#Imaginary_literals">Imaginary literals</a>:
      The imaginary suffix <code>i</code> may now be used with any (binary, decimal, hexadecimal)
      integer or floating-point literal.
    </li>

    <li>
      Digit separators:
      The digits of any number literal may now be separated (grouped) using underscores, such as
      in <code>1_000_000</code>, <code>0b_1010_0110</code>, or <code>3.1415_9265</code>.
      An underscore may appear between any two digits or the literal prefix and the first digit.
    </li>
  </ul>
</p>

<p>
  Per the <a href="https://github.com/golang/proposal/blob/master/design/19113-signed-shift-counts.md">signed shift counts proposal</a>
  Go 1.13 removes the restriction that a <a href="/ref/spec#Operators">shift count</a>
  must be unsigned. This change eliminates the need for many artificial <code>uint</code> conversions,
  solely introduced to satisfy this (now removed) restriction of the <code>&lt;&lt;</code> and <code>&gt;&gt;</code> operators.
</p>

<p>
  These language changes were implemented by changes to the compiler, and corresponding internal changes to the library
  packages <code><a href="#go/scanner">go/scanner</a></code> and
  <code><a href="#text/scanner">text/scanner</a></code> (number literals),
  and <code><a href="#go/types">go/types</a></code> (signed shift counts).
</p>

<p>
  If your code uses modules and your <code>go.mod</code> files specifies a language version, be sure
  it is set to at least <code>1.13</code> to get access to these language changes.
  You can do this by editing the <code>go.mod</code> file directly, or you can run
  <code>go mod edit -go=1.13</code>.
</p>

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

<p id="nacl">
  Go 1.13 is the last release that will run on Native Client (NaCl).
</p>

<p><!-- CL 170119, CL 168882 -->
  For <code>GOARCH=wasm</code>, the new environment variable <code>GOWASM</code> takes a comma-separated list of experimental features that the binary gets compiled with.
  The valid values are documented <a href="/cmd/go/#hdr-Environment_variables">here</a>.
</p>

<h3 id="aix">AIX</h3>

<p><!-- CL 164003, CL 169120 -->
  AIX on PPC64 (<code>aix/ppc64</code>) now supports cgo, external
  linking, and the <code>c-archive</code> and <code>pie</code> build
  modes.
</p>

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

<p><!-- CL 170127 -->
  Go programs are now compatible with Android 10.
</p>

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

<p>
  As <a href="go1.12#darwin">announced</a> in the Go 1.12 release notes,
  Go 1.13 now requires macOS 10.11 El Capitan or later;
  support for previous versions has been discontinued.
</p>

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

<p>
  As <a href="go1.12#freebsd">announced</a> in the Go 1.12 release notes,
  Go 1.13 now requires FreeBSD 11.2 or later;
  support for previous versions has been discontinued.
  FreeBSD 12.0 or later requires a kernel with the <code>COMPAT_FREEBSD11</code>
  option set (this is the default).
</p>

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

<p><!-- CL 174457 -->
  Go now supports Illumos with <code>GOOS=illumos</code>.
  The <code>illumos</code> build tag implies the <code>solaris</code>
  build tag.
</p>

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

<p><!-- CL 178977 -->
  The Windows version specified by internally-linked Windows binaries
  is now Windows 7 rather than NT 4.0. This was already the minimum
  required version for Go, but can affect the behavior of system calls
  that have a backwards-compatibility mode. These will now behave as
  documented. Externally-linked binaries (any program using cgo) have
  always specified a more recent Windows version.
</p>

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

<h3 id="modules">Modules</h3>

<h4 id="proxy-vars">Environment variables</h4>

<p><!-- CL 176580 -->
  The <a href="/cmd/go/#hdr-Module_support"><code>GO111MODULE</code></a>
  environment variable continues to default to <code>auto</code>, but
  the <code>auto</code> setting now activates the module-aware mode of
  the <code>go</code> command whenever the current working directory contains,
  or is below a directory containing, a <code>go.mod</code> file — even if the
  current directory is within <code>GOPATH/src</code>. This change simplifies
  the migration of existing code within <code>GOPATH/src</code> and the ongoing
  maintenance of module-aware packages alongside non-module-aware importers.
</p>

<p><!-- CL 181719 -->
  The new
  <a href="/cmd/go/#hdr-Module_configuration_for_non_public_modules"><code>GOPRIVATE</code></a>
  environment variable indicates module paths that are not publicly available.
  It serves as the default value for the lower-level <code>GONOPROXY</code>
  and <code>GONOSUMDB</code> variables, which provide finer-grained control over
  which modules are fetched via proxy and verified using the checksum database.
</p>

<p><!-- CL 173441, CL 177958 -->
  The <a href="/cmd/go/#hdr-Module_downloading_and_verification"><code>GOPROXY</code>
  environment variable</a> may now be set to a comma-separated list of proxy
  URLs or the special token <code>direct</code>, and
  its <a href="#introduction">default value</a> is
  now <code>https://proxy.golang.org,direct</code>. When resolving a package
  path to its containing module, the <code>go</code> command will try all
  candidate module paths on each proxy in the list in succession. An unreachable
  proxy or HTTP status code other than 404 or 410 terminates the search without
  consulting the remaining proxies.
</p>

<p>
  The new
  <a href="/cmd/go/#hdr-Module_authentication_failures"><code>GOSUMDB</code></a>
  environment variable identifies the name, and optionally the public key and
  server URL, of the database to consult for checksums of modules that are not
  yet listed in the main module's <code>go.sum</code> file.
  If <code>GOSUMDB</code> does not include an explicit URL, the URL is chosen by
  probing the <code>GOPROXY</code> URLs for an endpoint indicating support for
  the checksum database, falling back to a direct connection to the named
  database if it is not supported by any proxy. If <code>GOSUMDB</code> is set
  to <code>off</code>, the checksum database is not consulted and only the
  existing checksums in the <code>go.sum</code> file are verified.
</p>

<p>
  Users who cannot reach the default proxy and checksum database (for example,
  due to a firewalled or sandboxed configuration) may disable their use by
  setting <code>GOPROXY</code> to <code>direct</code>, and/or
  <code>GOSUMDB</code> to <code>off</code>.
  <a href="#go-env-w"><code>go</code> <code>env</code> <code>-w</code></a>
  can be used to set the default values for these variables independent of
  platform:
</p>
<pre>
go env -w GOPROXY=direct
go env -w GOSUMDB=off
</pre>

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

<p><!-- CL 174099 -->
  In module-aware mode,
  <a href="/cmd/go/#hdr-Add_dependencies_to_current_module_and_install_them"><code>go</code> <code>get</code></a>
  with the <code>-u</code> flag now updates a smaller set of modules that is
  more consistent with the set of packages updated by
  <code>go</code> <code>get</code> <code>-u</code> in GOPATH mode.
  <code>go</code> <code>get</code> <code>-u</code> continues to update the
  modules and packages named on the command line, but additionally updates only
  the modules containing the packages <em>imported by</em> the named packages,
  rather than the transitive module requirements of the modules containing the
  named packages.
</p>

<p>
  Note in particular that <code>go</code> <code>get</code> <code>-u</code>
  (without additional arguments) now updates only the transitive imports of the
  package in the current directory. To instead update all of the packages
  transitively imported by the main module (including test dependencies), use
  <code>go</code> <code>get</code> <code>-u</code> <code>all</code>.
</p>

<p><!-- CL 177879 -->
  As a result of the above changes to
  <code>go</code> <code>get</code> <code>-u</code>, the
  <code>go</code> <code>get</code> subcommand no longer supports
  the <code>-m</code> flag, which caused <code>go</code> <code>get</code> to
  stop before loading packages. The <code>-d</code> flag remains supported, and
  continues to cause <code>go</code> <code>get</code> to stop after downloading
  the source code needed to build dependencies of the named packages.
</p>

<p><!-- CL 177677 -->
  By default, <code>go</code> <code>get</code> <code>-u</code> in module mode
  upgrades only non-test dependencies, as in GOPATH mode. It now also accepts
  the <code>-t</code> flag, which (as in GOPATH mode)
  causes <code>go</code> <code>get</code> to include the packages imported
  by <em>tests of</em> the packages named on the command line.
</p>

<p><!-- CL 167747 -->
  In module-aware mode, the <code>go</code> <code>get</code> subcommand now
  supports the version suffix <code>@patch</code>. The <code>@patch</code>
  suffix indicates that the named module, or module containing the named
  package, should be updated to the highest patch release with the same
  major and minor versions as the version found in the build list.
</p>

<p><!-- CL 184440 -->
  If a module passed as an argument to <code>go</code> <code>get</code>
  without a version suffix is already required at a newer version than the
  latest released version, it will remain at the newer version. This is
  consistent with the behavior of the <code>-u</code> flag for module
  dependencies. This prevents unexpected downgrades from pre-release versions.
  The new version suffix <code>@upgrade</code> explicitly requests this
  behavior. <code>@latest</code> explicitly requests the latest version
  regardless of the current version.
</p>

<h4 id="version-validation">Version validation</h4><!-- CL 181881 -->

<p>
  When extracting a module from a version control system, the <code>go</code>
  command now performs additional validation on the requested version string.
</p>

<p>
  The <code>+incompatible</code> version annotation bypasses the requirement
  of <a href="/cmd/go/#hdr-Module_compatibility_and_semantic_versioning">semantic
  import versioning</a> for repositories that predate the introduction of
  modules. The <code>go</code> command now verifies that such a version does not
  include an explicit <code>go.mod</code> file.
</p>

<p>
  The <code>go</code> command now verifies the mapping
  between <a href="/cmd/go/#hdr-Pseudo_versions">pseudo-versions</a> and
  version-control metadata. Specifically:
  <ul>
    <li>The version prefix must be of the form <code>vX.0.0</code>, or derived
    from a tag on an ancestor of the named revision, or derived from a tag that
    includes <a href="https://semver.org/#spec-item-10">build metadata</a> on
    the named revision itself.</li>

    <li>The date string must match the UTC timestamp of the revision.</li>

    <li>The short name of the revision must use the same number of characters as
    what the <code>go</code> command would generate. (For SHA-1 hashes as used
    by <code>git</code>, a 12-digit prefix.)</li>
  </ul>
</p>

<p>
  If a <code>require</code> directive in the
  <a href="/cmd/go/#hdr-The_main_module_and_the_build_list">main module</a> uses
  an invalid pseudo-version, it can usually be corrected by redacting the
  version to just the commit hash and re-running a <code>go</code> command, such
  as <code>go</code> <code>list</code> <code>-m</code> <code>all</code>
  or <code>go</code> <code>mod</code> <code>tidy</code>. For example,
</p>
<pre>require github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c</pre>
<p>can be redacted to</p>
<pre>require github.com/docker/docker e7b5f7dbe98c</pre>
<p>which currently resolves to</p>
<pre>require github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c</pre>

<p>
  If one of the transitive dependencies of the main module requires an invalid
  version or pseudo-version, the invalid version can be replaced with a valid
  one using a
  <a href="/cmd/go/#hdr-The_go_mod_file"><code>replace</code> directive</a> in
  the <code>go.mod</code> file of the main module. If the replacement is a
  commit hash, it will be resolved to the appropriate pseudo-version as above.
  For example,
</p>
<pre>replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker e7b5f7dbe98c</pre>
<p>currently resolves to</p>
<pre>replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c</pre>

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

<p id="go-env-w"><!-- CL 171137 -->
  The <a href="/cmd/go/#hdr-Environment_variables"><code>go</code> <code>env</code></a>
  command now accepts a <code>-w</code> flag to set the per-user default value
  of an environment variable recognized by the
  <code>go</code> command, and a corresponding <code>-u</code> flag to unset a
  previously-set default. Defaults set via
  <code>go</code> <code>env</code> <code>-w</code> are stored in the
  <code>go/env</code> file within
  <a href="/pkg/os/#UserConfigDir"><code>os.UserConfigDir()</code></a>.
</p>

<p id="go-version-exe"><!-- CL 173343 -->
  The <a href="/cmd/go/#hdr-Print_Go_version">
  <code>go</code> <code>version</code></a> command now accepts arguments naming
  executables and directories. When invoked on an executable,
  <code>go</code> <code>version</code> prints the version of Go used to build
  the executable. If the <code>-m</code> flag is used,
  <code>go</code> <code>version</code> prints the executable's embedded module
  version information, if available. When invoked on a directory,
  <code>go</code> <code>version</code> prints information about executables
  contained in the directory and its subdirectories.
</p>

<p id="trimpath"><!-- CL 173345 -->
  The new <a href="/cmd/go/#hdr-Compile_packages_and_dependencies"><code>go</code>
  <code>build</code> flag</a> <code>-trimpath</code> removes all file system paths
  from the compiled executable, to improve build reproducibility.
</p>

<p id="o-dir"><!-- CL 167679 -->
  If the <code>-o</code> flag passed to <code>go</code> <code>build</code>
  refers to an existing directory, <code>go</code> <code>build</code> will now
  write executable files within that directory for <code>main</code> packages
  matching its package arguments.
</p>

<p id="comma-separated-tags"><!-- CL 173438 -->
  The <code>go</code> <code>build</code> flag <code>-tags</code> now takes a
  comma-separated list of build tags, to allow for multiple tags in
  <a href="/cmd/go/#hdr-Environment_variables"><code>GOFLAGS</code></a>. The
  space-separated form is deprecated but still recognized and will be maintained.
</p>

<p id="go-generate-tag"><!-- CL 175983 -->
  <a href="/cmd/go/#hdr-Generate_Go_files_by_processing_source"><code>go</code>
  <code>generate</code></a> now sets the <code>generate</code> build tag so that
  files may be searched for directives but ignored during build.
</p>

<p id="binary-only"><!-- CL 165746 -->
  As <a href="/doc/go1.12#binary-only">announced</a> in the Go 1.12 release
  notes, binary-only packages are no longer supported. Building a binary-only
  package (marked with a <code>//go:binary-only-package</code> comment) now
  results in an error.
</p>

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

<p><!-- CL 170448 -->
  The compiler has a new implementation of escape analysis that is
  more precise. For most Go code should be an improvement (in other
  words, more Go variables and expressions allocated on the stack
  instead of heap). However, this increased precision may also break
  invalid code that happened to work before (for example, code that
  violates
  the <a href="/pkg/unsafe/#Pointer"><code>unsafe.Pointer</code>
  safety rules</a>). If you notice any regressions that appear
  related, the old escape analysis pass can be re-enabled
  with <code>go</code> <code>build</code> <code>-gcflags=all=-newescape=false</code>.
  The option to use the old escape analysis will be removed in a
  future release.
</p>

<p><!-- CL 161904 -->
  The compiler no longer emits floating point or complex constants
  to <code>go_asm.h</code> files. These have always been emitted in a
  form that could not be used as numeric constant in assembly code.
</p>

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

<p><!-- CL 157001 -->
  The assembler now supports many of the atomic instructions
  introduced in ARM v8.1.
</p>

<h3 id="gofmt">gofmt</h3>

<p>
  <code>gofmt</code> (and with that <code>go fmt</code>) now canonicalizes
  number literal prefixes and exponents to use lower-case letters, but
  leaves hexadecimal digits alone. This improves readability when using the new octal prefix
  (<code>0O</code> becomes <code>0o</code>), and the rewrite is applied consistently.
  <code>gofmt</code> now also removes unnecessary leading zeroes from a decimal integer
  imaginary literal. (For backwards-compatibility, an integer imaginary literal
  starting with <code>0</code> is considered a decimal, not an octal number.
  Removing superfluous leading zeroes avoids potential confusion.)
  For instance, <code>0B1010</code>, <code>0XabcDEF</code>, <code>0O660</code>,
  <code>1.2E3</code>, and <code>01i</code> become <code>0b1010</code>, <code>0xabcDEF</code>,
  <code>0o660</code>, <code>1.2e3</code>, and <code>1i</code> after applying <code>gofmt</code>.
</p>

<h3 id="godoc"><code>godoc</code> and <code>go</code> <code>doc</code></h3>

<p><!-- CL 174322 -->
  The <code>godoc</code> webserver is no longer included in the main binary distribution.
  To run the <code>godoc</code> webserver locally, manually install it first:
<pre>
go get golang.org/x/tools/cmd/godoc
godoc
</pre>
</p>

<p><!-- CL 177797 -->
  The
  <a href="/cmd/go/#hdr-Show_documentation_for_package_or_symbol"><code>go</code> <code>doc</code></a>
  command now always includes the package clause in its output, except for
  commands. This replaces the previous behavior where a heuristic was used,
  causing the package clause to be omitted under certain conditions.
</p>

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

<p><!-- CL 161477 -->
  Out of range panic messages now include the index that was out of
  bounds and the length (or capacity) of the slice. For
  example, <code>s[3]</code> on a slice of length 1 will panic with
  "runtime error: index out of range [3] with length 1".
</p>

<p><!-- CL 171758 -->
  This release improves performance of most uses of <code>defer</code>
  by 30%.
</p>

<p><!-- CL 142960 -->
  The runtime is now more aggressive at returning memory to the
  operating system to make it available to co-tenant applications.
  Previously, the runtime could retain memory for five or more minutes
  following a spike in the heap size. It will now begin returning it
  promptly after the heap shrinks. However, on many OSes, including
  Linux, the OS itself reclaims memory lazily, so process RSS will not
  decrease until the system is under memory pressure.
</p>

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

<h3 id="tls_1_3">TLS 1.3</h3>

<p>
  As announced in Go 1.12, Go 1.13 enables support for TLS 1.3 in the
  <code>crypto/tls</code> package by default. It can be disabled by adding the
  value <code>tls13=0</code> to the <code>GODEBUG</code>
  environment variable. The opt-out will be removed in Go 1.14.
</p>

<p>
  See <a href="/doc/go1.12#tls_1_3">the Go 1.12 release notes</a> for important
  compatibility information.
</p>

<h3 id="crypto/ed25519"><a href="/pkg/crypto/ed25519/">crypto/ed25519</a></h3>

<p><!-- CL 174945, 182698 -->
  The new <a href="/pkg/crypto/ed25519/"><code>crypto/ed25519</code></a>
  package implements the Ed25519 signature
  scheme. This functionality was previously provided by the
  <a href="https://godoc.org/golang.org/x/crypto/ed25519"><code>golang.org/x/crypto/ed25519</code></a>
  package, which becomes a wrapper for
  <code>crypto/ed25519</code> when used with Go 1.13+.
</p>

<h3 id="error_wrapping">Error wrapping</h3>

<p><!-- CL 163558, 176998 -->
  Go 1.13 contains support for error wrapping, as first proposed in
  the <a href="https://go.googlesource.com/proposal/+/master/design/29934-error-values.md">
  Error Values proposal</a> and discussed on <a href="https://golang.org/issue/29934">the
  associated issue</a>.
</p>
<p>
  An error <code>e</code> can <em>wrap</em> another error <code>w</code> by providing
  an <code>Unwrap</code> method that returns <code>w</code>. Both <code>e</code>
  and <code>w</code> are available to programs, allowing <code>e</code> to provide
  additional context to <code>w</code> or to reinterpret it while still allowing
  programs to make decisions based on <code>w</code>.
</p>
<p>
  To support wrapping, <a href="#fmt"><code>fmt.Errorf</code></a> now has a <code>%w</code>
  verb for creating wrapped errors, and three new functions in
  the <a href="#errors"><code>errors</code></a> package (
  <a href="/pkg/errors/#Unwrap"><code>errors.Unwrap</code></a>,
  <a href="/pkg/errors/#Is"><code>errors.Is</code></a> and
  <a href="/pkg/errors/#As"><code>errors.As</code></a>) simplify unwrapping
  and inspecting wrapped errors.
</p>
<p>
  For more information, read the <a href="/pkg/errors/"><code>errors</code> package
  documentation</a>, or see
  the <a href="https://golang.org/wiki/ErrorValueFAQ">Error Value FAQ</a>.
  There will soon be a blog post as well.
</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="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
  <dd>
    <p>
      The new <a href="/pkg/bytes/#ToValidUTF8"><code>ToValidUTF8</code></a> function returns a
      copy of a given byte slice with each run of invalid UTF-8 byte sequences replaced by a given slice.
    </p>

</dl><!-- bytes -->

<dl id="context"><dt><a href="/pkg/context/">context</a></dt>
  <dd>
    <p><!-- CL 169080 -->
    The formatting of contexts returned by <a href="/pkg/context/#WithValue"><code>WithValue</code></a> no longer depends on <code>fmt</code> and will not stringify in the same way. Code that depends on the exact previous stringification might be affected.
    </p>

</dl><!-- context -->

<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
  <dd>
    <p>
      Support for SSL version 3.0 (SSLv3) <a href="https://golang.org/issue/32716">
      is now deprecated and will be removed in Go 1.14</a>. Note that SSLv3 is the
      <a href="https://tools.ietf.org/html/rfc7568">cryptographically broken</a>
      protocol predating TLS.
    </p>

    <p>
      SSLv3 was always disabled by default, other than in Go 1.12, when it was
      mistakenly enabled by default server-side. It is now again disabled by
      default. (SSLv3 was never supported client-side.)
    </p>

    <p><!-- CL 177698 -->
      Ed25519 certificates are now supported in TLS versions 1.2 and 1.3.
    </p>

</dl><!-- crypto/tls -->

<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
  <dd>
    <p><!-- CL 175478 -->
      Ed25519 keys are now supported in certificates and certificate requests
      according to <a href="https://www.rfc-editor.org/info/rfc8410">RFC 8410</a>, as well as by the
      <a href="/pkg/crypto/x509/#ParsePKCS8PrivateKey"><code>ParsePKCS8PrivateKey</code></a>,
      <a href="/pkg/crypto/x509/#MarshalPKCS8PrivateKey"><code>MarshalPKCS8PrivateKey</code></a>,
      and <a href="/pkg/crypto/x509/#ParsePKIXPublicKey"><code>ParsePKIXPublicKey</code></a> functions.
    </p>

    <p><!-- CL 169238 -->
      The paths searched for system roots now include <code>/etc/ssl/cert.pem</code>
      to support the default location in Alpine Linux 3.7+.
    </p>

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

<dl id="database/sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
  <dd>
    <p><!-- CL 170699 -->
      The new <a href="/pkg/database/sql/#NullTime"><code>NullTime</code></a> type represents a <code>time.Time</code> that may be null.
    </p>

    <p><!-- CL 174178 -->
      The new  <a href="/pkg/database/sql/#NullInt32"><code>NullInt32</code></a> type represents an <code>int32</code> that may be null.
    </p>

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

<dl id="debug/dwarf"><dt><a href="/pkg/debug/dwarf/">debug/dwarf</a></dt>
  <dd>
    <p><!-- CL 158797 -->
      The <a href="/pkg/debug/dwarf/#Data.Type"><code>Data.Type</code></a>
      method no longer panics if it encounters an unknown DWARF tag in
      the type graph. Instead, it represents that component of the
      type with
      an <a href="/pkg/debug/dwarf/#UnsupportedType"><code>UnsupportedType</code></a>
      object.
    </p>

</dl><!-- debug/dwarf -->

<dl id="errors"><dt><a href="/pkg/errors/">errors</a></dt>
  <dd>
    <!-- CL 163558 -->
    <p>
      The new function <a href="/pkg/errors/#As"><code>As</code></a> finds the first
      error in a given error’s chain (sequence of wrapped errors)
      that matches a given target’s type, and if so, sets the target to that error value.
    </p>
    <p>
      The new function <a href="/pkg/errors/#Is"><code>Is</code></a> reports whether a given error value matches an
      error in another’s chain.
    </p>
    <p>
      The new function <a href="/pkg/errors/#Unwrap"><code>Unwrap</code></a> returns the result of calling
      <code>Unwrap</code> on a given error, if one exists.
    </p>

</dl><!-- errors -->

<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
  <dd>
    <!-- CL 160245 -->
    <p>
      The printing verbs <code>%x</code> and <code>%X</code> now format floating-point and
      complex numbers in hexadecimal notation, in lower-case and upper-case respectively.
    </p>

    <!-- CL 160246 -->
    <p>
      The new printing verb <code>%O</code> formats integers in base 8, emitting the <code>0o</code> prefix.
    </p>

    <!-- CL 160247 -->
    <p>
      The scanner now accepts hexadecimal floating-point values, digit-separating underscores
      and leading <code>0b</code> and <code>0o</code> prefixes.
      See the <a href="#language">Changes to the language</a> for details.
    </p>

    <!-- CL 176998 -->
    <p>The <a href="/pkg/fmt/#Errorf"><code>Errorf</code></a> function
      has a new verb, <code>%w</code>, whose operand must be an error.
      The error returned from <code>Errorf</code> will have an
      <code>Unwrap</code> method which returns the operand of <code>%w</code>.
    </p>

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


<dl id="go/scanner"><dt><a href="/pkg/go/scanner/">go/scanner</a></dt>
  <dd>
    <p><!-- CL 175218 -->
      The scanner has been updated to recognize the new Go number literals, specifically
      binary literals with <code>0b</code>/<code>0B</code> prefix, octal literals with <code>0o</code>/<code>0O</code> prefix,
      and floating-point numbers with hexadecimal mantissa. The imaginary suffix <code>i</code> may now be used with any number
      literal, and underscores may used as digit separators for grouping.
      See the <a href="#language">Changes to the language</a> for details.
  </p>

  </dl><!-- go/scanner -->

<dl id="go/types"><dt><a href="/pkg/go/types/">go/types</a></dt>
  <dd>
    <p>
      The type-checker has been updated to follow the new rules for integer shifts.
      See the <a href="#language">Changes to the language</a> for details.
    </p>

</dl><!-- go/types -->



<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
  <dd>
    <p><!-- CL 175218 -->
      When using a <code>&lt;script&gt;</code> tag with "module" set as the
      type attribute, code will now be interpreted as <a href="https://html.spec.whatwg.org/multipage/scripting.html#the-script-element:module-script-2">JavaScript module script</a>.
    </p>

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

<dl id="log"><dt><a href="/pkg/log/">log</a></dt>
  <dd>
    <p><!-- CL 168920 -->
      The new <a href="/pkg/log/#Writer"><code>Writer</code></a> function returns the output destination for the standard logger.
    </p>

</dl><!-- log -->

<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
  <dd>
    <p><!-- CL 160682 -->
      The new <a href="/pkg/math/big/#Rat.SetUint64"><code>Rat.SetUint64</code></a> method sets the <code>Rat</code> to a <code>uint64</code> value.
    </p>

    <p><!-- CL 166157 -->
      For <a href="/pkg/math/big/#Float.Parse"><code>Float.Parse</code></a>, if base is 0, underscores
      may be used between digits for readability.
      See the <a href="#language">Changes to the language</a> for details.
    </p>

    <p><!-- CL 166157 -->
      For <a href="/pkg/math/big/#Int.SetString"><code>Int.SetString</code></a>, if base is 0, underscores
      may be used between digits for readability.
      See the <a href="#language">Changes to the language</a> for details.
    </p>

    <p><!-- CL 168237 -->
      <a href="/pkg/math/big/#Rat.SetString"><code>Rat.SetString</code></a> now accepts non-decimal floating point representations.
    </p>

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

<dl id="math/bits"><dt><a href="/pkg/math/bits/">math/bits</a></dt>
  <dd>
    <p><!-- CL 178177 -->
      The execution time of <a href="/pkg/math/bits/#Add"><code>Add</code></a>,
      <a href="/pkg/math/bits/#Sub"><code>Sub</code></a>,
      <a href="/pkg/math/bits/#Mul"><code>Mul</code></a>,
      <a href="/pkg/math/bits/#RotateLeft"><code>RotateLeft</code></a>, and
      <a href="/pkg/math/bits/#ReverseBytes"><code>ReverseBytes</code></a> is now
      guaranteed to be independent of the inputs.
    </p>

</dl><!-- math/bits -->

<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
  <dd>
    <p><!-- CL 156366 -->
      On Unix systems where <code>use-vc</code> is set in <code>resolv.conf</code>, TCP is used for DNS resolution.
    </p>

    <p><!-- CL 170678 -->
      The new field <a href="/pkg/net/#ListenConfig.KeepAlive"><code>ListenConfig.KeepAlive</code></a>
      specifies the keep-alive period for network connections accepted by the listener.
      If this field is 0 (the default) TCP keep-alives will be enabled.
      To disable them, set it to a negative value.
    </p>
    <p>
      Note that the error returned from I/O on a connection that was
      closed by a keep-alive timeout will have a
      <code>Timeout</code> method that returns <code>true</code> if called.
      This can make a keep-alive error difficult to distinguish from
      an error returned due to a missed deadline as set by the
      <a href="/pkg/net/#Conn"><code>SetDeadline</code></a>
      method and similar methods.
      Code that uses deadlines and checks for them with
      the <code>Timeout</code> method or
      with <a href="/pkg/os/#IsTimeout"><code>os.IsTimeout</code></a>
      may want to disable keep-alives, or
      use <code>errors.Is(syscall.ETIMEDOUT)</code> (on Unix systems)
      which will return true for a keep-alive timeout and false for a
      deadline timeout.
    </p>

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

<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
  <dd>
    <p><!-- CL 76410 -->
      The new fields <a href="/pkg/net/http/#Transport.WriteBufferSize"><code>Transport.WriteBufferSize</code></a>
      and <a href="/pkg/net/http/#Transport.ReadBufferSize"><code>Transport.ReadBufferSize</code></a>
      allow one to specify the sizes of the write and read buffers for a <a href="/pkg/net/http/#Transport"><code>Transport</code></a>.
      If either field is zero, a default size of 4KB is used.
    </p>

    <p><!-- CL 130256 -->
      The new field <a href="/pkg/net/http/#Transport.ForceAttemptHTTP2"><code>Transport.ForceAttemptHTTP2</code></a>
      controls whether HTTP/2 is enabled when a non-zero <code>Dial</code>, <code>DialTLS</code>, or <code>DialContext</code>
      func or <code>TLSClientConfig</code> is provided.
    </p>

    <p><!-- CL 140357 -->
      <a href="/pkg/net/http/#Transport.MaxConnsPerHost"><code>Transport.MaxConnsPerHost</code></a> now works
      properly with HTTP/2.
    </p>

    <p><!-- CL 154383 -->
      <a href="/pkg/net/http/#TimeoutHandler"><code>TimeoutHandler</code></a>'s
      <a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a> now implements the
      <a href="/pkg/net/http/#Pusher"><code>Pusher</code></a> interface.
    </p>

    <p><!-- CL 157339 -->
      The <code>StatusCode</code> <code>103</code> <code>"Early Hints"</code> has been added.
    </p>

    <p><!-- CL 163599 -->
    <a href="/pkg/net/http/#Transport"><code>Transport</code></a> now uses the <a href="/pkg/net/http/#Request.Body"><code>Request.Body</code></a>'s
    <a href="/pkg/io/#ReaderFrom"><code>io.ReaderFrom</code></a> implementation if available, to optimize writing the body.
    </p>

    <p><!-- CL 167017 -->
      On encountering unsupported transfer-encodings, <a href="/pkg/net/http/#Server"><code>http.Server</code></a> now
      returns a "501 Unimplemented" status as mandated by the HTTP specification <a href="https://tools.ietf.org/html/rfc7230#section-3.3.1">RFC 7230 Section 3.3.1</a>.
    </p>

    <p><!-- CL 167681 -->
      The new <a href="/pkg/net/http/#Server"><code>Server</code></a> fields
      <a href="/pkg/net/http/#Server.BaseContext"><code>BaseContext</code></a> and
      <a href="/pkg/net/http/#Server.ConnContext"><code>ConnContext</code></a>
      allow finer control over the <a href="/pkg/context/#Context"><code>Context</code></a> values provided to requests and connections.
    </p>

    <p><!-- CL 167781 -->
      <a href="/pkg/net/http/#DetectContentType"><code>http.DetectContentType</code></a> now correctly detects RAR signatures, and can now also detect RAR v5 signatures.
    </p>

    <p><!-- CL 173658 -->
      The new <a href="/pkg/net/http/#Header"><code>Header</code></a> method
      <a href="/pkg/net/http/#Header.Clone"><code>Clone</code></a> returns a copy of the receiver.
    </p>

    <p><!-- CL 174324 -->
      A new function <a href="/pkg/net/http/#NewRequestWithContext"><code>NewRequestWithContext</code></a> has been added and it
      accepts a <a href="/pkg/context/#Context"><code>Context</code></a> that controls the entire lifetime of
      the created outgoing <a href="/pkg/net/http/#Request"><code>Request</code></a>, suitable for use with
      <a href="/pkg/net/http/#Client.Do"><code>Client.Do</code></a> and <a href="/pkg/net/http/#Transport.RoundTrip"><code>Transport.RoundTrip</code></a>.
    </p>

    <p><!-- CL 179457 -->
      The <a href="/pkg/net/http/#Transport"><code>Transport</code></a> no longer logs errors when servers
      gracefully shut down idle connections using a <code>"408 Request Timeout"</code> response.
    </p>

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

<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
  <dd>
    <p><!-- CL 160877 -->
      The new <a href="/pkg/os/#UserConfigDir"><code>UserConfigDir</code></a> function
      returns the default directory to use for user-specific configuration data.
    </p>

    <p><!-- CL 166578 -->
      If a <a href="/pkg/os/#File"><code>File</code></a> is opened using the O_APPEND flag, its
      <a href="/pkg/os/#File.WriteAt"><code>WriteAt</code></a> method will always return an error.
    </p>

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

<dl id="os/exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
  <dd>
    <p><!-- CL 174318 -->
      On Windows, the environment for a <a href="/pkg/os/exec/#Cmd"><code>Cmd</code></a> always inherits the
      <code>%SYSTEMROOT%</code> value of the parent process unless the
      <a href="/pkg/os/exec/#Cmd.Env"><code>Cmd.Env</code></a> field includes an explicit value for it.
    </p>

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

<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
  <dd>
    <p><!-- CL 171337 -->
      The new <a href="/pkg/reflect/#Value.IsZero"><code>Value.IsZero</code></a> method reports whether a <code>Value</code> is the zero value for its type.
    </p>

    <p><!-- CL 174531 -->
      The <a href="/pkg/reflect/#MakeFunc"><code>MakeFunc</code></a> function now allows assignment conversions on returned values, instead of requiring exact type match. This is particularly useful when the type being returned is an interface type, but the value actually returned is a concrete value implementing that type.
    </p>

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

<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
  <dd>
    <p> <!-- CL 167780 -->
      Tracebacks, <a href="/pkg/runtime/#Caller"><code>runtime.Caller</code></a>,
      and <a href="/pkg/runtime/#Callers"><code>runtime.Callers</code></a> now refer to the function that
      initializes the global variables of <code>PKG</code>
      as <code>PKG.init</code> instead of <code>PKG.init.ializers</code>.
    </p>

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

<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
  <dd>
    <p><!-- CL 160243 -->
       For <a href="/pkg/strconv/#ParseFloat"><code>strconv.ParseFloat</code></a>,
       <a href="/pkg/strconv/#ParseInt"><code>strconv.ParseInt</code></a>
       and <a href="/pkg/strconv/#ParseUint"><code>strconv.ParseUint</code></a>,
       if base is 0, underscores may be used between digits for readability.
       See the <a href="#language">Changes to the language</a> for details.
    </p>

</dl><!-- strconv -->

<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
  <dd>
    <p><!-- CL 142003 -->
      The new <a href="/pkg/strings/#ToValidUTF8"><code>ToValidUTF8</code></a> function returns a
      copy of a given string with each run of invalid UTF-8 byte sequences replaced by a given string.
    </p>

</dl><!-- strings -->

<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
  <dd>
    <p><!-- CL 148958, CL 148959, CL 152697, CL 152698 -->
      The fast paths of <a href="/pkg/sync/#Mutex.Lock"><code>Mutex.Lock</code></a>, <a href="/pkg/sync/#Mutex.Unlock"><code>Mutex.Unlock</code></a>,
      <a href="/pkg/sync/#RWMutex.Lock"><code>RWMutex.Lock</code></a>, <a href="/pkg/sync/#Mutex.RUnlock"><code>RWMutex.RUnlock</code></a>, and
      <a href="/pkg/sync/#Once.Do"><code>Once.Do</code></a> are now inlined in their callers.
      For the uncontended cases on amd64, these changes make <a href="/pkg/sync/#Once.Do"><code>Once.Do</code></a> twice as fast, and the
      <a href="/pkg/sync/#Mutex"><code>Mutex</code></a>/<a href="/pkg/sync/#RWMutex"><code>RWMutex</code></a> methods up to 10% faster.
    </p>

    <p><!-- CL 166960 -->
      Large <a href="/pkg/sync/#Pool"><code>Pool</code></a> no longer increase stop-the-world pause times.
    </p>

    <p><!-- CL 166961 -->
      <code>Pool</code> no longer needs to be completely repopulated after every GC. It now retains some objects across GCs,
      as opposed to releasing all objects, reducing load spikes for heavy users of <code>Pool</code>.
    </p>

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

<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
  <dd>
    <p><!-- CL 168479 -->
      Uses of <code>_getdirentries64</code> have been removed from
      Darwin builds, to allow Go binaries to be uploaded to the macOS
      App Store.
    </p>

    <p><!-- CL 174197 -->
      The new <code>ProcessAttributes</code> and <code>ThreadAttributes</code> fields in
      <a href="/pkg/syscall/?GOOS=windows#SysProcAttr"><code>SysProcAttr</code></a> have been introduced for Windows,
      exposing security settings when creating new processes.
    </p>

    <p><!-- CL 174320 -->
      <code>EINVAL</code> is no longer returned in zero
      <a href="/pkg/syscall/?GOOS=windows#Chmod"><code>Chmod</code></a> mode on Windows.
    </p>

    <p><!-- CL 191337 -->
      Values of type <code>Errno</code> can be tested against error values in
      the <code>os</code> package,
      like <a href="/pkg/os/#ErrExist"><code>ErrExist</code></a>, using
      <a href="/pkg/errors/#Is"><code>errors.Is</code></a>.
    </p>

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

<dl id="syscall/js"><dt><a href="/pkg/syscall/js/">syscall/js</a></dt>
  <dd>
    <p><!-- CL 177537 -->
      <code>TypedArrayOf</code> has been replaced by
      <a href="/pkg/syscall/js/#CopyBytesToGo"><code>CopyBytesToGo</code></a> and
      <a href="/pkg/syscall/js/#CopyBytesToJS"><code>CopyBytesToJS</code></a> for copying bytes
      between a byte slice and a <code>Uint8Array</code>.
    </p>

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

<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
  <dd>
    <p><!-- CL 112155 -->
      When running benchmarks, <a href="/pkg/testing/#B.N"><code>B.N</code></a> is no longer rounded.
    </p>

    <p><!-- CL 166717 -->
      The new method <a href="/pkg/testing/#B.ReportMetric"><code>B.ReportMetric</code></a> lets users report
      custom benchmark metrics and override built-in metrics.
    </p>

    <p><!-- CL 173722 -->
      Testing flags are now registered in the new <a href="/pkg/testing/#Init"><code>Init</code></a> function,
      which is invoked by the generated <code>main</code> function for the test.
      As a result, testing flags are now only registered when running a test binary,
      and packages that call <code>flag.Parse</code> during package initialization may cause tests to fail.
    </p>

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

<dl id="text/scanner"><dt><a href="/pkg/text/scanner/">text/scanner</a></dt>
  <dd>
    <p><!-- CL 183077 -->
      The scanner has been updated to recognize the new Go number literals, specifically
      binary literals with <code>0b</code>/<code>0B</code> prefix, octal literals with <code>0o</code>/<code>0O</code> prefix,
      and floating-point numbers with hexadecimal mantissa.
      Also, the new <a href="/pkg/text/scanner/#AllowDigitSeparators"><code>AllowDigitSeparators</code></a>
      mode allows number literals to contain underscores as digit separators (off by default for backwards-compatibility).
      See the <a href="#language">Changes to the language</a> for details.
    </p>

</dl><!-- text/scanner -->

<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
  <dd>
    <p><!-- CL 161762 -->
      The new <a href="/pkg/text/template/#hdr-Functions">slice function</a>
      returns the result of slicing its first argument by the following arguments.
    </p>

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

<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
  <dd>
    <p><!-- CL 122876 -->
      Day-of-year is now supported by <a href="/pkg/time/#Time.Format"><code>Format</code></a>
      and <a href="/pkg/time/#Parse"><code>Parse</code></a>.
    </p>

    <p><!-- CL 167387 -->
      The new <a href="/pkg/time/#Duration"><code>Duration</code></a> methods
      <a href="/pkg/time/#Duration.Microseconds"><code>Microseconds</code></a> and
      <a href="/pkg/time/#Duration.Milliseconds"><code>Milliseconds</code></a> return
      the duration as an integer count of their respectively named units.
    </p>

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

<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 10.0 to
      <a href="http://www.unicode.org/versions/Unicode11.0.0/">Unicode 11.0</a>,
      which adds 684 new characters, including seven new scripts, and 66 new emoji.
    </p>

</dl><!-- unicode -->
