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

<p>
  <strong>
    Go 1.20 is not yet released. These are work-in-progress
    release notes. Go 1.20 is expected to be released in February 2023.
  </strong>
</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>
  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 423359, https://go.dev/issue/51317 -->
  The runtime now has experimental support for memory-safe arena allocation
  that makes it possible to eagerly free memory in bulk.
  When used appropriately, it has the potential to improve CPU performance by
  up to 15% in memory-allocation-heavy applications.
  To try it out, build your Go program with <code>GOEXPERIMENT=arenas</code>,
  which will make the <code>arena</code> package visible to your program.
  Source files that import the <code>arena</code> package must require the
  <code>goexperiment.arenas</code> build tag.
</p>

<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%.
  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 bugs and enables
  local types in generic functions and methods.
</p>

<p><!-- https://go.dev/issue/56103, CL 445598 -->
  The compiler now <a href="https://go.dev/issue/56103">disallows anonymous interface cycles</a>.
</p>

<p><!-- https://go.dev/issue/49569 -->
  Relative to Go 1.19, generated code performance is generally slightly improved,
  build wall times are slightly increased, build user times are slightly decreased.
</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 direct support for Elliptic Curve Diffie-Hellman key exchange
  over NIST curves and Curve25519.
</p>
<p>
  Programs should prefer to use <code>crypto/ecdh</code>
  or <a href="/pkg/crypto/ecdsa/"><code>crypto/ecdsa</code></a>
  instead of the lower-level functionality in <a href="/pkg/crypto/elliptic/"><code>crypto/elliptic</code></a>.
</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(0) // 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><!-- 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/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/34648 -->
      Use of custom <a href="/pkg/crypto/elliptic/#Curve"><code>Curve</code></a> implementations
      not provided by this package (that is, curves other than
      <a href="/pkg/crypto/elliptic/#P224"><code>P224</code></a>,
      <a href="/pkg/crypto/elliptic/#P256"><code>P256</code></a>,
      <a href="/pkg/crypto/elliptic/#P384"><code>P384</code></a>, and
      <a href="/pkg/crypto/elliptic/#P521"><code>P521</code></a>)
      is deprecated.
    </p>
  </dd>
</dl><!-- crypto/elliptic -->

<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 encryption.
    </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 -->
      The TLS client now shares parsed certificates across all clients actively using that certificate.
      The 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 -->
      <a href="/pkg/crypto/x509/#CreateCertificateRequest"><code>CreateCertificateRequest</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/#CreateCertificate"><code>CreateCertificate</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>.
      X.509 unmarshaling continues to unmarshal elliptic curve keys into
      <code>*ecdsa.PublicKey</code> and <code>*ecdsa.PrivateKey</code>.
      Use their new <code>ECDH</code> methods to convert to the <code>crypto/ecdh</code> form.
    </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 the
      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="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/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>
  </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>
  </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</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/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/strings/#Clone"><code>Clone</code></a> function
      allocates a copy of a string.
    </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>
  </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> and
      <a href="/pkg/time/#Time.UnmarshalJSON"><code>Time.UnmarshalJSON</code></a> methods
      are 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 -->
