[HN Gopher] SectorC: A C Compiler in 512 bytes
       ___________________________________________________________________
        
       SectorC: A C Compiler in 512 bytes
        
       Author : valyala
       Score  : 141 points
       Date   : 2026-02-07 17:39 UTC (5 hours ago)
        
 (HTM) web link (xorvoid.com)
 (TXT) w3m dump (xorvoid.com)
        
       | riedel wrote:
       | Beautiful, but make sure to quickly add 2023 to the title.
       | 
       | Discussed at the time:
       | https://news.ycombinator.com/item?id=36064971
        
       | sanufar wrote:
       | The way hashing is used for tokens and for making a pseudo symbol
       | table is such an elegant idea.
        
         | fix4fun wrote:
         | I think the same. Really nice project and good trick with
         | hashing tokens.
         | 
         | PS. There left 21 bytes (21 * 0x00 - from 0x01e0 to 0x01fd).
         | Maybe something can be packed there ;)
        
       | xorvoid wrote:
       | I may be the author.. enjoy! It was an absolute blast making
       | this!
        
         | veltas wrote:
         | This is very nice. I'm currently writing a minimalist C
         | compiler although my goal isn't fitting in a boot sector, it's
         | more targeted at 8-bit systems with a lot more room than that.
         | 
         | This is a great demonstration of how simple the bare bones of C
         | are, which I think is one reason I and many others find it so
         | appealing despite how Spartan it is. C really evolved from B
         | which was a demake of Fortran, if Ken Thompson is to be
         | trusted.
        
         | JamesTRexx wrote:
         | Would and how much would it shrink when if, while, and for were
         | replaced by the simple goto routine? (after all, in assembly
         | there is only jmp and no other fancy jump instruction (I
         | assume) ).
         | 
         | And PS, it's "chose your own adventure". :-) I love minimalism.
        
           | SAI_Peregrinus wrote:
           | What fancy jumps are present in assembly depends on the CPU
           | architecture. But there are always conditional jumps, like
           | JNZ that jumps if the Zero flag isn't set.
        
         | einpoklum wrote:
         | An interesting use case - for the compiler as-is or for the
         | essentiall idea of barely-C - might be in bootstrapping chains,
         | i.e. starting from tiny platform-specific binaries one could
         | verify the disassembly of, and gradually building more complex
         | tools, interpreters, and compiler, so that eventually you get
         | to something like a version of GCC and can then build an entire
         | OS distribution.
         | 
         | Examples:
         | 
         | https://github.com/cosinusoidally/mishmashvm/
         | 
         | and https://github.com/cosinusoidally/tcc_bootstrap_alt/
        
           | teo_zero wrote:
           | It would be interesting to understand what non-toy programs
           | can be coded in this subset of C. For example, could tcc be
           | rewritten in this dialect?
        
           | tekknolagi wrote:
           | You may enjoy https://github.com/ludocode/onramp
        
       | NooneAtAll3 wrote:
       | > I wrote a fairly straight-forward and minimalist lexer and it
       | took >150 lines of C code
       | 
       | was it supposed to be "<150"?
        
         | owalt wrote:
         | They're saying the naive implementation was more than 150 lines
         | of C code (300-450 bytes), i.e. too big.
        
       | mojuba wrote:
       | Compare that to the C compiler in 100,000 lines written by Claude
       | in two weeks for $20,000 (I think was posted on HN just
       | yesterday)
        
         | vidarh wrote:
         | It's a fun comparison, but with the notable difference that
         | that one can compile the Linux kernel and generate code for
         | multiple different architectures, while this one can only
         | compile a small proportion of valid C. It's a great project,
         | but it's not so much a C compiler, as a compiler for a subset
         | of C that allows all programs this compiler can compile to also
         | be compiled by an actual C compiler, but not vice versa.
        
           | d_silin wrote:
           | But can it compile "Hello, World" example from its own
           | README.md?
           | 
           | https://github.com/anthropics/claudes-c-compiler/issues/1
        
             | Retr0id wrote:
             | It's fascinating how few people read past the issue title
        
             | vidarh wrote:
             | Noticed the part where all it requires is to actually have
             | the headers in the right location?
        
               | d_silin wrote:
               | "The location of Standard C headers do not need to be
               | supplied to a conformant compiler."
               | 
               | From https://news.ycombinator.com/item?id=46920922
               | discussion.
        
               | vidarh wrote:
               | And it doesn't for the compiler in question either. As
               | long as the headers exist in the places it looks for
               | them. No compiler magically knows where the headers are
               | if you haven't placed them in the right location
        
       | mati365 wrote:
       | Oh, it looks like my X86-16 boot sector C compiler that I made
       | recently [1]. Writing boot sector games has a nostalgic magic to
       | it, when programming was actually fun and showed off your skills.
       | It's a shame that the AI era has terribly devalued these
       | projects.
       | 
       | [1] https://github.com/Mati365/ts-c-compiler
        
       | SeanSullivan86 wrote:
       | Why is it called a C Compiler if it's a subset of C?
        
       | gonzus wrote:
       | Lacking support for structs, I think this is too minimalistic to
       | be called "a C compiler".
        
       | kayo_20211030 wrote:
       | Nice. Very K&R-ish. Not a bad thing.
        
       ___________________________________________________________________
       (page generated 2026-02-07 23:00 UTC)