Eclipse Cyclone DDS™ 0.9.0 (Papillons)

Release Date
Deliverables

Major new features

  • Python binding
  • Support for DDS XTypes 1.3 (with some limitations)

Other significant changes

  • The integration with Eclipse Iceoryx now uses Iceoryx 2.0
  • Shared memory communication now supports arbitrary (that is, non-fixed-size) types and transient-local data
  • For fixed-size types, true zero-copy is now supported within a machine
  • The configuration of network interfaces is reworked, now also supports prioritising one interface over another
  • Bison is no longer required to build Cyclone DDS (it is required if the IDL compiler grammar file is changed)
  • Cross-builds have gotten much simpler and in particular get the default configuration initialisation correct
  • QNX is known to work (the Cyclone DDS project doesn't control the infrastructure needed to list it as a "supported" platform)
  • MinGW is now supported
  • Thread liveliness monitoring can now also produce stack traces on Windows
  • Support setting participant lease duration using the "liveliness" QoS on a participant

Bug fixes

  • Various memory management issues in the IDL compiler
  • Fix combining a typedef with defining a named type (i.e., typedef struct A {...} B)
  • Fix a variety of array handling issues in the IDL compiler
  • IDL compiler compatibility with bison 3.8
  • Fixed incorrect serialisation of the "type consistency" QoS setting in the discovery messages
  • Buffer overrun in constructing IDL compiler backend library name
  • Incorrect CPU time usage reported on Windows by "ddsperf"
  • Fixed incorrect location of vendor id code in GUIDs
  • Changed overly-generic "libidl" to "libcycloneddsidl"
  • MD5 collision attacks on key values no longer work (C API)
  • Fix S390x compatibility (alignment issue on double-word CAS)
  • Interface discovery using LwIP now actually lists all interfaces instead of just one
  • Fixes a deadlock in "ddsperf" discovery processing
  • Fixes a memory leak if a domain tag is set in multiple configuration fragments
  • Fixes a memory leak if a domain is configured with a "default multicast address"
  • Make internal representation of sequence numbers unsigned to eliminate possibility signed integer overflow
  • Check that fragment numbers do not overflow unsigned 32-bit integers
  • Validation of alignment of payload/submessages/inline QoS in incoming messages
  • Apply a data_on_readers listener only on subscribers or participants
  • Restore support for using raw Ethernet instead of UDP/IP
  • Support fork() prior to creating the first domain/participant
  • Fix queueing a second copy of a to-be-retransmitted message when it can't be combined with the first
Compatibility

No breaking changes in the stable API. Changes to configuration are handled with deprecation warnings where possible, with two exceptions:

  • Specifying an network interface using a hostname is no longer possible
  • Previously AssumeMulticastCapable configuration accepted more-or-less arbitrary wildcards, now it must be either be "*" or a list of interfaces

Both have always been slightly unusual features that have not really seen much use. Supporting it in the new configuration would only have added unnecessary complexity.