
MoarVM - z3phyr
http://moarvm.com/
======
jakejake
I feel like I should know more about it since I spent so much time writing
Perl in the 90's, contributing modules to CPAN, etc. It seemed like the de-
facto language for dynamic web sites for a while. I have to admit I never
fully understand what Perl 6 was going to be. It seemed like it was going to
be a language-agnostic runtime. Then it seemed to become a spec with no
implementation. After a while I sorta lost track.

Have things changed and Perl 6 is ready for production? Are there people
building things with Perl 6?

~~~
crusso
Perl6 reminds me of the BeOS clones out there. It makes me nostalgic and I
want to click on the links to see what is going on with it... but ultimately
it seems like it will never amount to much.

Perl, BeOS, Amiga, etc. had their time. They were really cool in what they
accomplished in their day, but most of us moved on.

~~~
herokusaki
Are there any BeOS clones besides Haiku?

~~~
yebyen
Any living ones? There was Zeta Neo from YellowTab, they sold CDs for a period
of time and I got one. There's this section on Wikipedia if you want to look
into it:

[http://en.wikipedia.org/wiki/BeOS#Continuation_and_clones](http://en.wikipedia.org/wiki/BeOS#Continuation_and_clones)

~~~
herokusaki
I wouldn't call Zeta any more a clone of BeOS than eComStation is a clone of
OS/2\. It used the same codebase.

------
lazyloop
Interesting tidbit, MoarVM reuses libuv, the core of Node.js. The whole design
seems very goal oriented, yet has all the features you'd expect from a modern
VM, from Unicode to threads. Looks promising.

~~~
duaneb
> libuv, the core of Node.js

It really amuses me that most people know libuv via Node.js. The library is
the single greatest innovation of Node.js, having failed to achieve thread
safety, and it's now powering both Julia and Rust. For many, many years, there
was libevent, and then libev, and finally libuv—the event loop runtime finally
hit production grade. If you know anything about Node.js, you should know
libuv; javascript is pretty useless without asynchronous event processing.

~~~
coffeemug
> the event loop runtime finally hit production grade

The event loop has been production grade for a very, very long time, via
kqueue, completion ports, and poll/epoll. Plenty of software takes advantage
of these interfaces. Having a good cross-platform userspace wrapper is just
icing on the cake.

~~~
duaneb
Sorry, I should revise what I said: cross platform event looping hit
production. Otherwise the platforms are just too different: POSIX doesn't help
us here.

------
jahewson
What ever happened to the Parrot VM?

~~~
zoul
It’s practically dead:

[http://lists.parrot.org/pipermail/parrot-
dev/2013-February/0...](http://lists.parrot.org/pipermail/parrot-
dev/2013-February/007333.html)

~~~
kbd
It's so sad. Parrot was conceived to be Perl 6's VM. Then the authors of
Parrot decided to focus on making it more general purpose/language-
independent, spent time writing incomplete implementations of various
languages like Javascript on it, and ultimately didn't support _any_ language
well.

Parrot became so hostile towards its original purpose that Rakudo had to break
from it.

Incidentally, I don't know why Perl folks don't implement Perl 6 on top of
PyPy, which is a high quality dynamic language VM that already exists, and
offers a JIT compiler to boot.

~~~
fijal
Because (and that's a quote) "PyPy is unproven and experimental technology".

~~~
pekk
I'm probably killing the joke, but what makes this absolutely great is that
this is a reason for _Perl 6_ not to use PyPy

~~~
perlgeek
Developing an experimental language is a huge effort. And that effort becomes
much larger if the underlying runtime environment causes problems.

So either you need a proven, stable VM (JVM, .NET, mono, ...), or you need to
have control over it, so that you can fix problems you encounter.

Basing it on an experimental VM that you don't have control over, and that
might have slightly conflicting goals (dynamic vs. gradually typed, for
example, different calling conventions for routines) is precisely the problem
we had with parrot, and we don't want to replace the parrot problems with pypy
problems, we can avoid it :-)

~~~
lucian1900
RPython is a framework for writing VMs.

You write an interpreter for your language in RPython (a statically typed
language with syntax that is a subset of Python's) and the framework generates
a VM with a JIT and GC and so on. You have full control over whatever happens
in your interpreter, you can give the JIT hints and having types too early
will not hinder the JIT.

You also keep calling it experimental, but PyPy is a production-ready Python
VM, which is more than one can say about Parrot or even Perl6.

~~~
duaneb
PyPy is production ready now, but that's actually a fairly recent development.
I first heard about peel 6 in 2007, well before PyPy could have been predicted
to work. Python barely had Psycho going for it. ParrotVM was the original form
of PyPy, in some ways, and it just turned out to be too massively ambitious
for a community that was already beginning to dwindle.

~~~
lucian1900
My point was that Perl6 and Parrot are _still_ experimental.

------
kbenson
Favorite VM name ever.

~~~
mahmud
Might be a clever reference to Smalltalk VMs? ST had SOAR VM, and now RoarVM

