We are delighted to announce Dezyne 2.13.1: The simulator function including system scope.
This replaces the simulation function that was moved from Dezyne Core in release 2.10 to Dezyne-IDE in release 2.11. The new simulator function provides a basic command-line interface in Dezyne Core and is now also integrated in the Dezyne-IDE.
The integrated Trace view of the simulator was rewritten in P5, using the new Dezyne-P5 project by Rob Wieringa which he developed as free software. The buttons for events that are outside the accepted behaviour are only greyed-out and can still be selected to inspect what happens if the event would occur.
The integrated System view was also rewritten in P5, removing the last dependency on third-party proprietary software.
Finally, verification and simulation can now be loosely integrated on
the command-line and an experimental ASCII diagram is provided by dzn trace
, i.e., running
dzn verify examples/Alarm.dzn | dzn simulate Alarm.dzn \
| dzn trace --format=diagram
gives
error: illegal action performed in model Alarm
test/all/Alarm/Alarm.dzn:136:25: error: illegal
console Alarm sensor siren
// // // //
. : . . error: illegal
. : . .
. : triggered. .
. :<-----------------. .
. : . .
. detected: . .
.<-----------------: . .
. : . .
. :turnon . .
. :------------------------>.
(trail sensor.triggered console.detected siren.turnon <illegal>)
(eligible)
The documentation is available here: download.verum.com/documentation.html.
We will evaluate your reports and track them via the Gitlab dezyne-issues project, see our guide to writing helpful bug reports.
What's next?
Extending the language with aspects like: implicit interface constraints, hierarchical behaviors, module-specifications and data-interfaces. Support for Model Based Testing. Releasing the Dezyne Core as free software.
Enjoy!
The Verum Team
Download
Here are the binary downloads and a GPG detached signature[*]:
dezyne-2.13.1-x86_64-linux.tar.gz (63MB)
dezyne-2.13.1-i686-windows.zip (122MB)
dezyne-ide-2.13.1-x86_64-linux.tar.gz (83MB)
dezyne-ide-2.13.1-i686-windows.zip (161MB)
Here are the GPG detached signatures[*]:
dezyne-2.13.1-x86_64-linux.tar.gz.sig
dezyne-2.13.1-i686-windows.zip.sig
dezyne-ide-2.13.1-x86_64-linux.tar.gz.sig
dezyne-ide-2.13.1-i686-windows.zip.sig
Here are the MD5 and SHA1 checksums:
fd3eee23369bc01e7794404320f4b811 dezyne-2.13.1-i686-windows.zip
d266640091f3c6e7b21f0282953a6678 dezyne-2.13.1-x86_64-linux.tar.gz
136e133703192883407ded6680970992 dezyne-ide-2.13.1-i686-windows.zip
447344307b7f8118c8961073d5f13e50 dezyne-ide-2.13.1-x86_64-linux.tar.gz
109b1b00289e9fd167382a11457a6b168b062dff dezyne-2.13.1-i686-windows.zip
333fab4a568cd451603b4704e515577e69bf4030 dezyne-2.13.1-x86_64-linux.tar.gz
7f5ea26543eae241dacccf36085bcccc51935563 dezyne-ide-2.13.1-i686-windows.zip
6267c3c01257c04b5945bcf553d61d3b7f0f83c2 dezyne-ide-2.13.1-x86_64-linux.tar.gz
[*] Use a .sig file to verify that the corresponding file (without the .sig suffix) is intact. First, be sure to download both the .sig file and the corresponding tarball. Then, run a command like this:
gpg --verify dezyne-2.13.1-x86_64-linux.tar.gz.sig
If that command fails because you don't have the required public key, then run this command to import it:
gpg --keyserver keys.openpgp.org \
--recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273 AD43109BE73D4891B77076862A611108640C1816
and rerun the gpg --verify
command.
Get informed, get involved
See gitlab.com/dezyne/dezyne-issues
Join #dezyne
on irc.libera.chat.
NEWS
Dezyne-IDE
Changes in 2.13.1 since 2.13.0
Noteworthy bug fixes
Simulation now reports well-formedness errors instead of merely exiting with a non-zero status.
The well-formedness check is now skipped on subsequent simulation runs.
When verifying a correct model that is defined in a namespace, a crash has been fixed that prevented the simulation function to start.
Changes in 2.13.0 since 2.12.0
Simulation
- Simulation now uses the
dzn simulate
command under the hood. This provides a simulator function including system scope and enables future language updates. Its performance requires more work. - The
--queue-size
option is now supported for simulation.
- Simulation now uses the
Verification
- Detailed error messages of verification and simulation are displayed in the console.
- The
--all
flag has been removed foride verify
and thus the implicit ide simulate displays the first and only error.
Views
- Clicking on a port in the System view highlights the port binding across system boundaries.
- The System view now uses P5.
- The Trace view now uses P5.
Noteworthy bug fixes
The daemon now supports the
-w,--http-port
option.
Dezyne Core
Changes in 2.13.1 since 2.13.0
Parser
- The well-formedness check now reports an error when the ports of a binding have different types.
Simulation
- The 'dzn simulate' command now supports using --format="diagram" directly. It also supports the -i,--internal option from `dzn trace' for this.
- In interactive mode, the `dzn simulate' command now uses GNU Readline.
- When simulating interactively and an async ack is pending, show first observable action triggered by the async ack as eligible event.
- In interactive mode, the simulator now prints the action where input is needed to resolve a non-deterministic choice.
Noteworthy bug fixes
The C++ and C# runtime has an updated pump that fixes the collateral blocked release that was previously only handled during pump destruction (#23).
The C++ code generator now correctly sets async ranking for thread safe shells.
A bug in verification has been fixed that would sometimes cause invalid mCRL2 code, resulting in a backtrace.
A bug in verification has been fixed that would attempt to add missing void returns to valued functions.
The well-formedness check now reports two more cases of missing returns in a valued function: An else branch without return, and the empty function body.
In the simulator, the location of <q-out> events has been fixed.
In the simulator, a crash related to injected has been fixed in the default split-arrows trace output.
In the simulator, two bugs with respect to scoping function variables have been fixed.
The simulator now skips the (expensive) deadlock check when input is needed to resolve a non-deterministic choice.
A bug in the simulator's trace output has been fixed that caused some eligible event names to be prefixed with "sut." when simulating an interface.
The simulator now updates the provides ports right after flushing async.
The simulator now skips the deadlock check for illegal traces.
The simulator now shows complete split-arrows trace for deadlock errors.
The simulator now supports systems with dangling injected ports, which may happen when simulating a sub system that relies on an injected instance from an outer system.
A bug in the simulator was fixed where a trace needing input leading up to a non-deterministic choice would already include one of the possible choices at the end.
A bug in the simulator was fixed that generated duplicate traces.
The ASCII trace diagram now supports interface traces.
Changes in 2.13.0 since 2.12.0
Simulation
- Interactive use is now supported, it is started when invoked without input trail.
- The input trail may now be sparse, only the input needed to resolve non-deterministic choices is required.
- The split-arrows trace format is now used by default. It includes the provides port trace.
- The eligible events are printed at the end of the trace.
- Invalid input (garbage) on the trail is marked as an error.
All verification problems are detected and reported, notably:
- async livelock,
- failures model refusals,
- forking a call from one provides port to another provides port,
- a second async req, while a previous ack is still pending,
- a reply on a modeling event in an interface.
- A provides port that uses silent events is now supported.
Commands
The
dzn trace
command has two new output formats:- --format=json provides P5 output for integration with Dezyne-IDE,
- --format=ascii provides an trace diagram.
- The JSON output for the state diagram now produces actions and state as structured data.
Verification
- Enum literals in the verification trace now use a colon as enum-field separator. This resolves a long standing ambiguity in the trace format.
- The verification standard output is now adds the model name next to the trace.
- The trace is now marked with a <label> indicating the problem found during verification.
- Verbose output is written to standard error.
- The
--json
option has been removed. - Async livelocks, i.e., defer.ack () => defer.req () are now detected and reported.
Code generation
- The C# runtime now defines a generic async interface; async interfaces are no longer generated.
- The C++ code generator has been updated to support the new enum literal representation.
- The C# runtime has been updated to support the new enum literal representation.
- The experimental C code generator now properly supports systems, foreign components and namespaces.
Noteworthy bug fixes
A type mismatch is now also properly reported when attempting an enum field access on a boolean (#19).
An undefined function is now also properly reported for a function call that has arguments (#18).
Verification now reports a livelock with async.
In the simulator, for a requires out event on a model with multiple provides ports, all provides ports are now being updated.
In the preprocessor, an off-by-one line count error has been fixed for deeply nested imports.
Generating code using a calling context for a model that uses dzn.async is now supported (#20).
Using the same async interface with parameters more than once no longer triggers a well-formedness error.
The C++ and C# code generators no longer create structs or classes for async interfaces with parameters.
Using an early return pattern in a function now no longer reports a false positive <livelock> or <second-reply> error (#27).
The C++ and C# runtime and pump now queue events that are sent to a blocked port (#23).
The C++ and C# runtime no longer releases collaterally blocked ports early, avoiding "component already handling an event" (#23).
About Dezyne
In Dezyne, you define components and their interfaces through a familiar and compact C/Java like-language. The Dezyne language is targeted at the logic or event-driven behaviour of an application. The interfaces are the specification and the components are the implementation.
Dezyne automatically verifies semantic correctness of the logic behaviour and proves that the components correctly implement the interfaces. A user can simulate the behaviour to validate whether this is as intended. Diagrams and logical views are generated automatically from the language description. As a final step code can be generated in a number of standard programming languages.
Without having to rely on a process Dezyne automatically highlights problems areas, stimulates communication about these and enforces that components work together.
About Verum
verum.com is a leading developer of software design tools to create, simulate, mathematically verify and automatically generate code for embedded and cyber-physical systems.
At Verum, we help our customers and partners solve the most challenging software issues of today and tomorrow. We support customers with our product Dezyne, a software engineering toolset that enables engineers to specify, design, validate and formally verify software components for embedded systems combined with consultancy services.