doc/go1.20: complete, add more library TODOs

Finish all standard library TODOs, including additions
flagged by another run of relnote.

Change-Id: Ib9d22672b13b9775a98262d645aaf1d54e7494df
Reviewed-on: https://go-review.googlesource.com/c/go/+/453295
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
This commit is contained in:
Russ Cox 2022-11-23 18:08:57 -05:00
parent cc7530daa1
commit 76ec47eeec
1 changed files with 171 additions and 96 deletions

View File

@ -68,7 +68,7 @@ Do not send CLs removing the interior tags from such phrases.
<h3 id="go-command">Go command</h3> <h3 id="go-command">Go command</h3>
<p><!-- CL 432535: cmd/go: don't install most GOROOT .a files in pkg --> <p><!-- CL 432535, https://go.dev/issue/47257 -->
The directory <code>$GOROOT/pkg</code> no longer stores The directory <code>$GOROOT/pkg</code> no longer stores
pre-compiled package archives for the standard library: pre-compiled package archives for the standard library:
<code>go</code> <code>install</code> no longer writes them, <code>go</code> <code>install</code> no longer writes them,
@ -101,7 +101,7 @@ Do not send CLs removing the interior tags from such phrases.
the packages named on the command line. the packages named on the command line.
</p> </p>
<p><!-- https://go.dev/issue/45454 --><!-- CL 421434 --> <p><!-- https://go.dev/issue/45454, CL 421434 -->
The <code>go</code> command now defines The <code>go</code> command now defines
architecture feature build tags, such as <code>amd64.v2</code>, architecture feature build tags, such as <code>amd64.v2</code>,
to allow selecting a package implementation file based on the presence to allow selecting a package implementation file based on the presence
@ -156,7 +156,7 @@ Do not send CLs removing the interior tags from such phrases.
<h3 id="cgo">Cgo</h3> <h3 id="cgo">Cgo</h3>
<p> <p><!-- CL 450739 -->
The <code>go</code> command now disables <code>cgo</code> by default The <code>go</code> command now disables <code>cgo</code> by default
on systems without a C toolchain. on systems without a C toolchain.
More specifically, when the <code>CGO_ENABLED</code> environment variable is unset, More specifically, when the <code>CGO_ENABLED</code> environment variable is unset,
@ -205,7 +205,7 @@ Do not send CLs removing the interior tags from such phrases.
<h4 id="vet-loopclosure">Improved detection of loop variable capture by nested functions</h4> <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 --> <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 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> 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 within subtest function bodies. Such references may observe the value of the
@ -221,7 +221,7 @@ Do not send CLs removing the interior tags from such phrases.
<h4 id="vet-timeformat">New diagnostic for incorrect time formats</h4> <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 --> <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) 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 with <a href="/pkg/time/#Time.Format"><code>Time.Format</code></a> and
<a href="/pkg/time/#Parse"><code>time.Parse</code></a>. <a href="/pkg/time/#Parse"><code>time.Parse</code></a>.
@ -238,8 +238,8 @@ Do not send CLs removing the interior tags from such phrases.
<h2 id="compiler">Compiler</h2> <h2 id="compiler">Compiler</h2>
<p><!-- https://go.dev/issue/49390 --> <p>
TODO: <a href="https://go.dev/issue/49390">https://go.dev/issue/49390</a>: clarify whether "-l" and "-N" compiler flags are actually supported TODO: complete this section, or delete if not needed
</p> </p>
<h2 id="linker">Linker</h2> <h2 id="linker">Linker</h2>
@ -266,10 +266,17 @@ Do not send CLs removing the interior tags from such phrases.
<h2 id="library">Core library</h2> <h2 id="library">Core library</h2>
<h3 id="crypto/ecdh">New <code>crypto/ecdh</code> package</h3> <h3 id="crypto/ecdh">New crypto/ecdh package</h3>
<p><!-- https://go.dev/issue/52221, CL 398914 --> <p><!-- https://go.dev/issue/52221, CL 398914, CL 450335 -->
TODO: complete this section 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> </p>
<h3 id="errors">Wrapping multiple errors</h3> <h3 id="errors">Wrapping multiple errors</h3>
@ -299,7 +306,7 @@ Do not send CLs removing the interior tags from such phrases.
<h3 id="http_responsecontroller">HTTP ResponseController</h3> <h3 id="http_responsecontroller">HTTP ResponseController</h3>
<p> <p><!-- CL 436890, https://go.dev/issue/54136 -->
The new The new
<a href="/pkg/net/http/#ResponseController"><code>"net/http".ResponseController</code></a> <a href="/pkg/net/http/#ResponseController"><code>"net/http".ResponseController</code></a>
type provides access to extended per-request functionality not handled by the type provides access to extended per-request functionality not handled by the
@ -330,9 +337,11 @@ func RequestHandler(w ResponseWriter, r *Request) {
<h3 id="reverseproxy_rewrite">New ReverseProxy Rewrite hook</h3> <h3 id="reverseproxy_rewrite">New ReverseProxy Rewrite hook</h3>
<p><!-- https://go.dev/issue/53002 --> <p><!-- https://go.dev/issue/53002, CL 407214 -->
The <a href="/pkg/net/http/httputil/#ReverseProxy"><code>httputil.ReverseProxy</code></a> 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 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. previous <code>Director</code> hook.
</p> </p>
@ -356,7 +365,7 @@ func RequestHandler(w ResponseWriter, r *Request) {
also sets the <code>Host</code> header of the outbound request. also sets the <code>Host</code> header of the outbound request.
</p> </p>
<p><!-- https://go.dev/issue/50465 --> <p><!-- https://go.dev/issue/50465, CL 407414 -->
The The
<a href="/pkg/net/http/httputil/#ProxyRequest.SetXForwarded"><code>ProxyRequest.SetXForwarded</code></a> <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>, method sets the <code>X-Forwarded-For</code>, <code>X-Forwarded-Host</code>,
@ -398,7 +407,7 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="archive/tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt> <dl id="archive/tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/55356 --> <p><!-- https://go.dev/issue/55356, CL 449937 -->
When the <code>GODEBUG=tarinsecurepath=0</code> environment variable is set, When the <code>GODEBUG=tarinsecurepath=0</code> environment variable is set,
<a href="/pkg/archive/tar/#Reader.Next"><code>Reader.Next</code></a> method <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> will now return the error <a href="/pkg/archive/tar/#ErrInsecurePath"><code>ErrInsecurePath</code></a>
@ -440,7 +449,7 @@ proxyHandler := &httputil.ReverseProxy{
but also report whether the string was trimmed. but also report whether the string was trimmed.
</p> </p>
<p><!-- CL 359675 --> <p><!-- CL 359675, https://go.dev/issue/45038 -->
The new <a href="/pkg/bytes/#Clone"><code>Clone</code></a> function The new <a href="/pkg/bytes/#Clone"><code>Clone</code></a> function
allocates a copy of a byte slice. allocates a copy of a byte slice.
</p> </p>
@ -449,16 +458,38 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="context"><dt><a href="/pkg/context/">context</a></dt> <dl id="context"><dt><a href="/pkg/context/">context</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/51365 --><!-- CL 375977 --> <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 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> </p>
</dd> </dd>
</dl><!-- context --> </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> <dl id="crypto/ed25519"><dt><a href="/pkg/crypto/ed25519/">crypto/ed25519</a></dt>
<dd> <dd>
<p><!-- CL 373076 --> <p><!-- CL 373076, CL 404274, https://go.dev/issue/31804 -->
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 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> </p>
</dd> </dd>
</dl><!-- crypto/ed25519 --> </dl><!-- crypto/ed25519 -->
@ -466,27 +497,31 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="crypto/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt> <dl id="crypto/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/34648 --> <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 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> </p>
</dd> </dd>
</dl><!-- crypto/elliptic --> </dl><!-- crypto/elliptic -->
<dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt> <dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt>
<dd> <dd>
<p><!-- CL 418874 --><!-- https://go.dev/issue/19974 --> <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 The new field <a href="/pkg/crypto/rsa/#OAEPOptions.MGFHash">OAEPOptions.MGFHash</a>
allows configuring the MGF1 hash separately for OAEP encryption.
</p> </p>
</dd> </dd>
</dl><!-- crypto/rsa --> </dl><!-- crypto/rsa -->
<dl id="crypto/subtle"><dt><a href="/pkg/crypto/subtle/">crypto/subtle</a></dt> <dl id="crypto/subtle"><dt><a href="/pkg/crypto/subtle/">crypto/subtle</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/53021 --> <p><!-- https://go.dev/issue/53021, CL 421435 -->
TODO: <a href="https://go.dev/issue/53021">https://go.dev/issue/53021</a>: add XORBytes The new function <a href="/pkg/crypto/subtle/#XORBytes">XORBytes</a>
</p> XORs two byte slices together.
<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> </p>
</dd> </dd>
</dl><!-- crypto/subtle --> </dl><!-- crypto/subtle -->
@ -494,30 +529,60 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt> <dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
<dd> <dd>
<p><!-- CL 426455 --> <p><!-- CL 426455 -->
TODO: <a href="https://go.dev/cl/426455">https://go.dev/cl/426455</a>: crypto/tls: use certificate cache in client 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> </p>
</dd> </dd>
</dl><!-- crypto/tls --> </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 the new TODO LINK TO x/crypto PACKAGE ONCE IT EXISTS.
</p>
</dd>
</dl><!-- crypto/x509 -->
<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt> <dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
<dd> <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 --> <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 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>
<p><!-- CL 411915 --> <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 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>
<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> </p>
</dd> </dd>
</dl><!-- debug/elf --> </dl><!-- debug/elf -->
@ -525,7 +590,7 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt> <dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
<dd> <dd>
<p><!-- CL 421357 --> <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 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> </p>
</dd> </dd>
</dl><!-- debug/pe --> </dl><!-- debug/pe -->
@ -543,12 +608,12 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt> <dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/53346 --><!-- CL 424777 --> <p><!-- https://go.dev/issue/53346, CL 424777 -->
The new <a href="/pkg/encoding/xml/#Encoder.Close"><code>Encoder.Close</code></a> method 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. can be used to check for unclosed elements when finished encoding.
</p> </p>
<p><!-- CL 103875 --><!-- CL 105636 --> <p><!-- CL 103875, CL 105636 -->
The decoder now rejects element and attribute names with more than one colon, The decoder now rejects element and attribute names with more than one colon,
such as <code>&lt;a:b:c&gt;</code>, 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>. as well as namespaces that resolve to an empty string, such as <code>xmlns:a=""</code>.
@ -575,7 +640,7 @@ proxyHandler := &httputil.ReverseProxy{
The <a href="/pkg/fmt/#Errorf"><code>Errorf</code></a> function supports multiple occurrences of 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>. the <code>%w</code> format verb, returning an error that unwraps to the list of all arguments to <code>%w</code>.
</p> </p>
<p><!-- https://go.dev/issue/51668 --><!-- CL 400875 --> <p><!-- https://go.dev/issue/51668, CL 400875 -->
The new <a href="/pkg/fmt/#FormatString"><code>FormatString</code></a> function recovers the 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>, 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>. which can be useful in <a href="/pkg/fmt/#Formatter"><code>Formatter</code></a>.
@ -586,27 +651,32 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="go/ast"><dt><a href="/pkg/go/ast/">go/ast</a></dt> <dl id="go/ast"><dt><a href="/pkg/go/ast/">go/ast</a></dt>
<dd> <dd>
<p><!-- CL 426091 --> <p><!-- CL 426091, https://go.dev/issue/50429 -->
TODO: <a href="https://go.dev/cl/426091">https://go.dev/cl/426091</a>: go/ast: add Range token.Pos to RangeStmt 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>
<p><!-- CL 427955, https://go.dev/issue/53202 -->
<p><!-- CL 427955 --> The new <a href="/pkg/go/ast/#File.FileStart"><code>File.FileStart</code></a>
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 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> </p>
</dd> </dd>
</dl><!-- go/ast --> </dl><!-- go/ast -->
<dl id="go/token"><dt><a href="/pkg/go/token/">go/token</a></dt> <dl id="go/token"><dt><a href="/pkg/go/token/">go/token</a></dt>
<dd> <dd>
<p><!-- CL 410114 --> <p><!-- CL 410114, https://go.dev/issue/53200 -->
TODO: <a href="https://go.dev/cl/410114">https://go.dev/cl/410114</a>: go/token: add (*FileSet).RemoveFile(*File) method 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> </p>
</dd> </dd>
</dl><!-- go/token --> </dl><!-- go/token -->
<dl id="io"><dt><a href="/pkg/io/">io</a></dt> <dl id="io"><dt><a href="/pkg/io/">io</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/45899 --><!-- CL 406776 --> <p><!-- https://go.dev/issue/45899, CL 406776 -->
The new <a href="/pkg/io/#OffsetWriter"><code>OffsetWriter</code></a> wraps an underlying The new <a href="/pkg/io/#OffsetWriter"><code>OffsetWriter</code></a> wraps an underlying
<a href="/pkg/io/#WriterAt"><code>WriterAt</code></a> <a href="/pkg/io/#WriterAt"><code>WriterAt</code></a>
and provides <code>Seek</code>, <code>Write</code>, and <code>WriteAt</code> methods and provides <code>Seek</code>, <code>Write</code>, and <code>WriteAt</code> methods
@ -617,7 +687,7 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="io/fs"><dt><a href="/pkg/io/fs/">io/fs</a></dt> <dl id="io/fs"><dt><a href="/pkg/io/fs/">io/fs</a></dt>
<dd> <dd>
<p><!-- CL 363814 --><!-- https://go.dev/issue/47209 --> <p><!-- CL 363814, https://go.dev/issue/47209 -->
The new error <a href="/pkg/io/fs/#SkipAll"><code>SkipAll</code></a> 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> terminates a <a href="/pkg/io/fs/#WalkDir"><code>WalkDir</code></a>
immediately but successfully. immediately but successfully.
@ -627,7 +697,7 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="math/rand"><dt><a href="/pkg/math/rand/">math/rand</a></dt> <dl id="math/rand"><dt><a href="/pkg/math/rand/">math/rand</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/54880 --><!-- CL 436955 --> <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 <a href="/pkg/math/rand/">math/rand</a> package now automatically seeds
the global random number generator the global random number generator
(used by top-level functions like <code>Float64</code> and <code>Int</code>) with a random value, (used by top-level functions like <code>Float64</code> and <code>Int</code>) with a random value,
@ -639,6 +709,10 @@ proxyHandler := &httputil.ReverseProxy{
Programs that need the earlier consistent global seeding behavior can set Programs that need the earlier consistent global seeding behavior can set
<code>GODEBUG=randautoseed=0</code> in their environment. <code>GODEBUG=randautoseed=0</code> in their environment.
</p> </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> </dd>
</dl><!-- math/rand --> </dl><!-- math/rand -->
@ -662,7 +736,7 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="net"><dt><a href="/pkg/net/">net</a></dt> <dl id="net"><dt><a href="/pkg/net/">net</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/50101 --> <p><!-- https://go.dev/issue/50101, CL 446179 -->
The <a href="/pkg/net/#LookupCNAME"><code>LookupCNAME</code></a> The <a href="/pkg/net/#LookupCNAME"><code>LookupCNAME</code></a>
function now consistently returns the contents function now consistently returns the contents
of a <code>CNAME</code> record when one exists. Previously on Unix systems and of a <code>CNAME</code> record when one exists. Previously on Unix systems and
@ -674,14 +748,14 @@ proxyHandler := &httputil.ReverseProxy{
<code>CNAME</code> exists. <code>CNAME</code> exists.
</p> </p>
<p><!-- https://go.dev/issue/53482 --> <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>, <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 indicating an operationally active interface. An interface which is administratively
configured but not active (for example, because the network cable is not connected) configured but not active (for example, because the network cable is not connected)
will have <code>FlagUp</code> set but not <code>FlagRunning</code>. will have <code>FlagUp</code> set but not <code>FlagRunning</code>.
</p> </p>
<p><!-- https://go.dev/issue/55301 --> <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 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 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. accepts the dial context as a parameter.
@ -706,34 +780,23 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt> <dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
<dd> <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 --> <p><!-- https://go.dev/issue/51914 -->
The <a href="/pkg/net/http/#ResponseWriter.WriteHeader"><code>ResponseWriter.WriteHeader</code></a> function now supports sending The <a href="/pkg/net/http/#ResponseWriter.WriteHeader"><code>ResponseWriter.WriteHeader</code></a> function now supports sending
<code>1xx</code> status codes. <code>1xx</code> status codes.
</p> </p>
<p><!-- https://go.dev/issue/41773 --> <p><!-- https://go.dev/issue/41773, CL 356410 -->
The new <a href="/pkg/net/http/#Server.DisableGeneralOptionsHandler"><code>Server.DisableGeneralOptionsHandler</code></a> configuration setting The new <a href="/pkg/net/http/#Server.DisableGeneralOptionsHandler"><code>Server.DisableGeneralOptionsHandler</code></a> configuration setting
allows disabling the default <code>OPTIONS *</code> handler. allows disabling the default <code>OPTIONS *</code> handler.
</p> </p>
<p><!-- https://go.dev/issue/54299 --> <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 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 when a <code>Transport</code> receives an HTTP response from a proxy
for a <code>CONNECT</code> request. for a <code>CONNECT</code> request.
</p> </p>
<p><!-- https://go.dev/issue/53960 --> <p><!-- https://go.dev/issue/53960, CL 418614 -->
The HTTP server now accepts HEAD requests containing a body, The HTTP server now accepts HEAD requests containing a body,
rather than rejecting them as invalid. rather than rejecting them as invalid.
</p> </p>
@ -755,7 +818,7 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="net/netip"><dt><a href="/pkg/net/netip/">net/netip</a></dt> <dl id="net/netip"><dt><a href="/pkg/net/netip/">net/netip</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/51766 --><!-- https://go.dev/issue/51777 --><!-- CL 412475 --> <p><!-- https://go.dev/issue/51766, https://go.dev/issue/51777, CL 412475 -->
The new <a href="/pkg/net/netip/#IPv6LinkLocalAllRouters">IPv6LinkLocalAllRouters</a> The new <a href="/pkg/net/netip/#IPv6LinkLocalAllRouters">IPv6LinkLocalAllRouters</a>
and <a href="/pkg/net/netip/#IPv6Loopback">IPv6Loopback</a> functions and <a href="/pkg/net/netip/#IPv6Loopback">IPv6Loopback</a> functions
are the <code>net/netip</code> equivalents of are the <code>net/netip</code> equivalents of
@ -768,7 +831,9 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="os"><dt><a href="/pkg/os/">os</a></dt> <dl id="os"><dt><a href="/pkg/os/">os</a></dt>
<dd> <dd>
<p><!-- CL 448897 --> <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 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>
<p><!-- https://go.dev/issue/52747, CL 405275 --> <p><!-- https://go.dev/issue/52747, CL 405275 -->
On Windows, <a href="/pkg/os/#File.Stat"><code>File.Stat</code></a> On Windows, <a href="/pkg/os/#File.Stat"><code>File.Stat</code></a>
@ -801,12 +866,12 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="path/filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt> <dl id="path/filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt>
<dd> <dd>
<p><!-- CL 363814 --><!-- https://go.dev/issue/47209 --> <p><!-- CL 363814, https://go.dev/issue/47209 -->
The new error <a href="/pkg/path/filepath/#SkipAll"><code>SkipAll</code></a> 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> terminates a <a href="/pkg/path/filepath/#Walk"><code>Walk</code></a>
immediately but successfully. immediately but successfully.
</p> </p>
<p><!-- https://go.dev/issue/56219 --> <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 The new <a href="/pkg/path/filepath/#IsLocal"><code>IsLocal</code></a> function reports whether a path is
lexically local to a directory. lexically local to a directory.
For example, if <code>IsLocal(p)</code> is <code>true</code>, For example, if <code>IsLocal(p)</code> is <code>true</code>,
@ -818,19 +883,19 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt> <dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/46746 --><!-- CL 423794 --> <p><!-- https://go.dev/issue/46746, CL 423794 -->
The new <a href="/pkg/reflect/#Value.Comparable"><code>Value.Comparable</code></a> and 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 <a href="/pkg/reflect/#Value.Equal"><code>Value.Equal</code></a> methods
can be used to compare two <code>Value</code>s for equality. 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. <code>Comparable</code> reports whether <code>Equal</code> is a valid operation for a given <code>Value</code> receiver.
</p> </p>
<p><!-- https://go.dev/issue/48000 --><!-- CL 389635 --> <p><!-- https://go.dev/issue/48000, CL 389635 -->
The new <a href="/pkg/reflect/#Value.Grow"><code>Value.Grow</code></a> method 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. extends a slice to guarantee space for another <code>n</code> elements.
</p> </p>
<p><!-- https://go.dev/issue/52376 --><!-- CL 411476 --> <p><!-- https://go.dev/issue/52376, CL 411476 -->
The new <a href="/pkg/reflect/#Value.SetZero"><code>Value.SetZero</code></a> method 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. sets a value to be the zero value for its type.
</p> </p>
@ -861,14 +926,17 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="runtime/metrics"><dt><a href="/pkg/runtime/metrics/">runtime/metrics</a></dt> <dl id="runtime/metrics"><dt><a href="/pkg/runtime/metrics/">runtime/metrics</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/47216 --> <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 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>),
and various measures of time spent in garbage collection.
</p> </p>
</dd> </dd>
</dl><!-- runtime/metrics --> </dl><!-- runtime/metrics -->
<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt> <dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
<dd> <dd>
<p><!-- CL 407176 --> <p><!-- CL 407176, https://go.dev/issue/42537 -->
The new The new
<a href="/pkg/bytes/#CutPrefix"><code>CutPrefix</code></a> and <a href="/pkg/bytes/#CutPrefix"><code>CutPrefix</code></a> and
<a href="/pkg/bytes/#CutSuffix"><code>CutSuffix</code></a> functions <a href="/pkg/bytes/#CutSuffix"><code>CutSuffix</code></a> functions
@ -877,7 +945,7 @@ proxyHandler := &httputil.ReverseProxy{
but also report whether the string was trimmed. but also report whether the string was trimmed.
</p> </p>
<p><!-- CL 359675 --> <p><!-- CL 359675, https://go.dev/issue/45038 -->
The new <a href="/pkg/strings/#Clone"><code>Clone</code></a> function The new <a href="/pkg/strings/#Clone"><code>Clone</code></a> function
allocates a copy of a string. allocates a copy of a string.
</p> </p>
@ -897,16 +965,17 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt> <dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
<dd> <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 --> <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 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>
<p><!-- CL 417695 --> <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 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> </p>
</dd> </dd>
</dl><!-- syscall --> </dl><!-- syscall -->
@ -923,14 +992,14 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="time"><dt><a href="/pkg/time/">time</a></dt> <dl id="time"><dt><a href="/pkg/time/">time</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/52746 --><!-- CL 412495 --> <p><!-- https://go.dev/issue/52746, CL 412495 -->
The new time layout constants <a href="/pkg/time/#DateTime"><code>DateTime</code></a>, 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/#DateOnly"><code>DateOnly</code></a>, and
<a href="/pkg/time/#TimeOnly"><code>TimeOnly</code></a> <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. provide names for three of the most common layout strings used in a survey of public Go source code.
</p> </p>
<p><!-- CL 382734 --><!-- https://go.dev/issue/50770 --> <p><!-- CL 382734, https://go.dev/issue/50770 -->
The new <a href="/pkg/time/#Time.Compare"><code>Time.Compare</code></a> method The new <a href="/pkg/time/#Time.Compare"><code>Time.Compare</code></a> method
compares two times. compares two times.
</p> </p>
@ -951,7 +1020,7 @@ proxyHandler := &httputil.ReverseProxy{
<dl id="unicode/utf16"><dt><a href="/pkg/unicode/utf16/">unicode/utf16</a></dt> <dl id="unicode/utf16"><dt><a href="/pkg/unicode/utf16/">unicode/utf16</a></dt>
<dd> <dd>
<p><!-- https://go.dev/issue/51896 --><!-- CL 409054 --> <p><!-- https://go.dev/issue/51896, CL 409054 -->
The new <a href="/pkg/unicode/utf16/#AppendRune"><code>AppendRune</code></a> 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, 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>. analogous to <a href="/pkg/unicode/utf8/#AppendRune"><code>utf8.AppendRune</code></a>.
@ -962,7 +1031,7 @@ proxyHandler := &httputil.ReverseProxy{
<!-- Silence false positives from x/build/cmd/relnote: --> <!-- 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/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 --> <!-- 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 431335: cmd/api: make check pickier about api/*.txt -->
<!-- CL 447896 api: add newline to 55301.txt; modified api/next/55301.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 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 433057 cmd: update vendored golang.org/x/tools for multiple error wrapping -->
@ -976,3 +1045,9 @@ proxyHandler := &httputil.ReverseProxy{
<!-- https://go.dev/issue/46731: replace `//go:notinheap` with runtime/internal/sys.NotInHeap --> <!-- https://go.dev/issue/46731: replace `//go:notinheap` with runtime/internal/sys.NotInHeap -->
<!-- CL 345488 strconv optimization --> <!-- CL 345488 strconv optimization -->
<!-- CL 428757 reflect deprecation, rolled back --> <!-- 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 -->