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.
- Blocking is now fully supported, it may be used:
- Commands
- The
dzn explore
command has been removed.
- The
- 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 fordzn 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 new
- 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.
- Returns are no longer removed from the state-diagram. Using the new
- 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.
- Using the construct