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

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

<p>
  The latest Go release, version 1.20, arrives six months after <a href="/doc/go1.19">Go 1.19</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">promise of compatibility</a>.
  We expect almost all Go programs to continue to compile and run as before.
</p>

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

<p>
  Go 1.20 includes four changes to the language.
</p>

<p><!-- https://go.dev/issue/46505 -->
  Go 1.17 added <a href="/ref/spec#Conversions_from_slice_to_array_or_array_pointer">conversions from slice to an array pointer</a>.
  Go 1.20 extends this to allow conversions from a slice to an array:
  given a slice <code>x</code>, <code>[4]byte(x)</code> can now be written
  instead of <code>*(*[4]byte)(x)</code>.
</p>

<p><!-- https://go.dev/issue/53003 -->
  The <a href="/ref/spec/#Package_unsafe"><code>unsafe</code> package</a> defines
  three new functions <code>SliceData</code>, <code>String</code>, and <code>StringData</code>.
  Along with Go 1.17's <code>Slice</code>, these functions now provide the complete ability to
  construct and deconstruct slice and string values, without depending on their exact representation.
</p>

<p><!-- https://go.dev/issue/8606 -->
  The specification now defines that struct values are compared one field at a time,
  considering fields in the order they appear in the struct type definition,
  and stopping at the first mismatch.
  The specification could previously have been read as if
  all fields needed to be compared beyond the first mismatch.
  Similarly, the specification now defines that array values are compared
  one element at a time, in increasing index order.
  In both cases, the difference affects whether certain comparisons must panic.
  Existing programs are unchanged: the new spec wording describes
  what the implementations have always done.
</p>

<p><!-- https://go.dev/issue/56548 -->
  <a href="/ref/spec#Comparison_operators">Comparable types</a> (such as ordinary interfaces)
  may now satisfy <code>comparable</code> constraints, even if the type arguments
  are not strictly comparable (comparison may panic at runtime).
  This makes it possible to instantiate a type parameter constrained by <code>comparable</code>
  (e.g., a type parameter for a user-defined generic map key) with a non-strictly comparable type argument
  such as an interface type, or a composite type containing an interface type.
</p>

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

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

<p><!-- https://go.dev/issue/57003, https://go.dev/issue/57004 -->
  Go 1.20 is the last release that will run on any release of Windows 7, 8, Server 2008 and Server 2012.
  Go 1.21 will require at least Windows 10 or Server 2016.
</p>

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

<p><!-- https://go.dev/issue/23011 -->
  Go 1.20 is the last release that will run on macOS 10.13 High Sierra or 10.14 Mojave.
  Go 1.21 will require macOS 10.15 Catalina or later.
</p>

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

<p><!-- https://go.dev/issue/53466 -->
  Go 1.20 adds experimental support for FreeBSD on RISC-V (<code>GOOS=freebsd</code>, <code>GOARCH=riscv64</code>).
</p>

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

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

<p><!-- CL 432535, https://go.dev/issue/47257 -->
  The directory <code>$GOROOT/pkg</code> no longer stores
  pre-compiled package archives for the standard library:
  <code>go</code> <code>install</code> no longer writes them,
  the <code>go</code> build no longer checks for them,
  and the Go distribution no longer ships them.
  Instead, packages in the standard library are built as needed
  and cached in the build cache, just like packages outside <code>GOROOT</code>.
  This change reduces the size of the Go distribution and also
  avoids C toolchain skew for packages that use cgo.
</p>

<p><!-- CL 448357: cmd/go: print test2json start events -->
  The implementation of <code>go</code> <code>test</code> <code>-json</code>
  has been improved to make it more robust.
  Programs that run <code>go</code> <code>test</code> <code>-json</code>
  do not need any updates.
  Programs that invoke <code>go</code> <code>tool</code> <code>test2json</code>
  directly should now run the test binary with <code>-v=test2json</code>
  (for example, <code>go</code> <code>test</code> <code>-v=test2json</code>
  or <code>./pkg.test</code> <code>-test.v=test2json</code>)
  instead of plain <code>-v</code>.
</p>

<p><!-- CL 448357: cmd/go: print test2json start events -->
  A related change to <code>go</code> <code>test</code> <code>-json</code>
  is the addition of an event with <code>Action</code> set to <code>start</code>
  at the beginning of each test program's execution.
  When running multiple tests using the <code>go</code> command,
  these start events are guaranteed to be emitted in the same order as
  the packages named on the command line.
</p>

<p><!-- https://go.dev/issue/45454, CL 421434 -->
  The <code>go</code> command now defines
  architecture feature build tags, such as <code>amd64.v2</code>,
  to allow selecting a package implementation file based on the presence
  or absence of a particular architecture feature.
  See <a href="/cmd/go#hdr-Build_constraints"><code>go</code> <code>help</code> <code>buildconstraint</code></a> for details.
</p>

<p><!-- https://go.dev/issue/50332 -->
  The <code>go</code> subcommands now accept
  <code>-C</code> <code>&lt;dir&gt;</code> to change directory to &lt;dir&gt;
  before performing the command, which may be useful for scripts that need to
  execute commands in multiple different modules.
</p>

<p><!-- https://go.dev/issue/41696, CL 416094 -->
  The <code>go</code> <code>build</code> and <code>go</code> <code>test</code>
  commands no longer accept the <code>-i</code> flag,
  which has been <a href="https://go.dev/issue/41696">deprecated since Go 1.16</a>.
</p>

<p><!-- https://go.dev/issue/38687, CL 421440 -->
  The <code>go</code> <code>generate</code> command now accepts
  <code>-skip</code> <code>&lt;pattern&gt;</code> to skip <code>//go:generate</code> directives
  matching <code>&lt;pattern&gt;</code>.
</p>

<p><!-- https://go.dev/issue/41583 -->
  The <code>go</code> <code>test</code> command now accepts
  <code>-skip</code> <code>&lt;pattern&gt;</code> to skip tests, subtests, or examples
  matching <code>&lt;pattern&gt;</code>.
</p>

<p><!-- https://go.dev/issue/37015 -->
  When the main module is located within <code>GOPATH/src</code>,
  <code>go</code> <code>install</code> no longer installs libraries for
  non-<code>main</code> packages to <code>GOPATH/pkg</code>,
  and <code>go</code> <code>list</code> no longer reports a <code>Target</code>
  field for such packages. (In module mode, compiled packages are stored in the
  <a href="https://pkg.go.dev/cmd/go#hdr-Build_and_test_caching">build cache</a>
  only, but <a href="https://go.dev/issue/37015">a bug</a> had caused
  the <code>GOPATH</code> install targets to unexpectedly remain in effect.)
</p>

<p><!-- https://go.dev/issue/55022 -->
  The <code>go</code> <code>build</code>, <code>go</code> <code>install</code>,
  and other build-related commands now support a <code>-pgo</code> flag that enables
  profile-guided optimization, which is described in more detail in the
  <a href="#compiler">Compiler</a> section below.
  The <code>-pgo</code> flag specifies the file path of the profile.
  Specifying <code>-pgo=auto</code> causes the <code>go</code> command to search
  for a file named <code>default.pgo</code> in the main package's directory and
  use it if present.
  This mode currently requires a single main package to be specified on the
  command line, but we plan to lift this restriction in a future release.
  Specifying <code>-pgo=off</code> turns off profile-guided optimization.
