News in RSARTE 9.1.2 CP1-2015.49

December 10, 2015

Today we release RSARTE 9.1.2 CP1 2015.49 which will be the last delivery for the year. As usual there are lots of improvements, and I'd like to mention the following:

Java API for compare/merge and EGit operations

We have extended the API based on the feedback we got from the previous release:

See the updated javadocs in the plugins com.ibm.xtools.umldt.rt.api and com.ibm.xtools.umldt.rt.api.egit for more details.

Internal transitions compartment for state chart diagram

The representation of the compartment in the presentation model was modified to avoid backwards incompatibility with previous releases. This means that it's now possible to use this new compartment, and still be able to open the model in an older version of RSARTE. Therefore this feature is no longer experimental. The visual appearance of the compartment was also improved by placing it slightly below the diagram frame. Thereby overlap is avoided with border symbols on the bottom border of the diagram frame.

 

Product Feedback

The product feedback utility helps us at IBM to improve the quality of RSARTE. It can collect reports on quality problems such as slow performance, hangings, crashes and internal errors, and send these reports to us.

Easier to edit Property Sets code snippets from the Properties view

If you want to edit several Property Sets code snippets for the same element it's convenient to do it from the Properties view where you can see the overview of all available code snippets. Previously when the "Edit" hyperlink was clicked in order to edit one of these code snippets, the opening of the code editor would lead to that the General tab in the Properties view got focus. Now this has been fixed so that the Property Sets tab stays active while you edit the code snippets.

Different ways of initializing multi-dimensional arrays

You can now choose between two different ways of initializing multi-dimensional arrays:

  1. Using nested for-loops, one for each dimension. This leads to code that is easy to read, and which static analysis tools won't give warnings for. However, some compilers may generate somewhat less efficient assembler for this way of initializing the array.
MyClass::MyClass( const MyClass & rtg_arg ) 
{
  for( int rtg_index0 = 2 - 1; rtg_index0 >= 0;  -- rtg_index0 )
    for( int rtg_index1 = 5 - 1; rtg_index1 >= 0;  -- rtg_index1 )
      a[ rtg_index0 ][ rtg_index1 ] = rtg_arg.a[ rtg_index0 ][ rtg_index1 ];
}
  1. Using a single for-loop. This makes the code more compact, but slightly less readable. Also, some static analysis tools will give warnings for it. However, compilers sometimes translate this into more efficient assembler.
MyClass::MyClass( const MyClass & rtg_arg )
{
  int rtg_index;
    for( rtg_index = (2) * (5) - 1; rtg_index >= 0;  -- rtg_index )
      a[ 0 ][ rtg_index ] = rtg_arg.a[ 0 ][ rtg_index ];
}

The choice is controlled by a new preference in UML Development - RealTime C++ Transformations:


Mattias Mohlin
Architect for IBM Model RealTime