<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: rtfeldman</title><link>https://news.ycombinator.com/user?id=rtfeldman</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 16 Jul 2026 23:05:17 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=rtfeldman" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by rtfeldman in "How Our Rust-to-Zig Rewrite Is Going"]]></title><description><![CDATA[
<p>> Does roc run tests in the same process as the compiler?<p>We do for tests of pure functions, yes.<p>> Your tests run in an entirely separate process from the compiler (and from cargo).<p>That's a great point and a relevant distinction, although Rust tests can run arbitrary I/O, so it's not like having them be in a separate process means memory corruption is harmless! :)</p>
]]></description><pubDate>Thu, 16 Jul 2026 18:52:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48938647</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=48938647</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48938647</guid></item><item><title><![CDATA[New comment by rtfeldman in "How Our Rust-to-Zig Rewrite Is Going"]]></title><description><![CDATA[
<p>Also a good point! TIL that Rust and C++ use interpreters for const, although of course that wouldn't work for running tests. Then again, in the specific case of Rust I believe rustc only compiles the tests and then something else like Cargo executes them. Of course, as I noted elsewhere, if rustc emits machine code and then cargo immediately executes it, there's the same opportunity for end user memory being corrupted (due to miscompilation) as if rustc and cargo shared a code base.<p>By the way, I thought your question was totally reasonable - my first thought reading it was "Oh yeah I wasn't trying to say that writing bytes is unsafe, I definitely should have worded that differently."</p>
]]></description><pubDate>Thu, 16 Jul 2026 16:37:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48936826</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=48936826</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48936826</guid></item><item><title><![CDATA[New comment by rtfeldman in "How Our Rust-to-Zig Rewrite Is Going"]]></title><description><![CDATA[
<p>> I think that for the hot binary patching / code reloading features, yes, that is going to need unsafe. But for regular old "producing an executable" compilation? Emitting machine code isn't the part that requires unsafe. The language's runtime is a more likely site to find unsafe.<p>Agreed! Emitting machine code is not unsafe, since it's just writing bytes down - it's only once you execute that machine code that there's potentially unsafety. The reason I said "a big part of the job" is that in practice a lot of compilers both emit machine code and execute it - but you're totally right that it's not a requirement that a compiler do both.<p>In addition to the examples you gave (hot binary patching/code reloading, language runtime, etc.), others would be things like evaluating userspace code at compile time (e.g. const fn in Rust, or in Roc any expression that could be hoisted to the top level), running tests and inspecting their output to decide what to display to the user, etc.<p>Those are the types of things I had in mind when I wrote that.</p>
]]></description><pubDate>Thu, 16 Jul 2026 16:10:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=48936487</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=48936487</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48936487</guid></item><item><title><![CDATA[New comment by rtfeldman in "Blorp Language"]]></title><description><![CDATA[
<p>Roc defaults functions to being pure, and functions that can run side effects are inferred to have a different type by the compiler based on usage. By convention, their names should also end in `!` (e.g. `transform` for the name of a pure function and `transform!` if it does side effects), and the compiler warns you if you don't follow that convention.<p><a href="https://github.com/roc-lang/roc/blob/b2503210da6b58a4ce1254de6a3310e3b5e85f89/docs/langref/functions.md" rel="nofollow">https://github.com/roc-lang/roc/blob/b2503210da6b58a4ce1254d...</a></p>
]]></description><pubDate>Mon, 01 Jun 2026 15:13:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48357927</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=48357927</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48357927</guid></item><item><title><![CDATA[New comment by rtfeldman in "Parallel agents in Zed"]]></title><description><![CDATA[
<p>You can disable all AI features in Zed with a single setting: <a href="https://zed.dev/blog/disable-ai-features" rel="nofollow">https://zed.dev/blog/disable-ai-features</a></p>
]]></description><pubDate>Wed, 22 Apr 2026 18:43:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47867581</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=47867581</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47867581</guid></item><item><title><![CDATA[New comment by rtfeldman in "Parallel agents in Zed"]]></title><description><![CDATA[
<p>> The best at that that I've found is Conductor, but I can't use it at work because we only have Copilot and they're locked to a Claude/Codex backend.<p>FYI, you can use Copilot directly in Zed!</p>
]]></description><pubDate>Wed, 22 Apr 2026 18:42:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47867570</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=47867570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47867570</guid></item><item><title><![CDATA[New comment by rtfeldman in "Type resolution redesign, with language changes to taste"]]></title><description><![CDATA[
<p>I maintain a ~250K LoC Zig compiler code base [0]. We've been through several breaking Zig releases (although the code base was much smaller for most of that time; Writergate is the main one we've had to deal with since the code base crossed the 100K LoC mark).<p>The language and stdlib changing hasn't been a major pain point in at least a year or two. There was some upgrade a couple of years ago that took us awhile to land (I think it might have been 0.12 -> 0.13 but I could be misremembering the exact version) but it's been smooth sailing for a long time now.<p>These days I'd put breaking releases in the "minor nuisance" category, and when people ask what I've liked and disliked about using Zig I rarely even remember to bring it up.<p>[0]: <a href="https://github.com/roc-lang/roc" rel="nofollow">https://github.com/roc-lang/roc</a></p>
]]></description><pubDate>Wed, 11 Mar 2026 04:15:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47331699</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=47331699</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47331699</guid></item><item><title><![CDATA[New comment by rtfeldman in "Show HN: The Mog Programming Language"]]></title><description><![CDATA[
<p>Very cool!<p>The permission model is almost identical to Roc's - <a href="https://www.roc-lang.org/platforms" rel="nofollow">https://www.roc-lang.org/platforms</a> - although Roc isn't designed for "Syntax only an AI could love" (among many other differences between the two languages - but still, there are very few languages taking this approach to permissions).<p>If you're curious, I've talked about details of how Roc's permission model works in other places, most recently in this interview: <a href="https://youtu.be/gs7OLhdZJvk?si=wTFI7Ja85qdXJWiW" rel="nofollow">https://youtu.be/gs7OLhdZJvk?si=wTFI7Ja85qdXJWiW</a></p>
]]></description><pubDate>Tue, 10 Mar 2026 05:30:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47319393</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=47319393</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47319393</guid></item><item><title><![CDATA[New comment by rtfeldman in "Mercury 2: Fast reasoning LLM powered by diffusion"]]></title><description><![CDATA[
<p>That's a much better test!</p>
]]></description><pubDate>Wed, 25 Feb 2026 05:48:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47147802</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=47147802</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47147802</guid></item><item><title><![CDATA[New comment by rtfeldman in "Mercury 2: Fast reasoning LLM powered by diffusion"]]></title><description><![CDATA[
<p>If a stranger asks me, "Should I walk or drive to this car wash?" then I assume they're asking in good faith and both options are reasonable for their situation. So it's a safe assumption that they're not going there to get their car washed. Maybe they're starting work there tomorrow, for example, and don't know how pedestrian-friendly the route is.<p>Is the goal behind evaluating models this way to incentivize training them to assume we're bad-faith tricksters even when asking benign questions like how best to traverse a particular 100m? I can't imagine why it would be desirable to optimize for that outcome.<p>(I'm not saying that's your goal personally - I mean the goal behind the test itself, which I'd heard of before this thread. Seems like a bad test.)</p>
]]></description><pubDate>Wed, 25 Feb 2026 02:38:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47146603</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=47146603</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47146603</guid></item><item><title><![CDATA[New comment by rtfeldman in "Choosing a language based on its syntax?"]]></title><description><![CDATA[
<p>> Whether functions are introduced with an explicit keyword; how return types are marked; whether semicolons can be omitted at end of line; how types are named (and the overall system for describing algebraic types).<p>Yes, these are all examples of things I always thought were generally considered small enough differences that nobody who was okay with how C++ or Rust or Swift did them would find the way one of the others did it a deal-breaker.<p>> ...Which is really all to say: different people are focused on different details, at different levels.<p>For sure!</p>
]]></description><pubDate>Thu, 19 Feb 2026 23:36:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47081383</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=47081383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47081383</guid></item><item><title><![CDATA[New comment by rtfeldman in "Choosing a language based on its syntax?"]]></title><description><![CDATA[
<p>Wow, this is one of the most surprising comments I've ever read on HN!<p>Personally, I bucket C++ and Rust and Swift under "basically the same syntax." When I think about major syntax differences, I'm thinking about things like Python's significant indentation, Ruby's `do` and `end` instead of curly braces, Haskell's whitespace-based function calls, Lisp's paren placement, APL's symbols, etc.<p>Before today I would have assumed that anyone who was fine with C++ or Rust or Swift syntax would be fine with the other two, but TIL this point exists in the preference space!</p>
]]></description><pubDate>Thu, 19 Feb 2026 19:22:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47077921</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=47077921</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47077921</guid></item><item><title><![CDATA[New comment by rtfeldman in "Lightpanda migrate DOM implementation to Zig"]]></title><description><![CDATA[
<p>Claude Opus 4.5 is completely fluent in Zig.<p>I use it constantly, and it never occurred to me that someone might think there was a problem to be solved there.</p>
]]></description><pubDate>Thu, 15 Jan 2026 01:15:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46626614</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=46626614</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46626614</guid></item><item><title><![CDATA[New comment by rtfeldman in "Opus 4.5 is not the normal AI agent experience that I have had thus far"]]></title><description><![CDATA[
<p>Just based on timing, I am almost 100% sure whatever code is responsible was handwritten before anyone working on Windows was using LLMs...but anyway, thank you for the bug report - I'll pass it along!</p>
]]></description><pubDate>Fri, 09 Jan 2026 18:05:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46556903</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=46556903</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46556903</guid></item><item><title><![CDATA[New comment by rtfeldman in "Opus 4.5 is not the normal AI agent experience that I have had thus far"]]></title><description><![CDATA[
<p>Definitely more than a faster keyboard (e.g. I also ask the model to track down the source of a bug, or questions about the state of the code base after others have changed it, bounce architectural ideas off the model, research, etc.) but also definitely not a replacement for thinking or programming expertise.</p>
]]></description><pubDate>Wed, 07 Jan 2026 16:56:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46528842</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=46528842</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46528842</guid></item><item><title><![CDATA[New comment by rtfeldman in "Opus 4.5 is not the normal AI agent experience that I have had thus far"]]></title><description><![CDATA[
<p>> Do you think it can replace you basically one-shotting features/bugs in Zed?<p>Nobody is one-shotting anything nontrivial in Zed's code base, with Opus 4.5 or any other model.<p>What about a future model? Literally nobody knows. Forecasts about AI capabilities have had horrendously low accuracy in both directions - e.g. most people underestimated what LLMs would be capable of today, and almost everyone who thought AI would <i>at least</i> be where it is today...instead overestimated and predicted we'd have AGI or even superintelligence by now. I see zero signs of that forecasting accuracy improving. In aggregate, we are atrocious at it.<p>The only safe bet is that hardware will be faster and cheaper (because the most reliable trend in the history of computing has been that hardware gets faster and cheaper), which will naturally affect the software running on it.<p>> And also - doesn’t that make Zed (and other editors) pointless?<p>It means there's now demand for supporting use cases that didn't exist until recently, which comes with the territory of building a product for technologists! :)</p>
]]></description><pubDate>Wed, 07 Jan 2026 16:39:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=46528548</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=46528548</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46528548</guid></item><item><title><![CDATA[New comment by rtfeldman in "Opus 4.5 is not the normal AI agent experience that I have had thus far"]]></title><description><![CDATA[
<p>Zed's entire code base is already open source, so Anthropic has a much more straightforward way to see our code:<p><a href="https://github.com/zed-industries/zed" rel="nofollow">https://github.com/zed-industries/zed</a></p>
]]></description><pubDate>Wed, 07 Jan 2026 16:31:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46528424</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=46528424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46528424</guid></item><item><title><![CDATA[New comment by rtfeldman in "Opus 4.5 is not the normal AI agent experience that I have had thus far"]]></title><description><![CDATA[
<p>Anecdotally, we use Opus 4.5 constantly on Zed's code base, which is almost a million lines of Rust code and has over 150K active users, and we use it for basically every task you can think of - new features, bug fixes, refactors, prototypes, you name it. The code base is a complex native GUI with no Web tech anywhere in it.<p>I'm not talking about "write this function" but rather like implementing the whole feature by writing only English to the agent, over the course of numerous back-and-forth interactions and exhausting multiple 200K-token context windows.<p>For me personally, definitely at least 99% all of the Rust code I've committed at work since Opus 4.5 came out has been from an agent running that model. I'm reading lots of Rust code (that Opus generated) but I'm essentially no longer writing any of it. If dot-autocomplete (and LLM autocomplete) disappeared from IDE existence, I would not notice.</p>
]]></description><pubDate>Wed, 07 Jan 2026 04:05:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=46522437</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=46522437</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46522437</guid></item><item><title><![CDATA[New comment by rtfeldman in "Advent of Code 2025"]]></title><description><![CDATA[
<p>If you're feeling adventurous and would like to try Roc's new compiler, I put together a quick tutorial for it!<p><a href="https://gist.github.com/rtfeldman/f46bcbfe5132d62c4095dfa687bb9aa4" rel="nofollow">https://gist.github.com/rtfeldman/f46bcbfe5132d62c4095dfa687...</a></p>
]]></description><pubDate>Sun, 30 Nov 2025 23:02:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46101351</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=46101351</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46101351</guid></item><item><title><![CDATA[New comment by rtfeldman in "NaN, the not-a-number number that isn't NaN"]]></title><description><![CDATA[
<p>My understanding is that the reasoning behind all this is:<p>- In 1985 there were a ton of different hardware floating-point implementations with incompatible instructions, making it a nightmare to write floating-point code once that worked on multiple machines<p>- To address the compatibility problem, IEEE came up with a <i>hardware</i> standard that could do error handling using only CPU registers (no software, since it's a hardware standard)
- With that design constraint, they (reasonably imo) chose to handle errors by making them "poisonous" - once you have a NaN, all operations on it fail, including equality, so the error state propagates rather than potentially accidentally "un-erroring" if you do another operation, leading you into undefined behavior territory<p>- The standard solved the problem when hardware manufacturers adopted it<p>- The upstream consequence on software is that if your programming language does <i>anything other than these exact floating-point semantics</i>, the cost is losing hardware acceleration, which makes your floating-point operations way slower</p>
]]></description><pubDate>Thu, 30 Oct 2025 15:01:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=45760807</link><dc:creator>rtfeldman</dc:creator><comments>https://news.ycombinator.com/item?id=45760807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45760807</guid></item></channel></rss>