<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: fuhsnn</title><link>https://news.ycombinator.com/user?id=fuhsnn</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 30 Oct 2026 15:19:25 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=fuhsnn" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by fuhsnn in "Fun Extending the C Preprocessor"]]></title><description><![CDATA[
<p>A builtin is definitely better for the efficiency alone. Vanilla chibicc needs 5GB to preprocess the example.c from map-macro, in comparison to compiling an amalgamation of itself only takes 50 MB. It of course wasn't optimized for memory use but it's a peak into how much token expansions are involved in the wizardry.</p>
]]></description><pubDate>Sun, 18 Oct 2026 19:10:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=50144254</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=50144254</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50144254</guid></item><item><title><![CDATA[New comment by fuhsnn in "Fun Extending the C Preprocessor"]]></title><description><![CDATA[
<p>There was a "__VA_TAIL__" WG14 proposal[1] that made it pretty simple to build custom map-like expansions, the OP's map example would be like:<p>> #define T(x, ...) printf(#x " = %d\n", x); __VA_TAIL__()<p>> T(1, 2, 3, 4, x, y, z)<p>You can play with it in the proposal author's ellipsis[2] and my slimcc[3], it's simple enough to implement (only about 30 lines of C) so I kept it in despite not seeing signs of it getting accepted.<p>[1] <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3307.htm" rel="nofollow">https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3307.htm</a><p>[2] <a href="https://codeberg.org/gustedt/ellipsis" rel="nofollow">https://codeberg.org/gustedt/ellipsis</a><p>[3] <a href="https://github.com/fuhsnn/slimcc" rel="nofollow">https://github.com/fuhsnn/slimcc</a></p>
]]></description><pubDate>Sun, 18 Oct 2026 18:49:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=50144075</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=50144075</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50144075</guid></item><item><title><![CDATA[New comment by fuhsnn in "Reverse Engineering of the M-VAVE FM-1 Pocket Synthesizer Firmware"]]></title><description><![CDATA[
<p>> Give us the SDK's already, why don't, ya .. standardly!!!<p>I think the trend is there, the other day I was surprised that Polyend Endless, the ~$300 prompt-your-pedal thing actually has a minimal SDK on Github too.</p>
]]></description><pubDate>Wed, 07 Oct 2026 19:10:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=49997421</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=49997421</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49997421</guid></item><item><title><![CDATA[New comment by fuhsnn in "Reverse Engineering of the M-VAVE FM-1 Pocket Synthesizer Firmware"]]></title><description><![CDATA[
<p>I did some bits with gen-1 logue-sdk, the NTS-1 could have been a platform like the OP but the processor is severely underpowered for the price in today's standard and discontinued shortly after.</p>
]]></description><pubDate>Wed, 07 Oct 2026 18:56:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=49997254</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=49997254</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49997254</guid></item><item><title><![CDATA[New comment by fuhsnn in "Kcc, a C compiler built solo with an LLM on $100/month boot Linux kernel"]]></title><description><![CDATA[
<p>Well, why treat the assembly version as the main implementation when you have a supposedly equivalent C version around? If this is released as a plain C project I would actually be interested to try it out.</p>
]]></description><pubDate>Fri, 02 Oct 2026 11:08:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=49932153</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=49932153</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49932153</guid></item><item><title><![CDATA[New comment by fuhsnn in "Kcc, a C compiler built solo with an LLM on $100/month boot Linux kernel"]]></title><description><![CDATA[
<p>Yeah it's the assembly file, I posted two links for comparison:<p>asm: <a href="https://github.com/LiterateDrivenDevelopment/kcc/blob/main/literate/driver/43-main.weft#L52" rel="nofollow">https://github.com/LiterateDrivenDevelopment/kcc/blob/main/l...</a><p>C: <a href="https://github.com/LiterateDrivenDevelopment/kcc/blob/main/literate/verification/50-self-hosting-main.weft#L323" rel="nofollow">https://github.com/LiterateDrivenDevelopment/kcc/blob/main/l...</a></p>
]]></description><pubDate>Fri, 02 Oct 2026 10:00:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=49931742</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=49931742</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49931742</guid></item><item><title><![CDATA[New comment by fuhsnn in "Kcc, a C compiler built solo with an LLM on $100/month boot Linux kernel"]]></title><description><![CDATA[
<p>> The part of it being written in ARM64 Assembly<p>There is a C version under literate/verification, for example "main" is [1][2]:<p>[1] assembly version: ./literate/driver/43-main.weft<p>[2] C version: ./literate/verification/50-self-hosting-main.weft</p>
]]></description><pubDate>Fri, 02 Oct 2026 09:02:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49931370</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=49931370</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49931370</guid></item><item><title><![CDATA[New comment by fuhsnn in "Reducing undefined behavior in the C language"]]></title><description><![CDATA[
<p>Isn't UBsan such a switch?</p>
]]></description><pubDate>Tue, 29 Sep 2026 07:06:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=49889289</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=49889289</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49889289</guid></item><item><title><![CDATA[New comment by fuhsnn in "C/C++ projects packaged for Zig"]]></title><description><![CDATA[
<p>These look more like configure snapshots for Zig's bundled Clang than full ports of build system.<p>The HAVE_/WITH_ defines are supposed to be dynamically probed to adapt to different toolchain environments, setting them manually like that[1][2][3] could only work well for specific targets and for specific versions.<p>[1] <a href="https://github.com/allyourcodebase/libxml2/blob/38fb69d375bc364490a5cc9ac465732d03c836d3/build.zig#L134" rel="nofollow">https://github.com/allyourcodebase/libxml2/blob/38fb69d375bc...</a><p>[2] <a href="https://github.com/allyourcodebase/rnnoise/blob/47db9c212d7e9e7b4d5f0329569ed7fcc4eb9085/build.zig#L26" rel="nofollow">https://github.com/allyourcodebase/rnnoise/blob/47db9c212d7e...</a><p>[3] <a href="https://github.com/allyourcodebase/wayland/blob/f992cd71e19949b7396a0f5eb9be58054ef52346/build.zig#L96" rel="nofollow">https://github.com/allyourcodebase/wayland/blob/f992cd71e199...</a></p>
]]></description><pubDate>Tue, 28 Jul 2026 01:09:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=49077967</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=49077967</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49077967</guid></item><item><title><![CDATA[New comment by fuhsnn in "C extensions, portability, and alternative compilers"]]></title><description><![CDATA[
<p>It did take many hours, but I learnt a lot in the process, found some bugs to report, and watched plenty of series concurrently. Overall it's a nice and worthwhile hobby!</p>
]]></description><pubDate>Tue, 26 May 2026 14:57:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48280730</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=48280730</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48280730</guid></item><item><title><![CDATA[New comment by fuhsnn in "C extensions, portability, and alternative compilers"]]></title><description><![CDATA[
<p>For those who are making indie C compilers that don't pretend to be __GNUC__ but want to compile real world projects, slimcc's test script[1] and platform header hacks[2] might save you some time.
[1] <a href="https://github.com/fuhsnn/slimcc/blob/main/scripts/linux_thirdparty.bash" rel="nofollow">https://github.com/fuhsnn/slimcc/blob/main/scripts/linux_thi...</a><p>[2] <a href="https://github.com/fuhsnn/slimcc/blob/main/slimcc_headers/platform_fix/" rel="nofollow">https://github.com/fuhsnn/slimcc/blob/main/slimcc_headers/pl...</a><p>Some more fun stories:<p>- Game projects default to using SIMD so for example SDL and STB you always need to pass -DSDL_DISABLE_IMMINTRIN_H and -DSTB_NO_SIMD<p>- math.h's NAN usually fall back to (0.0f / 0.0f), which will print "-nan" with printf, some projects test suite fail because of it (they expected "nan").<p>- NetBSD's sys/cdefs.h straight up #error's if you don't pretend to be GCC or PCC.<p>- Some projects can't compile without __attribute__((always_inline)) because they use it on non-static functions.<p>- Many projects probe -fvisibility in the build system and pass -fvisibility=hidden to compile, but in the headers they gate __attribute__((visibility(default))) behind __GNUC__ checks, so you'll get missing symbols.<p>- Some projects use if(0) { undefined_function() } to fake static_assert(), there is even a bug report from QEMU to Clang because it failed to optimize in -O0 a certain `if` written this way.<p>- Even if you define __STDC_NO_VLA__, projects might fall back to alloca() code path that's untested and broken (python and jemalloc both had this problem, already reported)<p>- Valkey has broken __builtin_ctzll fallback nobody noticed (reported).<p>- Zig's C bootstrap path expects the compiler to have GCC/Clang-tier optimization and stack overflows if you don't (reported).<p>- I contributed stdatomic.h code path for Ruby just to compile it with slimcc, pretty sure it's still the only user of the code path.<p>- I implemented __has_extension in the hope that projects can use it to query gnu_asm; but SQLite broke because they use __has_extension(c_atomic) to query GNU atomics builtin, but c_atomic actually is meant for C11 _Atomic (IMO they should use __has_builtin)</p>
]]></description><pubDate>Mon, 25 May 2026 16:31:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48268732</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=48268732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48268732</guid></item><item><title><![CDATA[New comment by fuhsnn in "C constructs that still don't work in C++"]]></title><description><![CDATA[
<p>> IMHO this "schism" was completely unnecessary and only happened because of ignorance and hubris<p>Having attempted to implement it correctly in slimcc, there are indeed some edge cases[1][2] that justify not adapting it fully.<p>[1] Unordered side effects; evaluation of expressions with overlapped destination is implementation defined but not listed as such (the wording in standard is "can potentially not be evaluated").<p>[2] Both GCC and Clang still get this wrong in 2026: <a href="https://github.com/llvm/llvm-project/issues/190858" rel="nofollow">https://github.com/llvm/llvm-project/issues/190858</a></p>
]]></description><pubDate>Mon, 25 May 2026 11:16:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48265565</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=48265565</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48265565</guid></item><item><title><![CDATA[New comment by fuhsnn in "Bug 1950764: Work Around Crash on Intel Raptor Lake CPU"]]></title><description><![CDATA[
<p>> The sad vicious cycle of compilers not exercising the hardware<p>There could theoretically be instruction selection passes that are biased toward rare instructions, specialized for fuzzing hardware, I'm surprised Intel doesn't already do that.</p>
]]></description><pubDate>Mon, 25 May 2026 07:33:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48264372</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=48264372</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48264372</guid></item><item><title><![CDATA[New comment by fuhsnn in "QBE – Compiler Back End"]]></title><description><![CDATA[
<p>The page says "aims to provide 70%" though, funny how words spread.</p>
]]></description><pubDate>Fri, 08 May 2026 17:48:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48066451</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=48066451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48066451</guid></item><item><title><![CDATA[New comment by fuhsnn in "QBE – Compiler Back End"]]></title><description><![CDATA[
<p>There is a library conversion fork: <a href="https://github.com/sgraham/sqbe" rel="nofollow">https://github.com/sgraham/sqbe</a>.<p>IMO when the intended usage is AOT with an external assembler, which is another subprocess, text-based IO is actually the more natural approach.</p>
]]></description><pubDate>Fri, 08 May 2026 16:52:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48065693</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=48065693</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48065693</guid></item><item><title><![CDATA[New comment by fuhsnn in "Nobody Reviews Compiler Output"]]></title><description><![CDATA[
<p>Some of us do spend hours on godbolt.org tweaking code like it was game character build.</p>
]]></description><pubDate>Thu, 07 May 2026 20:05:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48054185</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=48054185</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48054185</guid></item><item><title><![CDATA[New comment by fuhsnn in "CJIT: C, Just in Time"]]></title><description><![CDATA[
<p>That read like a supply-chain attack gold mine if you ask me.</p>
]]></description><pubDate>Wed, 29 Apr 2026 04:12:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47944096</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=47944096</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47944096</guid></item><item><title><![CDATA[New comment by fuhsnn in "CJIT: C, Just in Time"]]></title><description><![CDATA[
<p>rcc[1] is another real-JIT C compiler. antcc[2] and xcc[3] are worth mentioning for being fast-enough to run C like scripting.<p>[1] <a href="https://github.com/dstogov/rcc" rel="nofollow">https://github.com/dstogov/rcc</a><p>[2] <a href="https://codeberg.org/lsof/antcc" rel="nofollow">https://codeberg.org/lsof/antcc</a><p>[3] <a href="https://github.com/tyfkda/xcc" rel="nofollow">https://github.com/tyfkda/xcc</a></p>
]]></description><pubDate>Wed, 29 Apr 2026 04:08:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47944075</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=47944075</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47944075</guid></item><item><title><![CDATA[New comment by fuhsnn in "Writing a C Compiler, in Zig (2025)"]]></title><description><![CDATA[
<p>Looking at the repo, the author seemed a little fed up [1] with the nature of lower level language and quitted.<p>[1] <a href="https://github.com/asibahi/paella/blob/main/writeup/c19.md#user-content-fn-month-f690d35c5c3bc8477be727677652c31f" rel="nofollow">https://github.com/asibahi/paella/blob/main/writeup/c19.md#u...</a></p>
]]></description><pubDate>Thu, 23 Apr 2026 11:25:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47874425</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=47874425</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47874425</guid></item><item><title><![CDATA[New comment by fuhsnn in "Kefir C17/C23 Compiler"]]></title><description><![CDATA[
<p>Yeah, to get arcane macro tricks right I probably spent more than a full month total fighting with linked lists, never want to touch that part again.</p>
]]></description><pubDate>Tue, 21 Apr 2026 18:14:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47852356</link><dc:creator>fuhsnn</dc:creator><comments>https://news.ycombinator.com/item?id=47852356</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47852356</guid></item></channel></rss>