Writergate
The informal name for Zig's massive I/O interface refactoring that removed GenericWriter/Reader in favor of vtable-based concrete types.
Alex Rios — Principal Engineer, author, and conference speaker writing about Go internals, systems programming, and tech leadership.
The informal name for Zig's massive I/O interface refactoring that removed GenericWriter/Reader in favor of vtable-based concrete types.
Inside Zig's three-level vtable design, and how buffer placement enables both performance and async.
Por dentro do design de vtable em três níveis do Zig, e como a posição do buffer viabiliza performance e async ao mesmo tempo.
O nome informal da refatoração massiva da interface de I/O do Zig que removeu GenericWriter/Reader em favor de tipos concretos com vtable.
Practical patterns for updating Zig code from std.io to std.Io, with before/after examples.
Padrões práticos pra atualizar código Zig de std.io pra std.Io, com exemplos de antes e depois.
Why Zig deleted GenericWriter and AnyWriter, and what generic poisoning really costs.
Por que o Zig deletou GenericWriter e AnyWriter, e o que o envenenamento genérico custa de verdade.
Five binding times, named by what it costs to change them
Cinco momentos de binding, nomeados pelo que custa pra mudar cada um
Why your MVP keeps taking eighteen months
Por que seu MVP continua levando dezoito meses
The argument that quietly invalidates half of clean code advice
O argumento que invalida silenciosamente metade do conselho de clean code
When splitting deploy units while sharing storage works, and when it doesn't
Quando dividir as unidades de deploy mantendo o storage compartilhado funciona, e quando não
An anti pattern that still ships every week
Um anti pattern que ainda entra em produção toda semana
The encapsulation that isn't
A encapsulação que não é
Every parameter is a contract. Make it small enough to honor
Cada parâmetro é um contrato. Faz ele pequeno o suficiente pra honrar
Two axes, not one list
Dois eixos, não uma lista
What AI-shipped code keeps getting wrong about cohesion
O que o código gerado por IA continua errando sobre coesão
How well intentioned DRY refactors produce the worst modules I've seen
Como refactor DRY bem intencionado produz os piores módulos que eu já vi
How a one-line nesting mistake in internal/cpu silently disabled GFNI detection on every consumer-grade Intel CPU shipped since 2021 (Alder Lake, Raptor Lake, the Atom-derived N-series, and more).
How Go 1.26 repurposes an AES cryptography instruction to make garbage collection up to 20% faster
What it takes to move a zero-allocation UUID library from Zig 0.15 to 0.16, where every side effect now flows through std.Io.
How comptime generics replaced function pointers for deterministic UUID testing: zero runtime cost, full test coverage
Three bugs found in a UUID library within hours of writing it: negative timestamp corruption, broken monotonicity, and unreachable code that was reachable
Thirteen years after Making Sense of NoSQL, most of its claims are debunked. PostgreSQL should be your default, with specialized databases added only when you have measured evidence.
A design journal for a zero-allocation RFC 9562 UUID library in Zig: constraints, decisions, and what I learned shipping it
Go uses spinning internally but refuses to expose spinlock APIs. The reasons reveal deep truths about concurrent programming.
A design journal for slogbox, a zero-dependency slog.Handler that keeps recent logs in a ring buffer
How to test Go's new garbage collector on your workload, and why the results might surprise you
Data structures, algorithms, and the clever design decisions behind Go's span-based garbage collector
Why Go's new garbage collector works with pages instead of objects—and what that means for your applications
How academic research became a Go runtime feature, and how to start using the leak detector today
How testing/synctest creates isolated execution environments with synthetic clocks—and why this makes concurrent tests deterministic.
The key insight behind testing/synctest: which operations count as "blocked" and which prevent time from advancing.
Concurrent tests in Go are either slow or flaky. Usually both. The testing/synctest package changes this.
How to migrate existing tests from time.Sleep and mock clocks to testing/synctest—and when not to.
Go 1.23 standard library package for value canonicalization with GC-integrated weak pointers
The decade-long journey from Issue #5160 to Go 1.23 value interning—and how net/netip forced the runtime team to finally solve it
How Go's garbage collector handles weak pointers during mark, sweep, and the blocking mechanism during conversion
How Go implements weak pointers with an 8-byte handle that enables O(1) invalidation
Why Go resisted weak pointers for over a decade, what changed, and what the minimal API actually does