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.