|Version 2 (modified by cotto, 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.
* 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.