YAKINDU Statechart Tools 4.1.0 (May 9, 2022)

The 4.1 release is a major release that adds Completion Transitions semantics to YAKINDU statecharts, and comes with a first preview of the new C++ 11 Code Generator.

Completion Transitions

From this version onwards, YAKINDU Statechart Tools applies the UML specification for completion transitions as defined in the OMG UML 2.5.1 specification under chapter 14.2.3.8.3. Completion transitions are transitions that do not declare any trigger or guard. In previous versions such empty transitions were never taken and a corresponding warning was displayed.

A completion transition is taken as soon as its source state is completed. A simple state is considered to be completed when all its entry actions are executed. A composite/orthogonal state is considered to be completed when all its sub regions have reached a final state. Completion transitions make it much easier to synchronize the execution of parallel actions in orthogonal regions. A sub machine state is completed when the sub statemachine has reached its final state. However, the latter case is not yet supported, but will be implemented in the near future.

You can find more information on this feature in our user documentation.

(Beta) C++ 11 Code Generator

In addition to the existing C++98 compliant code generator this release provides a beta version of a C++11 compliant code generator. C++11 was chosen as the base standard which fits very well into recent C++ standards.

The current version is intensively tested and can be used for production code. But please be aware that this version is beta. The API of the generated state machine code may change until the final release.

The main differences to the C++98 code generator relate to c++11 compliant changes to the generated state machine API:

  • Overriden methods are now correctly declared using C++11 override which prevents related compiler warnings.
  • State and event enumerations are now defined as enum class instead of plain C enumerations.
  • The base types used by the generated state machine code changed. These are defined in sc_types.h. You have to regenerate this file.
  • All sc types like sc_integer or sc_real which were defined in the global name space are now defined in the sc name space. So sc::integer is used instead of sc_integer .
  • bool is now directly used instead of sc_boolean typedef.
  • std::string is used instead of sc_string which was defined as as C string.
  • sc_eventid which was used in the TimerServiceInterface and TimedInterface is replaced by sc::eventid which is now based on a state machine internal time event index instead of a pointer value.
  • The generated API has now a triggerWithoutEvent method in order to perform a run-to-completion step without triggering an event.
  • check method is declared as const.
  • The internal implementation of the event handling was optimized.

You can use the C++11 code generator by specifying yakindu::cpp11 instead of yakindu::cpp in your *.sgen files. Accordingly the C++11 SCTUnit code generator uses the generator id sctunit::cpp11.

(Beta) Reworked Qt-C++ Code Generator

The Qt code generator has been reworked to use the new C++ 11 code generator. While doing so we have fixed several issues that were present in the previous Qt generator. You can install the Qt code generator from the release update site (under the category „YAKINDU Statechart Tools Extensions”).

Further Updates

This release contains the following updates:

  • C/C++ domain: We fixed an issue with the parsing of overloaded operations that use the same type hierarchy in their input parameters.
  • C/C++ domain: Changes in a header file that is imported in a statechart are now directly reflected in the statechart editor.
  • C/C++ domain: Identically named types (enums, structs etc.) in different namespaces are now properly parsed and distinguished by the statechart editor and simulation.
  • C/C++ code generator: The default value of function inlining is changed to true (see here for more information)
  • C/C++ code generator: We fixed the style of generated doxygen comments.
  • Image generator: In some scenarios, the image generator produced different results depending on if the model was opened or closed. This is fixed now.
  • Headless code generator: The generator now continues to generate all specified generator models even when one of them fails due to an error.
  • Time triggers can now handle larger numbers (64-bit integers).
  • Choice check functions are now inlined per default which avoids generation of dead code.
  • We fixed an error when executing SCTUnit test suites.
  • We fixed an issue in the editor when someone accidentally deleted the statechart name.
  • We fixed a few issues with code completion proposals in generator models. They are now prettier and more informative.
  • We fixed a sporadical issue causing the statechart editor to open with a „Resource contains no diagram” error.
  • We fixed several usability issues in the definition section.