I've just spent the afternoon hacking on the old CVS version of
Newmoon, the one before the port to the JVM (and the move to
tla, which is a pain). I've made a few simple-but-nonobvious
changes that bring newmoon-on-.NET much closer to
self-hosting. A mono-hosted newmoon compilation of a simple scheme
file results in a more-or-less correct *.scm.sil file being
emitted. Remaining problems include ongoing niggles with the
syntax-case expander and the lack of a module system, incomplete
printing implementation on the runtime side, and general speed
issues. The r5rs-eval evaluator is particularly slow.
The most important changes were to fix a number of problems with
r5rs-eval: not only were recursive definitions/letrecs not
implemented, but the representation of environments was badly broken,
and I hadn't even noticed. The broken environments were the cause of
the fault that caused me to give up on newmoon-on-.NET so many months
ago!
So now all I need to do is finish my syntax-case implementation,
implement Flatt's module system, graft the result on to newmoon,
finish the core library, rewrite Sil.cs in scheme, and
produce some kind of inbound-FFI. Nothing but a TMOP.