<!--{
	"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 three changes to the language.
</p>

<p><!-- https://go.dev/issue/46505 -->
  Go 1.17 added <a href="/ref/spec#Conversions_from_slice_to_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>

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

<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: cmd/go: don't install most GOROOT .a files in pkg -->
  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=json</code>
  (for example, <code>go</code> <code>test</code> <code>-v=json</code>
  or <code>./pkg.test</code> <code>-test.v=json</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>

<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>
  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/">net</a>,
  <a href="/pkg/os/user/">os/user</a>, and
  <a href="/pkg/plugin/">plugin</a>.
  On macOS, the net and os/user 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 net and os/user 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 -->
  TODO coverage
</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>
  TODO: complete this section, or delete if not needed
</p>

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

<p><!-- https://go.dev/issue/49390 -->
  TODO: <a href="https://go.dev/issue/49390">https://go.dev/issue/49390</a>: clarify whether "-l" and "-N" compiler flags are actually supported
</p>

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

<p>
  TODO: complete this section, or delete if not needed
</p>

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

<p><!-- https://go.dev/issue/44505 -->
  When building a Go release from source and GOROOT_BOOTSTRAP is not set,
  previous versions of Go looked for a Go 1.4 or later bootstrap toolchain in the directory $HOME/go1.4 (%HOMEDRIVE%%HOMEPATH%\go1.4 on Windows).
  Go 1.18 and Go 1.19 looked first for $HOME/go1.17 or $HOME/sdk/go1.17 before falling back to $HOME/go1.4,
  in ancitipation 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 $HOME/go1.17.13 or $HOME/sdk/go1.17.13 before falling back to $HOME/go1.4
  (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 <code>crypto/ecdh</code> package</h3>

<p><!-- https://go.dev/issue/52221, CL 398914 -->
  TODO: complete this section
</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</e> 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 occurrances 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>
  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 -->
  The <a href="/pkg/net/http/httputil/#ReverseProxy"><code>httputil.ReverseProxy</code></a>
  forwarding proxy includes a new <code>Rewrite</code> 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 -->
  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>

<p>
  TODO: complete this section
</p>

<dl id="archive/tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/55356 -->
      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 -->
      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 -->
      TODO: <a href="https://go.dev/cl/375977">https://go.dev/cl/375977</a>: context: add APIs for writing and reading cancelation cause; modified api/next/51365.txt
    </p>
  </dd>
</dl><!-- context -->

<dl id="crypto/ed25519"><dt><a href="/pkg/crypto/ed25519/">crypto/ed25519</a></dt>
  <dd>
    <p><!-- CL 373076 -->
      TODO: <a href="https://go.dev/cl/373076">https://go.dev/cl/373076</a>: crypto/ed25519: implement Ed25519ph in Sign and VerifyWithOptions; modified api/next/31804.txt
    </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 -->
      TODO: <a href="https://go.dev/issue/34648">https://go.dev/issue/34648</a>: automatically upgrade CurveParams for known curves and deprecate custom ones
    </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 -->
      TODO: <a href="https://go.dev/issue/19974">https://go.dev/issue/19974</a>: allow hash.Hash for OAEP and MGF1 to be specified independently
    </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 -->
      TODO: <a href="https://go.dev/issue/53021">https://go.dev/issue/53021</a>: add XORBytes
    </p>

    <p><!-- CL 421435 -->
      TODO: <a href="https://go.dev/cl/421435">https://go.dev/cl/421435</a>: crypto/subtle: add XORBytes; modified api/next/53021.txt
    </p>
  </dd>
</dl><!-- crypto/subtle -->

<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
  <dd>
    <p><!-- CL 426455 -->
      TODO: <a href="https://go.dev/cl/426455">https://go.dev/cl/426455</a>: crypto/tls: use certificate cache in client
    </p>
  </dd>
</dl><!-- crypto/tls -->

<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
  <dd>
    <p><!-- CL 420982 -->
      TODO: <a href="https://go.dev/cl/420982">https://go.dev/cl/420982</a>: debug/elf: add new-style LoongArch reloc types; modified api/next/54222.txt
    </p>
    <p><!-- CL 411915 -->
      TODO: <a href="https://go.dev/cl/411915">https://go.dev/cl/411915</a>: debug/elf: fix reloc number of R_PPC64_SECTOFF_LO_DS; modified api/except.txt, api/next/53356.txt
    </p>

    <p><!-- CL 425555 -->
      TODO: <a href="https://go.dev/cl/425555">https://go.dev/cl/425555</a>: debug/elf: define additional PPC64 ELFv2 relocations; modified api/next/54345.txt
    </p>

    <p><!-- CL 429601 -->
      TODO: <a href="https://go.dev/cl/429601">https://go.dev/cl/429601</a>: debug/elf: return error on reading from SHT_NOBITS sections
    </p>

    <p><!-- CL 435415 -->
      TODO: <a href="https://go.dev/cl/435415">https://go.dev/cl/435415</a>: debug/elf: fix typo in R_PPC64_TPREL34 and R_PPC64_DTPREL34; modified api/next/54345.txt
    </p>
  </dd>
</dl><!-- debug/elf -->

<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
  <dd>
    <p><!-- CL 421357 -->
      TODO: <a href="https://go.dev/cl/421357">https://go.dev/cl/421357</a>: debug/pe: add IMAGE_FILE_MACHINE_RISCV{32,64,128}; modified api/next/54251.txt
    </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 -->
      TODO: <a href="https://go.dev/cl/426091">https://go.dev/cl/426091</a>: go/ast: add Range token.Pos to RangeStmt
    </p>

    <p><!-- CL 427955 -->
      TODO: <a href="https://go.dev/cl/427955">https://go.dev/cl/427955</a>: go/ast: record start and end of file in File.File{Start,End}; modified api/next/53202.txt
    </p>
  </dd>
</dl><!-- go/ast -->

<dl id="go/token"><dt><a href="/pkg/go/token/">go/token</a></dt>
  <dd>
    <p><!-- CL 410114 -->
      TODO: <a href="https://go.dev/cl/410114">https://go.dev/cl/410114</a>: go/token: add (*FileSet).RemoveFile(*File) method
    </p>
  </dd>
</dl><!-- go/token -->

<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 -->
      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>
  </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 -->
      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 allowing <code>LookupCNAME</code> to succeed whenever a
      <code>CNAME</code> exists.
    </p>

    <p><!-- https://go.dev/issue/53482 -->
      <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 -->
      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/541360 -->
      The new <a href="/pkg/net/http/#ResponseController"><code>ResponseController</code></a> type provides access to extended per-request
      functionality not handled by the <a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter<code></a> interface.
    <p>

    <p>
      The new <a href="/pkg/net/http/#ResponseController.SetReadDeadline"><code>ResponseController.SetReadDeadline</code></a> and
      <a href="/pkg/net/http/#ResponseController.SetWriteDeadline"><code>ResponseController.SetWriteDeadline</code></a> methods permit setting
      per-request read and write deadlines.
    </p>

    <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 -->
      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 -->
      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 -->
      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">IPv6LinkLocalAllRouters</a>
      and <a href="/pkg/net/netip/#IPv6Loopback">IPv6Loopback</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 -->
      TODO: <a href="https://go.dev/cl/448897">https://go.dev/cl/448897</a>: os: remove special casing of NUL in Windows file operations
    </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 -->
      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/metrics"><dt><a href="/pkg/runtime/metrics/">runtime/metrics</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/47216 -->
      TODO: <a href="https://go.dev/issue/47216">https://go.dev/issue/47216</a>: add GOMAXPROCS, NumCgoCall, GC CPU time
    </p>
  </dd>
</dl><!-- runtime/metrics -->

<dl id="strings"><dt><a href="/pkg/strings/">strings</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 -->
      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 407574 -->
      TODO: <a href="https://go.dev/cl/407574">https://go.dev/cl/407574</a>: syscall: add new CLONE_ flags for Linux
    </p>

    <p><!-- CL 411596 -->
      TODO: <a href="https://go.dev/cl/411596">https://go.dev/cl/411596</a>: syscall: remove FreeBSD 11 and below 64bit inode compatibility shims
    </p>

    <p><!-- CL 417695 -->
      TODO: <a href="https://go.dev/cl/417695">https://go.dev/cl/417695</a>: syscall: add CgroupFD support for ForkExec on Linux
    </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; modified api/next/42537.txt, api/next/43620.txt, api/next/45899.txt, api/next/46746.txt, api/next/50429.txt, api/next/51896.txt, api/next/53482.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 421879: cmd/cgo: add and use runtime/cgo.Incomplete instead of //go:notinheap -->
<!-- https://go.dev/issue/46731: replace `//go:notinheap` with runtime/internal/sys.NotInHeap -->
<!-- CL 345488 strconv optimization -->
<!-- CL 428757 reflect deprecation, rolled back -->
