Looking at the byte code:
repeat
inc x
until x > 10
compiles to
0: PUSH_INT
1: INC_INT
2: PUSH_VAR_INT
3: PUSH_INT
4: CMP_GREATER_INT
5: JUMP_NOT_COND (to instruction 0)
6: END
While
do
inc x
if x > 10
exit
endif
loop
compiles to
0: PUSH_INT
1: INC_INT
2: PUSH_VAR_INT
3: PUSH_INT
4: CMP_GREATER_INT
5: JUMP_NOT_COND (to instruction 7)
6: JUMP (to instruction 8)
7: JUMP (to instruction 0)
8: END
Instruction 5 jumps the IF block when the condition fails. Instruction 6 performs the loop exit. Instruction 7 repeats the loop. So an extra JUMP instruction is needed for do.loop.
However, it really depends on what you need the code to do.