</p>

<p><!-- https://go.dev/issue/51430 -->
  The <code>go</code> <code>build</code>, <code>go</code> <code>install</code>,
  and other build-related commands now support a <code>-cover</code>
  flag that builds the specified target with code coverage instrumentation.
  This is described in more detail in the
  <a href="#cover">Cover</a> section below.
</p>

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

<p><!-- https://go.dev/issue/48187 -->
  The <code>go</code> <code>version</code> <code>-m</code> command
  now supports reading more types of Go binaries, most notably, Windows DLLs
  built with <code>go</code> <code>build</code> <code>-buildmode=c-shared</code>
  and Linux binaries without execute permission.
</p>

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

<p><!-- CL 450739 -->
  The <code>go</code> command now disables <code>cgo</code> by default
  on systems without a C toolchain.
  More specifically, when the <code>CGO_ENABLED</code> environment variable is unset,
  the <code>CC</code> environment variable is unset,
  and the default C compiler (typically <code>clang</code> or <code>gcc</code>)
  is not found in the path,
  <code>CGO_ENABLED</code> defaults to <code>0</code>.
  As always, you can override the default by setting <code>CGO_ENABLED</code> explicitly.
</p>

<p>
  The most important effect of the default change is that when Go is installed
  on a system without a C compiler, it will now use pure Go builds for packages
  in the standard library that use cgo, instead of using pre-distributed package archives
  (which have been removed, as <a href="#go-command">noted above</a>)
  or attempting to use cgo and failing.
  This makes Go work better in some minimal container environments
  as well as on macOS, where pre-distributed package archives have
  not been used for cgo-based packages since Go 1.16.
</p>

<p>
  The packages in the standard library that use cgo are <a href="/pkg/net/"><code>net</code></a>,
  <a href="/pkg/os/user/"><code>os/user</code></a>, and
  <a href="/pkg/plugin/"><code>plugin</code></a>.
  On macOS, the <code>net</code> and <code>os/user</code> packages have been rewritten not to use cgo:
  the same code is now used for cgo and non-cgo builds as well as cross-compiled builds.
  On Windows, the <code>net</code> and <code>os/user</code> packages have never used cgo.
  On other systems, builds with cgo disabled will use a pure Go version of these packages.
</p>

<p>
  A consequence is that, on macOS, if Go code that uses
  the <code>net</code> package is built
  with <code>-buildmode=c-archive</code>, linking the resulting
  archive into a C program requires passing <code>-lresolv</code> when
  linking the C code.
</p>

<p>
  On macOS, the race detector has been rewritten not to use cgo:
  race-detector-enabled programs can be built and run without Xcode.
  On Linux and other Unix systems, and on Windows, a host C toolchain
  is required to use the race detector.
</p>

<h3 id="cover">Cover</h3>

<p><!-- CL 436236, CL 401236, CL 438503 -->
  Go 1.20 supports collecting code coverage profiles for programs
  (applications and integration tests), as opposed to just unit tests.
</p>

<p>
  To collect coverage data for a program, build it with <code>go</code>
  <code>build</code>'s <code>-cover</code> flag, then run the resulting
  binary with the environment variable <code>GOCOVERDIR</code> set
  to an output directory for coverage profiles.
  See the
  <a href="https://go.dev/testing/coverage">'coverage for integration tests' landing page</a> for more on how to get started.
  For details on the design and implementation, see the
  <a href="https://golang.org/issue/51430">proposal</a>.
</p>

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

<h4 id="vet-loopclosure">Improved detection of loop variable capture by nested functions</h4>

<p><!-- CL 447256, https://go.dev/issue/55972: extend the loopclosure analysis to parallel subtests -->
  The <code>vet</code> tool now reports references to loop variables following
  a call to <a href="/pkg/testing/#T.Parallel"><code>T.Parallel()</code></a>
  within subtest function bodies. Such references may observe the value of the
  variable from a different iteration (typically causing test cases to be
  skipped) or an invalid state due to unsynchronized concurrent access.
</p>

<p><!-- CL 452615 -->
  The tool also detects reference mistakes in more places. Previously it would
  only consider the last statement of the loop body, but now it recursively
  inspects the last statements within if, switch, and select statements.
</p>

<h4 id="vet-timeformat">New diagnostic for incorrect time formats</h4>

<p><!-- CL 354010, https://go.dev/issue/48801: check for time formats with 2006-02-01 -->
  The vet tool now reports use of the time format 2006-02-01 (yyyy-dd-mm)
  with <a href="/pkg/time/#Time.Format"><code>Time.Format</code></a> and
  <a href="/pkg/time/#Parse"><code>time.Parse</code></a>.
  This format does not appear in common date standards, but is frequently
  used by mistake when attempting to use the ISO 8601 date format
  (yyyy-mm-dd).
</p>

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

<p><!-- CL 422634 -->
  Some of the garbage collector's internal data structures were reorganized to
  be both more space and CPU efficient.
  This change reduces memory overheads and improves overall CPU performance by
  up to 2%.
</p>

<p><!-- CL 417558, https://go.dev/issue/53892 -->
  The garbage collector behaves less erratically with respect to goroutine
  assists in some circumstances.
</p>

<p><!-- https://go.dev/issue/51430 -->
  Go 1.20 adds a new <code>runtime/coverage</code> package
  containing APIs for writing coverage profile data at
  runtime from long-running and/or server programs that
  do not terminate via <code>os.Exit()</code>.
</p>

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

<p><!-- https://go.dev/issue/55022 -->
  Go 1.20 adds preview support for profile-guided optimization (PGO).
  PGO enables the toolchain to perform application- and workload-specific
  optimizations based on run-time profile information.
  Currently, the compiler supports pprof CPU profiles, which can be collected
  through usual means, such as the <code>runtime/pprof</code> or
  <code>net/http/pprof</code> packages.
  To enable PGO, pass the path of a pprof profile file via the
  <code>-pgo</code> flag to <code>go</code> <code>build</code>,
  as mentioned <a href="#go-command">above</a>.
  Go 1.20 uses PGO to more aggressively inline functions at hot call sites.
  Benchmarks for a representative set of Go programs show enabling
  profile-guided inlining optimization improves performance about 3–4%.
  See the <a href="/doc/pgo">PGO user guide</a> for detailed documentation.
  We plan to add more profile-guided optimizations in future releases.
  Note that profile-guided optimization is a preview, so please use it
  with appropriate caution.
</p>

<p>
  The Go 1.20 compiler upgraded its front-end to use a new way of handling the
  compiler's internal data, which fixes several generic-types issues and enables
  type declarations within generic functions and methods.
</p>

<p><!-- https://go.dev/issue/56103, CL 445598 -->
  The compiler now <a href="/issue/56103">rejects anonymous interface cycles</a>
  with a compiler error by default.
  These arise from tricky uses of <a href="/ref/spec#Embedded_interfaces">embedded interfaces</a>
  and have always had subtle correctness issues,
  yet we have no evidence that they're actually used in practice.
  Assuming no reports from users adversely affected by this change,
  we plan to update the language specification for Go 1.22 to formally disallow them
  so tools authors can stop supporting them too.
</p>

<p><!-- https://go.dev/issue/49569 -->
  Go 1.18 and 1.19 saw regressions in build speed, largely due to the addition
  of support for generics and follow-on work. Go 1.20 improves build speeds by
  up to 10%, bringing it back in line with Go 1.17.
  Relative to Go 1.19, generated code performance is also generally slightly improved.
