<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: whytevuhuni</title><link>https://news.ycombinator.com/user?id=whytevuhuni</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 18 Apr 2026 14:15:10 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=whytevuhuni" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by whytevuhuni in "jj – the CLI for Jujutsu"]]></title><description><![CDATA[
<p>> Then add in the fact that a change to history gets rippled down the descendent commits.<p>This sounds interesting. Could you go into a bit more detail?<p>I have 3 branches off of a single commit, update that commit, and all branches automatically rebase? Or?</p>
]]></description><pubDate>Wed, 15 Apr 2026 09:51:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47776864</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=47776864</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47776864</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Supply chain nightmare: How Rust will be attacked and what we can do to mitigate"]]></title><description><![CDATA[
<p>The only thing this leads to is that you'll have hundreds of vendored dependencies, with a combined size impossible to audit yourself.<p>But if you somehow do manage that, then you'll soon have hundreds of <i>outdated</i> vendored dependencies, full of unpatched security issues.</p>
]]></description><pubDate>Fri, 10 Apr 2026 15:27:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47719596</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=47719596</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47719596</guid></item><item><title><![CDATA[New comment by whytevuhuni in "r/programming bans all discussion of LLM programming"]]></title><description><![CDATA[
<p>Maybe this was a genius move made precisely to be ambiguous on whether it was April Fools or not... so that the author can later read the room and clarify whether it was or was not April Fools, without much repercussion either way.</p>
]]></description><pubDate>Thu, 02 Apr 2026 06:02:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47610500</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=47610500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47610500</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Why I love NixOS"]]></title><description><![CDATA[
<p>That's not much different than other distros, because the way auto-update usually works, is it can't use root permissions or the system package manager (in <i>any</i> distro), so it has to install the newer version in $HOME. Once the update is installed, the system package becomes a trampoline to that.<p>I tried Discord, and this one seems to download some updates on first run, but the version sticks to the one from the system (0.0.127, latest is 0.0.129). So I assume it just doesn't update, or it tries to and fails.</p>
]]></description><pubDate>Sun, 22 Mar 2026 17:53:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47480171</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=47480171</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47480171</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Helix: A post-modern text editor"]]></title><description><![CDATA[
<p>Interesting, although I checked and on NixOS the binary is just 29MB. It was statically linked, with just libc left as dynamic.<p>I think 29MB is still huge for a terminal text editor, but nevertheless not "hundreds".</p>
]]></description><pubDate>Sat, 07 Mar 2026 06:45:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47285114</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=47285114</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47285114</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Nannou – A creative coding framework for Rust"]]></title><description><![CDATA[
<p>Will it be okay though? i32 to u64 has two ways to convert it:<p><pre><code>    i32 -> u32 -> u64
    i32 -> i64 -> u64
