Changes in Model RealTime 11.1

Model RealTime 11.1 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.


Model RealTime 11.1 2022.13

175290: Pure virtual destructor in base class makes derived class abstract

Pure virtual destructors are not considered for computing abstractness of class/capsule.

175193: Code for protocol event with "Data Class = *" gives "error: no matching function"

Code generation for protocol events with Data Class = * has been fixed. Even if data parameter has type defined as native type, two functions will be generated: one without arguments and another with a data argument.

175089: Support for deprecated C++ feature

It's now possible to mark elements as deprecated. It's also possible to specify a deprecation message which the compiler will print if a deprecated element is referenced. This feature requires C++ 14 or later C++ language versions.

173107: CQPAR00245260 - Extend navigate options in Inheritance Browser to open source code

It is now possible to navigate to source code using Navigate context menu in Inheritance Explorer.

173036: Tabs closed or broken after changing code version in repo (e.g. git rebase).

'Model is closed or not available' error dialog has been removed. Now there will not be any error dialog instead diagram editor closes automatically when user switches branches on the disk.

164472: RFE Improve inheritance explorer navigation options

New context menu item "Explore Inheritance" now opens the Inheritance Explorer view from Project Explorer or Diagram Editor. It is now possible to see Interfaces in Inheritance Explorer hierarchy, apply filters on elements in Members pane and navigate to source code using Navigate context menu.

121223: Deprecation handling of operations

It's now possible to mark elements as deprecated. It's also possible to specify a deprecation message which the compiler will print if a deprecated element is referenced. This feature requires C++ 14 or later.


Model RealTime 11.1 2022.04

175085: Missing state activation events when tracing states with internal transitions

States that are followed by states with both internal and external transitions are now captured in traces.

175045: Adopt Log4j version 2.17.1

Log4j version used in Model RealTime has been upgraded to version 2.17.1, which is more secure and includes a fix for CVE-2021-44832. See here for details:
https://nvd.nist.gov/vuln/detail/CVE-2021-44832

174769: Give a name to enums listing supported port signals

Previously enums generated in C++ classes implementing protocols were anonymous. To make them referable from other code, we have now named them RTInEvents and RTOutEvents.

174768: Initializer Kind Brace display in Project Explorer is misleading for brace initializers

Project Explorer now properly displays brace initialization for attributes.

174319: Set default initialization method to 'brace'

Attributes are by default initialized with brace, if C++ 11 code standard was chosen in RealTime Development preferences.

174234: Model RealTime-2174: Rsa-rte is inconsistent when setting pure virtual methods in non-abstract classes.

The abstract checkbox in General property section will be disabled for modification, if capsule or class has pure virtual operations (locally defined or inherited), or realizes an interface without implementing all of its operations. Same way the generated type descriptor is also abstract, if above conditions are satisfied. Pure virtual operations are now appended with "= 0" in Project Explorer, Properties and classes/capsules names are shown in italics if they are abstract.


Model RealTime 11.1 2021.46-iFix3

175015: Adopt Log4j version 2.17.0

Log4j version used in Model RealTime has been upgraded to 2.17, which is more secure and includes a fix for CVE-2021-45105. See here for details:
https://nvd.nist.gov/vuln/detail/CVE-2021-45105


Model RealTime 11.1 2021.46-iFix2

175004: Adopt Log4j version 2.16

Log4j version used in Model RealTime has been upgraded to 2.16, which is more secure and includes a fix for CVE-2021-45046. See here for details: https://nvd.nist.gov/vuln/detail/CVE-2021-45046


Model RealTime 11.1 2021.46-iFix1

175001: Adopt Log4j version 2.15

Log4j version used in Model RealTime has been upgraded to 2.15, which is more secure and is not affected by CVE-2021-44228. See here for details:
https://nvd.nist.gov/vuln/detail/CVE-2021-44228


Model RealTime 11.1 2021.46

174931: Importing "complex" capsule structure takes very long time (>700msec)

A new compile flag RTIMPORT_ISREFERENCEDBY_CHECK has been introduced. Set it to 0 (in RTLibSet.h or RTTarget.h) to disable the run-time check RTActor::isReferencedBy().

174847: Semantic refresh failed - infinite recursion