</p>

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

<p><!-- https://go.dev/issue/54197, CL 420774 -->
  On Linux, the linker now selects the dynamic interpreter for <code>glibc</code>
  or <code>musl</code> at link time.
</p>

<p><!-- https://go.dev/issue/35006 -->
  On Windows, the Go linker now supports modern LLVM-based C toolchains.
</p>

<p><!-- https://go.dev/issue/37762, CL 317917 -->
  Go 1.20 uses <code>go:</code> and <code>type:</code> prefixes for compiler-generated
  symbols rather than <code>go.</code> and <code>type.</code>.
  This avoids confusion for user packages whose name starts with <code>go.</code>.
  The <a href="/pkg/debug/gosym"><code>debug/gosym</code></a> package understands
  this new naming convention for binaries built with Go 1.20 and newer.
</p>

<h2 id="bootstrap">Bootstrap</h2>

<p><!-- https://go.dev/issue/44505 -->
  When building a Go release from source and <code>GOROOT_BOOTSTRAP</code> is not set,
  previous versions of Go looked for a Go 1.4 or later bootstrap toolchain in the directory
  <code>$HOME/go1.4</code> (<code>%HOMEDRIVE%%HOMEPATH%\go1.4</code> on Windows).
  Go 1.18 and Go 1.19 looked first for <code>$HOME/go1.17</code> or <code>$HOME/sdk/go1.17</code>
  before falling back to <code>$HOME/go1.4</code>,
  in anticipation of requiring Go 1.17 for use when bootstrapping Go 1.20.
  Go 1.20 does require a Go 1.17 release for bootstrapping, but we realized that we should
  adopt the latest point release of the bootstrap toolchain, so it requires Go 1.17.13.
  Go 1.20 looks for <code>$HOME/go1.17.13</code> or <code>$HOME/sdk/go1.17.13</code>
  before falling back to <code>$HOME/go1.4</code>
  (to support systems that hard-coded the path $HOME/go1.4 but have installed
  a newer Go toolchain there).
  In the future, we plan to move the bootstrap toolchain forward approximately once a year,
  and in particular we expect that Go 1.22 will require the final point release of Go 1.20 for bootstrap.
</p>

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

<h3 id="crypto/ecdh">New crypto/ecdh package</h3>

<p><!-- https://go.dev/issue/52221, CL 398914, CL 450335, https://go.dev/issue/56052 -->
  Go 1.20 adds a new <a href="/pkg/crypto/ecdh/"><code>crypto/ecdh</code></a> package
  to provide explicit support for Elliptic Curve Diffie-Hellman key exchanges
  over NIST curves and Curve25519.
</p>
<p>
  Programs should use <code>crypto/ecdh</code> instead of the lower-level functionality in
  <a href="/pkg/crypto/elliptic/"><code>crypto/elliptic</code></a> for ECDH, and
  third-party modules for more advanced use cases.
</p>

<h3 id="errors">Wrapping multiple errors</h3>

<p><!-- CL 432898 -->
  Go 1.20 expands support for error wrapping to permit an error to
  wrap multiple other errors.
</p>
<p>
  An error <code>e</code> can wrap more than one error by providing
  an <code>Unwrap</code> method that returns a <code>[]error</code>.
</p>
<p>
  The <a href="/pkg/errors/#Is"><code>errors.Is</code></a> and
  <a href="/pkg/errors/#As"><code>errors.As</code></a> functions
  have been updated to inspect multiply wrapped errors.
</p>
<p>
  The <a href="/pkg/fmt/#Errorf"><code>fmt.Errorf</code></a> function
  now supports multiple occurrences of the <code>%w</code> format verb,
  which will cause it to return an error that wraps all of those error operands.
</p>
<p>
  The new function <a href="/pkg/errors/#Join"><code>errors.Join</code></a>
  returns an error wrapping a list of errors.
</p>

<h3 id="http_responsecontroller">HTTP ResponseController</h3>

<p><!-- CL 436890, https://go.dev/issue/54136 -->
  The new
  <a href="/pkg/net/http/#ResponseController"><code>"net/http".ResponseController</code></a>
  type provides access to extended per-request functionality not handled by the
  <a href="/pkg/net/http/#ResponseWriter"><code>"net/http".ResponseWriter</code></a> interface.
</p>

<p>
  Previously, we have added new per-request functionality by defining optional
  interfaces which a <code>ResponseWriter</code> can implement, such as
  <a href="/pkg/net/http/#Flusher"><code>Flusher</code></a>. These interfaces
  are not discoverable and clumsy to use.
</p>

<p>
  The <code>ResponseController</code> type provides a clearer, more discoverable way
  to add per-handler controls. Two such controls also added in Go 1.20 are
  <code>SetReadDeadline</code> and <code>SetWriteDeadline</code>, which allow setting
  per-request read and write deadlines. For example:
</p>

<pre>
func RequestHandler(w ResponseWriter, r *Request) {
  rc := http.NewResponseController(w)
  rc.SetWriteDeadline(time.Time{}) // disable Server.WriteTimeout when sending a large response
  io.Copy(w, bigData)
}
</pre>

<h3 id="reverseproxy_rewrite">New ReverseProxy Rewrite hook</h3>

<p><!-- https://go.dev/issue/53002, CL 407214 -->
  The <a href="/pkg/net/http/httputil/#ReverseProxy"><code>httputil.ReverseProxy</code></a>
  forwarding proxy includes a new
  <a href="/pkg/net/http/httputil/#ReverseProxy.Rewrite"><code>Rewrite</code></a>
  hook function, superseding the
  previous <code>Director</code> hook.
</p>

<p>
  The <code>Rewrite</code> hook accepts a
  <a href="/pkg/net/http/httputil/#ProxyRequest"><code>ProxyRequest</code></a> parameter,
  which includes both the inbound request received by the proxy and the outbound
  request that it will send.
  Unlike <code>Director</code> hooks, which only operate on the outbound request,
  this permits <code>Rewrite</code> hooks to avoid certain scenarios where
  a malicious inbound request may cause headers added by the hook
  to be removed before forwarding.
  See <a href="https://go.dev/issue/50580">issue #50580</a>.
</p>

<p>
  The <a href="/pkg/net/http/httputil/#ProxyRequest.SetURL"><code>ProxyRequest.SetURL</code></a>
  method routes the outbound request to a provided destination
  and supersedes the <code>NewSingleHostReverseProxy</code> function.
  Unlike <code>NewSingleHostReverseProxy</code>, <code>SetURL</code>
  also sets the <code>Host</code> header of the outbound request.
</p>

<p><!-- https://go.dev/issue/50465, CL 407414 -->
  The
  <a href="/pkg/net/http/httputil/#ProxyRequest.SetXForwarded"><code>ProxyRequest.SetXForwarded</code></a>
  method sets the <code>X-Forwarded-For</code>, <code>X-Forwarded-Host</code>,
  and <code>X-Forwarded-Proto</code> headers of the outbound request.
  When using a <code>Rewrite</code>, these headers are not added by default.
</p>

<p>
  An example of a <code>Rewrite</code> hook using these features is:
</p>

