Skip to content

Releases: eclipse-cyclonedds/cyclonedds

0.10.4 (Lettres Dansantes)

28 Aug 09:23
Compare
Choose a tag to compare

This release addresses a number of issues:

  • Listeners are now invoked as part of the “set listener” operation if the corresponding bit in the status mask is set. For example, creating a data reader without a listener, doing nothing until some data arrived, then installing a listener for the “data available” event will now trigger the listener because of the data that had already arrived.
  • The C++ listeners no rely on this behaviour to always trigger for events that occurred immediately after entity creation.
  • A crash in interpreting a serialized sample arriving via Iceoryx of a topic involving a string key.
  • Removes some incorrect assertions that could be triggered remotely. The code already handled the input correctly, it was only the assert that was too restrictive.
  • Fixes an assert / putting garbage data in a DCPSParticipant sample for the lease duration on receiving a SPDP message that omits the participant lease duration, thereby leaving it at the (spec’d) 100s.
  • Some compiler warnings.

and adds a QoS setting to make an existing feature more useful:

  • It adds a “writer batching” QoS on the writer, where the data is only sent over the network when the maximum message size is reached or when the application calls the “flush” operation. Especially for small messages, this greatly improves throughput.

0.10.3 (Lettres Dansantes)

23 Mar 08:27
Compare
Choose a tag to compare

Bug fix release. Application-visible fixes:

  • Work around illegal ACKNACK messages sent by RTI Connext Micro
  • Accept non-multiple-of-4 values for the "octets to next header" field in the last submessage in a message as per spec (fixes an RTI Connext Micro interoperability issue with samples where the serialised representation is not a multiple of 4)
  • Adds a lock/unlock pair around an Iceoryx subscriber access to avoid unsupported concurrent access
  • Build support on Android ARMv7

CI related fixes:

  • Switch security tests from SHA1 to SHA256
  • Updates installation of Conan in CI to work around a compatibility issue

0.10.2 (Lettres Dansantes)

09 Sep 06:30
Compare
Choose a tag to compare

No changes since 0.10.2rc1.

0.10.2 (Lettres Dansantes) release candidate 1

26 Aug 09:12
Compare
Choose a tag to compare

A slight mishap on creating the 0.10.1 release forces the release of 0.10.2. That mishap also once again demonstrates that you probably don't need a release candidate, but only if you make one. This is the only reason for calling this a release candidate.

Some additional fixes:

  • A compilation issue in the C++ binding with Microsoft Visual Studio 2017
  • Some IDLC compiler issues found by fuzzing
  • More graceful handling of circular references in the Python binding

0.10.1 (Lettres Dansantes)

24 Aug 09:19
Compare
Choose a tag to compare

This release contains mostly fixes and some quality of life improvements. It also sees the first release of the new python-based cyclonedds CLI command.

Compatibility:

  • Note that some fixes to TypeRequest/Response have been made for spec compliance. This means that 0.10.1 will not be able to do dynamic type discovery with 0.9.*.
  • XTypes enum compatibility with OpenDDS will work after a fix is merged on the OpenDDS side.

Documentation:

  • improved Getting Started guide
  • improved structuring of the C++ API documentation

Core:

  • fixes "by source timestamp" destination order with >= 3 writers for the same instance
  • fixes a stall in retrieving historical data from a transient local writer after a partial disconnection and in combination with loss of specific packets
  • data received from a volatile writer prior to a heartbeat is now accepted if the writer is non-Cyclone DDS
  • fixes crash if the liveliness QoS on a writer is set to manual with lease duration infinity
  • fixes a crash on initialization of the TCP support code
  • fixes an incorrect unlock in security support code
  • fixes incorrect deserialization of property lists in security plugin
  • removed the fixed limit on the number of threads
  • fixes a variety of cases where it would crash on invoking an API function before initializing the library
  • fixes for interaction with the "ignorelocal" QoS setting when using Iceoryx

XTypes:

  • default_nested compiler option
  • validation of type information and type objects
  • various improvements to type lookups (among which compatibility with OpenDDS)
  • bug fixes for key handling in mutable structs (C)
  • de-duplicate list of dependent types in minimal type identifiers
  • fixes type object generation for int8 type
  • fixes assignability check for unbounded key members
  • dds_find_topic support using XTypes type information
  • "presence_required" option for network interfaces that are not required but should be used if present at start-up
  • fixes content filtering when using Iceoryx (C++)
  • serializer performance improvements (C++)

IDLC:

  • add option for setting output directory
  • add option for stripping a path prefix
  • correct alignment calculations for some cases using external or optional members (C)
  • support for default_literal annotation (C++)
  • fix handling of nested include files
  • variety of fixes for bugs causing invalid code to be generated (C++)

Tooling:

  • cyclonedds tool now provides more information on processes
  • cyclonedds tool now wraps ddsperf and draws pretty graphs
  • support for naming entities
  • C pubsub has been removed
  • the "debug monitor port" now generates JSON
  • update perftest script to current configuration and make security work

