News for hackers. Stuff that matters.

rtfeldman

Re:How close can pure functional programming get to C? on Saturday October 24, 2026 @04:08PM (#50224658)
That `debug` trick is clever! We gave Roc a dedicated `dbg` language keyword which does this - it's allowed to be used in pure functions even though, as you said, logging debug output is a side effect.

By the way, hi again! We chatted briefly in person after Handmade Seattle 2021, and I remember being really impressed to learn that you're one of the few people (maybe the only one?) who has ever implemented a working C++ compiler solo.

Anyway, hope all is well, and let me know if you're ever interested in recording a podcast episode sometime - [email protected]

Re:How close can pure functional programming get to C? on Saturday October 24, 2026 @03:14PM (#50224165)
roc-deflate produces identical outputs to libdeflate - I mentioned it briefly, although in retrospect the wording could have been clearer:

> I didn't expect to beat libdeflate's performance across the board, but I wanted to see how close it could get on the non-streaming APIs (as roc-deflate hasn't implemented streaming yet), using the classic Silesia corpus for benchmarking and verifying that it produced identical outputs.

Re:Replacing Pull Requests with Delta on Friday September 18, 2026 @09:37AM (#49754222)
At 3:40 in the video you can see direct code editing in Delta with no AI involvement:

https://youtu.be/HWB48DFk4Sg?si=qTI7jgSiEwajcTab&t=220

Re:Malicious Rust crate Arrayref runs a build-time payload on Thursday August 20, 2026 @10:57AM (#49375546)
I think the only language that's used in production where malicious dependencies can't do arbitrary effects is https://roc-lang.org - but it's a pre-0.1.0 language and as such its production usage is extremely minimal for now.
Re:How Our Rust-to-Zig Rewrite Is Going on Thursday July 16, 2026 @02:52PM (#48938647)
> Does roc run tests in the same process as the compiler?

We do for tests of pure functions, yes.

> Your tests run in an entirely separate process from the compiler (and from cargo).

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! :)

Re:How Our Rust-to-Zig Rewrite Is Going on Thursday July 16, 2026 @12:37PM (#48936826)
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.

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."

Re:How Our Rust-to-Zig Rewrite Is Going on Thursday July 16, 2026 @12:10PM (#48936487)
> 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.

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.

In addition to the examples you gave, 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.

Those are the types of things I had in mind when I wrote that.

Re:Blorp Language on Monday June 01, 2026 @11:13AM (#48357927)
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.

https://github.com/roc-lang/roc/blob/b2503210da6b58a4ce1254d...

Re:Parallel Agents in Zed on Wednesday April 22, 2026 @02:43PM (#47867581)
You can disable all AI features in Zed with a single setting: https://zed.dev/blog/disable-ai-features
Re:Parallel Agents in Zed on Wednesday April 22, 2026 @02:42PM (#47867570)
> 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.

FYI, you can use Copilot directly in Zed!

Re:Zig – Type Resolution Redesign and Language Changes on Wednesday March 11, 2026 @12:15AM (#47331699)
[delayed]
Re:Show HN: The Mog Programming Language on Tuesday March 10, 2026 @01:30AM (#47319393)
Very cool!

The permission model is almost identical to Roc's - https://www.roc-lang.org/platforms - 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).

If you're curious, I've talked about details of how Roc's permission model works in other places, most recently in this interview: https://youtu.be/gs7OLhdZJvk?si=wTFI7Ja85qdXJWiW

Re:Mercury 2: The fastest reasoning LLM, powered by diffusion on Wednesday February 25, 2026 @12:48AM (#47147802)
That's a much better test!
Re:Mercury 2: The fastest reasoning LLM, powered by diffusion on Tuesday February 24, 2026 @09:38PM (#47146603)
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.

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.

(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.)

Re:Choosing a Language Based on Its Syntax? on Thursday February 19, 2026 @06:36PM (#47081383)
> 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).

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.

> ...Which is really all to say: different people are focused on different details, at different levels.

For sure!

Re:Choosing a Language Based on Its Syntax? on Thursday February 19, 2026 @02:22PM (#47077921)
Wow, this is one of the most surprising comments I've ever read on HN!

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.

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!

Re:Lightpanda migrate DOM implementation to Zig on Wednesday January 14, 2026 @08:15PM (#46626614)
[delayed]
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!
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.
> Do you think it can replace you basically one-shotting features/bugs in Zed?

Nobody is one-shotting anything nontrivial in Zed's code base, with Opus 4.5 or any other model.

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 at least 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.

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.

> And also - doesn’t that make Zed (and other editors) pointless?

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! :)

Zed's entire code base is already open source, so Anthropic has a much more straightforward way to see our code:

https://github.com/zed-industries/zed

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.

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.

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.

Re:Advent of Code 2025 on Sunday November 30, 2025 @06:02PM (#46101351)
If you're feeling adventurous and would like to try Roc's new compiler, I put together a quick tutorial for it!

https://gist.github.com/rtfeldman/f46bcbfe5132d62c4095dfa687...

Re:NaN, the not-a-number number that isn't NaN on Thursday October 30, 2025 @11:01AM (#45760807)
My understanding is that the reasoning behind all this is:

- 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

- To address the compatibility problem, IEEE came up with a hardware 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

- The standard solved the problem when hardware manufacturers adopted it

- The upstream consequence on software is that if your programming language does anything other than these exact floating-point semantics, the cost is losing hardware acceleration, which makes your floating-point operations way slower

Re:Cursor Composer: Building a fast frontier model with RL on Wednesday October 29, 2025 @01:06PM (#45749791)
> I’ve tried all the popular alternatives (Copilot, Claude Code, Codex, Gemini CLI, Cline)

Can't help but notice you haven't tried Zed!

Re:Rust cross-platform GPUI components on Monday October 27, 2025 @12:16PM (#45722738)
[delayed]
Re:Claude Code on the Web on Monday October 20, 2025 @04:03PM (#45648588)
You don't have to use Codex in its terminal UI - e.g. you can use it in the Zed IDE out-the-box:

https://zed.dev/blog/codex-is-live-in-zed

Re:Systems Programming with Zig (Book) on Saturday October 04, 2025 @12:17PM (#45474429)
When I wrote Elm in Action for Manning, I talked with them explicitly about the language being pre-1.0 and what would happen if there were breaking changes. The short answer was that it was something they dealt with all the time; if there were small changes, we could issue errata online, and if there were sufficiently large changes, we could do a second edition.

I did get an advance but I don't remember a clause about having to return any of it if I didn't earn it out. (I did earn it out, but I don't remember any expectation that I'd have to give them money back if I hadn't.) Also my memory was that it was more than $2k but it was about 10 years ago so I might be misremembering!

Re:Zed's Pricing Has Changed: LLM Usage Is Now Token-Based on Thursday September 25, 2025 @10:32AM (#45373062)
> I get it, pausing some work to ship AI integration plumbing is a good strategy to keep momentum up with competition.

By every metric - lines of code shipped, hours per week spent on it, number of people assigned to it, etc. - AI is a minority part of what Zed does. It's a priority, but it's not the priority.

I know there's a disproportionate amount of blogging about AI, but that's a decision about what prose gets written, not what code gets written!

Re:Zed's Pricing Has Changed: LLM Usage Is Now Token-Based on Thursday September 25, 2025 @12:20AM (#45369240)
It's actively being worked on - there have been 8 font rendering PRs in the past 3 weeks, most recently yesterday: https://github.com/zed-industries/zed/pulls?q=is%3Apr+is%3Ac...

A downside that comes with the territory of building the rendering pipeline from scratch is needing to work through the long tail of complex and tradeoff-heavy font rendering issues on different displays, operating systems, drivers, etc.

I know it's taking awhile to get through, but I agree it's important!

Older »