This is a practical use of CL 577915, follow-up to CL 577835.
Change-Id: Ibe7e2fa11b444afa1898dc6f6aba1512fe98f1fe
Reviewed-on: https://go-review.googlesource.com/c/go/+/578195
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
### Timer changes
Go 1.23 makes two significant changes to the implementation of
-[`time.Timer`](/pkg/time#Timer) and [`time.Ticker`](/pkg/time#Ticker).
+[time.Timer] and [time.Ticker].
First, `Timer`s and `Ticker`s that are no longer referred to by the program
become eligible for garbage collection immediately, even if their
-If the argument to [`FileInfoHeader`](/archive/tar#FileInfoHeader) implements the new [`FileInfoNames`](/archive/tar#FileInfoNames) interface,
-then the interface methods will be used to set the Uname/Gname of the file header.
-This allows applications to override the system-dependent Uname/Gname lookup.
+If the argument to [FileInfoHeader] implements the new [FileInfoNames]
+interface, then the interface methods will be used to set the Uname/Gname
+of the file header. This allows applications to override the system-dependent
+Uname/Gname lookup.
-Errors returned by [`driver.Valuer`](/pkg/database/sql/driver#Driver)
-implementations are now wrapped for improved error handling during
-operations like [`Query`](/pkg/database/sql#DB.Query), [`Exec`](/pkg/database/sql#DB.Exec),
-and [`QueryRow`](/pkg/database/sql#DB.QueryRow).
+Errors returned by [driver.Valuer] implementations are now wrapped for
+improved error handling during operations like [DB.Query], [DB.Exec],
+and [DB.QueryRow].
-The new [`ProgType`](/pkg/debug/elf#ProgType)
-[`PT_OPENBSD_NOBTCFI`](/pkg/debug/elf#PT_OPENBSD_NOBTCFI).
-disables Branch Tracking Control Flow Integrity (BTCFI) enforcement on OpenBSD binaries.
+The `debug/elf` package now defines [PT_OPENBSD_NOBTCFI]. This [ProgType] is
+used to disable Branch Tracking Control Flow Integrity (BTCFI) enforcement
+on OpenBSD binaries.
-The new type [`KeepAliveConfig`](/pkg/net#KeepAliveConfig) permits fine-tuning
-the keep-alive options for TCP connections, via a new
-[`TCPConn.SetKeepAliveConfig`](/pkg/net#TCPConn.SetKeepAliveConfig) method and
-new KeepAliveConfig fields for [`Dialer`](/pkg/net#Dialer) and [`ListenConfig`](/pkg/net#ListenConfig).
+The new type [KeepAliveConfig] permits fine-tuning the keep-alive
+options for TCP connections, via a new [TCPConn.SetKeepAliveConfig]
+method and new KeepAliveConfig fields for [Dialer] and [ListenConfig].
-The patterns used by [`net/http.ServeMux`](/pkg/net/http#ServeMux) allow
-multiple spaces matching regexp '[ \t]+'.
+The patterns used by [ServeMux] allow multiple spaces matching
+regexp '[ \t]+'.
-The new [`NewRequestWithContext`](/pkg/net/http/httptest#NewRequestWithContext) method creates an incoming request with
-a [`context.Context`](/pkg/context#Context).
+The new [NewRequestWithContext] method creates an incoming request with
+a [context.Context].
-The [`os.Stat`](/pkg/os#Stat) function now sets the [`os.ModeSocket`](/pkg/os#ModeSocket)
-bit for files that are Unix sockets on Windows. These files are identified by
-having a reparse tag set to `IO_REPARSE_TAG_AF_UNIX`.
+The [Stat] function now sets the [ModeSocket] bit for
+files that are Unix sockets on Windows. These files are identified
+by having a reparse tag set to `IO_REPARSE_TAG_AF_UNIX`.
-On Windows, the mode bits reported by [`os.Lstat`](/pkg/os#Lstat) and [`os.Stat`](/pkg/os#Stat)
-for reparse points changed. Mount points no longer have [`os.ModeSymlink`](/pkg/os#ModeSymlink) set,
-and reparse points that are not symlinks, Unix sockets, or dedup files now
-always have [`os.ModeIrregular`](/pkg/os#ModeIrregular) set.
+On Windows, the mode bits reported by [Lstat] and [Stat] for
+reparse points changed. Mount points no longer have [ModeSymlink] set,
+and reparse points that are not symlinks, Unix sockets, or dedup files
+now always have [ModeIrregular] set.
This behavior is controlled by the `winsymlink` setting.
For Go 1.23, it defaults to `winsymlink=1`.
Previous versions default to `winsymlink=0`.
-The [`CopyFS`](/pkg/os#CopyFS) function copies an [`io/fs.FS`](/pkg/io/fs#FS)
-into the local filesystem.
+The [CopyFS] function copies an [io/fs.FS] into the local filesystem.
-On Windows, [`os.Readlink`](/pkg/os#Readlink) no longer tries
-to normalize volumes to drive letters, which was not always even possible.
+On Windows, [Readlink] no longer tries to normalize volumes
+to drive letters, which was not always even possible.
This behavior is controlled by the `winreadlinkvolume` setting.
For Go 1.23, it defaults to `winreadlinkvolume=1`.
Previous versions default to `winreadlinkvolume=0`.
\ No newline at end of file
-The new [`Localize`](/pkg/path/filepath#Localize) function safely converts
-a slash-separated path into an operating system path.
+The new [Localize] function safely converts a slash-separated
+path into an operating system path.
-On Windows, [`filepath.EvalSymlinks`](/pkg/path/filepath#EvalSymlinks) no longer evaluates
-mount points, which was a source of many inconsistencies and bugs.
+On Windows, [EvalSymlinks] no longer evaluates mount points,
+which was a source of many inconsistencies and bugs.
This behavior is controlled by the `winsymlink` setting.
For Go 1.23, it defaults to `winsymlink=1`.
Previous versions default to `winsymlink=0`.
-On Windows, [`filepath.EvalSymlinks`](/pkg/path/filepath#EvalSymlinks) no longer tries
-to normalize volumes to drive letters, which was not always even possible.
+On Windows, [EvalSymlinks] no longer tries to normalize
+volumes to drive letters, which was not always even possible.
This behavior is controlled by the `winreadlinkvolume` setting.
For Go 1.23, it defaults to `winreadlinkvolume=1`.
Previous versions default to `winreadlinkvolume=0`.
\ No newline at end of file
-The new methods synonymous with the method of the same name in [`reflect.Value`](/pkg/reflect#Value)
-are added to [`reflect.Type`](/pkg/reflect#Type):
-1. [`OverflowComplex`](/pkg/reflect#Type.OverflowComplex)
-2. [`OverflowFloat`](/pkg/reflect#Type.OverflowFloat)
-3. [`OverflowInt`](/pkg/reflect#Type.OverflowInt)
-4. [`OverflowUint`](/pkg/reflect#Type.OverflowUint)
+The new methods synonymous with the method of the same name
+in [Value] are added to [Type]:
+1. [Type.OverflowComplex]
+2. [Type.OverflowFloat]
+3. [Type.OverflowInt]
+4. [Type.OverflowUint]
-The [`SliceAt(typ Type, p unsafe.Pointer, len int)`](/pkg/reflect#SliceAt) function
-returns a Value representing a slice whose underlying array starts at p and whose
-length and capacity are len.
+The [SliceAt(typ Type, p unsafe.Pointer, len int)] function
+returns a Value representing a slice whose underlying array starts
+at p and whose length and capacity are len.
\ No newline at end of file
-The [`debug.SetCrashOutput`](/pkg/runtime#SetCrashOutput) function allows
-the user to specify an alternate file to which the runtime should
-write its fatal crash report
-([#42888](https://github.com/golang/go/issues/42888)).
+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
unexpected crashes, not just those in goroutines that explicitly use
`recover`.
-The [`Repeat`](/pkg/slices#Repeat) function returns a new slice
-that repeats the provided slice the given number of times.
+The [Repeat] function returns a new slice that repeats the
+provided slice the given number of times.
-The syscall package now defines [`WSAENOPROTOOPT`](/pkg/syscall#WSAENOPROTOOPT) on Windows.
+The syscall package now defines [WSAENOPROTOOPT] on Windows.
-The [`GetsockoptInt`](/pkg/syscall#GetsockoptInt) function is now supported on Windows.
+The [GetsockoptInt] function is now supported on Windows.
-[`TestFS`](/pkg/testing/fstest#TestFS) now returns a structured
-error that can be unwrapped (via method `Unwrap() []error`). This allows
-inspecting errors using [`errors.Is`](/pkg/errors#Is) or
-[`errors.As`](/pkg/errors#As).
+[TestFS] now returns a structured error that can be unwrapped
+(via method `Unwrap() []error`). This allows inspecting errors
+using [errors.Is] or [errors.As].
-The [`unicode/utf16.RuneLen`](/pkg/unicode/utf16#RuneLen) function returns
-the number of 16-bit words in the UTF-16 encoding of the rune. It returns -1
-if the rune is not a valid value to encode in UTF-16.
+The [RuneLen] function returns the number of 16-bit words in
+the UTF-16 encoding of the rune. It returns -1 if the rune
+is not a valid value to encode in UTF-16.