Version 7 (modified by bacek, 4 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.
  • Migrate PCT to newPOST from PIRATE
    • Emit PIR from newPOST nodes.
    • Migrate oldPOST from PIR to NQP.
    • Implement bootstrap properly (pmichaud promised to help)
    • Change PAST::Compiler to emit new POST nodes.
  • 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 and 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.