Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #8419

V

vitaut.net

Personal blog · vitaut.netprogrammingsystems

vitaut.net is a personal blog at vitaut.net about programming and systems. Since 2023, 9 different Hacker News readers have linked it 25 times, most often “Schubfach: The smallest floating point double-to-string impleme”. It is still writing: the last post was on 2026-08-18, and you can follow it by feed.

Visit the blog
25mentions?
9HN people?
2023–2026first – last linked?
Links on Hacker News per year · peak 9 in 2025

Too few sampled comments (2) to say how often HN recommends it.?

Why HN links it

Posts by the {fmt} C++ formatting library developer on fast double-to-string conversion and a 65-line string formatting library. Commenters link them as technical background, and one questions a detail.

Summarised by Claude from a sample of 2 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Most-linked posts?

  1. Schubfach: The smallest floating point double-to-string impleme
    4 people · 4 mentions · first linked 2025-11-29
  2. Optimizing the unoptimizable: a journey to faster C++ compile times
    3 people · 3 mentions · first linked 2024-01-06
  3. Honey, I shrunk {fmt}: bringing binary size to 14k and ditching the C++ runtime
    3 people · 3 mentions · first linked 2024-08-30
  4. The fastest double-to-string algorithm you've never heard of
    2 people · 3 mentions · first linked 2026-08-11
  5. Zmij: Faster floating point double-to-string conversion
    2 people · 2 mentions · first linked 2025-12-13

What Hacker News says?

  1. Glad you asked. I recently wrote a post about it: https://vitaut.net/posts/2023/print-in-cpp23/ .

    Comment linking /posts/2023/print-in-cpp23/

    on “Learn Modern C++”
  2. Submitted Honey, I shrunk {fmt}: bringing binary size to 14k and ditching the C++ runtime as a story · 244 points

    HN discussion
  3. With fwrite that would be another level of buffering in addition to FILE's buffer. If you are interested in what {fmt} is doing, a good starting point is https://github.com/fmtlib/fmt/blob/35dcc58263d6b55419a5932bd... . It is also possible to bypass stdio completely and get even faster output ( https://vitaut.net/posts/2020/optimal-file-buffer-size/ ) and while it is great for files, it may introduce interleaving pr…

    Comment linking /posts/2020/optimal-file-buffer-size/

    on “Stdio(3) change: FILE is now opaque”
  4. Submitted Zmij: Faster floating point double-to-string conversion as a story · 148 points

    HN discussion
  5. I read the post and the companion post: https://vitaut.net/posts/2025/smallest-dtoa/ And there’s one detail I found confusing. Suppose I go through the steps to find the rounding interval and determine that k=-3, so there is at most one integer multiple of 10^-3 in the interval (and at least one multiple of 10^-4). For the sake of argument, let’s say that -3 worked: m·10^-3 is in the interval. Then, if m is not a mu…

    Comment linking /posts/2025/smallest-dtoa/

    on “Zmij: Faster floating point double-to-string conversion”
  6. Submitted Optimizing the unoptimizable: a journey to faster C++ compile times as a story · 73 points

    HN discussion
  7. {fmt} is commonly used for performance critical code because it provides some of the fastest numeric formatting and I/O: * https://vitaut.net/posts/2020/fast-int-to-string-revisited/ * https://github.com/fmtlib/fmt/pull/1882 * https://vitaut.net/posts/2020/optimal-file-buffer-size/ Here's just one example: https://aras-p.info/blog/2022/02/03/Speeding-up-Blender-.obj...

    Comment linking /posts/2020/optimal-file-buffer-size/

    on “The C++20 Naughty and Nice List for Game Devs”
  8. Submitted Schubfach: The smallest floating point double-to-string impleme as a story · 33 points

    HN discussion
  9. {fmt} doesn't use reflection and is optimized for build speed using type erasure: https://vitaut.net/posts/2024/faster-cpp-compile-times/

    Comment linking /posts/2024/faster-cpp-compile-times/

    on “C++26: more constexpr in the core language”
  10. Submitted Faster Double-to-String Conversion as a story · 9 points

    HN discussion
  11. I agree that modules is the right long-term solution and in fact {fmt} is modularized: https://vitaut.net/posts/2023/cxx20-modules-in-clang/ .

    Comment linking /posts/2023/cxx20-modules-in-clang/

    on “Optimizing the unoptimizable: a journey to faster C++ compile times”
  12. Submitted Honey, I shrunk {fmt}: bringing binary size to 14k and ditching the C++ runtime as a story · 7 points

    HN discussion
  13. Note that {fmt} provides a lightweight API (`fmt/base.h`) with a superset of `printf` functionality and optimized for build speed ( https://vitaut.net/posts/2024/faster-cpp-compile-times/ ) and binary size ( https://vitaut.net/posts/2024/binary-size/ ) through type erasure. Variadic templates, while OK in simple cases, won't scale for more realistic ones (especially once you start adding support for more types) and…

    Comment linking /posts/2024/binary-size/

    on “A string formatting library in 65 lines of C++”
  14. Submitted Schubfach: The smallest double-to-string implementation as a story · 6 points

    HN discussion
  15. I have recently started re-implementing parts of the standard library myself just to improve compile times (and I did - massively!), but I purposely kept {fmt} around, because I think it's a great library and I thought it would be as fast to compile as you could possibly make it (it likely still is considering what it can do). Also because the dev put a lot of effort into optimizing compile times [1] and seems to be…

    Comment linking /posts/2024/faster-cpp-compile-times/

    on “A string formatting library in 65 lines of C++”
  16. Submitted Double to string conversion in 150 lines of code as a story · 3 points

    HN discussion
  17. std::cout is thread-safe but because of the concatenation-based API parts of the message may interleave. C++23 std::print is safe (and the output doesn't interleave). See https://vitaut.net/posts/2023/print-in-cpp23/ .

    Comment linking /posts/2023/print-in-cpp23/

    on “Tell HN: Python's print function is thread-unsafe”
  18. Submitted A complete floating-point to_chars in 18 kB as a story · 2 points

    HN discussion
  19. The core of newer methods like yy, xjb and zmij is remarkably simple: https://vitaut.net/posts/2026/yy-dtoa/ . Shortest uscale is basically Schubfach or, rather, it's variant called Teju Jagua and has 2-3 wide multiplications compared to 1 for newer methods. The complexity is optional and comes from squeezing the last few nanoseconds =).

    Comment linking /posts/2026/yy-dtoa/

    on “Go 1.27 Is Released”
  20. Submitted The fastest double-to-string algorithm you've never heard of as a story · 2 points

    HN discussion
  21. 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 https://vitaut.net/posts/2025/smallest-dtoa/ . However, in terms of performance you can do much better nowadays. For example, https://github.com/vitaut/zmij does 1 instead of 2-3 costly 128x64-bit multiplications…

    Comment linking /posts/2025/smallest-dtoa/

    on “Floating-Point Printing and Parsing Can Be Simple and Fast”
  22. Submitted The fastest double-to-string algorithm you've never heard of as a story · 2 points

    HN discussion
  23. Submitted std::print in C++23 as a story · 2 points

    HN discussion

Search all of HN for vitaut.net