mirror of https://github.com/golang/go.git
Merge branch 'golang:master' into master
This commit is contained in:
commit
f397da8ee2
|
|
@ -0,0 +1,110 @@
|
|||
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/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()) #63796
|
||||
|
|
@ -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,7 +0,0 @@
|
|||
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, type MergeMode //deprecated #73088
|
||||
|
|
@ -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,56 +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.
|
||||
|
||||
<!-- CLs 653856, 657937, 663795, 664299 -->
|
||||
|
||||
The compiler can now allocate the backing store for slices on the
|
||||
stack in more situations, which improves performance. This change has
|
||||
the potential to amplify the effects of incorrect
|
||||
[unsafe.Pointer](/pkg/unsafe#Pointer) usage, see for example [issue
|
||||
73199](/issue/73199). In order to track down these problems, the
|
||||
[bisect tool](https://pkg.go.dev/golang.org/x/tools/cmd/bisect) can be
|
||||
used to find the allocation causing trouble using the
|
||||
`-compile=variablemake` flag. All such new stack allocations can also
|
||||
be turned off using `-gcflags=all=-d=variablemakehash=n`.
|
||||
|
||||
## Assembler {#assembler}
|
||||
|
||||
## Linker {#linker}
|
||||
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
## Standard library {#library}
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
### New testing/synctest package
|
||||
|
||||
<!-- go.dev/issue/67434, go.dev/issue/73567 -->
|
||||
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 [ast.FilterPackage], [ast.PackageExports], and
|
||||
[ast.MergePackageFiles] functions, and the [MergeMode] type and its
|
||||
constants, are all deprecated, as they are for use only with the
|
||||
long-deprecated [ast.Object] and [ast.Package] machinery.
|
||||
|
|
@ -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.
|
||||
|
|
@ -1,206 +0,0 @@
|
|||
<!--
|
||||
Output from relnote todo that was generated and reviewed on 2025-05-23, plus summary info from bug/CL: -->
|
||||
|
||||
### TODO
|
||||
|
||||
**Please turn these into proper release notes**
|
||||
|
||||
<!-- TODO: CL 420114 has a RELNOTE comment without a suggested text (from RELNOTE comment in https://go.dev/cl/420114) -->
|
||||
all: implement plugin build mode for riscv64
|
||||
|
||||
<!-- TODO: CL 660996 has a RELNOTE comment without a suggested text (from RELNOTE comment in https://go.dev/cl/660996) -->
|
||||
cmd/link/internal/ld: introduce -funcalign=N option
|
||||
This patch adds linker option -funcalign=N that allows to set alignment
|
||||
for function entries.
|
||||
For \#72130.
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/32816 (from https://go.dev/cl/645155, https://go.dev/cl/645455, https://go.dev/cl/645955, https://go.dev/cl/646255, https://go.dev/cl/646455, https://go.dev/cl/646495, https://go.dev/cl/646655, https://go.dev/cl/646875, https://go.dev/cl/647298, https://go.dev/cl/647299, https://go.dev/cl/647736, https://go.dev/cl/648581, https://go.dev/cl/648715, https://go.dev/cl/648976, https://go.dev/cl/648995, https://go.dev/cl/649055, https://go.dev/cl/649056, https://go.dev/cl/649057, https://go.dev/cl/649456, https://go.dev/cl/649476, https://go.dev/cl/650755, https://go.dev/cl/651615, https://go.dev/cl/651617, https://go.dev/cl/651655, https://go.dev/cl/653436) -->
|
||||
cmd/fix: automate migrations for simple deprecations
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/34055 (from https://go.dev/cl/625577) -->
|
||||
cmd/go: allow serving module under the subdirectory of git repository
|
||||
cmd/go: add subdirectory support to go-import meta tag
|
||||
This CL adds ability to specify a subdirectory in the go-import meta tag.
|
||||
A go-import meta tag now will support:
|
||||
\<meta name="go-import" content="root-path vcs repo-url subdir">
|
||||
Fixes: \#34055
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/42965 (from https://go.dev/cl/643355, https://go.dev/cl/670656, https://go.dev/cl/670975, https://go.dev/cl/674076) -->
|
||||
cmd/go: add global ignore mechanism for Go tooling ecosystem
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/51430 (from https://go.dev/cl/644997, https://go.dev/cl/646355) -->
|
||||
cmd/cover: extend coverage testing to include applications
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/60905 (from https://go.dev/cl/645795) -->
|
||||
all: add GOARM64=v8.1 and so on
|
||||
runtime: check LSE support on ARM64 at runtime init
|
||||
Check presence of LSE support on ARM64 chip if we targeted it at compile
|
||||
time.
|
||||
Related to \#69124
|
||||
Updates \#60905
|
||||
Fixes \#71411
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/61476 (from https://go.dev/cl/633417) -->
|
||||
all: add GORISCV64 environment variable
|
||||
cmd/go: add rva23u64 as a valid value for GORISCV64
|
||||
The RVA23 profile was ratified on the 21st of October 2024.
|
||||
https://riscv.org/announcements/2024/10/risc-v-announces-ratification-of-the-rva23-profile-standard/
|
||||
Now that it's ratified we can add rva23u64 as a valid value for the
|
||||
GORISCV64 environment variable. This will allow the compiler and
|
||||
assembler to generate instructions made mandatory by the new profile
|
||||
without a runtime check. Examples of such instructions include those
|
||||
introduced by the Vector and Zicond extensions.
|
||||
Setting GORISCV64=rva23u64 defines the riscv64.rva20u64,
|
||||
riscv64.rva22u64 and riscv64.rva23u64 build tags, sets the internal
|
||||
variable buildcfg.GORISCV64 to 23 and defines the macros
|
||||
GORISCV64_rva23u64, hasV, hasZba, hasZbb, hasZbs, hasZfa, and
|
||||
hasZicond for use in assembly language code.
|
||||
Updates \#61476
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/61716 (from https://go.dev/cl/644475) -->
|
||||
math/rand/v2: revised API for math/rand
|
||||
rand: deprecate in favor of math/rand/v2
|
||||
For golang/go#61716
|
||||
Fixes golang/go#71373
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/64876 (from https://go.dev/cl/649435) -->
|
||||
cmd/go: enable GOCACHEPROG by default
|
||||
cmd/go/internal/cacheprog: drop Request.ObjectID
|
||||
ObjectID was a misnaming of OutputID from cacheprog's initial
|
||||
implementation. It was maintained for compatibility with existing
|
||||
cacheprog users in 1.24 but can be removed in 1.25.
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/68106 (from https://go.dev/cl/628175, https://go.dev/cl/674158, https://go.dev/cl/674436, https://go.dev/cl/674437, https://go.dev/cl/674555, https://go.dev/cl/674556, https://go.dev/cl/674575, https://go.dev/cl/675075, https://go.dev/cl/675076, https://go.dev/cl/675155, https://go.dev/cl/675235) -->
|
||||
cmd/go: doc -http should start a pkgsite instance and open a browser
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/69712 (from https://go.dev/cl/619955) -->
|
||||
cmd/go: -json flag for go version -m
|
||||
cmd/go: support -json flag in go version
|
||||
It supports features described in the issue:
|
||||
- add -json flag for 'go version -m' to print json encoding of
|
||||
runtime/debug.BuildSetting to standard output.
|
||||
- report an error when specifying -json flag without -m.
|
||||
- print build settings on seperated line for each binary
|
||||
Fixes \#69712
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/70123 (from https://go.dev/cl/657116) -->
|
||||
crypto: mechanism to enable FIPS mode
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/70128 (from https://go.dev/cl/645716, https://go.dev/cl/647455, https://go.dev/cl/651215, https://go.dev/cl/651256, https://go.dev/cl/652136, https://go.dev/cl/652215, https://go.dev/cl/653095, https://go.dev/cl/653139, https://go.dev/cl/653156, https://go.dev/cl/654395) -->
|
||||
spec: remove notion of core types
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/70200 (from https://go.dev/cl/674916) -->
|
||||
cmd/go: add fips140 module selection mechanism
|
||||
lib/fips140: set inprocess.txt to v1.0.0
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/70464 (from https://go.dev/cl/630137) -->
|
||||
testing: panic in AllocsPerRun during parallel test
|
||||
testing: panic in AllocsPerRun if parallel tests are running
|
||||
If other tests are running, AllocsPerRun's result will be inherently flaky.
|
||||
Saw this with CL 630136 and \#70327.
|
||||
Proposed in \#70464.
|
||||
Fixes \#70464.
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/71845 (from https://go.dev/cl/665796, https://go.dev/cl/666935) -->
|
||||
encoding/json/v2: add new JSON API behind a GOEXPERIMENT=jsonv2 guard
|
||||
|
||||
<!-- TODO: accepted proposal https://go.dev/issue/71867 (from https://go.dev/cl/666476, https://go.dev/cl/666755, https://go.dev/cl/673119, https://go.dev/cl/673696) -->
|
||||
cmd/go, cmd/distpack: build and run tools that are not necessary for builds as needed and don't include in binary distribution
|
||||
|
||||
<!-- Items that don't need to be mentioned in Go 1.25 release notes but are picked up by relnote todo
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/30999 (from https://go.dev/cl/671795)
|
||||
net: reject leading zeros in IP address parsers
|
||||
net: don't test with leading 0 in ipv4 addresses
|
||||
Updates \#30999
|
||||
Fixes \#73378
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/36532 (from https://go.dev/cl/647555)
|
||||
testing: reconsider adding Context method to testing.T
|
||||
database/sql: use t.Context in tests
|
||||
Replace "context.WithCancel(context.Background())" with "t.Context()".
|
||||
Updates \#36532
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/48429 (from https://go.dev/cl/648577)
|
||||
cmd/go: track tool dependencies in go.mod
|
||||
cmd/go: document -modfile and other flags for 'go tool'
|
||||
Mention -modfile, -C, -overlay, and -modcacherw in the 'go tool'
|
||||
documentation. We let a reference to 'go help build' give a pointer to
|
||||
more detailed information.
|
||||
The -modfile flag in particular is newly useful with the Go 1.24 support
|
||||
for user-defined tools with 'go tool'.
|
||||
Updates \#48429
|
||||
Updates \#33926
|
||||
Updates \#71663
|
||||
Fixes \#71502
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/51572 (from https://go.dev/cl/651996)
|
||||
cmd/go: add 'unix' build tag but not \*\_unix.go file support
|
||||
os, syscall: use unix build tag where appropriate
|
||||
These newly added files may use the unix build tag instead of explitly
|
||||
listing all unix-like GOOS values.
|
||||
For \#51572
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/53757 (from https://go.dev/cl/644575)
|
||||
x/sync/errgroup: propagate panics and Goexits through Wait
|
||||
errgroup: propagate panic and Goexit through Wait
|
||||
Recovered panic values are wrapped and saved in Group.
|
||||
Goexits are detected by a sentinel value set after the given function
|
||||
returns normally. Wait propagates the first instance of a panic or
|
||||
Goexit.
|
||||
According to the runtime.Goexit after the code will not be executed,
|
||||
with a bool, if f not call runtime.Goexit, is true,
|
||||
determine whether to propagate runtime.Goexit.
|
||||
Fixes golang/go#53757
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/54743 (from https://go.dev/cl/532415)
|
||||
ssh: add server side support for Diffie Hellman Group Exchange
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/57792 (from https://go.dev/cl/649716, https://go.dev/cl/651737)
|
||||
x/crypto/x509roots: new module
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/58523 (from https://go.dev/cl/538235)
|
||||
ssh: expose negotiated algorithms
|
||||
Fixes golang/go#58523
|
||||
Fixes golang/go#46638
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/61537 (from https://go.dev/cl/531935)
|
||||
ssh: export supported algorithms
|
||||
Fixes golang/go#61537
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/61901 (from https://go.dev/cl/647875)
|
||||
bytes, strings: add iterator forms of existing functions
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/61940 (from https://go.dev/cl/650235)
|
||||
all: fix links to Go wiki
|
||||
The Go wiki on GitHub has moved to go.dev in golang/go#61940.
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/64207 (from https://go.dev/cl/647015, https://go.dev/cl/652235)
|
||||
all: end support for macOS 10.15 in Go 1.23
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/67839 (from https://go.dev/cl/646535)
|
||||
x/sys/unix: access to ELF auxiliary vector
|
||||
runtime: adjust comments for auxv getAuxv
|
||||
github.com/cilium/ebpf no longer accesses getAuxv using linkname but now
|
||||
uses the golang.org/x/sys/unix.Auxv wrapper introduced in
|
||||
go.dev/cl/644295.
|
||||
Also adjust the list of users to include x/sys/unix.
|
||||
Updates \#67839
|
||||
Updates \#67401
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/68780 (from https://go.dev/cl/659835)
|
||||
x/term: support pluggable history
|
||||
term: support pluggable history
|
||||
Expose a new History interface that allows replacement of the default
|
||||
ring buffer to customize what gets added or not; as well as to allow
|
||||
saving/restoring history on either the default ringbuffer or a custom
|
||||
replacement.
|
||||
Fixes golang/go#68780
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/69095 (from https://go.dev/cl/649320, https://go.dev/cl/649321, https://go.dev/cl/649337, https://go.dev/cl/649376, https://go.dev/cl/649377, https://go.dev/cl/649378, https://go.dev/cl/649379, https://go.dev/cl/649380, https://go.dev/cl/649397, https://go.dev/cl/649398, https://go.dev/cl/649419, https://go.dev/cl/649497, https://go.dev/cl/649498, https://go.dev/cl/649618, https://go.dev/cl/649675, https://go.dev/cl/649676, https://go.dev/cl/649677, https://go.dev/cl/649695, https://go.dev/cl/649696, https://go.dev/cl/649697, https://go.dev/cl/649698, https://go.dev/cl/649715, https://go.dev/cl/649717, https://go.dev/cl/649718, https://go.dev/cl/649755, https://go.dev/cl/649775, https://go.dev/cl/649795, https://go.dev/cl/649815, https://go.dev/cl/649835, https://go.dev/cl/651336, https://go.dev/cl/651736, https://go.dev/cl/651737, https://go.dev/cl/658018)
|
||||
all, x/build/cmd/relui: automate go directive maintenance in golang.org/x repositories
|
||||
|
||||
TODO: accepted proposal https://go.dev/issue/70859 (from https://go.dev/cl/666056, https://go.dev/cl/670835, https://go.dev/cl/672015, https://go.dev/cl/672016, https://go.dev/cl/672017)
|
||||
x/tools/go/ast/inspector: add Cursor, to enable partial and multi-level traversals
|
||||
|
||||
-->
|
||||
|
|
@ -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.
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -897,8 +897,8 @@ func init() {
|
|||
inputs: []regMask{buildReg("DI")},
|
||||
clobbers: buildReg("DI"),
|
||||
},
|
||||
faultOnNilArg0: true,
|
||||
unsafePoint: true, // FP maintenance around DUFFCOPY can be clobbered by interrupts
|
||||
//faultOnNilArg0: true, // Note: removed for 73748. TODO: reenable at some point
|
||||
unsafePoint: true, // FP maintenance around DUFFCOPY can be clobbered by interrupts
|
||||
},
|
||||
|
||||
// arg0 = address of memory to zero
|
||||
|
|
@ -935,10 +935,10 @@ func init() {
|
|||
inputs: []regMask{buildReg("DI"), buildReg("SI")},
|
||||
clobbers: buildReg("DI SI X0"), // uses X0 as a temporary
|
||||
},
|
||||
clobberFlags: true,
|
||||
faultOnNilArg0: true,
|
||||
faultOnNilArg1: true,
|
||||
unsafePoint: true, // FP maintenance around DUFFCOPY can be clobbered by interrupts
|
||||
clobberFlags: 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
|
||||
},
|
||||
|
||||
// arg0 = destination pointer
|
||||
|
|
|
|||
|
|
@ -554,8 +554,8 @@ func init() {
|
|||
inputs: []regMask{buildReg("R20")},
|
||||
clobbers: buildReg("R16 R17 R20 R30"),
|
||||
},
|
||||
faultOnNilArg0: true,
|
||||
unsafePoint: true, // FP maintenance around DUFFZERO can be clobbered by interrupts
|
||||
//faultOnNilArg0: true, // Note: removed for 73748. TODO: reenable at some point
|
||||
unsafePoint: true, // FP maintenance around DUFFZERO can be clobbered by interrupts
|
||||
},
|
||||
|
||||
// large zeroing
|
||||
|
|
@ -595,9 +595,9 @@ func init() {
|
|||
inputs: []regMask{buildReg("R21"), buildReg("R20")},
|
||||
clobbers: buildReg("R16 R17 R20 R21 R26 R30"),
|
||||
},
|
||||
faultOnNilArg0: true,
|
||||
faultOnNilArg1: true,
|
||||
unsafePoint: true, // FP maintenance around DUFFCOPY can be clobbered by interrupts
|
||||
//faultOnNilArg0: true, // Note: removed for 73748. TODO: reenable at some point
|
||||
//faultOnNilArg1: true,
|
||||
unsafePoint: true, // FP maintenance around DUFFCOPY can be clobbered by interrupts
|
||||
},
|
||||
|
||||
// large move
|
||||
|
|
|
|||
|
|
@ -13874,11 +13874,10 @@ var opcodeTable = [...]opInfo{
|
|||
},
|
||||
},
|
||||
{
|
||||
name: "DUFFZERO",
|
||||
auxType: auxInt64,
|
||||
argLen: 2,
|
||||
faultOnNilArg0: true,
|
||||
unsafePoint: true,
|
||||
name: "DUFFZERO",
|
||||
auxType: auxInt64,
|
||||
argLen: 2,
|
||||
unsafePoint: true,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
{0, 128}, // DI
|
||||
|
|
@ -13948,13 +13947,11 @@ var opcodeTable = [...]opInfo{
|
|||
},
|
||||
},
|
||||
{
|
||||
name: "DUFFCOPY",
|
||||
auxType: auxInt64,
|
||||
argLen: 3,
|
||||
clobberFlags: true,
|
||||
faultOnNilArg0: true,
|
||||
faultOnNilArg1: true,
|
||||
unsafePoint: true,
|
||||
name: "DUFFCOPY",
|
||||
auxType: auxInt64,
|
||||
argLen: 3,
|
||||
clobberFlags: true,
|
||||
unsafePoint: true,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
{0, 128}, // DI
|
||||
|
|
@ -23039,11 +23036,10 @@ var opcodeTable = [...]opInfo{
|
|||
},
|
||||
},
|
||||
{
|
||||
name: "DUFFZERO",
|
||||
auxType: auxInt64,
|
||||
argLen: 2,
|
||||
faultOnNilArg0: true,
|
||||
unsafePoint: true,
|
||||
name: "DUFFZERO",
|
||||
auxType: auxInt64,
|
||||
argLen: 2,
|
||||
unsafePoint: true,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
{0, 524288}, // R20
|
||||
|
|
@ -23065,12 +23061,10 @@ var opcodeTable = [...]opInfo{
|
|||
},
|
||||
},
|
||||
{
|
||||
name: "DUFFCOPY",
|
||||
auxType: auxInt64,
|
||||
argLen: 3,
|
||||
faultOnNilArg0: true,
|
||||
faultOnNilArg1: true,
|
||||
unsafePoint: true,
|
||||
name: "DUFFCOPY",
|
||||
auxType: auxInt64,
|
||||
argLen: 3,
|
||||
unsafePoint: true,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
{0, 1048576}, // R21
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ var zipRules = []testRule{
|
|||
{name: "go/pkg/tool/*/compile", goos: "darwin"},
|
||||
{name: "go/pkg/tool/*/compile", goos: "windows", exclude: true},
|
||||
{name: "go/pkg/tool/*/compile.exe", goos: "windows"},
|
||||
{name: "go/pkg/tool/*/pack", exclude: true},
|
||||
{name: "go/pkg/tool/*/pack.exe", exclude: true},
|
||||
}
|
||||
|
||||
var modRules = []testRule{
|
||||
|
|
@ -100,6 +102,8 @@ var modRules = []testRule{
|
|||
{name: "golang.org/toolchain@*/pkg/tool/*/compile", goos: "darwin"},
|
||||
{name: "golang.org/toolchain@*/pkg/tool/*/compile", goos: "windows", exclude: true},
|
||||
{name: "golang.org/toolchain@*/pkg/tool/*/compile.exe", goos: "windows"},
|
||||
{name: "golang.org/toolchain@*/pkg/tool/*/pack", exclude: true},
|
||||
{name: "golang.org/toolchain@*/pkg/tool/*/pack.exe", exclude: true},
|
||||
|
||||
// go.mod are renamed to _go.mod.
|
||||
{name: "**/go.mod", exclude: true},
|
||||
|
|
|
|||
|
|
@ -482,7 +482,7 @@ func (gcToolchain) pack(b *Builder, a *Action, afile string, ofiles []string) er
|
|||
p := a.Package
|
||||
sh := b.Shell(a)
|
||||
if cfg.BuildN || cfg.BuildX {
|
||||
cmdline := str.StringList(base.Tool("pack"), "r", absAfile, absOfiles)
|
||||
cmdline := str.StringList("go", "tool", "pack", "r", absAfile, absOfiles)
|
||||
sh.ShowCmd(p.Dir, "%s # internal", joinUnambiguously(cmdline))
|
||||
}
|
||||
if cfg.BuildN {
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue