<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: ltratt</title><link>https://news.ycombinator.com/user?id=ltratt</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 23 Apr 2026 09:04:54 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ltratt" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ltratt in "Garbage collection without unsafe code"]]></title><description><![CDATA[
<p>It would really be good if someone could provide an updated overview of all of the "GCs for Rust" created thus far -- for a while I tried to keep up with them, but there are just too many! When we wrote the Alloy paper, we took Manish's survey as a starting point, and covered as many GCs of different kinds as we could squeeze in [1]. But even then there was no way we could squeeze _everything_ in, and I've seen at least 2 or 3 new ones since (safe-gc is older than the Alloy paper, so I'm not including it in that count)!<p>[1] <a href="https://soft-dev.org/pubs/html/hughes_tratt__garbage_collection_for_rust_the_finalizer_frontier/index.html#x1-2900010" rel="nofollow">https://soft-dev.org/pubs/html/hughes_tratt__garbage_collect...</a></p>
]]></description><pubDate>Wed, 22 Apr 2026 10:19:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47861453</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=47861453</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47861453</guid></item><item><title><![CDATA[New comment by ltratt in "Retrofitting JIT Compilers into C Interpreters"]]></title><description><![CDATA[
<p>> If this project would be able to detect the interpreter hotspots itself and completely automate the procedure, it would be great.<p>I don't think that's realistic; or, at least, not if you want good performance. You need to use quite a bit of knowledge about your context to know when best to add optimisation hints. That said, it's not impossible to imagine an LLM working this out, if not today, then perhaps in the not-too-distant future! But that's above my pay grade.</p>
]]></description><pubDate>Thu, 16 Apr 2026 14:42:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47793738</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=47793738</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47793738</guid></item><item><title><![CDATA[New comment by ltratt in "Retrofitting JIT Compilers into C Interpreters"]]></title><description><![CDATA[
<p>You're quite right that since we're working with LLVM IR, adapting to other languages is probably not _that_ difficult, though these things always end up taking more time than I expect! Since the majority of real-world problems in this area depend on C interpreters, we put our limited resources to that problem. You're also right that "interpreters" is a pretty vague category, and there are other parts of C (and other) programs that could be yk-ified, though I suspect it would be a fairly specialised subset of programs.</p>
]]></description><pubDate>Thu, 16 Apr 2026 07:00:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47789600</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=47789600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47789600</guid></item><item><title><![CDATA[New comment by ltratt in "Retrofitting JIT Compilers into C Interpreters"]]></title><description><![CDATA[
<p>Our fork of LLVM does add a pass, amongst other changes, but we also have to do things like change stackmaps in a way that breaks compatibility. Whether stackmaps in their current incarnation are worth retaining compatibility for is above my pay grade! So some of our changes are probably upstreamable, but some might be considered too niche for wider integration.</p>
]]></description><pubDate>Thu, 16 Apr 2026 06:56:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47789563</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=47789563</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47789563</guid></item><item><title><![CDATA[Retrofitting JIT Compilers into C Interpreters]]></title><description><![CDATA[
<p>Article URL: <a href="https://tratt.net/laurie/blog/2026/retrofitting_jit_compilers_into_c_interpreters.html">https://tratt.net/laurie/blog/2026/retrofitting_jit_compilers_into_c_interpreters.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47777897">https://news.ycombinator.com/item?id=47777897</a></p>
<p>Points: 135</p>
<p># Comments: 26</p>
]]></description><pubDate>Wed, 15 Apr 2026 12:00:24 +0000</pubDate><link>https://tratt.net/laurie/blog/2026/retrofitting_jit_compilers_into_c_interpreters.html</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=47777897</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47777897</guid></item><item><title><![CDATA[Some Things I've Learned About Software [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=RJgDW2AERr8">https://www.youtube.com/watch?v=RJgDW2AERr8</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46593441">https://news.ycombinator.com/item?id=46593441</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Mon, 12 Jan 2026 20:00:37 +0000</pubDate><link>https://www.youtube.com/watch?v=RJgDW2AERr8</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=46593441</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46593441</guid></item><item><title><![CDATA[New comment by ltratt in "Async and Finaliser Deadlocks"]]></title><description><![CDATA[
<p>I'm assuming you're referring to the Python finaliser example? If so, there's no syntax sugar hiding function calls to finalisers: you can verify that by running the code on PyPy, where the point at which the finaliser is called is different. Indeed, for this short-running program, the most likely outcome is that PyPy won't call the finaliser before the program completes!</p>
]]></description><pubDate>Wed, 12 Nov 2025 19:36:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=45905158</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=45905158</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45905158</guid></item><item><title><![CDATA[What Context Can Bring to Terminal Mouse Clicks]]></title><description><![CDATA[
<p>Article URL: <a href="https://tratt.net/laurie/blog/2025/what_context_can_bring_to_terminal_mouse_clicks.html">https://tratt.net/laurie/blog/2025/what_context_can_bring_to_terminal_mouse_clicks.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45757621">https://news.ycombinator.com/item?id=45757621</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 30 Oct 2025 08:27:52 +0000</pubDate><link>https://tratt.net/laurie/blog/2025/what_context_can_bring_to_terminal_mouse_clicks.html</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=45757621</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45757621</guid></item><item><title><![CDATA[What Context Can Bring to Terminal Mouse Clicks]]></title><description><![CDATA[
<p>Article URL: <a href="https://tratt.net/laurie/blog/2025/what_context_can_bring_to_terminal_mouse_clicks.html">https://tratt.net/laurie/blog/2025/what_context_can_bring_to_terminal_mouse_clicks.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45754389">https://news.ycombinator.com/item?id=45754389</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 29 Oct 2025 23:16:51 +0000</pubDate><link>https://tratt.net/laurie/blog/2025/what_context_can_bring_to_terminal_mouse_clicks.html</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=45754389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45754389</guid></item><item><title><![CDATA[New comment by ltratt in "Garbage collection for Rust: The finalizer frontier"]]></title><description><![CDATA[
<p>The only way to forbid it would be to forbid creating pointers from `Gc<T>`. That would, for example, preclude a slew of tricks that high performance language VMs need. That's an acceptable trade-off for some, of course, but not all.</p>
]]></description><pubDate>Wed, 15 Oct 2025 21:27:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45598555</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=45598555</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45598555</guid></item><item><title><![CDATA[New comment by ltratt in "Garbage collection for Rust: The finalizer frontier"]]></title><description><![CDATA[
<p>We don't exactly <i>want</i> Alloy to have to be conservative, but Rust's semantics allow pointers to be converted to usizes (in safe mode) and back again (in unsafe mode), and this is something code really does. So if we wanted to provide an Rc-like API -- and we found reasonable code really does need it -- there wasn't much choice.<p>I don't think Rust's design in this regard is ideal, but then again what language is perfect? I designed languages for a long while and made far more, and much more egregious, mistakes! FWIW, I have written up my general thoughts on static integer types, because it's a surprisingly twisty subject for new languages <a href="https://tratt.net/laurie/blog/2021/static_integer_types.html" rel="nofollow">https://tratt.net/laurie/blog/2021/static_integer_types.html</a></p>
]]></description><pubDate>Wed, 15 Oct 2025 18:53:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45596892</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=45596892</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45596892</guid></item><item><title><![CDATA[New comment by ltratt in "Garbage collection for Rust: The finalizer frontier"]]></title><description><![CDATA[
<p>If you've used Chrome or Safari to read this post, you've used a program that uses (at least in parts) conservative GC. [I don't know if Firefox uses conservative GC; it wouldn't surprise me if it does.] This partly reflects shortcomings in our current compilers and in current programming language design: even Rust has some decisions (e.g. pointers can be put in `usize`s) that make it hard to do what would seem at first glance to be the right thing.</p>
]]></description><pubDate>Wed, 15 Oct 2025 16:46:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=45595271</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=45595271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45595271</guid></item><item><title><![CDATA[Garbage collection for Rust: The finalizer frontier]]></title><description><![CDATA[
<p>Article URL: <a href="https://soft-dev.org/pubs/html/hughes_tratt__garbage_collection_for_rust_the_finalizer_frontier/">https://soft-dev.org/pubs/html/hughes_tratt__garbage_collection_for_rust_the_finalizer_frontier/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45591149">https://news.ycombinator.com/item?id=45591149</a></p>
<p>Points: 144</p>
<p># Comments: 180</p>
]]></description><pubDate>Wed, 15 Oct 2025 12:08:04 +0000</pubDate><link>https://soft-dev.org/pubs/html/hughes_tratt__garbage_collection_for_rust_the_finalizer_frontier/</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=45591149</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45591149</guid></item><item><title><![CDATA[Why Firsts Matter]]></title><description><![CDATA[
<p>Article URL: <a href="https://tratt.net/laurie/blog/2025/why_firsts_matter.html">https://tratt.net/laurie/blog/2025/why_firsts_matter.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45268024">https://news.ycombinator.com/item?id=45268024</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 16 Sep 2025 21:04:57 +0000</pubDate><link>https://tratt.net/laurie/blog/2025/why_firsts_matter.html</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=45268024</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45268024</guid></item><item><title><![CDATA[Why Firsts Matter]]></title><description><![CDATA[
<p>Article URL: <a href="https://tratt.net/laurie/blog/2025/why_firsts_matter.html">https://tratt.net/laurie/blog/2025/why_firsts_matter.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45261346">https://news.ycombinator.com/item?id=45261346</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 16 Sep 2025 12:29:45 +0000</pubDate><link>https://tratt.net/laurie/blog/2025/why_firsts_matter.html</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=45261346</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45261346</guid></item><item><title><![CDATA[New comment by ltratt in "LLM Inflation"]]></title><description><![CDATA[
<p>As Koffiepoeder suggests, since the vast majority of content on my site is static, I only have to compress a file once when I build the site, no matter how many people later download it. [The small amount of dynamic content on my site isn't compressed, for the reason you suggest.]</p>
]]></description><pubDate>Wed, 06 Aug 2025 13:18:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=44811586</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=44811586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44811586</guid></item><item><title><![CDATA[Comparing the Glove80 and Maltron Keyboards]]></title><description><![CDATA[
<p>Article URL: <a href="https://tratt.net/laurie/blog/2025/comparing_the_glove80_and_maltron_keyboards.html">https://tratt.net/laurie/blog/2025/comparing_the_glove80_and_maltron_keyboards.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44653586">https://news.ycombinator.com/item?id=44653586</a></p>
<p>Points: 82</p>
<p># Comments: 43</p>
]]></description><pubDate>Tue, 22 Jul 2025 22:12:25 +0000</pubDate><link>https://tratt.net/laurie/blog/2025/comparing_the_glove80_and_maltron_keyboards.html</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=44653586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44653586</guid></item><item><title><![CDATA[The Fifth Kind of Optimisation]]></title><description><![CDATA[
<p>Article URL: <a href="https://tratt.net/laurie/blog/2025/the_fifth_kind_of_optimisation.html">https://tratt.net/laurie/blog/2025/the_fifth_kind_of_optimisation.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43565753">https://news.ycombinator.com/item?id=43565753</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 03 Apr 2025 06:52:45 +0000</pubDate><link>https://tratt.net/laurie/blog/2025/the_fifth_kind_of_optimisation.html</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=43565753</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43565753</guid></item><item><title><![CDATA[The Fifth Kind of Optimisation]]></title><description><![CDATA[
<p>Article URL: <a href="https://tratt.net/laurie/blog/2025/the_fifth_kind_of_optimisation.html">https://tratt.net/laurie/blog/2025/the_fifth_kind_of_optimisation.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43560672">https://news.ycombinator.com/item?id=43560672</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 02 Apr 2025 19:39:50 +0000</pubDate><link>https://tratt.net/laurie/blog/2025/the_fifth_kind_of_optimisation.html</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=43560672</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43560672</guid></item><item><title><![CDATA[Better Shell History Search]]></title><description><![CDATA[
<p>Article URL: <a href="https://tratt.net/laurie/blog/2025/better_shell_history_search.html">https://tratt.net/laurie/blog/2025/better_shell_history_search.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43476793">https://news.ycombinator.com/item?id=43476793</a></p>
<p>Points: 213</p>
<p># Comments: 93</p>
]]></description><pubDate>Tue, 25 Mar 2025 22:35:17 +0000</pubDate><link>https://tratt.net/laurie/blog/2025/better_shell_history_search.html</link><dc:creator>ltratt</dc:creator><comments>https://news.ycombinator.com/item?id=43476793</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43476793</guid></item></channel></rss>