Model RealTime 12.1.1

176838: Deliver Art file support feature as non-experimental

The Art file support is no longer experimental. A large subset of the Art language is supported including the use of Art protocols as types of UML-RT ports or as parent protocols to inherit from. Art events with user-defined parameter types are also supported. Art capsules can be used as types of UML-RT parts and ports of Art capsules can be connected to UML-RT ports. The Art compiler is now automatically invoked from the generated make file.

176825: No longer possible to copy/paste to other applications from v12.0

It is now possible to copy and paste diagram elements from Model RealTime to graphical and rich text editors in other applications.

176813: Make generated codecompliant with Clang-tidy misc-use-anonymous-namespace checker

Code generation has been improved to be compliant with misc-use-anonymous-namespace Clang-Tidy check.
The compliance is achieved by generating a NOLINT suppression comment for each static non-member function that is defined only in the implementation file.
Here are examples of such functions related type and field descriptors: rtg_TYPE_init, rtg_TYPE_copy, rtg_TYPE_destroy, rtg_TYPE_encode, rtg_TYPE_decode and to thread mapping: _rtg_createThreads, _rtg_deleteThreads, _rtg_mapLogicalThreads .

176801: Art Exporter

New export wizard has been added to allow exporting models to Art files used by DevOps Code RealTime. It must installed from a separate repository available under Utilities chapter in Model RealTime Users' Guide: https://model-realtimeā€¦ies%2FArt+Exporter.html

176641: TCJS source tab - sorting and multiple columns

Transformation Configuration editor now shows Resource and Name columns containing resource URIs and unqualified names of source elements. Using sorting on these columns makes finding specific source elements easier.

173846: Redesign support for exceptions in the model compiler

Properties View now supports adding noexcept specifier, which makes it possible to declare functions as non-throwing. The noexcept property becomes active only when the Declare Exceptions checkbox is selected.
Exception declaration is determined by the value of the noexcept expression property in the following manner:
1. Not set: The generated code will use dynamic exceptions (legacy behavior).
2. Set to an empty string (after trimming whitespaces): The function is declared as noexcept (non-throwing).
3. Set to a valid expression: The function is declared as noexcept(EXPRESSION), with the expression reflecting the user-provided value
Note: noexcept specifier should be only used with C++11 or greater.