To me it's just highlighting the reality -- Anthropic fired the first shots. I think it's reasonable for people to say, hey, if you're going to trash the reputation of Zig (in a pretend-objective way) then it's entirely fair for people to put in important context that Bun was not written well.
They're suggesting that the bugs are endemic to using Zig and couldn't be prevented by a modified coding style. Then they point out that the well known way to avoid the issue (defer) is "not ergonomic" (really one extra line is that bad?) It seems like a lot of misinformation couched in a reasonable sounding tone, which is par for the course for how these labs operate.
I don’t think the basic idea that Zig is less safe than a language like Rust (and therefore has different classes of “endemic” bugs) is controversial among Zig programmers.
The points they make around explicit defers are a lot more subtle than it being too many lines. Quoting:
> For Zig code, when exactly should we be running the cleanup code? If we're passing the same *T to many different functions, how do we know when it's no longer accessible and can be cleaned up? How does it work when some functions need to continue to reference the memory after the function is called?
I've seen plenty of projects in C with way more complexity and far fewer issues than Bun, and C is definitely less safe than Zig. Memory management strategies are not new things! Professional developers learn to use their tools effectively. After reading the article and the connected context I just get the sense that this is a poorly developed codebase. A bad carpenter blames his tools and all that. I agree with the article that this seems to be about culture. A vibe coded port that explicitly uses unsafe in Rust is not going to be any safer.
I mean look, I'm sorry, but at this point I cannot take the Bun project seriously. If people are bragging about not-bothering-to-read-the-code and practicing atrocious engineering with LLMs, and then they're like "it's the language's fault!". Yeah, no, I don't buy it. Plenty of people can write applications in languages without automatic memory management without endemic use-after-free issues. As vibe coders like to say: skill issue.
I don’t have an opinion about whether Bun is poorly coded or not. I also don’t have an opinions on it being a good project or not.
I do find these kinds of “get good” arguments tiresome, though. Our job as responsible engineers is to develop strong and safe abstractions for the next group of engineers to use. Rust is one such abstraction.