Main Page

Welcome to !
This wiki is about bootstrapping. Building up compilers and interpreters and tools from nothing.

"'Recipe for yogurt: Add yogurt to milk.' - Anon."

Current Topics

 * mes by janneke, mes
 * stage0 by Jeremiah Orians stage0
 * c compilers
 * Coquillage by bms_

Past Research
important: try to summarize lessons learned from each.


 * The Cuneiform Tablets of 2015 by Long Tien Nguyen, Alan Kay (long term software preservation)
 * jonesforth.S by Jones (forth)
 * Pascal-S by Wirth (Small, self-contained subset w/ great error reporting)
 * Edison by Hansen (Language w/ 5 statements & small OS on PDP-11)
 * maru by Ian Piumarta
 * COLA whitepaper by Ian Piumarta
 * PreScheme using an low level s-exp IL to implement scheme.
 * bcompiler by rano (bootstrapping a series of compilers from hex)
 * Incremental, Scheme Compiler by Ghuloum (Build Scheme-to-ASM compiler in "24, small steps;" Githubs available)
 * amber by nineties (bootstrapping a language from assembly)
 * MinCaml by IPA (Efficient compiler for minimal, functional language in 2000 lines & 14-week segments)
 * golang talk golang transpiled from c to go (transpiled to bootstrap)
 * Axiomatic Bootstrapping: A Guide for Compiler Hackers by Andrew Appel (bootstrapping SML)
 * Merlin: Just Add Reflection (bootstrapping object oriented merlin)
 * booting BCPL (bootstrapping BCPL using intcode)
 * High-level Assembly by Hyde (Assembly w/ high-level data types, control flow & a stdlib; use/check just what you need)
 * Linoleum by Ghignola (Cross-platform, lean, fast, assembly-like language)
 * wingolog about the guile compiler (all brilliant posts!)
 * Partcl by Zaitsev (Tiny TCL; TCL's parse & interpret easily; also references Picol etc)
 * jrp.c by curtism (a simple stack language implemented using JIT)
 * neatld linker by ali grudi (and also neatas neatcc)

Thompson Attack
Anything related to the thompson attack: proof of concept demos, mitigations, theory.


 * rotten by rntz (thompson attack demo)
 * rust infection by manishearth (thompson attack demo in the rust compiler)
 * tcc ACSAC by daved wheeler

Ubiquitous Implementations
These are tools written in ubiquitous languages, therefore they can be used in a wide variety of contexts.


 * shasm by Hohensee (x86 assembler written in BASH)
 * AWKLisp by Bacon (LISP written in Awk, also ubiquitous; includes Perl version from Perl Avenger)
 * Gherkin by Dipert (LISP written in Bash, a ubiquitous language)

Small C Compilers

 * c4 by rswier (incredibly short c compiler)
 * cc500 by edmund grimley-evans (tiny c compiler)
 * CUCU by Zaitsev (Small, C compiler designed for easy understanding)
 * SmallerC by Frunze (Small, single-pass, C compiler for several ISA's)
 * picoc interpreter.
 * Small C for I386 (IA-32)

Parsing

 * peg by kragen (parsing)
 * PEG-based simple compiler by Ian Piumarta

Virtual Machines, Instruction Sets

 * P-code by Wirth (High-level language & libraries target ultra-simple, portable interpreter)
 * sweet16 by Steve Wozniak
 * Tiny BASIC by Allison (Small BASIC whose original VM took 120, virtual opcodes to implement using 3KB RAM)

Helpful Links

 * The first self hosted lisp
 * lambda-the-ultimate thread asking for info on bootstrapping
 * awesome-compilers github list with a lot of information (copy the relevant parts to this wiki)
 * Tombstone diagram
 * bootstrappable a community hub for bootstrapping, with mailing list.