[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)