Building a Perl 6 implementation is difficult. Over the course of the Rakudo Perl 6 project, we've learned plenty of ways to do it - along with plenty of ways not to. Gradually, we've converged on having the vast majority of the implementation written either in NQP (a subset of Perl 6) or Perl 6 itself.
In addition to this, we've factored the compilation process into a set of distinct phases, and kept the coupling between them loose. This means we're able to replace some of them at will. For example, we can put an additional frontend on that serves as a debugger. In the last year, we've made a lot of progress in being able to put a different backend on, allowing us to target other virtual machines.
In this session, I'll talk about the work to bring Rakudo to VMs besides Parrot: the motivation, the approach, the joy, the pain, and how our compiler architecture means we can re-use the vast majority of the implementation effort over many VMs.