At the time of writing, the following is written in the Public VM Architecture page in the documentation.
Q: Do we want to support JUMP/JUMPI instructions for public ACIR++ functions? Would be very nice to have but creates discontinuity between public/private functions.
Can this be expanded here? How does it create discontinuity between public and private functions?
Private functions are compiled into circuits, so they canât have jump instructions (if you have an if statement in a circuit, both âbranchesâ of the statement get executed; thereâs no âjumpâ). Public functions, on the other hand, are compiled to opcodes, and those opcodes are then âexecutedâ in a VM circuit. So for public functions, we can have more traditional (non-circuit) opcodes.