Skip to content

itemis CREATE 5.4.0 (August 1, 2025)

This release provides a now fully completed C# code generators along with improvenets and bugfixes in several areas.

Multi-state machine support for C#

The C# code generator now fully supports multi-state machine scenarios, enabling correct and complete code generation when multiple state machines are defined.The C# code generator is now feature complete regarding common statechart and sctunit generator features.

SCTUnit Generator

  • C++
    • Mock interfaces in generated test suites are now defined as inner classes of the test fixture class. This avoids global class name conflicts and prevents undefined behavior or segmentation faults during test execution.
    • State machine instances in generated tests are now encapsulated as member variables of the test fixture class instead of being declared as global static variables. This eliminates One-Definition Rule (ODR) violations and ensures test isolation.
    • Added value initialization for member variables in generated C++ classes to prevent undefined behavior from uninitialized pointers.
  • Java
    • The SCTUnit Java code generator now correctly generates all required imports for types contributed via deep Java integration.
    • Fixed incorrect access to public variables of types contributed via the Java domain.
    • The generator now correctly handles operation names starting with an uppercase letter.
    • The type system now correctly scopes Java domain types per project to prevent type collisions when using classes with identical names in different projects.

C++ Code Generator

  • Raw pointers are now initialized and compared using nullptr instead of the literal 0, improving code clarity and compliance with C++11 best practices.
  • Initialization code for state machine variables is now correctly generated for C++11.
  • Escaping of keywords used as identifiers has been improved. Identifiers such as event, interface, etc., are now correctly suffixed (e.g., event__) to prevent compilation errors.
  • Namespace resolution in trace callback generation has been corrected to avoid redundant or malformed qualified names.
  • Generated code now properly escapes C++ keywords when used in statechart declarations.

Deep C/C++ Integration

  • Initialization of user-declared complex types no longer incorrectly assumes the existence of parameterized constructors. This was an issue with C++.

C# Code Generator

  • Event handling for out events has been refactored to follow standard C# idioms using EventHandler and EventHandler<T>.
  • Generated event raisers are now null-safe using the null-conditional operator ( ?.).
  • Fixed generation errors when out event names begin with a capital letter.
  • Escaping of C# language keywords used in identifiers has been corrected. Affected keywords include: as, event, interface, internal, in, out, and readonly.
  • Enum access has been fixed for enumerations contained in packages by using fully qualified names.

Validation and Modeling

  • Validation messages now include the name of the affected model element. This makes it easier to trace validation issues from the problem view.
  • A new validation rule detects incompletely entered orthogonal states caused by missing default entries in regions with direct transitions to child states.
  • Highlighting of keywords in expressions has been improved. Identifiers that match keywords are no longer incorrectly highlighted if they refer to valid model elements.
  • Completion transitions targeting named entries are now correctly treated as completion transitions in code generation.

Customization & API

  • Custom extensions can now define annotations for states. This allows for greater flexibility and configurability when extending the modeling language.
  • The StatechartExpressionParser now supports injector customization by allowing the createStatechartResource method to be overridden.
  • Type inference now correctly resolves elements in expression features.

Miscellaneous

  • Fixed malformed paths for HTML content in the example wizard.
  • Improved editor responsiveness when working with large statechart models, especially on macOS with AArch64 architecture.
  • Fixed the UML2SCT generator, so it now produces deterministic output by maintaining a consistent order of declarations. This significantly reduces version control noise and simplifies reviews.
  • Coverage values were not calculated correctly for child test suites beyond the first one. This has been corrected.