Version 2 (modified by cotto, 11 years ago)


This page serves as a todo list for PIRATE, the next generation self-hosted PIR compiler built with nqp-rx. Once PIRATE emits some form of Lorito, this todo list is complete. "Some form of Lorito" could be a Lorito-based tree, Lorito bytecode or something else.

This should be an approximately ordered list of what's necessary to bring PIRATE to completion as Parrot's default PIR compiler.

* fix examples/pir/make_hello_world_pbc.pir for a post-dynop_mapping parrot

  • OpLib needs to be made aware of op mapping.
  • We need a dedicated PackfileBytecodeSegment PMC to hold the op mapping (and generally be less hacky than a raw segment).
  • this code serves as a minimal test case for the feasibility of our packfile PMCs for pbc generation.

* Update nqp-rx to use PIRATE's POST format.

  • the current version uses strings rather than structure to store data and isn't amenable to PBC generation without a full PIR compiler
  • some discussion with pmichaud is necessary, but he supports the change
  • this is necessary to enable direct POST->pbc translation and by extension, POST->pbc->Lorito translation

* Move PIRATE to compilers/ and make it optional as Parrot's default PIR compiler. * Make Parrot's build work and tests pass with PIRATE as the PIR compiler.

  • Do the same for Rakudo, Partcl and any other HLLs and libraries that are actively maintained at the time.

* Rip out imcc, delete pirc.

  • A post-imcc party is optional but highly recommended.

* Make PIRATE output Lorito ops (or a LOST tree) based on PIR->Lorito translations.

  • Once this happens, we can use the Lorito to generate C code for a byte-code free bootstrapping build.