2 "Title": "Go 1.21 Release Notes",
7 NOTE: In this document and others in this directory, the convention is to
8 set fixed-width phrases with non-fixed-width spaces, as in
9 <code>hello</code> <code>world</code>.
10 Do not send CLs removing the interior tags from such phrases.
14 main ul li { margin: 0.5em 0; }
17 <h2 id="introduction">DRAFT RELEASE NOTES — Introduction to Go 1.21</h2>
21 Go 1.21 is not yet released. These are work-in-progress
22 release notes. Go 1.21 is expected to be released in August 2023.
26 <h2 id="language">Changes to the language</h2>
28 <p><!-- https://go.dev/issue/56986 -->
29 TODO: <a href="https://go.dev/issue/56986">https://go.dev/issue/56986</a>: extended backwards compatibility for Go
32 <!-- https://go.dev/issue/57969 -->
34 <!-- add GOEXPERIMENT=loopvar -->
39 TODO: complete this section
42 <h2 id="ports">Ports</h2>
46 <!-- cmd/dist: default to GOARM=7 on all non-arm systems -->
49 <!-- https://go.dev/issue/38248 -->
51 <!-- replace CallImport with go:wasmimport directive -->
54 <!-- https://go.dev/issue/59149 -->
56 <!-- allow the use of go:wasmimport globally -->
61 <!-- cmd/compile: remove go:wasmimport restriction -->
65 <h3 id="wasip1">WebAssembly System Interface</h3>
67 <p><!-- https://go.dev/issue/58141 -->
68 Go 1.21 adds an experimental port to the <a href="https://wasi.dev/">
69 WebAssembly System Interface (WASI)</a>, Preview 1
70 (<code>GOOS=wasip1</code>, <code>GOARCH=wasm</code>).
74 As a result of the addition of the new <code>GOOS</code> value
75 "<code>wasip1</code>", Go files named <code>*_wasip1.go</code>
76 will now be <a href="/pkg/go/build/#hdr-Build_Constraints">ignored
77 by Go tools</a> except when that <code>GOOS</code> value is being
79 If you have existing filenames matching that pattern, you will
83 <h2 id="tools">Tools</h2>
85 <!-- https://go.dev/issue/15513 -->
87 <!-- support compiling all tests without running -->
90 <h3 id="go-command">Go command</h3>
92 <p><!-- https://go.dev/issue/58099, CL 474236 -->
93 The <code>-pgo</code> build flag now defaults to <code>-pgo=auto</code>,
94 and the restriction of specifying a single main package on the command
95 line is now removed. If a file named <code>default.pgo</code> is present
96 in the main package's directory, the <code>go</code> command will use
97 it to enable profile-guided optimization for building the corresponding
101 <p><!-- CL 453603 -->
102 TODO: <a href="https://go.dev/cl/453603">https://go.dev/cl/453603</a>: cmd/go, go/build: parse directives in file headers; modified api/next/56986.txt
107 <!-- cmd/go: make go test build multiple executables; The go test command now supports using the -c flag with multiple packages. -->
110 <h2 id="runtime">Runtime</h2>
113 TODO: complete this section, or delete if not needed
116 <p><!-- https://go.dev/issue/7181 -->
117 When printing very deep stacks, the runtime now prints the first 50
118 (innermost) frames followed by the bottom 50 (outermost) frames,
119 rather than just printing the first 100 frames. This makes it easier
120 to see how deeply recursive stacks started, and is especially
121 valuable for debugging stack overflows.
124 <h2 id="compiler">Compiler</h2>
128 <!-- cmd/cgo: reject attempts to declare methods on C types -->
133 <!-- cmd/compile: enable deadcode of unreferenced large global maps -->
137 TODO: complete this section, or delete if not needed
140 <h2 id="linker">Linker</h2>
144 <!-- cmd/link: generate .xdata PE section -->
148 <!-- cmd/link: linker portion of dead map removal -->
152 TODO: complete this section, or delete if not needed
155 <h2 id="library">Core library</h2>
157 <h3 id="minor_library_changes">Minor changes to the library</h3>
160 As always, there are various minor changes and updates to the library,
161 made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
163 There are also various performance improvements, not enumerated here.
166 <p><!-- CL 456837 -->
167 TODO: <a href="https://go.dev/cl/456837">https://go.dev/cl/456837</a>: all: upgrade Unicode from 13.0.0 to 15.0.0; modified api/except.txt, api/next/55079.txt
171 TODO: complete this section
174 <dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
176 <p><!-- https://go.dev/issue/53685 -->
177 TODO: <a href="https://go.dev/issue/53685">https://go.dev/issue/53685</a>: add Buffer.Available and Buffer.AvailableBuffer
180 <p><!-- CL 474635 -->
181 TODO: <a href="https://go.dev/cl/474635">https://go.dev/cl/474635</a>: bytes: add Buffer.Available and Buffer.AvailableBuffer; modified api/next/53685.txt
186 <dl id="context"><dt><a href="/pkg/context/">context</a></dt>
188 <p><!-- https://go.dev/issue/40221, CL 479918 -->
189 The new <a href="/pkg/context/#WithoutCancel"><code>WithoutCancel</code></a>
190 function returns a copy of a context that is not canceled when the original
193 <p><!-- https://go.dev/issue/56661, CL 449318 -->
194 The new <a href="/pkg/context/#WithDeadlineCause"><code>WithDeadlineCause</code></a>
195 and <a href="/pkg/context/#WithTimeoutCause"><code>WithTimeoutCause</code></a>
196 functions provide a way to set a context cancellation cause when a deadline or
197 timer expires. The cause may be retrieved with the
198 <a href="/pkg/context/#Cause"><code>Cause</code></a> function.
200 <p><!-- https://go.dev/issue/57928, CL 482695 -->
201 The new <a href="/pkg/context/#AfterFunc"><code>AfterFunc</code></a>
202 function registers a function to run after a context has been cancelled.
207 <dl id="crypto/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt>
209 <p><!-- CL 459977 -->
210 TODO: <a href="https://go.dev/cl/459977">https://go.dev/cl/459977</a>: crypto/elliptic: deprecate unsafe APIs; modified api/next/34648.txt, api/next/52221.txt
213 </dl><!-- crypto/elliptic -->
215 <dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt>
217 <p><!-- https://go.dev/issue/56921 -->
218 TODO: <a href="https://go.dev/issue/56921">https://go.dev/issue/56921</a>: deprecate GenerateMultiPrimeKey and PrecomputedValues.CRTValues
221 <p><!-- CL 459976 -->
222 TODO: <a href="https://go.dev/cl/459976">https://go.dev/cl/459976</a>: crypto/rsa: deprecate multiprime RSA support; modified api/next/56921.txt
225 </dl><!-- crypto/rsa -->
227 <dl id="crypto/sha1"><dt><a href="/pkg/crypto/sha1/">crypto/sha1</a></dt>
229 <p><!-- CL 483815 -->
230 TODO: <a href="https://go.dev/cl/483815">https://go.dev/cl/483815</a>: crypto/sha1: add WriteString and WriteByte method
233 </dl><!-- crypto/sha1 -->
235 <dl id="crypto/sha256"><dt><a href="/pkg/crypto/sha256/">crypto/sha256</a></dt>
237 <p><!-- https://go.dev/issue/50543 -->
238 TODO: <a href="https://go.dev/issue/50543">https://go.dev/issue/50543</a>: add native SHA256 instruction implementation for AMD64
241 <p><!-- CL 408795 -->
242 TODO: <a href="https://go.dev/cl/408795">https://go.dev/cl/408795</a>: crypto/sha256: add sha-ni implementation; crypto/sha256 uses Intel SHA extensions on new enough x86 processors, making it 3-4X faster.
245 <p><!-- CL 481478 -->
246 TODO: <a href="https://go.dev/cl/481478">https://go.dev/cl/481478</a>: crypto/sha256: add WriteString and WriteByte method
249 </dl><!-- crypto/sha256 -->
251 <dl id="crypto/sha512"><dt><a href="/pkg/crypto/sha512/">crypto/sha512</a></dt>
253 <p><!-- CL 483816 -->
254 TODO: <a href="https://go.dev/cl/483816">https://go.dev/cl/483816</a>: crypto/sha512: add WriteString and WriteByte method
257 </dl><!-- crypto/sha512 -->
259 <dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
261 <p><!-- https://go.dev/issue/53573 -->
262 TODO: <a href="https://go.dev/issue/53573">https://go.dev/issue/53573</a>: surface ReasonCode inside x509.RevocationList entries
265 <p><!-- CL 468875 -->
266 TODO: <a href="https://go.dev/cl/468875">https://go.dev/cl/468875</a>: crypto/x509: surface ReasonCode in RevocationList API; modified api/next/53573.txt
269 </dl><!-- crypto/x509 -->
271 <dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
273 <p><!-- https://go.dev/issue/56887 -->
274 TODO: <a href="https://go.dev/issue/56887">https://go.dev/issue/56887</a>: add DT_FLAGS_1 (dynamic flags) constants
277 <p><!-- https://go.dev/issue/56892 -->
278 TODO: <a href="https://go.dev/issue/56892">https://go.dev/issue/56892</a>: add (*File).DynValue
281 <p><!-- CL 452496 -->
282 TODO: <a href="https://go.dev/cl/452496">https://go.dev/cl/452496</a>: debug/elf: add DT_FLAGS_1 constants; modified api/next/56887.txt
285 <p><!-- CL 452617 -->
286 TODO: <a href="https://go.dev/cl/452617">https://go.dev/cl/452617</a>: debug/elf: retrieve values for dynamic section tags; modified api/next/56892.txt
289 <p><!-- CL 473256 -->
290 TODO: <a href="https://go.dev/cl/473256">https://go.dev/cl/473256</a>: debug/elf: support zstd compression; modified api/next/55107.txt
293 </dl><!-- debug/elf -->
295 <dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
297 <p><!-- CL 488475 -->
298 TODO: <a href="https://go.dev/cl/488475">https://go.dev/cl/488475</a>: debug/pe: return error on reading from section with uninitialized data
301 </dl><!-- debug/pe -->
303 <dl id="embed"><dt><a href="/pkg/embed/">embed</a></dt>
305 <p><!-- https://go.dev/issue/57803 -->
306 TODO: <a href="https://go.dev/issue/57803">https://go.dev/issue/57803</a>: openFile should implement ReaderAt
309 <p><!-- CL 483235 -->
310 TODO: <a href="https://go.dev/cl/483235">https://go.dev/cl/483235</a>: embed: implement openFile.ReadAt
315 <dl id="errors"><dt><a href="/pkg/errors/">errors</a></dt>
317 <p><!-- https://go.dev/issue/41198 -->
318 TODO: <a href="https://go.dev/issue/41198">https://go.dev/issue/41198</a>: add ErrUnsupported
321 <p><!-- CL 473935 -->
322 TODO: <a href="https://go.dev/cl/473935">https://go.dev/cl/473935</a>: errors: add ErrUnsupported; modified api/next/41198.txt
327 <dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
329 <p><!-- https://go.dev/issue/53747 -->
330 TODO: <a href="https://go.dev/issue/53747">https://go.dev/issue/53747</a>: add BoolFunc(name, usage string, fn func(string)error)
333 <p><!-- CL 476015 -->
334 TODO: <a href="https://go.dev/cl/476015">https://go.dev/cl/476015</a>: flag: add BoolFunc; FlagSet.BoolFunc; modified api/next/53747.txt
337 <p><!-- CL 480215 -->
338 TODO: <a href="https://go.dev/cl/480215">https://go.dev/cl/480215</a>: flag: panic if a flag is defined after being set
343 <dl id="fs"><dt><a href="/pkg/fs/">fs</a></dt>
345 <p><!-- https://go.dev/issue/54451 -->
346 TODO: <a href="https://go.dev/issue/54451">https://go.dev/issue/54451</a>: standard implementations of FileInfo and DirEntry should implement fmt.Stringer
351 <dl id="go/ast"><dt><a href="/pkg/go/ast/">go/ast</a></dt>
353 <p><!-- https://go.dev/issue/28089 -->
354 TODO: <a href="https://go.dev/issue/28089">https://go.dev/issue/28089</a>: add func IsGenerated(*File) bool
357 <p><!-- CL 476276 -->
358 TODO: <a href="https://go.dev/cl/476276">https://go.dev/cl/476276</a>: go/ast: add File.GoVersion; modified api/next/59033.txt
361 <p><!-- CL 487935 -->
362 TODO: <a href="https://go.dev/cl/487935">https://go.dev/cl/487935</a>: go/ast: add IsGenerated(*File) predicate; modified api/next/28089.txt
367 <dl id="go/build"><dt><a href="/pkg/go/build/">go/build</a></dt>
369 <p><!-- CL 453603 -->
370 TODO: <a href="https://go.dev/cl/453603">https://go.dev/cl/453603</a>: cmd/go, go/build: parse directives in file headers; modified api/next/56986.txt
373 </dl><!-- go/build -->
375 <dl id="go/build/constraint"><dt><a href="/pkg/go/build/constraint/">go/build/constraint</a></dt>
377 <p><!-- CL 476275 -->
378 TODO: <a href="https://go.dev/cl/476275">https://go.dev/cl/476275</a>: go/build/constraint: add GoVersion; modified api/next/59033.txt
381 </dl><!-- go/build/constraint -->
383 <dl id="go/token"><dt><a href="/pkg/go/token/">go/token</a></dt>
385 <p><!-- CL 464515 -->
386 TODO: <a href="https://go.dev/cl/464515">https://go.dev/cl/464515</a>: go/token: add (*File).Lines method; modified api/next/57708.txt
389 </dl><!-- go/token -->
391 <dl id="hash/maphash"><dt><a href="/pkg/hash/maphash/">hash/maphash</a></dt>
393 <p><!-- https://go.dev/issue/47342 -->
394 TODO: <a href="https://go.dev/issue/47342">https://go.dev/issue/47342</a>: Provide a `purego` implementation
397 <p><!-- CL 468795 -->
398 TODO: <a href="https://go.dev/cl/468795">https://go.dev/cl/468795</a>: hash/maphash: add purego implementation
401 </dl><!-- hash/maphash -->
403 <dl id="io/fs"><dt><a href="/pkg/io/fs/">io/fs</a></dt>
405 <p><!-- CL 489555 -->
406 TODO: <a href="https://go.dev/cl/489555">https://go.dev/cl/489555</a>: io/fs: add FormatFileInfo and FormatDirEntry functions; modified api/next/54451.txt
411 <dl id="log/slog"><dt><a href="/pkg/log/slog/">log/slog</a></dt>
413 <p><!-- https://go.dev/issue/59060 -->
414 TODO: <a href="https://go.dev/issue/59060">https://go.dev/issue/59060</a>: arg to Record.Attrs should return bool
417 <p><!-- https://go.dev/issue/59141 -->
418 TODO: <a href="https://go.dev/issue/59141">https://go.dev/issue/59141</a>: handle panics in LogValuer.LogValue
421 <p><!-- https://go.dev/issue/59204 -->
422 TODO: <a href="https://go.dev/issue/59204">https://go.dev/issue/59204</a>: change slog.Group signature to ...any
425 <p><!-- https://go.dev/issue/59280 -->
426 TODO: <a href="https://go.dev/issue/59280">https://go.dev/issue/59280</a>: ReplaceAttr gets Source struct instead of file:line
429 <p><!-- https://go.dev/issue/59282 -->
430 TODO: <a href="https://go.dev/issue/59282">https://go.dev/issue/59282</a>: drop only completely empty Attrs
433 <p><!-- https://go.dev/issue/59339 -->
434 TODO: <a href="https://go.dev/issue/59339">https://go.dev/issue/59339</a>: change constructors to NewXXXHandler(io.Writer, *HandlerOptions)
437 <p><!-- https://go.dev/issue/59345 -->
438 TODO: <a href="https://go.dev/issue/59345">https://go.dev/issue/59345</a>: JSONHandler should format everything like json.Marshal
441 <p><!-- CL 477295 -->
442 TODO: <a href="https://go.dev/cl/477295">https://go.dev/cl/477295</a>: log/slog: initial commit; modified api/next/56345.txt
445 <p><!-- CL 484096 -->
446 TODO: <a href="https://go.dev/cl/484096">https://go.dev/cl/484096</a>: log/slog: function argument to Record.Attrs returns bool; modified api/next/59060.txt
449 <p><!-- CL 486376 -->
450 TODO: <a href="https://go.dev/cl/486376">https://go.dev/cl/486376</a>: log/slog: add Source type for source location; modified api/next/59280.txt
453 <p><!-- CL 486415 -->
454 TODO: <a href="https://go.dev/cl/486415">https://go.dev/cl/486415</a>: log/slog: built-in handler constructors take options as a second arg; modified api/next/56345.txt, api/next/59339.txt
457 <p><!-- CL 487855 -->
458 TODO: <a href="https://go.dev/cl/487855">https://go.dev/cl/487855</a>: log/slog: Group takes ...any; modified api/next/56345.txt, api/next/59204.txt
461 </dl><!-- log/slog -->
463 <dl id="maps"><dt><a href="/pkg/maps/">maps</a></dt>
465 <p><!-- https://go.dev/issue/57436 -->
466 TODO: <a href="https://go.dev/issue/57436">https://go.dev/issue/57436</a>: new standard library package based on x/exp/maps
469 <p><!-- CL 464343 -->
470 TODO: <a href="https://go.dev/cl/464343">https://go.dev/cl/464343</a>: maps: new package; modified api/next/57436.txt
475 <dl id="math"><dt><a href="/pkg/math/">math</a></dt>
477 <p><!-- https://go.dev/issue/56491 -->
478 TODO: <a href="https://go.dev/issue/56491">https://go.dev/issue/56491</a>: add Compare and Compare32
481 <p><!-- CL 459435 -->
482 TODO: <a href="https://go.dev/cl/459435">https://go.dev/cl/459435</a>: math: add Compare and Compare32; modified api/next/56491.txt
485 <p><!-- CL 467515 -->
486 TODO: <a href="https://go.dev/cl/467515">https://go.dev/cl/467515</a>: math: add Compare and Compare32; modified api/next/56491.txt
491 <dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
493 <p><!-- https://go.dev/issue/56984 -->
494 TODO: <a href="https://go.dev/issue/56984">https://go.dev/issue/56984</a>: add Int.Float64 conversion (was initially: {ToInt64,ToUint64,Float64})
497 <p><!-- CL 453115 -->
498 TODO: <a href="https://go.dev/cl/453115">https://go.dev/cl/453115</a>: math/big: add Int.Float64 conversion; modified api/next/56984.txt
501 </dl><!-- math/big -->
503 <dl id="net"><dt><a href="/pkg/net/">net</a></dt>
505 <p><!-- https://go.dev/issue/56539 -->
506 TODO: <a href="https://go.dev/issue/56539">https://go.dev/issue/56539</a>: add support for MPTCP
509 <p><!-- https://go.dev/issue/59166 -->
510 TODO: <a href="https://go.dev/issue/59166">https://go.dev/issue/59166</a>: add func (*TCPConn) MultipathTCP() (bool, error)
513 <p><!-- CL 471136 -->
514 TODO: <a href="https://go.dev/cl/471136">https://go.dev/cl/471136</a>: net: mptcp: implement dialMPTCP; modified api/next/56539.txt
517 <p><!-- CL 471137 -->
518 TODO: <a href="https://go.dev/cl/471137">https://go.dev/cl/471137</a>: net: mptcp: implement listenMPTCP; modified api/next/56539.txt
521 <p><!-- CL 471140 -->
522 TODO: <a href="https://go.dev/cl/471140">https://go.dev/cl/471140</a>: net: mptcp: add TCPConn's MultipathTCP checker; modified api/next/59166.txt
527 <dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
529 <p><!-- https://go.dev/issue/44855 -->
530 TODO: <a href="https://go.dev/issue/44855">https://go.dev/issue/44855</a>: add ErrSchemeMismatch
533 <p><!-- CL 382117 -->
534 TODO: <a href="https://go.dev/cl/382117">https://go.dev/cl/382117</a>: net/http: expose "http: server gave HTTP response to HTTPS client" error; modified api/next/44855.txt
537 <p><!-- CL 472636 -->
538 TODO: <a href="https://go.dev/cl/472636">https://go.dev/cl/472636</a>: net/http: support full-duplex HTTP/1 responses; modified api/next/57786.txt
541 <p><!-- CL 494122 -->
542 TODO: <a href="https://go.dev/cl/494122">https://go.dev/cl/494122</a>: net/http: let ErrNotSupported match errors.ErrUnsupported; modified api/next/41198.txt
545 </dl><!-- net/http -->
547 <dl id="os"><dt><a href="/pkg/os/">os</a></dt>
549 <p><!-- https://go.dev/issue/32558 -->
550 TODO: <a href="https://go.dev/issue/32558">https://go.dev/issue/32558</a>: allow Chtimes with time.Time{} to avoid setting time
553 <p><!-- CL 219638 -->
554 TODO: <a href="https://go.dev/cl/219638">https://go.dev/cl/219638</a>: os: make Chtimes accept empty time values to skip file time modification
557 <p><!-- CL 477215 -->
558 TODO: <a href="https://go.dev/cl/477215">https://go.dev/cl/477215</a>: os: avoid creating a new file in Truncate on Windows; os.Truncate on Windows no longer now fails if the file does not exist, consistent with other platforms
561 <p><!-- CL 493036 -->
562 TODO: <a href="https://go.dev/cl/493036">https://go.dev/cl/493036</a>: os, syscall: support ill-formed UTF-16 strings on Windows
567 <dl id="os/user"><dt><a href="/pkg/os/user/">os/user</a></dt>
569 <p><!-- CL 459455 -->
570 TODO: <a href="https://go.dev/cl/459455">https://go.dev/cl/459455</a>: os/user: lookup Linux users and groups via systemd userdb
573 </dl><!-- os/user -->
575 <dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
577 <p><!-- CL 408826, CL 413474 -->
578 In Go 1.21, <a href="/pkg/reflect/#ValueOf"><code>ValueOf</code></a>
579 no longer forces its argument to be allocated on the heap, allowing
580 a <code>Value</code>'s content to be allocated on the stack. Most
581 operations on a <code>Value</code> also allow the underlying value
582 to be stack allocated.
585 <p><!-- https://go.dev/issue/55002 -->
586 TODO: <a href="https://go.dev/issue/55002">https://go.dev/issue/55002</a>: add Value.Clear
589 <p><!-- https://go.dev/issue/56906 -->
590 TODO: <a href="https://go.dev/issue/56906">https://go.dev/issue/56906</a>: deprecate SliceHeader and StringHeader
593 <p><!-- CL 452762 -->
594 TODO: <a href="https://go.dev/cl/452762">https://go.dev/cl/452762</a>: reflect: deprecate SliceHeader and StringHeader; modified api/next/56906.txt
597 </dl><!-- reflect -->
599 <dl id="regexp"><dt><a href="/pkg/regexp/">regexp</a></dt>
601 <p><!-- https://go.dev/issue/46159 -->
602 TODO: <a href="https://go.dev/issue/46159">https://go.dev/issue/46159</a>: support encoding.TextMarshaler
605 <p><!-- CL 479401 -->
606 TODO: <a href="https://go.dev/cl/479401">https://go.dev/cl/479401</a>: regexp: add Regexp.TextMarshaler/TextUnmarshaler; modified api/next/46159.txt
611 <dl id="runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
613 <p><!-- https://go.dev/issue/38651 -->
614 TODO: <a href="https://go.dev/issue/38651">https://go.dev/issue/38651</a>: add 'created by goroutine number' to stack traces
617 <p><!-- https://go.dev/issue/57441 -->
618 TODO: <a href="https://go.dev/issue/57441">https://go.dev/issue/57441</a>: use WER for GOTRACEBACK=wer on Windows
621 <p><!-- CL 447778 -->
622 TODO: <a href="https://go.dev/cl/447778">https://go.dev/cl/447778</a>: runtime: reimplement GODEBUG=cgocheck=2 as a GOEXPERIMENT
625 <p><!-- CL 472195 -->
626 TODO: <a href="https://go.dev/cl/472195">https://go.dev/cl/472195</a>: runtime: remove NOFRAME from asmcgocall, systemstack and mcall
629 <p><!-- CL 474915 -->
630 TODO: <a href="https://go.dev/cl/474915">https://go.dev/cl/474915</a>: runtime: support GOTRACEBACK=wer on Windows
633 </dl><!-- runtime -->
635 <dl id="slices"><dt><a href="/pkg/slices/">slices</a></dt>
637 <p><!-- https://go.dev/issue/54768 -->
638 TODO: <a href="https://go.dev/issue/54768">https://go.dev/issue/54768</a>: add DeleteFunc
641 <p><!-- https://go.dev/issue/57433 -->
642 TODO: <a href="https://go.dev/issue/57433">https://go.dev/issue/57433</a>: new standard library package based on x/exp/slices
645 <p><!-- CL 467417 -->
646 TODO: <a href="https://go.dev/cl/467417">https://go.dev/cl/467417</a>: slices: new package; modified api/next/57433.txt
649 <p><!-- CL 483175 -->
650 TODO: <a href="https://go.dev/cl/483175">https://go.dev/cl/483175</a>: slices: add DeleteFunc; modified api/next/54768.txt
655 <dl id="spec"><dt><a href="/pkg/spec/">spec</a></dt>
657 <p><!-- https://go.dev/issue/56351 -->
658 TODO: <a href="https://go.dev/issue/56351">https://go.dev/issue/56351</a>: add clear(x) builtin, to clear map, zero content of slice
661 <p><!-- https://go.dev/issue/57411 -->
662 TODO: <a href="https://go.dev/issue/57411">https://go.dev/issue/57411</a>: define initialization order more precisely
665 <p><!-- https://go.dev/issue/59338 -->
666 TODO: <a href="https://go.dev/issue/59338">https://go.dev/issue/59338</a>: infer type arguments from assignments of generic functions (reverse type inference)
671 <dl id="slices"><dt><a href="/pkg/slices/">slices</a></dt>
673 <p><!-- https://go.dev/issue/45955 -->
674 The new <a href="/pkg/slices/"><code>slices</code></a> package
675 provides many common operations on slices, using generic
676 functions that work with slices of any element type.
681 <dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
683 <p><!-- https://go.dev/issue/56102, CL 451356 -->
684 The new <a href="/pkg/sync/#OnceFunc"><code>OnceFunc</code></a>,
685 <a href="/pkg/sync/#OnceValue"><code>OnceValue</code></a>, and
686 <a href="/pkg/sync/#OnceValues"><code>OnceValues</code></a>
687 functions capture a common use of <a href="/pkg/sync/#Once">Once</a> to
688 lazily initialize a value on first use.
693 <dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
695 <p><!-- https://go.dev/issue/46259 -->
696 TODO: <a href="https://go.dev/issue/46259">https://go.dev/issue/46259</a>: add Jail int32 to SysProcAttr on FreeBSD
699 <p><!-- CL 458335 -->
700 TODO: <a href="https://go.dev/cl/458335">https://go.dev/cl/458335</a>: syscall: add jail support to ForkExec on FreeBSD; modified api/next/46259.txt
703 <p><!-- CL 480135 -->
704 TODO: <a href="https://go.dev/cl/480135">https://go.dev/cl/480135</a>: syscall: implement Fchdir on Windows
707 </dl><!-- syscall -->
709 <dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
711 <p><!-- https://go.dev/issue/37708 -->
712 TODO: <a href="https://go.dev/issue/37708">https://go.dev/issue/37708</a>: optionally include full (or relative) path name
715 <p><!-- https://go.dev/issue/52600, CL 475496 -->
716 The new <a href="/pkg/testing/#Testing"><code>Testing</code></a> function reports whether the program is a test created by <code>go</code> <code>test</code>.
719 </dl><!-- testing -->
721 <dl id="testing/slogtest"><dt><a href="/pkg/testing/slogtest/">testing/slogtest</a></dt>
723 <p><!-- CL 487895 -->
724 TODO: <a href="https://go.dev/cl/487895">https://go.dev/cl/487895</a>: testing/slogtest: tests for slog handlers; modified api/next/56345.txt
727 </dl><!-- testing/slogtest -->
729 <dl id="x/exp/slices"><dt><a href="/pkg/x/exp/slices/">x/exp/slices</a></dt>
731 <p><!-- https://go.dev/issue/57348 -->
732 TODO: <a href="https://go.dev/issue/57348">https://go.dev/issue/57348</a>: Allow different types for haystack/needle in BinarySearchFunc
735 </dl><!-- x/exp/slices -->
737 <dl id="x/sys/windows"><dt><a href="/pkg/x/sys/windows/">x/sys/windows</a></dt>
739 <p><!-- https://go.dev/issue/54232 -->
740 TODO: <a href="https://go.dev/issue/54232">https://go.dev/issue/54232</a>: Add WSALookupService
743 </dl><!-- x/sys/windows -->
745 <dl id="x/tools/go/analysis"><dt><a href="/pkg/x/tools/go/analysis/">x/tools/go/analysis</a></dt>
747 <p><!-- https://go.dev/issue/57906 -->
748 TODO: <a href="https://go.dev/issue/57906">https://go.dev/issue/57906</a>: add Analyzer.URL and Diagnostic.URL fields
751 </dl><!-- x/tools/go/analysis -->
753 <dl id="x/tools/go/types/objectpath"><dt><a href="/pkg/x/tools/go/types/objectpath/">x/tools/go/types/objectpath</a></dt>
755 <p><!-- https://go.dev/issue/58668 -->
756 TODO: <a href="https://go.dev/issue/58668">https://go.dev/issue/58668</a>: add Encoder type, to amortize Scope.Names
759 </dl><!-- x/tools/go/types/objectpath -->