aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/README.md16
-rw-r--r--doc/go_spec.html72
-rw-r--r--doc/godebug.md29
-rw-r--r--doc/initial/1-intro.md4
-rw-r--r--doc/next/1-intro.md4
-rw-r--r--doc/next/2-language.md14
-rw-r--r--doc/next/3-tools.md44
-rw-r--r--doc/next/5-toolchain.md12
-rw-r--r--doc/next/6-stdlib/1-time.md2
-rw-r--r--doc/next/6-stdlib/2-unique.md2
-rw-r--r--doc/next/6-stdlib/3-iter.md14
-rw-r--r--doc/next/6-stdlib/3-structs.md11
-rw-r--r--doc/next/6-stdlib/99-minor/crypto/tls/63369.md3
-rw-r--r--doc/next/6-stdlib/99-minor/crypto/tls/63691.md3
-rw-r--r--doc/next/6-stdlib/99-minor/crypto/tls/66214.md3
-rw-r--r--doc/next/6-stdlib/99-minor/crypto/tls/67061.md2
-rw-r--r--doc/next/6-stdlib/99-minor/crypto/tls/67065.md3
-rw-r--r--doc/next/6-stdlib/99-minor/crypto/x509/45990.md3
-rw-r--r--doc/next/6-stdlib/99-minor/encoding/binary/60023.md3
-rw-r--r--doc/next/6-stdlib/99-minor/go/types/46477.md1
-rw-r--r--doc/next/6-stdlib/99-minor/go/types/66559.md2
-rw-r--r--doc/next/6-stdlib/99-minor/go/types/cl-577715.md4
-rw-r--r--doc/next/6-stdlib/99-minor/maps/61900.md1
-rw-r--r--doc/next/6-stdlib/99-minor/math/rand/v2/67059.md1
-rw-r--r--doc/next/6-stdlib/99-minor/net/http/62490.md1
-rw-r--r--doc/next/6-stdlib/99-minor/net/http/66343.md1
-rw-r--r--doc/next/6-stdlib/99-minor/runtime/debug/42888.md1
-rw-r--r--doc/next/6-stdlib/99-minor/runtime/pprof/43669.md2
-rw-r--r--doc/next/6-stdlib/99-minor/runtime/trace/65319.md4
-rw-r--r--doc/next/6-stdlib/99-minor/structs/66408.md1
-rw-r--r--doc/next/6-stdlib/99-minor/sync/atomic/61395.md4
-rw-r--r--doc/next/6-stdlib/99-minor/text/template/57646.md1
-rw-r--r--doc/next/6-stdlib/99-minor/time/67470.md2
-rw-r--r--doc/next/7-ports.md11
-rw-r--r--doc/next/9-todo.md57
35 files changed, 314 insertions, 24 deletions
diff --git a/doc/README.md b/doc/README.md
index 3d0fb86102..b0d99456da 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -41,9 +41,18 @@ Use the following forms in your markdown:
[http.Request] # symbol documentation; auto-linked as in Go doc strings
[Request] # short form, for symbols in the package being documented
+ [net/http] # package link
[#12345](/issue/12345) # GitHub issues
[CL 6789](/cl/6789) # Gerrit changelists
+To preview `next` content in merged form using a local instance of the website, run:
+
+```
+go run golang.org/x/website/cmd/golangorg@latest -goroot=..
+```
+
+Then open http://localhost:6060/doc/next. Refresh the page to see your latest edits.
+
## For the release team
The `relnote` tool, at `golang.org/x/build/cmd/relnote`, operates on the files
@@ -54,12 +63,13 @@ unfinished release note work.
To prepare the release notes for a release, run `relnote generate`.
That will merge the `.md` files in `next` into a single file.
+Atomically (as close to it as possible) add that file to `_content/doc` directory
+of the website repository and remove the `doc/next` directory in this repository.
-To begin the next release development cycle, delete the contents of `next`
-and replace them with those of `initial`. From the repo root:
+To begin the next release development cycle, populate the contents of `next`
+with those of `initial`. From the repo root:
> cd doc
- > rm -r next/*
> cp -r initial/* next
Then edit `next/1-intro.md` to refer to the next version.
diff --git a/doc/go_spec.html b/doc/go_spec.html
index 277cd27775..d1ca6722e1 100644
--- a/doc/go_spec.html
+++ b/doc/go_spec.html
@@ -1,6 +1,6 @@
<!--{
"Title": "The Go Programming Language Specification",
- "Subtitle": "Language version go1.22 (April 25, 2024)",
+ "Subtitle": "Language version go1.23 (June 4, 2024)",
"Path": "/ref/spec"
}-->
@@ -6656,13 +6656,16 @@ if the respective iteration variables are present:
</p>
<pre class="grammar">
-Range expression 1st value 2nd value
+Range expression 1st value 2nd value
-array or slice a [n]E, *[n]E, or []E index i int a[i] E
-string s string type index i int see below rune
-map m map[K]V key k K m[k] V
-channel c chan E, &lt;-chan E element e E
-integer value n integer type, or untyped int value i see below
+array or slice a [n]E, *[n]E, or []E index i int a[i] E
+string s string type index i int see below rune
+map m map[K]V key k K m[k] V
+channel c chan E, &lt;-chan E element e E
+integer value n integer type, or untyped int value i see below
+function, 0 values f func(func() bool)
+function, 1 value f func(func(V) bool) value v V
+function, 2 values f func(func(K, V) bool) key k K v V
</pre>
<ol>
@@ -6716,6 +6719,23 @@ Otherwise, if the iteration variable is declared by the "range" clause or is abs
the type of the iteration values is the <a href="#Constants">default type</a> for <code>n</code>.
If <code>n</code> &lt= 0, the loop does not run any iterations.
</li>
+
+<li>
+For a function <code>f</code>, the iteration proceeds by calling <code>f</code>
+with a new, synthesized <code>yield</code> function as its argument.
+If <code>yield</code> is called before <code>f</code> returns,
+the arguments to <code>yield</code> become the iteration values
+for executing the loop body once.
+After each successive loop iteration, <code>yield</code> returns true
+and may be called again to continue the loop.
+As long as the loop body does not terminate, the "range" clause will continue
+to generate iteration values this way for each <code>yield</code> call until
+<code>f</code> returns.
+If the loop body terminates (such as by a <code>break</code> statement),
+<code>yield</code> returns false and must not be called again.
+The number of iteration variables must match the number and order of arguments
+to <code>yield</code>.
+</li>
</ol>
<p>
@@ -6784,6 +6804,44 @@ for u = range 256 {
// invalid: 1e3 is a floating-point constant
for range 1e3 {
}
+
+// fibo generates the Fibonacci sequence
+fibo := func(yield func(x int) bool) {
+ f0, f1 := 0, 1
+ for yield(f0) {
+ f0, f1 = f1, f0+f1
+ }
+}
+
+// print the Fibonacci numbers below 1000:
+for x := range fibo {
+ if x >= 1000 {
+ break
+ }
+ fmt.Printf("%d ", x)
+}
+// output: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
+
+// iteration support for a recursive tree data structure
+type Tree[K cmp.Ordered, V any] struct {
+ left, right *Tree[K, V]
+ key K
+ value V
+}
+
+func (t *Tree[K, V]) walk(yield func(key K, val V) bool) bool {
+ return t == nil || t.left.walk(yield) && yield(t.key, t.value) && t.right.walk(yield)
+}
+
+func (t *Tree[K, V]) Walk(yield func(key K, val V) bool) {
+ t.walk(yield)
+}
+
+// walk tree t in-order
+var t Tree[string, int]
+for k, v := range t.Walk {
+ // process k, v
+}
</pre>
diff --git a/doc/godebug.md b/doc/godebug.md
index 4cbc85f941..071acf98cf 100644
--- a/doc/godebug.md
+++ b/doc/godebug.md
@@ -176,6 +176,35 @@ This behavior is controlled by the `winreadlinkvolume` setting.
For Go 1.23, it defaults to `winreadlinkvolume=1`.
Previous versions default to `winreadlinkvolume=0`.
+Go 1.23 enabled the experimental post-quantum key exchange mechanism
+X25519Kyber768Draft00 by default. The default can be reverted using the
+[`tlskyber` setting](/pkg/crypto/tls/#Config.CurvePreferences).
+
+Go 1.23 changed the behavior of
+[crypto/x509.ParseCertificate](/pkg/crypto/x509/#ParseCertificate) to reject
+serial numbers that are negative. This change can be reverted with
+the [`x509negativeserial` setting](/pkg/crypto/x509/#ParseCertificate).
+
+Go 1.23 changed the behavior of
+[crypto/x509.ParseCertificate](/pkg/crypto/x509/#ParseCertificate) to reject
+serial numbers that are longer than 20 octets. This change can be reverted with
+the [`x509seriallength` setting](/pkg/crypto/x509/#ParseCertificate).
+
+Go 1.23 re-enabled support in html/template for ECMAScript 6 template literals by default.
+The [`jstmpllitinterp` setting](/pkg/html/template#hdr-Security_Model) no longer has
+any effect.
+
+Go 1.23 changed the default TLS cipher suites used by clients and servers when
+not explicitly configured, removing 3DES cipher suites. The default can be reverted
+using the [`tls3des` setting](/pkg/crypto/tls/#Config.CipherSuites).
+
+Go 1.23 changed the behavior of [`tls.X509KeyPair`](/pkg/crypto/tls#X509KeyPair)
+and [`tls.LoadX509KeyPair`](/pkg/crypto/tls#LoadX509KeyPair) to populate the
+Leaf field of the returned [`tls.Certificate`](/pkg/crypto/tls#Certificate).
+This behavior is controlled by the `x509keypairleaf` setting. For Go 1.23, it
+defaults to `x509keypairleaf=1`. Previous versions default to
+`x509keypairleaf=0`.
+
### Go 1.22
Go 1.22 adds a configurable limit to control the maximum acceptable RSA key size
diff --git a/doc/initial/1-intro.md b/doc/initial/1-intro.md
index e28191ca9e..8c9948ddf6 100644
--- a/doc/initial/1-intro.md
+++ b/doc/initial/1-intro.md
@@ -8,5 +8,7 @@ set fixed-width phrases with non-fixed-width spaces, as in
main ul li { margin: 0.5em 0; }
</style>
-## Introduction to Go 1.XX {#introduction}
+## DRAFT RELEASE NOTES — Introduction to Go 1.N {#introduction}
+**Go 1.N is not yet released. These are work-in-progress release notes.
+Go 1.N is expected to be released in {Month} {Year}.**
diff --git a/doc/next/1-intro.md b/doc/next/1-intro.md
index 639550f92a..585c6c8e52 100644
--- a/doc/next/1-intro.md
+++ b/doc/next/1-intro.md
@@ -8,5 +8,7 @@ set fixed-width phrases with non-fixed-width spaces, as in
main ul li { margin: 0.5em 0; }
</style>
-## Introduction to Go 1.23 {#introduction}
+## DRAFT RELEASE NOTES — Introduction to Go 1.23 {#introduction}
+**Go 1.23 is not yet released. These are work-in-progress release notes.
+Go 1.23 is expected to be released in August 2024.**
diff --git a/doc/next/2-language.md b/doc/next/2-language.md
index 61030bd676..9bd0bde083 100644
--- a/doc/next/2-language.md
+++ b/doc/next/2-language.md
@@ -1,3 +1,17 @@
## Changes to the language {#language}
+<!-- go.dev/issue/61405, CL 557835, CL 584596 -->
+Go 1.23 makes the (Go 1.22) ["range-over-func" experiment](/wiki/RangefuncExperiment) a part of the language.
+The "range" clause in a "for-range" loop now accepts iterator functions of the following types
+ func(func() bool)
+ func(func(K) bool)
+ func(func(K, V) bool)
+
+as range expressions.
+Calls of the iterator argument function produce the iteration values for the "for-range" loop.
+For details see the [language spec](/ref/spec#For_statements).
+
+<!-- go.dev/issue/46477, CL 566856, CL 586955, CL 586956 -->
+Go 1.23 includes preview support for [generic type aliases](/issue/46477).
+Building the toolchain with `GOEXPERIMENT=aliastypeparams` enables this feature.
diff --git a/doc/next/3-tools.md b/doc/next/3-tools.md
index 4112fb61ac..e73e8a73a3 100644
--- a/doc/next/3-tools.md
+++ b/doc/next/3-tools.md
@@ -3,19 +3,44 @@
### Go command {#go-command}
Setting the `GOROOT_FINAL` environment variable no longer has an effect
-([#62047](https://go.dev/issue/62047)).
+([#62047](/issue/62047)).
Distributions that install the `go` command to a location other than
`$GOROOT/bin/go` should install a symlink instead of relocating
or copying the `go` binary.
-The new go env `-changed` flag causes the command to print only
+<!-- go.dev/issue/34208, CL 563137, CL 586095 -->
+The new `go` `env` `-changed` flag causes the command to print only
those settings whose effective value differs from the default value
that would be obtained in an empty environment with no prior uses of the `-w` flag.
+<!-- go.dev/issue/27005, CL 585401 -->
+The new `go` `mod` `tidy` `-diff` flag causes the command not to modify
+the files but instead print the necessary changes as a unified diff.
+It exits with a non-zero code if updates are needed.
+
+<!-- go.dev/issue/52792, CL 562775 -->
+<!-- TODO: Improve this if needed. -->
+The `go` `list` `-m` `-json` command now includes new `Sum` and `GoModSum` fields.
+This is similar to the existing behavior of the `go` `mod` `download` `-json` command.
+
+<!-- go.dev/issue/67111 ("cmd/go: add go telemetry subcommand") -->
+The new `go` `telemetry` command can be used to view and configure the telemetry collection
+mode. Without arguments, it displays the current mode. With `local`, `on`, or `off`, it sets
+the collection mode. `go` `env` now lists two values: the `GOTELEMETRY` value, which
+contains the telemetry collection mode, and the `GOTELEMETRYDIR` value setting which contains
+the directory telemetry data and configuration are written to.
+
+<!-- go.dev/issue/58894 ("all: add opt-in transparent telemetry to Go toolchain") -->
+<!-- TODO: document Go 1.23 behavior (from https://go.dev/cl/559199, https://go.dev/cl/559519, https://go.dev/cl/559795, https://go.dev/cl/562715, https://go.dev/cl/562735, https://go.dev/cl/564555, https://go.dev/cl/570679, https://go.dev/cl/570736, https://go.dev/cl/582695, https://go.dev/cl/584276, https://go.dev/cl/585235, https://go.dev/cl/586138) -->
+
+<!-- go.dev/issue/65573 ("cmd/go: separate default GODEBUGs from go language version") -->
+<!-- TODO: document Go 1.23 behavior (from https://go.dev/cl/584218, https://go.dev/cl/584300, https://go.dev/cl/584475, https://go.dev/cl/584476) -->
+
### Vet {#vet}
+<!-- go.dev/issue/46136 -->
The `go vet` subcommand now includes the
-[stdversion](https://beta.pkg.go.dev/golang.org/x/tools/go/analysis/passes/stdversion)
+[stdversion](https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/stdversion)
analyzer, which flags references to symbols that are too new for the version
of Go in effect in the referring file. (The effective version is determined
by the `go` directive in the file's enclosing `go.mod` file, and
@@ -28,3 +53,16 @@ module whose go.mod file specifies `go 1.21`.
### Cgo {#cgo}
+<!-- go.dev/issue/66456 -->
+[cmd/cgo] supports the new `-ldflags` flag for passing flags to the C linker.
+The `go` command uses it automatically, avoiding "argument list too long"
+errors with a very large `CGO_LDFLAGS`.
+
+### Trace {#trace}
+
+<!-- go.dev/issue/65316 -->
+The `trace` tool now better tolerates partially broken traces by attempting to
+recover what trace data it can. This functionality is particularly helpful when
+viewing a trace that was collected during a program crash, since the trace data
+leading up to the crash will now [be recoverable](/issue/65319) under most
+circumstances.
diff --git a/doc/next/5-toolchain.md b/doc/next/5-toolchain.md
index 7f547f686b..c9437a6a8b 100644
--- a/doc/next/5-toolchain.md
+++ b/doc/next/5-toolchain.md
@@ -9,8 +9,20 @@ The compiler in Go 1.23 can now overlap the stack frame slots of local variables
accessed in disjoint regions of a function, which reduces stack usage
for Go applications.
+<!-- https://go.dev/cl/577935 -->
+For 386 and amd64, the compiler will use information from PGO to align certain
+hot blocks in loops. This improves performance an additional 1-1.5% at
+a cost of an additional 0.1% text and binary size. This is currently only implemented
+on 386 and amd64 because it has not shown an improvement on other platforms.
+Hot block alignment can be disabled with `-gcflags=[<packages>=]-d=alignhot=0`
+
## Assembler {#assembler}
## Linker {#linker}
+<!-- go.dev/issue/67401, CL 585556, CL 587220, and many more -->
+TODO: Say what needs to be said in Go 1.23 release notes regarding
+the locking down of future linkname uses.
+<!-- CL 473495 -->
+The new `-bindnow` flag enables full RELRO on ELF targets.
diff --git a/doc/next/6-stdlib/1-time.md b/doc/next/6-stdlib/1-time.md
index c809764ce1..6046ac5350 100644
--- a/doc/next/6-stdlib/1-time.md
+++ b/doc/next/6-stdlib/1-time.md
@@ -3,12 +3,14 @@
Go 1.23 makes two significant changes to the implementation of
[time.Timer] and [time.Ticker].
+<!-- go.dev/issue/61542 -->
First, `Timer`s and `Ticker`s that are no longer referred to by the program
become eligible for garbage collection immediately, even if their
`Stop` methods have not been called.
Earlier versions of Go did not collect unstopped `Timer`s until after
they had fired and never collected unstopped `Ticker`s.
+<!-- go.dev/issue/37196 -->
Second, the timer channel associated with a `Timer` or `Ticker` is
now unbuffered, with capacity 0.
The main effect of this change is that Go now guarantees
diff --git a/doc/next/6-stdlib/2-unique.md b/doc/next/6-stdlib/2-unique.md
index 45f3a9bad3..42737a52fa 100644
--- a/doc/next/6-stdlib/2-unique.md
+++ b/doc/next/6-stdlib/2-unique.md
@@ -1,6 +1,6 @@
### New unique package
-The new [unique](/pkg/unique) package provides facilities for
+The new [unique] package provides facilities for
canonicalizing values (like "interning" or "hash-consing").
Any value of comparable type may be canonicalized with the new
diff --git a/doc/next/6-stdlib/3-iter.md b/doc/next/6-stdlib/3-iter.md
index 6b52b7c7e5..50179d949e 100644
--- a/doc/next/6-stdlib/3-iter.md
+++ b/doc/next/6-stdlib/3-iter.md
@@ -1,10 +1,9 @@
### Iterators
-The new [`iter` package](/pkg/iter/) provides the basic definitions for
-working with user-defined iterators.
+The new [iter] package provides the basic definitions for working with
+user-defined iterators.
-The [`slices` package](/pkg/slices/) adds several functions that work
-with iterators:
+The [slices] package adds several functions that work with iterators:
- [All](/pkg/slices#All) returns an iterator over slice indexes and values.
- [Values](/pkg/slices#Values) returns an iterator over slice elements.
- [Backward](/pkg/slices#Backward) returns an iterator that loops over
@@ -21,3 +20,10 @@ with iterators:
but uses a stable sort algorithm.
- [Chunk](/pkg/slices#Chunk) returns an iterator over consecutive
sub-slices of up to n elements of a slice.
+
+The [maps] package adds several functions that work with iterators:
+- [All](/pkg/maps#All) returns an iterator over key-value pairs from m.
+- [Keys](/pkg/maps#Keys) returns an iterator over keys in m.
+- [Values](/pkg/maps#Values) returns an iterator over values in m.
+- [Insert](/pkg/maps#Insert) adds the key-value pairs from seq to m.
+- [Collect](/pkg/maps#Collect) collects key-value pairs from seq into a new map and returns it.
diff --git a/doc/next/6-stdlib/3-structs.md b/doc/next/6-stdlib/3-structs.md
new file mode 100644
index 0000000000..adf42f1b37
--- /dev/null
+++ b/doc/next/6-stdlib/3-structs.md
@@ -0,0 +1,11 @@
+### New structs package
+
+The new [structs] package provides
+types for struct fields that modify properties of
+the containing struct type such as memory layout.
+
+In this release, the only such type is
+[`HostLayout`](/pkg/structs#HostLayout)
+which indicates that a structure with a field of that
+type has a layout that conforms to host platform
+expectations. \ No newline at end of file
diff --git a/doc/next/6-stdlib/99-minor/crypto/tls/63369.md b/doc/next/6-stdlib/99-minor/crypto/tls/63369.md
new file mode 100644
index 0000000000..6ec5b5bdf6
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/crypto/tls/63369.md
@@ -0,0 +1,3 @@
+The TLS client now supports the Encrypted Client Hello [draft specification](https://www.ietf.org/archive/id/draft-ietf-tls-esni-18.html).
+This feature can be enabled by setting the [Config.EncryptedClientHelloConfigList]
+field to an encoded ECHConfigList for the host that is being connected to. \ No newline at end of file
diff --git a/doc/next/6-stdlib/99-minor/crypto/tls/63691.md b/doc/next/6-stdlib/99-minor/crypto/tls/63691.md
new file mode 100644
index 0000000000..67ed04cf00
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/crypto/tls/63691.md
@@ -0,0 +1,3 @@
+The [QUICConn] type used by QUIC implementations includes new events
+reporting on the state of session resumption, and provides a way for
+the QUIC layer to add data to session tickets and session cache entries.
diff --git a/doc/next/6-stdlib/99-minor/crypto/tls/66214.md b/doc/next/6-stdlib/99-minor/crypto/tls/66214.md
new file mode 100644
index 0000000000..4a32ca9fc9
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/crypto/tls/66214.md
@@ -0,0 +1,3 @@
+3DES cipher suites were removed from the default list used when
+[Config.CipherSuites] is nil. The default can be reverted adding `tls3des=1` to
+the GODEBUG environment variable.
diff --git a/doc/next/6-stdlib/99-minor/crypto/tls/67061.md b/doc/next/6-stdlib/99-minor/crypto/tls/67061.md
new file mode 100644
index 0000000000..4f53f509ef
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/crypto/tls/67061.md
@@ -0,0 +1,2 @@
+<!-- TODO: Improve the wording. Mention the tlskyber GODEBUG. -->
+X25519Kyber768Draft00 is now enabled by default when [Config.CurvePreferences] is not set.
diff --git a/doc/next/6-stdlib/99-minor/crypto/tls/67065.md b/doc/next/6-stdlib/99-minor/crypto/tls/67065.md
new file mode 100644
index 0000000000..3fcc8d5309
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/crypto/tls/67065.md
@@ -0,0 +1,3 @@
+Go 1.23 changed the behavior of [X509KeyPair] and [LoadX509KeyPair]
+to populate the [Certificate.Leaf] field of the returned [Certificate].
+The new `x509keypairleaf` [GODEBUG setting](/doc/godebug) is added for this behavior.
diff --git a/doc/next/6-stdlib/99-minor/crypto/x509/45990.md b/doc/next/6-stdlib/99-minor/crypto/x509/45990.md
new file mode 100644
index 0000000000..2eda8476a9
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/crypto/x509/45990.md
@@ -0,0 +1,3 @@
+[CreateCertificateRequest] now correct supports RSA-PSS signature algorithms.
+
+[CreateCertificateRequest] and [CreateRevocationList] now verify the generated signature using the signer’s public key. If the signature is invalid, an error is returned. This has been the behavior of [CreateCertificate] since Go 1.16.
diff --git a/doc/next/6-stdlib/99-minor/encoding/binary/60023.md b/doc/next/6-stdlib/99-minor/encoding/binary/60023.md
new file mode 100644
index 0000000000..015bfc3803
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/encoding/binary/60023.md
@@ -0,0 +1,3 @@
+The new [Encode] and [Decode] functions are byte slice equivalents
+to [Read] and [Write].
+[Append] allows marshaling multiple data into the same byte slice.
diff --git a/doc/next/6-stdlib/99-minor/go/types/46477.md b/doc/next/6-stdlib/99-minor/go/types/46477.md
new file mode 100644
index 0000000000..7f744dc6ae
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/go/types/46477.md
@@ -0,0 +1 @@
+<!-- see ../../../../2-language.md --> \ No newline at end of file
diff --git a/doc/next/6-stdlib/99-minor/go/types/66559.md b/doc/next/6-stdlib/99-minor/go/types/66559.md
index fbaf39191e..e3884594fa 100644
--- a/doc/next/6-stdlib/99-minor/go/types/66559.md
+++ b/doc/next/6-stdlib/99-minor/go/types/66559.md
@@ -1,3 +1,3 @@
The [Alias] type now has an [Rhs] method that returns the type on the
right-hand side of its declaration: given `type A = B`, the `Rhs` of A
-is B. ([#66559](/issue/12345))
+is B. ([#66559](/issue/66559))
diff --git a/doc/next/6-stdlib/99-minor/go/types/cl-577715.md b/doc/next/6-stdlib/99-minor/go/types/cl-577715.md
new file mode 100644
index 0000000000..939d5ac46c
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/go/types/cl-577715.md
@@ -0,0 +1,4 @@
+<!-- CL 577715, CL 579076 -->
+By default, go/types now produces [Alias] type nodes for type aliases.
+This behavior can be controlled by the `GODEBUG` `gotypesalias` flag.
+Its default has changed from 0 in Go 1.22 to 1 in Go 1.23.
diff --git a/doc/next/6-stdlib/99-minor/maps/61900.md b/doc/next/6-stdlib/99-minor/maps/61900.md
new file mode 100644
index 0000000000..02d77cd11d
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/maps/61900.md
@@ -0,0 +1 @@
+<!-- see ../../3-iter.md -->
diff --git a/doc/next/6-stdlib/99-minor/math/rand/v2/67059.md b/doc/next/6-stdlib/99-minor/math/rand/v2/67059.md
new file mode 100644
index 0000000000..c66110c7a4
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/math/rand/v2/67059.md
@@ -0,0 +1 @@
+The new [ChaCha8.Read] method implements the [io.Reader] interface.
diff --git a/doc/next/6-stdlib/99-minor/net/http/62490.md b/doc/next/6-stdlib/99-minor/net/http/62490.md
new file mode 100644
index 0000000000..891eb45dae
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/net/http/62490.md
@@ -0,0 +1 @@
+The new [Cookie.Partitioned] field identifies cookies with the Partitioned attribute. \ No newline at end of file
diff --git a/doc/next/6-stdlib/99-minor/net/http/66343.md b/doc/next/6-stdlib/99-minor/net/http/66343.md
new file mode 100644
index 0000000000..128ce68d45
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/net/http/66343.md
@@ -0,0 +1 @@
+[Error] now removes misleading response headers.
diff --git a/doc/next/6-stdlib/99-minor/runtime/debug/42888.md b/doc/next/6-stdlib/99-minor/runtime/debug/42888.md
index 2a65e691fe..f10753d25c 100644
--- a/doc/next/6-stdlib/99-minor/runtime/debug/42888.md
+++ b/doc/next/6-stdlib/99-minor/runtime/debug/42888.md
@@ -1,4 +1,3 @@
-
The [SetCrashOutput] function allows the user to specify an alternate
file to which the runtime should write its fatal crash report.
It may be used to construct an automated reporting mechanism for all
diff --git a/doc/next/6-stdlib/99-minor/runtime/pprof/43669.md b/doc/next/6-stdlib/99-minor/runtime/pprof/43669.md
new file mode 100644
index 0000000000..119308b46a
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/runtime/pprof/43669.md
@@ -0,0 +1,2 @@
+The maximum stack depth for alloc, mutex, block, threadcreate and goroutine
+profiles has been raised from 32 to 128 frames.
diff --git a/doc/next/6-stdlib/99-minor/runtime/trace/65319.md b/doc/next/6-stdlib/99-minor/runtime/trace/65319.md
new file mode 100644
index 0000000000..b180368e00
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/runtime/trace/65319.md
@@ -0,0 +1,4 @@
+<!-- go.dev/issue/65319 -->
+The runtime now explicitly flushes trace data when a program crashes due to an
+uncaught panic. This means that more complete trace data will be available in a
+trace if the program crashes while tracing is active.
diff --git a/doc/next/6-stdlib/99-minor/structs/66408.md b/doc/next/6-stdlib/99-minor/structs/66408.md
new file mode 100644
index 0000000000..810a09e3ca
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/structs/66408.md
@@ -0,0 +1 @@
+<!-- This is a new package; covered in 6-stdlib/3-structs.md. -->
diff --git a/doc/next/6-stdlib/99-minor/sync/atomic/61395.md b/doc/next/6-stdlib/99-minor/sync/atomic/61395.md
index 05359347f4..8aea9d6bf3 100644
--- a/doc/next/6-stdlib/99-minor/sync/atomic/61395.md
+++ b/doc/next/6-stdlib/99-minor/sync/atomic/61395.md
@@ -1,3 +1,3 @@
<!-- Issue #61395 -->
-The new [`atomic.And`](/pkg/sync/atomic#And) and [`atomic.Or`](/pkg/sync/atomic#Or)
-operators apply a bitwise `AND` or `OR` to the given input, returning the old value.
+The new [And] and [Or] operators apply a bitwise `AND` or `OR` to
+the given input, returning the old value.
diff --git a/doc/next/6-stdlib/99-minor/text/template/57646.md b/doc/next/6-stdlib/99-minor/text/template/57646.md
new file mode 100644
index 0000000000..5b8f031432
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/text/template/57646.md
@@ -0,0 +1 @@
+Templates now support the new "else with" action, which reduces template complexity in some use cases.
diff --git a/doc/next/6-stdlib/99-minor/time/67470.md b/doc/next/6-stdlib/99-minor/time/67470.md
new file mode 100644
index 0000000000..8cfcc0aa9d
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/time/67470.md
@@ -0,0 +1,2 @@
+[Parse] and [ParseInLocation] now return an error if the time zone
+offset is out of range.
diff --git a/doc/next/7-ports.md b/doc/next/7-ports.md
index f84cefc59b..11810eafc2 100644
--- a/doc/next/7-ports.md
+++ b/doc/next/7-ports.md
@@ -7,6 +7,17 @@ As [announced](go1.22#darwin) in the Go 1.22 release notes,
Go 1.23 requires macOS 11 Big Sur or later;
support for previous versions has been discontinued.
+### Linux {#linux}
+
+<!-- go.dev/issue/67001 -->
+Go 1.23 is the last release that requires Linux kernel version 2.6.32 or later. Go 1.24 will require Linux kernel version 3.17 or later, with an exception that systems running 3.10 or later will continue to be supported if the kernel has been patched to support the getrandom system call.
+
+### OpenBSD {#openbsd}
+
+<!-- go.dev/issue/55999, CL 518629, CL 518630 -->
+<!-- TODO: Should it say 'experimental' like in go.dev/doc/go1.22#openbsd or https://go.dev/doc/go1.20#freebsd-riscv, or not? -->
+Go 1.23 adds experimental support for OpenBSD on RISC-V (`GOOS=openbsd`, `GOARCH=riscv64`).
+
### Wasm {#wasm}
<!-- go.dev/issue/63718 -->
diff --git a/doc/next/9-todo.md b/doc/next/9-todo.md
new file mode 100644
index 0000000000..eefdbe293c
--- /dev/null
+++ b/doc/next/9-todo.md
@@ -0,0 +1,57 @@
+<!-- These items need to be completed and moved to an appropriate location in the release notes. -->
+
+<!-- go.dev/issue/60905, CL 559555 -->
+TODO: The new `GOARM64` environment variable needs to be documented. This note should be moved to an appropriate location in the release notes.
+
+<!-- go.dev/issue/61476, CL 541135 -->
+TODO: The new `GORISCV64` environment variable needs to be documented. This note should be moved to an appropriate location in the release notes.
+
+<!-- These items need to be reviewed, and mentioned in the Go 1.23 release notes if applicable.
+
+None right now; more may come up later on.
+-->
+
+<!-- Maybe should be documented? Maybe shouldn't? Someone familiar with the change needs to determine.
+
+CL 359594 ("x/website/_content/ref/mod: document dotless module paths") - resolved go.dev/issue/32819 ("cmd/go: document that module names without dots are reserved") and also mentioned accepted proposal go.dev/issue/37641
+CL 570681 ("os: make FindProcess use pidfd on Linux") mentions accepted proposal go.dev/issue/51246 (described as fully implemented in Go 1.22) and NeedsInvestigation continuation issue go.dev/issue/62654.
+CL 555075 ("x/tools/go/ssa: support range-over-func") - x/tools CL implements range-over-func support in x/tools/go/ssa for accepted proposal https://go.dev/issue/66601; this particular proposal and change doesn't seem to need a dedicated mention in Go 1.23 release notes but someone more familiar should take another look
+-->
+
+<!-- Items that don't need to be mentioned in Go 1.23 release notes but are picked up by relnote todo.
+
+CL 458895 - an x/playground fix that mentioned an accepted cmd/go proposal go.dev/issue/40728 in Go 1.16 milestone...
+CL 582097 - an x/build CL working on relnote itself; it doesn't need a release note
+CL 561935 - crypto CL that used purego tag and mentioned accepted-but-not-implemented proposal https://go.dev/issue/23172 to document purego tag; doesn't need a release note
+CL 568340 - fixed a spurious race in time.Ticker.Reset (added via accepted proposal https://go.dev/issue/33184), doesn't seem to need a release note
+CL 562619 - x/website CL documented minimum bootstrap version on go.dev, mentioning accepted proposals go.dev/issue/54265 and go.dev/issue/44505; doesn't need a release note
+CL 557055 - x/tools CL implemented accepted proposal https://go.dev/issue/46941 for x/tools/go/ssa
+CL 564275 - an x/tools CL that updates test data in preparation for accepted proposal https://go.dev/issue/51473; said proposal isn't implemented for Go 1.23 and so it doesn't need a release note
+CL 572535 - used "unix" build tag in more places, mentioned accepted proposal https://go.dev/issue/51572; doesn't need a release note
+CL 555255 - an x/tools CL implements accepted proposal https://go.dev/issue/53367 for x/tools/go/cfg
+CL 585216 - an x/build CL mentions accepted proposal https://go.dev/issue/56001 because it fixed a bug causing downloads not to be produced for that new-to-Go-1.22 port; this isn't relevant to Go 1.23 release notes
+CL 481062 - added examples for accepted proposal https://go.dev/issue/56102; doesn't need a release note
+CL 497195 - an x/net CL adds one of 4 fields for accepted proposal https://go.dev/issue/57893 in x/net/http2; seemingly not related to net/http and so doesn't need a Go 1.23 release note
+CL 463097, CL 568198 - x/net CLs that implemented accepted proposal https://go.dev/issue/57953 for x/net/websocket; no need for rel note
+many x/net CLs - work on accepted proposal https://go.dev/issue/58547 to add a QUIC implementation to x/net/quic
+CL 514775 - implements a performance optimization for accepted proposal https://go.dev/issue/59488
+CL 484995 - x/sys CL implements accepted proposal https://go.dev/issue/59537 to add x/sys/unix API
+CL 555597 - optimizes TypeFor (added in accepted proposal https://go.dev/issue/60088) for non-interface types; doesn't seem to need a release note
+a few x/tools CLs deprecated and deleted the experimental golang.org/x/tools/cmd/getgo tool per accepted proposal https://go.dev/issue/60951; an unreleased change and not something that's in scope of Go 1.23 release notes
+many x/vuln CLs to implement accepted proposal https://go.dev/issue/61347 ("x/vuln: convert govulncheck output to sarif format") in govulncheck
+CL 516355 - x/crypto CL that implemented accepted proposal https://go.dev/issue/61447 for x/crypto/ssh; doesn't need a Go 1.23 release note
+CL 559799 - a Go 1.22 release note edit CL mentioned a Go 1.22 accepted proposal https://go.dev/issue/62039, a little after Go 1.23 development began
+CL 581555 - an x/tools CL mentioned accepted proposal https://go.dev/issue/62292 for x/tools/go/aalysis; doesn't need a Go 1.23 release note
+CL 578355 - mentioned accepted proposal https://go.dev/issue/63131 to add GOARCH=wasm32, but that proposal hasn't been implemented in Go 1.23 so it doesn't need a release note
+CL 543335 - x/exp CL that backported a change to behavior in slices package (accepted proposal https://go.dev/issue/63393) to x/exp/slices; doesn't need a Go 1.23 release note
+CL 556820 - x/tools CL implemented accepted proposal https://go.dev/issue/64548 for x/tools/go/analysis
+CL 557056 - x/tools CL implemented accepted proposal https://go.dev/issue/64608 for x/tools/go/packages
+CL 558695 - x/crypto CL worked on accepted proposal https://go.dev/issue/64962 for x/crypto/ssh
+CL 572016 - x/tools CL implemented accepted proposal https://go.dev/issue/65754 for x/tools/go/cfg
+a few x/tools CLs tagged and deleted the golang.org/x/tools/cmd/guru command per accepted proposal https://go.dev/issue/65880; an unreleased change and not something that's in scope of Go 1.23 release notes
+CL 580076 - seemingly internal cmd/go change to propagate module information for accepted proposal https://go.dev/issue/66315; doesn't seem to warrant a release note
+CL 529816 - the 'tests' vet check was initially added to the 'go test' suite per accepted proposal https://go.dev/issue/44251, but the change was rolled back in CL 571695, with no roll forward as of 2024-05-23; nothing to document in Go 1.23 release notes for it at this time
+CL 564035 - changed encoding/xml, but the change was too disrptive and rolled back in CL 570175, reopening tracking issue go.dev/issue/65691; nothing to document in Go 1.23 release notes
+CL 587855 - a demonstration of benefit of accepted proposal https://go.dev/issue/60529; actual change isn't happening in Go 1.23 so doesn't need a release note
+CL 526875 - x/crypto CL implemented accepted proposal https://go.dev/issue/62518 for x/crypto/ssh
+-->