State machine diagram editor stability was improved when showing internal transitions
transitions on state diagram border (RoseRT Visualization). While using this visualization style is still discouraged see:
[Model RealTime documentation: Learn how to make state diagrams look better.html](https://Model RealTime.hcldoc.com/help/topic/com.ibm.xtools.rsarte.webdoc/Newsletters/Learn%20how%20to%20make%20state%20diagrams%20look%20better.html)

174198: CodeChecker compliance for [bugprone-sizeof-expression]

Code generation has been improved to be compliant with bugprone-sizeof-expression Clang Tidy check.
sizeof (T) is a standard expression used to initialize one of type descriptor fields. For typedefs and type aliases inline suppression will be generated because any type can be used as implementation type. And for example for a pointer type sizeof expression will be considered bugprone. But for generated type descriptors sizeof expression is intended.

173925: Add move function to type descriptors

The data of an event can now be moved instead of copied when sent between two capsules. There is a new type descriptor function for specifying how to move the data. There is also a new property on transitions which controls if the rtdata parameter should be const or not in the function that is generated for the transition effect code. Making it non-const allows to move the received event data into for example a capsule attribute instead of copying it.


Model RealTime 11.1 2021.40

174915: No longer able to make composite relation to CppPrimitiveDatatypes

Fixed code generation and now it is again possible to create a (composite) relation to a CppPrimitiveDatatypes.
The following error has been fixed:
ERROR : CppPrimitiveDatatypes::int : This element does not have a legal C++ name: it will not be generated.

174431: Code generation error: "CppPrimitiveDatatypes::bool : This element does not have a legal C++ name: it will not be generated."

Code generation error has been fixed:
ERROR : CppPrimitiveDatatypes::bool : This element does not have a legal C++ name: it will not be generated.
The problem appeared when model element has dependency to primitive datatype, for example, bool. These dependencies are ignored and now a new warning message is printed in that case:
WARNING: Dependency from 'DependencyToBool::Class1' to primitive type 'CppPrimitiveDatatypes::bool' is ignored

174155: CodeChecker compliance for unused parameters

Code generation has been improved to be compliant with misc-unused-parameters Clang Tidy check.
For standard generated functions prototypes are fixed, so the solution is to generate inline suppressions. This covers functions generated for behavior: transition, guard, create for capsule parts and functions generated for data types: init, copy, destroy, encode, decode, numElementsFunction.
Generation of _rtg_mapLogicalThreads was improved not to generate name of controller parameter if it is not used in function body.

173490: Custom capsule constructor - dependency management concerns

It's now possible to create custom constructors for capsules which helps to pass initialization data to a capsule instance already when it's created. To allow incarnating capsules with custom constructors the concept of capsule factory was introduced (specifies how a capsule instance is created and destroyed). Capsule factories can be provided in various ways, in a hierarchical manner.


Model RealTime 11.1 2021.34

174776: Make license borrow interval configurable for standalone model compiler execution in HCL Model RealTime

Now it is possible to configure license borrow period for Model Compiler even if it is run as a command line utility.

174728: Cleaning TC fails silently if some file or folder cannot be deleted

An error message will now be shown if a command fails to delete required files or folders. This applies for example when you attempt to clean a TC.

174687: CS0235225: Model debugger only captures 'incarnate' events in subsequent launches

Model Debugger event tracing is now correctly restoring traces in subsequent debugging sessions. All traced event are captured and logged in the trace view.

174484: Show in Project Explorer label that a type has formal template parameters

Now it is possible for the user to see the presence of template parameters for an element in Project Explorer label based on the preference setting in RealTime Development > Project Explorer > Show Template Parameters in Labels

174450: Add support for global operations to scoped enum

Now it is possible to create operations in enumerations using the Add UML context menu in the Project Explorer. Such operations will be translated to global functions in C++.

74436: TR0884 Filtering the Properties View using view points not possible

The Properties view is now filtered so the when the Capsule Development viewpoint it doesn't show properties that are not interesting for RT users.


Model RealTime 11.1 2021.24

174394: Automate creation of unit test for capsule

It's now easier to use the Mocha framework for unit testing capsules. A new installation component "Unit Testing of Capsules" was added and it adds a command for automating all steps needed for creating a capsule unit test.

174333: Type descriptors for types with template parameters

Model compiler now supports generating type descriptors for type aliases with template parameters. The generated type descriptor will have the same template parameters. Target RTS also now provides fromType template function which can be used for looking up the template specialization.

174277: The multi-line attribute default value does not display properly in Properties window

Now the default field for attributes in the Properties View supports multi-line code viewing and editing.

174139: Lots of NEW CodeChecker warnings about using static_cast for downcast are reported on generated code

Added initial support to make generated code compliant with various static code analyzer tools. Currently only Clang-Tidy is partially covered. Added new preference group to C++ Transformations preference page with checkboxes corresponding to the tool or set-of-checks to be compliant with. In many cases special comments with suppressions will be added to avoid undesired diagnostics for known and safe situations in automatically generated code. By default, all compliance is turned off.

173270: Exclude several patterns in search result (negative search result)

Now !(NOT) and && (AND) logical operators can be used when specifying column filters in Search view.


Model RealTime 11.1 2021.16

174564: Conflicting specifiers extern and static

Now extern specifier is not generated for type descriptor declaration corresponding to nested class with Manual type descriptor. It fixes compilation errors like this:
error: conflicting specifiers in declaration of 'RTType_MyNestedClass'

174555: constexpr definition not present in source cpp file

Definitions of constexpr class member attributes are also generated into C++ source file. This fixes unresolved reference linker errors when these variables must be available in the object file.

174533: Model RealTime should provide feedback during model loading that no license are available

Now problems with license are explicitly reported before "Load UML Models" command execution is started.

174505: User losing code changes during edit and build

Now "Save All" command ensures the changes done in the Code View are also saved.

174483: CQPAR00254634 : ERROR FOR RTSYMMETRICSIGNAL.INL, NO #INCLUDE FOR RTMESSAGE.H

Now RTSymmetricSignal.inl includes RTMessage.h to avoid a compilation error if RTSymmetricSignal is used in a context where RTMessage is not available.

174478: State diagram name for sub-states are showing only "State Diagram" as name in tab

Models imported from RoseRT can have "State Diagram" as diagram names. To address this apply fixup - 'Delete name for state chart diagrams called 'State Diagram' ' to get the default names that include capsule name and substate name.

164473: Possibility to compare generated code

Added a new feature - Code Preview. Now it is possible to quickly generate code for selected model elements or transformation configuration. Context menu command "Generate Code Preview" is available, as well as keyboard shortcut Alt + Shift + E. Generated code is placed under a separate special location controlled in global preferences. Previous version of files is maintained in *~ files and can be used with Eclipse Compare commands.