<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: K0nserv</title><link>https://news.ycombinator.com/user?id=K0nserv</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 23 May 2026 00:29:39 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=K0nserv" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Rust for Linux Live]]></title><description><![CDATA[
<p>Article URL: <a href="https://corrode.dev/podcast/s06e04-rust4linux/">https://corrode.dev/podcast/s06e04-rust4linux/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48225864">https://news.ycombinator.com/item?id=48225864</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 21 May 2026 17:01:49 +0000</pubDate><link>https://corrode.dev/podcast/s06e04-rust4linux/</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48225864</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48225864</guid></item><item><title><![CDATA[New comment by K0nserv in "Bun Rust rewrite: "codebase fails basic miri checks, allows for UB in safe rust""]]></title><description><![CDATA[
<p>I'm also curious about that. One thing to keep in mind: the invariants you have to uphold in unsafe blocks are quite stringent. I expect that in some instances the Rust code has new UB due to this.</p>
]]></description><pubDate>Fri, 15 May 2026 19:27:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48152778</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48152778</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48152778</guid></item><item><title><![CDATA[New comment by K0nserv in "Bun Rust rewrite: "codebase fails basic miri checks, allows for UB in safe rust""]]></title><description><![CDATA[
<p>> If that was true, then I would expect followups to reduce UB and unsafe in general, or at least requiring a lifetime for caller-owned memory.<p>It's been like a day since the merge, presumably such followups are coming.</p>
]]></description><pubDate>Fri, 15 May 2026 19:14:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=48152631</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48152631</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48152631</guid></item><item><title><![CDATA[New comment by K0nserv in "Rewrite Bun in Rust has been merged"]]></title><description><![CDATA[
<p>Sure, but that's kind of orthogonal. Imagine doing this by hand I still think going like-for-like with the Zig, even if that means a lot of unsafe, is a good approach.<p>But I suppose if you are already using LLMs it's more reasonable to try and go from Zig straight to Rust with no/minimal unsafe.</p>
]]></description><pubDate>Thu, 14 May 2026 10:52:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48133623</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48133623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48133623</guid></item><item><title><![CDATA[New comment by K0nserv in "Rewrite Bun in Rust has been merged"]]></title><description><![CDATA[
<p>It's not that weird to end up with this when translating C/Zig/C++ to Rust. A first pass can use unsafe and then when the code is in Rust you can work on reducing the unsafe.<p>Trying to eliminate all unsafe as part of the rewrite, whether done by human or LLM, would be making too big of a change in the process of rewriting.</p>
]]></description><pubDate>Thu, 14 May 2026 10:45:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48133564</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48133564</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48133564</guid></item><item><title><![CDATA[New comment by K0nserv in "OpenAI’s WebRTC problem"]]></title><description><![CDATA[
<p>It's not that strange. TURN has two main use cases: peer-to-peer when no viable direct path can be found and working around very strict firewalls. Based on the author's experience the first isn't relevant and the second isn't much of a concern for Twitch and Discord. For the latter case HTTP/3 is helping make TURN unnecessary because you can, as the author observes, run UDP over port 443.</p>
]]></description><pubDate>Sat, 09 May 2026 11:15:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48073987</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48073987</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48073987</guid></item><item><title><![CDATA[New comment by K0nserv in "Async Rust never left the MVP state"]]></title><description><![CDATA[
<p>Realised all of these examples are for async, but they apply equally for sync.</p>
]]></description><pubDate>Wed, 06 May 2026 08:51:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48033881</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48033881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48033881</guid></item><item><title><![CDATA[New comment by K0nserv in "Async Rust never left the MVP state"]]></title><description><![CDATA[
<p>This is a great question and there isn't a definitive answer provided in the sources I linked.<p>Broadly I think there are three approaches:<p>1. For frequent and small CPU heavy tasks, just run them on the IO threads. As long as you don't leave too long between `.await` points (~10ms) it seems to work okay.<p>2. Run your sans-io code on a dedicated CPU thread and do IO from an async runtime. This introduces overhead that needs to be weighed against the amount of CPU work.<p>3. Have the sans-io code output something like `Output::DoHeavyCompute { .. }` and later feed the result back as `Input::HeavyComputeResult { .. }`, in the middle run the work on a thread pool.</p>
]]></description><pubDate>Tue, 05 May 2026 12:06:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48021337</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48021337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48021337</guid></item><item><title><![CDATA[New comment by K0nserv in "Async Rust never left the MVP state"]]></title><description><![CDATA[
<p>I think you are correct, in so far that often N:M threading is overkill for the problem at hand. However, some IO bound problems truly do require it. I haven't kept up with the details, but AFAIK the fallout from Spectre and Meltdown also means context switches are more expensive than they were historically, which is another downside with regular threads.<p>I also want to address something that I've seen in several sub-threads here: Rust's specific async implementation. The key limitation, compared to the likes of Go and JS, is that Rust attempts to implement async as a zero-cost abstraction, which is a much harder problem than what Go and JS does. Saying some variant of "Rust should just do the same thing as Go", is missing the point.</p>
]]></description><pubDate>Tue, 05 May 2026 10:48:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48020668</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48020668</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48020668</guid></item><item><title><![CDATA[New comment by K0nserv in "Async Rust never left the MVP state"]]></title><description><![CDATA[
<p>There is work happening on keyword generics[0], which would let a function be generic over keywords like `async` and `const`.<p>For now the best option to write code that wants to live in both worlds is sans-io. Thomas Eizinger at Fireguard has written a good article about this[1] pattern. Not only does it nicely solve the sync/async issue, but it also makes testing easier and opens the door to techniques like DST[2]<p>I have my own writing on the topic[3], which highlights that the problem is wider than just async vs sync due to different executors.<p>0: <a href="https://github.com/rust-lang/effects-initiative" rel="nofollow">https://github.com/rust-lang/effects-initiative</a><p>1: <a href="https://www.firezone.dev/blog/sans-io">https://www.firezone.dev/blog/sans-io</a><p>2: <a href="https://notes.eatonphil.com/2024-08-20-deterministic-simulation-testing.html" rel="nofollow">https://notes.eatonphil.com/2024-08-20-deterministic-simulat...</a><p>3: <a href="https://hugotunius.se/2024/03/08/on-async-rust.html" rel="nofollow">https://hugotunius.se/2024/03/08/on-async-rust.html</a></p>
]]></description><pubDate>Tue, 05 May 2026 09:52:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48020207</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=48020207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48020207</guid></item><item><title><![CDATA[New comment by K0nserv in "Pgrx: Build Postgres Extensions with Rust"]]></title><description><![CDATA[
<p>Indeed, that's a much better formulation.</p>
]]></description><pubDate>Tue, 28 Apr 2026 09:18:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47932132</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=47932132</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47932132</guid></item><item><title><![CDATA[New comment by K0nserv in "Pgrx: Build Postgres Extensions with Rust"]]></title><description><![CDATA[
<p>I built <a href="https://github.com/k0nserv/plid" rel="nofollow">https://github.com/k0nserv/plid</a> with Pgrx and had a great time. I did have to scale back some of the magic (dropping derive PostgresType etc), but even so the support pgrx provides is excellent. I also talked to the maintainers a bit in discord and they were super helpful.<p>The one downside of custom extensions is that you aren’t, AFAIK, able to use them with many hosted Postgres installs, notably AWS RDS.</p>
]]></description><pubDate>Tue, 28 Apr 2026 07:14:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47931321</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=47931321</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47931321</guid></item><item><title><![CDATA[New comment by K0nserv in "Where did my taxes go?"]]></title><description><![CDATA[
<p>The US spends the most per capita[0] on healthcare in the world, all to receive a healthcare system that still requires lots of citizens to carry private insurance. I've never dug deep into why, but it sure is noteworthy.<p>0: <a href="https://www.statista.com/statistics/283221/per-capita-health-expenditure-by-country/" rel="nofollow">https://www.statista.com/statistics/283221/per-capita-health...</a></p>
]]></description><pubDate>Wed, 15 Apr 2026 17:35:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47782416</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=47782416</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47782416</guid></item><item><title><![CDATA[New comment by K0nserv in "US businesses and consumers pay 90% of tariff costs, New York Fed says"]]></title><description><![CDATA[
<p>There are a few problems with how Trump is going about this:<p>1. The tariffs are too broad, they don't target a single or a few industries.<p>2. Trump has gone back and forth many times on them, using them as negotiating leverage, not as long term incentives.<p>3. They are on very shaky legal grounds and will likely end up getting reversed by either the Supreme Court or the next president.<p>If you want to use tariffs to encourage on-shoring you make them targeted and pass them with bipartisan support through congress. Companies need stability and long term guarantees for the kind of capital expenditure that is needed. Even better if you use a mix of carrot and stick, rather than all stick</p>
]]></description><pubDate>Thu, 12 Feb 2026 18:09:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46992585</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=46992585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46992585</guid></item><item><title><![CDATA[New comment by K0nserv in "European troops arrive in Greenland to boost the Arctic island's security"]]></title><description><![CDATA[
<p>What does the US gain from taking Greenland that it doesn't already have? If the US does invade an ally to acquire territory I think Canadians should be worried. In any case, what the US gains is the wrong perspective. This is about Trump and those around him wanting to build an empire and the American people, seemingly, letting them.</p>
]]></description><pubDate>Thu, 15 Jan 2026 23:15:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=46640800</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=46640800</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46640800</guid></item><item><title><![CDATA[New comment by K0nserv in "Is Rust faster than C?"]]></title><description><![CDATA[
<p>> In c the callers isn’t choosing typically. The author of some library or api decides this for you.<p>Tbf this applies to Rust too. If the author writes<p><pre><code>   fn foo(bar: Box<dyn BarTrait>)
</code></pre>
they have forced the caller into dynamic dispatch.<p>Had they written<p><pre><code>   fn foo(bar: impl BarTrait)
</code></pre>
the choice would've remained open to the caller</p>
]]></description><pubDate>Wed, 14 Jan 2026 13:22:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46615766</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=46615766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46615766</guid></item><item><title><![CDATA[New comment by K0nserv in "U.S. Emissions Jumped in 2025 as Coal Power Rebounded"]]></title><description><![CDATA[
<p>Yes, in part because the US outsourced a lot of their industry to China since. The US is still one of the principal per capita emitters, they need to cut emissions by two thirds to catch up with Europe and in half to reach China.</p>
]]></description><pubDate>Tue, 13 Jan 2026 11:52:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46599841</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=46599841</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46599841</guid></item><item><title><![CDATA[New comment by K0nserv in "Creators of Tailwind laid off 75% of their engineering team"]]></title><description><![CDATA[
<p>It's not really a refutation of my point about how building a good component library is hard, to suggest using another component library. Of course, if you use one it's easier, that was my entire point.</p>
]]></description><pubDate>Wed, 07 Jan 2026 22:30:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46534074</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=46534074</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46534074</guid></item><item><title><![CDATA[New comment by K0nserv in "Creators of Tailwind laid off 75% of their engineering team"]]></title><description><![CDATA[
<p>That's really interesting. Are you speaking from experience with websites where you know who authored them or from seeing code written by humans and Opus 4.5 respectively?</p>
]]></description><pubDate>Wed, 07 Jan 2026 18:47:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46530694</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=46530694</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46530694</guid></item><item><title><![CDATA[New comment by K0nserv in "Creators of Tailwind laid off 75% of their engineering team"]]></title><description><![CDATA[
<p>Oh no I'm very cynical about that.</p>
]]></description><pubDate>Wed, 07 Jan 2026 17:07:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46529022</link><dc:creator>K0nserv</dc:creator><comments>https://news.ycombinator.com/item?id=46529022</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46529022</guid></item></channel></rss>