{while condition} tests its condition and, while it holds, renders its content and tests again. Something inside the content has to change what the condition reads - an {increment}, a {set} - or the loop never ends. The variables it counts with are ordinary globals, so their last value is still there after the loop.

Written on the closing tag - {while} ... {/while $i lt 10} - the condition is tested after each pass instead of before it: a do-while, whose content renders once even when the condition is false from the start.

{until} is the same loop with the test turned round: it runs while the condition is false. {break} leaves the loop at once, {cease} lets the current pass finish and asks for no further one, and {continue} skips the rest of the current pass.

A loop whose condition never turns is stopped after 10000 passes (the sequences' ceiling, $padSeqDefaultTries) instead of running until PHP's time limit; under the strict syntax check that is an error naming the loop. A {while} without a condition or without its closing tag is an error as well. To repeat over data or a fixed range, a data tag or {sequence '1..10'} is simpler.