<pre>
proxyHandler := &httputil.ReverseProxy{
  Rewrite: func(r *httputil.ProxyRequest) {
    r.SetURL(outboundURL) // Forward request to outboundURL.
    r.SetXForwarded()     // Set X-Forwarded-* headers.
    r.Out.Header.Set("X-Additional-Header", "header set by the proxy")
  },
}
</pre>

<p><!-- CL 407375 -->
 <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a> no longer adds a <code>User-Agent</code> header
  to forwarded requests when the incoming request does not have one.
</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.
  There are also various performance improvements, not enumerated here.
</p>

<dl id="archive/tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/55356, CL 449937 -->
      When the <code>GODEBUG=tarinsecurepath=0</code> environment variable is set,
      <a href="/pkg/archive/tar/#Reader.Next"><code>Reader.Next</code></a> method
      will now return the error <a href="/pkg/archive/tar/#ErrInsecurePath"><code>ErrInsecurePath</code></a>
      for an entry with a file name that is an absolute path,
      refers to a location outside the current directory, contains invalid
      characters, or (on Windows) is a reserved name such as <code>NUL</code>.
      A future version of Go may disable insecure paths by default.
    </p>
  </dd>
</dl><!-- archive/tar -->

<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/55356 -->
      When the <code>GODEBUG=zipinsecurepath=0</code> environment variable is set,
      <a href="/pkg/archive/zip/#NewReader"><code>NewReader</code></a> will now return the error
      <a href="/pkg/archive/zip/#ErrInsecurePath"><code>ErrInsecurePath</code></a>
      when opening an archive which contains any file name that is an absolute path,
      refers to a location outside the current directory, contains invalid
      characters, or (on Windows) is a reserved names such as <code>NUL</code>.
      A future version of Go may disable insecure paths by default.
    </p>
    <p><!-- CL 449955 -->
      Reading from a directory file that contains file data will now return an error.
      The zip specification does not permit directory files to contain file data,
      so this change only affects reading from invalid archives.
    </p>
  </dd>
</dl><!-- archive/zip -->

<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
  <dd>
    <p><!-- CL 407176 -->
      The new
      <a href="/pkg/bytes/#CutPrefix"><code>CutPrefix</code></a> and
      <a href="/pkg/bytes/#CutSuffix"><code>CutSuffix</code></a> functions
      are like <a href="/pkg/bytes/#TrimPrefix"><code>TrimPrefix</code></a>
      and <a href="/pkg/bytes/#TrimSuffix"><code>TrimSuffix</code></a>
      but also report whether the string was trimmed.
    </p>

    <p><!-- CL 359675, https://go.dev/issue/45038 -->
      The new <a href="/pkg/bytes/#Clone"><code>Clone</code></a> function
      allocates a copy of a byte slice.
    </p>
  </dd>
</dl><!-- bytes -->

<dl id="context"><dt><a href="/pkg/context/">context</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51365, CL 375977 -->
      The new <a href="/pkg/context/#WithCancelCause"><code>WithCancelCause</code></a> function
      provides a way to cancel a context with a given error.
      That error can be retrieved by calling the new <a href="/pkg/context/#Cause"><code>Cause</code></a> function.
    </p>
  </dd>
</dl><!-- context -->

<dl id="crypto/ecdsa"><dt><a href="/pkg/crypto/ecdsa/">crypto/ecdsa</a></dt>
  <dd>
    <p><!-- CL 353849 -->
      When using supported curves, all operations are now implemented in constant time.
      This led to an increase in CPU time between 5% and 30%, mostly affecting P-384 and P-521.
    </p>

    <p><!-- https://go.dev/issue/56088, CL 450816 -->
      The new <a href="/pkg/crypto/ecdsa/#PrivateKey.ECDH"><code>PrivateKey.ECDH</code></a> method
      converts an <code>ecdsa.PrivateKey</code> to an <code>ecdh.PrivateKey</code>.
    </p>
  </dd>
</dl><!-- crypto/ecdsa -->

<dl id="crypto/ed25519"><dt><a href="/pkg/crypto/ed25519/">crypto/ed25519</a></dt>
  <dd>
    <p><!-- CL 373076, CL 404274, https://go.dev/issue/31804 -->
      The <a href="/pkg/crypto/ed25519/#PrivateKey.Sign"><code>PrivateKey.Sign</code></a> method
      and the
      <a href="/pkg/crypto/ed25519/#VerifyWithOptions"><code>VerifyWithOptions</code></a> function
      now support signing pre-hashed messages with Ed25519ph,
      indicated by an
      <a href="/pkg/crypto/ed25519/#Options.HashFunc"><code>Options.HashFunc</code></a>
      that returns
      <a href="/pkg/crypto/#SHA512"><code>crypto.SHA512</code></a>.
      They also now support Ed25519ctx and Ed25519ph with context,
      indicated by setting the new
      <a href="/pkg/crypto/ed25519/#Options.Context"><code>Options.Context</code></a>
      field.
    </p>
  </dd>
</dl><!-- crypto/ed25519 -->

<dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt>
  <dd>
    <p><!-- CL 418874, https://go.dev/issue/19974 -->
      The new field <a href="/pkg/crypto/rsa/#OAEPOptions.MGFHash"><code>OAEPOptions.MGFHash</code></a>
      allows configuring the MGF1 hash separately for OAEP decryption.
    </p>

    <p><!-- https://go.dev/issue/20654 -->
      crypto/rsa now uses a new, safer, constant-time backend. This causes a CPU
      runtime increase for decryption operations between approximately 15%
      (RSA-2048 on amd64) and 45% (RSA-4096 on arm64), and more on 32-bit architectures.
      Encryption operations are approximately 20x slower than before (but still 5-10x faster than decryption).
      Performance is expected to improve in future releases.
      Programs must not modify or manually generate the fields of
      <a href="/pkg/crypto/rsa/#PrecomputedValues"><code>PrecomputedValues</code></a>.
    </p>
  </dd>
</dl><!-- crypto/rsa -->

<dl id="crypto/subtle"><dt><a href="/pkg/crypto/subtle/">crypto/subtle</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/53021, CL 421435 -->
      The new function <a href="/pkg/crypto/subtle/#XORBytes"><code>XORBytes</code></a>
      XORs two byte slices together.
    </p>
  </dd>
</dl><!-- crypto/subtle -->

<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
  <dd>
    <p><!-- CL 426455, CL 427155, CL 426454, https://go.dev/issue/46035 -->
      Parsed certificates are now shared across all clients actively using that certificate.
      The memory savings can be significant in programs that make many concurrent connections to a
      server or collection of servers sharing any part of their certificate chains.
    </p>

    <p><!-- https://go.dev/issue/48152, CL 449336 -->
      For a handshake failure due to a certificate verification failure,
      the TLS client and server now return an error of the new type
      <a href="/pkg/crypto/tls/#CertificateVerificationError"><code>CertificateVerificationError</code></a>,
      which includes the presented certificates.
    </p>
  </dd>
</dl><!-- crypto/tls -->

