<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: vitaut</title><link>https://news.ycombinator.com/user?id=vitaut</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Apr 2026 18:55:53 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=vitaut" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by vitaut in "The hidden compile-time cost of C++26 reflection"]]></title><description><![CDATA[
<p>The binary bloat is also caused by unnecessary inlining and the linker eliminates most of it (but it's still annoying e.g. for godbolt). {fmt} supports a superset of std::format and std::print features including localization. stringstream's bloat is unrelated and mostly caused by large per-call binary code from concatenation-based API.</p>
]]></description><pubDate>Mon, 16 Mar 2026 18:56:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47403190</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=47403190</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47403190</guid></item><item><title><![CDATA[New comment by vitaut in "The hidden compile-time cost of C++26 reflection"]]></title><description><![CDATA[
<p>std::print author here. Indeed, std::print shouldn't be expensive to compile, it's just a thin wrapper around a single type-erased function. The only reason why it is expensive in libstdc++ is that the type-erased function is inlined which goes against the proposed design but unfortunately can't be enforced via the standard wording and remains a Quality of Implementation (QoI) issue.<p>Fortunately, libstdc++ is fixing this: <a href="https://gcc.gnu.org/pipermail/gcc-patches/2026-March/710275.html" rel="nofollow">https://gcc.gnu.org/pipermail/gcc-patches/2026-March/710275....</a>. There is still more work to optimize the includes but it's a good start.</p>
]]></description><pubDate>Mon, 16 Mar 2026 18:52:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47403128</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=47403128</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47403128</guid></item><item><title><![CDATA[New comment by vitaut in "C++ Modules Are Here to Stay"]]></title><description><![CDATA[
<p>Modules have been working reasonably well in clang for a while now but MSVC support is indeed buggy.</p>
]]></description><pubDate>Thu, 29 Jan 2026 22:24:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=46817646</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46817646</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46817646</guid></item><item><title><![CDATA[New comment by vitaut in "C++ Modules Are Here to Stay"]]></title><description><![CDATA[
<p>This style is used in {fmt} and is great for documentation, especially on smaller screens: <a href="https://fmt.dev/12.0/api/#format_to_n" rel="nofollow">https://fmt.dev/12.0/api/#format_to_n</a></p>
]]></description><pubDate>Thu, 29 Jan 2026 22:22:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=46817634</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46817634</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46817634</guid></item><item><title><![CDATA[New comment by vitaut in "C++ Modules Are Here to Stay"]]></title><description><![CDATA[
<p>We did see build time improvements from deploying modules at Meta.</p>
]]></description><pubDate>Thu, 29 Jan 2026 22:21:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=46817607</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46817607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46817607</guid></item><item><title><![CDATA[Astrological CPU Scheduler]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/zampierilucas/scx_horoscope">https://github.com/zampierilucas/scx_horoscope</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46797874">https://news.ycombinator.com/item?id=46797874</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 28 Jan 2026 16:49:41 +0000</pubDate><link>https://github.com/zampierilucas/scx_horoscope</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46797874</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46797874</guid></item><item><title><![CDATA[New comment by vitaut in "Banned C++ features in Chromium"]]></title><description><![CDATA[
<p>The main effect of this is that some of the conversions between char and char8_t are inefficient.</p>
]]></description><pubDate>Sun, 25 Jan 2026 15:32:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46754923</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46754923</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46754923</guid></item><item><title><![CDATA[Bitwise conversion of doubles using only FP multiplication and addition (2020)]]></title><description><![CDATA[
<p>Article URL: <a href="https://dougallj.wordpress.com/2020/05/10/bitwise-conversion-of-doubles-using-only-floating-point-multiplication-and-addition/">https://dougallj.wordpress.com/2020/05/10/bitwise-conversion-of-doubles-using-only-floating-point-multiplication-and-addition/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46754522">https://news.ycombinator.com/item?id=46754522</a></p>
<p>Points: 57</p>
<p># Comments: 6</p>
]]></description><pubDate>Sun, 25 Jan 2026 14:55:03 +0000</pubDate><link>https://dougallj.wordpress.com/2020/05/10/bitwise-conversion-of-doubles-using-only-floating-point-multiplication-and-addition/</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46754522</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46754522</guid></item><item><title><![CDATA[New comment by vitaut in "Floating-Point Printing and Parsing Can Be Simple and Fast"]]></title><description><![CDATA[
<p>I was impressed how fast the Rust folks adopted this! Kudos to David Tolnay and others.</p>
]]></description><pubDate>Sat, 24 Jan 2026 15:50:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46744575</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46744575</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46744575</guid></item><item><title><![CDATA[New comment by vitaut in "Floating-Point Printing and Parsing Can Be Simple and Fast"]]></title><description><![CDATA[
<p>Note that ~3-6ns is on modern desktop CPUs where extra few kB matter less. On microcontrollers it will be larger in absolute terms but I would expect the relative difference to also be moderate.</p>
]]></description><pubDate>Sat, 24 Jan 2026 15:49:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46744564</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46744564</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46744564</guid></item><item><title><![CDATA[New comment by vitaut in "Floating-Point Printing and Parsing Can Be Simple and Fast"]]></title><description><![CDATA[
<p>I don't have exact numbers but from measuring perf changes per commit it seemed that most improvements came from "printing" (e.g. switching to BCD and SIMD, branchless exponent output) and microoptimizations rather than algorithmic improvements.</p>
]]></description><pubDate>Sat, 24 Jan 2026 03:27:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46740777</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46740777</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46740777</guid></item><item><title><![CDATA[New comment by vitaut in "Floating-Point Printing and Parsing Can Be Simple and Fast"]]></title><description><![CDATA[
<p>If you compress the table (see my earlier comment) and use plain Schubfach then you can get really small binary size and decent perf. IIRC Dragonbox with the compressed table was ~30% slower which is a reasonable price to pay and still faster than most algorithms including Ryu.</p>
]]></description><pubDate>Sat, 24 Jan 2026 03:24:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46740760</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46740760</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46740760</guid></item><item><title><![CDATA[New comment by vitaut in "Floating-Point Printing and Parsing Can Be Simple and Fast"]]></title><description><![CDATA[
<p>It is possible to compress the table using the technique from Dragonbox (<a href="https://github.com/fmtlib/fmt/blob/8b8fccdad40decf68687ec0384f8894ad589615c/include/fmt/format-inl.h#L1050-L1059" rel="nofollow">https://github.com/fmtlib/fmt/blob/8b8fccdad40decf68687ec038...</a>) at the cost of some perf. It's on my TODO list for zmij.</p>
]]></description><pubDate>Sat, 24 Jan 2026 03:20:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46740744</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46740744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46740744</guid></item><item><title><![CDATA[New comment by vitaut in "Floating-Point Printing and Parsing Can Be Simple and Fast"]]></title><description><![CDATA[
<p>Note that it has the same table of powers of 10: <a href="https://github.com/rsc/fpfmt/blob/main/bench/uscalec/pow10.h" rel="nofollow">https://github.com/rsc/fpfmt/blob/main/bench/uscalec/pow10.h</a></p>
]]></description><pubDate>Sat, 24 Jan 2026 03:18:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46740732</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46740732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46740732</guid></item><item><title><![CDATA[New comment by vitaut in "Banned C++ features in Chromium"]]></title><description><![CDATA[
<p>Somewhat notable is that `char8_t` is banned with very reasonable motivation that applies to most codebases:<p>> Use char and unprefixed character literals. Non-UTF-8 encodings are rare enough in Chromium that the value of distinguishing them at the type level is low, and char8_t* is not interconvertible with char* (what ~all Chromium, STL, and platform-specific APIs use), so using u8 prefixes would obligate us to insert casts everywhere. If you want to declare at a type level that a block of data is string-like and not an arbitrary binary blob, prefer std::string[_view] over char*.</p>
]]></description><pubDate>Fri, 23 Jan 2026 23:44:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46739514</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46739514</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46739514</guid></item><item><title><![CDATA[New comment by vitaut in "Floating-Point Printing and Parsing Can Be Simple and Fast"]]></title><description><![CDATA[
<p>The shortest double-to-string algorithm is basically Schubfach or, rather, it's variation Tejú Jaguá with digit output from Dragonbox. Schubfach is a beautiful algorithm: I implemented and wrote about it in <a href="https://vitaut.net/posts/2025/smallest-dtoa/" rel="nofollow">https://vitaut.net/posts/2025/smallest-dtoa/</a>. However, in terms of performance you can do much better nowadays. For example, <a href="https://github.com/vitaut/zmij" rel="nofollow">https://github.com/vitaut/zmij</a> does 1 instead of 2-3 costly 128x64-bit multiplications in the common case and has much more efficient digit output.</p>
]]></description><pubDate>Tue, 20 Jan 2026 14:10:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46691978</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46691978</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46691978</guid></item><item><title><![CDATA[New comment by vitaut in "Is Rust faster than C?"]]></title><description><![CDATA[
<p>Other examples are CTRE (<a href="https://github.com/hanickadot/compile-time-regular-expressions" rel="nofollow">https://github.com/hanickadot/compile-time-regular-expressio...</a>) and format string compilation (<a href="https://fmt.dev/12.0/api/#compile-api" rel="nofollow">https://fmt.dev/12.0/api/#compile-api</a>). The closest C counterpart is re2c which also requires external tooling.</p>
]]></description><pubDate>Wed, 14 Jan 2026 23:17:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=46625408</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46625408</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46625408</guid></item><item><title><![CDATA[New comment by vitaut in "Is Rust faster than C?"]]></title><description><![CDATA[
<p>It's easier to write faster code in a language with compile-time facilities such as C++ or Rust than in C. For example, doing this sort of platform-specific optimization in C is a nightmare <a href="https://github.com/vitaut/zmij/blob/91f07497a3f6e2fb3a9f999a7015a757b897503a/zmij.cc#L314-L327" rel="nofollow">https://github.com/vitaut/zmij/blob/91f07497a3f6e2fb3a9f999a...</a> (likely impossible without an external pass to generate multiple lookup tables).</p>
]]></description><pubDate>Wed, 14 Jan 2026 23:15:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46625373</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46625373</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46625373</guid></item><item><title><![CDATA[LLVM: The bad parts]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.npopov.com/2026/01/11/LLVM-The-bad-parts.html">https://www.npopov.com/2026/01/11/LLVM-The-bad-parts.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46588837">https://news.ycombinator.com/item?id=46588837</a></p>
<p>Points: 389</p>
<p># Comments: 77</p>
]]></description><pubDate>Mon, 12 Jan 2026 14:18:13 +0000</pubDate><link>https://www.npopov.com/2026/01/11/LLVM-The-bad-parts.html</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46588837</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46588837</guid></item><item><title><![CDATA[New comment by vitaut in "Zmij: Faster floating point double-to-string conversion"]]></title><description><![CDATA[
<p>Please note that there is some error in your port:<p>Error: roundtrip fail 4.9406564584124654e-324 -> '5.e-309' -> 4.9999999999999995e-309<p>Error: roundtrip fail 6.6302941479442929e-310 -> '6.6302941479443e-309' -> 6.6302941479442979e-309<p>Error: roundtrip fail -1.9153028533493997e-310 -> '-1.9153028533494e-309' -> -1.9153028533493997e-309<p>Error: roundtrip fail -2.5783653320086361e-312 -> '-2.57836533201e-309' -> -2.5783653320099997e-309</p>
]]></description><pubDate>Sat, 20 Dec 2025 05:00:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46333732</link><dc:creator>vitaut</dc:creator><comments>https://news.ycombinator.com/item?id=46333732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46333732</guid></item></channel></rss>