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