</code></pre>
This matters with negative numbers, where the first one pads with 32 bits of 0, the second one pads it with 32 bits of 1. Sometimes (as it once happened to me), you wanted the wrong one.</p>
]]></description><pubDate>Sat, 31 Jan 2026 07:20:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=46834261</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46834261</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46834261</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Memory Safety Is ..."]]></title><description><![CDATA[
<p>Not quite, because depending on the compiler implementation / memory model, other things can also lead to UB, and thus be unsafe, e.g.:<p>* data races in a multi-threaded program<p>* type-casting to the wrong type (e.g. via unions) with compiler optimizations that rely on proper types<p>* assuming values are absolutely never aliased (shared xor mutable) when there's actually a way to create aliased values (e.g. unsafe {} and raw pointers)<p>* creating objects out of a sequence of bytes that is not valid for their type<p>...and likely many others I can't remember.</p>
]]></description><pubDate>Wed, 31 Dec 2025 13:46:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46443995</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46443995</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46443995</guid></item><item><title><![CDATA[New comment by whytevuhuni in "[dead]"]]></title><description><![CDATA[
<p>Rust is not mentioned in the article. From HN's guidelines:<p>> Otherwise please use the original title, unless it is misleading or linkbait; don't editorialize.</p>
]]></description><pubDate>Sat, 27 Dec 2025 21:18:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46405342</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46405342</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46405342</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Package managers keep using Git as a database, it never works out"]]></title><description><![CDATA[
<p>No mention of Guix. Has its situation improved? I remember waiting almost an hour on “guix pull” to catch up with its git repo on a fresh install.</p>
]]></description><pubDate>Sat, 27 Dec 2025 18:17:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=46403874</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46403874</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46403874</guid></item><item><title><![CDATA[New comment by whytevuhuni in "How I think about Kubernetes"]]></title><description><![CDATA[
<p>> What's the really simple K8s?<p>I think K8s couples two concepts: the declarative-style cluster management, and infrastructure + container orchestration. Keep CRDs, remove everything else, and implement the business-specific stuff on top of the CRD-only layer.<p>This would give something like DBus, except cluster-wide, with declarative features. Then, container orchestration would be an application you install on top of that.<p>Edit: I see a sibling mentioned KCP. I’ve never heard of it before, but I think that’s probably exactly what I’d like.</p>
]]></description><pubDate>Fri, 26 Dec 2025 22:20:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46396958</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46396958</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46396958</guid></item><item><title><![CDATA[New comment by whytevuhuni in "The Algebra of Loans in Rust"]]></title><description><![CDATA[
<p>Right. The &pin, &own, and &uninit in the article (or rather everything except & and &mut in that table) do not exist in Rust.<p>I have seen &pin being proposed recently [1], first time I'm seeing the others.<p>[1] <a href="https://blog.rust-lang.org/2025/11/19/project-goals-update-october-2025/" rel="nofollow">https://blog.rust-lang.org/2025/11/19/project-goals-update-o...</a></p>
]]></description><pubDate>Fri, 26 Dec 2025 10:54:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46390998</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46390998</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46390998</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Microsoft confirms "eliminate C and C++" plan, translate code to Rust using AI"]]></title><description><![CDATA[
<p>I see, most likely thread-safety then. Rust will prevent accessing data shared between threads unless you first lock a mutex, use an atomic, etc.<p>Or rather, it gives abstractions so that higher-level types in stdlib and other libraries can prevent such access. The low-level implementation of the Mutex/etc types themselves do the same thing C and C++ do, via unsafe blocks, atomic primitives, fences, etc.</p>
]]></description><pubDate>Wed, 24 Dec 2025 17:10:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46377290</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46377290</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46377290</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Microsoft confirms "eliminate C and C++" plan, translate code to Rust using AI"]]></title><description><![CDATA[
<p>Are you sure you mean concurrency safety, and not thread safety?<p>I think Rust's concurrency safety (e.g. async on a single thread) is mostly granted by the Pin trait [1], and the async code-gen making sure lifetimes make sense over .await points (which requires things to be either pinned across those points, or to not care about their location in memory potentially moving).<p>Thread safety is instead given by a couple of auto-derived marker traits, called Send and Sync [2], that denote which kinds of data can be sent or shared between threads safely.<p>This is coupled with types like Arc, Mutex, etc that can wrap data that isn't safe to share, so that the wrapped data as a whole is safe to share. It is also coupled with functions (like std::thread::spawn [3] and MPSC's send()) that have a requirement for the data to either be Sync/Send, or to take full ownership of it (which ensures there are no other active references to it).<p>[1] <a href="https://doc.rust-lang.org/std/pin/struct.Pin.html" rel="nofollow">https://doc.rust-lang.org/std/pin/struct.Pin.html</a><p>[2] <a href="https://doc.rust-lang.org/std/marker/trait.Sync.html" rel="nofollow">https://doc.rust-lang.org/std/marker/trait.Sync.html</a><p>[3] <a href="https://doc.rust-lang.org/std/thread/fn.spawn.html" rel="nofollow">https://doc.rust-lang.org/std/thread/fn.spawn.html</a></p>
]]></description><pubDate>Wed, 24 Dec 2025 07:13:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=46373233</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46373233</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46373233</guid></item><item><title><![CDATA[New comment by whytevuhuni in "The Tor Project is switching to Rust"]]></title><description><![CDATA[
<p>This is the 3rd copy of a flagged comment within a single minute.</p>
]]></description><pubDate>Fri, 12 Dec 2025 21:25:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46249162</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46249162</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46249162</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Rust in the kernel is no longer experimental"]]></title><description><![CDATA[
<p>> The damage from the correction that comes later will do so much harm.<p>Which part here is misinformation? Do you know something we, or the author, does not? I'm quite curious what that might be.</p>
]]></description><pubDate>Wed, 10 Dec 2025 22:17:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=46224699</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46224699</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46224699</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Thoughts on Go vs. Rust vs. Zig"]]></title><description><![CDATA[
<p>In Rust you typically use the "log" crate, which also has a global logger instance [0]. There is also "tracing" which uses thread local storage.<p>As another comment said, global state is allowed. It just has to be proven thread-safe via Rust's Send and Sync traits, and 'static lifetime. I've used things like LazyLock and ArcSwap to achieve this in the past.<p>[0] <a href="https://docs.rs/log/latest/log/fn.set_logger.html" rel="nofollow">https://docs.rs/log/latest/log/fn.set_logger.html</a></p>
]]></description><pubDate>Sat, 06 Dec 2025 18:33:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46175491</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46175491</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46175491</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Why we built Lightpanda in Zig"]]></title><description><![CDATA[
<p>I've been having an absolutely great time with Rust's bumpalo crate, which works very similarly. The lifetime protection still works great, and it's actually a lot more permissive than normal Rust, since it's the same lifetime everywhere.<p>The sad exception is obviously that Rust's std collections are not built on top of it, and neither is almost anything else.<p>But nevertheless, I think this means it's not a Zig vs Rust thing, it's a Zig stdlib vs Rust stdlib thing, and Rust's stdlib can be replaced via #[no_std]. In the far future, it's likely someone will make a Zig-like stdlib for Rust too, with a &dyn Allocator inside collections.</p>
]]></description><pubDate>Fri, 05 Dec 2025 22:42:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46168374</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46168374</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46168374</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Zig's new plan for asynchronous programs"]]></title><description><![CDATA[
<p>> Because they don't use async inside.<p>But they use I/O inside, and we arrive at this issue:<p>I'm writing async, and I need to call std::fs::read. I can't, because it blocks the thread; I could use spawn_blocking but that defeats the purpose of async. So instead I have to go look for a similar function but of the other color, probably from tokio.<p>In Zig, if you're writing sync, you call the standard library function for reading files. If you're writing async, you call the <i>same</i> library function for reading files. Then, the creator of the `io` object decides whether the whole thing will be sync or async.</p>
]]></description><pubDate>Tue, 02 Dec 2025 22:08:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46127612</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46127612</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46127612</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Zig's new plan for asynchronous programs"]]></title><description><![CDATA[
<p>But that's the thing, idiomatic Rust sync code almost never passes around handles, even when they need to do I/O.<p>You might be different, and you might start doing that in your code, but almost none of either std or 3rd party libraries will cooperate with you.<p>The difference with Zig is not in its capabilities, but rather in how the ecosystem around its stdlib is built.<p>The equivalent in Rust would be if almost all I/O functions in std would be async; granted that would be far too expensive and disruptive given how async works.</p>
]]></description><pubDate>Tue, 02 Dec 2025 19:49:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46125856</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46125856</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46125856</guid></item><item><title><![CDATA[New comment by whytevuhuni in "Zig's new plan for asynchronous programs"]]></title><description><![CDATA[
<p>Here's a problem with that:<p><pre><code>    Cannot start a runtime from within a runtime. This happens because a function (like `block_on`) attempted to block the current thread while the thread is being used to drive asynchronous tasks.
</code></pre>
<a href="https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=8abf9e00ef6039d9cd5f8fd7adc6bab0" rel="nofollow">https://play.rust-lang.org/?version=stable&mode=debug&editio...</a></p>
]]></description><pubDate>Tue, 02 Dec 2025 18:34:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46124665</link><dc:creator>whytevuhuni</dc:creator><comments>https://news.ycombinator.com/item?id=46124665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46124665</guid></item></channel></rss>