Scheduler
The Juno scheduler along with the re-written pass manager to interpret schedules.
Modifies Juno build to use the scheduler, with either a schedule provided by the user or the default schedule found in juno_scheduler/src/default.rs.
Deletes the old Hercules driver and the old pass manager, the behavior of running specific passes can be achieved by defining a custom schedule and adding whatever passes you want to it now.
An example schedule can be found in juno_samples/schedule_test/src/sched.sch which also demonstrates that we can now specify manual outlining.
Some notes for adding new passes going forward:
- Add the pass to the
Passenum injuno_scheduler/src/ir.rs - Add a parser for the pass name to the
impl FromStr for Appliableinjuno_scheduler/src/compile.rs - Add the execution of the pass to
run_passinjuno_scheduler/src/pm.rs - If the pass should go in the default pass order, add it to
juno_scheduler/src/default.rs
Some additional tasks to improve functionality of the scheduler are described in #17 but I think this has enough functionality to be ready to merge now (especially as other MRs are waiting for it).
Resolves #5 (closed).