MoarVM
moarvm.com
moarvm.com
Have things changed and Perl 6 is ready for production? Are there people building things with Perl 6?
And yes, there are ppl who use it for production, but I am not sure that matters much when there tasks might be totally different to yours?
but read kbd's comment below or the mailing someone else posted.
http://lists.parrot.org/pipermail/parrot-dev/2013-February/0...
parrot was to be the perl6 vm, but that never happened. it become too much at the same time
so they tried to fork off parrot:
> However, even if you remove the baggage and optimize for Rakudo (or rather NQP) integration, Perl6-on-Parrot will still be a 2nd-class citizen as long as no one replaces the PMC-based object system with 6model, which is imo a major undertaking; it might be easier to restart from scratch and fix other 'mistakes' along the way. That's where Parrot2 comes in
so no i don't think perl 6 is ready for production. that said, i thought it was it a cool language. even though i'm not sure if there was a clear direction of where it was going.
Why are you using past tense? When you skim the last year here you cannot say that Perl 6 is dead: https://github.com/rakudo/rakudo/blob/nom/docs/ChangeLog
(Instead there are some exciting things to read there, at least exciting for me :o)
But you can test bulk of the language features. Agreed that the stage of affairs are no way close what one describe as a commonly accepted definition of production ready.
I won't give a timeline especially when I'm not working on it in any way. But I guess they are pretty close in making a production ready release.
Perl, BeOS, Amiga, etc. had their time. They were really cool in what they accomplished in their day, but most of us moved on.
1) Just update a little step by step. Here you would keep your userbase until there is a piece of software after a decade that will take a high percentage of that userbase.
2) Do a rewrite that takes three times longer than planned and split your userbase in half for the old and the new version. You can just pray that the new version is worth it.
So in a sense you will do the wrong and the right thing at once.
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.
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.
And neovim. https://github.com/neovim/neovim
http://lists.parrot.org/pipermail/parrot-dev/2013-February/0...
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.
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 :-)
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.
(It actually seems that runtime environments that are optimized for statically typed languages, but have some support for dynamic stuff, suit Perl 6 better than dynamic runtimes. The CLR and JVM backends have the best run time performance so far, but they suffer from large startup times, which is something that the Perl community is very sensitive to).
Sorry...
parrot threads are essentially lock-less and scale linearly, moar threads are traditional, they lock on every single hash, array or object access.
The parrot jit will come back soon. And I just fixed all internal compiler optimizations, so parrot -O2 is safe again.
On the other hand, the moar GC and calling convention is better than parrot, their new GC is a copying one, similar to the third vm targetting perl, p2 on potion. http://perl11.org/p2/