Here is a summary of the recent changes:
- support for step in the for loop structure (step value must be >=1, enforced at compile time for constants, at runtime for dynamic values). Note that step is only a contextual keyword, and not a reserved word (you can still have variables named “step” f.i.).
for i := 0 to 10 step 2 do ... for i := 100 downto 1 step 3 do ...
- support Prism [1]-like exit syntax, ie. the following statements are now equivalent:
Result := value; exit; Exit( value ); exit value;
- support not in form for the in operator, both following expressions are equivalent:
value not in [...alternatives...] not (value in [...alternatives...])
- break/continue outside of a loop are now detected at compile-time.
- improved infinite loop detection: compiler will now warn about more cases of while/repeat with constant conditions and no inner break/exit.
The first elements to support language extensions are also in, more details coming in a future post!