Changes in Model RealTime 11.2

Model RealTime 11.2 2023.04-iFix1

175929: [Fix for 11.2 2023.04-iFix1]: Resolve automatically restored trace elements against current debug session

When relaunching a trace session, previously added trace elements will be remembered and automatically added to the Trace tab. Now these trace elements will be resolved properly against the current debug session.

175928: [Fix for 11.2 2023.04-iFix1]: Resize Capture table in Trace Editor to utilize entire view width

The Capture table of the Trace editor is now properly sized and all the capture elements can be properly visualized.

175927: [Fix for 11.2 2023.04-iFix1]: Finalize GCC 12 support

LibTcpServer library now uses POCO version 1.12.4 on both Windows and Linux. Supported compilers are VC++17, MinGW-12.2.0 and GCC-12x.

175926: [Fix for 11.2 2023.04-iFix1]: Further improve appearance of inherited elements in statemachine diagrams

* Inherited initial state and junction symbols now have a border.
* Entry and exit points on inherited states are drawn with thin lines irrespective of the corresponding line width preference.
* All the inherited pseudo states do not have grayed-out background color.


Model RealTime 11.2 2023.04

175850: Testcase fails with "UNEXPECTED MESSAGE"

It's possible to construct a model where (under certain special circumstances) a capsule may receive a message before its state machine has been initialized. Previously this led to a call to RTActor::unexpectedMessage(), i.e. this situation was considered unexpected. Now this situation is handled by deferring such messages and later recalling them when the capsule is ready to initialize its state machine. Generated code now calls a new function RTActor::unhandledMessage() instead which takes the decision whether the message is truly unexpected (in which case unexpectedMessage() is called as before), or if the message just arrived "too early" and needs to be put in the defer queue for later processing.

175828: THE "MODIFIERS" CHECKBOXES FOR "OPERATIONS" IN "PROPERTIES"WINDOW ARE SHOWN INORRECTLY

When the language of the model was set to anything other than 'C++', some modifiers in the Properties view for operations could be shown incorrectly. Now correct modifiers are always displayed irrespective of the language of the model.

175740: Move semantics in HCL Model RealTime not working properly in case of port cardinality>1

When sending an event with an rvalue reference to event data (e.g. using std::move) on a replicated port (i.e. with multiplicity > 1) the event data will now only be moved once (for the last port instance).

175724: Model RealTime: implementation tab disappears in code view window when class operation is marked as "pure virtual"

It is now possible to add an implementation for a pure virtual operation. A pure virtual operation must be implemented in a derived type that will be directly instantiated, however the base type can still define an implementation. A derived class or capsule can explicitly call the base type implementation.
An operation marked as pure virtual will be generated in the cpp file only if it has a body.

174724: Model Debugger: State names not printed in trace

Tracing of inherited composite states with the model debugger is improved so that all state activation events now are captured. Note that there still is a problem when the elements in the Capture tab are automatically added when launching a new trace session. For now it's necessary to start by removing such automatically added elements, and then add them back again, to ensure all trace events will be properly captured.

172030: Please introduce a possibility to add "white space" in a diagram

A new diagram tool was added for making free space around the mouse cursor. It is available in the Palette toolbar for most types of the diagrams. The new tool might be useful when adding a new element to an already crowded diagram. It will move existing symbols radially outwards from the clicked position, creating the free space right at it.

172027: Please enhance the distinction between inherited elements on diagrams

New preferences have been added to control the widths of the lines in statecharts and the style of the lines for inherited elements.
By default the lines have medium width, the lines for inherited elements are drawn dashed, and redefined elements are shown with a special dashed line style ("dash-dot-dot") to make them easier to distinguish.

138752: CQPAR00184731 - RSA-RTE: State machine of derived capsule damaged when adding abstraction

