VM for Scheme with support for parallelisation
I have written a Scheme evaluator in Java that does some parallelisation tricks. It's not usable by anyone but me for the moment, but I'm getting some results.
The frontend and middle-end are ok for my purposes and are the parts that I want to concentrate on, but my backend sucks. It is unoptimized and is slow or lacks proper tail-call optimization.
So instead I w开发者_Python百科ant to target an existing VM. Does anyone know a candidate for this? It doesn't have to be an enterprise-ready VM but at least it should
- be (relatively) easy to target from Scheme
- be (reasonably) portable
- support parallel constructs out of the box
If you could get your Scheme to compile and run on the Erlang VM, that will be great. Already people are thinking seriously about this and there is a project that does the reverse.
The Microsoft CLR/.NET VM supports parallelism and has a tail-call instruction. The Mono implementation is free software and quite portable.
Alternatively, you could target Racket, which supports parallel constructs and would make it very easy to target from your Scheme system.
Dybvig's Three Implementation Models For Scheme provides a very straightforward heap-based compiler/vm implementation with proper continuation and tail-call-optimization support. The code is in Scheme but it's easily translatable. I used it to implement Scheme in Javascript.
The other obvious VM to target is the Java VM, which brings you the added advantages of the Hotspot JITter and interoperability with other Java programs.
Bigloo compiles Scheme to Java VM bytecode or thr .NET cil.
精彩评论