mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.simd] all: merge master (711ff94) into dev.simd
Merge List: + 2025-06-02711ff943aftesting: add Output method to TB + 2025-06-02e9d3b030edslices,sort: explicitly discard results in benchmarks + 2025-05-30a8e99ab19cinternal/trace: expose the go version read by the reader + 2025-05-3068b51e99f9cmd/distpack: add test case for pack tool being excluded + 2025-05-3067f052121ecmd/distpack: don't keep the pack tool + 2025-05-301947c4233aruntime: set HeapGoal to zero when the GC is disabled + 2025-05-308cd7f17248testing, testing/synctest: report correct duration after panics + 2025-05-3029782bd347os: add implementation of fs.ReadLinkFS to *rootFS + 2025-05-2978e86297f5cmd/compile/internal/noder: rename RelIndex to match codebase + 2025-05-29fece9871bbcmd/compile: update default PGO profile + 2025-05-299f3dd846e2cmd/internal/obj/s390x: fix potential recursive String call + 2025-05-2921b7e60c6bruntime, testing/synctest: breaking bubble isolation with Cond is fatal + 2025-05-29555d425d17testing, testing/synctest: write bubble errors to parent test log + 2025-05-29f14f3aae1cinternal/pkgbits: explain the rationale for reference tables + 2025-05-294878b4471bslices: document and test nilness behavior of all functions + 2025-05-297b4d065267runtime: add vgetrandom lock rank + 2025-05-29e481a08e0eruntime: guarantee no GOMAXPROCS update syscalls after GOMAXPROCS call + 2025-05-29dd678172e3doc/next: delete + 2025-05-29c2f0fe5854internal/synctest: speed up TestWeak + 2025-05-29b170c7e94cruntime, internal/synctest, sync: associate WaitGroups with bubbles + 2025-05-293b77085b40runtime: increment updatemaxprocs metric only when disabled + 2025-05-29f8c51b1a6cgo/doc: NewFromFiles: fix panic on Files with SkipObjectResolution + 2025-05-29263bc50c90api: promote next to go1.25 + 2025-05-28dbaa2d3e65cmd/compile: do nil check before calling duff functions, on arm64 and amd64 + 2025-05-286160fa59b6runtime: rename updateGOMAXPROCS to updateMaxProcsG + 2025-05-28ae6c098f48doc/next: add release note for riscv64 plugin build mode + 2025-05-2818ad74dd36go/types, types2: dump position stack for non-bailout panics + 2025-05-2870109eb326cmd/link: allow linkname reference to a TEXT symbol regardless of size + 2025-05-28eff3288042doc/next: tweak runtime release notes + 2025-05-28c61e5e7244lib/time: update to 2025b/2025b + 2025-05-27ed08d2ad09os: don't follow symlinks on Windows when O_CREATE|O_EXCL and read-only + 2025-05-27fce9d4515druntime, testing/synctest: verify cleanups/finalizers run outside bubbles + 2025-05-27b78e38065eruntime: define lock ranking between weak pointers and synctest + 2025-05-27961818e013cmd/compile/internal/walk: use original type for composite literals in addrTemp + 2025-05-27c8c3d661b0runtime/trace: add a trace validation test for different trace orders + 2025-05-270e1b14bc2ecmd/go: fix get with the new 'work' pattern + 2025-05-2709f1546cbalog/slog: fix longtests with empty source + 2025-05-27de05282a2cdoc/next: add small header to TODO + 2025-05-27c146a61d4cgo/token: benchmark FileSet.{Position,AddExistingFiles} + 2025-05-27ae0824883ego/ast: deprecate FilterPackage, PackageExports, MergePackageFiles + 2025-05-278dd7d2111bruntime: skip nil Ps in allp during cleanup flush + 2025-05-273a3c006ac0crypto/tls: enable signature algorithm BoGo tests (and fix two bugs) + 2025-05-27ed70477909errors: add joinError Unwrap example + 2025-05-27787362327fio/fs: add examples for Glob,ReadFile and ValidPath + 2025-05-243fd729b2a1log/slog: make TextHandler discard empty Source + 2025-05-24c07ffe980atesting/synctest: correct duration in doc example + 2025-05-243db50924e2hash: mention the new Cloner interface in Hash docs. + 2025-05-23aca9f4e484crypto/tls: signature_algorithms in CertificateRequest can't be empty + 2025-05-238cb0941a85net: use runtime.AddCleanup instead of runtime.SetFinalizer + 2025-05-2368f4434df0runtime/trace: match traceClockNow types + 2025-05-238b1978f614doc/next: add crudely processed todos + 2025-05-23c0e149b6b1net/http: document that ServeMux.Handler can also synthetize a 405 + 2025-05-23db3e02994cruntime/trace: fix flaky test for SetMinAge + 2025-05-22db55b83ce4doc: fix TBD mark + 2025-05-22aec96d686bdoc: mention stack allocation of variable-sized make calls + 2025-05-22c684dfcb8aruntime: don't spin looking for a tiny alloc address with asan or race + 2025-05-22bfbf736564cmd/compile: do not shapify when reading reshaping expr + 2025-05-22b1f259b1b4cmd/compile: fix ICE with recursive alias type parameter + 2025-05-22155ba387a9cmd/doc: properly set GOPROXY to avoid deprecation checks + 2025-05-22ef3bb638deRevert "cmd/doc: better support for no network" + 2025-05-22a0dc7bf084cmd/compile: fix ICE when transforming loopvar Change-Id: I9010808984e73ed2de6041127a222f725f0f52e6
This commit is contained in:
commit
baa72c25f1
189 changed files with 2198 additions and 906 deletions
111
api/go1.25.txt
Normal file
111
api/go1.25.txt
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
pkg crypto, func SignMessage(Signer, io.Reader, []uint8, SignerOpts) ([]uint8, error) #63405
|
||||
pkg crypto, type MessageSigner interface { Public, Sign, SignMessage } #63405
|
||||
pkg crypto, type MessageSigner interface, Public() PublicKey #63405
|
||||
pkg crypto, type MessageSigner interface, Sign(io.Reader, []uint8, SignerOpts) ([]uint8, error) #63405
|
||||
pkg crypto, type MessageSigner interface, SignMessage(io.Reader, []uint8, SignerOpts) ([]uint8, error) #63405
|
||||
pkg crypto/ecdsa, func ParseRawPrivateKey(elliptic.Curve, []uint8) (*PrivateKey, error) #63963
|
||||
pkg crypto/ecdsa, func ParseUncompressedPublicKey(elliptic.Curve, []uint8) (*PublicKey, error) #63963
|
||||
pkg crypto/ecdsa, method (*PrivateKey) Bytes() ([]uint8, error) #63963
|
||||
pkg crypto/ecdsa, method (*PublicKey) Bytes() ([]uint8, error) #63963
|
||||
pkg crypto/sha3, method (*SHA3) Clone() (hash.Cloner, error) #69521
|
||||
pkg crypto/tls, type Config struct, GetEncryptedClientHelloKeys func(*ClientHelloInfo) ([]EncryptedClientHelloKey, error) #71920
|
||||
pkg crypto/tls, type ConnectionState struct, CurveID CurveID #67516
|
||||
pkg debug/elf, const PT_RISCV_ATTRIBUTES = 1879048195 #72843
|
||||
pkg debug/elf, const PT_RISCV_ATTRIBUTES ProgType #72843
|
||||
pkg debug/elf, const SHT_RISCV_ATTRIBUTES = 1879048195 #72843
|
||||
pkg debug/elf, const SHT_RISCV_ATTRIBUTES SectionType #72843
|
||||
pkg go/ast, const FilterFuncDuplicates //deprecated #73088
|
||||
pkg go/ast, const FilterImportDuplicates //deprecated #73088
|
||||
pkg go/ast, const FilterUnassociatedComments //deprecated #73088
|
||||
pkg go/ast, func FilterPackage //deprecated #73088
|
||||
pkg go/ast, func MergePackageFiles //deprecated #73088
|
||||
pkg go/ast, func PackageExports //deprecated #73088
|
||||
pkg go/ast, func PreorderStack(Node, []Node, func(Node, []Node) bool) #73319
|
||||
pkg go/ast, type MergeMode //deprecated #73088
|
||||
pkg go/parser, func ParseDir //deprecated #71122
|
||||
pkg go/token, method (*FileSet) AddExistingFiles(...*File) #73205
|
||||
pkg go/types, const FieldVar = 6 #70250
|
||||
pkg go/types, const FieldVar VarKind #70250
|
||||
pkg go/types, const LocalVar = 2 #70250
|
||||
pkg go/types, const LocalVar VarKind #70250
|
||||
pkg go/types, const PackageVar = 1 #70250
|
||||
pkg go/types, const PackageVar VarKind #70250
|
||||
pkg go/types, const ParamVar = 4 #70250
|
||||
pkg go/types, const ParamVar VarKind #70250
|
||||
pkg go/types, const RecvVar = 3 #70250
|
||||
pkg go/types, const RecvVar VarKind #70250
|
||||
pkg go/types, const ResultVar = 5 #70250
|
||||
pkg go/types, const ResultVar VarKind #70250
|
||||
pkg go/types, func LookupSelection(Type, bool, *Package, string) (Selection, bool) #70737
|
||||
pkg go/types, method (*Var) Kind() VarKind #70250
|
||||
pkg go/types, method (*Var) SetKind(VarKind) #70250
|
||||
pkg go/types, method (VarKind) String() string #70250
|
||||
pkg go/types, type VarKind uint8 #70250
|
||||
pkg hash, type Cloner interface { BlockSize, Clone, Reset, Size, Sum, Write } #69521
|
||||
pkg hash, type Cloner interface, BlockSize() int #69521
|
||||
pkg hash, type Cloner interface, Clone() (Cloner, error) #69521
|
||||
pkg hash, type Cloner interface, Reset() #69521
|
||||
pkg hash, type Cloner interface, Size() int #69521
|
||||
pkg hash, type Cloner interface, Sum([]uint8) []uint8 #69521
|
||||
pkg hash, type Cloner interface, Write([]uint8) (int, error) #69521
|
||||
pkg hash, type XOF interface { BlockSize, Read, Reset, Write } #69518
|
||||
pkg hash, type XOF interface, BlockSize() int #69518
|
||||
pkg hash, type XOF interface, Read([]uint8) (int, error) #69518
|
||||
pkg hash, type XOF interface, Reset() #69518
|
||||
pkg hash, type XOF interface, Write([]uint8) (int, error) #69518
|
||||
pkg hash/maphash, method (*Hash) Clone() (hash.Cloner, error) #69521
|
||||
pkg io/fs, func Lstat(FS, string) (FileInfo, error) #49580
|
||||
pkg io/fs, func ReadLink(FS, string) (string, error) #49580
|
||||
pkg io/fs, type ReadLinkFS interface { Lstat, Open, ReadLink } #49580
|
||||
pkg io/fs, type ReadLinkFS interface, Lstat(string) (FileInfo, error) #49580
|
||||
pkg io/fs, type ReadLinkFS interface, Open(string) (File, error) #49580
|
||||
pkg io/fs, type ReadLinkFS interface, ReadLink(string) (string, error) #49580
|
||||
pkg log/slog, func GroupAttrs(string, ...Attr) Attr #66365
|
||||
pkg log/slog, method (Record) Source() *Source #70280
|
||||
pkg mime/multipart, func FileContentDisposition(string, string) string #46771
|
||||
pkg net/http, func NewCrossOriginProtection() *CrossOriginProtection #73626
|
||||
pkg net/http, method (*CrossOriginProtection) AddInsecureBypassPattern(string) #73626
|
||||
pkg net/http, method (*CrossOriginProtection) AddTrustedOrigin(string) error #73626
|
||||
pkg net/http, method (*CrossOriginProtection) Check(*Request) error #73626
|
||||
pkg net/http, method (*CrossOriginProtection) Handler(Handler) Handler #73626
|
||||
pkg net/http, method (*CrossOriginProtection) SetDenyHandler(Handler) #73626
|
||||
pkg net/http, type CrossOriginProtection struct #73626
|
||||
pkg os, method (*Root) Chmod(string, fs.FileMode) error #67002
|
||||
pkg os, method (*Root) Chown(string, int, int) error #67002
|
||||
pkg os, method (*Root) Chtimes(string, time.Time, time.Time) error #67002
|
||||
pkg os, method (*Root) Lchown(string, int, int) error #67002
|
||||
pkg os, method (*Root) Link(string, string) error #67002
|
||||
pkg os, method (*Root) MkdirAll(string, fs.FileMode) error #67002
|
||||
pkg os, method (*Root) ReadFile(string) ([]uint8, error) #73126
|
||||
pkg os, method (*Root) Readlink(string) (string, error) #67002
|
||||
pkg os, method (*Root) RemoveAll(string) error #67002
|
||||
pkg os, method (*Root) Rename(string, string) error #67002
|
||||
pkg os, method (*Root) Symlink(string, string) error #67002
|
||||
pkg os, method (*Root) WriteFile(string, []uint8, fs.FileMode) error #73126
|
||||
pkg reflect, func TypeAssert[$0 interface{}](Value) ($0, bool) #62121
|
||||
pkg runtime, func SetDefaultGOMAXPROCS() #73193
|
||||
pkg runtime/trace, func NewFlightRecorder(FlightRecorderConfig) *FlightRecorder #63185
|
||||
pkg runtime/trace, method (*FlightRecorder) Enabled() bool #63185
|
||||
pkg runtime/trace, method (*FlightRecorder) Start() error #63185
|
||||
pkg runtime/trace, method (*FlightRecorder) Stop() #63185
|
||||
pkg runtime/trace, method (*FlightRecorder) WriteTo(io.Writer) (int64, error) #63185
|
||||
pkg runtime/trace, type FlightRecorder struct #63185
|
||||
pkg runtime/trace, type FlightRecorderConfig struct #63185
|
||||
pkg runtime/trace, type FlightRecorderConfig struct, MaxBytes uint64 #63185
|
||||
pkg runtime/trace, type FlightRecorderConfig struct, MinAge time.Duration #63185
|
||||
pkg sync, method (*WaitGroup) Go(func()) #63796
|
||||
pkg testing, method (*B) Attr(string, string) #43936
|
||||
pkg testing, method (*B) Output() io.Writer #59928
|
||||
pkg testing, method (*F) Attr(string, string) #43936
|
||||
pkg testing, method (*F) Output() io.Writer #59928
|
||||
pkg testing, method (*T) Attr(string, string) #43936
|
||||
pkg testing, method (*T) Output() io.Writer #59928
|
||||
pkg testing, type TB interface, Attr(string, string) #43936
|
||||
pkg testing, type TB interface, Output() io.Writer #59928
|
||||
pkg testing/fstest, method (MapFS) Lstat(string) (fs.FileInfo, error) #49580
|
||||
pkg testing/fstest, method (MapFS) ReadLink(string) (string, error) #49580
|
||||
pkg testing/synctest, func Test(*testing.T, func(*testing.T)) #67434
|
||||
pkg testing/synctest, func Wait() #67434
|
||||
pkg unicode, var CategoryAliases map[string]string #70780
|
||||
pkg unicode, var Cn *RangeTable #70780
|
||||
pkg unicode, var LC *RangeTable #70780
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
pkg testing, method (*B) Attr(string, string) #43936
|
||||
pkg testing, method (*F) Attr(string, string) #43936
|
||||
pkg testing, method (*T) Attr(string, string) #43936
|
||||
pkg testing, type TB interface, Attr(string, string) #43936
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg mime/multipart, func FileContentDisposition(string, string) string #46771
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
pkg io/fs, func Lstat(FS, string) (FileInfo, error) #49580
|
||||
pkg io/fs, func ReadLink(FS, string) (string, error) #49580
|
||||
pkg io/fs, type ReadLinkFS interface { Lstat, Open, ReadLink } #49580
|
||||
pkg io/fs, type ReadLinkFS interface, Lstat(string) (FileInfo, error) #49580
|
||||
pkg io/fs, type ReadLinkFS interface, Open(string) (File, error) #49580
|
||||
pkg io/fs, type ReadLinkFS interface, ReadLink(string) (string, error) #49580
|
||||
pkg testing/fstest, method (MapFS) Lstat(string) (fs.FileInfo, error) #49580
|
||||
pkg testing/fstest, method (MapFS) ReadLink(string) (string, error) #49580
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
pkg testing, method (*B) Output() io.Writer #59928
|
||||
pkg testing, method (*F) Output() io.Writer #59928
|
||||
pkg testing, method (*T) Output() io.Writer #59928
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg reflect, func TypeAssert[$0 interface{}](Value) ($0, bool) #62121
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
pkg runtime/trace, func NewFlightRecorder(FlightRecorderConfig) *FlightRecorder #63185
|
||||
pkg runtime/trace, method (*FlightRecorder) Enabled() bool #63185
|
||||
pkg runtime/trace, method (*FlightRecorder) Start() error #63185
|
||||
pkg runtime/trace, method (*FlightRecorder) Stop() #63185
|
||||
pkg runtime/trace, method (*FlightRecorder) WriteTo(io.Writer) (int64, error) #63185
|
||||
pkg runtime/trace, type FlightRecorder struct #63185
|
||||
pkg runtime/trace, type FlightRecorderConfig struct #63185
|
||||
pkg runtime/trace, type FlightRecorderConfig struct, MaxBytes uint64 #63185
|
||||
pkg runtime/trace, type FlightRecorderConfig struct, MinAge time.Duration #63185
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
pkg crypto, func SignMessage(Signer, io.Reader, []uint8, SignerOpts) ([]uint8, error) #63405
|
||||
pkg crypto, type MessageSigner interface { Public, Sign, SignMessage } #63405
|
||||
pkg crypto, type MessageSigner interface, Public() PublicKey #63405
|
||||
pkg crypto, type MessageSigner interface, Sign(io.Reader, []uint8, SignerOpts) ([]uint8, error) #63405
|
||||
pkg crypto, type MessageSigner interface, SignMessage(io.Reader, []uint8, SignerOpts) ([]uint8, error) #63405
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg sync, method (*WaitGroup) Go(func()) #63769
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
pkg crypto/ecdsa, func ParseRawPrivateKey(elliptic.Curve, []uint8) (*PrivateKey, error) #63963
|
||||
pkg crypto/ecdsa, func ParseUncompressedPublicKey(elliptic.Curve, []uint8) (*PublicKey, error) #63963
|
||||
pkg crypto/ecdsa, method (*PrivateKey) Bytes() ([]uint8, error) #63963
|
||||
pkg crypto/ecdsa, method (*PublicKey) Bytes() ([]uint8, error) #63963
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg log/slog, func GroupAttrs(string, ...Attr) Attr #66365
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
pkg os, method (*Root) Chmod(string, fs.FileMode) error #67002
|
||||
pkg os, method (*Root) Chown(string, int, int) error #67002
|
||||
pkg os, method (*Root) Chtimes(string, time.Time, time.Time) error #67002
|
||||
pkg os, method (*Root) Lchown(string, int, int) error #67002
|
||||
pkg os, method (*Root) Link(string, string) error #67002
|
||||
pkg os, method (*Root) MkdirAll(string, fs.FileMode) error #67002
|
||||
pkg os, method (*Root) Readlink(string) (string, error) #67002
|
||||
pkg os, method (*Root) RemoveAll(string) error #67002
|
||||
pkg os, method (*Root) Rename(string, string) error #67002
|
||||
pkg os, method (*Root) Symlink(string, string) error #67002
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
pkg testing/synctest, func Test(*testing.T, func(*testing.T)) #67434
|
||||
pkg testing/synctest, func Wait() #67434
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg crypto/tls, type ConnectionState struct, CurveID CurveID #67516
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
pkg hash, type XOF interface { BlockSize, Read, Reset, Write } #69518
|
||||
pkg hash, type XOF interface, BlockSize() int #69518
|
||||
pkg hash, type XOF interface, Read([]uint8) (int, error) #69518
|
||||
pkg hash, type XOF interface, Reset() #69518
|
||||
pkg hash, type XOF interface, Write([]uint8) (int, error) #69518
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
pkg crypto/sha3, method (*SHA3) Clone() (hash.Cloner, error) #69521
|
||||
pkg hash, type Cloner interface { BlockSize, Clone, Reset, Size, Sum, Write } #69521
|
||||
pkg hash, type Cloner interface, BlockSize() int #69521
|
||||
pkg hash, type Cloner interface, Clone() (Cloner, error) #69521
|
||||
pkg hash, type Cloner interface, Reset() #69521
|
||||
pkg hash, type Cloner interface, Size() int #69521
|
||||
pkg hash, type Cloner interface, Sum([]uint8) []uint8 #69521
|
||||
pkg hash, type Cloner interface, Write([]uint8) (int, error) #69521
|
||||
pkg hash/maphash, method (*Hash) Clone() (hash.Cloner, error) #69521
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
pkg go/types, const FieldVar = 6 #70250
|
||||
pkg go/types, const FieldVar VarKind #70250
|
||||
pkg go/types, const LocalVar = 2 #70250
|
||||
pkg go/types, const LocalVar VarKind #70250
|
||||
pkg go/types, const PackageVar = 1 #70250
|
||||
pkg go/types, const PackageVar VarKind #70250
|
||||
pkg go/types, const ParamVar = 4 #70250
|
||||
pkg go/types, const ParamVar VarKind #70250
|
||||
pkg go/types, const RecvVar = 3 #70250
|
||||
pkg go/types, const RecvVar VarKind #70250
|
||||
pkg go/types, const ResultVar = 5 #70250
|
||||
pkg go/types, const ResultVar VarKind #70250
|
||||
pkg go/types, func LookupSelection(Type, bool, *Package, string) (Selection, bool) #70737
|
||||
pkg go/types, method (*Var) Kind() VarKind #70250
|
||||
pkg go/types, method (*Var) SetKind(VarKind) #70250
|
||||
pkg go/types, method (VarKind) String() string #70250
|
||||
pkg go/types, type VarKind uint8 #70250
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg log/slog, method (Record) Source() *Source #70280
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
pkg unicode, var CategoryAliases map[string]string #70780
|
||||
pkg unicode, var Cn *RangeTable #70780
|
||||
pkg unicode, var LC *RangeTable #70780
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg go/parser, func ParseDir //deprecated #71122
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg crypto/tls, type Config struct, GetEncryptedClientHelloKeys func(*ClientHelloInfo) ([]EncryptedClientHelloKey, error) #71920
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
pkg debug/elf, const PT_RISCV_ATTRIBUTES = 1879048195 #72843
|
||||
pkg debug/elf, const PT_RISCV_ATTRIBUTES ProgType #72843
|
||||
pkg debug/elf, const SHT_RISCV_ATTRIBUTES = 1879048195 #72843
|
||||
pkg debug/elf, const SHT_RISCV_ATTRIBUTES SectionType #72843
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
pkg os, method (*Root) ReadFile(string) ([]uint8, error) #73126
|
||||
pkg os, method (*Root) WriteFile(string, []uint8, fs.FileMode) error #73126
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg runtime, func SetDefaultGOMAXPROCS() #73193
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg go/token, method (*FileSet) AddExistingFiles(...*File) #73205
|
||||
|
|
@ -1 +0,0 @@
|
|||
pkg go/ast, func PreorderStack(Node, []Node, func(Node, []Node) bool) #73319
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
pkg net/http, func NewCrossOriginProtection() *CrossOriginProtection #73626
|
||||
pkg net/http, method (*CrossOriginProtection) AddInsecureBypassPattern(string) #73626
|
||||
pkg net/http, method (*CrossOriginProtection) AddTrustedOrigin(string) error #73626
|
||||
pkg net/http, method (*CrossOriginProtection) Check(*Request) error #73626
|
||||
pkg net/http, method (*CrossOriginProtection) Handler(Handler) Handler #73626
|
||||
pkg net/http, method (*CrossOriginProtection) SetDenyHandler(Handler) #73626
|
||||
pkg net/http, type CrossOriginProtection struct #73626
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<style>
|
||||
main ul li { margin: 0.5em 0; }
|
||||
</style>
|
||||
|
||||
## DRAFT RELEASE NOTES — Introduction to Go 1.N {#introduction}
|
||||
|
||||
**Go 1.25 is not yet released. These are work-in-progress release notes.
|
||||
Go 1.25 is expected to be released in August 2025.**
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
## Changes to the language {#language}
|
||||
|
||||
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
## Tools {#tools}
|
||||
|
||||
### Go command {#go-command}
|
||||
|
||||
The `go build` `-asan` option now defaults to doing leak detection at
|
||||
program exit.
|
||||
This will report an error if memory allocated by C is not freed and is
|
||||
not referenced by any other memory allocated by either C or Go.
|
||||
These new error reports may be disabled by setting
|
||||
`ASAN_OPTIONS=detect_leaks=0` in the environment when running the
|
||||
program.
|
||||
|
||||
<!-- go.dev/issue/71294 -->
|
||||
|
||||
The new `work` package pattern matches all packages in the work (formerly called main)
|
||||
modules: either the single work module in module mode or the set of workspace modules
|
||||
in workspace mode.
|
||||
|
||||
<!-- go.dev/issue/65847 -->
|
||||
|
||||
When the go command updates the `go` line in a `go.mod` or `go.work` file,
|
||||
it [no longer](/ref/mod#go-mod-file-toolchain) adds a toolchain line
|
||||
specifying the command's current version.
|
||||
|
||||
### Cgo {#cgo}
|
||||
|
||||
### Vet {#vet}
|
||||
|
||||
The `go vet` command includes new analyzers:
|
||||
|
||||
<!-- go.dev/issue/18022 -->
|
||||
|
||||
- [waitgroup](https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/waitgroup),
|
||||
which reports misplaced calls to [sync.WaitGroup.Add]; and
|
||||
|
||||
<!-- go.dev/issue/28308 -->
|
||||
|
||||
- [hostport](https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/hostport),
|
||||
which reports uses of `fmt.Sprintf("%s:%d", host, port)` to
|
||||
construct addresses for [net.Dial], as these will not work with
|
||||
IPv6; instead it suggests using [net.JoinHostPort].
|
||||
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
## Runtime {#runtime}
|
||||
|
||||
<!-- go.dev/issue/71517 -->
|
||||
|
||||
The message printed when a program exits due to an unhandled panic
|
||||
that was recovered and repanicked no longer repeats the text of
|
||||
the panic value.
|
||||
|
||||
Previously, a program which panicked with `panic("PANIC")`,
|
||||
recovered the panic, and then repanicked with the original
|
||||
value would print:
|
||||
|
||||
panic: PANIC [recovered]
|
||||
panic: PANIC
|
||||
|
||||
This program will now print:
|
||||
|
||||
panic: PANIC [recovered, repanicked]
|
||||
|
||||
<!-- go.dev/issue/73193 -->
|
||||
|
||||
The default behavior of the `GOMAXPROCS` has changed. In prior versions of Go,
|
||||
`GOMAXPROCS` defaults to the number of logical CPUs available at startup
|
||||
([runtime.NumCPU]). Go 1.25 introduces two changes:
|
||||
|
||||
1. On Linux, the runtime considers the CPU bandwidth limit of the cgroup
|
||||
containing the process, if any. If the CPU bandwidth limit is lower than the
|
||||
number of logical CPUs available, `GOMAXPROCS` will default to the lower
|
||||
limit. In container runtime systems like Kubernetes, cgroup CPU bandwidth
|
||||
limits generally correspond to the "CPU limit" option. The Go runtime does
|
||||
not consider the "CPU requests" option.
|
||||
|
||||
2. On all OSes, the runtime periodically updates `GOMAXPROCS` if the number
|
||||
of logical CPUs available or the cgroup CPU bandwidth limit change.
|
||||
|
||||
Both of these behaviors are automatically disabled if `GOMAXPROCS` is set
|
||||
manually via the `GOMAXPROCS` environment variable or a call to
|
||||
[runtime.GOMAXPROCS]. They can also be disabled explicitly with the [GODEBUG
|
||||
settings](/doc/godebug) `containermaxprocs=0` and `updatemaxprocs=0`,
|
||||
respectively.
|
||||
|
||||
In order to support reading updated cgroup limits, the runtime will keep cached
|
||||
file descriptors for the cgroup files for the duration of the process lifetime.
|
||||
|
||||
<!-- go.dev/issue/71546 -->
|
||||
|
||||
On Linux systems with kernel support for anonymous VMA names
|
||||
(`CONFIG_ANON_VMA_NAME`), the Go runtime will annotate anonymous memory
|
||||
mappings with context about their purpose. e.g., `[anon: Go: heap]` for heap
|
||||
memory. This can be disabled with the [GODEBUG setting](/doc/godebug)
|
||||
`decoratemappings=0`.
|
||||
|
||||
<!-- go.dev/issue/73581 -->
|
||||
|
||||
A new experimental garbage collector is now available as an experiment. The
|
||||
new design aims to improve the efficiency of garbage collection through better
|
||||
locality and CPU scalability in the mark algorithm. Benchmark result vary, but
|
||||
we expect somewhere between a 10—40% reduction in garbage collection overhead
|
||||
in real-world programs that heavily use the garbage collector.
|
||||
|
||||
The new garbage collector may be enabled by setting `GOEXPERIMENT=greenteagc`
|
||||
at build time. See the [GitHub issue](/issue/73581) for more details on the design
|
||||
and instructions on how to report feedback.
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
## Compiler {#compiler}
|
||||
|
||||
<!-- https://go.dev/issue/26379 -->
|
||||
|
||||
The compiler and linker in Go 1.25 now generate debug information
|
||||
using [DWARF version 5](https://dwarfstd.org/dwarf5std.html); the
|
||||
newer DWARF version reduces the space required for debugging
|
||||
information in Go binaries.
|
||||
DWARF 5 generation is gated by the "dwarf5" GOEXPERIMENT; this
|
||||
functionality can be disabled (for now) using GOEXPERIMENT=nodwarf5.
|
||||
|
||||
<!-- https://go.dev/issue/72860, CL 657715 -->
|
||||
|
||||
The compiler [has been fixed](/cl/657715)
|
||||
to ensure that nil pointer checks are performed promptly. Programs like the following,
|
||||
which used to execute successfully, will now panic with a nil-pointer exception:
|
||||
|
||||
```
|
||||
package main
|
||||
|
||||
import "os"
|
||||
|
||||
func main() {
|
||||
f, err := os.Open("nonExistentFile")
|
||||
name := f.Name()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
println(name)
|
||||
}
|
||||
```
|
||||
|
||||
This program is incorrect in that it uses the result of `os.Open` before checking
|
||||
the error. The main result of `os.Open` can be a nil pointer if the error result is non-nil.
|
||||
But because of [a compiler bug](/issue/72860), this program ran successfully under
|
||||
Go versions 1.21 through 1.24 (in violation of the Go spec). It will no longer run
|
||||
successfully in Go 1.25. If this change is affecting your code, the solution is to put
|
||||
the non-nil error check earlier in your code, preferably immediately after
|
||||
the error-generating statement.
|
||||
|
||||
## Assembler {#assembler}
|
||||
|
||||
## Linker {#linker}
|
||||
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
## Standard library {#library}
|
||||
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
### New testing/synctest package
|
||||
|
||||
The new [testing/synctest](/pkg/testing/synctest) package
|
||||
provides support for testing concurrent code.
|
||||
|
||||
The [synctest.Test] function runs a test function in an isolated
|
||||
"bubble". Within the bubble, [time](/pkg/time) package functions
|
||||
operate on a fake clock.
|
||||
|
||||
The [synctest.Wait] function waits for all goroutines in the
|
||||
current bubble to block.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
### Minor changes to the library {#minor_library_changes}
|
||||
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
API changes and other small changes to the standard library go here.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The [*Writer.AddFS] implementation now supports symbolic links
|
||||
for filesystems that implement [io/fs.ReadLinkFS].
|
||||
|
|
@ -1 +0,0 @@
|
|||
[MessageSigner] is a new signing interface that can be implemented by signers that wish to hash the message to be signed themselves. A new function is also introduced, [SignMessage] which attempts to update a [Signer] interface to [MessageSigner], using the [MessageSigner.SignMessage] method if successful, and [Signer.Sign] if not. This can be used when code wishes to support both [Signer] and [MessageSigner].
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
The new [ParseRawPrivateKey], [ParseUncompressedPublicKey], [PrivateKey.Bytes],
|
||||
and [PublicKey.Bytes] functions and methods implement low-level encodings,
|
||||
replacing the need to use crypto/elliptic or math/big functions and methods.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The hidden and undocumented `Inverse` and `CombinedMult` methods on some [Curve]
|
||||
implementations have been removed.
|
||||
|
|
@ -1 +0,0 @@
|
|||
The new [SHA3.Clone] method implements [hash.Cloner](/pkg/hash#Cloner).
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The new [ConnectionState.CurveID] field exposes the key exchange mechanism used
|
||||
to establish the connection.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
The new [Config.GetEncryptedClientHelloKeys] callback can be used to set the
|
||||
[EncryptedClientHelloKey]s for a server to use when a client sends an Encrypted
|
||||
Client Hello extension.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
SHA-1 signature algorithms are now disallowed in TLS 1.2 handshakes, per
|
||||
[RFC 9155](https://www.rfc-editor.org/rfc/rfc9155.html).
|
||||
They can be re-enabled with the `tlssha1=1` GODEBUG option.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
When [FIPS 140-3 mode](/doc/security/fips140) is enabled, Extended Master Secret
|
||||
is now required in TLS 1.2, and Ed25519 and X25519MLKEM768 are now allowed.
|
||||
|
|
@ -1 +0,0 @@
|
|||
TLS servers now prefer the highest supported protocol version, even if it isn't the client's most preferred protocol version.
|
||||
|
|
@ -1 +0,0 @@
|
|||
[CreateCertificate], [CreateCertificateRequest], and [CreateRevocationList] can now accept a [crypto.MessageSigner] signing interface as well as [crypto.Signer]. This allows these functions to use signers which implement "one-shot" signing interfaces, where hashing is done as part of the signing operation, instead of by the caller.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[CreateCertificate] now uses truncated SHA-256 to populate the `SubjectKeyId` if
|
||||
it is missing. The GODEBUG setting `x509sha256skid=0` reverts to SHA-1.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
The [debug/elf] package adds two new constants:
|
||||
- [PT_RISCV_ATTRIBUTES]
|
||||
- [SHT_RISCV_ATTRIBUTES]
|
||||
for RISC-V ELF parsing.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
The new [PreorderStack] function, like [Inspect], traverses a syntax
|
||||
tree and provides control over descent into subtrees, but as a
|
||||
convenience it also provides the stack of enclosing nodes at each
|
||||
point.
|
||||
|
|
@ -1 +0,0 @@
|
|||
The [ParseDir] function is deprecated.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
The new [FileSet.AddExistingFiles] method enables existing Files to be
|
||||
added to a FileSet, or a FileSet to be constructed for an arbitrary
|
||||
set of Files, alleviating the problems associated with a single global
|
||||
FileSet in long-lived applications.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
[Var] now has a [Var.Kind] method that classifies the variable as one
|
||||
of: package-level, receiver, parameter, result, or local variable, or
|
||||
a struct field.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
The new [LookupSelection] function looks up the field or method of a
|
||||
given name and receiver type, like the existing [LookupFieldOrMethod]
|
||||
function, but returns the result in the form of a [Selection].
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
The new [XOF](/pkg/hash#XOF) interface can be implemented by "extendable output
|
||||
functions", which are hash functions with arbitrary or unlimited output length
|
||||
such as [SHAKE](https://pkg.go.dev/crypto/sha3#SHAKE).
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Hashes implementing the new [Cloner] interface can return a copy of their state.
|
||||
All standard library [Hash] implementations now implement [Cloner].
|
||||
|
|
@ -1 +0,0 @@
|
|||
The new [Hash.Clone] method implements [hash.Cloner](/pkg/hash#Cloner).
|
||||
|
|
@ -1 +0,0 @@
|
|||
A new [ReadLinkFS] interface provides the ability to read symbolic links in a filesystem.
|
||||
|
|
@ -1 +0,0 @@
|
|||
[GroupAttrs] creates a group [Attr] from a slice of [Attr] values.
|
||||
|
|
@ -1 +0,0 @@
|
|||
[Record] now has a Source() method, returning its source location or nil if unavailable.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The new helper function [FieldContentDisposition] builds multipart
|
||||
Content-Disposition header fields.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
On Windows, the [TCPConn.File], [UDPConn.File], [UnixConn.File],
|
||||
[IPConn.File], [TCPListener.File], and [UnixListener.File]
|
||||
methods are now supported.
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[LookupMX] and [*Resolver.LookupMX] now return DNS names that look
|
||||
like valid IP address, as well as valid domain names.
|
||||
Previously if a name server returned an IP address as a DNS name,
|
||||
LookupMX would discard it, as required by the RFCs.
|
||||
However, name servers in practice do sometimes return IP addresses.
|
||||
|
|
@ -1 +0,0 @@
|
|||
On Windows, the [ListenMulticastUDP] now supports IPv6 addresses.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
On Windows, the [FileConn], [FilePacketConn], [FileListener]
|
||||
functions are now supported.
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
The new [CrossOriginProtection] implements protections against [Cross-Site
|
||||
Request Forgery (CSRF)][] by rejecting non-safe cross-origin browser requests.
|
||||
It uses [modern browser Fetch metadata][Sec-Fetch-Site], doesn't require tokens
|
||||
or cookies, and supports origin-based and pattern-based bypasses.
|
||||
|
||||
[Sec-Fetch-Site]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Site
|
||||
[Cross-Site Request Forgery (CSRF)]: https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/CSRF
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
On Windows, [NewFile] now supports handles opened for asynchronous I/O (that is,
|
||||
[syscall.FILE_FLAG_OVERLAPPED] is specified in the [syscall.CreateFile] call).
|
||||
These handles are associated with the Go runtime's I/O completion port,
|
||||
which provides the following benefits for the resulting [File]:
|
||||
|
||||
- I/O methods ([File.Read], [File.Write], [File.ReadAt], and [File.WriteAt]) do not block an OS thread.
|
||||
- Deadline methods ([File.SetDeadline], [File.SetReadDeadline], and [File.SetWriteDeadline]) are supported.
|
||||
|
||||
This enhancement is especially beneficial for applications that communicate via named pipes on Windows.
|
||||
|
||||
Note that a handle can only be associated with one completion port at a time.
|
||||
If the handle provided to [NewFile] is already associated with a completion port,
|
||||
the returned [File] is downgraded to synchronous I/O mode.
|
||||
In this case, I/O methods will block an OS thread, and the deadline methods have no effect.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The filesystem returned by [DirFS] implements the new [io/fs.ReadLinkFS] interface.
|
||||
[CopyFS] supports symlinks when copying filesystems that implement [io/fs.ReadLinkFS].
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
The [os.Root] type supports the following additional methods:
|
||||
|
||||
* [os.Root.Chmod]
|
||||
* [os.Root.Chown]
|
||||
* [os.Root.Chtimes]
|
||||
* [os.Root.Lchown]
|
||||
* [os.Root.Link]
|
||||
* [os.Root.MkdirAll]
|
||||
* [os.Root.ReadFile]
|
||||
* [os.Root.Readlink]
|
||||
* [os.Root.RemoveAll]
|
||||
* [os.Root.Rename]
|
||||
* [os.Root.Symlink]
|
||||
* [os.Root.WriteFile]
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- go.dev/issue/73126 is documented as part of 67002 -->
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
The new [TypeAssert] function permits converting a [Value] directly to a Go value
|
||||
of the given type. This is like using a type assertion on the result of [Value.Interface],
|
||||
but avoids unnecessary memory allocations.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
The `\p{name}` and `\P{name}` character class syntaxes now accept the names
|
||||
Any, ASCII, Assigned, Cn, and LC, as well as Unicode category aliases like `\p{Letter}` for `\pL`.
|
||||
Following [Unicode TR18](https://unicode.org/reports/tr18/), they also now use
|
||||
case-insensitive name lookups, ignoring spaces, underscores, and hyphens.
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
Cleanup functions scheduled by [AddCleanup] are now executed
|
||||
concurrently and in parallel, making cleanups more viable for heavy
|
||||
use like the [unique] package. Note that individual cleanups should
|
||||
still shunt their work to a new goroutine if they must execute or
|
||||
block for a long time to avoid blocking the cleanup queue.
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
When `GODEBUG=checkfinalizers=1` is set, the runtime will run
|
||||
diagnostics on each garbage collection cycle to find common issues
|
||||
with how the program might use finalizers and cleanups, such as those
|
||||
described [in the GC
|
||||
guide](/doc/gc-guide#Finalizers_cleanups_and_weak_pointers). In this
|
||||
mode, the runtime will also regularly report the finalizer and
|
||||
cleanup queue lengths to stderr to help identify issues with
|
||||
long-running finalizers and/or cleanups.
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
The new [SetDefaultGOMAXPROCS] function sets `GOMAXPROCS` to the runtime
|
||||
default value, as if the `GOMAXPROCS` environment variable is not set. This is
|
||||
useful for enabling the [new `GOMAXPROCS` default](#runtime) if it has been
|
||||
disabled by the `GOMAXPROCS` environment variable or a prior call to
|
||||
[GOMAXPROCS].
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
The mutex profile for contention on runtime-internal locks now correctly points
|
||||
to the end of the critical section that caused the delay. This matches the
|
||||
profile's behavior for contention on `sync.Mutex` values. The
|
||||
`runtimecontentionstacks` setting for `GODEBUG`, which allowed opting in to the
|
||||
unusual behavior of Go 1.22 through 1.24 for this part of the profile, is now
|
||||
gone.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
<!-- go.dev/issue/63185 -->
|
||||
TODO The flight recorder has been added to the runtime/trace package.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[WaitGroup] has added a new method [WaitGroup.Go],
|
||||
that makes the common pattern of creating and counting goroutines more convenient.
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
The new methods [T.Attr], [B.Attr], and [F.Attr] emit an
|
||||
attribute to the test log. An attribute is an arbitrary
|
||||
key and value associated with a test.
|
||||
|
||||
For example, in a test named `TestAttr`,
|
||||
`t.Attr("key", "value")` emits:
|
||||
|
||||
```
|
||||
=== ATTR TestAttr key value
|
||||
```
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<!-- go.dev/issue/59928 -->
|
||||
|
||||
The new [Output] method of [testing.T], [testing.B] and [testing.F] provides a Writer
|
||||
that writes to the same test output stream as [TB.Log], but omits the file and line number.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
[MapFS] implements the new [io/fs.ReadLinkFS] interface.
|
||||
[TestFS] will verify the functionality of the [io/fs.ReadLinkFS] interface if implemented.
|
||||
[TestFS] will no longer follow symlinks to avoid unbounded recursion.
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- testing/synctest -->
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
The new [CategoryAliases] map provides access to category alias names, such as “Letter” for “L”.
|
||||
The new categories [Cn] and [LC] define unassigned codepoints and cased letters, respectively.
|
||||
These have always been defined by Unicode but were inadvertently omitted in earlier versions of Go.
|
||||
The [C] category now includes [Cn], meaning it has added all unassigned code points.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
The [unique] package now reclaims interned values more eagerly,
|
||||
more efficiently, and in parallel. As a consequence, applications using
|
||||
[Make] are now less likely to experience memory blow-up when lots of
|
||||
truly unique values are interned.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
Values passed to [Make] containing [Handle]s previously required multiple
|
||||
garbage collection cycles to collect, proportional to the depth of the chain
|
||||
of [Handle] values. Now, they are collected promptly in a single cycle, once
|
||||
unused.
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
## Ports {#ports}
|
||||
|
||||
### Darwin
|
||||
|
||||
<!-- go.dev/issue/69839 -->
|
||||
As [announced](/doc/go1.24#darwin) in the Go 1.24 release notes, Go 1.25 requires macOS 12 Monterey or later; support for previous versions has been discontinued.
|
||||
|
||||
### Windows
|
||||
|
||||
<!-- go.dev/issue/71671 -->
|
||||
Go 1.25 is the last release that contains the [broken](/doc/go1.24#windows) 32-bit windows/arm port (`GOOS=windows` `GOARCH=arm`). It will be removed in Go 1.26.
|
||||
|
|
@ -24,8 +24,8 @@
|
|||
# in the CL match the update.bash in the CL.
|
||||
|
||||
# Versions to use.
|
||||
CODE=2025a
|
||||
DATA=2025a
|
||||
CODE=2025b
|
||||
DATA=2025b
|
||||
|
||||
set -e
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -853,6 +853,10 @@ func IsAddressable(n Node) bool {
|
|||
//
|
||||
// calling StaticValue on the "int(y)" expression returns the outer
|
||||
// "g()" expression.
|
||||
//
|
||||
// NOTE: StaticValue can return a result with a different type than
|
||||
// n's type because it can traverse through OCONVNOP operations.
|
||||
// TODO: consider reapplying OCONVNOP operations to the result. See https://go.dev/cl/676517.
|
||||
func StaticValue(n Node) Node {
|
||||
for {
|
||||
switch n1 := n.(type) {
|
||||
|
|
|
|||
|
|
@ -305,6 +305,7 @@ func ForCapture(fn *ir.Func) []VarAndLoop {
|
|||
as := ir.NewAssignStmt(x.Pos(), z, tz)
|
||||
as.Def = true
|
||||
as.SetTypecheck(1)
|
||||
z.Defn = as
|
||||
preBody.Append(as)
|
||||
dclFixups[z] = as
|
||||
|
||||
|
|
|
|||
|
|
@ -39,8 +39,7 @@ kind. Go constructs are mapped onto (potentially multiple) elements.
|
|||
Elements are accessed using an index relative to the start of the
|
||||
section.
|
||||
|
||||
// TODO(markfreeman): Rename to SectionIndex.
|
||||
RelIndex = Uint64 .
|
||||
RelElemIdx = Uint64 .
|
||||
|
||||
## String Section
|
||||
String values are stored as elements in the string section. Elements
|
||||
|
|
@ -147,7 +146,7 @@ referenced element.
|
|||
.
|
||||
RefTableEntry = [ Sync ]
|
||||
SectionKind
|
||||
RelIndex
|
||||
RelElemIdx
|
||||
.
|
||||
|
||||
Elements encode references to other elements as an index in the
|
||||
|
|
@ -155,7 +154,7 @@ reference table — not the location of the referenced element directly.
|
|||
|
||||
// TODO(markfreeman): Rename to RefUse.
|
||||
UseReloc = [ Sync ]
|
||||
RelIndex
|
||||
RelElemIdx
|
||||
.
|
||||
|
||||
# Primitives
|
||||
|
|
|
|||
|
|
@ -49,6 +49,9 @@ type pkgReader struct {
|
|||
// but bitwise inverted so we can detect if we're missing the entry
|
||||
// or not.
|
||||
newindex []index
|
||||
|
||||
// indicates whether the data is reading during reshaping.
|
||||
reshaping bool
|
||||
}
|
||||
|
||||
func newPkgReader(pr pkgbits.PkgDecoder) *pkgReader {
|
||||
|
|
@ -116,6 +119,10 @@ type reader struct {
|
|||
// find parameters/results.
|
||||
funarghack bool
|
||||
|
||||
// reshaping is used during reading exprReshape code, preventing
|
||||
// the reader from shapifying the re-shaped type.
|
||||
reshaping bool
|
||||
|
||||
// methodSym is the name of method's name, if reading a method.
|
||||
// It's nil if reading a normal function or closure body.
|
||||
methodSym *types.Sym
|
||||
|
|
@ -762,7 +769,7 @@ func (pr *pkgReader) objIdxMayFail(idx index, implicits, explicits []*types.Type
|
|||
if hack {
|
||||
if sym.Def != nil {
|
||||
name = sym.Def.(*ir.Name)
|
||||
assert(name.Type() == typ)
|
||||
assert(types.IdenticalStrict(name.Type(), typ))
|
||||
return name, nil
|
||||
}
|
||||
sym.Def = name
|
||||
|
|
@ -1007,7 +1014,7 @@ func (pr *pkgReader) objDictIdx(sym *types.Sym, idx index, implicits, explicits
|
|||
// arguments.
|
||||
for i, targ := range dict.targs {
|
||||
basic := r.Bool()
|
||||
if dict.shaped {
|
||||
if dict.shaped && !pr.reshaping {
|
||||
dict.targs[i] = shapify(targ, basic)
|
||||
}
|
||||
}
|
||||
|
|
@ -2445,7 +2452,10 @@ func (r *reader) expr() (res ir.Node) {
|
|||
|
||||
case exprReshape:
|
||||
typ := r.typ()
|
||||
old := r.reshaping
|
||||
r.reshaping = true
|
||||
x := r.expr()
|
||||
r.reshaping = old
|
||||
|
||||
if types.IdenticalStrict(x.Type(), typ) {
|
||||
return x
|
||||
|
|
@ -2568,7 +2578,10 @@ func (r *reader) funcInst(pos src.XPos) (wrapperFn, baseFn, dictPtr ir.Node) {
|
|||
info := r.dict.subdicts[idx]
|
||||
explicits := r.p.typListIdx(info.explicits, r.dict)
|
||||
|
||||
old := r.p.reshaping
|
||||
r.p.reshaping = r.reshaping
|
||||
baseFn = r.p.objIdx(info.idx, implicits, explicits, true).(*ir.Name)
|
||||
r.p.reshaping = old
|
||||
|
||||
// TODO(mdempsky): Is there a more robust way to get the
|
||||
// dictionary pointer type here?
|
||||
|
|
|
|||
|
|
@ -916,7 +916,7 @@ func init() {
|
|||
inputs: []regMask{buildReg("DI")},
|
||||
clobbers: buildReg("DI"),
|
||||
},
|
||||
faultOnNilArg0: true,
|
||||
//faultOnNilArg0: true, // Note: removed for 73748. TODO: reenable at some point
|
||||
unsafePoint: true, // FP maintenance around DUFFCOPY can be clobbered by interrupts
|
||||
},
|
||||
|
||||
|
|
@ -955,8 +955,8 @@ func init() {
|
|||
clobbers: buildReg("DI SI X0"), // uses X0 as a temporary
|
||||
},
|
||||
clobberFlags: true,
|
||||
faultOnNilArg0: true,
|
||||
faultOnNilArg1: true,
|
||||
//faultOnNilArg0: true, // Note: removed for 73748. TODO: reenable at some point
|
||||
//faultOnNilArg1: true,
|
||||
unsafePoint: true, // FP maintenance around DUFFCOPY can be clobbered by interrupts
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -554,7 +554,7 @@ func init() {
|
|||
inputs: []regMask{buildReg("R20")},
|
||||
clobbers: buildReg("R16 R17 R20 R30"),
|
||||
},
|
||||
faultOnNilArg0: true,
|
||||
//faultOnNilArg0: true, // Note: removed for 73748. TODO: reenable at some point
|
||||
unsafePoint: true, // FP maintenance around DUFFZERO can be clobbered by interrupts
|
||||
},
|
||||
|
||||
|
|
@ -595,8 +595,8 @@ func init() {
|
|||
inputs: []regMask{buildReg("R21"), buildReg("R20")},
|
||||
clobbers: buildReg("R16 R17 R20 R21 R26 R30"),
|
||||
},
|
||||
faultOnNilArg0: true,
|
||||
faultOnNilArg1: true,
|
||||
//faultOnNilArg0: true, // Note: removed for 73748. TODO: reenable at some point
|
||||
//faultOnNilArg1: true,
|
||||
unsafePoint: true, // FP maintenance around DUFFCOPY can be clobbered by interrupts
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -13913,7 +13913,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "DUFFZERO",
|
||||
auxType: auxInt64,
|
||||
argLen: 2,
|
||||
faultOnNilArg0: true,
|
||||
unsafePoint: true,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -13988,8 +13987,6 @@ var opcodeTable = [...]opInfo{
|
|||
auxType: auxInt64,
|
||||
argLen: 3,
|
||||
clobberFlags: true,
|
||||
faultOnNilArg0: true,
|
||||
faultOnNilArg1: true,
|
||||
unsafePoint: true,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -23525,7 +23522,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "DUFFZERO",
|
||||
auxType: auxInt64,
|
||||
argLen: 2,
|
||||
faultOnNilArg0: true,
|
||||
unsafePoint: true,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -23551,8 +23547,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "DUFFCOPY",
|
||||
auxType: auxInt64,
|
||||
argLen: 3,
|
||||
faultOnNilArg0: true,
|
||||
faultOnNilArg1: true,
|
||||
unsafePoint: true,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import (
|
|||
"fmt"
|
||||
"go/constant"
|
||||
. "internal/types/errors"
|
||||
"os"
|
||||
"sync/atomic"
|
||||
)
|
||||
|
||||
|
|
@ -419,7 +420,24 @@ func (check *Checker) handleBailout(err *error) {
|
|||
// normal return or early exit
|
||||
*err = check.firstErr
|
||||
default:
|
||||
// TODO(markfreeman): dump posStack if available
|
||||
if len(check.posStack) > 0 {
|
||||
doPrint := func(ps []syntax.Pos) {
|
||||
for i := len(ps) - 1; i >= 0; i-- {
|
||||
fmt.Fprintf(os.Stderr, "\t%v\n", ps[i])
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Fprintln(os.Stderr, "The following panic happened checking types near:")
|
||||
if len(check.posStack) <= 10 {
|
||||
doPrint(check.posStack)
|
||||
} else {
|
||||
// if it's long, truncate the middle; it's least likely to help
|
||||
doPrint(check.posStack[len(check.posStack)-5:])
|
||||
fmt.Fprintln(os.Stderr, "\t...")
|
||||
doPrint(check.posStack[:5])
|
||||
}
|
||||
}
|
||||
|
||||
// re-panic
|
||||
panic(p)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -332,6 +332,7 @@ func TestStdFixed(t *testing.T) {
|
|||
"issue49814.go", // go/types does not have constraints on array size
|
||||
"issue56103.go", // anonymous interface cycles; will be a type checker error in 1.22
|
||||
"issue52697.go", // types2 does not have constraints on stack size
|
||||
"issue73309.go", // this test requires GODEBUG=gotypesalias=1
|
||||
|
||||
// These tests requires runtime/cgo.Incomplete, which is only available on some platforms.
|
||||
// However, types2 does not know about build constraints.
|
||||
|
|
|
|||
|
|
@ -249,14 +249,14 @@ func (o *orderState) addrTemp(n ir.Node) ir.Node {
|
|||
if (v.Op() == ir.OSTRUCTLIT || v.Op() == ir.OARRAYLIT) && !base.Ctxt.IsFIPS() {
|
||||
if ir.IsZero(v) && 0 < v.Type().Size() && v.Type().Size() <= abi.ZeroValSize {
|
||||
// This zero value can be represented by the read-only zeroVal.
|
||||
zeroVal := ir.NewLinksymExpr(v.Pos(), ir.Syms.ZeroVal, v.Type())
|
||||
zeroVal := ir.NewLinksymExpr(v.Pos(), ir.Syms.ZeroVal, n.Type())
|
||||
vstat := typecheck.Expr(zeroVal).(*ir.LinksymOffsetExpr)
|
||||
return vstat
|
||||
}
|
||||
if isStaticCompositeLiteral(v) {
|
||||
// v can be directly represented in the read-only data section.
|
||||
lit := v.(*ir.CompLitExpr)
|
||||
vstat := readonlystaticname(lit.Type())
|
||||
vstat := readonlystaticname(n.Type())
|
||||
fixedlit(inInitFunction, initKindStatic, lit, vstat, nil) // nil init
|
||||
vstat = typecheck.Expr(vstat).(*ir.Name)
|
||||
return vstat
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ func main() {
|
|||
switch strings.TrimSuffix(path.Base(name), ".exe") {
|
||||
default:
|
||||
return false
|
||||
case "asm", "cgo", "compile", "cover", "link", "pack", "preprofile", "vet":
|
||||
case "asm", "cgo", "compile", "cover", "link", "preprofile", "vet":
|
||||
}
|
||||
}
|
||||
return true
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue