eCAL Compatibility

This page aims to help you upgrading from one eCAL Version to another.

eCAL is versioned in the common MAJOR.MINOR.PATCH format. Depending on what we changed in eCAL, we increment the appropriate number:

  • MAJOR: This number is used exclusively for indicating the wire-compatibility. By wire-compatibility we mean the data protocol that is transferred over network (UDP Data transfer). This number is expected to stay at 5 for a long time, but if it ever increases, eCAL 5 nodes will no longer communicate with eCAL 6 nodes.

    All eCAL 5 nodes can communicate with each other.

    Note

    We don’t make guarantees about the wire-compatibility of eCAL Shared Memory communication, even though we try to keep it compatible as long as possible. As Shared Memory is a local communication technique, this is only relevant if you would want to use multiple eCAL Versions on one machine.

  • MINOR: The minor version is the most important for you to take care of. We increment the minor version, if:

    • The API or ABI has changed. You may have to re-compile your nodes e.g. when upgrading from eCAL 5.8 to eCAL 5.9

    • We have added (or removed) features, altered eCAL Tools or did anything that disqualifies the eCAL Release from being a drop-in replacement

    All eCAL releases sharing the same minor version number can act as drop-in replacements.

  • PATCH: The last number indicates that we have fixed bugs. You can upgrade through patch versions without having to expect any problems. Usually, you just want the latest release to profit from all bugfixes.

eCAL 5.13 vs. 5.12

Compatibility table when upgrading from eCAL 5.12:

eCAL 5.13 vs. 5.12

Wire compatibility

  • eCAL UDP: 100% compatible

  • eCAL TCP: 100% compatible

  • Services: 100% compatible (New protocol, but downwards and upwards compatible)

    eCAL 5.13 introduces a new protocol that fixes issues of the old protocol. Both protocols (v0 and v1) are supported and nodes agree on the best supported protocol before establishing a connection.

    When communicating with old nodes (eCAL 5.12 and older), the faulty v0 protocol is used.

  • eCAL Shared Memory: 100% compatible

  • eCAL Registration Layer: 100% compatible

    New fields have been added to support the new service protocol.

API / ABI

  • API: downwards compatible.

    A lot of deprecations were added. Users should make sure to only use non-deprecated API and files in order to later make upgrading to eCAL 6 easier. Deprecations can be found in this document

  • ABI: not compatible

Tools

The GUI Tools now support being compiled against Qt6. Official Windows builds are now shipped with Qt 6.6 by default. Therefore, custom eCAL Mon Plugins for Windows have to be re-compiled with Qt 6.6 as well.

  • Rec: 100% compatible

  • Sys: 100% compatible

  • Measurements: 100% compatible

eCAL 5.12 vs. 5.11

Compatibility table when upgrading from eCAL 5.11:

eCAL 5.12 vs. 5.11

Wire compatibility

  • eCAL UDP: 100% compatible in default settings

    A proper Topic-Name -> UDP-Multicast-Group computation has been added. By default, the old version (multicast_config_version = v1) is enabled in the ecal.yaml, which makes the UDP Layer 100% compatible. If the new version (v2) is enabled, UDP communication between eCAL 5.12 and older versions of eCAL will fail.

  • eCAL TCP: 100% compatible

  • Services: 100% compatible

  • eCAL Shared Memory: 100% compatible

  • eCAL Registration Layer: 100% compatible

    New fields have been added in the internal protobuf format.

API / ABI

  • API: downwards compatible.

  • ABI: not compatible

    From now on, the official eCAL installer for Windows is built with Visual Studio 2019 / v142. This means, that you need VS 2019 or newer to link against the included SDK.

Tools

  • Rec: Downwards compatible

    The SetConfig RPC Call has been added, which was not available in eCAL 5.11

  • Sys: 100% compatible

  • Measurements: 100% compatible

  • Meas Cutter: The structure of the output directory has changed. It is now aligned to the output structure of eCAL Rec.

eCAL 5.11 vs. 5.10

Compatibility table when upgrading from eCAL 5.10:

eCAL 5.11 vs. 5.10

Wire compatibility

  • eCAL UDP: 100% compatible

  • eCAL TCP: 100% compatible

  • Services: 100% compatible

  • eCAL Shared Memory: Downwards compatible to eCAL 5.10 and eCAL 5.9

    The eCAL header of the eCAL SHM file has been expanded. Old eCAL versions contain a bug that will prevent them to read the new memfile header. This bug has been fixed in eCAL 5.10.2 and 5.9.10; those versions will just ignore the new settings and communicate nevertheless.

    eCAL versions 5.8 and earlier will unfortunatelly fail to receive SHM data from eCAL 5.11 publishers.

    The SHM Monitoring layer has been added in eCAL 5.11 and can therefore not be used with any older eCAL version.

API / ABI

  • API is downward compatible.

  • ABI is not compatible

Tools

  • Rec: Downwards compatible (The new one-file-per-channel option has been added)

    • .ecalrec files now contain the new setting and will be upgraded

    • Old ecal_rec_clients will ignore the setting

  • Sys: 100% compatible

  • Measurements: 100% compatible

eCAL 5.10 vs. 5.9

Compatibility table when upgrading from eCAL 5.9:

eCAL 5.10 vs. 5.9

Wire compatibility

  • eCAL UDP: 100% compatible

  • eCAL TCP: New in 5.10.

    Prior versions of eCAL will not be able to receive data from TCP publishers.

  • Services: 100% compatible

  • eCAL Shared Memory: Downwards compatible

    eCAL 5.10 offers an option to use multi-buffering for increased performance. Prior Versions of eCAL cannot receive data from publishers using that feature.

    By default, the feature is turned off, which makes the Shared memory layer 100% compatible.

API / ABI

  • API is mostly downward compatible.

    When using the raw (non-protobuf) Service API, you may incorporate some incompatibilities. Please check this guide on how to upgrade.

  • ABI is not compatible

Tools

  • Rec: Downwards compatible (Fields have been added to the RPC API)

  • Sys: 100% compatible

  • Measurements: 100% compatible

eCAL 5.9 vs. 5.8

Compatibility table when upgrading from eCAL 5.8:

eCAL 5.9 vs. 5.8

Wire compatibility

  • eCAL UDP: 100% compatible

  • Services: 100% compatible

  • eCAL Shared Memory: 100% compatible

API / ABI

  • API is downward compatible (New functions have been added)

  • ABI is not compatible

Tools

  • Rec: Somewhat compatible.

    Expect some issues when using the new (5.9) ecal_rec_cli with old (5.8) ecal_rec_gui or ecal_rec_client instances. It should be possible to mix ecal_rec_gui and ecal_rec_client instances of both versions, though.

  • Sys: 100% compatible

  • Measurements: 100% compatible

eCAL 5.8 vs. 5.7

Compatibility table when upgrading from eCAL 5.7:

eCAL 5.8 vs. 5.7

Wire compatibility

  • eCAL UDP: 100% compatible

  • Services: 100% compatible

  • eCAL Shared Memory: 100% compatible

API / ABI

  • API is downward compatible

  • ABI is not compatible

Tools

  • Rec: Not compatible. Some features may work, but many won’t.

  • Sys: New in 5.8

  • Measurements: 100% compatible

Additional notes

  • On Ubuntu, the official builds changes the lib dirs to the proper multiarch lib dirs.

  • On Ubuntu the location of ecal.yaml changed to /etc/ecal/ecal.yaml

  • On Windows, the location of ecal.yaml changed to C:\ProgramData\eCAL\ecal.yaml