Release Notes 2021-11-12:

  • When serializing an object, it is now possible to request the serializer to create specific versions for certain classes (older than their respective current versions), by means of ReflectorInterface::desireClassVersions(). Note that most classes' serialization implementations do not yet support this feature and will have to be updated before it becomes comprehensively usable. Desiring an older version from a class that does not implement it will only result in a warning output, but not change the behaviour otherwise (compared to past releases).
  • The service level for a remote channel subscription can now include an update interval, i.e. there will be a minimum time between channel updates sent to the remote subscriber (in other words, the update rate is limited). The purpose is of course to save transfer bandwidth for large data/high publish rate channels. The implementation ensures the latest update is always sent to the remote subscriber if the minimum interval expires without newer data being published (ensuring the subscriber will not permanently miss the latest channel state). Of course this only works if local (subscriber) and remote (publisher) framework run with this neweest release (or later). For connections to older remote frameworks, a ServiceLevel.Interval setting is ignored, just showing a warning.

  • More consistent clock offset estimation for remote framework connections: The clock offset is now only estimated on one end of the connection (the outgoing side), and applied to both received and sent channel updates. Formerly, both ends of the connection estimated the offset independently and applied it to received messages only. This mostly lead to different estimates, which would then e.g. be applied as different corrections to timestamps sent on a 'round trip'. That means when a publisher at framework A was publishing to channel CA with a timestamp, and a subscriber in framework B was copying the received timestamp from CA, using it to publish to channel CB, a subscriber to CB in framework A would then receive a timestamp significantly different from the original publish to CA. With the new correction scheme, the offsets applied on sending and receiving will cancel out, except for changes of the offset estimation over time (which should be nearly insignificant for data sent and received in quick succession).

  • Names of a couple of basic visualization classes has changed, in order to improve naming scheme consistency. This may lead to existing workspace files becoming unloadable, as some stored class names are not valid anymore. For convenience, an update script is provided which can be used to substitute the changed class names in a workspace file: scripts/updateWorkspaces-Visualization.sh

  • Clearer presentation of available visualizations when drag+dropping a channel to the MDI area or a view: Visualizations can be marked as 'auxiliary' and will not appear in the visualization selection list although they could take the respective channel as input. All items in the selection list got a tooltip showing their description. The 'auxiliary' categorization is done by the visualization's developer (together with the description). E.g. Plot Threshold visualizations from 2021-05-19 release have been marked as auxiliary, for less clutter in visualization selection dialog.
    Auxiliary visualization can still be created from the VisualizationControl panel, as before. Users can also change MIRACenter preferences to include them in selection lists again.

  • BarChart plots/visualizations from toolbox PlotVisualization have been not working since at least MIRA Release 2017-01-18, they have now been fixed and are available again.

Additional information