<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: pron</title><link>https://news.ycombinator.com/user?id=pron</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 06 Oct 2026 01:55:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=pron" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by pron in "The internet discovers TLA+. Now what?"]]></title><description><![CDATA[
<p>I was implying nothing of the sort. It is an important and serious kernel, but a very small one and a very simple one, which it had to be so it could be verified, like the har-realtime safety critical software I worked on and formally verified. We don't yet know how to verify non-small or non-simple software with formal proofs, and unfortunately, the gap in size between the software we can prove and the average software we write has only grown significantly over the past 40 years. If AI knows how to verify "average software", then it certainly doesn't need our help with software tasks that are far simpler. My point was that some companies are imagining an AI that can write software like humans never could and then suggesting they can help it by writing simple software tools.</p>
]]></description><pubDate>Thu, 01 Oct 2026 14:51:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=49922433</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49922433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49922433</guid></item><item><title><![CDATA[New comment by pron in "The internet discovers TLA+. Now what?"]]></title><description><![CDATA[
<p>Many languages can do that (Ada SPARK, Dafny, even Java with JML, and quite a few more), but there are really two languages here, the spec language and the program language. The spec language isn't executable, and the program language doesn't spec. What TLA+ does is offer a a single continuum, with a language that's much simpler than both Eiffel's spec language and its program language, and can describe anything at arbitrary precision. It can describe the QS algorithm in general, and it can describe the activations of the logic gates in the CPU as a specific QS runs on a specific machine, and it can take any description of QS, at any level, and show the abstraction/implementation between them. Again, this is all in a language that's much simpler than Python, and that allows reasoning directly in the language because it supports substitution and all the normal manipulation capabilities we expect from mathematical formulas.</p>
]]></description><pubDate>Thu, 01 Oct 2026 11:50:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=49920458</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49920458</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49920458</guid></item><item><title><![CDATA[New comment by pron in "The internet discovers TLA+. Now what?"]]></title><description><![CDATA[
<p>In general, problems whose solutions are easily checkable are not necessarily easily solvable, and the difficulty of finding the proof also depends on how the software is written, which is why humans, at least, don't try to prove arbitrary programs correct, but write the program and the proof together. But regardless, the tools involved are really not very complicated. While it's possible, I find it hard to justify betting on AI being able to prove a 100KLOC-10MLOC program correct while not being able to write a 10KLOC tool well enough.</p>
]]></description><pubDate>Sun, 27 Sep 2026 22:29:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=49871452</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49871452</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49871452</guid></item><item><title><![CDATA[New comment by pron in "The internet discovers TLA+. Now what?"]]></title><description><![CDATA[
<p>Maybe (for humans the two often go together), but what's the hypothesis behind assuming it will do the one and not the other? It seems like a very specific and arbitrary bet, not much unlike betting that AI will be able to learn English but not French.</p>
]]></description><pubDate>Sun, 27 Sep 2026 19:25:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=49869964</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49869964</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49869964</guid></item><item><title><![CDATA[New comment by pron in "The internet discovers TLA+. Now what?"]]></title><description><![CDATA[
<p>I'm totally with you, but that's not quite what this company and others are trying to do based on their marketing material.</p>
]]></description><pubDate>Sun, 27 Sep 2026 19:01:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=49869753</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49869753</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49869753</guid></item><item><title><![CDATA[New comment by pron in "The internet discovers TLA+. Now what?"]]></title><description><![CDATA[
<p>If you're talking about seL4, it is tiny and intentionally simplified. I'm not aware of programs larger than ~10KLOC that have ever been verified end-to-end.</p>
]]></description><pubDate>Sun, 27 Sep 2026 19:00:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=49869739</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49869739</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49869739</guid></item><item><title><![CDATA[New comment by pron in "The internet discovers TLA+. Now what?"]]></title><description><![CDATA[
<p>TLA+ is not a model checker. It's a general language for writing mathematics, akin to Lean, only Lean focuses on high mathematics while TLA+ focuses on dynamic systems. There are a proof checker and at least one model checker that work on subsets of TLA+.<p>As to why TLA+ is better at describing systems than programming languages, the reason is that it's much more general. It can say things like "a routine that sorts in a quadratic number of steps or less" rather than a specific sorting algorithm, and it allows stating (and proving) that a specific sorting algorithm matches that description or not. Most TLA+ formulas are too abstract to be run by a computer (i.e. they describe too many potential algorithms), but that's exactly what makes them useful to describe things when either you don't care about the details or you want to show that a particular algorithm implements a general property.<p>BTW, even algorithms like Quicksort are, themselves, too general to be accurately described by a programming language (i.e. a language that can be executed). Quicksort doesn't specify how a pivot is chosen (it doesn't matter for the correctness), it doesn't specify how that partitioning is done (ditto), and it doesn't specify in what order the recursion is done or perhaps even in parallel (ditto). Yet a computer needs to be told all these details to run an implementation of Quicksort, even though the algorithm works, and can be proven to work, no matter what these details are. In a language like TLA+ you can say how to choose a pivot or you can say "a pivot is somehow chosen" (which covers all possible mechanisms for choosing one).<p>Also, TLA+ is much simpler than a programming language and obeys simple and intuitive substitution rules - e.g. `x = 3` is equivalent to `3 = x` and `x = y + 1` is (almost) equivalent to `x - y = 1`, which is what you want when you're after clarity. It's just <i>different</i> from programming languages (because it's maths), so it's a different, though simpler, <i>kind</i> of language to learn.</p>
]]></description><pubDate>Sun, 27 Sep 2026 18:58:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49869724</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49869724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49869724</guid></item><item><title><![CDATA[New comment by pron in "The internet discovers TLA+. Now what?"]]></title><description><![CDATA[
<p>I love TLA+ to describe systems precisely yet succinctly and reason about them. But as someone who's been using formal methods to help software development for many years, this whole industry around tools to connect such a wonderful mathematical language and others like it, like Lean, with AI, to the point of hiding the reasoning from people, confuses me.<p>Proving programs correct end-to-end (i.e. code to high-level properties) - as this company and others purport to do - is so difficult that humans have only been able to do it for very small programs (~10KLOC) and even then, in very specialised cases, where the programs have been written in an extra-simple way (often at the cost of performance, because performance often requires more complicated algorithms). If AI becomes at least an order of magnitude more capable than humans at software development, which is what will be required for this task, would it need our help to write various tools and harnesses that help with the task? After all, writing these tools is so much easier than using them for that goal that I don't understand the hypothesis behind AI capability here.<p>This company says: they're "developing the agentic frameworks to make these correctness guarantees accessible to all software engineers". But developing all that is the easy part! If AI can do the hard part, why does it need our help to make this accessible, it can surely find a way to do that easy part itself! It's like saying, "Soon we'll have a machine that can harness so much energy to boil an ocean; we've built a service that lets you order a taxi to take the machine to the beach!"
Why would an AI that is so much better than us at writing software need our help writing any kind of software for it?</p>
]]></description><pubDate>Sun, 27 Sep 2026 15:33:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=49867573</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49867573</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49867573</guid></item><item><title><![CDATA[New comment by pron in "JavaFX 27 Native Image on a Raspberry Pi 5"]]></title><description><![CDATA[
<p>It seems more Oracle than Gluon: <a href="https://github.com/openjdk/jfx/graphs/contributors" rel="nofollow">https://github.com/openjdk/jfx/graphs/contributors</a></p>
]]></description><pubDate>Tue, 22 Sep 2026 11:58:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49799835</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49799835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49799835</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>> As far as I understand it comptime is basically runtime compilation and integration into the running program (just-in-time compilation). That gives it great flexibility of course but it also requires each Zig application to carry a full compiler inside of it.<p>Well, it isn't that and it doesn't require that.<p>> I don't understand your C++ example about it getting slower and needing to "move pointers."<p>Because low-level languages need to use machine pointers, their dynamic heap allocations have a high CPU overhead; it's that overhead that moving GCs are designed to reduce, but because they move pointers, using them requires an FFI between these pointers and machine pointers. This is why in low level languages we try to avoid dynamic allocations when we can, but that increases long-term maintenance costs.</p>
]]></description><pubDate>Mon, 21 Sep 2026 10:40:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=49785478</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49785478</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49785478</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>Well, the problems don't start after 20 years but after 5 or so (depending on the size of the codebase and the rate of the application's evolution), and the reason there aren't many large and oldish Rust codebases isn't because the language is too young for that (work on it began twenty years ago, and it's been stable for over a decade); that's middle-aged for a programming language. When C++ was of a similar age, there were thousands of >1MLOC programs written in it. One reason is obviously because when C++ was of the same age, there weren't as many suitable high-level alternatives, and people just don't pick a low-level language for most large applications anymore. But most Rust fans <i>at least on social media</i>, have not actually had much experience with it or with low-level programming in general; I'm guessing most haven't worked on Rust projects with more than 10 full-time people on them (this isn't normal in the industry, BTW, as a lot of software lives in large programs). And again, there are people who can certainly live with these issues, but they are real, and many certainly find them troubling.</p>
]]></description><pubDate>Sun, 20 Sep 2026 18:06:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=49778301</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49778301</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49778301</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>It's not theoretical, it's one of the main reasons many large applications abandoned C++, and there's absolutely no reason for it to not exist in Rust. All low-level languages suffer from expensive evolution for fundamental reasons - the reliance on an AOT compiler and the lack of movable pointers impose serious performance tradeoffs <i>in large programs</i>. Optimising JITs and moving GCs were invented, in large part, to address this very real problem, familiar to many low-level programmers who have maintained large codebases for a long time. It's also why large runtimes like TCMalloc were invented to assist as much as they can.<p>Most actual Rust programmers haven't maintained a large Rust program for a long time. Now, don't get me wrong - there are many C++ programmers who are fine with it, but many who aren't. What I find annoying is people without much experience in Rust assuming that <i>everyone</i> or almost everyone should like it, even though that's never been true for any language. I'm not saying Rust is bad by any means; in fact, I think it's better than C++ in a few ways. I'm explaining why <i>I</i> don't like it.</p>
]]></description><pubDate>Sun, 20 Sep 2026 18:03:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=49778265</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49778265</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49778265</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>sorry, the "and" was a typo</p>
]]></description><pubDate>Sun, 20 Sep 2026 17:55:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49778197</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49778197</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49778197</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>> But this should be up and front in their self-promotion!<p>It is! "A fresh approach to metaprogramming based on compile-time code execution and lazy evaluation" is the second selling point after simplicity: <a href="https://ziglang.org" rel="nofollow">https://ziglang.org</a><p>Obviously, they can't call it partial evaluation because not many people know what that is. Zig's approach was eye opening to me. I'm very familiar with how macros are used in Scheme, but comptime is intentionally weaker (unlike macros, it's referentially transparent, so strictly weaker) and I was surprised by just how far it can go. It's not everyday that you see a new kind of a partial evaluation construct, let alone a language that's almost entirely based on it (like Lisp only for comptime).</p>
]]></description><pubDate>Sun, 20 Sep 2026 15:28:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=49776835</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49776835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49776835</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>For me it's because Zig presents a novel and even revolutionary new coherent design for low-level programming, whereas D is mostly a collection of many ideas, many of them are good, but they don't coalesce into a simple design philosophy. I think somebody once said that good (or coherent) design is what happens not when there's nothing left to add but when there's nothing left to remove. That product X has all the components of product Y and possibly more doesn't mean that it contains within it Y's design. The novelty of the iPhone wasn't that it had a touchscreen, but that it had little else. Such a coherent design grabs, and deserves, attention.<p>For example, another language that immediately grabbed my attention (aspirationally; I haven't looked at it closely yet) is <a href="https://github.com/aardappel/goose/" rel="nofollow">https://github.com/aardappel/goose/</a>. That's not because it has arenas, but because it doesn't have anything else.</p>
]]></description><pubDate>Sun, 20 Sep 2026 12:54:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=49775375</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49775375</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49775375</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>Benign write/write races (when multiple threads do unordered writes of the same value to the same address) are quite common and useful, both in parallel algorithms and in lazy initialisation. Useful benign read/write races are far more rare to the point I'd say it's ok to assume they don't (or shouldn't) exist.<p>However, in C and C++ (and Rust) benign non-atomic write/write races are UB (indeed, LLVM also treats them as potential causes of UB). In C# and in Java they are safe (although Java currently only has non-atomic writes on 32-bit machines, but soon they'll be more common when value types are enhanced). LLVM even has a specific construct to support the Java-style memory model (<a href="https://llvm.org/docs/Atomics.html#unordered" rel="nofollow">https://llvm.org/docs/Atomics.html#unordered</a>), and Zig lets you use it (<a href="https://ziglang.org/documentation/master/#atomicStore" rel="nofollow">https://ziglang.org/documentation/master/#atomicStore</a>).</p>
]]></description><pubDate>Sun, 20 Sep 2026 12:07:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=49774999</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49774999</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49774999</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>> i find it fascinating how big of a rust hater you are. willing to outright lie to make your point.. because you can do this with_allocator<p>You say I <i>outright lie</i> for not mentioning the existence of something that doesn't exist??? I guess you're saying it's <i>possible</i> to create such a mechanism (or that some libraries do create ad-hoc ones), but that's not the point.<p>> there is nothing stopping you from using custom allocators with your own code or with calls to thirdparty dependencies<p>I didn't say there's anything in the language <i>stopping</i> C++ and Rust from having such a standard library and ecosystem of libraries. They just don't have that yet.<p>> if your language is not memory safe and you need to manage memory yourself, they're more important. but this isn't the case with rust. c and zig folks are obsessed with arena allocators particularly because they can group lifetimes of individual objects, reducing the amount of malloc/free calls and thus the amount of use after free, double free, nullptr derefs, or leaks that can occur. n rust this isn't a concern so custom allocators are only used for performance reasons.<p>This is simply untrue. I won't call it an outright lie, as it's probably just a lack of experience with low-level programming.<p>First, I'm trying to point out the problems we've had in C++, most of which only became apparent when evolving large codebases over time. People who have not had experience evolving large C++ or Rust codebases over years simply don't know about these problems and certainly can't claim they don't exist. Writing smaller programs in C++ or even large but young programs has always been a pleasure. The language is expressive and productive. Some of the biggest issues only arise years later, when the program gets either expensive to maintain or slow.<p>Second, experienced C and C++ folks cannot be "obsessed" with arenas for the reasons you mentioned because until maybe 20 or even 15 years ago memory safety wasn't a widespread obsession. It was a correctness issue like all others, and its outsized role as the cause of security vulnerabilities wasn't widely known until more recently.<p>Lastly, you don't pick Rust for safety. Most software in the world today is already written in languages that are at least as memory-safe safe as Rust, sometimes more so. These days, you pick C, or C++, or Rust, or Zig when you want to do something that's largely low-level. Things that are low-level often also need to be reasonably fast, and large low-level codebases that evolve over years tend to suffer serious performance issues because of memory management (because, being low-level, they can't move pointers and so can't use things like a moving GC to reduce the overheads of their malloc/free runtimes; this is why companies with actual experience with long-maintained large low-level codebases make huge runtimes like TCMalloc to help them to a degree, which you also may not have needed yet), and arenas are the primary way to get memory performance similar to what you see with modern moving GCs (and even somewhat better).<p>Now, you could say that C++ only started moving in that direction with pmr in C++ 17, and that's true. But the need was recognised as early as 2005, traditionally C++ codebases didn't rely on many libraries so interoperability has typically not been a large concern, and the number of large C++ programs that would benefit from such a thing declined over the years because of the low-level maintenance issues I mentioned and the growing availability of fast high-level languages.<p>My distaste for Rust isn't because I like C++ so much. Even though it's been one of my primary programming languages for the past 25 years, I "hate" it for the very same reasons. Most Rust superfans are people who have not had enough experience with it and they don't know about the problems. Not all, of course, and even C++ has superfans, which is why I said that among the people who are experienced in low-level programming, there are people who like the C++/Rust approach (of trying to make low-level code appear high-level) and people who don't.</p>
]]></description><pubDate>Sun, 20 Sep 2026 11:31:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49774749</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49774749</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49774749</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>It is entirely novel. As I wrote, what makes the design revolutionary isn't the partial evaluation mechanism itself, but how the language is organised around it. It's like what made the iPhone's design revolutionary wasn't that it had a touchscreen, but that it didn't have a keypad. Partial evaluation mechanisms aren't very interesting in themselves; what's interesting is building a language around a unified partial evaluation mechanism and little else. But yes, D gets credit for adding more partial evaluation features.</p>
]]></description><pubDate>Sun, 20 Sep 2026 10:42:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=49774489</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49774489</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49774489</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>This is true. In Java, we have a notion we call "integrity", which is a generalisation of memory safety and includes a host of properties guaranteed by the platform. It includes memory safety, but also things like "a non-public method cannot be called or a non-public field cannot be accessed (even reflectively) by code in another module".<p>To address the problem that once integrity can be violated <i>anywhere</i>, only global analysis can prove that nothing bad happens, we've done two things:<p>1. We require the <i>application</i> to explicitly permit any integrity violation by a module; i.e. a library can't allow itself to violate integrity. This is a principle we call "Integrity by Default" (<a href="https://openjdk.org/jeps/8305968" rel="nofollow">https://openjdk.org/jeps/8305968</a>).<p>2. We try to minimise the need for potential integrity violations (this is very different from Rust, which requires unsafe even for things like benign write/write races, which are fairly common, and various basic data structures). Over the years we've offered safe replacements for things that used to require Unsafe. In other words, clearly demarcating unsafe code isn't enough if it's needed at all in many situations.<p>It isn't perfect, of course, as some libraries do require unsafe operations for direct interaction with native code or with memory, but their number has been greatly reduced, and they cannot do this without the application's explicit approval. Interestingly, this has annoyed library authors who want to do unsafe things but don't want to application authors to be alarmed because "we know what we're doing," and it's also annoyed some application authors who want to use such libraries and are forced to explicitly add permissions. But I think that the community, as a whole, has eventually accepted this because the harm done to those who don't care is small (they just need to add the permissions), to those who do care it helps a lot, and because fewer and fewer libraries require "integrity-busting" permissions, many applications need to do absolutely nothing and get important guarantees for free.</p>
]]></description><pubDate>Sat, 19 Sep 2026 23:34:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=49771040</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49771040</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49771040</guid></item><item><title><![CDATA[New comment by pron in "What Zig felt like, coming from Rust"]]></title><description><![CDATA[
<p>Many more C programs have been verified than Rust programs. Also, Zig's spatial and memory safety is as good as Rust's, so it's not really similar to C at all.<p>The reason it's not "the norm" is that (especially with spatial safety taken care of), not every line is equally dangerous at all. Still, there's no doubt that more guarantees help, but that is only when all other things are equal. If you pick a low-level language for mostly low-level things, so Rust doesn't offer safety for the trickiest code, and furthermore it makes certain things harder to see because the language is more complicated, then things become much less clear. Obviously, when the vast majority of the trickiest, most important code doesn't need to be low-level, Rust would probably be safer on the whole, but in such situations I see no reason to choose either Rust or Zig. You need to choose a low-level language if the core of what you're doing needs to be low-level.</p>
]]></description><pubDate>Sat, 19 Sep 2026 21:55:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=49770442</link><dc:creator>pron</dc:creator><comments>https://news.ycombinator.com/item?id=49770442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49770442</guid></item></channel></rss>