Platform/builds/packaging:

  • there is now a cyclonedds-nightly pypi package
  • C++11 compatibility
  • CMake to 3.16
  • fixes for builds without IDLC
  • support for static builds
  • IPv6 support can now be disabled in CMake
  • topic/type discovery are now enabled in the builds by default (topic discovery remains disabled by default at run-time)
  • dropped MinGW builds from CI (because of CI-specific problems)
  • add Iceoryx directory to rpath (macOS)

0.9.1 (Papillons)

13 May 12:13
Compare
Choose a tag to compare

This patch release fixes:

  • A failure to reject invalid "type information" in a discovery message
  • An incorrect encoding for the default setting of the try_construct annotation
  • A crash caused by an uninitialised lease pointer for writers with a liveliness setting of manual-by-topic with infinite duration
  • A crash when configuring the TCP transport
  • Impossibility to override misdetection of IPv6 support (useful on QNX)
  • A call to mutex_unlock that should have been mutex_destroy when cleaning up participant security attributes
  • Incorrect handling of array bounds in type object interpretation

0.9.0 (Papillons)

06 Apr 14:25
Compare
Choose a tag to compare

This release brings two major new things: a lovely Python binding and support for the DDS XTypes specification.

XTypes support brings structural typing with type checking, allowing data types to evolve while maintaining backwards compatibility. There are also some minor extensions to the expressiveness of the type system. The type metadata and discovery mechanisms that also make it possible to perform introspection and interact with types not known at compile time. There are some limitations in the support, most of these will be lifted in coming releases.

Perhaps the most important restriction is that the Python binding is the only one that supports the type introspection — but then it is also the language binding in which actually using dynamic types is a pleasure rather than a major pain. Because of this great difference in usability, the extent to which this particular restriction will be lifted in the future will be dependent on need. The pubsub tool has been reimplemented in Python and now supports subscribing to any topic published in the system.

The Python binding has been around for a while but didn't quite make it into the 0.8 release. This time, it is included in the release. Defining types in Python binding can be done using IDL files, but there is no need. Defining the types natively in Python is also fully supported.

Other significant changes are:

  • Iceoryx integration now uses Iceoryx 2.0 and adds support for arbitrary (that is, non-fixed-size) types and transient-local data.
  • 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 supported

0.9.0 (Papillons) beta 1

20 Mar 11:52
Compare
Choose a tag to compare
Pre-release

This release brings two major new things: a lovely Python binding and support for the DDS XTypes specification.

XTypes support brings structural typing with type checking, allowing data types to evolve while maintaining backwards compatibility. There are also some minor extensions to the expressiveness of the type system. The type metadata and discovery mechanisms that also make it possible to perform introspection and interact with types not known at compile time. There are some limitations in the support, most of these will be lifted in coming releases.

Perhaps the most important restriction is that the Python binding is the only one that supports the type introspection — but then it is also the language binding in which actually using dynamic types is a pleasure rather than a major pain. Because of this great difference in usability, the extent to which this particular restriction will be lifted in the future will be dependent on need. The pubsub tool has been reimplemented in Python and now supports subscribing to any topic published in the system.

The Python binding has been around for a while but didn't quite make it into the 0.8 release. This time, it is included in the release. Defining types in Python binding can be done using IDL files, but there is no need. Defining the types natively in Python is also fully supported.

Other significant changes are:

  • Iceoryx integration now uses Iceoryx 2.0 and adds support for arbitrary (that is, non-fixed-size) types and transient-local data.
  • 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 supported

0.8.2 (Réplique)

10 Jan 15:12
Compare
Choose a tag to compare

This patch release addresses the following issues:

  • package.xml version mismatch
  • IDL miscompilation for certain very large types
  • gcc 11 compilation warnings

0.8.1 (Réplique)

15 Oct 13:21
Compare
Choose a tag to compare

0.8.1 (Réplique)

This is a patch release containing fixes for the following:

  • Core library
    • vendor id not stored in first two bytes in the GUID on little endian machines
    • configuration parser out-of-bounds write with too deeply nested XML
    • null pointer dereference on invalid environment variable expansion in configuration
    • conversion of Win32 FILETIME to ns in retrieving consumed CPU time
    • incorrect serialization of type consistency QoS in discovery data
  • Builds, integration
    • integration as a subproject in other CMake projects
    • handling of build-time tools (idlc, ddsconf) in cross-platform builds
    • use of a too-common name for IDL compiler library
  • IDL compiler
    • compatibility with bison 3.8
    • use-after-free if union creation fails
    • use-after-free if enum used in multiple unions
    • evualution of bool, char and string literals
    • tokenization of scoped names
    • error message when a compiler plugin fails to load
    • potential out-of-bounds write in constructing plugin library name
    • use-after-free of invalid annotations