With release 2.13 the previous simulator has been replaced with a new simulator function, which includes system scope validation, a major improvement. The system scope simulator provides more insight in the working of a system by combining multiple components and multiple interfaces. This is an important feature that is of support to the parties involved in the software engineering process: software engineer, test engineer, software architect and system engineer.
Dezyne-IDE
Changes in 2.13.2 since 2.13.1
- Views
- An SVG image of a view can be saved by pressing Control-S.
- Noteworthy bug fixes
- Verify and simulate now always show a trace view (#34):
- The alert sign with messages is shown even when there is no trace,
- An invalid trace is handled gracefully; the valid prefix of the trace is shown along with an error message,
- Pressing [F12] now always produces the browser’s console.
- User experience (#37):
- Source code locations of some arrows have been fixed,
- All error messages are now also shown in the browser,
- The placement of the alert sign and the last arrow leading up to the alert sign has been fixed,
- The color scheme of an interface trace is now consistent,
- Performance: built with GNU Guile 3, Windows 64 bit.
- Verify and simulate now always show a trace view (#34):
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.
- The daemon now supports the
Dezyne Core
Changes in 2.13.2 since 2.13.1
- Noteworthy bug fixes
- The simulator would produce an invalid split-arrows trace for certain combinations of blocking and external (#34).
- In the simulator, events on the input trail now determine when an external event is executed, i.e., taken out of the queue.
- On the split-arrows trace, external q-in events are now hidden.
- Six new regression-tests on the
external
feature where added along with fixes for the simulator. - The simulator’s major performance bottle necks have been addressed (#36).
- The simulator now prioritizes errors in the same order as verification does; a possible error trace is always shown.
- On
dzn simulate
, the--queue-size
parameter now works. - dzn explore:
- A bug that left some states without a label has been fixed,
- The “tau” label on tau-transitions has been removed,
- Duplicate transitions due to non-determinism are merged.
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 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.
- The
- 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 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 or 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).