<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
  <dd>
    <p><!-- CL 450816, CL 450815 -->
      <a href="/pkg/crypto/x509/#ParsePKCS8PrivateKey"><code>ParsePKCS8PrivateKey</code></a>
      and
      <a href="/pkg/crypto/x509/#MarshalPKCS8PrivateKey"><code>MarshalPKCS8PrivateKey</code></a>
      now support keys of type <a href="/pkg/crypto/ecdh.PrivateKey"><code>*crypto/ecdh.PrivateKey</code></a>.
      <a href="/pkg/crypto/x509/#ParsePKIXPublicKey"><code>ParsePKIXPublicKey</code></a>
      and
      <a href="/pkg/crypto/x509/#MarshalPKIXPublicKey"><code>MarshalPKIXPublicKey</code></a>
      now support keys of type <a href="/pkg/crypto/ecdh.PublicKey"><code>*crypto/ecdh.PublicKey</code></a>.
      Parsing NIST curve keys still returns values of type
      <code>*ecdsa.PublicKey</code> and <code>*ecdsa.PrivateKey</code>.
      Use their new <code>ECDH</code> methods to convert to the <code>crypto/ecdh</code> types.
    </p>
    <p><!-- CL 449235 -->
      The new <a href="/pkg/crypto/x509/#SetFallbackRoots"><code>SetFallbackRoots</code></a>
      function allows a program to define a set of fallback root certificates in case an
      operating system verifier or standard platform root bundle is unavailable at runtime.
      It will most commonly be used with a new package, <a href="/pkg/golang.org/x/crypto/x509roots/fallback">golang.org/x/crypto/x509roots/fallback</a>,
      which will provide an up to date root bundle.
    </p>
  </dd>
</dl><!-- crypto/x509 -->

<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
  <dd>
    <p><!-- CL 429601 -->
      Attempts to read from a <code>SHT_NOBITS</code> section using
      <a href="/pkg/debug/elf/#Section.Data"><code>Section.Data</code></a>
      or the reader returned by <a href="/pkg/debug/elf/#Section.Open"><code>Section.Open</code></a>
      now return an error.
    </p>
    <p><!-- CL 420982 -->
      Additional <a href="/pkg/debug/elf/#R_LARCH"><code>R_LARCH_*</code></a> constants are defined for use with LoongArch systems.
    </p>
    <p><!-- CL 420982, CL 435415, CL 425555 -->
      Additional <a href="/pkg/debug/elf/#R_PPC64"><code>R_PPC64_*</code></a> constants are defined for use with PPC64 ELFv2 relocations.
    </p>
    <p><!-- CL 411915 -->
      The constant value for <a href="/pkg/debug/elf/#R_PPC64_SECTOFF_LO_DS"><code>R_PPC64_SECTOFF_LO_DS</code></a> is corrected, from 61 to 62.
    </p>
  </dd>
</dl><!-- debug/elf -->

<dl id="debug/gosym"><dt><a href="/pkg/debug/gosym/">debug/gosym</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/37762, CL 317917 -->
      Due to a change of <a href="#linker">Go's symbol naming conventions</a>, tools that
      process Go binaries should use Go 1.20's <code>debug/gosym</code> package to
      transparently handle both old and new binaries.
    </p>
  </dd>
</dl><!-- debug/gosym -->

<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
  <dd>
    <p><!-- CL 421357 -->
      Additional <a href="/pkg/debug/pe/#IMAGE_FILE_MACHINE_RISCV128"><code>IMAGE_FILE_MACHINE_RISCV*</code></a> constants are defined for use with RISC-V systems.
    </p>
  </dd>
</dl><!-- debug/pe -->

<dl id="encoding/binary"><dt><a href="/pkg/encoding/binary/">encoding/binary</a></dt>
  <dd>
    <p><!-- CL 420274 -->
      The <a href="/pkg/encoding/binary/#ReadVarint"><code>ReadVarint</code></a> and
      <a href="/pkg/encoding/binary/#ReadUvarint"><code>ReadUvarint</code></a>
      functions will now return <code>io.ErrUnexpectedEOF</code> after reading a partial value,
      rather than <code>io.EOF</code>.
    </p>
  </dd>
</dl><!-- encoding/binary -->

<dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/53346, CL 424777 -->
      The new <a href="/pkg/encoding/xml/#Encoder.Close"><code>Encoder.Close</code></a> method
      can be used to check for unclosed elements when finished encoding.
    </p>

    <p><!-- CL 103875, CL 105636 -->
      The decoder now rejects element and attribute names with more than one colon,
      such as <code>&lt;a:b:c&gt;</code>,
      as well as namespaces that resolve to an empty string, such as <code>xmlns:a=""</code>.
    </p>

    <p><!-- CL 107255 -->
      The decoder now rejects elements that use different namespace prefixes in the opening and closing tag,
      even if those prefixes both denote the same namespace.
    </p>
  </dd>
</dl><!-- encoding/xml -->

<dl id="errors"><dt><a href="/pkg/errors/">errors</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/53435 -->
      The new <a href="/pkg/errors/#Join"><code>Join</code></a> function returns an error wrapping a list of errors.
    </p>
  </dd>
</dl><!-- errors -->

<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/53435 -->
      The <a href="/pkg/fmt/#Errorf"><code>Errorf</code></a> function supports multiple occurrences of
      the <code>%w</code> format verb, returning an error that unwraps to the list of all arguments to <code>%w</code>.
    </p>
    <p><!-- https://go.dev/issue/51668, CL 400875 -->
      The new <a href="/pkg/fmt/#FormatString"><code>FormatString</code></a> function recovers the
      formatting directive corresponding to a <a href="/pkg/fmt/#State"><code>State</code></a>,
      which can be useful in <a href="/pkg/fmt/#Formatter"><code>Formatter</code></a>.
      implementations.
    </p>
  </dd>
</dl><!-- fmt -->

<dl id="go/ast"><dt><a href="/pkg/go/ast/">go/ast</a></dt>
  <dd>
    <p><!-- CL 426091, https://go.dev/issue/50429 -->
      The new <a href="/pkg/go/ast/#RangeStmt.Range"><code>RangeStmt.Range</code></a> field
      records the position of the <code>range</code> keyword in a range statement.
    </p>
    <p><!-- CL 427955, https://go.dev/issue/53202 -->
      The new <a href="/pkg/go/ast/#File.FileStart"><code>File.FileStart</code></a>
      and <a href="/pkg/go/ast/#File.FileEnd"><code>File.FileEnd</code></a> fields
      record the position of the start and end of the entire source file.
    </p>
  </dd>
</dl><!-- go/ast -->

<dl id="go/token"><dt><a href="/pkg/go/token/">go/token</a></dt>
  <dd>
    <p><!-- CL 410114, https://go.dev/issue/53200 -->
      The new <a href="/pkg/go/token/#FileSet.RemoveFile"><code>FileSet.RemoveFile</code></a> method
      removes a file from a <code>FileSet</code>.
      Long-running programs can use this to release memory associated
      with files they no longer need.
    </p>
  </dd>
</dl><!-- go/token -->

<dl id="go/types"><dt><a href="/pkg/go/types/">go/types</a></dt>
  <dd>
    <p><!-- CL 454575 -->
      The new <a href="/pkg/go/types/#Satisfies"><code>Satisfies</code></a> function reports
      whether a type satisfies a constraint.
      This change aligns with the <a href="#language">new language semantics</a>
      that distinguish satisfying a constraint from implementing an interface.
    </p>
  </dd>
</dl><!-- go/types -->

<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/59153 --><!-- CL 481993 -->
      Go 1.20.3 and later
      <a href="/pkg/html/template#hdr-Security_Model">disallow actions in ECMAScript 6 template literals.</a>
      This behavior can be reverted by the <code>GODEBUG=jstmpllitinterp=1</code> setting.
    </p>
  </dd>
