Changes in Model RealTime 11.3

Model RealTime 11.3 2023.49

176463: Improve dependency injection for incarnation of optional capsule parts

The dependency injection service of the TargetRTS (as implemented in RTInjector) was improved. It's no longer necessary to register create functions for optional capsule parts which may be incarnated by a sub capsule of the capsule that types the capsule part. Now, if no create function is registered for a capsule part that gets incarnated, RTInjector will not attempt to create an instance of the capsule based on the static type of the capsule part. Instead it will fallback to creating the capsule instance in the default way. This improvement means that it's now only necessary to register create functions for those capsule parts where you want to override the default behavior of creating capsule instances.

176431: Unable to get License in a Podman-Container Environment

Licensing can now use IPv6 address as host identifier, this allows running modelcompiler jar in podman containers.

176391: Enhance Properties view to select substitutable types for optional abstract capsule parts

When isSubstitutable property is checked for a capsule part, SET button can be used to specify which specialized that inherits from the abstract capsule will be used by the capsulePart to incarnate at run-time.
Clicking on the Set button opens a dialog box containing a list of all capsules that inherit from the abstract capsule.
Checkboxes are provided against each subcapsule which can be used to create/delete dependencies with <create> stereotype.
These dependencies can be used to navigate to the specialized capsule.
Note: Unbound capsules containing a dependency will be displayed as "Unresolved Capsule" in the dialog box.

176350: In Code-to-Model Sync, ANT task from command-line hangs

Now code to model synchronization Ant task no longer requires a running model compiler server, thus avoids hanging when started from command line. Note, that for command line execution sync is performed only for the specified TC and not for its prerequisites. An Ant task attribute mapFile can be used instead of a concrete TC to sync all projects including prerequisites. For the command line code generation scenario model compiler can automatically generate a mapFile for syncing with additional option --syncMap <full/path/to/mapFile.map>

176214: Automation for Code to model synchronization should accept absolute TC path

Now code to model synchronization Ant task supports absolute path for TC file specified as file:/ URI in transformConfig argument.

176098: Editor tab text should be bold when it has content in it for all code editor

Code location being displayed in each code snippet header in All Code Editor.
1. If a code snippet is empty, only the code snippet name is displayed.
2. If a code snippet is non-empty, and no generated file exists or has been loaded, then "(code from the model)" displayed after the code snippet name.
3. If a code snippet is non-empty, and a generated file exists and has been loaded, then "(code from the file <filename>)" displayed after the code snippet name.


Model RealTime 11.3 2023.42

176375: Minimum code snippet height preferred for Code Editor

Added preference in the Code Editor, allowing users to tailor their code snippet experience to their preferences.

176269: Navigate from a code snippet in the editor to its corresponding generated C++ file

Implemented seamless navigation from a code snippet in the Code editor to its specific location within the generated C++ file.

176227: Special characters are displayed as question marks in generated code

The encoding format for all the generated files ( cpp files and make files) is set to UTF-8 always irrespective of the preference value set in Windows->General->Text file encoding.
It is recommended to use UTF-8 encoding in the preference to ensure that the unicode characters can be used in the comments and string literals.

176212: TCJS files: Add comma after last element in lists to ease merging in GIT

Appended comma to the last element of the lists in the TCJS files to ease merging in GIT. Currently, if a new element is appended to the list, then the line would be modified due to the addition of the comma and a new line is added holding the new element. By appending the comma to the last element of the lists, then adding a new element would only add a new line which makes merging in GIT easier.

176124: Improve Navigation from Capsule Part (Part 2)

Navigation from a capsule part which is typed by an Abstract Capsule to the Capsule where real implementation is done is possible by means of outgoing dependencies with <create> stereotype.
Navigation is based on the number of dependencies:
1. Zero dependency: Navigates to open the original/abstract capsule
2. One or more dependencies: Navigates to open a dialog called the Open diagram for Substitutable type, where desired implementation capsule can be selected.
Note: Dependencies with <create> stereotype can only be created in Model Viewpoint and Unbound dependencies are displayed as '!!!Unresolved Dependency!!!' in the dialog box.

175669: Make inherited operations explicitly visible in project explorer

