<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: endospore</title><link>https://news.ycombinator.com/user?id=endospore</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 27 Jul 2026 21:38:23 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=endospore" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>> In the rewrite blog post<p>They can't mention what they don't know. And that's the exact reason I'm against this: doing a port without being able to tell what is correct is asking for a disaster, obviously.<p>I've checked their posts and blogs for a few times, and I'm quite sure they don't know any of these to write about them.<p>> the 1.4 version has not been released yet<p>Let's hope the repeated delays (it was scheduled for last week) are not for quality issues, otherwise I'll only be half correct. It appears that all the MIRI errors are not stopping them though. (They have a script to run it but most probably it just fails and they don't care. Personally I'm not executing any of bun's code to avoid summoning nasal demons, so I actually don't know for sure)<p>> get rid of the unsafe block<p>Would be possible if they are not disregarding everything else going for numbers. E.g. they are actively increasing the unsafe surface by rewriting some code in SIMD <i>C++</i> (<a href="https://github.com/oven-sh/bun/pull/33032" rel="nofollow">https://github.com/oven-sh/bun/pull/33032</a>). As if no Rust solutions already exist.<p>> Still easier than the Zig version<p>Well, this is true but only realizable if they know how to deal with the new problems emerging during the process. My current conclusion is that they don't.<p>> ideological<p>For me it's methodological as explained above.</p>
]]></description><pubDate>Mon, 20 Jul 2026 14:32:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48979426</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48979426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48979426</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>Aw I feel quite sorry for using the word "demonstrable" while not intending to demonstrate anything, in order to avoid any contributions to the project. I apologize for that.<p>That being said I've found a case that doesn't do much harm even if it's fixed, and is technically not my contribution. You may take a look at that:<p><a href="https://github.com/oven-sh/bun/pull/30794" rel="nofollow">https://github.com/oven-sh/bun/pull/30794</a></p>
]]></description><pubDate>Mon, 20 Jul 2026 10:13:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48976700</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48976700</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48976700</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p><a href="https://github.com/oven-sh/bun/issues/30719#issuecomment-4465692950" rel="nofollow">https://github.com/oven-sh/bun/issues/30719#issuecomment-446...</a><p>Personally I chose not to disclose my findings in public to avoid this kind of outcome. Having a good laugh with others is not as important as keeping the result of this experiment undisturbed.<p>This also eliminates the chance of another round of marketing of LLM ability based on actual human contributions and I suggest everyone who is able to analyze the code to do the same - so that they cannot misattribute our ability to LLMs.</p>
]]></description><pubDate>Mon, 20 Jul 2026 10:02:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48976590</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48976590</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48976590</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>Sorry, I did. And I did an internal sharing with respect to the blog post, on topics of how to (and not to) do software migration, how (not) to deal with unknown unknowns etc. We have several ongoing software (automated) migration projects so I did rather extensive research around it.<p>I do regret that I've also read the code though, otherwise I'd probably live a little happier with ignorance right now. Sadly as they <i>don't know they don't know about</i> the issues, there's no indication of those in the two public materials they have released.</p>
]]></description><pubDate>Mon, 20 Jul 2026 07:39:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48975433</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48975433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48975433</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>> nobody has really pointed to a single actual issue<p>I personally know 3 categories of newly introduced issues spanning the code base with 200+ occurrences, that leads to undefined behavior and memory issues. Not doing any contributions to the code is my conscious decision, which includes not pointing to the specific problems in public.<p>It's nice to hear that people are doing the same.</p>
]]></description><pubDate>Sun, 19 Jul 2026 23:58:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=48972860</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48972860</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48972860</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>> Good engineers can work in any language<p>Given that they are investing their <i>time</i> into actually learning the language before diving into this mess. No, unsafe Rust isn't supposed to be something you can handle without prior knowledge.<p>Jarred was even asking in public how to <i>use traits without runtime overhead</i> during the rewrite. And the blog post phrased it like a normal problem to encounter while doing a million lines port... That's two months after the initial rewrite so you can guess if they learned.</p>
]]></description><pubDate>Sun, 19 Jul 2026 23:51:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48972807</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48972807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48972807</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>That's a stated goal, so nope. But releasing it before any cleanups is another story.<p>I'd also like to inform you that<p>- the current success metrics solely consist of their advertisement, my eyes looking at the code strongly suggest otherwise<p>- the Bun team lacks knowledge to actually make it more idiomatic: none of the Bun team has written any Rust and relying on model knowledge is already proven insufficient.<p>The release decision itself is presumably driven by that tbh. It's only LGTM from there when nobody knows how to review unsafe Rust.</p>
]]></description><pubDate>Sun, 19 Jul 2026 17:55:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48970239</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48970239</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48970239</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>My conclusion was formed in my two months long tracking of the repo activities. They have done absolutely nothing in that front. (Well, to be precise they tried to fix exactly one thing that was pointed out but that's it)<p>> must interface with C code that has no safe interface<p>Yeah so the sane first step is to create encapsulated, safe interface for them, especially in a project like this. Deno for instance have ~0.2x as many unsafes.<p>And mind you if you haven't read the code, the vast majority of unsafe blocks in bun are for raw pointer access to local (Rust) objects because their ownership was a mess both before and after the rewrite. Also funnily enough a lot of the access patterns are wrong (in the Rust sense), leading to hundreds of new undefined behaviors.<p>> be honest and reasonable<p>Well, well. Talking about dishonest and unreasonable behavior, why is bun releasing a new version before solving any of those glaring issues? I'd remind you the current new version is <i>not</i> an improvement compared to the previous one, both in terms of correctness and maintainability.</p>
]]></description><pubDate>Sun, 19 Jul 2026 15:40:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48969125</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48969125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48969125</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>The Zig one uses raw pointers. These are bad and get out of hand quickly but at least don't have constraints like "you must never have two &mut on the same value". You may refer to c2rust to see how "semantics preserving transformation" without new UBs looks like.</p>
]]></description><pubDate>Sun, 19 Jul 2026 15:30:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48969043</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48969043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48969043</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>Their (public) project management is horrible, you can find fixed issues unclosed and unfixed issues closed. Not really surprising when that part of the work is completely taken over by LLM agents though.</p>
]]></description><pubDate>Sun, 19 Jul 2026 15:01:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48968772</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48968772</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48968772</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>> The original code was one giant unsafe block<p>True.<p>> has fewer bugs<p>Nope, this is demonstrably false because Rust has its own invariants around its types and the codebase is violating <i>a lot</i> of them.<p>> every potential memory issue is neatly annotated by an unsafe block<p>"Potential memory issue" can originate in unsafe blocks and safe code that are able to alternate the input condition of these unsafe blocks. Guess what? That still counts towards 100% in this code base, hence the abomination remark.<p>> refactor them out one by one<p>Not as easy as it sounds. They are like threads in a yarn ball, if there are one or two ends visible it's easier to sort them out. The actual situation is more like we have tens of thousands of ends (all the raw pointer code that comes with <i>every</i> shared object), to fix them it's basically a requirement to unwind the whole thing (rewrite all the callees and  reorder the data flow as needed, redesigning all the APIs during that).<p>It's too early to declare it as anything remotely close to a win, optimistically saying.</p>
]]></description><pubDate>Sun, 19 Jul 2026 14:56:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=48968737</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48968737</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48968737</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>> next step is to make it idiomatic rust<p>You can tell what will happen when they release it <i>before</i> sorting out all the new bugs introduced by the not-exactly-line-by-line port.</p>
]]></description><pubDate>Sun, 19 Jul 2026 14:45:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48968642</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48968642</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48968642</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>Reviewing is meaningless while they are still keeping the 10433 (sorry it has become 10503 since last week) unsafe blocks, most unsound and none encapsulated.<p>Any review would get to the simple conclusion that this should not be released before all the obvious bads are sorted out.</p>
]]></description><pubDate>Sun, 19 Jul 2026 14:39:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=48968590</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48968590</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48968590</guid></item><item><title><![CDATA[New comment by endospore in "Claude Code uses Bun written in Rust now"]]></title><description><![CDATA[
<p>"Preserving semantics" by casting pointers to aliasing refs in Rust, ignoring lints and errors in the process.<p>Can't help laughing at this point.</p>
]]></description><pubDate>Sun, 19 Jul 2026 14:36:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48968562</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48968562</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48968562</guid></item><item><title><![CDATA[New comment by endospore in "Zig Creator Calls Spade a Spade, Anthropic Blows Smoke"]]></title><description><![CDATA[
<p>> ignoring the fact that it was an intermediate step.<p>They are going to release the "intermediate step" with all its issues as v1.4. I think that says a lot about which party is ignoring facts. (hint: not me, not you, not Andrew)<p>> The “unsafe” part is also confusing<p>They are right in this case. The code base contains thousands of <i>the most unsafe</i> unsafe blocks I've ever seen in Rust.</p>
]]></description><pubDate>Tue, 14 Jul 2026 06:33:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48903000</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48903000</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48903000</guid></item><item><title><![CDATA[New comment by endospore in "Zig Creator Calls Spade a Spade, Anthropic Blows Smoke"]]></title><description><![CDATA[
<p>Yes, they have introduced (at least) several times more memory safety issues by violating the rust specific rules. Check how most of their unsafe blocks are unsound and worse, how many are straight up incorrect with a total bs // SAFETY above it, leaving no sensible usage without invoking UB.<p>We often ensure a project holds water against miri. This one doesn't even pass for <i>clippy</i>.</p>
]]></description><pubDate>Tue, 14 Jul 2026 00:40:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48900901</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48900901</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48900901</guid></item><item><title><![CDATA[New comment by endospore in "Rewriting Bun in Rust"]]></title><description><![CDATA[
<p>> increasingly dumb<p>That's untrue. It has already been maximally dumb since your first comment with the various logical fallacies you managed
to carry out in a single sentence. The only reason I'm still making my replies is that you are making so many false claims
that may mislead someone else.<p><a href="https://doc.rust-lang.org/nomicon/working-with-unsafe.html" rel="nofollow">https://doc.rust-lang.org/nomicon/working-with-unsafe.html</a><p>I'm not even trying to prove any point since the beginning. Can't do that when you have a different definition of <i>bug</i>
from others.<p>Please if you are going to reply to this ever again try stop making any claims. Otherwise I'm afraid that it will continue 
into infinity.</p>
]]></description><pubDate>Sun, 12 Jul 2026 13:56:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48881277</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48881277</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48881277</guid></item><item><title><![CDATA[New comment by endospore in "Rewriting Bun in Rust"]]></title><description><![CDATA[
<p>> Zig does have invariants<p>Not these in particular. You are again ignoring the context.<p>> Undefined behavior does not mean a bug can be triggered.<p>Undefined behavior are bugs by themselves. Let's check if you are holding any of the wrong assumptions:<p><a href="https://predr.ag/blog/falsehoods-programmers-believe-about-undefined-behavior/" rel="nofollow">https://predr.ag/blog/falsehoods-programmers-believe-about-u...</a><p>> `unsafe` is grep'able, hence all memory safety bugs are grep'able.<p>Wrong implicit premise: "all memory safety bugs resides in unsafe functions/blocks".<p>No. Even assuming everything is done idiomatically, memory safety bugs can still originate from unsafe blocks <i>and all the safe functions in the same module</i>. So we want the module containing unsafe to be small and closed. Otoh with this code base unsafe lives in every module.<p>Making them <i>encapsulated</i> is the whole point of Rust, in this code nothing is encapsulated so no, they missed the whole point of it.<p>Aaand it's not like you can just remove the unsafe blocks one by one trivially. It's as hard as rewriting the codebase from ground up <i>without reference</i> (unlike the current migration) as every referenced object in the call graph needs to be reordered. Well partly because the original code sucks I assume.</p>
]]></description><pubDate>Sat, 11 Jul 2026 09:39:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48870401</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48870401</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48870401</guid></item><item><title><![CDATA[New comment by endospore in "Rewriting Bun in Rust"]]></title><description><![CDATA[
<p>Oh it's so nice of you when I've spent the bottom half of my comment explaining how you cannot grep for most of them in this BAD codebase.<p><i>Please READ</i>. Including the one I've added at slightly higher layers of replies.</p>
]]></description><pubDate>Fri, 10 Jul 2026 13:01:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48859319</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48859319</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48859319</guid></item><item><title><![CDATA[New comment by endospore in "Rewriting Bun in Rust"]]></title><description><![CDATA[
<p>There wasn't a reply button on your latest reply so I'm posting here instead. Also because I now have more time to clarify what's exactly wrong about the claims.<p>> who says that the same invariants weren't broken on the Zig side<p>There are no such invariants in Zig.<p>> "unsafe invariant broken" does not strictly mean that there's a reachable bug.<p>Broken invariant literally means you are reaching it. The word you are looking for is "unsoundness".<p>> callers may never actually trigger a bad invariant in an unsafe block.<p>There's a neat class of UBs called "immediate UB"s. They can ruin the code just by being compiled, instead of reached at runtime. And guess what? They have <i>a lot of</i> these.<p>> potential, grep'able bugs<p>We are indeed going in circles but I have to ask: you still don't understand that? Grep works for violated lints, unsafe blocks and all things explicitly exist in the code. Not for unsoundness in safe functions that can be called incorrectly and ruin everything, can't be reasoned about by any existing tools. They also have thousands of those. It's unfair to say the unsoundness is freshly introduced by the port, but Rust also doesn't help in this way where no unsafety is encapsulated and calling anything can be a wild ride.</p>
]]></description><pubDate>Fri, 10 Jul 2026 11:11:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48858363</link><dc:creator>endospore</dc:creator><comments>https://news.ycombinator.com/item?id=48858363</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48858363</guid></item></channel></rss>