On Wed, Feb 2, 2011 at 10:03 AM, erik quanstrom <quanstro@labs.coraid.com> wrote:
> Where did your C compiler come from?  Someone probably compiled it with a C
> compiler.  Bootstrapping is a fact of life as a new compiler can't just be
> culled from /dev/random or willed into existence otherwise.  It takes a plan
> 9 system to build plan 9 right?  (This was not always true for infinitely
> recursive reasons)

ah, but where did your go compiler come from?

- erik

Well my Go compiler came from a plan 9 C compiler that came from a gcc compiler, that came from the operating system distribution CD that shipped with Mac OS X.

Someone at apple presumably bootstrapped that gcc build for Mac OS X from another GCC build for Mac OS X, and that one probably goes back to some version of OpenStep, all the way back to NeXTStep, and before that some version of Unix most likely that bootstrapped NeXTStep.

A lot of that lineage was a guess.  It's really difficult, for instance, to bootstrap the GHC (Haskell) compiler from the intermediate C files it generates these days, and you pretty much need a port of Haskell to your platform in order get a port of haskell to your platform.  It's a bit of an undocumented black art as far as I can tell, but it was supposed to be simpler :-).

Many lisp compilers/systems need a lisp compiler or system in place in order to bootstrap them too.

Dave