| <!--{ |
| "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> |
| TODO: complete this section |
| </p> |
| |
| <h2 id="ports">Ports</h2> |
| |
| <p> |
| TODO: complete this section, or delete if not needed |
| </p> |
| |
| <h2 id="tools">Tools</h2> |
| |
| <h3 id="go-command">Go command</h3> |
| |
| <p><!-- https://go.dev/issue/38687, CL 421440 --> |
| TODO: <a href="https://go.dev/cl/421440">https://go.dev/cl/421440</a>: cmd/go: add go generate -skip flag |
| </p> |
| |
| <p><!-- https://go.dev/issue/45454 --> |
| TODO: <a href="https://go.dev/issue/45454">https://go.dev/issue/45454</a>: provide build tags for architecture environment variables |
| </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> |
| |
| <h3 id="vet">Vet</h3> |
| |
| <p><!-- https://go.dev/issue/48801, CL 354010 --> |
| TODO: <a href="https://go.dev/issue/48801">https://go.dev/issue/48801</a>: check for time formats with 2006-02-01 |
| </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 --> |
| TODO: <a href="https://go.dev/issue/44505">https://go.dev/issue/44505</a>: adopt Go 1.17 as bootstrap toolchain for Go 1.20 |
| </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="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="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt> |
| <dd> |
| <p><!-- CL 407176 --> |
| TODO: <a href="https://go.dev/cl/407176">https://go.dev/cl/407176</a>: strings, bytes: add CutPrefix and CutSuffix |
| </p> |
| |
| <p><!-- CL 359675 --> |
| TODO: <a href="https://go.dev/cl/359675">https://go.dev/cl/359675</a>: bytes: add Clone function |
| </p> |
| </dd> |
| </dl><!-- bytes --> |
| |
| <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/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="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> |
| </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 --> |
| TODO: <a href="https://go.dev/cl/420274">https://go.dev/cl/420274</a>: encoding/binary: ReadUvarint return io.ErrUnexpectedEOF when read at least 1 byte |
| </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 --> |
| TODO: <a href="https://go.dev/issue/53346">https://go.dev/issue/53346</a>: Add (*Encoder).Close() to check for unclosed elements |
| </p> |
| |
| <p><!-- CL 424777 --> |
| TODO: <a href="https://go.dev/cl/424777">https://go.dev/cl/424777</a>: encoding/xml: add (*Encoder).Close |
| </p> |
| </dd> |
| </dl><!-- encoding/xml --> |
| |
| <dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt> |
| <dd> |
| <p><!-- https://go.dev/issue/51668 --> |
| TODO: <a href="https://go.dev/issue/51668">https://go.dev/issue/51668</a>: add FormatString(State) string |
| </p> |
| |
| <p><!-- CL 400875 --> |
| TODO: <a href="https://go.dev/cl/400875">https://go.dev/cl/400875</a>: fmt: add a function to recover the original format string given a State; modified api/next/51668.txt |
| </p> |
| </dd> |
| </dl><!-- fmt --> |
| |
| <dl id="go/build"><dt><a href="/pkg/go/build/">go/build</a></dt> |
| <dd> |
| <p><!-- CL 421434 --> |
| TODO: <a href="https://go.dev/cl/421434">https://go.dev/cl/421434</a>: go/build: add GO$GOARCH-based ToolTags |
| </p> |
| </dd> |
| </dl><!-- go/build --> |
| |
| <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 --> |
| TODO: <a href="https://go.dev/issue/45899">https://go.dev/issue/45899</a>: add OffsetWriter, NewOffsetWriter |
| </p> |
| |
| <p><!-- CL 406776 --> |
| TODO: <a href="https://go.dev/cl/406776">https://go.dev/cl/406776</a>: io: add OffsetWriter, NewOffsetWriter; modified api/next/45899.txt |
| </p> |
| </dd> |
| </dl><!-- io --> |
| |
| <dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt> |
| <dd> |
| <p><!-- https://go.dev/issue/41773 --> |
| TODO: <a href="https://go.dev/issue/41773">https://go.dev/issue/41773</a>: add Server.OptionsHandler to allow custom handling of OPTIONS * |
| </p> |
| |
| <p><!-- CL 356410 --> |
| TODO: <a href="https://go.dev/cl/356410">https://go.dev/cl/356410</a>: net/http: add Server.DisableOptionsHandler for custom handling of OPTIONS *; modified api/next/41773.txt |
| </p> |
| </dd> |
| </dl><!-- net/http --> |
| |
| <dl id="net/http/httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt> |
| <dd> |
| <p><!-- https://go.dev/issue/50465 --> |
| TODO: <a href="https://go.dev/issue/50465">https://go.dev/issue/50465</a>: add X-Forwarded-Proto and X-Forwarded-Host by default |
| </p> |
| |
| <p><!-- https://go.dev/issue/53002 --> |
| TODO: <a href="https://go.dev/issue/53002">https://go.dev/issue/53002</a>: replace Director with Rewrite |
| </p> |
| |
| <p><!-- CL 407214 --> |
| TODO: <a href="https://go.dev/cl/407214">https://go.dev/cl/407214</a>: net/http/httputil: add ReverseProxy.Rewrite; modified api/next/53002.txt |
| </p> |
| |
| <p><!-- CL 407414 --> |
| TODO: <a href="https://go.dev/cl/407414">https://go.dev/cl/407414</a>: net/http/httputil: add X-Forwarded-{Host,Proto} headers in ReverseProxy |
| </p> |
| </dd> |
| </dl><!-- net/http/httputil --> |
| |
| <dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt> |
| <dd> |
| <p><!-- CL 345488 --> |
| TODO: <a href="https://go.dev/cl/345488">https://go.dev/cl/345488</a>: strconv: optimize Parse for []byte arguments |
| </p> |
| </dd> |
| </dl><!-- strconv --> |
| |
| <dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt> |
| <dd> |
| <p><!-- https://go.dev/issue/42537 --> |
| TODO: <a href="https://go.dev/issue/42537">https://go.dev/issue/42537</a>: add CutPrefix and CutSuffix |
| </p> |
| |
| <p><!-- https://go.dev/issue/45038 --> |
| TODO: <a href="https://go.dev/issue/45038">https://go.dev/issue/45038</a>: bytes, strings: add Clone |
| </p> |
| </dd> |
| </dl><!-- strings --> |
| |
| <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> |
| </dd> |
| </dl><!-- syscall --> |
| |
| <dl id="time"><dt><a href="/pkg/time/">time</a></dt> |
| <dd> |
| <p><!-- https://go.dev/issue/52746 --> |
| TODO: <a href="https://go.dev/issue/52746">https://go.dev/issue/52746</a>: add DateTime, DateOnly, TimeOnly format constants |
| </p> |
| |
| <p><!-- CL 412495 --> |
| TODO: <a href="https://go.dev/cl/412495">https://go.dev/cl/412495</a>: time: add DateTime, DateOnly, and TimeOnly |
| </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 --> |
| TODO: <a href="https://go.dev/issue/51896">https://go.dev/issue/51896</a>: add AppendRune |
| </p> |
| |
| <p><!-- CL 409054 --> |
| TODO: <a href="https://go.dev/cl/409054">https://go.dev/cl/409054</a>: unicode/utf16: add AppendRune; modified api/next/51896.txt |
| </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 --> |