We present a change in version 1.3.0 of the evaluation process of boolean operators and and or in test expression of the if instruction and expression.
Consider the following if instruction:
if a and b then
/* */
end
Before version 1.3.0, both expressions a and b were evaluated, meaning that if b is a failing expression, the evaluation fails even if a is false.
Since version 1.3.0, a and b is replaced by conditional expression:
if a then b else false
Equivalently, expression a or b is replaced by:
if a then true else b
Such that expression b is evaluated only when necessary.
Greedy evaluation
The previous greedy evaluation mechanism is still available with the greedy_and and greedy_or builtins.
