200 million requests per day with Go and cgi-bin

#​561 — July 9, 2025

Unsub  |  Web Version

Go Weekly

What's //go:nosplit For? — Go has many comment-based directives for tweaking inlining, stack checks, write barriers, and more. Many aren’t well documented, but can have striking effects, such as nosplit which can offer a performance boost in certain scenarios, but may also lead to faults or a locked runtime. This is, nonetheless, a fantastic explainer.

Miguel Young

Generic Interfaces — Axel presents the idea that as interfaces are types themselves, they too can have type parameters. He shows how this lets you write one core implementation of a binary search tree and support built-in, callback-based, or method-based comparisons, before moving on to deeper concepts. There's a lot to get your teeth into here.

Axel Wagner

Build Containers from Scratch — Start with raw Linux tools like chroot, namespaces, and cgroups to truly understand how containers work. Then build your own with Docker and deploy them using Kubernetes.

Frontend Masters sponsor

IN BRIEF:

Serving 200 Million Requests Per Day with cgi-binCGI was commonly used in the earlier days of the Web to have HTTP requests launch backend processes and return the results. Over time we moved onto persistently-running apps, but could the speed of Go and launching processes in 2025 make cgi-bin viable again? Yes! (But you might not want to..)

Jake Gold

▶️ How I Recreated Shazam's Algorithm from Scratch – A fun look at implementing a music detection algorithm from scratch. Go does the heavy lifting and there’s source. Chigozirim

📄 An Optimization and Debugging Story with Go and DTrace Philippe Gaultier

📄 Developing a Terminal UI in Go with Bubble Tea – Good high level advice. Alex Pliutau

📄 Am I Online? – An interesting way to see if your app is truly online by checking a special Google URL. Anton Zhiyanov

🛠 Code & Tools

doWM: A Tiling and Floating Window Manager for X11 — A fast, lightweight window manager written entirely in Go. You’ll need to be proficient with Linux, however, but this could be a great gateway into tweaking something that feels right for you. GitHub repo.

BobdaProgrammer

🕹️ GORE: A Pure Go Minimal 'Doom' Implementation — A few months ago we linked to doomgeneric, an initial effort to transpile 1993’s Doom to Go. This cleans it up a lot, makes it more “Go-ish” and platform agnostic, and.. it can even render the game on the terminal!

Andre Renaud

Effortless Go Contract Testing: Inferred Automatically From Traffic — Stop hand-crafting brittle contracts. See how they can be inferred from real traffic and updated as your Go APIs evolve.

Signadot sponsor

go-ytdlp: yt-dlp CLI Bindings for Goyt-dlp is a popular audio/video downloading tool – not just for YouTube but hundreds of platforms.

Liam Stanley

Minimock: A Tool to Generate Mocks from Interface Declarations — Generates statically typed mocks and helpers, is fully integrated with the testing package, and supports generics.

Juno Inc.

Lox: A Lexer and Parser Generator for Go — Inspired by ANTLR at the surface level (combined parser and lexer, action code separated from grammar) but more similar to yacc internally (LR(1), dependency-free parser).

dcaiafa

  • 🤖 Mods 1.8 – Charm's pipelineable AI CLI client, now with MCP support.

  • Hugo 0.148 – The popular Go-powered static site generator. Beware of some breaking changes.

  • MCP-Go 0.33 – An implementation of the Model Context Protocol (MCP).

  • OpenFGA 1.9 – Google Zanzibar-inspired authorization engine.

  • GoReleaser 2.11 – Build/release binaries for multiple platforms.

  • pgroll 0.14 – Zero-downtime, reversible, schema migrations.

  • sh 3.12 – Shell script parser, formatter, and interpreter.

  • fzf 0.64 – Popular command-line fuzzy finder.

https://golangweekly.com/issues/561

Created 9h | Jul 9, 2025, 5:50:05 PM


Login to add comment