Release 1.1.6
1.1.6
-
[TRLC] Add new option
--lint --verify
. This option requires
PyVCG to be installed (which is
only available on GNU/Linux or OSX). This option attempts to
statically verify all checks for freedom of run-time errors (no null
dereferences, no division by zero, and no array out of bounds
access). For example with this.rsl
:type T1 { x optional Integer y optional Integer z Integer } checks T1 { x != null implies y == x, fatal "potato" y != null implies x > 1, warning "potato" }
The
--lint --verify
option might say:y != null implies x > 1, warning "potato" ^ test1.rsl:11: warning: expression could be null [vcg-evaluation-of-null] | example record_type triggering error: | T1 bad_potato { | /* x is null */ | y = 0 | z = 0 | }
-
[Package] Provide Linux and OSX packages, along with the default
package, which should automatically install PyVCG where it is
available. On Windows,pip
should fall back to the platform
agnostic package. -
[TRLC] Add new option
--no-user-warnings
to suppress any warning
generated from a user-defined check. -
[TRLC] Fix missing static check on exponents (they must not be
negative). -
[TRLC] Fix missing static check for Boolean types on check
expressions (tools would crash without error message). -
[TRLC, LRM] Fix several tool crashes when the
null
literal
appeared in expressions outside equality. Re-worded the section on
null values in the LRM to be much stricter. We consider this to be a
bug-fix and not a change of semantics. -
[LRM] Clarify equality semantics for arrays, tuples, and record
references. Moved the definition of null equality into the same
place.