Does the Parrot VM really need yet another runcore? I doubt it, because sometimes Parrot is reasonably fast, but it has two faces: the one if you use only these $Ixx registers, and the other one if you use those $Pxx registers (PMC, formerly known as Parrot Magic Cookie, OMG). Dynamic languages tend to use the PMC registers, the same is true for compilers like Rakudo that are far away from optimizing the generated code, Rakudo for instance doesn’t care about variables that were declared as integers (e.g. my int $var;).
It’s all about assumptions and mine are lousy, too. I thought Parrot is terribly slow because with Rakudo something like perl6 -e ‘my Int $i=0; while $i<10000 { $i++ }’ takes about 1.5 seconds on my Athlon XP machine. 150µs per loop iteration, a Z80 4Mhz CPU would do better. So I tried on my faster Athlon X2 machine to code something in Amd64 assembly code that mimics opcode dispatching. For a loop which counts down from 1 billion to 0 the direct threaded code took 34 seconds and the call threaded code took 9 seconds. That is 34ns rsp. 9ns per loop iteration. That sounds better! But something similar with PIR and Parrot using integer registers put that into perspective: with an optimized Parrrot 1.3.0 it took about one minute (not to bad) and with the jit runcore it took only 2.5 seconds! Wow! Only 2.5 times slower than a handwritten assembler program. (but the downside here is: on a faster Amd64 machine the same thing is slower, about 8 seconds)
The bottom line: don’t use PMCs