This is a tracking issue for doing an audit of API additions for Go 1.23 as of CL 590835.
New API changes for Go 1.23
archive/tar
type FileInfoNames interface { Gname, IsDir, ModTime, Mode, Name, Size, Sys, Uname }#50102type FileInfoNames interface, Gname() (string, error)#50102type FileInfoNames interface, IsDir() bool#50102type FileInfoNames interface, ModTime() time.Time#50102type FileInfoNames interface, Mode() fs.FileMode#50102type FileInfoNames interface, Name() string#50102type FileInfoNames interface, Size() int64#50102type FileInfoNames interface, Sys() interface{}#50102type FileInfoNames interface, Uname() (string, error)#50102
crypto/tls
const QUICResumeSession = 8#63691const QUICResumeSession QUICEventKind#63691const QUICStoreSession = 9#63691const QUICStoreSession QUICEventKind#63691method (*ECHRejectionError) Error() string#63369method (*QUICConn) StoreSession(*SessionState) error#63691type Config struct, EncryptedClientHelloConfigList []uint8#63369type Config struct, EncryptedClientHelloRejectionVerify func(ConnectionState) error#63369type ConnectionState struct, ECHAccepted bool#63369type ECHRejectionError struct#63369type ECHRejectionError struct, RetryConfigList []uint8#63369type QUICConfig struct, EnableStoreSessionEvent bool#63691type QUICEvent struct, SessionState *SessionState#63691type QUICSessionTicketOptions struct, Extra [][]uint8#63691
crypto/x509
func ParseOID(string) (OID, error)#66249method (*OID) UnmarshalBinary([]uint8) error#66249method (*OID) UnmarshalText([]uint8) error#66249method (OID) MarshalBinary() ([]uint8, error)#66249method (OID) MarshalText() ([]uint8, error)#66249
debug/elf
const PT_OPENBSD_NOBTCFI = 1705237480#66054const PT_OPENBSD_NOBTCFI ProgType#66054const STT_GNU_IFUNC = 10#66836const STT_GNU_IFUNC SymType#66836const STT_RELC = 8#66836const STT_RELC SymType#66836const STT_SRELC = 9#66836const STT_SRELC SymType#66836
encoding/binary
func Append([]uint8, ByteOrder, interface{}) ([]uint8, error)#60023func Decode([]uint8, ByteOrder, interface{}) (int, error)#60023func Encode([]uint8, ByteOrder, interface{}) (int, error)#60023
go/ast
func Preorder(Node) iter.Seq[Node]#66339
go/types
method (*Alias) Origin() *Alias#67143method (*Alias) Rhs() Type#66559method (*Alias) SetTypeParams([]*TypeParam)#67143method (*Alias) TypeArgs() *TypeList#67143method (*Alias) TypeParams() *TypeParamList#67143method (*Func) Signature() *Signature#65772
iter
func Pull2[$0 interface{}, $1 interface{}](Seq2[$0, $1]) (func() ($0, $1, bool), func())#61897func Pull[$0 interface{}](Seq[$0]) (func() ($0, bool), func())#61897type Seq2[$0 interface{}, $1 interface{}] func(func($0, $1) bool)#61897type Seq[$0 interface{}] func(func($0) bool)#61897
maps
func All[$0 interface{ ~map[$1]$2 }, $1 comparable, $2 interface{}]($0) iter.Seq2[$1, $2]#61900func Collect[$0 comparable, $1 interface{}](iter.Seq2[$0, $1]) map[$0]$1#61900func Insert[$0 interface{ ~map[$1]$2 }, $1 comparable, $2 interface{}]($0, iter.Seq2[$1, $2])#61900func Keys[$0 interface{ ~map[$1]$2 }, $1 comparable, $2 interface{}]($0) iter.Seq[$1]#61900func Values[$0 interface{ ~map[$1]$2 }, $1 comparable, $2 interface{}]($0) iter.Seq[$2]#61900
math/rand/v2
func Uint() uint#61716method (*ChaCha8) Read([]uint8) (int, error)#67059method (*Rand) Uint() uint#61716
net
method (*DNSError) Unwrap() error#63116method (*TCPConn) SetKeepAliveConfig(KeepAliveConfig) error#62254type DNSError struct, UnwrapErr error#63116type Dialer struct, KeepAliveConfig KeepAliveConfig#62254type KeepAliveConfig struct#62254type KeepAliveConfig struct, Count int#62254type KeepAliveConfig struct, Enable bool#62254type KeepAliveConfig struct, Idle time.Duration#62254type KeepAliveConfig struct, Interval time.Duration#62254type ListenConfig struct, KeepAliveConfig KeepAliveConfig#62254
net/http
func ParseCookie(string) ([]*Cookie, error)#66008func ParseSetCookie(string) (*Cookie, error)#66008method (*Request) CookiesNamed(string) []*Cookie#61472type Cookie struct, Partitioned bool#62490type Cookie struct, Quoted bool#46443type Request struct, Pattern string#66405
net/http/httptest
func NewRequestWithContext(context.Context, string, string, io.Reader) *http.Request#59473
os
func CopyFS(string, fs.FS) error#62484
path/filepath
func Localize(string) (string, error)#57151
reflect
func SliceAt(Type, unsafe.Pointer, int) Value#61308method (Value) Seq() iter.Seq[Value]#66056method (Value) Seq2() iter.Seq2[Value, Value]#66056type Type interface, CanSeq() bool#66056type Type interface, CanSeq2() bool#66056type Type interface, OverflowComplex(complex128) bool#60427type Type interface, OverflowFloat(float64) bool#60427type Type interface, OverflowInt(int64) bool#60427type Type interface, OverflowUint(uint64) bool#60427
runtime/debug
func SetCrashOutput(*os.File, CrashOptions) error#42888type CrashOptions struct#67182
slices
func All[$0 interface{ ~[]$1 }, $1 interface{}]($0) iter.Seq2[int, $1]#61899func AppendSeq[$0 interface{ ~[]$1 }, $1 interface{}]($0, iter.Seq[$1]) $0#61899func Backward[$0 interface{ ~[]$1 }, $1 interface{}]($0) iter.Seq2[int, $1]#61899func Chunk[$0 interface{ ~[]$1 }, $1 interface{}]($0, int) iter.Seq[$0]#53987func Collect[$0 interface{}](iter.Seq[$0]) []$0#61899func Repeat[$0 interface{ ~[]$1 }, $1 interface{}]($0, int) $0#65238func SortedFunc[$0 interface{}](iter.Seq[$0], func($0, $0) int) []$0#61899func SortedStableFunc[$0 interface{}](iter.Seq[$0], func($0, $0) int) []$0#61899func Sorted[$0 cmp.Ordered](iter.Seq[$0]) []$0#61899func Values[$0 interface{ ~[]$1 }, $1 interface{}]($0) iter.Seq[$1]#61899
structs
type HostLayout struct#66408
sync
method (*Map) Clear()#61696
sync/atomic
func AndInt32(*int32, int32) int32#61395func AndInt64(*int64, int64) int64#61395func AndUint32(*uint32, uint32) uint32#61395func AndUint64(*uint64, uint64) uint64#61395func AndUintptr(*uintptr, uintptr) uintptr#61395func OrInt32(*int32, int32) int32#61395func OrInt64(*int64, int64) int64#61395func OrUint32(*uint32, uint32) uint32#61395func OrUint64(*uint64, uint64) uint64#61395func OrUintptr(*uintptr, uintptr) uintptr#61395method (*Int32) And(int32) int32#61395method (*Int32) Or(int32) int32#61395method (*Int64) And(int64) int64#61395method (*Int64) Or(int64) int64#61395method (*Uint32) And(uint32) uint32#61395method (*Uint32) Or(uint32) uint32#61395method (*Uint64) And(uint64) uint64#61395method (*Uint64) Or(uint64) uint64#61395method (*Uintptr) And(uintptr) uintptr#61395method (*Uintptr) Or(uintptr) uintptr#61395
syscall (windows-386)
const WSAENOPROTOOPT = 10042#62254const WSAENOPROTOOPT Errno#62254
syscall (windows-amd64)
const WSAENOPROTOOPT = 10042#62254const WSAENOPROTOOPT Errno#62254
unicode/utf16
func RuneLen(int32) int#44940
unique
func Make[$0 comparable]($0) Handle[$0]#62483method (Handle[$0]) Value() $0#62483type Handle[$0 comparable] struct#62483
CC @rsc, @ianlancetaylor, @golang/release.
Comment From: rsc
Reading through the list, these all LGTM, meaning I remember the proposals and still think that the APIs are correct. Would be good for @ianlancetaylor to check the same, and then I think we can close this. Thanks!
Comment From: dmitshur
I also looked a bit at the proposed and implemented APIs. Everything seems to align. The WSAENOPROTOOPT constant wasn't mentioned in proposal #62254, but it seems fine.
Comment From: ianlancetaylor
I have also reviewed. LGTM.
Comment From: dmitshur
For posterity: the type QUICConfig struct, EnableStoreSessionEvent bool field has since been renamed to EnableSessionEvents after a deliberate decision in #68124.