Model RealTime 11.1 2021.46

November 22, 2021

Today we ship another release of Model RealTime: 11.1 2021.46. As usual there are several new features and a few bug fixes. Let's look at some of the highlights.

Moving Event Data

If you send data between two capsules frequently, and/or the data is big, you can benefit from the new possibility to move the event data. The diagram above shows that for a test application that moves instead of copies a string that is sent frequently between two capsules, the application performance improved with approximately 35%.

The type descriptor of a type now contains a new move function. If defined, a data object will be moved if an rvalue reference to the object is provided in the send-statement. You can for example obtain an rvalue reference using std::move:

pb.e1(mc).send(); // Send by copy
pb.e1(std::move(mc)).send(); // Send by move

You can also move the data of a received event in a transition function. For this to be possible the rtdata parameter must be declared as non-const. Unmark the new transition property Const rtdata parameter to accomplish this.

You can then move the event data into, for example, a capsule attribute:

m = std::move(*rtdata);

Copy/Paste of Transitions

It's now possible to copy a transition from a state machine and paste it onto a state in another (or the same) state machine. This can significantly speed-up the process of creating a new state machine based on an existing one. When you paste a copied transition on a state it initially becomes a self-transition for that state. You can later reroute the transition in a state chart diagram if you want it to target another state.

Automatic Creation of Fragment Files

A new preference Modeling - Automatically Create Fragment Files can be set if you prefer each newly created model element to be placed into its own fragment file. This can be useful for users that prefer creating fully fragmented models. Note that fragment files are not automatically renamed if you later rename the model element stored in it. There is a separate command in the Project Explorer context menu for renaming the fragment file: Refactor - Rename file.

Code Compliance

The preference RealTime Development - Build/Transformations - C++ - Code compliance - Clang-Tidy now also handles warnings for certain sizeof expressions by generating a suppression comment in the code. By not getting warnings from the generated code, it becomes more practical to use Clang-Tidy to find problems in your handwritten code snippets.

Learn more about the new features in this release by watching the videos in our Sprint Demo YouTube Playlist.


Mattias Mohlin
Architect for HCL Model RealTime