The Applied Go Weekly Newsletter logo

The Applied Go Weekly Newsletter

Archives
Subscribe
June 29, 2026

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

AppliedGoNewsletterHeader640.png

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.

Happy coding! ʕ◔ϖ◔ʔ

Questions or feedback? Drop me a line. I'd love to hear from you.

Best from Munich, Christoph

Not a subscriber yet?

If you read this newsletter issue online, or if someone forwarded the newsletter to you, subscribe for regular updates to get every new issue earlier than the online version, and more reliable than an occasional forwarding. 

Find the subscription form at the end of this page.

How I can help

If you're looking for more useful content around Go, here are some ways I can help you become a better Gopher (or a Gopher at all):

On AppliedGo.net, I blog about Go projects, algorithms and data structures in Go, and other fun stuff.

Or visit the AppliedGo.com blog and learn about language specifics, Go updates, and programming-related stuff. 

My AppliedGo YouTube channel hosts quick tip and crash course videos that help you get more productive and creative with Go.

Enroll in my Go course for developers that stands out for its intense use of animated graphics for explaining abstract concepts in an intuitive way. Numerous short and concise lectures allow you to schedule your learning flow as you like.

Check it out.


Christoph Berger IT Products and Services
Dachauer Straße 29
Bergkirchen
Germany

Don't miss what's next. Subscribe to The Applied Go Weekly Newsletter:
Share this email:
Share on Twitter Share on LinkedIn Share on Hacker News Share on Reddit Share via email Share on Mastodon Share on Bluesky
Mastodon
LinkedIn
Powered by Buttondown, the easiest way to start and grow your newsletter.