Zig quietly dropped Python's 'one obvious way' from its philosophy — and the thread read every word like scripture
In a single commit, Andrew Kelley reworded the 'Zen of Zig': 'Only one obvious way to do things' became 'There is an idiomatic way to do it,' 'Memory is a resource' was deleted, and 'Together we serve the users' was promoted to the emphatic last line.
A one-commit philosophy edit
On June 4, 2026, Zig creator Andrew Kelley pushed a commit titled "zig zen update," rewording the "Zen of Zig" in both the language reference and src/main.zig. The notable changes:
- "Only one obvious way to do things." → "There is an idiomatic way to do it."
- "Focus on code rather than style." → "Focus on logic, not style."
- "Resource allocation may fail; resource deallocation must succeed." split into two separate lines.
- "Memory is a resource." — deleted (the commit notes it "goes without saying").
- "Together we serve the users." pulled out into an emphasized closing line: "Together, we serve the users!"
A philosophy file is how a language tells you how to read it, so the thread treated the diff as significant.
On dropping 'one obvious way'
"Zig's original take on this, 'Only one obvious way to do things' seems even worse. You see, both languages agree that Perl had it wrong … But they went a little too far: it is not actually bad for it to be possible to write the same thing in more than one [way]." — Michael Chermside, a long-time commenter
The softening from "only one obvious way" (a near-quote of Python's Zen) to "an idiomatic way" reads as Zig backing off a rigid ideal it never quite lived up to.
On 'serve the users'
"Glad to see 'Together we serve the users' come back. I miss the old Zig readme that said Zig comes with an MIT license and a humble request to build software that serves the users." — a Zig SIMD/parser contributor
On the allocation rule
Splitting the allocation/deallocation line drew the thread's one genuinely technical argument:
"it's nearly impossible to handle such cases properly. That's why checking each allocation manually is a bad idea. Other languages do this better — they provide nice abstractions, but if something fails, the language runtime terminates the process." — a systems-language commenter on allocation-failure handling
Why a wording change is worth a thread
Languages are also communities, and their manifestos do real work — they tell newcomers what "good" code looks like and what the project values. Zig trading Python's "one obvious way" for "an idiomatic way," deleting a line as self-evident, and ending on serve the users is a small set of edits that quietly restates what kind of language Zig wants to be. The thread reading it line by line isn't pedantry; it's the community confirming the signal was received.
Get breakdowns like this every day
The top Hacker News stories, unpacked — by email, Telegram, or RSS.
Simon Willison runs untrusted Python in a 362KB sandbox — and the thread is a map of every rival approach
To safely run agent-written Python, Willison compiled MicroPython to a 362KB WebAssembly binary with memory limits and gated I/O — 'vibe-coded,' alpha, stress-tested against GPT-5.5 escape attempts. The thread surfaces a crowded field and the real tradeoff he's making.