</dl><!-- html/template -->

<dl id="io"><dt><a href="/pkg/io/">io</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/45899, CL 406776 -->
      The new <a href="/pkg/io/#OffsetWriter"><code>OffsetWriter</code></a> wraps an underlying
      <a href="/pkg/io/#WriterAt"><code>WriterAt</code></a>
      and provides <code>Seek</code>, <code>Write</code>, and <code>WriteAt</code> methods
      that adjust their effective file offset position by a fixed amount.
    </p>
  </dd>
</dl><!-- io -->

<dl id="io/fs"><dt><a href="/pkg/io/fs/">io/fs</a></dt>
  <dd>
    <p><!-- CL 363814, https://go.dev/issue/47209 -->
      The new error <a href="/pkg/io/fs/#SkipAll"><code>SkipAll</code></a>
      terminates a <a href="/pkg/io/fs/#WalkDir"><code>WalkDir</code></a>
      immediately but successfully.
    </p>
  </dd>
</dl><!-- io -->

<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/52182 -->
      The <a href="/pkg/math/big/">math/big</a> package's wide scope and
      input-dependent timing make it ill-suited for implementing cryptography.
      The cryptography packages in the standard library no longer call non-trivial
      <a href="/pkg/math/big#Int">Int</a> methods on attacker-controlled inputs.
      In the future, the determination of whether a bug in math/big is
      considered a security vulnerability will depend on its wider impact on the
      standard library.
    </p>
  </dd>
</dl><!-- math/big -->

<dl id="math/rand"><dt><a href="/pkg/math/rand/">math/rand</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/54880, CL 436955, https://go.dev/issue/56319 -->
      The <a href="/pkg/math/rand/">math/rand</a> package now automatically seeds
      the global random number generator
      (used by top-level functions like <code>Float64</code> and <code>Int</code>) with a random value,
      and the top-level <a href="/pkg/math/rand/#Seed"><code>Seed</code></a> function has been deprecated.
      Programs that need a reproducible sequence of random numbers
      should prefer to allocate their own random source, using <code>rand.New(rand.NewSource(seed))</code>.
    </p>
    <p>
      Programs that need the earlier consistent global seeding behavior can set
      <code>GODEBUG=randautoseed=0</code> in their environment.
    </p>
    <p><!-- https://go.dev/issue/20661 -->
      The top-level <a href="/pkg/math/rand/#Read"><code>Read</code></a> function has been deprecated.
      In almost all cases,  <a href="/pkg/crypto/rand/#Read"><code>crypto/rand.Read</code></a> is more appropriate.
    </p>
  </dd>
</dl><!-- math/rand -->

<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/48866 -->
      The <a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a> function now allows duplicate parameter names,
      so long as the values of the names are the same.
    </p>
  </dd>
</dl><!-- mime -->

<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
  <dd>
    <p><!-- CL 431675 -->
      Methods of the <a href="/pkg/mime/multipart/#Reader"><code>Reader</code></a> type now wrap errors
      returned by the underlying <code>io.Reader</code>.
    </p>
    <p><!-- https://go.dev/issue/59153 --><!-- CL 481985 -->
      In Go 1.19.8 and later, this package sets limits the size
      of the MIME data it processes to protect against malicious inputs.
      <code>Reader.NextPart</code> and <code>Reader.NextRawPart</code> limit the
      number of headers in a part to 10000 and <code>Reader.ReadForm</code> limits
      the total number of headers in all <code>FileHeaders</code> to 10000.
      These limits may be adjusted with the <code>GODEBUG=multipartmaxheaders</code>
      setting.
      <code>Reader.ReadForm</code> further limits the number of parts in a form to 1000.
      This limit may be adjusted with the <code>GODEBUG=multipartmaxparts</code>
      setting.
    </p>
  </dd>
</dl><!-- mime/multipart -->

<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/50101, CL 446179 -->
      The <a href="/pkg/net/#LookupCNAME"><code>LookupCNAME</code></a>
      function now consistently returns the contents
      of a <code>CNAME</code> record when one exists. Previously on Unix systems and
      when using the pure Go resolver, <code>LookupCNAME</code> would return an error
      if a <code>CNAME</code> record referred to a name that with no <code>A</code>,
      <code>AAAA</code>, or <code>CNAME</code> record. This change modifies
      <code>LookupCNAME</code> to match the previous behavior on Windows,
      allowing <code>LookupCNAME</code> to succeed whenever a
      <code>CNAME</code> exists.
    </p>

    <p><!-- https://go.dev/issue/53482, CL 413454 -->
      <a href="/pkg/net/#Interface.Flags"><code>Interface.Flags</code></a> now includes the new flag <code>FlagRunning</code>,
      indicating an operationally active interface. An interface which is administratively
      configured but not active (for example, because the network cable is not connected)
      will have <code>FlagUp</code> set but not <code>FlagRunning</code>.
    </p>

    <p><!-- https://go.dev/issue/55301, CL 444955 -->
      The new <a href="/pkg/net/#Dialer.ControlContext"><code>Dialer.ControlContext</code></a> field contains a callback function
      similar to the existing <a href="/pkg/net/#Dialer.Control"><code>Dialer.Control</code></a> hook, that additionally
      accepts the dial context as a parameter.
      <code>Control</code> is ignored when <code>ControlContext</code> is not nil.
    </p>

    <p><!-- CL 428955 -->
      The Go DNS resolver recognizes the <code>trust-ad</code> resolver option.
      When <code>options trust-ad</code> is set in <code>resolv.conf</code>,
      the Go resolver will set the AD bit in DNS queries. The resolver does not
      make use of the AD bit in responses.
    </p>

    <p><!-- CL 448075 -->
      DNS resolution will detect changes to <code>/etc/nsswitch.conf</code>
      and reload the file when it changes. Checks are made at most once every
      five seconds, matching the previous handling of <code>/etc/hosts</code>
      and <code>/etc/resolv.conf</code>.
    </p>
  </dd>
</dl><!-- net -->

<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51914 -->
      The <a href="/pkg/net/http/#ResponseWriter.WriteHeader"><code>ResponseWriter.WriteHeader</code></a> function now supports sending
      <code>1xx</code> status codes.
    </p>

    <p><!-- https://go.dev/issue/41773, CL 356410 -->
      The new <a href="/pkg/net/http/#Server.DisableGeneralOptionsHandler"><code>Server.DisableGeneralOptionsHandler</code></a> configuration setting
      allows disabling the default <code>OPTIONS *</code> handler.
    </p>

    <p><!-- https://go.dev/issue/54299, CL 447216 -->
      The new <a href="/pkg/net/http/#Transport.OnProxyConnectResponse"><code>Transport.OnProxyConnectResponse</code></a> hook is called
      when a <code>Transport</code> receives an HTTP response from a proxy
      for a <code>CONNECT</code> request.
    </p>

    <p><!-- https://go.dev/issue/53960, CL 418614  -->
      The HTTP server now accepts HEAD requests containing a body,
      rather than rejecting them as invalid.
    </p>

    <p><!-- https://go.dev/issue/53896 -->
      HTTP/2 stream errors returned by <code>net/http</code> functions may be converted
      to a <a href="/pkg/golang.org/x/net/http2/#StreamError"><code>golang.org/x/net/http2.StreamError</code></a> using
      <a href="/pkg/errors/#As"><code>errors.As</code></a>.
    </p>

    <p><!-- https://go.dev/cl/397734 -->
      Leading and trailing spaces are trimmed from cookie names,
      rather than being rejected as invalid.
      For example, a cookie setting of "name =value"
      is now accepted as setting the cookie "name".
    </p>

    <p><!-- https://go.dev/issue/52989 -->
     A <a href="/pkg/net/http#Cookie"><code>Cookie</code></a> with an empty Expires field is now considered valid.
     <a href="/pkg/net/http#Cookie.Valid"><code>Cookie.Valid</code></a> only checks Expires when it is set.
    </p>
  </dd>
