Build1 distinct publisher3 min readUpdated
A seven-year Rust developer rebuilt his JSONPath library in Zig. The costs he reports are IDE support, build files and folder depth, not memory management.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A developer who says he has spent the last seven years working in Rust, mostly on open source [1], reimplemented one of his own libraries in Zig and wrote up what changed. In the published account, the things that actually cost him time are editor tooling, build invocation and file layout [9][11][14] - not allocators, not lifetimes, not memory safety [19]. If you are using write-ups like this to choose a systems language, that absence is the useful part.
The setup is more disciplined than most language comparisons. Rather than a benchmark or a toy, he re-ported something he had already shipped: JSONPath, the JSON query language specified in RFC 9535 [7]. The Rust implementation, jsonpath-rust, already existed; the new one is zig-jsonpath [8]. Same spec, same author, same problem shape, different language. He also states the obvious caveat himself: this project is where his Zig experience begins, and some of his decisions were shaped by Rust habits rather than Zig idiom [5]. He leans functional in Rust - clean functions, expressive types [2] - which is exactly the habit set you would expect Zig to punish.
It did not punish it in the way the usual safety-versus-speed framing predicts. The first thing that caught him off guard was the near-total lack of IDE support: coming from RustRover and other JetBrains tools, Zig offered him little beyond syntax highlighting and basic autocompletion [9]. That pushed him back to the command line, which he ended up rating as one of the more interesting parts of the experience [10], and eventually out of a full IDE entirely, to helix plus alacritty plus zellij [12]. The replacement for IDE run configurations was build.zig, which he describes as surprisingly easy, settling on a fixed set of commands: `zig build test`, `zig build test -Dfilter="..."` for a single test, `-Ddebug-query=true` for debug output, `zig build compliance` for the compliance suite, and `zig build check` for unit tests plus compliance [11].
The second finding is about structure, and it is the one that transfers. In Rust he reaches for folder hierarchy early, almost by default [17]. Zig permits nesting but does not encourage it, and nesting brings import friction [14], so it nudges you toward flat files, with a `model_<companion>` file beside a model when something needs a companion [15]. He deferred the hierarchy and never needed it on this project [17], while conceding the pattern will not scale to large projects - only that the threshold for needing structure was much higher than he expected [16]. His own conclusion is the honest one: it made him ask whether he organises files because a project needs it or out of habit [18].
Note what is not in the published text. It stops mid-sentence in the side-by-side `src/` listing, and contains no discussion of allocators, lifetimes or memory management [19]. So the tidy thesis - explicit allocators and manual lifetimes traded against type-system leverage - is not evidenced here. Three named frictions, zero of them about memory [20]. Treat the memory-model question as still open, and treat the tooling and layout observations as the reportable result.
What to watch: whether the follow-up covers allocator plumbing and where the type system stopped carrying him, since that is the part of the comparison an operator would actually budget for; whether zig-jsonpath's compliance suite [11] holds up against RFC 9535 [7] as the flat layout grows; and whether the editor gap [9] narrows enough that the command-line discipline he adopted stops being mandatory and becomes a choice.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
He reports that Zig permits nesting files and folders but does not really encourage it, like C, and that nesting brings a bit of import friction.
He says Zig mostly nudges you toward flat layout, and that when something needs a companion for a model he creates a model_<companion> file next to it.
The author states he has spent the last 7 years as a Rust developer, working mostly on open source projects.
The author says he gravitates toward the functional side of Rust: clean functions, expressive types.
The author had Zig on his radar as a candidate C successor: lower-level, lighter-weight, and steadily earning a place among languages people take seriously.
The author states up front that his experience with Zig begins with this project, that some observations will look naive to daily Zig users, and that some of his decisions were shaped by Rust habits rather than deep Zig idiom.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Single first-hand account
Everything rests on one self-reported blog post from one publisher. It is specific and partially checkable — named build.zig invocations, side-by-side Rust and Zig directory listings, a named RFC and two named libraries — which lifts it above pure assertion, but there is no benchmark, no compliance result, no second practitioner, and the author declares himself a Zig newcomer. The supplied body is also truncated mid-sentence.
Not measurable
The only adoption-adjacent fact supplied is that one developer completed one personal library port. No downloads, dependents, contributors, users, or third-party deployments of zig-jsonpath or of Zig generally are reported, so an adoption level cannot be scored without inventing figures.
Mildly over-generalised
The post itself is unusually hedged: the author flags his newcomer status and that Rust habits shaped his choices, and he concedes flat layout will not scale forever. The modest overstatement comes from the reach of the conclusion rather than the tone — a single one-person library port is presented as a general read on where Rust-to-Zig friction lies, while the supplied text never reaches allocators, lifetimes, or safety, the dimension a reader would most expect to be weighed.
Self-promotional but disclosed
The author is the maintainer of both artifacts under comparison — jsonpath-rust and the new zig-jsonpath — so the piece doubles as visibility for his own open source work, and it is self-published on a developer blogging platform with no editorial review. Offsetting this, the commercial stake appears nil, no vendor or sponsor is involved, the authorship and inexperience are stated openly, and the account credits Zig with friction as readily as with benefits.
Low-to-moderate
Confidence is limited by structure rather than internal consistency: one publisher, one self-reported source, a truncated body, and a self-declared first-time Zig user. The narrow, first-person claims (what he ran, what his tree looked like, what he switched to) are well supported; any generalisation about Zig's tooling maturity or about Rust-versus-Zig trade-offs is not.
build
2,513 tool calls, zero refactorings: what agents actually do when you ask them to refactor1 distinct publisher
build
The only way to prove a contract test can fail is to ship a server that lies1 distinct publisher
build
The failure modes of AI agents in low-level code have names, and names can be gated in CI1 distinct publisher
build
Waku 0.1.0 bets the product is the control plane, not another coding agent1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 16, 2026