Please see the release note for the item "175814: Improvements for Inheritance Rearrangement" here:
[Model RealTime documentation: Model RealTime 11.2 2022.48.html?cp=27_4_14_4](https://Model RealTime.hcldoc.com/help/topic/com.ibm.xtools.rsarte.webdoc/Releases/Changes%20in%20Model RealTime%2011.2/Model RealTime%2011.2%202022.48.html?cp=27_4_14_4)


Model RealTime 11.2 2022.48

175814: Improvements for Inheritance Rearrangement

The Inheritance Rearrangement dialog was improved to report a list of references contained in the subclass that will become broken due to an inheritance refactoring. Broken references can be fixed with default actions that try to avoid unnecessary duplication of previously inherited elements, but it's also possible to use other actions for fixing the references. To help understanding and fixing the references the dialog provides navigation to useful views and diagrams.
In a few scenarios an inheritance rearrangement can still cause unexpected changes, which then must be fixed after the refactoring:
* A redefined state targeted by the initial transition in one of the super classes, may get locally duplicated, even if it's still accessible after the refactoring. In this case the initial transition may also get unexpectedly redirected to the duplicated state, even if it was redefined to target another state.
* For a redefining transition where both the source and target states are inherited, and still accessible after the refactoring, the preferred behavior would be to create a local transition in case the redefined transition is not accessible after the refactoring. However, the Inheritance Rearrangement dialog currently doesn't offer that possibility, and you can only choose between absorbing both the source and target state and then creating a local transition between those copies, or to delete the transition altogether. It's recommended to go for the first option and then manually redirect the local transition to target the inherited states instead, and then delete the unnecessary local states that were created.
* Inheritance rearrangement works best for capsule inheritance, and there are known issues for class inheritance. For example, redefinition links of class operations are not ensured to reference the closest operation in the inheritance hierarchy after the refactoring. Generated C++ code will still be correct, but navigation in the model will not work correctly since the redefinition links may target operations higher up in the inheritance hierarchy.
* It's possible to choose contradicting actions in the Inheritance Rearrangement dialog. For example, chosen actions can specify that a state should both be copied and deleted at the same time. It's the user's responsibility to not select actions that contradict each other.

175741: Support 64-bit pointers in buffer memory manipulation in Connexis

Improved 64-bit platforms support for Connexis DCS library. Fixed critical problem with buffer memory management for 64-bit pointers.

175665: Support for C++ attribute:[maybe_unused] and Suppression of rtdata

When Clang-Tidy compliance is selected, [[maybe_unused]] attribute is added to generated function arguments which are potentially unused. This is done when generated C++ code standard is set to C++17 or higher. For example:
void transition2_t1( [[maybe_unused]] const void * rtdata, [[maybe_unused]] MyProtocol::Base * rtport );

175638: Modifier in property windows is shown incorrectly

When the language of the model was set to anything other than 'C++', some modifiers in the Properties view for operations could be shown incorrectly. Now correct modifiers are always displayed irrespective of the language of the model.

175594: Automatically restore all tabs containing class, structure,state-diagrams when restarting

Model RealTime can now automatically restore previously open editors when the tool is started, to enable this behavior check the new preference "Automatically restore modeling editors on startup" under Modeling category. By default the preference is unchecked.

175498: Default return type "copied" from other functions

Now Return Type field in General tab of a Properties View for an operation is always updated correctly to show the return type of the currently selected operation.

175430: No option available to Cut, Copy and Paste when editing Transformation Configuration

When editing Transformation Configurations, right-click on text fields to open Eclipse standard context menu with Cut, Copy and Paste commands. To modify model properties right-click on the fields labels.

172729: CQPAR00224766 - Enhance model navigation within inherited state machines

When invoking "Go Inside" on an inherited composite state you will be prompted if you want to open the inherited state machine diagram or if you want to redefine the state and create a local state machine diagram.
A new preference, "RealTime Development - Diagrams - State Chart - When going inside inherited composite state" is added to get rid of the dialog box. You can also select "Remember my decision" checkbox in the dialog box to remember the choice and avoid being prompted.

99355: Remember which editor tabs that are open, and restore them when reopening Model RealTime

Model RealTime can now automatically restore previously open editors when the tool is started, to enable this behavior check the new preference "Automatically restore modeling editors on startup" under Modeling category. By default the preference is unchecked.

64031: Keep diagrams open on restart

Model RealTime can now automatically restore previously open editors when the tool is started, to enable this behavior check the new preference "Automatically restore modeling editors on startup" under Modeling category. By default the preference is unchecked.


Model RealTime 11.2 2022.41

175655: CQPAR00260446: Project importer "Calculate dependencies based on transformation configuration prerequisites" feature doesn't import all dependencies

External project import wizard imports all dependent projects based on TCJS prerequisite.

175652: Project importer "Calculate dependencies based on transformation configuration prerequisites" feature doesn't import any dependencies

Import External Projects wizard will now correctly handle empty elements in the list of transformation configuration dependencies.

175639: Commands for saving and opening editor session

Newly introduced commands Save Session and Open Session under Manage Editors menu allow to save and restore the currently opened editors.
Note: The file will be saved with .session extension

175631: Prerequisite transformation configuration not inherited

Problem with resolving sources from parent TC prerequisite has been solved. Now model files are loaded in time and source elements are resolved properly when a concrete TC is inheriting prerequisites from parent abstract TC.

175628: "Workspace output path" in TC doesn't allow for subdirectories

Advanced support for "Workspace output path" TC property (tc.targetProject) has been implemented. Now the following can be used:
- subfolders, for example, "sub1/sub2/targetProjectName"
- TCONFIG_NAME inheritance, for example, if "$(TCONFIG_NAME)_target" is defined in parent TC and inherited in several child TCs, name of generated target project will be resolved based on the child TC name
- full paths, for example, "C:/work/proj1/ws1/$(TCONFIG_NAME)_target"
- workspace_loc variable which points to the current workspace location, for example, "$(workspace_loc)/../myApp/myTargets/$(TCONFIG_NAME)_target". workspace_loc variable definition is also generated into makefile and can be used in "Target Configuration" paths.

175572: EOL character is lost in code snippet on save

Newline characters in code snippets are now handled correctly when the model is fragmented.

175515: Create connection between ports causes automatic connection between two other ports

Creating a connector between inherited ports in Composite Structure Diagram is now handled correctly without adding connectors between other instances of the same ports.

175505: For events, Search string not prefilled with event's name

Events and Composite Structure Diagrams names are now prefilled in Search string field in the Find/Replace dialog.

175504: Model RealTime enters inconsistent state when TOP state is automatically entered, but TOP is not a composite state

If Open State Machine Diagram command is configured to automatically go inside the TOP state, it will not go inside TOP state, if it is not a composite state.

175493: "Points to const type" is missing for shared aggregation

"Points to const type" checkbox is now available in C++ General property page for attributes.

175477: Uplift MSVS to version 17 (2022)

Target configurations for Visual Studio 2022 (ver 17), both for 32 and 64 bits, are now provided. It replaces the older Visual Studio 2017 (ver 15) configurations.

175463: Moving a connector from one port to another doesn't update the connector's Properties

When reconnecting an existing connector to another port in a Composite structure diagram, connector's properties are now updated correctly in the Properties view.

175439: Transformation configuration editor does not use the inherited environment variable set for target location of a Child TC

Processing of TC target project location has been improved. Now, Location property is properly inherited. Additionally, workspace_loc variable which points to current workspace location is supported. TCONFIG_NAME can be used in parent TC target project location, but it will be resolved based on the child TC names. "Workspace output path" (tc.targetProject) can be defined with full path, or with nested subfolders.

175390: Support Linked Resources in Model Compiler

Now it is possible to reference a special variable workspace_loc in TC properties instead of using manually defined WORKSPACE_PATH from Linked Resources. workspace_loc points to the current workspace location. It can be used in output location for generated target projects and in Target Configuration paths, for example, Inclusion paths, User libraries and others. workspace_loc definition is generated into makefiles.

173874: Path variables (e.g. workspace_loc or project_loc) are not resolved in certain input fields.

Added support for workspace_loc variable which points to the current workspace location. It can be used in output location for generated target project and in Target Configuration paths, for example, Inclusion paths, User libraries and others. workspace_loc variable definition is generated into makefile.


Model RealTime 11.2 2022.34

175514: Function argument cannot contain nested template types

Types of operation parameters or attributes containing nested templates (e.g. testMap : std::map<int, vector<int>>) are now parsed correctly.

175501: Unable to parse type expression warnings during build

Model compiler will no longer issue a warning "Unable to parse type expression" for the non-standard types.

175488: Two different views of same type of capsule with false ports exist

From now on the ports on part symbols in Composite Structure diagrams will be correctly updated when the type of the part is updated.

175436: Initializer kind: Brace and default copy constructor

Attributes that use brace initialization will now also be initialized with braces in the copy constructor.

175090: Support for C++17 "inline" specifier

An attribute can now be marked as inline to be translated to an inline variable in C++. Such a variable can be defined (not just declared) in a header file that can be included from multiple .cpp files without getting a linker error. This feature requires C++ 17.

174056: Project importer should calculate relations based on TC

This feature enables the calculation of project dependencies based on transformation configuration prerequisites. A new check box has been introduced in the ‘External Projects’ preference page. If you configure projects using either ‘External Folder’ or a ‘Map File’ and enable the new preference, Model RealTime will calculate and import dependent projects based on transformation configuration prerequisites.

173639: Make dragging elements from search results possible

Now it's possible to drag/drop elements from the Search view and Inheritance Explorer to diagrams. The behavior is the same as when these elements are dragged from the Project Explorer. A current limitation is that dropping elements on a Composite Structure diagram will not work. For that case you still need to drag the element from the Project Explorer.

170475: Function arguments cannot contain commas

Types of operation parameters or attributes that contain a comma (e.g. testMap: std::map<int, int>) are now parsed correctly.


Model RealTime 11.2 2022.26

175491: "CLANG-TIDY CODE COMPLIANCE" FEATURE NOT GENERATING NOLINT SUPPRESSION

Clang-Tidy compliance for bugprone-sizeof-expression has been improved. Now sizeof(T) expressions that are automatically generated into type descriptors are always followed by suppression comment (when Clang-Tidy compliance option is turned on).

175486: Model Debugger: States not activated when signal comes after Choice Point

The states reachable from transitions coming out of choice points are now logged correctly.

175437: Project importer - Create working sets on project import

External Projects importer has been improved. It will now create two new working sets when importing: one with the project name (with the first project name if multiple projects are selected) and the other with “project name ‘dependencies’”. After the import a user would need to select newly created working sets to see them in Project Explorer.

174817: Drag and drop class/capsule names, attributes, methods, enumeration literals etc. into code

Now it is possible to copy and paste names of NamedElements and Diagrams from the Project Explorer on to any editor

173933: Save option do not commit change into model files

New setting has been introduced under RealTime Development -> Code to Model Synchronization to control the initial state of "Save model when it has been updated" checkbox in the Code to Model Synchronization dialog.

173886: Trailing whitespaces are not removed after "Save" action

Code View and Code Editor now can remove trailing whitespaces from all the lines of a code snippet on save. This behavior is controlled by a new preference ‘Remove trailing whitespaces in all lines’ in a page RealTime Development -> Code Editing -> Save Actions.

144176: Model validator complaints about perfectly correct C++ code

Named element must not include the namespace separator ("::") warning is removed and no longer appears.

144174: Enable drag and drop of operations and attributes from Project Explorer to Source editor

Now it is possible to copy and paste names of NamedElements and Diagrams from the Project Explorer to any editor.

135474: OPERATION WITH '::' IN THE NAME GET CORRUPTED IF SELECTING ANDUN-SELECTING THE SIGNATURE FIELD

Name space separator ("::") is now handled properly in operation names and signatures.

116662: Drag and Drop operations to code editor does not work

Now it is possible to copy and paste names of NamedElements and Diagrams from the Project Explorer on to any editor.


Model RealTime 11.2 2022.21

175374: Model RealTime crashes during normal use

SWT resource handling in the product UI has been improved. Several places have been identified where SWT resources have been allocated and not properly disposed. The leaks have been addressed by adding proper disposal.

175303: When changing corresponding model element name, change fragment name automatically

Now it's possible to rename a model file when renaming its root model element using the Refactor - Rename command. The Rename dialog has a new check box "Update file name" which can be marked to do this.

175197: Line endings change when saving

XML specification for line ending for external entities converts all line ending to LF in the application. You can read more about it here https://www.w3.org/TR/REC-xml/#sec-line-ends
Now we have provided an option for user to choose preferred line ending under the Modeling preference section. CDATA section will have user selected line ending irrespective of line ending used in other parts of model file.

175091: Support for C++ 17 "nodiscard" feature

It's now possible to mark elements as nodiscard. It's also possible to specify a noDiscard message which the compiler will print if a nodiscard element is referenced. This feature requires C++ 17 or later C++ language versions and for nodiscard message, C++ 20 or later C++ language versions required

174741: Model RealTime code changes are neglected

Previously it could happen that changes made in the Code View were lost when saving them with Ctrl+S. More specifically this happened if there was another unsaved code snippet open in a Code Editor, and the two code snippets belonged to different model fragment files. This problem has now been fixed, and both Ctrl+S and the Save button in the toolbar can be used for saving the Code View changes in this situation. If you have already put the focus outside of the Code View and it still has some unsaved changes then you can select the resource root element (use the Navigate to Resource Root command) in the Project Explorer and then click the Save button in the toolbar to save the fragment file. Changes made in a Code Editor can as usual be saved by clicking inside the Code Editor and then invoke the Save command.

174194: The preference "C++ code standard" settings should be available from the TC

New property cppCodeStandard has been added to Transformation Configuration. New drop-down control "C++ code standard" has been added to Code Generation tab in TCJS Editor. By default it will show the value specified in global preference RealTime Development --> Build/Transformations --> C++ --> C++ code standard. It is possible to set a different C++ code standard from TC and it will override the global preference.

173875: CQPAR00251029 - Support for chrono classes in RTServices library

Timers can now be set using types from the std::chrono library.

164567: CQPAR00211779 - CODE VIEW LOSES INPUT FOCUS AFTER SAVE

Now focus remains on the Code View after a user invokes save using Ctrl+S keys. Therefore the user can continue editing in the Code View without having to manually focus on Code View.