Abc interpreter improvements
This MR makes two important improvements to the workflow for generating optimised ABC and bytecode:
- It adds new stages for these steps, so that the timestamps of these files differ for large projects preventing unnecessary regeneration. (Previously, both optimizing and generating bytecode were done per module in
- If a bytecode file exists, we now check whether the bytecode generator installed has a different instruction set version number, and regenerates the file if this is the case. This prevents parsing errors in the bytecode linker. (Previously, you would have to manually trigger regeneration by deleting the bytecode files or touching source files.) The instruction set version number may change when new instructions are added or if the format changes.