Go 1.22 is not yet released. These are work-in-progress release notes. Go 1.22 is expected to be released in February 2024.
TODO: complete this section
TODO: https://go.dev/cl/539016: go/analysis/passes/loopclosure: disable checker after go1.22.; loopclosure was modified to only not report in files with GoVersion after 1.22.
TODO: complete this section, or delete if not needed
TODO: complete this section, or delete if not needed
TODO: https://go.dev/issue/62577: cmd/link, cmd/go: emit split DWARF on darwin
TODO: complete this section, or delete if not needed
TODO: https://go.dev/cl/502495: math/rand/v2: start of new API; modified api/next/61716.txt
TODO: https://go.dev/cl/502497: math/rand/v2: remove Read; modified api/next/61716.txt
TODO: https://go.dev/cl/502498: math/rand/v2: remove Rand.Seed; modified api/next/61716.txt
TODO: https://go.dev/cl/502499: math/rand/v2: change Source to use uint64; modified api/next/61716.txt
TODO: https://go.dev/cl/502500: math/rand/v2: add, optimize N, UintN, Uint32N, Uint64N; modified api/next/61716.txt
TODO: https://go.dev/cl/502505: math/rand/v2: add PCG-DXSM; modified api/next/61716.txt
TODO: https://go.dev/cl/502506: math/rand/v2: delete Mitchell/Reeds source; modified api/next/61716.txt
TODO: https://go.dev/cl/516857: math/rand/v2: rename various functions; modified api/next/61716.txt
TODO: https://go.dev/cl/516859: math/rand/v2: add ChaCha8; modified api/next/61716.txt
As always, there are various minor changes and updates to the library, made with the Go 1 promise of compatibility in mind. There are also various performance improvements, not enumerated here.
TODO: complete this section
TODO: https://go.dev/issue/50102: add FileInfoNames interface
TODO: https://go.dev/issue/58000: add (*Writer).AddFS
TODO: https://go.dev/cl/513316: archive/tar: add AddFS method to Writer; modified api/next/58000.txt
TODO: https://go.dev/cl/514235: archive/tar: add FileInfoNames interface; modified api/next/50102.txt
TODO: https://go.dev/issue/56381: allow terminating Scanner early cleanly without a final token or an error
TODO: https://go.dev/cl/498416: cmd: add a new analyzer for check missing values after append
TODO: https://go.dev/issue/60204: add Or
TODO: https://go.dev/cl/504883: cmp: add Or; modified api/next/60204.txt
TODO: https://go.dev/issue/43922: implement RFC7627
TODO: https://go.dev/issue/60107: QUIC 0-RTT APIs
TODO: https://go.dev/issue/62459: make default minimum version for servers TLS 1.2
TODO: https://go.dev/issue/63413: disable RSA key exchange cipher suites by default
TODO: https://go.dev/cl/514997: crypto/tls: change SendSessionTicket to take an options struct; modified api/go1.21.txt
TODO: https://go.dev/cl/541516: crypto/tls: change default minimum version to 1.2
TODO: https://go.dev/cl/541517: crypto/tls: remove RSA KEX ciphers from the default list
TODO: https://go.dev/cl/544155: crypto/tls: disable ExportKeyingMaterial without EMS
TODO: https://go.dev/issue/57178: support code-constrained roots
TODO: https://go.dev/issue/58922: add android user trusted CA folder as a possible source for certificate retrieval
TODO: https://go.dev/issue/60665: introduce new robust OID type & use it for certificate policies
TODO: https://go.dev/cl/519315: crypto/x509: implement AddCertWithConstraint; modified api/next/57178.txt
TODO: https://go.dev/cl/520535: crypto/x509: add new OID type and use it in Certificate; modified api/next/60665.txt
The new Null[T] type
provide a way to scan nullable columns for any column types.
TODO: https://go.dev/issue/53693: provide append-like variants
TODO: https://go.dev/cl/504884: encoding: add AppendEncode and AppendDecode; modified api/next/53693.txt
TODO: https://go.dev/cl/505236: encoding: reject negative runes in Encoding.WithPadding; Providing a negative rune to Encoding.WithPadding other than NoPadding made no semantic sense, and will now panic.
TODO: https://go.dev/issue/57237: add var NativeEndian; also x/sys/cpu.IsBigEndian
TODO: https://go.dev/issue/52463: formally deprecate Object
TODO: https://go.dev/cl/504915: go/ast: deprecate Object; modified api/go1.21.txt
TODO: https://go.dev/issue/62037: add Info.PkgName method
TODO: https://go.dev/issue/62605: Export Info.FileVersions for access to file-specific version information
TODO: https://go.dev/issue/63223: API changes to support explicit Alias nodes
TODO: https://go.dev/cl/540056: go/types: export Info.FileVersions; modified api/next/62605.txt
TODO: https://go.dev/issue/61035: go/types, types2: fix SizesFor("gc", ...) to match actual gc behavior
TODO: https://go.dev/cl/541575: go/types, types2: implement Info.PkgNameOf; modified api/next/62037.txt
TODO: https://go.dev/cl/541737: go/types, types2: implement Alias proposal (export API); modified api/next/63223.txt
TODO: https://go.dev/issue/62039: package for handling Go version strings
TODO: https://go.dev/cl/538895: go/version: add new package; modified api/next/62039.txt
TODO: https://go.dev/issue/61619: allow actions in JS template literals
TODO: https://go.dev/cl/507995: html/template: support parsing complex JS template literals; modified api/next/61619.txt
TODO: https://go.dev/issue/61870: add SectionReader.Outer method
TODO: https://go.dev/cl/526855: io: add (*SectionReader).Outer(); modified api/next/61870.txt
TODO: https://go.dev/issue/62418: enable setting level on default log.Logger
TODO: https://go.dev/cl/525096: log/slog: add LogLoggerLevel to enable setting level on the default logger; modified api/next/62418.txt
TODO: https://go.dev/issue/50489: Rat: add FloatPrec() (int, bool)
TODO: https://go.dev/cl/539299: math/big: implement Rat.FloatPrec; modified api/next/50489.txt
TODO: https://go.dev/issue/58808: arrange zero-copy of os.File and TCPConn to UnixConn
TODO: https://go.dev/cl/467335: net: respect hosts file when resolving names for Windows
TODO: https://go.dev/issue/51971: add ServeFileFS, FileServerFS, NewFileTransportFS
TODO: https://go.dev/issue/61410: enhanced ServeMux routing
TODO: https://go.dev/cl/513956: net/http: add ServeFileFS, FileServerFS, NewFileTransportFS; modified api/next/51971.txt
TODO: https://go.dev/cl/517336: net/http: disallow empty Content-Length header
TODO: https://go.dev/cl/528355: net/http: implement path value methods on Request; modified api/next/61410.txt
TODO: https://go.dev/cl/539615: net/http/cgi: the PATH_INFO should be empty or start with a slash
TODO: https://go.dev/issue/61642: add Prefix.Compare and AddrPort.Compare
TODO: https://go.dev/cl/524616: net/netip: add AddrPort.Compare and Prefix.Compare; modified api/next/61642.txt
TODO: https://go.dev/cl/516555: os: follow all name surrogate reparse points in Stat on Windows
TODO: https://go.dev/issue/58808: arrange zero-copy of os.File and TCPConn to UnixConn
TODO: https://go.dev/cl/528037: os/exec: fix edge cases in Windows PATH resolution
TODO: https://go.dev/cl/528038: os/exec: avoid calling LookPath in cmd.Start for resolved paths
The Value.IsZero
method will now return true for a floating-point or complex
negative zero, and will return true for a struct value if a
blank field (a field named _) somehow has a
non-zero value.
These changes make IsZero consistent with comparing
a value to zero using the language == operator.
TODO: https://go.dev/issue/61015: change mutex profile to scale contention by number of blocked goroutines
TODO: https://go.dev/cl/543255: runtime: put allocation headers back at the start the object
TODO: https://go.dev/issue/63340: provide histogram of all STW events
TODO: https://go.dev/issue/56353: add Concat
TODO: https://go.dev/issue/63393: have Delete and others clear the tail
TODO: https://go.dev/cl/504882: slices: add Concat
TODO: https://go.dev/cl/540155: slices: make Insert panic if index is out of range and there are no values
TODO: https://go.dev/issue/60797: undeprecate
TODO: https://go.dev/cl/520266: syscall: add support to get pidfd from ForkExec on Linux
TODO: https://go.dev/cl/541015: syscall: support O_SYNC flag for os.OpenFile on windows
TODO: https://go.dev/issue/61758: support sub-tests
TODO: https://go.dev/cl/516076: testing/slogtest: add Run to run cases as subtests; modified api/next/61758.txt
The GOARM environment variable now allows you to select whether to use software or hardware floating point.
Previously, valid GOARM values were 5, 6, or 7. Now those same values can
be optionally followed by ,softfloat or ,hardfloat to select the floating-point implementation.
This new option defaults to softfloat for version 5 and hardfloat for versions
6 and 7.
TODO: https://go.dev/cl/481315: runtime, cmd/go: enable memory sanitizer on linux/loong64
TODO: https://go.dev/cl/517935: cmd/dist,internal/platform: enable openbsd/ppc64 port
TODO: https://go.dev/cl/537615: debug/elf,cmd/link: add additional relocations for loong64; modified api/next/63725.txt
TODO: https://go.dev/cl/469395: debug/elf,cmd/link: add additional MIPS64 relocation type; modified api/next/61974.txt