The Inheritance Explorer can be used as a complement to the Project Explorer for seeing inherited elements, such as operations, states and transitions. Inherited elements are shown with gray font, like in the Properties view.
It's possible to either see all elements (local plus inherited), or to set a filter to only see redefinitions. The latter can for example be useful for understanding how states and transitions from an inherited state machine have been locally redefined.

174266: Developers want to have additional buttons in toolbar

Option for generating the code for the TC has been added in the Build Active Transformation configuration button. Renamed the "Run transformation" option to "Generate Code" to make the option more specific instead of using the generic name.
Also added two new buttons for "Generate Code Preview" and "Remove All Generated Projects" next to the "Build Active Tranformation Configuration" to improve the ease of access of the available options.


Model RealTime 11.3 2023.35

176240: Move "Code Snippet References" and "Modeling References" commands to "Navigate" group

"Code Snippet References" and "Modeling References" commands are now moved into "Navigate" sub-menu of the context menu.

176088: No instances are shown in Debug window

User can now safely launch Debug session from saved configuration without any issues.

175595: Show transition effect and guard tabs simultaneously

By choosing the option All Code when opening a Code editor on a transition, both the effect and guard code snippets will be shown at the same in a single Code editor window.

175546: Add support for generating C++03 code in newer versions of Model RealTime

The TargetRTS can now be compiled with an old C++ complier that doesn’t support C++ 11. As part of this change the macro RTUseSTL has been removed since different versions of C++ include different versions of STL. Now the macro __cplusplus is used for conditional compilation required due to different C++ versions. Note that it’s still recommended to use a C++ 11 compiler, if possible, since with an older compiler not all features are available. If you happen to use an Model RealTime feature that requires a more modern compiler than what you use, you will either get an error during code generation or when compiling the generated code.

175353: Offer a way to navigate to a capsule specialization

Navigation from a capsule part which is typed by an Abstract Capsule to the Capsule where real implementation is done is possible by means of outgoing dependencies with <create> stereotype.
Navigation is based on the number of dependencies:
1. Zero dependency: Navigates to open the original/abstract capsule
2. Single dependency: Navigates to open the implementation capsule (or dependency capsule)
3. Two or more dependencies: Navigates to open a dialog called the Open diagram for Substitutable type, where desired implementation capsule can be selected.
NOTE : Dependencies with <create> stereotype can only be created in Model Viewpoint

174288: Add "Find references" option to UML elements context menu

"Workspace and External Projects" scope is now available when looking for references in Modeling References context menu.

173949: RFE: Use approximate string matching in project importer

Filtering of elements in places where we have a list with "filter box" is now improved by supporting "fuzzy string matching". The elements can now be filtered by typing an approximate string. The string matches are highlighted in boldface in the results. In the select element dialog, the results are displayed in a tabular format now with Qualified Name, Name and Type columns.

163924: RFE Add class code view

A single Code editor can now show all code snippets for an element using vertical panes that can be individually collapsed and expanded. Previously it was necessary to open a separate Code editor for each such code snippet which could lead to a large number of open code editors.


Model RealTime 11.3 2023.27

176082: Inconvenient usage of Build All button and shortcut

BuildAll button removed from UML Development perspective's toolbar.
Note: Reset the perspective for existing workspaces or simply create a new workspace when adopting the new version.

175721: CQPAR00260643: Fragment creation - problem with update of external projects

Now executing Refactor -> Create Fragment… command will update the references across all the projects including external projects which are not imported in the workspace. Therefore importing the external projects after the fragment has been created will not result in errors.

175548: Change warnings to errors during build process

Please see the release note for issue 171983.

174267: As a developer I want to be able to suppress a WARNING of intentional code

Please see the release note for issue 171983.

171983: CQPAR00181101 - Model RealTime: Make it possible to configure generation warnings as errors

Preference RealTime Development – Build/Transformations – C++ – Rule Configuration can be used to configure which validation rules should be used during code generation, and change rule severity. Enter a comma-separated list of validation rule ids, prefixed with one of the following letters:
•X: Disable the validation rule (it will not be used when checking the model)
•E: Set the severity of the validation rule to Error
•W: Set the severity of the validation rule to Warning
•I: Set the severity of the validation rule to Information
The id of a validation rule is printed just after its severity in the console. Note that the model compiler only lets you configure validation rules that have an id. Messages without ids cannot be disabled and the severity cannot be changed for them.

162628: RFE: In search there should be ‘tick’ to choose “look also in base class”

