
Bootstrapping a Compiler - wglb
https://combinatorylogic.wordpress.com/
======
marktangotango
Using a scheme subset seems like cheating almost. The no syntax, s expression
languages allow one to avoid the entire lexing, parsing, ast generation aspect
of the endeavor.

Tratt has a blog post that expands on the bit about languages implemented in
themselves and the consequences:

[http://tratt.net/laurie/blog/entries/the_bootstrapped_compil...](http://tratt.net/laurie/blog/entries/the_bootstrapped_compiler_and_the_damage_done)

~~~
ihnorton
"ML -- a domain-specific language for writing ML compilers."

[https://twitter.com/samth/status/481759160007004160](https://twitter.com/samth/status/481759160007004160)

~~~
pjmlp
ML was created for the LCF theorem prover, not for writing compilers.

It is just a nice side effect that functional programming, as well as, logic
programming, make it so easy to write compilers.

~~~
seanmcdirmid
Does ML have any logic programming capabilities beyond algebraic pattern
matching?

------
integricho
I am no expert in this field, but I was always wondering, are there issues
that could theoretically come up, due to bugs in a previous implementation of
the bootstrapped language and leave no way to resolve them?

So specifically, while the language is not bootstrapped, the developers work
in a probably 100% tested and working language to implement theirs. Suppose
they leave some bugs in the first implementation of their language, and they
bootstrap it using their buggy first implementation. Could some of these bugs
later be impossible to correct? Like they are on such a low level of the
language that even the language constructs that would be needed to correct
them are buggy, so they can't do it?

~~~
alexchamberlain
I vaguely remember reading a theoretical article about a compiler that would
embed a virus in the result. If it propagated itself somehow, it could be
impossible to remove it.

~~~
aneeshm
You're probably referring to Reflections on Trusting Trust[1], by Ken
Thompson.

[1] [http://cm.bell-labs.com/who/ken/trust.html](http://cm.bell-
labs.com/who/ken/trust.html)

