in reply to Backend diversity for Rakudo

NQP implements a subset of Perl 6 that is useful for writing a compiler, and that runs well on parrot without the need for built-in functions (except the regex engine).
How exactly is this entire bootstrapping done?

Since NQP transforms its input to a format called PAST, the first step will probably be to write a PAST compiler that emit JS. Since the PAST compiler is now written in PIR, the bootstrapping plan might look like this:

  1. Re-write the PAST compiler in NQP
  2. Add a variant of the PAST compiler that emits JS
  3. Run the NQP-on-parrot on itself, emitting javascript
  4. reiterate until it works
  5. Profit!
Perl 6 - links to (nearly) everything that is Perl 6.

Replies are listed 'Best First'.
Re^2: Backend diversity for Rakudo
by Anonymous Monk on Aug 17, 2010 at 07:36 UTC
      Rewritten, or manually translated.

      Jonathan has a plan for the meta model, and wants to prototype it in .NET anyway, so at least for the planned .NET backend we have a way forward.

      Update: After some discussion with jonathan, I should clarify that the meta object model is going to be moved from Rakudo to NQP, and built on top of some primitives, which are rather portable between different VMs. So the hard part of the metamodel port need to be done only once.

      Perl 6 - links to (nearly) everything that is Perl 6.