Tame the thundering (goroutine) herds! • The Applied Go Weekly Newsletter 2026-06-28

Your weekly source of Go news, tips, and projects

Tame the thundering (goroutine) herds!
Hi ,
Spawning goroutines has marginal costs: 2KB of initial stack space, and a tad bit more work for the scheduler. But when not managed properly, they can bring your system down by side-effects; be it an undetected goroutine leak or very intentional mechanisms like fallback behavior for a cache miss. A handful or a few dozen of gorutines would make either problem go unnoticed; hundreds or thousands may stall the whole system. So better watch out for bugs that leak goroutines and faulty algorithms that don't scale. More about this in the featured articles.
Happy coding!
–Christoph
Featured articles
Channel iteration and goroutine leak
Following-up on his previous post, Redowan shares a particular case where the new goroutineleak profile (GA in Go 1.27) helped to catch a goroutine leak even though the buggy path wasn't executed.
Request coalescing with Go singleflight | Redowan's Reflections
Thundering herds: a problem occurring in real life as well as in situations like a cache invalidation causing hundreds of cache misses followed by hundreds of queries being sent to a single database instance. Now the slow DB call gets even slower, and maybe it even times out, forcing clients to retry, causing more load.
The Singleflight library stops the herd (or more precisely, it doesn't even let the herd rush for the database in a wild stampede). Here's how to use it effectively.
Podcast corner
Canada trip, 1.27rc1, `` vs “, and Go in the Gaming industry with Francis J. Nickels III
Francis Nickels from Riot Games joins Jonathan and Shay to discuss Go’s role in handling massive multiplayer online game infrastructure and its exceptional scalability challenges. Also on the show: Genetech's Elevate Dev conference, Go 1.27 RC1 and Delve's support for Go 1.27, a new Webview bindings library for Go, and—of course!—more.
More articles, videos, talks
kluyg/in-memory-cache: Benchmarking Go in-memory cache implementations (stdlib only) under different concurrent access patterns — blog-post companion
Six implementations, four GOMAXPROCS settings, four workload patterns: A cache under investigation.
Object Storage WAL Replication in UnisonDB
UnisonDB, a DynamoDB-inspired multi-modal database, uses an alternative approach to WAL replication: Object storage replaces writer streams for better decoupling between writers and replicas.
Solod v0.2: Networking, new targets, friendlier interop
Anton Zhiyanov continues his work on Solod, a system-level language with Go syntax. V0.2 adds support for networking: TCP, UDP, and Unix domain sockets.
Projects
Libraries
mobiletoly/goldr: goldr - layout-driven HTMX-native Go framework for building web apps
The author scratched their own itch and use this framework in prod already, so if you feel a simlar itch, you might want to give it a try.
Tools and applications
crgimenes/glaze: Glaze: a CGo-free desktop WebView toolkit for Go
Glaze joints the team of CGO-free UI toolkits:
Glaze now runs 100% on purego: no CGo and no bundled native WebView libraries.
It talks directly to WKWebView on macOS, WebKitGTK on Linux, and WebView2 on Windows from Go.
edoardottt/depsdev: CLI client (and Golang module) for deps.dev API. Free access to dependencies, licenses, advisories, and other critical health and security signals for open source package versions.
The deps.dev project examines open source packages, yielding valuable information about their dependencies, licenses, security status, and other health signals. depsdev is a CLI client for this service.
go, please · GitHub
A turn-based game written with Ebitengine and EbitenUI. Send your warriors out to defeat the enemy on a hexagonal board. Playable online. The author still works on it, so expect changes (hopefully not mid-game 😅)
Digital-Shane/OpenTamer: macOS app for controlling process cpu usage
When your MacBook runs through the battery way faster than you'd expect and want, sometimes a single app is the culprit. OpenTamer tames CPU hogs on macOS.
Completely unrelated to Go
Saying the obvious thing
Next time you want to say, "thank you, Captain Obvious!," think twice.
