Skip to content

Release 1.1.6

Compare
Choose a tag to compare
@florianschanda florianschanda released this 18 Jul 13:25
· 198 commits to main since this release

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.