The question is the following: if you had to develop a new dynamic language, which Virtual Machine would you pick? It’s interesting because the VM market is probably going to consolidate in the coming years. Right now, there are several possible choices.

  • The Java(tm) VM. Huge ecosystem, outstanding tooling (think parsers, bytecode manipulation) and Sun seems to be very motivated to improve it for dynamic languages and the next big thing. But I have mixed feelings. Strong corporate backing is a two sided sword. Things nowadays happen outside the Enterprise. There’s a big memory price which shows in the hosting market (compare to the unlimited possibilities of PHP hosting). And there’s a startup cost which makes scripting usage delicate.
  • The .Net DLR on Mono. Another very good option. Except that betting big on Microsoft technology is very risky. And outside of C#, there aren’t that many robust languages implementations running on Mono.
  • Tamarin (ex AVM2, think Flash player). An already fairly good VM that’s getting quickly even better. I would bet that most of the research development to optimize dynamic languages execution will happen there. Pushed by Mozilla which is definitely a plus. But here the problem is the ecosystem, outside of the browser there’s nothing. A whole purpose language would need to develop (or integrate) the whole backend (files, sockets, HTTP and XML stacks, …). That’s a lot of work.
  • The Parrot VM. On paper, it’s the ideal VM. Designed to be multi-language from the ground up, a powerful set of tools eases development (parser, AST, compiler), the libraries come from Perl, it’s fairly fast and it’s a register-based VM. Problem is, it’s been around for a while and they haven’t proven themselves so far. Even Perl 6, which was supposed to be the killer language, isn’t ready. They seem to be getting there though, they’ve progressed pretty nicely in the past year or two.

There are many other VMs out there but they’re often too tied to their hosted language or to their environment, like the Python VM or SquirrelFish (another register VM by the way). So I think those 4 are the main options.

My reason tells me JVM, my heart tells me Tamarin and Parrot falls in the middle. So what’s your choice?