I have been concerned with the current parrot design for some time. I don't see the clear direction for parrot.
If a vm is designed for JIT, it can be very simple on opcode system. To real compilers, there is no difference between opcodes and regular function calls. The compiler can inline the code anyway. But we do need type system for variables, so compiler can generate integer addition without worry about overflow or convert result into BigInt. If a vm is design for interpretion, the type system must be very simple, and the vm must be able to handle built-in types very efficiently, plus a fast C library, something like Perl 5. I am not sure how well the parrot register work in practice. If you have expression "a + b", the vm normally use PMC to deal with it, unless you have a strong typed variable system. In that case, the vm can use int or float register to handle it. Take Python as example, (since Perl 6 is not final), how much python code can be compiled to take advantage of the register system. Because python has unified int/long and dynamic variable/field, the chances are not good. Hong