Ken Thompson started development on
Unix in 1968 by writing and compiling programs on the
GE-635 and carrying them over to the
PDP-7 for testing. After the initial Unix kernel, a
command interpreter, an editor, an assembler, and a few utilities were completed, the Unix operating system was self-hosting – programs could be written and tested on the PDP-7 itself.
Douglas McIlroy wrote
TMG (a
compiler-compiler) in TMG on a piece of paper and "decided to give his piece of paper to his piece of paper", doing the computation himself, thus compiling a TMG compiler into
assembly, which he typed up and assembled on Ken Thompson's PDP-7. Development of the
GNU system relies largely on
GCC (the GNU Compiler Collection) and GNU
Emacs (a popular editor), making possible the self contained, maintained and sustained development of
free software for the
GNU Project. Many
programming languages have self-hosted implementations: compilers that are both in and for the same language. An approach is
bootstrapping, where a core version of the language is initially implemented using another high-level language, assembler, or even
machine language; the resulting compiler is then used to start building successive expanded versions of itself. ==List of languages having self-hosting compilers==