I'm pleased to announce the release of a new version, timed to coincide with the initial version of the new userguide. Some of the highlights of this release:
- New syntactic sugar for if/then/else: if X then Y else Z <=> if(b) >> Y | if(~b) >> Z <b< X
- New syntax "signal" as a (prefered) synonym for "()" and "let()"
- "." may now be used to the right of any basic expression (not just a variable or call) so for example "3.toString()" should work.
- Revised semantics for logical timers: logical time is not allowed to proceed as long as there are pending calls to any other sites. This semantics, while easier to reason about, makes correct programs harder to write, so we are still investigating alternatives.
- Fixed semicolon operator so that the left expression is recognized as dead when all tokens have left it (even if they are not dead yet).
- Support for constructing and using Java arrays, including primitive arrays.
- Allow list deconstructors to be used on strings (like Haskell).
- Java implicit unboxing and conversions work in many more cases.
- Unguarded direct recursion is detected as a compile-time error.
- Support for recording traces of programs, to be used for debugging and profiling tools current under development
- Regression tests based on JUnit added. We can now test all of the example programs for correct behavior (ignoring non-determinism) as well as parsability.
- Huge increase in efficiency of Java integration