June 8, 2026
Fast code, dead link, live drama
Zig Structs of Arrays (2024)
Zig fans hype a clever memory trick, but the comments got hijacked by dead links
TLDR: The article shows how Zig can automatically reorganize data to use less memory, a handy trick for performance-heavy software. But the comments stole the show: readers argued this is old news in game development, while others were busy rescuing the post itself from broken-link oblivion.
A deep-dive post about the Zig programming language should have been a tidy little victory lap for clever coding tricks. Instead, the community turned it into a chaotic mix of performance bragging, game-dev nodding, and link rot panic. The article itself is about a neat way to store data more efficiently — basically, instead of keeping every little record bundled together, Zig can rearrange things so similar pieces sit side by side, which can save memory and help speed. The big flex is that Zig does this with compile-time magic: it can inspect a data type while building the program and generate the optimized layout automatically.
But in the comments, the real plot twist was that some readers couldn’t even see the article. One person declared the site “hugged to death” and rushed in with a Wayback Machine mirror, while another just reported the brutal verdict: “410 Gone.” Nothing says internet drama like a programming article becoming a preservation emergency. Meanwhile, others treated the piece like a gateway to bigger performance nerd discourse, dropping side quests to CPU cost charts and related Hacker News threads.
The strongest opinion? This isn’t some weird niche trick at all — “This is what games do with ECS,” one commenter shrugged, framing the whole thing as standard practice in high-performance game engines. So the vibe was half “wow, Zig is powerful,” half “calm down, game developers have been doing this forever,” with a sprinkle of RIP original link comedy on top.
Key Points
- •The article explains that Zig’s `std.MultiArrayList` stores struct data in a struct-of-arrays layout instead of an array-of-structs layout.
- •A `Token` struct example shows a memory comparison: 100 `Token` structs take 2400 bytes in AoS form, while `MultiArrayList(Token)` is reported to use 1700 bytes.
- •The author demonstrates the SoA allocation with `std.heap.FixedBufferAllocator` using a 1704-byte buffer and notes an unexplained extra 4 bytes.
- •The article states that Zig types are compile-time values that can be assigned, passed to compile-time functions, and returned from them.
- •It describes that generating a struct-of-arrays type requires compile-time reflection so Zig can inspect a struct’s fields and field types during type construction.