Zig: A new direction for low-level programming?
Language design & ergonomics
- Strong disagreement over the article’s criticism of Zig’s syntax and verbosity. Several commenters like named struct initializers and see positional-only initialization (as in Odin) as bug-prone for general-purpose code.
- Others find the strictness and error messages confusing when coming from other languages.
- Zig’s mandatory handling of unused variables (errors instead of warnings) is a major pain point for some. They argue it hinders prototyping and learning; the
_ = x;workaround is seen as suppressing useful diagnostics later. - Defenders compare this strictness to safety regulations: annoying but ultimately protective. Detractors counter that this “helicopter mom” behavior belongs in tooling, not in the core language.
Allocators, side effects, and “no hidden control flow”
- Passing allocators explicitly everywhere feels cumbersome to some; they speculate about alternatives (dynamic variables, functional-style effect systems).
- Others point out that implicit behavior would violate Zig’s “no hidden control flow” ethos and is exactly what some users value in low-level contexts.
Build system, interop, and compilation model
build.zigis acknowledged as initially daunting, but defenders emphasize the long-term power once learned, especially for larger projects.- Some wish Zig were a C-like transpiler for easier incremental adoption in big C codebases; Zig’s need to know all sources (for error types, monomorphization, old async) is seen as a barrier.
- Others argue that exposing an idiomatic C interface by default or maintaining a C target would constrain Zig’s design; for them, the goal is to move away from C, not coexist indefinitely.
- There is detailed discussion of using
zig build-objdirectly and integrating into existing build systems; one camp finds this fine, another insists transpilation is easier to debug.
Tooling & ecosystem
- Complaints that Zig’s LSP is still weak compared to rust-analyzer.
- Positive experiences with Zig for cross-compilation, embedded builds, and as
zig cc/zig ldfrontends; cross-platform story is praised.
Safety, UB, and profiles
- Some think the article misunderstands ReleaseSafe and underplays its role; expectation that ReleaseSafe will (or should) be the dominant production profile.
- Broader debate about undefined behavior: some see UB as necessary for low-level optimization, others speculate about stronger guarantees with different type systems/OS support.
Zig among “C successors”
- Zig, Odin, Jai, D, Carbon, Rust are framed as “C replacement” attempts with mixed reception.
- One view: problems they solve aren’t painful enough to justify migration; C/C++ remain entrenched.
- Another view: even if adoption stays niche, languages like Zig are valuable research playgrounds whose ideas can migrate elsewhere.
Article tone and neutrality
- Multiple readers find the original article well-written but detect a bias or “team Odin vs team Zig” undertone.
- Some think its build-system and comptime critiques ignore benefits or rely too much on first impressions; others appreciate that it surfaces real chicken-and-egg and ergonomics issues.