New search scope "Selection + Inherited" is available in the search bar and can be used to include base classes/capsules when searching. The same functionality is available in Model Search dialog with "Include Inherited" checkbox in Scope section.

159236: CQPAR00205471 - Model RealTime: MC: disable warnings during generation

Please see the release note for issue 171983.

136831: CQPAR00130069 - Enable searching in Parent / Derived tree

New search scope "Selection + Inherited" is available in the search bar and can be used to include base classes/capsules when searching. The same functionality is available in Model Search dialog with "Include Inherited" checkbox in Scope section.


Model RealTime 11.3 2023.19

176068: Make it possible to configure generation warnings as errors

A new preference RealTime Development – Build/Transformations – C++ - Rule Configuration has been added to configure which validation rules should be used during code generation, and change rule severity. Enter a comma-separated list of validation rule ids, prefixed with one of the following letters:
•X: Disable the validation rule (it will not be used when checking the model)
•E: Set the severity of the validation rule to Error
•W: Set the severity of the validation rule to Warning
•I: Set the severity of the validation rule to Information
The id of a validation rule is printed just after its severity in the console. Note that the model compiler only lets you configure validation rules that have an id. Messages without ids cannot be disabled and the severity cannot be changed for them.

175947: Change timeout to retrieve Model RealTime license from a local license server

It is now possible to configure connect and read timeouts used in communications with license server. To adjust the values the following lines should be added to eclipse.ini file or to modelcompiler.jar commandline
-Dcom.hcl.rtist.license.connectTimeout=20
-Dcom.hcl.rtist.license.readTimeout=300

175915: Modification of the Model RealTime license model to allow a longer maximum borrow interval than 1 day.

Model RealTime can now be configured to borrow license from the license server for a period up to 30 days.

175781: Support VxWorks 7

The TargetRTS now contains new config, libset files and prebuilt libraries to support compilation with Clang-15.x for SIMNT CPU on VxWorks7 RTOS.

175544: Add support for Clang compiler to version 16.x

The TargetRTS now contains new config and libset files and prebuilt libraries for supporting compilation with Clang-16.x for 64 bit (x64) on Windows.

175523: Improve debug logging to get more information

With additional optional logging options it has become easier to troubleshoot license-related issued.

175503: Move constructor missing in generated "RTTypedValue struct"

The RTTypedValue struct that is generated for a user-defined type now has an additional constructor which allows moving event data also for cases when the type descriptor needs to be explicitly provided by the user.

175017: New "Send Event to Port" command in the Events view context menu

Send Event command from "Events View" can be now used with different targets from Debug view

174128: Do not generate the export keyword for templates

The 'export' keyword will not be generated for templates anymore.


Model RealTime 11.3 2023.13

175956: Console Output is truncated - Build Output is not completely visible

Fixed long line breaking in model compiler output. UML Development console output is controlled by preferences under "Run/Debug -> Console". Uncheck "Run/Debug -> Console -> Limit console output" preference to disable model compiler output log truncating.

175913: Issues in EGit of Model RealTime-11.3

The problem with EGit plugins malfunction due to premature initialization before the workspace initialization is completed is now fixed.

175911: 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.

175849: Tracing port instances (not ports) is not supported

Port instances can now be traced after adding them in the in trace editor. Previously it was possible to add port instances to the Capture tab, but the corresponding events were not traced.

175831: Support C-style cast instead of static_cast as an option for generated code

Code can be generated with C-style casts by using an older C++ standard ('Older than C++ 98').

175671: Default value not assigned when default constructor is not set

When an attribute is set to be initialized with a default value in a constructor, but the default constructor is not generated, then a warning message will be displayed in the format
"WARNING : MyPackage::MyClass::MyAttribute : This attribute has a default value and the 'Initializer Kind' property is set to 'Constructor', but no constructor will be generated where it can be initialized. The attribute default value will be ignored. "

175637: Run on Windows 11

Windows 11 is now a supported platform.

175441: Model RealTime build process to support Eclipse variables

Support for the Eclipse variable ${workspace_loc} was implemented in Model RealTime 11.2 2022.41. It now works to place the TargetRTS relative to the workspace folder by using this variable.
Model RealTime Support Case: TS008874725

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.3 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.

175660: No implementation tabs in code view for "pure virtual" class operation

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.