http://www.perlmonks.org?node_id=1048020


in reply to Re^5: A $dayjob Perl 6 program that runs 40x faster on the JVM than on Parrot
in thread A $dayjob Perl 6 program that runs 40x faster on the JVM than on Parrot

MoarVM is register based.

Cleaned up from http://irclog.perlgeek.de/parrot/2013-06-07#i_7169478:

dukeleto MoarVM is the spiritual succesor to M0
benabik  MoarVM seems to match my list of
         "how I would improve/rewrite Parrot"
         to a ridiculous degree.
dukeleto it uses many lessons from Parrot and other systems

dukeleto is more or less the current Parrot leader. benabik is a recent Parrot contributor (60+ commits).

M0 is a fundamental Parrot refactor designed to deliver a much cleaner and faster VM.

Aiui MoarVM combines the M0 approach with direct support for NQP and 6model. (whiteknight, until recently one of the most prolific Parrot committers, said of 6model: "6model is far superior to what Parrot provides ... superior for ... Ruby port ... Python port ... JavaScript port ... all of these would prefer 6model over the current Parrot object model by a wide margin".)

if getting 40x faster means being 2x to 3x times slower than what we have now, then it's a bigger flop than I thought.

I'm not suggesting that that will be the final outcome. It's entirely plausible (imo likely) that P6 will end up being seen as faster than P5 over the next few years because P6 naturally supports both multi-core usage and native typing and the MoarVM backend should outperform the JVM backend.

An anecdote for the Per6 team? Yes. Food for thought for the Parrot developers? Definitely! Something to brag about in public? I don't think so!

Are you saying that posting something, anything, here at the monastery, is automatically bragging? Did you see the butt load of caveats I began with in the OP?

I agree it's just 40x faster than on Parrot but it is 40x faster and that's without attempting to optimize it for the JVM. Imo it's worth posting about here at the monastery.

  • Comment on Re^6: A $dayjob Perl 6 program that runs 40x faster on the JVM than on Parrot

Replies are listed 'Best First'.
Re^7: A $dayjob Perl 6 program that runs 40x faster on the JVM than on Parrot
by chromatic (Archbishop) on Aug 06, 2013 at 00:39 UTC
    MoarVM combines the M0 approach with direct support for NQP and 6model.

    Anyone who claims MoarVM has something in common with M0 was not paying attention when Allison, cotto, and I were sitting exactly where I'm sitting right now and finished the list of design goals for M0.

    Now MoarVM may be a fine thing, if it ever runs any Perl 6 code, but you're going to have a dilly of a time convincing people you know what you're talking about if you keep spreading misinformation.

      dukeleto, effectively the current leader of the Parrot project, writing in 2011: "the most important reason for M0 is {that} it is best for a virtual machine to minimize crossing language boundaries" and M0 supplied "high-level constructs and conveniences, such as objects, lexical variables, classes and their associated syntax sugar". While the details are of course different I find dukeleto's description of MoarVM as "the spiritual successor to M0" apt.

      if MoarVM will ever run any Perl 6 code

      That's FUD.

      Update 5 months later: Rakudo/MoarVM is already compiling the core setting -- which is 18K lines of non-trivial Perl 6 code -- and passing ~26k of ~28k spectests.

      Update a year later: Rakudo on MoarVM now passes more spectests than on other backends. It's startup, compilation, and run time are generally much faster and use much less RAM. Etc. In short, MoarVM is now firmly established as devs' most popular backend for most uses.

      (To be clear, Rakudo on JVM has a few advantages: it runs on the JVM, which is necessary or desirable for some folk; it can interop with Java code; it's sometimes much faster for long running code due to its excellent and mature JIT; it has battle hardened threads which means concurrent code is currently more reliable.)

        While the details are of course different I find dukeleto's description of MoarVM as "the spiritual successor to M0" apt.

        With all due respect, you find it apt because you don't know anything about M0.

        Your strategy of finding random quotes from IRC which, when taken out of context, appear to support whatever you're trying to argue at the moment is not research. It's propaganda—done badly, at that.

        If you were truly interested in M0, any decent search engine, or even a trawl through one of several Perl 6 and Parrot Links pages, would have taken you to an article written in 2011 by one of the designers and developers of Lorito and M0. That article is Less Magic, Less C, A Faster Parrot, which says:

        The current stage of Lorito is M0, the "zero magic" layer of implementing a handful of operations which provide the language semantics of C without dragging along the C execution model. In other words, it's a language powerful enough to do everything we use C for without actually being C. It offers access to raw memory, basic mathematical operations, and Turing-complete branching while not relying on the C stack and C calling conventions.

        This was the core of both the M0 design and Lorito itself.

        If you'd bothered to find that, let alone understand it, I hope you wouldn't have posted such nonsense. MoarVM may have a fine design, but unless it's taking the Squeak Slang approach (or the Forth approach or...) that M0 intended, MoarVM has nothing substantive in common with M0. The only reasonable interpretation of dukeleto's comment is that it's metonymy, where "a smaller, simpler VM (via reimplementation as Moar)" is similar to "a smaller, simpler VM (via M0)".

        Metonymy is not, of course, an exhaustive technical explanation.

        Your lack of research and your apparent disregard for the truth of what happened—even when you're corrected by the people who were actually there, who actually designed and implemented the subjects under discussion—makes both you and P6 look bad. If you're trying to advocate for P6, you're doing a terrible job.

        I shouldn't have to keep telling you this.

        If you don't think an NQP/MVM "hello world" counts as Perl 6 code...

        After thirteen years, I don't care about potential. If and when something passes the P6 spec tests, I'll take it seriously as a P6 implementation.

        ...That's FUD... hello world ...

        that's pure clownshoes