</dl><!-- net/http -->

<dl id="net/netip"><dt><a href="/pkg/net/netip/">net/netip</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51766, https://go.dev/issue/51777, CL 412475 -->
      The new <a href="/pkg/net/netip/#IPv6LinkLocalAllRouters"><code>IPv6LinkLocalAllRouters</code></a>
      and <a href="/pkg/net/netip/#IPv6Loopback"><code>IPv6Loopback</code></a> functions
      are the <code>net/netip</code> equivalents of
      <a href="/pkg/net/#IPv6loopback"><code>net.IPv6loopback</code></a> and
      <a href="/pkg/net/#IPv6linklocalallrouters"><code>net.IPv6linklocalallrouters</code></a>.
    </p>
  </dd>
</dl><!-- net/netip -->

<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
  <dd>
    <p><!-- CL 448897 -->
      On Windows, the name <code>NUL</code> is no longer treated as a special case in
      <a href="/pkg/os/#Mkdir"><code>Mkdir</code></a> and
      <a href="/pkg/os/#Stat"><code>Stat</code></a>.
    </p>
    <p><!-- https://go.dev/issue/52747, CL 405275 -->
      On Windows, <a href="/pkg/os/#File.Stat"><code>File.Stat</code></a>
      now uses the file handle to retrieve attributes when the file is a directory.
      Previously it would use the path passed to
      <a href="/pkg/os/#Open"><code>Open</code></a>, which may no longer be the file
      represented by the file handle if the file has been moved or replaced.
      This change modifies <code>Open</code> to open directories without the
      <code>FILE_SHARE_DELETE</code> access, which match the behavior of regular files.
    </p>
    <p><!-- https://go.dev/issue/36019, CL 405275 -->
      On Windows, <a href="/pkg/os/#File.Seek"><code>File.Seek</code></a> now supports
      seeking to the beginning of a directory.
    </p>
  </dd>
</dl><!-- os -->

<dl id="os/exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/50436, CL 401835 -->
      The new <a href="/pkg/os/exec/#Cmd"><code>Cmd</code></a> fields
      <a href="/pkg/os/exec/#Cmd.Cancel"><code>Cancel</code></a> and
      <a href="/pkg/os/exec/#Cmd.WaitDelay"><code>WaitDelay</code></a>
      specify the behavior of the <code>Cmd</code> when its associated
      <code>Context</code> is canceled or its process exits with I/O pipes still
      held open by a child process.
    </p>
  </dd>
</dl><!-- os/exec -->

<dl id="path/filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt>
  <dd>
    <p><!-- CL 363814, https://go.dev/issue/47209 -->
      The new error <a href="/pkg/path/filepath/#SkipAll"><code>SkipAll</code></a>
      terminates a <a href="/pkg/path/filepath/#Walk"><code>Walk</code></a>
      immediately but successfully.
    </p>
    <p><!-- https://go.dev/issue/56219, CL 449239 -->
      The new <a href="/pkg/path/filepath/#IsLocal"><code>IsLocal</code></a> function reports whether a path is
      lexically local to a directory.
      For example, if <code>IsLocal(p)</code> is <code>true</code>,
      then <code>Open(p)</code> will refer to a file that is lexically
      within the subtree rooted at the current directory.
    </p>
  </dd>
</dl><!-- io -->

<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/46746, CL 423794 -->
      The new <a href="/pkg/reflect/#Value.Comparable"><code>Value.Comparable</code></a> and
      <a href="/pkg/reflect/#Value.Equal"><code>Value.Equal</code></a> methods
      can be used to compare two <code>Value</code>s for equality.
      <code>Comparable</code> reports whether <code>Equal</code> is a valid operation for a given <code>Value</code> receiver.
    </p>

    <p><!-- https://go.dev/issue/48000, CL 389635 -->
      The new <a href="/pkg/reflect/#Value.Grow"><code>Value.Grow</code></a> method
      extends a slice to guarantee space for another <code>n</code> elements.
    </p>

    <p><!-- https://go.dev/issue/52376, CL 411476 -->
      The new <a href="/pkg/reflect/#Value.SetZero"><code>Value.SetZero</code></a> method
      sets a value to be the zero value for its type.
    </p>

    <p><!-- CL 425184 -->
      Go 1.18 introduced <a href="/pkg/reflect/#Value.SetIterKey"><code>Value.SetIterKey</code></a>
      and <a href="/pkg/reflect/#Value.SetIterValue"><code>Value.SetIterValue</code></a> methods.
      These are optimizations: <code>v.SetIterKey(it)</code> is meant to be equivalent to <code>v.Set(it.Key())</code>.
      The implementations incorrectly omitted a check for use of unexported fields that was present in the unoptimized forms.
      Go 1.20 corrects these methods to include the unexported field check.
    </p>
  </dd>
</dl><!-- reflect -->

<dl id="regexp"><dt><a href="/pkg/regexp/">regexp</a></dt>
  <dd>
    <p><!-- CL 444817 -->
      Go 1.19.2 and Go 1.18.7 included a security fix to the regular expression parser,
      making it reject very large expressions that would consume too much memory.
      Because Go patch releases do not introduce new API,
      the parser returned <a href="/pkg/regexp/syntax/#ErrInternalError"><code>syntax.ErrInternalError</code></a> in this case.
      Go 1.20 adds a more specific error, <a href="/pkg/regexp/syntax/#ErrLarge"><code>syntax.ErrLarge</code></a>,
      which the parser now returns instead.
    </p>
  </dd>
</dl><!-- regexp -->

<dl id="runtime/cgo"><dt><a href="/pkg/runtime/cgo/">runtime/cgo</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/46731, CL 421879 -->
      Go 1.20 adds new <a href="/pkg/runtime/cgo/#Incomplete"><code>Incomplete</code></a> marker type.
      Code generated by cgo will use <code>cgo.Incomplete</code> to mark an incomplete C type.
    </p>
  </dd>
</dl><!-- runtime/cgo -->

<dl id="runtime/metrics"><dt><a href="/pkg/runtime/metrics/">runtime/metrics</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/47216, https://go.dev/issue/49881 -->
      Go 1.20 adds new <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">supported metrics</a>,
      including the current <code>GOMAXPROCS</code> setting (<code>/sched/gomaxprocs:threads</code>),
      the number of cgo calls executed (<code>/cgo/go-to-c-calls:calls</code>),
      total mutex block time (<code>/sync/mutex/wait/total:seconds</code>), and various measures of time
      spent in garbage collection.
    </p>

    <p><!-- CL 427615 -->
      Time-based histogram metrics are now less precise, but take up much less memory.
    </p>
  </dd>
