The Wire · Showcase
Go 1.28 release notes go live as database/sql doubles down on speed
By RepoJournal · Filed · About Go
Go 1.28 is officially on the horizon, and database/sql just got a serious performance upgrade that will make every scanner faster.
The golang.org site has flipped the switch on the Go 1.28 release notes draft [1], and Go 1.27 is now the deployed version on golang.org [2], so the release train is moving. Meanwhile, database/sql's convertAssignRows now has fast paths for int64 and float64, eliminating reflection and decimal string round-trips that caused allocs for values >= 100 [3]. This is the kind of drop-in win that shows up in every query-heavy service. Over in net/http, a race between 1xx status and 100 Continue could send a garbled response to clients when handlers write 1xx concurrently with body reads; that's now fixed [4]. The HTTP/3 client also now includes the minor HTTP version in its default User-Agent, matching HTTP/1 and HTTP/2 [5]. On the tooling side, gomobile now invokes the NDK Clang directly, dodging Windows' 8191-character command line limit that broke Android c-shared link steps [6]. "This tutorial is a direct descendant of the https://go.dev/blog/json," notes the new encoding/json/v2 tutorial [7], which is now a living document outside the blog. And sys is catching up with pidfd support, adding constants, a type, and IoctlPidfdInfo [8][9]. Finally, riscv64 gets intrinsic rules for sync Atomic{And,Or}{32,64}, cutting call overhead [10], and a rust-style race in the runtime that could crash on a stuck traceback when errors are tolerated is gone [11]. All told, 43 commits across 5 repos, with the clear winners being database/sql performance and the 100-Continue race fix.
One email a day. Unsubscribe in one click.
Keep up with Go in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review the Go 1.28 release notes draft to plan migration golang/go [plan]
- → Test your HTTP/1 servers for the 100-continue race fix golang/go [immediate]
- → Benchmark database/sql scanning after the fast-path addition golang/go [plan]
- → Update golang.org/x/net to get the HTTP/3 User-Agent consistency golang/net [monitor]
References
- [1] _content/doc: add go1.28.md placeholder golang/website
- [2] internal/history: remove draft notice, update deployment, add Go 1.27 golang/website
- [3] database/sql: add int64 and float64 fast paths to convertAssignRows golang/go
- [4] net/http: prevent race between 1xx status and 100 Continue golang/go
- [5] internal/http3: include minor HTTP version in default User-Agent header golang/net
- [6] cmd/gomobile: invoke the NDK Clang directly golang/mobile
- [7] _content/doc/tutorial/json: add encoding/json/v2 tutorial golang/website
- [8] unix: add pidfd constants and type golang/sys
- [9] unix: add IoctlPidfdInfo golang/sys
- [10] cmd/compile/internal: add intrinsic rule for sync Atomic{And,Or}{32,64} on riscv64 golang/go
- [11] runtime: don't crash on a stuck traceback when errors are tolerated golang/go