| 1 | 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. |
| 2 | |
| 3 | This should be an approximately ordered list of what's necessary to bring PIRATE to completion as Parrot's default PIR compiler. |
| 4 | |
| 5 | * fix examples/pir/make_hello_world_pbc.pir for a post-dynop_mapping parrot |
| 6 | - OpLib needs to be made aware of op mapping. |
| 7 | - We need a dedicated PackfileBytecodeSegment PMC to hold the op mapping (and generally be less hacky than a raw segment). |
| 8 | - this code serves as a minimal test case for the feasibility of our packfile PMCs for pbc generation. |
| 9 | * Update nqp-rx to use PIRATE's POST format. |
| 10 | - the current version uses strings rather than structure to store data and isn't amenable to PBC generation without a full PIR compiler |
| 11 | - some discussion with pmichaud is necessary, but he supports the change |
| 12 | - this is necessary to enable direct POST->pbc translation |
| 13 | * Move PIRATE to compilers/ and make it optional as Parrot's default PIR compiler. |
| 14 | * Make Parrot's build work and tests pass with PIRATE as the PIR compiler. |
| 15 | - Do the same for Rakudo, Partcl and any other HLLs and libraries that are actively maintained at the time. |
| 16 | * Rip out imcc, delete pirc. |
| 17 | - A post-imcc party is optional but highly recommended. |
| 18 | * Make PIRATE output Lorito ops (or a LOST tree) based on PIR->Lorito translations. |
| 19 | - Once this happens, we can use the Lorito to generate C code for a byte-code free bootstrapping build. |