I know very little about Jared but his article yesterday, which I read, seemed appreciative of Zig. I now learn he's donated significant chunks of money to them.
This entire article is publicly and personally attacking him for choosing a different product.
It's insane to me that Andrew thinks this post will somehow exonerate Zig when it really just makes them look childish. Or maybe he doesn't care, and just wants to attack Jarred?
My reflection comes after reading Jarred's post yesterday, which I found interesting, and then Andrew's today.
I just pasted this article into an LLM to understand the tone and the summary is:
> The overall tone is deeply personal, cathartic, biting, and polemical, with flashes of humor and a deliberate attempt to soften the ending.
Conventions are still being made, and I think this use might end up being acceptable.
I'm not snarking, this is a problem affecting 30% or more of the population here in the states, and it's getting worse because of tools like AI. I'm not judging you, I don't think you are bad or deficient people, but this externalsing of comprehension and trust is self-harm.
Worse, it will lead you astray in ways that you won't tie back to this core problem.
To use an LLM safely you must have the discernment to understand when it has fallen into sycophancy, folly, or madness.
The author’s tone in this piece can be described as brutally candid, deeply relieved, and unapologetically sarcastic.
very different from "The overall tone is deeply personal, cathartic, biting, and polemical, with flashes of humor and a deliberate attempt to soften the ending."I know nothing about the drama here other than what's in the blog post, but these feel more like unnecessarily public personal attacks which don't really reflect well:
- a stinky manager. Poor communication, unrealistic expectations, low empathy, no experience. Just a total shit show, from an employment perspective
- already writing slop well before he had access to LLMs
- their vague "sell some cloud something" business plan was a farce
was the cherry on top.
Sadly there are far too many open source developers out there who are far too comfortable writing like this. It’s one reason I have stopped being active in open source. You would be fired (or at least disciplined) from any reasonable workplace if you acted like this.
Is everyone a walking and talking brand now so that they have to always filter their words, walk on eggshells, hide behind corpo-speak so as to seem 'professional'?
More honest discourse is required in today's world, not less. It seems interactions online are becoming less and less authentic.
There’s a big gap between corpo speak and “stinky manager”. That’s nowhere close to professional writing. And he’s not giving us his personal opinion, Kelley is telling us the conclusion of the “grape vine” - he’s reporting on rumors and gossip, and agreeing with it.
Antirez made a post equivalent to: you'd be a fool not to use AI to increase test coverage.
Zig on the other hand has embarrassingly low test coverage given its adoption and time in development.
Their stance on AI is completely childish. They could benefit massively from it, yet refuse to even consider any potential usage.
It's one thing to try to stop PR spam. It's another thing to tie your hands behind your back and not even use it internally for the lowest hanging fruit where it could have major benefits.
They could use AI to triage potential real bugs from PR spam... but instead they just let real bugs go unnoticed for longer than need be because they won't even use AI to help triage...
From a PR perspective there’s a lot to gain in the short term by picking the “anti-AI” lane. And you can always change your mind later.
And? Why would low test coverage matter. It’s not an indication of project quality nor does a high coverage mean an absence of bugs or errors.
The article provides good background into how it got to this point - and it fits well with doing an opportunistic AI rewrite after being acquired by an AI provider.
The article seems to be happy about the switch to Rust, that point is re-iterated multiple times in the article, and seemingly they were both awaiting Bun moving away from Zig and wishing for it.
I just return to them the kindness they show me when they say, "You made this?? I made this!!"
But separately from that, I think it's a bit unfair to talk about the people associated with it in such a dismissive way.
In reality, humans aren't purely rational beings, and I can understand why the Zig philosophy and the Bun manager who joined the AI side might not have looked good from that perspective. But I think that's a separate issue from the emotions involved.
When he made it his job to sell that narrative, he declared war on me. It should not surprise him or anyone else that I am going to take the war right back to his doorstep.
What I understand rationally is the claim that AI is destroying your garden and community. It's an undeniable fact that intellectual property and the associated disruption are happening. That's simply true.
But what I find hard to agree with emotionally is that personal attacks aren't always justified just because of that. I've also been affected by AI. I had to create a new homepage because the traffic to my technical blog dropped due to AI. Of course, there are also benefits. As a non-native English speaker, it opened up a new path for me to access good programming resources, which I couldn't easily get before. So I have both affection and resentment.
Still, I understand your feelings. Because for you, the emotional anger of having something you built destroyed without any compensation is real. Our situations are different.
That said, I don't think that necessarily justifies attacking individuals.
People often think of blogs and homepages as places to write 'personal stories.' But once they're made public, they carry responsibility. And Andrew Kelly is a public figure—his words spread easily. So there needs to be a certain level of responsibility when writing.
In any case, I respect your perspective
You see how many times people can tell YOU that you are worthless garbage before you start thinking, "I'm going to punch back at the people who punch me." 20? 50? 100 times you get punched in the face before you start to consider self-defense? Cause I've read that piss-poor message 50 times: "you will be replaced."
Your skills and knowledge aren't your entire worth. I think you're a perfectly fine person. They just said cruel things that hurt you. Don't let that define you.
I actually think if people become mindless AI imitators, creative people like you will become even more competitive. Of course, I think you can still be creative even while using AI, but the kind of creativity we're talking about is just different.
Why bother fighting them? They're just people who are anxious themselves. I don't think you need to waste your energy defending yourself over such a pointless issue.
The claim that you're useless trash just because you don't use AI is wrong. AI is just one kind of workflow. You and they just didn't click.
As for people calling me useless trash, well, I hear that all the time. It's part of the freelancer life. But even so, that's just their opinion. I don't think of myself that way.
It's just that our environment makes things painfully difficult for us, my friend.
I'm sorry you had to go through those cruel messages. But I don't think they define you. You're a perfectly capable person, capable of intelligent conversation. You just chose not to adopt one particular workflow. That's not your problem.
If we keep talking, we might just end up hurting each other's feelings, so let's stop here and take a deep breath. Have a good day
I don't get mad at people for standing up for their morals, I get mad when they have none. AI is an a-moral tech, and Bun is using it in an a-moral way: for team Bun the ends justify any means.
I'm on team Zig!
> The grapevine was large and healthy and full of juicy grapes, and all those grapes contained the juice of the same message: Jarred was a stinky manager.
> Jarred was already writing slop well before he had access to LLMs.
This isn’t about wanting “sanitized corpo-speak” or something, but I do expect leads of projects to behave like adults and not build arguments on ad-hominem attacks and rumors they supposedly heard.
Address the topic and put forth some arguments. I don’t care to hear your personal beef with someone aired publicly.
I'm not sure that's his aim here. I imagine he has been asked dozens of times what he thinks about the switch, what it means for Zig, etc. etc. and wanted to just address it one time, which is understandable.
The tone is... strong. I think repeating grapevine rumours about Jarred's management skills adds very little and probably could have been removed. But at its heart I see this post as example of a common clash: open source code hackers vs Silicon Valley "growth hackers".
Kelley is disappointed that a promising Zig project took VC money and went from his passion project's prime example to one that shit talked it on the way out. I get why he's emotional. I wouldn't have written it the way he did but I also don't think policing tone is beneficial for honest communication.
I also don't think Andrew can claim at the end "I actually don't have any personal criticisms of Jarred" when the post includes the sentence "Jarred was already writing slop well before he had access to LLMs".
So, yes, I find that line laughably disingenuous.
Well, TFA has a conveniently titled section "Addressing the Blog Post", that raised (setting aside speculation) some good points:
The [Bun rewrite] blog post is ... almost like the marketing department of a trillion dollar company has a lot of money riding on this article ...
There's a dichotomy being presented here where you have to either choose a "style guide" or a programming language feature in order to avoid bugs. The sleight of hand misdirects the reader away from the main way bugs are eliminated: by dedicating engineering resources to it ...
[TigerBeetle] put in the time to find and eliminate the bugs, they make an effort to maintain a healthy relationship with ZSF, and Bun did not do that.
The argument for shipping all the million lines of unreviewed code is that the test suite is good enough to catch everything. Then why are you saying you have so many annoying bugs in the Zig code? What happened to the test suite being sufficient to catch everything ...
Performance increase is attributed to LTO, which Zig has supported for all of Bun's existence. It used to be enabled by default until we ran into too many LLVM bugs, all of which also affect Rust ...
The post claims they were fuzzing their Zig code, while during our calls the whole Bun team told us that they were not fuzzing anything. This appears to be an outright fabrication.
The blog post outlines a bunch of engineering work done to reduce binary size, to better make the case that "Bun is better in Rust" ... you were doing the engineering work that you should have done in the Zig codebase since the beginning ...
I noticed that you neglected to mention compilation speed. Zig compiler project is about 600,000 lines of code - roughly the same size as Bun before the rewrite, and I'm clocking 16s to build from scratch with a clean cache, followed by 90ms for each subsequent edit with incremental compilation enabled. What are the corresponding measurements of Bun post-rewrite?That’s quite a statement to make at the end of a post that seems to contain little else…all just thinly veiled.
Saying someone has „beginner energy“ but reframing it as a faux positive (this person fails and thus learns)
Or saying the grapevine says someone is a „stinky manager“? Basically I’m not saying this person is bad it’s just that I need to bring up on this blog that everyone agrees this person is bad.
All seems to be in very poor taste even if true…
> The grapevine was large and healthy and full of juicy grapes, and all those grapes contained the juice of the same message: Jarred was a stinky manager.
> Jarred was already writing slop well before he had access to LLMs.
This is a weirdly childish post. I enjoy a good post where someone speaks their mind without running it through the corporate speak filter first, but it also gives you insights into how a person thinks and operates. With good leadership you can strip away the corporate filter and the result is still professional, but this article reveals something much less than professional
Seen this time and time again, project/organization gets taken over, and everything "good" they did doesn't get exited with fanfare or anything, just silently dropped as your benefactor starts silently ignoring you.
I'm really happy they saw the writing on the all and were prepared for the inevitable, a really great lesson you shouldn't need to learn yourself the hard way, and FOSS project relying on one/two big donators should take heed, we'll see a lot more of this in the developer tooling ecosystem moving forward for sure.
Like if someone calls you a bad programmer and doesn't hire you as a programmer, isn't ad hominem
This is like the textbook definition of an ad hominem.
But he is. Both in the title, and in later half of the blog post, he directly enters that discussion. I'm not saying an ad hominem argument is always bad, but this clearly is one.
This is not refreshing, I usually expect better from Kelley. The best move would have been to say nothing at all except “best of luck, Zig will miss him but”. Now all Ziglings must wonder if they’re going to receive a hit piece from the Zig founder if they cross him.
As an outside observer who knew little about Zig and Bun, the impression I got is that the rewrite came out of nowhere, and that the Zig community was surprised by it. The post makes it quite clear that this wasn't the case, and describes how the actions and overall mentality of Bun's creator already suggested such a thing was likely to happen, straight from the mouth of someone who worked with him and isn't afraid to voice his thoughts. Not everything needs to be PR speak.
But this killed my hopes for Zig.
The drama is fun, and Andrew is maybe even admirable in his earnest, but this just isn't the kind of professionalism needed for a serious project. I know that's boring and uninspired, but that's what I want my tech stack and it's management to be.
Also, maybe Jarred was a net negative, but bun was also a really big project using Zig, and the project leaving isn't as good for Zig as Andrew is making it seem. It genuinely seems he's putting a lot of priority on purity and ideology over just growth of the language. And I am sorry, but adoption and reaching critical mass is an important part of a serious programming language.
[0] esp. nilirl.
I don't immediately see how much the seriousness of the project is related to the language the author chose in their personal blog post. It's similar to saying that Linux could not have become a serious project because of the way Linus communicated in his emails.
I actually think this gets to, but steps over, the core objection: traditional "hacker" mindset vs VC "growth hacking" mindset.
> And I am sorry, but adoption and reaching critical mass is an important part of a serious programming language.
Why? Why can't he create a language with exactly the kind of purity and ideology he wants, broader adoption be damned? Why must everything optimize for user growth and mindshare?
In this case, Bun was acquired by Anthropic. Leaving Zig is not necessarily out of merit. As much as they pretend it was.
"Jarred, in his professional capacity, drove away many from our community, and we'd prefer to disassociate." is not 'Jarred is a bad person, privately'.
Now, in these circles, that might as well be the same thing, given how little personal life I imagine most VCs have left outside of work. But that's not really Andrew's problem.
I won't defend Andrew's style; I think he could mask some his neurodivergence more when communicating to a wider neurotypical audience. But it's his project, his community is certainly aware, and this too, is a known quantity.
It might help you though, to reread the piece with the assumption that Andrew is being completely sincere, without adding in a secondary subtext like, "Andrew is trying to assassinate Jarred's character".
For example, given the number of claims made here there’s very little actual evidence and support. Kelley says Jared is a bad manager and credits rumors. He says he writes slop code and doesn’t provide a single example or prove that statement. If this were his “neurodivergence” coming through I’d expect more thorough argument and less “stinky manager” grade school insults.
"Was silence not an option?"
Would have been a great opportunity to outline the benefits of Zig! I've been keen to pick Zig up recently due to mitchellh's evangelism and inspiring writing on the subject.
This article puts me off learning Zig.
Seems you're not alone in feeling this, mind quoting the exact and verbatim parts that seem like "speculative ad hominem"? I see there are quite a bits about how Andrew sees Jarred and his workflow/work mentality, but I'm not sure I see clearly what is supposed to be the ad hominem, speculative or not.
> he was essentially groomed from a young age
> It's one thing to choose a poor work-life balance for oneself; a different thing entirely to demand it of others
> Jarred was a stinky manager
Eh, Google and ChatGPT both exist?
The whole post felt like a personal criticism of Jarred.
If I criticize your code, that is a professional criticism.
If I criticize your code and say it reflects your consistent carelessness and stupidity, it is also personal.
If I say you fabricated something, then that is a personal criticism, it alleges an ethical violation. In a professional context, it's also a professional criticism (every profession has some ethical standards).
Not knowing whether you actually gave the advice you're blaming them for not taking isn't professional, it instead comes across as bitter.
What made you get that takeaway from the article? I didn't get that feeling at all, mainly seems to be something like "Jarred does some good and some bad, personally I don't agree, still wish him well", but clearly some specific part in the article must have given you this impression, if so what part?
And the fact that immediately after no "personal criticism" he proceeds to call his behavior "fantasy fever dream." Sometimes presentation matters as much as factuality.
The lack of sources and citation for a pretty one-sided claim doesn't help either.
> having graduated from the Thiel Fellowship school of thought rather than university, he was essentially groomed from a young age into uncritically embracing the Silicon Valley mindset,
> this "beginner energy" started to hit differently for me. It's one thing to choose a poor work-life balance for oneself; a different thing entirely to demand it of others
> Poor communication, unrealistic expectations, low empathy, no experience
> gets to live out his productivity fantasy fever dream, he's probably already super wealthy. He has minor tech celebrity status.
Frankly, I have trouble seeing how a neutral reader doesn’t see this as a clear personal attack. That the article ends with “I actually don't have any personal criticisms of Jarred” is almost comical given the preceding paragraphs.
> gets to live out his productivity fantasy fever dream, he's probably already super wealthy. He has minor tech celebrity status.
in the following paragraph.
Personal attack: this person writes sloppy code, and is bad for it.
The latter is much closer to what Kelley did.
I don't see anything business related in that statement.
What's this new level of gaslighting? "It was not because of me, but because of the business situation I was in". Wait... wasn't he in that "business situation" because of actions HE took?
- [0] https://ziggit.dev/t/bun-s-zig-fork-got-4x-faster-compilatio...
I've experienced both in my career and I fall solidly on the planful side. It's why stopped using homebrew and I've avoided huggingface packages as much as possible.
For the latter: https://youtu.be/iqddnwKF8HQ?si=cvU8Fh3ah7ZCxg3M
From 26:38
I can imagine Anthropic wanting to acquire Bun without the gimmicks.
I haven't reviewed this code, but the percentages described don't sound like they'd need a huge architectural overhaul to use much less unsafe, it might take more actual human effort than they want though.
And because unsafe is generally highly local or localizable reasoning (conventionally backed by safety justifications) it really is quite reasonable to go plugging at it, or task an AI within that.
Whether that's "okay" is a totally separate issue. I have no idea what the history here is, or whether this is warranted. But that was absolutely a personal criticism!
> The sleight of hand misdirects the reader away from the main way bugs are eliminated: by dedicating engineering resources to it.
Perhaps the amount of bugs comes from using a C-like language that requires meticulous manual care to avoid writing runtime bugs.
Even C++ would be a safer choice because of RAII.
When you have to dedicate significant resources to avoid/fix runtime issues that are made impossible at compile time by other languages, the programmer isn't entirely at fault.
At the time of writing, about 4% of Bun's Rust code sits inside an unsafe block (~13,000 unsafe keywords across ~27,000 lines / ~780,000 lines), and 78% of those blocks are a single line — a pointer that came from C++, or one call into a C library.If you took a program written in Zig, Go, C++, or C, you would have no idea which parts of the code were potentially unsafe. In those languages, the entire program is one big unsafe{} block.
Rust isolates unsafe code. Having them explicitly tagged means they're isolated and can be eradicated over time, if need be. Though in many cases, unsafe blocks are quite safe.
Don't those blocks need some additional lines for error checking to prevent the unsafety from spreading to the safe code?
Suppose there's a C library libape which implements monkeys you need in your software. There's a C API where we pass a pointer to a valid monkey and a 32-bit unsigned integer which controls how delicious bananas are. Any 32-bit unsigned integer is valid here, except zero because monkeys always think bananas are at least somewhat delicious, and there's no return value.
Our Rust wrapper probably has Monkey as a type, wrapping one of those valid monkey pointers we mentioned, and so our wrapper for that API call is some unsafe code which just calls the C with this monkey pointer and a non-zero unsigned 32-bit integer which in Rust is just the type NonZeroU32 and we're done. That's a single line, the unsafety checking was all done in Rust's type system, every Monkey has a valid monkey pointer, every NonZeroU32 is (as its name suggests) a non-zero unsigned 32-bit integer.
Now on the other hand, maybe we're wrapping code which takes a char * pointer intended to point at some zero terminated ISO-8859-1 encoded text. That Rust wrapper would be responsible for this translation and maybe you do that work in the wrapper function. But, if you had sixty calls like that, probably you make a Rust type for this problem named like Iso8859dash1Text and then those unsafe calls don't have a lot of boilerplate because all that boilerplate (which is probably even safe Rust depending on how exactly you do it) lives in this Iso8859dash1Text type you made. And that's also a useful model if later you discover the C library lied and it's not ISO-8859-1 it's really Windows Codepage 1252 ...
Static linting in Rust via clippy also makes it pretty straightforward to begin enforcing things like "unsafe blocks need to have safety doc comments" as a CI warning or failure, and there are community tools that focus on this topic too.
I can't stand the practice of "LLM porting" personally but if you're going to do a mechanical rewrite from something else into Rust, this (permit unsafe and unidiomatic but 1:1 translation at first) is a fairly reasonable strategy imo.
They actually remove certain classes completely. E.g. lifetime ownership in Rust removes all bugs related to the reason why it is in the code syntax (a.k.a. lifetime markers remove use-after-free completely in Rust.)
When Jarred joined the Zig community about 5 years ago, I described him as someone who had strong "beginner energy".
I wouldn't call it beginner energy, though I understand it might seem like that. Rather, it's an approach to development and no amount of time changes it.Anyway, let's try to discuss something more technical: I predict Zig will lose steam, and in 2027, will lose relevance:
1) It's hardcore Anti-AI 2) It's moved to Codeberg 3) It doesn't have the momentum to sustain the disadvantages of these two decisions
The project will in max 2 years make a blog post, not admitting to their mistakes, telling themselves that Zig is a success, despite the industry having moved on.
It kind of reminds me of Elm in a way. Though I'm not expecting 6 years of drought just yet.
If one can easily swap in the next new js engine du jour…
You have defined success (for a project, and possibly a person too) as solely 'relevance'.
Jarred would agree with you wholeheartedly, I imagine. Andrew would ask you to leave.
It's okay to have different values and part ways.
It's not wise, however, to project your personal values onto other people, and judge them on those fabricated merits. You'll end up frustrated and confused more often than not.
Judge their choice of values. Judge them on their alignment with their chosen values.
As an example, Andrew doesn't like Jarred's chosen 'Silicon Valley' values, but thinks that Jarred aligns himself well with those values. This feels as a personal attack to you who also holds those values. And on some level, a person intimating you core values suck couldn't be more personal.
What are your hopes and predictions for the Zig project?
So for some workflows it looked like a flat improvement on all parts.
I'm rooting for Zig either way, even though I have nothing against Rust and I don't directly use bun.
the tech industry's fake politeness has caused pain and confusion.
& yeah - I had already stayed off Bun before the whole rewrite, but now more reasons.
This post is his personal blog, he is a human writing what he thinks.
If this was a tweet people would be fine with it, but it is a blog so he should make it corporate-y
Actually, some folks do care about how the leader and public face of a project conduct themselves regardless of venue. If a different public figure ie some CEO wrote something reprehensible about some particular ethnic group, is it more excusable or forgivable if they did it on their personal social media account rather than the company blog? Same basic thing.
Public writing in a personal space is still public writing. Being held accountable for publicly stated views is an inherent part of sharing them in public, no?
The other (very salient) points notwithstanding, I'm afraid this quote shows that Zig hasn't learned a lesson that other languages of its generation (and older) have: if a project's memory safety depends only on "responsible engineering practices", then that project most likely won't be memory safe. Quoting the "swiss cheese" model used in risk management: one slice of cheese (engineering practices) just isn't enough if you want to be reasonably sure your program is memory safe.
In my safety background (recently aerospace, ARP4754/4761), removing and avoiding the hazard are essentially equivalent, with reducing the likelihood and mitigating its effects acceptable if you can't remove or avoid the hazard, and procedure is also the least preferred mechanism.
Its a breath of fresh air to get this whole debate out in the open
It is challenging for me to imagine how one would think an article like this is net beneficial for the community rather than reacting with grace.
yeah, Mitchell is very pro-AI, but he is thoughtful, and he sometimes highlights the difference between Zig's and Ghostty's approaches to LLMs (outright ban vs taming)
OSS projects can survive not being on GitHub, Python was something like 20 years was not on gh. If the service has severe outages and there are alternatives why wouldn’t you move? Most people aren’t contributing to the runtime anyways, they are just using the language.
I'm pretty sure the version I tested was the Zig one (have they made a stable release of the Rust rewrite yet?). So I can definitely see how Bun's move-fast-and-break-things philosophy would have been a poor fit for the Zig community, even prior to the Rust rewrite.
[1] https://carter.sande.duodecima.technology/inline-script-pitf...
i admire a few things in zig community, the focus on human relationship with learning and discovery and the focus on performance and building a meaningful relationship with members of community, I wish all the best to the zig and its community, although i have heard a few years ago that andrew was making apologies for not having enough diversity (race and skin colour wise) which i guess was a very dumb statement, but hey we all make dumb statements!
I really admire his stance on AI and agentic code contribution and the joy that they find in crafting good tools.
I was unimpressed with the engineering from the blog, and I'm not surprised to read andrew say they claimed no fuzz testing. I know someone who interviewed at bun when it was less than 10 people (around 5 he said). Allegedly jared lowballed the fk out of my friend, claimed they had no money because they're a startup, then proceeded to offer <1% equity
> Bun started as a line-for-line port of esbuild's JavaScript & TypeScript transpiler from Go to Zig
Then proceeded to talk about use after free bugs, leaks, and other things that wouldn't exist in GC written programs. Ironically, my friend jared lowballed is an expert in C, runtimes and threading
Interesting I wonder if its something Jarred did locally or something else that was just not widely done by the whole team? I dont like to make bad assumptions about devs or dev teams without first asking. I owe credit to HN for one of the guidelines which states something like do not assume intentional malice in comments, I feel like we assume the worst in general about other devs, but people are imperfect and make mistakes.
That said as others noted this post could have been written a bit differently while still pointing out genuine issues. The ad hominem attacks are a bit unnecessary and add nothing of value to what could have been a better response.
Say what you will about Matz or José Valim, I don't think they'd ever write a "and don't let the door hit you on the way out" screed full of personal attacks ("stinky manager", "writing slop", "a total shit show") against a person who led a very prominent project and financially supported the language.
This blog post is mostly made up of pettiness and is not an isolated incident - he is often pretty "spicy" or downright hostile in comments sections when making an appearance.
I was on a platform team and I had a constant backlog of bugs (introduced by others) that I was working on and the two most impactful things for preventing bugs were Typescript and Cypress (playwright-like testing before playwright).
I've dealt with many shitty code bases and the only way that worked for removing bugs was automation. It didn't matter how many bodies you threw at the problem.
> Then why are you saying you have so many annoying bugs in the Zig code? What happened to the test suite being sufficient to catch everything?
You can't use tests for trying to catch use after frees and other memory bugs for the same reason you can't use unit tests as a replacement for type checking, the combinatorial explosion of possible inputs into functions makes unit testing types across an entire project impossible.
Anyway, Jared donated $60k a year to this project and tried to resolve this in the most diplomatic way possible and still got personally attacked. The lesson from this article is don't donate to the Zig project because if you migrate away from it they will try to ruin your reputation.
edit: changed month to year
$60k per year, which amounts to $5k per month. Still, nothing to be sneered at.
Personally, I prefer zig over most other languages. I find "memory-safety" is bought at the price of code that is not straightforward to reason about and requiring a steep learning curve. The reader's working memory is filled up quickly with language constructs and crutches rather than with the actual logic of the code at hand. I have used C++ for a large part of my professional career and eventually got so annoyed by always having to cross-reference multiple files to check which behavior might be used by which constructor and things like that. I have written a big and critical system in pure C once, just to try, and while I would not do it again, diligence and testing resulted in virtually zero runtime failures across its lifespan - while it was always possible to quickly reason about all the logic that tied low-level hardware access and near-realtime requirements together in a way much more visible than hidden behind layers of "safe" abstraction. Zig is, for me, the sweet spot: It solves the terrible issues that plain C has, and adds a lot of convenience on top that does not obscure the logic, while encouraging but not enforcing safe patterns.
You can either do local optimization - a single individual moving as fast and as hard as humanly possible, or global optimization - a team working together and amplifying each other's efforts to produce something that is greater than the sum of its parts.
The pushback is warranted and on point, especially the technical points. It has taken a suspicious amount of time to produce the fabled blog post which I don't think states almost any new information beyond what Jarred has already shared on twitter. The one (and very interesting) exception is the theoretical price of the rewrite via the API pricing.
Maybe I'm wrong, but it strongly feels this way. I'm not saying that Andrew is right or wrong, it's just that you could throw out most of the first half of the post and not lose anything actually on topic.
> But having graduated from the Thiel Fellowship school of thought rather than university, he was essentially groomed from a young age into uncritically embracing the Silicon Valley mindset, and he took venture capital.
> Jarred was a stinky manager. Poor communication, unrealistic expectations, low empathy, no experience. Just a total shit show, from an employment perspective.
> Jarred was already writing slop well before he had access to LLMs
We must not let the shareholder value fall /s
As a side note, never trust someone saying they use fuzz testing just because they say so. Odds are they don’t even understand what fuzz testing is.
And it was glaringly obvious they don’t know how to program in this context from their complaints around memory safety. The issue should never that the code randomly segfaults, it should only be it maybe exploitable in an adversarial scenario.
For all comments that will write something like “I can’t believe how rude this is”:
No one really care about this, there are real problems in life, please get a grip, you are just being annoying
The points seem valid, however, and I will likely steer clear of Bun.
The fact is, most people don’t have taste and haven’t had taste, LLMs just amplify what was already there. Good taste is good taste, slop is slop, and shit is shit.
Glad you guys were able to go your separate ways.
That sounds completely surreal. Is Bun really used that much?
Note that usage and public interest are not the same quantity, people also care about the potential of a project.
Why don't YOU spend the engineering resources to add RAII and a borrow checker instead of blaming your users?
It doesn't look done.
And it looks like work on the rewrite began in early may: https://github.com/oven-sh/bun/commit/46d3bc29f270fa881dd573...
So... its more like a 2 month rewrite that is definitely not done yet????
> Bun v1.3.14 was the last version of Bun written in Zig. Bun v1.4.0 will be the first version of Bun written in Rust. It's available in canary now.
It's also been shipping with Claude Code since June 17th.
Ufff, the creator of zig saying that the biggest zig project is slop was definitly not on my bingo card.
Its sad to see that on of the biggest projects was more or less badly written zig code. On that note, I wonder which big project have good zig code?
I'd like to know what the poor code quality in Bun looks like. Does anybody have concrete examples?
Are you implying that this reads as all those bad things because Andrew is supposedly autistic? And that if he were to not supposedly have autism, this post wouldn't have read as all those bad things? This reads as an incredibly ableist post authored by someone who thinks autism is an insurmountably negative thing and that someone with "sufficient" autism shouldn't run a project. As if autism is a percentage where once you get past 33% you immediately become incompetent. Be better.
1.It felt uncomfortable that Bun was presented as a representative example of Zig. From the internal Zig perspective, it looked more like a bad example of how to use Zig.
2.It felt uncomfortable that they spoke as if Rust prevents things that could actually be handled by Zig's style guide.
3.I(OP,andrewkelly) don't think badly of Jarred as a person, but after signing a contract with VC, the management side has been poor.
4.The Bun documentation looked like marketing.
5.Bad contributions driven by AI came through indirect promotion of Bun, which attracted interest from people after it was acquired by Antropic.
I understand that it's burdensome to see Bun as Zig's representative success story, and I get the wish not to see Rust rewrites through a lens of language superiority. But on the flip side, I'm not sure I would have ever learned about Zig if not for Bun.
While the criticism is valid, I also understand Bun's position. After all, Antropic's acquisition of Bun was ultimately about showing that even a 'new language' can be used effectively with AI, and that's precisely where the friction arose.
I think the refusal to accept AI from a purely human programmer perspective is a matter of personal values, and I find the Zig team admirable on a human level. (Though I'm an active proponent of AI, so my view differs.)
Both sides have valid points, but sometimes I wish someone would turn the emotional and political dynamics of open source into a novel. I think it would be fascinating
"Handled by Zig's style guide" ends up as "Don't make mistakes" which is entirely useless advice. C++ spent years trying to make out that this constitutes useful guidance before gradually accepting that people aren't in fact going to stop making mistakes, you need to provide a better language and tools.
The man may need some time to decompress, away from social media.
For example this section
> We've been trying to warn you about your comptime abuse for years.
You could replace comptime with templates in C++ and it would be the same story. People will abuse features you put in the language. Is C++ a good language that people are just using wrong? According to Bjarne Stroustrup yes, and the C++ core guidelines fixes those issues, but a lot of people seem to disagree. Don't believe me here is an interview where he talks about memory safety in C++? ^1
> Ryan: One thing that I think C++ is uh infamous for is kind of like memory safety issues or kind of foot guns that exist there.
> Bjarne: I'm so tired of that. Um I haven't had those problems for years. Um, and somebody did a a study of the obvious problems with buffer overflows and um people hacking in using that kind of stuff and uh almost all of the uh these cases when people writing C style code or in C and uh Herb Server has a a talk with with actual numbers and they they are quite significant. It's it's sort of that kind of problems more than 90% are for people that don't write modern C++. They they use raw pointers to pass things around without um the number of elements. No fat pointers, no spans. um you you have them in C++. You can use them. You can use uh vectors. We have hardened libraries. Everybody has hardened libraries that that does the runtime checking. Uh Apple has it. Google has it. Microsoft has it. It's just not standard till now. C++ 26 has a hardened option that are standard. uh and the work I'm doing on profiles will give you a way of guaranteeing that you don't do the stupid things. Um so anyway, uh fundamentally theoretically the problem was solved many years ago and people just do what they've always done and get the problems they've always had. And uh that makes me sad and uh it's one of the things that makes me work on uh coding guidelines and on enforced profiles and on education. I mean education is one way to solve the problem. Is there a way to get the compiler to just prevent people from doing all those risky things? And is that enabled by default in modern C++ today? No, but it should be. I'm proposing that for C++ 29. Uh the simpler versions of that should have been in in in uh C++ 26, but there are still a lot of people even in the C++ standards committee that are very devoted to uh their old code and their old ways of doing things. Um there's people who says you should only standardize what is common in industry. But when the bugs are common in industry, you should do something else.
Is this going to be Zig's answers to real issues that people have in the real world? I'd argue that's not good enough for a modern systems programming language.
> We became increasingly horrified at the programming practices we saw in Bun's codebase. Hacks on top of hacks. Abuse of assertions. Most of all, recklessly speeding past feature after feature with very little time taken for reflection and elimination of bugs and technical debt.
The vast majority of software is written by businesses, who have to cater to the lowest common denominator in their code base, including slop programmers, pre or post llm. They are not incentivized to go slower. We will never see a mass adoption of Tiger Style programming (though I would be happy to be proven wrong). That is the reality of what we need programming languages to help with in 2026. I've never met a professional programmer that has not seen or said the same thing about a code base that they've worked on.
New programming languages need to contend with that reality if they want to be adopted en masse. If not they are doomed to not be adopted (which is okay I've created many programming languages that are just for me). But if a programming language in never adopted then the supposed benefits or improvements of the language never trickle down to us the users of the software, so they just remain interesting ideas (which again is okay).
> This attention could have been harnessed in a few different ways. For example, he could have easily achieved a solid living via crowdfunding, even for San Francisco standards.
Andrew kelley runs a tight ship, and his foundation does not need a lot of money to keep going, but he has talked about how working on all the organizational transparency is not his favorite part of the project, and I can see why a lot of young programmers wouldn’t want to go that way.
Now let me be clear I actually like Zig, and have promoted it on Hacker News before, and written some code myself. I actual uses Zigcc in one of my projects because it makes my life easier. I genuinely love the tooling of Zig, and I feel like the language respects my time. I want the language to succeed
I also think that Andrew Kelley is a principled man with good engineering sense, and has turned down opportunities that would have made him a lot more money, were he to violate his own principles. That is admirable, and he has demonstrated it on so many occasions that it is currently not a question to me. What I would like to see, and what Andrew has said Zig focuses is how Zig can improve program correctness even more, without requiring me, or my coworkers to be a 10x programmer
Either this ideology helps Zig position itself as a hand crafted language. Or this ideology is self defeating.
> The blog post is expertly written. It's almost like the marketing department of a trillion dollar company has a lot of money riding on this article.
Even Andrew knew that this was going to be Anthropic's marketing opportunity for AI to rewrite Bun from Zig into Rust. This post from Jarred says it all. [0] If you have access to hundreds of billions worth of resources (infinite tokens and compute), they don't care what others think and some relationships are just cheap to discard.
Like I said before in [1] and [2], Bun (now Anthropic) does not care about you. They did this to market the capabilities of their AI models and this rewrite was an example of that in broad daylight. Even if Zig allowed AI generated contributions, this move was going to happen anyway.
I cannot believe that many commenters in [0] at the time did not see that this rewrite was eventually going to happen.
[0] https://news.ycombinator.com/item?id=48019226