我在Java中编写了一个Scheme evaluator来做一些并行化技巧。除了我之外,它暂时无法使用,但我得到了一些结果。
前端和中端对我来说是好的,是我想要专注的部分,但我的后端很糟糕。它没有经过优化,速度很慢或缺乏正确的尾调优化。
所以我想要定位现有的VM。有谁知道这个候选人?它不一定是企业级虚拟机,但至少它应该
答案 0 :(得分:2)
Microsoft CLR / .NET VM支持并行性并具有尾调用指令。 Mono实现是免费软件,非常便携。
或者,您可以定位支持Racket的parallel constructs,并且可以很容易地从您的Scheme系统中定位。
答案 1 :(得分:2)
如果您可以让您的Scheme在Erlang VM上编译并运行,那将会非常棒。人们已经thinking seriously about this并且a project that does the reverse。
答案 2 :(得分:1)
Dybvig的Three Implementation Models For Scheme提供了一个非常简单的基于堆的编译器/ vm实现,具有适当的延续和尾部调用优化支持。代码在Scheme中,但它很容易翻译。我用它来实现Scheme in Javascript。
答案 3 :(得分:0)
目标的另一个明显的VM是Java VM,它为您带来了Hotspot JITter的额外优势以及与其他Java程序的互操作性。
Bigloo将Scheme编译为Java VM字节码或者编译.NET cil。