$ the-wire · showcase
Windows NewFile stops blocking, riscv64 disassembly gets fixed
By RepoJournal · Filed · About Go · Composed from the cited sources · methodology
A Windows hang in os.NewFile leads the day, with a corrected riscv64 disassembler and a smaller x/net/idna binary close behind.
os,internal/poll: lazily initialize Windows NewFile handles golang/go
Querying a Windows handle's I/O mode can block behind outstanding synchronous I/O, so NewFile could hang while adopting an inherited or duplicated handle, before the caller could use the File to cancel the pending operation. Mode detection and poller initialization now wait until the first I/O, seek, or deadline operation, though handles with a known mode still initialize eagerly.
riscv64: use absolute addresses for branch and jump targets golang/arch
riscv64asm.GoSyntax emitted n(PC) branch and jump targets assuming every RISC-V instruction is 4 bytes, so the reported instruction deltas were wrong. The function now uses absolute addresses for those targets, which matters for anyone reading riscv64 disassembly from Go 1.26 on, where compressed instructions arrive.
secure/bidirule: lazily precompute ASCII table golang/text
Precomputing the ASCII table in init left the bidirule init path reachable even in programs that never call it. Initializing the table on first validation use cuts about 16 KiB from an unstripped darwin/arm64 binary for a program that blank-imports golang.org/x/net/idna, with no noticeable change in BenchmarkSpan.
net/http/internal/http2: do some follow-ups to serve parking change golang/go
The follow-up to the serve parking change skips parkMu accounting in beginServeSend and endServeSend on connections that can never park, which drops a mutex round trip per frame on both sender and receiver, and adds a test for a response blocked on the peer. It also reattaches the canPark doc comment, which a rebase mishap had left on the http2serveparking var.
internal/breakings: minor changes golang/pkgsite
The day's long tail: Jonathan Amsterdam's internal/breakings work continued with symbolSet, interfaceType, struct types, and funcType syntax types, plus a package rename, a factored-out parsing function for tests, and a new symbolSet writer.