The Applied Go Weekly Newsletter logo

The Applied Go Weekly Newsletter

Subscribe
Archives
November 2, 2025

Go Faster With Green Tea • The Applied Go Weekly Newsletter 2025-11-02

AppliedGoNewsletterHeader640.png

Your weekly source of Go news, tips, and projects

2025-11-02-go-faster-with-green-tea.png

Go Faster With Green Tea

Hi ,

Go's garbage collector has gone through a remarkable journey. In Go 1.5, the Go team implemented a tri-color concurrent algorithm that reduced GC latency from 300-400ms to 30-40ms: an improvement of an order of magnitude. For Go 1.6, the team systematically eliminated O(heap) stop-the-world operations. Latency dropped to 4-5ms—the second order-of-magnitude improvement. Go 1.8 eliminated stop-the-world stack scanning at the end of a GC cycle. The result is the third order-of-magnitude improvement: a reduction to the sub-millisecond range.

From almost half a second to less than one millisecond: this is an impressive improvement, but the Go team didn't stop there. Go apps still spend a substantial part of their CPU time with collecting garbage. Multi-core architectures impose hurdles like non-uniform memory access and reduced bandwidth as memory is shared among an increasing number of CPU cores. A new interpretation of the mark-and-sweep algorithm attempts to address these hurdles: it's called Green Tea, and it's the eponymous hero of the Go Blog's latest article.

The Go garbage collector has seen spectacular efficiency improvements over time, but even the first version had an incredible superpower: It let developers focus on features instead of babysitting memory. What a huge time-saver!

–Christoph

Featured articles

The Green Tea Garbage Collector - The Go Programming Language

Take a seat, and have a big cup of good green tea. This is a long article. But totally worth the time! There's a lot to learn: about mark-sweep, graph floods, vector acceleration, and, most importantly, where the Green Tea algorithm got its name from.

Introduction to Gthulhu

Can you replace the Linux scheduler with a scheduler written in less than 300 lines of Go code? Apparently you can, because otherwise this article (and the project behind it) wouldn't exist.

I'm Independently Verifying Go's Reproducible Builds

"Trust me, I have verified the claims I'm making!" The Go toolchain is designed in a way that guarantees reproducible builds, but this guarantee only holds if a third party can verify it independently of Google. Andrew Ayer set out to do such an independent verification. As a contributor to Debian's Reproducible Builds project and author of Source Spotter, he is certainly qualified for the job.

Podcast corner

go podcast() | 065: We're in the 3rd age of SaaS

Dominic St-Pierre looks back at almost two decades of going through the adventures of entrepreneurship.

Quote of the Week: Sweeping predictions

LinkedIn needs a feature to filter out all AI hype written by people under 25.

I'm sorry, but if you graduated college three years ago you don't have enough software engineering experience to make sweeping predictions about how AI is going to destroy it.

– Hillel Wayne

I love Hillel Wayne's humorous posts. And I love this particular comment from Benjamin Jordan, too:

Hold on though because you only spent 1 year being 25 and here you are making sweeping generalizations about being 25, nice try

More articles, videos, talks

From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go | ServiceRadar

For network discovery purposes, ServiceRadar need to sweep 21k devices. Using a classic TCP connect() for this, the whole sweep takes more than 19 hours. By the time the sweep ends, the results are already outdated. The team threw in their knowledge of network and Go optimizations and reduced the sweep time to milliseconds. The ingredients: raw sockets, TPACKET_V3 rings, cBPF filtering, and a pinch of Go assembly.### Automating Golang Project Updates with Updatecli - Updatecli

Updatecli is, broadly speaking, a tool for specification-driven updates of files. This article focuses on how Updatecli can specifically support Go projects.### Go Context Logger

Steve Xuereb looks at a lesser-known slog functionality: context logging.### Discarding gRPC-Go: The Story Behind OTLP/gRPC Support in VictoriaTraces

VictoriaMetrics weren't quite happy with the protoc toolchain... and wrote their own gRPC stack with an HTTP/2 server and easyproto. ### Golang Concurrency, Channels, Goroutines, What I know about them? - YouTube

Why isn't concurrent programming more common, despite Go's powerful concurrency primitives? Parsa Eissazadeh explores the trade-offs of concurrency by examining concurrency concepts and the associated challenges.### Dependency Management in Database Design | DoltHub Blog

Everyone can write about import cycles, like this dude, but dealing with cyclic dependencies in a large project is another level. Dolthub's Nick Tobey shares two main insights in his article: Proper modularization is key to creating a maintainable project, and finding one's way around introducing a circular dependency can be trickier than it seems at a first glance. The devil's always in the details.

Projects

Tools and applications

Just a moment...

Need to take advantage of Go in your frontend JS code? Just type "use golang" and write Go code that automatically compiles to WebAssembly. Minor caveat: "Author here. The library was created as a joke. You need to take it with a grain of salt."#### GitHub - devasherr/gpad: Struct Padding Optimizer

If you do data-oriented design, this tool might be a useful addition to your toolbox.

Completely unrelated to Go

Programming With Less Than Nothing

I almost shared the fate of Dana in this hilarious article...

(via)### The job behind the job [of a high level IC] | Swizec Teller

"By having situational awareness and a long-term, you can do urgent things in a way that ladders you up to achieving long-term goals."### How to engineer luck - by George Mack - High Agency

Is luck just, well, luck, or can you develop something like a "luck skill"? George Mack believes in the latter, and he shares a baker's dozen tips for actively increasing your luck.

"Being a great luck engineer is turning yourself into a simple API that people can connect into."

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:
https://c.im/@chris… LinkedIn
Powered by Buttondown, the easiest way to start and grow your newsletter.