lazer-guided commentaries

Newmoon on .NET

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.