</dl><!-- runtime/metrics -->

<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
  <dd>
    <p><!-- CL 443056 -->
      Mutex profile samples are now pre-scaled, fixing an issue where old mutex profile
      samples would be scaled incorrectly if the sampling rate changed during execution.
    </p>

    <p><!-- CL 416975 -->
      Profiles collected on Windows now include memory mapping information that fixes
      symbolization issues for position-independent binaries.
    </p>
  </dd>
</dl><!-- runtime/pprof -->

<dl id="runtime/trace"><dt><a href="/pkg/runtime/trace/">runtime/trace</a></dt>
  <dd>
    <p><!-- CL 447135, https://go.dev/issue/55022 -->
      The garbage collector's background sweeper now yields less frequently,
      resulting in many fewer extraneous events in execution traces.
    </p>
  </dd>
</dl><!-- runtime/trace -->

<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
  <dd>
    <p><!-- CL 407176, https://go.dev/issue/42537 -->
      The new
      <a href="/pkg/strings/#CutPrefix"><code>CutPrefix</code></a> and
      <a href="/pkg/strings/#CutSuffix"><code>CutSuffix</code></a> functions
      are like <a href="/pkg/strings/#TrimPrefix"><code>TrimPrefix</code></a>
      and <a href="/pkg/strings/#TrimSuffix"><code>TrimSuffix</code></a>
      but also report whether the string was trimmed.
    </p>
  </dd>
</dl><!-- strings -->

<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
  <dd>
    <p><!-- CL 399094, https://go.dev/issue/51972 -->
      The new <a href="/pkg/sync/#Map"><code>Map</code></a> methods <a href="/pkg/sync/#Map.Swap"><code>Swap</code></a>,
      <a href="/pkg/sync/#Map.CompareAndSwap"><code>CompareAndSwap</code></a>, and
      <a href="/pkg/sync/#Map.CompareAndDelete"><code>CompareAndDelete</code></a>
      allow existing map entries to be updated atomically.
    </p>
  </dd>
</dl><!-- sync -->

<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
  <dd>
    <p><!-- CL 411596 -->
      On FreeBSD, compatibility shims needed for FreeBSD 11 and earlier have been removed.
    </p>
    <p><!-- CL 407574 -->
      On Linux, additional <a href="/pkg/syscall/#CLONE_CLEAR_SIGHAND"><code>CLONE_*</code></a> constants
      are defined for use with the <a href="/pkg/syscall/#SysProcAttr.Cloneflags"><code>SysProcAttr.Cloneflags</code></a> field.
    </p>
    <p><!-- CL 417695 -->
      On Linux, the new <a href="/pkg/syscall/#SysProcAttr.CgroupFD"><code>SysProcAttr.CgroupFD</code></a>
      and <a href="/pkg/syscall/#SysProcAttr.UseCgroupFD"><code>SysProcAttr.UseCgroupFD</code></a> fields
      provide a way to place a child process into a specific cgroup.
    </p>
  </dd>
</dl><!-- syscall -->

<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/43620, CL 420254 -->
      The new method <a href="/pkg/testing/#B.Elapsed"><code>B.Elapsed</code></a>
      reports the current elapsed time of the benchmark, which may be useful for
      calculating rates to report with <code>ReportMetric</code>.
    </p>

    <p><!-- https://go.dev/issue/48515, CL 352349 -->
      Calling <a href="/pkg/testing/#T.Run"><code>T.Run</code></a>
      from a function passed
      to <a href="/pkg/testing/#T.Cleanup"><code>T.Cleanup</code></a>
      was never well-defined, and will now panic.
    </p>
  </dd>
</dl><!-- testing -->

<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/52746, CL 412495 -->
      The new time layout constants <a href="/pkg/time/#DateTime"><code>DateTime</code></a>,
      <a href="/pkg/time/#DateOnly"><code>DateOnly</code></a>, and
      <a href="/pkg/time/#TimeOnly"><code>TimeOnly</code></a>
      provide names for three of the most common layout strings used in a survey of public Go source code.
    </p>

    <p><!-- CL 382734, https://go.dev/issue/50770 -->
      The new <a href="/pkg/time/#Time.Compare"><code>Time.Compare</code></a> method
      compares two times.
    </p>

    <p><!-- CL 425037 -->
      <a href="/pkg/time/#Parse"><code>Parse</code></a>
      now ignores sub-nanosecond precision in its input,
      instead of reporting those digits as an error.
    </p>

    <p><!-- CL 444277 -->
      The <a href="/pkg/time/#Time.MarshalJSON"><code>Time.MarshalJSON</code></a> method
      is now more strict about adherence to RFC 3339.
    </p>
  </dd>
</dl><!-- time -->

<dl id="unicode/utf16"><dt><a href="/pkg/unicode/utf16/">unicode/utf16</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51896, CL 409054 -->
      The new  <a href="/pkg/unicode/utf16/#AppendRune"><code>AppendRune</code></a>
      function appends the UTF-16 encoding of a given rune to a uint16 slice,
      analogous to <a href="/pkg/unicode/utf8/#AppendRune"><code>utf8.AppendRune</code></a>.
    </p>
  </dd>
</dl><!-- unicode/utf16 -->

<!-- Silence false positives from x/build/cmd/relnote: -->
<!-- https://go.dev/issue/45964 was documented in Go 1.18 release notes but closed recently -->
<!-- https://go.dev/issue/52114 is an accepted proposal to add golang.org/x/net/http2.Transport.DialTLSContext; it's not a part of the Go release -->
<!-- CL 431335: cmd/api: make check pickier about api/*.txt -->
<!-- CL 447896 api: add newline to 55301.txt; modified api/next/55301.txt -->
<!-- CL 449215 api/next/54299: add missing newline; modified api/next/54299.txt -->
<!-- CL 433057 cmd: update vendored golang.org/x/tools for multiple error wrapping -->
<!-- CL 423362 crypto/internal/boring: update to newer boringcrypto, add arm64 -->
<!-- https://go.dev/issue/53481 x/cryptobyte ReadUint64, AddUint64 -->
<!-- https://go.dev/issue/51994 x/crypto/ssh -->
<!-- https://go.dev/issue/55358 x/exp/slices -->
<!-- https://go.dev/issue/54714 x/sys/unix -->
<!-- https://go.dev/issue/50035 https://go.dev/issue/54237 x/time/rate -->
<!-- CL 345488 strconv optimization -->
<!-- CL 428757 reflect deprecation, rolled back -->
<!-- https://go.dev/issue/49390 compile -l -N is fully supported -->
<!-- https://go.dev/issue/54619 x/tools -->
<!-- CL 448898 reverted -->
<!-- https://go.dev/issue/54850 x/net/http2 Transport.MaxReadFrameSize -->
<!-- https://go.dev/issue/56054 x/net/http2 SETTINGS_HEADER_TABLE_SIZE -->
<!-- CL 450375 reverted -->
<!-- CL 453259 tracking deprecations in api -->
<!-- CL 453260 tracking darwin port in api -->
<!-- CL 453615 fix deprecation comment in archive/tar -->
<!-- CL 453616 fix deprecation comment in archive/zip -->
<!-- CL 453617 fix deprecation comment in encoding/csv -->
<!-- https://go.dev/issue/54661 x/tools/go/analysis -->
<!-- CL 423359, https://go.dev/issue/51317 arena -->
