<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: davidlattimore</title><link>https://news.ycombinator.com/user?id=davidlattimore</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 15 May 2026 18:14:44 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=davidlattimore" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by davidlattimore in "Wild – A fast linker for Linux"]]></title><description><![CDATA[
<p>I'm not actually sure, mostly because I'm not really familiar with the Mold codebase. One clue is that I've heard that Mold gets about a 10% speedup by using a faster allocator (mimalloc). I've tried using mimalloc with Wild and didn't get any measurable speedup. This suggests to me that Mold is probably making heavier use of the allocator than Wild is. With Wild, I've certainly tried to optimise the number of heap allocations.<p>But in general, I'd guess just different design decisions. As for how this might be related to Rust - I'm certain that were Wild ported from Rust to C or C++, that it would perform very similarly. However, code patterns that are fine in Rust due to the borrow checker, would be footguns in languages like C or C++, so maintaining that code could be tricky. Certainly when I've coded in C++ in the past, I've found myself coding more defensively, even at a small performance cost, whereas with Rust, I'm  able to be a lot bolder because I know the compiler has got my back.</p>
]]></description><pubDate>Sat, 25 Jan 2025 00:20:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=42818238</link><dc:creator>davidlattimore</dc:creator><comments>https://news.ycombinator.com/item?id=42818238</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42818238</guid></item><item><title><![CDATA[New comment by davidlattimore in "Wild – A fast linker for Linux"]]></title><description><![CDATA[
<p>Not yet. The Linux kernel uses linker scripts, which Wild doesn't yet support. I'd like to add support for linker scripts at some point, but it's some way down the priority list.</p>
]]></description><pubDate>Sat, 25 Jan 2025 00:05:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=42818165</link><dc:creator>davidlattimore</dc:creator><comments>https://news.ycombinator.com/item?id=42818165</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42818165</guid></item><item><title><![CDATA[New comment by davidlattimore in "Wild – A fast linker for Linux"]]></title><description><![CDATA[
<p>It sounds like you're building from scratch. In that case, the majority of the time will be spent compiling code, not linking. The case for fast linkers is strongest when doing iterative development. i.e. when making small changes to your code then rebuilding and running the result. With a small change, there's generally very little work for the compiler to do, but linking is still done from scratch, so tends to dominate.</p>
]]></description><pubDate>Fri, 24 Jan 2025 21:41:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=42817186</link><dc:creator>davidlattimore</dc:creator><comments>https://news.ycombinator.com/item?id=42817186</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42817186</guid></item><item><title><![CDATA[New comment by davidlattimore in "Wild – A fast linker for Linux"]]></title><description><![CDATA[
<p>Unfortunately gcc doesn't accept arbitrary linkers via the `-fuse-ld=` flag. The only linkers it accepts are bfd, gold lld and mold. It is possible to use gcc to invoke wild as the linker, but currently to do that, you need to create a directory containing the wild linker and rename the binary (or a symlink) to "ld", then pass `-B/path/to/directory/containing/wild` to gcc.<p>As for why Rust uses gcc or clang to invoke the linker rather than invoking the linker directly - it's because the C compiler knows what linker flags are needed on the current platform in order to link against libc and the C runtime. Things like `Scrt1.o`, `crti.o`, `crtbeginS.o`, `crtendS.o` and `crtn.o`.</p>
]]></description><pubDate>Fri, 24 Jan 2025 21:24:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=42817056</link><dc:creator>davidlattimore</dc:creator><comments>https://news.ycombinator.com/item?id=42817056</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42817056</guid></item></channel></rss>