mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
doc/next: delete
The release note fragments have been merged and added as _content/doc/go1.24.md in x/website in CL 634056. For #68545. Change-Id: I7b3840df01b8c3699681c0cd21a16af70f74d31d Reviewed-on: https://go-review.googlesource.com/c/go/+/634057 Auto-Submit: Michael Knyszek <mknyszek@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
d34e2ad194
commit
9d8273817c
82 changed files with 0 additions and 558 deletions
|
|
@ -1,14 +0,0 @@
|
|||
<!--
|
||||
NOTE: In this document and others in this directory, the convention is to
|
||||
set fixed-width phrases with non-fixed-width spaces, as in
|
||||
`hello` `world`.
|
||||
-->
|
||||
|
||||
<style>
|
||||
main ul li { margin: 0.5em 0; }
|
||||
</style>
|
||||
|
||||
## DRAFT RELEASE NOTES — Introduction to Go 1.24 {#introduction}
|
||||
|
||||
**Go 1.24 is not yet released. These are work-in-progress release notes.
|
||||
Go 1.24 is expected to be released in February 2025.**
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
## Changes to the language {#language}
|
||||
|
||||
<!-- go.dev/issue/46477 -->
|
||||
Go 1.24 now fully supports [generic type aliases](/issue/46477): a type alias
|
||||
may be parameterized like a defined type.
|
||||
See the [language spec](/ref/spec#Alias_declarations) for details.
|
||||
For now, the feature can be disabled by setting `GOEXPERIMENT=noaliastypeparams`;
|
||||
but the `aliastypeparams` setting will be removed for Go 1.25.
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
## Tools {#tools}
|
||||
|
||||
### Go command {#go-command}
|
||||
|
||||
<!-- go.dev/issue/48429 -->
|
||||
|
||||
Go modules can now track executable dependencies using `tool` directives in
|
||||
go.mod. This removes the need for the previous workaround of adding tools as
|
||||
blank imports to a file conventionally named "tools.go". The `go tool`
|
||||
command can now run these tools in addition to tools shipped with the Go
|
||||
distribution. For more information see [the
|
||||
documentation](/doc/modules/managing-dependencies#tools).
|
||||
|
||||
The new `-tool` flag for `go get` causes a tool directive to be added to the
|
||||
current module for named packages in addition to adding require directives.
|
||||
|
||||
The new [`tool` meta-pattern](/cmd/go#hdr-Package_lists_and_patterns) refers to
|
||||
all tools in the current module. This can be used to upgrade them all with `go
|
||||
get -u tool` or to install them into your GOBIN directory with `go install
|
||||
tool`.
|
||||
|
||||
<!-- go.dev/issue/69290 -->
|
||||
|
||||
Executables created by `go run` and the new behavior for `go tool` are now
|
||||
cached in the Go build cache. This makes repeated executions faster at the
|
||||
expense of making the cache larger. See [#69290](/issue/69290).
|
||||
|
||||
<!-- go.dev/issue/62067 -->
|
||||
|
||||
The `go build` and `go install` commands now accept a `-json` flag that reports
|
||||
build output and failures as structured JSON output on standard output.
|
||||
For details of the reporting format, see `go help buildjson`.
|
||||
|
||||
Furthermore, `go test -json` now reports build output and failures in JSON,
|
||||
interleaved with test result JSON.
|
||||
These are distinguished by new `Action` types, but if they cause problems in
|
||||
a test integration system, you can revert to the text build output by setting
|
||||
`GODEBUG=gotestjsonbuildtext=1`.
|
||||
|
||||
### Cgo {#cgo}
|
||||
|
||||
<!-- go.dev/issue/56378, CL 579955 -->
|
||||
Cgo supports new annotations for C functions to improve run time
|
||||
performance.
|
||||
`#cgo noescape cFunctionName` tells the compiler that memory passed to
|
||||
the C function `cFunctionname` does not escape.
|
||||
`#cgo nocallback cFunctionName` tells the compiler that the C function
|
||||
`cFunctionName` does not call back to any Go functions.
|
||||
For more information, see [the cgo documentation](/pkg/cmd/cgo#hdr-Optimizing_calls_of_C_code).
|
||||
|
||||
<!-- go.dev/issue/67699 -->
|
||||
Cgo currently refuses to compile calls to a C function which has multiple
|
||||
incompatible declarations. For instance, if `f` is declared as both `void f(int)`
|
||||
and `void f(double)`, cgo will report an error instead of possibly generating an
|
||||
incorrect call sequence for `f(0)`. New in this release is a better detector for
|
||||
this error condition when the incompatible declarations appear in different
|
||||
files. See [#67699](/issue/67699).
|
||||
|
||||
### Vet
|
||||
|
||||
<!-- go.dev/issue/44251 -->
|
||||
The new `tests` analyzer reports common mistakes in declarations of
|
||||
tests, fuzzers, benchmarks, and examples in test packages, such as
|
||||
malformed names, incorrect signatures, or examples that document
|
||||
non-existent identifiers. Some of these mistakes may cause tests not
|
||||
to run.
|
||||
This analyzer is among the subset of analyzers that are run by `go test`.
|
||||
|
||||
<!-- go.dev/issue/60529 -->
|
||||
The existing `printf` analyzer now reports a diagnostic for calls of
|
||||
the form `fmt.Printf(s)`, where `s` is a non-constant format string,
|
||||
with no other arguments. Such calls are nearly always a mistake
|
||||
as the value of `s` may contain the `%` symbol; use `fmt.Print` instead.
|
||||
See [#60529](/issue/60529).
|
||||
|
||||
<!-- go.dev/issue/64127 -->
|
||||
The existing `buildtag` analyzer now reports a diagnostic when
|
||||
there is an invalid Go [major version build constraint](/pkg/cmd/go#hdr-Build_constraints)
|
||||
within a `//go:build` directive. For example, `//go:build go1.23.1` refers to
|
||||
a point release; use `//go:build go1.23` instead.
|
||||
See [#64127](/issue/64127).
|
||||
|
||||
<!-- go.dev/issue/66387 -->
|
||||
The existing `copylock` analyzer now reports a diagnostic when a
|
||||
variable declared in a 3-clause "for" loop such as
|
||||
`for i := iter(); done(i); i = next(i) { ... }` contains a `sync.Locker`,
|
||||
such as a `sync.Mutex`. [Go 1.22](/doc/go1.22#language) changed the behavior
|
||||
of these loops to create a new variable for each iteration, copying the
|
||||
value from the previous iteration; this copy operation is not safe for locks.
|
||||
See [#66387](/issue/66387).
|
||||
|
||||
### GOCACHEPROG
|
||||
|
||||
<!-- go.dev/issue/64876 -->
|
||||
The `cmd/go` internal binary and test caching mechanism can now be implemented
|
||||
by child processes implementing a JSON protocol between the `cmd/go` tool
|
||||
and the child process named by the `GOCACHEPROG` environment variable.
|
||||
This was previously behind a GOEXPERIMENT.
|
||||
For protocol details, see [#59719](/issue/59719).
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
## Runtime {#runtime}
|
||||
|
||||
<!-- go.dev/issue/54766 -->
|
||||
<!-- go.dev/cl/614795 -->
|
||||
<!-- go.dev/issue/68578 -->
|
||||
|
||||
Several performance improvements to the runtime have decreased CPU overheads by
|
||||
2—3% on average across a suite of representative benchmarks.
|
||||
Results may vary by application.
|
||||
These improvements include a new builtin `map` implementation based on
|
||||
[Swiss Tables](https://abseil.io/about/design/swisstables), more efficient
|
||||
memory allocation of small objects, and a new runtime-internal mutex
|
||||
implementation.
|
||||
|
||||
The new builtin `map` implementation and new runtime-internal mutex may be
|
||||
disabled by setting `GOEXPERIMENT=noswissmap` and `GOEXPERIMENT=nospinbitmutex`
|
||||
at build time respectively.
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
## Compiler {#compiler}
|
||||
|
||||
<!-- go.dev/issue/60725, go.dev/issue/57926 -->
|
||||
The compiler already disallowed defining new methods with receiver types that were
|
||||
cgo-generated, but it was possible to circumvent that restriction via an alias type.
|
||||
Go 1.24 now always reports an error if a receiver denotes a cgo-generated type,
|
||||
whether directly or indirectly (through an alias type).
|
||||
|
||||
## Assembler {#assembler}
|
||||
|
||||
## Linker {#linker}
|
||||
|
||||
<!-- go.dev/issue/68678, go.dev/issue/68652, CL 618598, CL 618601 -->
|
||||
The linker now generates a GNU build ID (the ELF `NT_GNU_BUILD_ID` note) on ELF platforms
|
||||
and a UUID (the Mach-O `LC_UUID` load command) on macOS by default.
|
||||
The build ID or UUID is derived from the Go build ID.
|
||||
It can be disabled by the `-B none` linker flag, or overridden by the `-B 0xNNNN` linker
|
||||
flag with a user-specified hexadecimal value.
|
||||
|
||||
## Bootstrap {#bootstrap}
|
||||
|
||||
<!-- go.dev/issue/64751 -->
|
||||
As mentioned in the [Go 1.22 release notes](/doc/go1.22#bootstrap), Go 1.24 now requires
|
||||
Go 1.22.6 or later for bootstrap.
|
||||
We expect that Go 1.26 will require a point release of Go 1.24 or later for bootstrap.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
## Standard library {#library}
|
||||
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
### Directory-limited filesystem access
|
||||
|
||||
<!-- go.dev/issue/67002 -->
|
||||
The new [os.Root] type provides the ability to perform filesystem
|
||||
operations within a specific directory.
|
||||
|
||||
The [os.OpenRoot] function opens a directory and returns an [os.Root].
|
||||
Methods on [os.Root] operate within the directory and do not permit
|
||||
paths that refer to locations outside the directory, including
|
||||
ones that follow symbolic links out of the directory.
|
||||
|
||||
- [os.Root.Open] opens a file for reading.
|
||||
- [os.Root.Create] creates a file.
|
||||
- [os.Root.OpenFile] is the generalized open call.
|
||||
- [os.Root.Mkdir] creates a directory.
|
||||
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
A new pbkdf2 [Key] derivation function was added, based on the pre-existing
|
||||
`golang.org/x/crypto/pbkdf2` package. <!-- go.dev/issue/69488 -->
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
A new `crypto/hkdf` package was added based on the pre-existing
|
||||
`golang.org/x/crypto/hkdf` package. <!-- go.dev/issue/61477 -->
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
A new `crypto/mlkem` package was added, implementing ML-KEM (formerly known as
|
||||
Kyber), as specified in [NIST FIPS 203](https://doi.org/10.6028/NIST.FIPS.203).
|
||||
<!-- go.dev/issue/70122 -->
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
### New sha3 package
|
||||
|
||||
<!-- go.dev/issue/69982, go.dev/issue/65269, CL 629176 -->
|
||||
The new [crypto/sha3] package implements the SHA-3 hash function, and SHAKE and
|
||||
cSHAKE extendable-output functions.
|
||||
|
||||
It was imported from `golang.org/x/crypto/sha3`.
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
### New benchmark function
|
||||
|
||||
Benchmarks may now use the faster and less error-prone [testing.B.Loop] method to perform benchmark iterations like `for b.Loop() { ... }` in place of the typical loop structures involving `b.N` like `for i := n; i < b.N; i++ { ... }` or `for range b.N`. This offers two significant advantages:
|
||||
- The benchmark function will execute exactly once per -count, so expensive setup and cleanup steps execute only once.
|
||||
- Function call parameters and results are kept alive, preventing the compiler from fully optimizing away the loop body.
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
### New weak package
|
||||
|
||||
The new [weak](/pkg/weak) package provides weak pointers.
|
||||
|
||||
Weak pointers are a low-level primitive provided to enable the
|
||||
creation of memory-efficient structures, such as weak maps for
|
||||
associating values, canonicalization maps for anything not
|
||||
covered by package [unique](/pkg/unique), and various kinds
|
||||
of caches.
|
||||
For supporting these use-cases, this release also provides
|
||||
[runtime.AddCleanup](/pkg/runtime#AddCleanup) and
|
||||
[maphash.Comparable](/pkg/maphash#Comparable).
|
||||
|
|
@ -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` implementations in both `archive/zip` and `archive/tar`
|
||||
now write a directory header for an empty directory.
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
The [bytes] package adds several functions that work with iterators:
|
||||
- [Lines] returns an iterator over the
|
||||
newline-terminated lines in the byte slice s.
|
||||
- [SplitSeq] returns an iterator over
|
||||
all substrings of s separated by sep.
|
||||
- [SplitAfterSeq] returns an iterator
|
||||
over substrings of s split after each instance of sep.
|
||||
- [FieldsSeq] returns an iterator over
|
||||
substrings of s split around runs of whitespace characters,
|
||||
as defined by unicode.IsSpace.
|
||||
- [FieldsFuncSeq] returns an iterator
|
||||
over substrings of s split around runs of Unicode code points satisfying f(c).
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[NewOFB], [NewCFBEncrypter], and [NewCFBDecrypter] are now deprecated. OFB and
|
||||
CFB mode are not authenticated, which generally enables active attacks to
|
||||
manipulate and recover the plaintext. It is recommended that applications use
|
||||
[AEAD] modes instead. If an unauthenticated [Stream] mode is required, use
|
||||
[NewCTR] instead.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
The new [NewGCMWithRandomNonce] function returns an [AEAD] that implements
|
||||
AES-GCM by generating a random nonce during Seal and prepending it to the
|
||||
ciphertext.
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- FIPS 140 will be covered in its own section. -->
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- This is a new package; covered in 6-stdlib/3-hkdf.md. -->
|
||||
|
|
@ -1 +0,0 @@
|
|||
The value returned by [md5.New] now also implements the [encoding.BinaryAppender] interface.
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- This is a new package; covered in 6-stdlib/4-mlkem.md. -->
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- This is a new package; covered in 6-stdlib/2-pbkdf2.md. -->
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
The [Read] function, and the `Read` method of [Reader], are now
|
||||
defined to never fail.
|
||||
They will always return `nil` as the `error` result.
|
||||
If something somehow goes wrong while reading random numbers,
|
||||
the program will irrecoverably crash.
|
||||
This change was made because all supported systems now provide
|
||||
sources of random bytes that never fail.
|
||||
|
|
@ -1 +0,0 @@
|
|||
The new [Text] function can be used to generate cryptographically secure random text strings. <!-- go.dev/issue/67057 -->
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
[GenerateKey] now returns an error if a key of less than 1024 bits is requested.
|
||||
All Sign, Verify, Encrypt, and Decrypt methods now return an error if used with
|
||||
a key smaller than 1024 bits. Such keys are insecure and should not be used.
|
||||
Setting `GODEBUG=rsa1024min=0` or including `//go:debug rsa1024min=0` in a
|
||||
source file restores the old behavior, but we recommend doing so only in tests,
|
||||
if necessary. A new [GenerateKey] example provides an easy-to-use standard
|
||||
2048-bit test key.
|
||||
|
|
@ -1 +0,0 @@
|
|||
The value returned by [sha1.New] now also implements the [encoding.BinaryAppender] interface.
|
||||
|
|
@ -1 +0,0 @@
|
|||
The values returned by [sha256.New] and [sha256.New224] now also implement the [encoding.BinaryAppender] interface
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- This is a new package; covered in 6-stdlib/5-sha3.md. -->
|
||||
|
|
@ -1 +0,0 @@
|
|||
The values returned by [sha512.New], [sha512.New384], [sha512.New512_224] and [sha512.New512_256] now also implement the [encoding.BinaryAppender] interface.
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
The [WithDataIndependentTiming] function allows the user to run a function with
|
||||
architecture specific features enabled which guarantee specific instructions are
|
||||
data value timing invariant. This can be used to make sure that code designed to
|
||||
run in constant time is not optimized by CPU-level features such that it
|
||||
operates in variable time. Currently, [WithDataIndependentTiming] uses the
|
||||
PSTATE.DIT bit on arm64, and is a no-op on all other architectures.
|
||||
|
|
@ -1 +0,0 @@
|
|||
The [ClientHelloInfo] struct passed to [Config.GetCertificate] now includes an `Extensions` field, which can be useful for fingerprinting TLS clients.<!-- go.dev/issue/32936 -->
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The TLS server now supports Encrypted Client Hello (ECH). This feature can be
|
||||
enabled by populating the [Config.EncryptedClientHelloKeys] field.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
`crypto/tls` now supports the post-quantum [X25519MLKEM768] key exchange. Support
|
||||
for the experimental X25519Kyber768Draft00 key exchange has been removed.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The `x509sha1` GODEBUG setting has been removed. [`Certificate.Verify`] will no
|
||||
longer consider SHA-1 based signatures valid when this GODEBUG setting is set.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[OID] now implements the [encoding.BinaryAppender] and [encoding.TextAppender]
|
||||
interfaces.
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
The default certificate policies field has changed from
|
||||
[Certificate.PolicyIdentifiers] to [Certificate.Policies]. When parsing
|
||||
certificates, both fields will be populated, but when creating certificates
|
||||
policies will now be taken from the [Certificate.Policies] field instead of the
|
||||
[Certificate.PolicyIdentifiers field]. This change can be reverted by setting
|
||||
`GODEBUG=x509usepolicies=0`.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
[`CreateCertificate`] will now generate a serial number using a RFC 5280
|
||||
compliant method when passed a template with a nil [`Certificate.SerialNumber`]
|
||||
field, instead of failing.
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[Certificate.Verify] now supports policy validation, as defined by RFC 5280 and
|
||||
RFC 9618. In order to enable policy validation,
|
||||
[VerifyOptions.CertificatePolicies] must be set to an acceptable set of policy
|
||||
[OIDs]. When enabled, only certificate chains with valid policy graphs will be
|
||||
returned from [Certificate.Verify].
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
[MarshalPKCS8PrivateKey] now returns an error instead of marshaling an invalid
|
||||
RSA key. ([MarshalPKCS1PrivateKey] doesn't have an error return, and its behavior
|
||||
when provided invalid keys continues to be undefined.)
|
||||
|
||||
[ParsePKCS1PrivateKey] and [ParsePKCS8PrivateKey] now use and validate the
|
||||
encoded CRT values, so might reject invalid keys that were previously accepted.
|
||||
Use `GODEBUG=x509rsacrt=0` to revert to recomputing them.
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
The [debug/elf] package adds several new constants, types, and methods to add support for handling dynamic versions and version flags in ELF (Executable and Linkable Format) files:
|
||||
|
||||
Several new types have been introduced:
|
||||
- [DynamicVersion] struct represents a dynamic version entry in the ELF file.
|
||||
- [DynamicVersionDep] struct represents a dependency of a dynamic version.
|
||||
- [DynamicVersionNeed] struct represents a required dynamic version in the ELF file.
|
||||
- [DynamicVersionFlag] is a new type defined as uint16, representing flags for dynamic versions.
|
||||
- [VER_FLG_BASE] version definition of the file.
|
||||
- [VER_FLG_WEAK] weak version identifier.
|
||||
- [VER_FLG_INFO] reference exists for informational purposes.
|
||||
- [SymbolVersionFlag] is a new type defined as uint8, representing version flags for ELF symbols.
|
||||
- [VerFlagNone] no flags.
|
||||
- [VerFlagLocal] symbol has local scope.
|
||||
- [VerFlagGlobal] symbol has global scope.
|
||||
- [VerFlagHidden] symbol is hidden.
|
||||
|
||||
The following methods have been added:
|
||||
- [File.DynamicVersionNeeds] method returns a list of dynamic version needs in the ELF file, representing dependencies required by the executable.
|
||||
- [File.DynamicVersions] retrieves a list of dynamic versions defined in the ELF file.
|
||||
<!-- go.dev/issue/63952 -->
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
Two new interfaces, [TextAppender] and [BinaryAppender], have been
|
||||
introduced to append the textual or binary representation of an object
|
||||
to a byte slice. These interfaces provide the same functionality as
|
||||
[TextMarshaler] and [BinaryMarshaler], but instead of allocating a new slice
|
||||
each time, they append the data directly to an existing slice.
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
When marshaling, a struct field with the new `omitzero` option in the struct field
|
||||
tag will be omitted if its value is zero. If the field type has an `IsZero() bool`
|
||||
method, that will be used to determine whether the value is zero. Otherwise, the
|
||||
value is zero if it is [the zero value for its type](/ref/spec#The_zero_value).
|
||||
|
||||
If both `omitempty` and `omitzero` are specified, the field will be omitted if the
|
||||
value is either empty or zero (or both).
|
||||
|
|
@ -1 +0,0 @@
|
|||
[UnmarshalTypeError.Field] now includes embedded structs to provide more detailed error messages.
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
|
||||
All `go/types` data structures that expose sequences using a pair of
|
||||
methods such as `Len() int` and `At(int) T` now also have methods that
|
||||
return iterators, allowing you to simplify code such as this:
|
||||
|
||||
```go
|
||||
params := fn.Type.(*types.Signature).Params()
|
||||
for i := 0; i < params.Len(); i++ {
|
||||
use(params.At(i))
|
||||
}
|
||||
```
|
||||
|
||||
to this:
|
||||
|
||||
```go
|
||||
for param := range fn.Signature().Params().Variables() {
|
||||
use(param)
|
||||
}
|
||||
```
|
||||
|
||||
The methods are:
|
||||
[`Interface.EmbeddedTypes`](/pkg/go/types#Interface.EmbeddedTypes),
|
||||
[`Interface.ExplicitMethods`](/pkg/go/types#Interface.ExplicitMethods),
|
||||
[`Interface.Methods`](/pkg/go/types#Interface.Methods),
|
||||
[`MethodSet.Methods`](/pkg/go/types#MethodSet.Methods),
|
||||
[`Named.Methods`](/pkg/go/types#Named.Methods),
|
||||
[`Scope.Children`](/pkg/go/types#Scope.Children),
|
||||
[`Struct.Fields`](/pkg/go/types#Struct.Fields),
|
||||
[`Tuple.Variables`](/pkg/go/types#Tuple.Variables),
|
||||
[`TypeList.Types`](/pkg/go/types#TypeList.Types),
|
||||
[`TypeParamList.TypeParams`](/pkg/go/types#TypeParamList.TypeParams),
|
||||
[`Union.Terms`](/pkg/go/types#Union.Terms).
|
||||
|
|
@ -1 +0,0 @@
|
|||
The value returned by [New] now also implements the [encoding.BinaryAppender] interface.
|
||||
|
|
@ -1 +0,0 @@
|
|||
The values returned by [New] and [NewIEEE] now also implement the [encoding.BinaryAppender] interface.
|
||||
|
|
@ -1 +0,0 @@
|
|||
The value returned by [New] now also implements the [encoding.BinaryAppender] interface.
|
||||
|
|
@ -1 +0,0 @@
|
|||
The values returned by [New32], [New32a], [New64], [New64a], [New128] and [New128a] now also implement the [encoding.BinaryAppender] interface.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
New function [Comparable] returns the hash of comparable value v.
|
||||
New function [WriteComparable] adds x to the data hashed by [Hash].
|
||||
|
|
@ -1 +0,0 @@
|
|||
The new [DiscardHandler] is a handler that is never enabled and always discards its output.
|
||||
|
|
@ -1 +0,0 @@
|
|||
[Level] and [LevelVar] now implement the [encoding.TextAppender] interface.
|
||||
|
|
@ -1 +0,0 @@
|
|||
[Float], [Int] and [Rat] now implement the [encoding.TextAppender] interface.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Calls to the deprecated top-level [Seed] function no longer have any effect. To
|
||||
restore the old behavior set `GODEBUG=randseednop=0`. For more background see
|
||||
the proposal [#67273](/issue/67273).
|
||||
|
|
@ -1 +0,0 @@
|
|||
[ChaCha8] and [PCG] now implement the [encoding.BinaryAppender] interface.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[ListenConfig] now uses MPTCP by default on systems where it is supported
|
||||
(currently on Linux only).
|
||||
|
|
@ -1 +0,0 @@
|
|||
[IP] now implements the [encoding.TextAppender] interface.
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
[Transport]'s limit on 1xx informational responses received
|
||||
in response to a request has changed.
|
||||
It previously aborted a request and returned an error after
|
||||
receiving more than 5 1xx responses.
|
||||
It now returns an error if the total size of all 1xx responses
|
||||
exceeds the [Transport.MaxResponseHeaderBytes] configuration setting.
|
||||
|
||||
In addition, when a request has a
|
||||
[net/http/httptrace.ClientTrace.Got1xxResponse]
|
||||
trace hook, there is now no limit on the total number of 1xx responses.
|
||||
The `Got1xxResponse` hook may return an error to abort a request.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[Transport] and [Server] now have an HTTP2 field which permits
|
||||
configuring HTTP/2 protocol settings.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The new [Server.Protocols] and [Transport.Protocols] fields provide
|
||||
a simple way to configure what HTTP protocols a server or client use.
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
The server and client may be configured to support unencrypted HTTP/2
|
||||
connections.
|
||||
|
||||
When [Server.Protocols] contains UnencryptedHTTP2, the server will accept
|
||||
HTTP/2 connections on unencrypted ports. The server can accept both
|
||||
HTTP/1 and unencrypted HTTP/2 on the same port.
|
||||
|
||||
When [Transport.Protocols] contains UnencryptedHTTP2 and does not contain
|
||||
HTTP1, the transport will use unencrypted HTTP/2 for http:// URLs.
|
||||
If the transport is configured to use both HTTP/1 and unencrypted HTTP/2,
|
||||
it will use HTTP/1.
|
||||
|
||||
Unencrypted HTTP/2 support uses "HTTP/2 with Prior Knowledge"
|
||||
(RFC 9113, section 3.3). The deprecated "Upgrade: h2c" header
|
||||
is not supported.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[Addr], [AddrPort] and [Prefix] now implement the [encoding.BinaryAppender] and
|
||||
[encoding.TextAppender] interfaces.
|
||||
|
|
@ -1 +0,0 @@
|
|||
[URL] now also implements the [encoding.BinaryAppender] interface.
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- os.Root -->
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
On Windows, [Current] can now be used in Windows Nano Server.
|
||||
The implementation has been updated to avoid using functions
|
||||
from the `NetApi32` library, which is not available in Nano Server.
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
On Windows, [Current], [Lookup] and [LookupId] now supports the
|
||||
following built-in service user accounts:
|
||||
- `NT AUTHORITY\SYSTEM`
|
||||
- `NT AUTHORITY\LOCAL SERVICE`
|
||||
- `NT AUTHORITY\NETWORK SERVICE`
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
On Windows, [Current] has been made considerably faster when
|
||||
the current user is joined to a slow domain, which is the
|
||||
usual case for many corporate users. The new implementation
|
||||
performance is now in the order of milliseconds, compared to
|
||||
the previous implementation which could take several seconds,
|
||||
or even minutes, to complete.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
On Windows, [Current] now returns the process owner user when
|
||||
the current thread is impersonating another user. Previously,
|
||||
it returned an error.
|
||||
|
|
@ -1 +0,0 @@
|
|||
[Regexp] now implements the [encoding.TextAppender] interface.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
The [GOROOT] function is now deprecated.
|
||||
In new code prefer to use the system path to locate the “go” binary,
|
||||
and use `go env GOROOT` to find its GOROOT.
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
The [AddCleanup] function attaches a function to a pointer. Once the object that
|
||||
the pointer points to is no longer reachable, the runtime will call the function.
|
||||
[AddCleanup] is a finalization mechanism similar to [SetFinalizer]. Unlike
|
||||
[SetFinalizer], it does not resurrect objects while running the cleanup. Multiple
|
||||
cleanups can be attached to a single object. [AddCleanup] is an improvement over
|
||||
[SetFinalizer].
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
The [strings] package adds several functions that work with iterators:
|
||||
- [Lines] returns an iterator over
|
||||
the newline-terminated lines in the string s.
|
||||
- [SplitSeq] returns an iterator over
|
||||
all substrings of s separated by sep.
|
||||
- [SplitAfterSeq] returns an iterator
|
||||
over substrings of s split after each instance of sep.
|
||||
- [FieldsSeq] returns an iterator over
|
||||
substrings of s split around runs of whitespace characters,
|
||||
as defined by unicode.IsSpace.
|
||||
- [FieldsFuncSeq] returns an iterator
|
||||
over substrings of s split around runs of Unicode code points satisfying f(c).
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
The implementation of [sync.Map] has been changed, improving overall performance
|
||||
and resolving some long-standing issues.
|
||||
If you encounter any problems, set `GOEXPERIMENT=nosynchashtriemap` at build
|
||||
time to switch back to the old implementation and please [file an
|
||||
issue](/issue/new).
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The new [T.Context] and [B.Context] methods return a context that's canceled
|
||||
after the test completes and before test cleanup functions run.
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- testing.B.Loop mentioned in 6-stdlib/6-testing-bloop.md. -->
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The new [T.Chdir] and [B.Chdir] methods can be used to change the working
|
||||
directory for the duration of a test or benchmark.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Templates now support range-over-func and range-over-int.
|
||||
|
|
@ -1 +0,0 @@
|
|||
[Time] now implements the [encoding.BinaryAppender] and [encoding.TextAppender] interfaces.
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!-- This is a new package; covered in 6-stdlib/1-weak.md. -->
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
## Ports {#ports}
|
||||
|
||||
### Linux {#linux}
|
||||
|
||||
<!-- go.dev/issue/67001 -->
|
||||
As [announced](go1.23#linux) in the Go 1.23 release notes, Go 1.24 requires Linux
|
||||
kernel version 3.2 or later.
|
||||
|
||||
### Darwin {#darwin}
|
||||
|
||||
<!-- go.dev/issue/69839 -->
|
||||
Go 1.24 is the last release that will run on macOS 11 Big Sur.
|
||||
Go 1.25 will require macOS 12 Monterey or later.
|
||||
|
||||
### WebAssembly {#wasm}
|
||||
|
||||
<!-- go.dev/issue/65199, CL 603055 -->
|
||||
The `go:wasmexport` directive is added for Go programs to export functions to the WebAssembly host.
|
||||
|
||||
On WebAssembly System Interface Preview 1 (`GOOS=wasip1, GOARCH=wasm`), Go 1.24 supports
|
||||
building a Go program as a
|
||||
[reactor/library](https://github.com/WebAssembly/WASI/blob/63a46f61052a21bfab75a76558485cf097c0dbba/legacy/application-abi.md#current-unstable-abi),
|
||||
by specifying the `-buildmode=c-shared` build flag.
|
||||
|
||||
<!-- go.dev/issue/66984, CL 626615 -->
|
||||
More types are now permitted as argument or result types for `go:wasmimport` functions.
|
||||
Specifically, `bool`, `string`, `uintptr`, and pointers to certain types are allowed
|
||||
(see the [proposal](/issue/66984) for detail),
|
||||
along with 32-bit and 64-bit integer and float types, and `unsafe.Pointer`, which
|
||||
are already allowed.
|
||||
These types are also permitted as argument or result types for `go:wasmexport` functions.
|
||||
|
||||
<!-- go.dev/issue/68024 -->
|
||||
The support files for WebAssembly have been moved to `lib/wasm` from `misc/wasm`.
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
<!-- Needs to be documented and tracked via a release-blocking issue.
|
||||
|
||||
accepted proposal https://go.dev/issue/26232 (from https://go.dev/cl/605256, https://go.dev/cl/605275, https://go.dev/cl/605298, https://go.dev/cl/625036) - cmd/go's HTTP auth is tracked in proposal 26232 itself as a release blocker
|
||||
accepted proposal https://go.dev/issue/48429 (from https://go.dev/cl/521958, https://go.dev/cl/521959, https://go.dev/cl/534817, https://go.dev/cl/563175, https://go.dev/cl/613095, https://go.dev/cl/614555, https://go.dev/cl/630695) - cmd/go support for tracking tool dependencies in go.mod is tracked in proposal 48429 itself as a release blocker
|
||||
accepted proposal https://go.dev/issue/50603 (from https://go.dev/cl/595376, https://go.dev/cl/596035, https://go.dev/cl/609155, https://go.dev/cl/611916, https://go.dev/cl/627295) - cmd/go support for stamping pseudo-version in go build is tracked in proposal 50603 itself as a release blocker
|
||||
accepted proposal https://go.dev/issue/64127 (from https://go.dev/cl/597576) - mentioning the new vet check to report invalid Go versions in build tags is tracked in proposal 64127 itself as a release blocker
|
||||
accepted proposal https://go.dev/issue/66387 (from https://go.dev/cl/569955) - extending the copylock analyzer in cmd/vet is now tracked in proposal 66387 itself as a release blocker
|
||||
accepted proposal https://go.dev/issue/69290 (from https://go.dev/cl/613095) - cmd/go caching link output binaries is now tracked in proposal 69290 itself as a release blocker
|
||||
accepted proposal https://go.dev/issue/69393 (from https://go.dev/cl/630775) - automatic crypto/tls.CurvePreferences ordering is now tracked in proposal 69393 itself as a release blocker
|
||||
-->
|
||||
|
||||
<!-- Needs to be documented, but not currently tracked via a release-blocking issue.
|
||||
|
||||
accepted proposal https://go.dev/issue/66821 (from https://go.dev/cl/602495, https://go.dev/cl/602497, https://go.dev/cl/608175, https://go.dev/cl/608435, https://go.dev/cl/621979, https://go.dev/cl/622115) - crashing the process on error reading randomness (which should not have a path to happen) might need to be mentioned; commented at https://go.dev/issues/66821#issuecomment-2502069725 for next steps; Ian sent out CL 632036
|
||||
-->
|
||||
|
||||
<!-- Maybe worth including or maybe fine not to include in Go 1.24 release notes. Someone more familiar with the change makes the call.
|
||||
|
||||
accepted proposal https://go.dev/issue/64802 (from https://go.dev/cl/628681) - a crypto/ecdsa change when rand is nil; commented at https://go.dev/issue/64802#issuecomment-2502019212 for next steps
|
||||
accepted proposal https://go.dev/issue/25309 (from https://go.dev/cl/594018, https://go.dev/cl/595120, https://go.dev/cl/595564, https://go.dev/cl/601778) - new x/crypto package; doesn't seem to need to be mentioned but asked anyway in https://go.dev/issue/25309#issuecomment-2498747653
|
||||
accepted proposal https://go.dev/issue/43744 (from https://go.dev/cl/357530) - unclear if Go 1.24 release notes need anything; pinged it in https://go.dev/issue/43744#issuecomment-2498773718
|
||||
accepted proposal https://go.dev/issue/69687 (from https://go.dev/cl/591997, https://go.dev/cl/629735) - experimental package testing/synctest behind an experiment; commented at https://github.com/golang/go/issues/69687#issuecomment-2502179333, leaving to Damien to decide whether to document it or defer that until the package is added as non-experiment
|
||||
accepted proposal https://go.dev/issue/51269 (from https://go.dev/cl/627035) - may be worth mentioning in Go 1.24 release notes, or may be fine to leave out; commented at https://go.dev/issue/51269#issuecomment-2501802763
|
||||
accepted proposal https://go.dev/issue/60905 (from https://go.dev/cl/610195) - CL 610195 seems like a small performance enhancement that builds on the Go 1.23 proposal to add GOARM64; probably okay without being mentioned in Go 1.24 release notes (also probably okay to mention)
|
||||
accepted proposal https://go.dev/issue/61395 (from https://go.dev/cl/594738, https://go.dev/cl/594976) - CL 594738 made sync/atomic AND/OR operations intrinsic on amd64, but the API was already added in Go 1.23; CL 594976 is a fix; probably doesn't require a Go 1.24 release note
|
||||
-->
|
||||
|
||||
<!-- Items that don't need to be mentioned in Go 1.24 release notes but are picked up by relnote todo.
|
||||
|
||||
accepted proposal https://go.dev/issue/66540 (from https://go.dev/cl/603958) - a Go language spec clarification; might not need to be mentioned in Go 1.24 release notes; left a comment at https://go.dev/issue/66540#issuecomment-2502051684; Robert confirmed it indeed doesn't
|
||||
accepted proposal https://go.dev/issue/34208 (from https://go.dev/cl/586241) - CL 586241 implements a fix for a Go 1.23 feature, doesn't seem to be need anything in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/43993 (from https://go.dev/cl/626116) - CL 626116 prepares the tree towards the vet change but the vet change itself isn't implemented in Go 1.24, so nothing to say in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/44505 (from https://go.dev/cl/609955) - CL 609955 is an internal cleanup in x/tools, no need for Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/61476 (from https://go.dev/cl/608255) - CL 608255 builds on GORISCV64 added in Go 1.23; nothing to mention in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/66315 (from https://go.dev/cl/577996) - adding Pass.Module field to x/tools/go/analysis doesn't seem like something that needs to be mentioned in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/57786 (from https://go.dev/cl/472717) - CL 472717 is in x/net/http2 and mentions a Go 1.21 proposal; it doesn't seem to need anything in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/54265 (from https://go.dev/cl/609915, https://go.dev/cl/610675) - CLs that refer to a Go 1.22 proposal, nothing more is needed in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/53021 (from https://go.dev/cl/622276) - CL 622276 improves docs; proposal 53021 was in Go 1.20 so nothing more is needed in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/51430 (from https://go.dev/cl/613375) - CL 613375 is an internal documentation comment; proposal 51430 happened in Go 1.20/1.21 so nothing more is needed in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/38445 (from https://go.dev/cl/626495) - CL 626495 works on proposal 38445, which is about x/tools/go/package, doesn't need anything in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/56986 (from https://go.dev/cl/618115) - CL 618115 adds documentation; it doesn't need to be mentioned in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/60061 (from https://go.dev/cl/612038) - CL 612038 is a CL that deprecates something in x/tools/go/ast and mentions a Go 1.22 proposal; doesn't need anything in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/61324 (from https://go.dev/cl/411907) - CL 411907 is an x/tools CL that implements a proposal for a new package there; doesn't need anything in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/61777 (from https://go.dev/cl/601496) - CL 601496 added a WriteByteTimeout field to x/net/http2.Server; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/61940 (from https://go.dev/cl/600997) - CL 600997 deleted obsolete code in x/build and mentioned an accepted proposal; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/62113 (from https://go.dev/cl/594195) - CL 594195 made iterator-related additions in x/net/html; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/62484 (from https://go.dev/cl/600775) - CL 600775 documents CopyFS symlink behavior and mentions the Go 1.23 proposal; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/64207 (from https://go.dev/cl/605875) - an x/website CL that follows up on a Go 1.23 proposal; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/65236 (from https://go.dev/cl/596135) - CL 596135 adds tests for the Go 1.23 proposal 65236; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/67795 (from https://go.dev/cl/616218) - iteratior support for x/tools/go/ast/inspector; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/67812 (from https://go.dev/cl/601497) - configurable server pings for x/net/http2.Server; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/68232 (from https://go.dev/cl/595676) - x/sys/unix additions; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/68898 (from https://go.dev/cl/607495, https://go.dev/cl/620036, https://go.dev/cl/620135, https://go.dev/cl/623638) - a proposal for x/tools/go/gcexportdata to document 2 releases + tip support policy; since the change is in x/tools it doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/69095 (from https://go.dev/cl/593683, https://go.dev/cl/608955, https://go.dev/cl/610716) - a proposal that affects maintenance and support of golang.org/x repositories; doesn't need to be mentioned in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/68384 (from https://go.dev/cl/611875) - expanding the scope of Go Telemetry to include Delve isn't directly tied to Go 1.24 and doesn't seem to need to be mentioned in Go 1.24 release notes
|
||||
accepted proposal https://go.dev/issue/69291 (from https://go.dev/cl/610939) - CL 610939 refactors code in x/tools and mentions the still-open proposal #69291 to add Reachable to x/tools/go/ssa/ssautil; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/69360 (from https://go.dev/cl/614158, https://go.dev/cl/614159, https://go.dev/cl/614635, https://go.dev/cl/614675) - proposal 69360 is to tag and delete gorename from x/tools; doesn't need a Go 1.24 release note
|
||||
accepted proposal https://go.dev/issue/61417 (from https://go.dev/cl/605955) - a new field in x/oauth2; nothing to mention in Go 1.24 release notes
|
||||
-->
|
||||
Loading…
Add table
Add a link
Reference in a new issue