Verum Dezyne 2.15 Release

We are proud to announce Verum Dezyne 2.15 which completes full support for blocking: This marks the unification into single threaded execution semantics.

Changes in 2.15.0 since 2.14.0

  • Language
    • Blocking is now fully supported, it may be used:
      • In non-top level components,
      • In a component with multiple provides ports, but see the Blocking section in the manual for caveats.
      • A new blocking qualifier for ports must be used if a port can block, or block collateraly.
    • Using unobservable non-determinism in interfaces is no longer supported.
    • An action or function call can now also be used in a return expression (#67). Note that recursive functions still cannot be valued.
  • Commands
    • The dzn explore command has been removed.
  • Verification
    • The verifier now supports blocking for components with multiple provides ports.
    • The verifier now detects possible deadlock errors due to a requires action blocking collaterally, which could happen when a component deeper in the system hierarchy uses blocking.
    • The option --no-interface-determinism has been removed for dzn verify .
  • Simulation
    • The simulator now supports collateral blocking.
    • In interactive mode:
      • The new ,state command shows the state (#66),
      • The new ,quit command exits the session,
      • The simulator does not exit when supplying empty input.
    • The simulator now detects possible deadlock errors due to a requires action blocking collaterally, which could happen when a component deeper in the system hierarchy uses blocking.
    • The simulator now detects livelocks in interfaces at end of trail.
    • The simulator now detects queue-full errors caused by external at end of trail.
    • The dzn simulate command now supports the -C,--no-compliance , --no-interface-livelock and -Q,--no-queue-full options,
  • Code
    • The C++ and C# code generators and runtime now fully support collaterally blocking components.
  • Views
    • Returns are no longer removed from the state-diagram. Using the new --hide=returns (or --hide=actions ) now removes void action returns.
  • Documentation
    • Blocking has been updated and extended.
    • A new section on foreign components was added.
  • Noteworthy bug fixes
    • Using the construct provides external (which has no semantics) no longer confuses the simulator.
    • A bug has been fixed that would cause the well-welformness check for system bindings to ignore certain missing bindings.
    • A bug has been fixed when assigning a value to a formal parameter of a function.
    • A bug has been fixed in the vm that would cause graph or simulate to hang when using a foreign component that has both provides and requires ports (note: don`t do that!).
    • The test framework can be built using gcc-11.
    • A bug has been fixed in the code generator when assiging to a local variable that shadows a formal parameter or member variable.
    • A bug has been fixed in the verifier when creating a new local variable or assigning a variable that remains otherwise unused.
    • The simulation function now supports injection of foreign components.
    • The trace produced by running dezyne code is now correct when using injected foreign components.
    • A bug has been fixed that would cause the verifier to overlook non-determinism in a component.
    • Using external data in binary expressions is now reported as an error (#64).
    • The parser no longer reports “” expected when an external type definition is missing.
    • The well-formedness check of the parser no longer hangs when a component has the same name as one of its interfaces.
    • An interface can now have the same name as its namespace.