moonshot

about

how this started

c0 and coff exist because writing a kernel in someone else's language, compiled by someone else's compiler, would leave the most interesting layers of the machine unexplored.

all of this is built by one person, as a hobby, in whatever hours a day leaves over. there is no roadmap and no version of "done" being raced toward. the intent is to keep working on it indefinitely, for as long as it stays interesting, which so far looks like it could be a lifetime.

the operating system

moonshot is a operating system for x86_64, built from scratch, booted through Multiboot and GRUB and run, for now, under QEMU. it is written in c0, a language built for the purpose, and compiled by coff, a toolchain built alongside it.

the aim is a real graphical system. a linear framebuffer with a hand-written font renderer already draws to the screen.

moonshot running under QEMU: the word MOONSHOT and a shell prompt drawn in moonshot's own font on a black framebuffer, with the output of the ps command listing running tasks.
moonshot's own font, screenshot from early development.

the language and the compiler

c0 is a small, C-like, imperative systems language and coff is what compiles it. the two exist above all for one reason, to be the language and toolchain that moonshot is written in.

the compiler is self-hosted, which means it compiles its own source, and moonshot is built exclusively through that self-hosted compiler, so the whole stack rests on as little outside itself as it possibly can.

licence

the code (moonshot, coff and c0) is licensed under the GNU GPL, version 3 or later. anyone who distributes the software, or a work built from it, must release their source under the same terms, so everything downstream stays open.