Releases: eclipse-cyclonedds/cyclonedds
0.10.5 (Lettres Dansantes)
Bug fix release:
- Provide full content of malformed packets in trace.
- Release a received Iceoryx chunk from an unknown source.
- Allowing use of multicast when data readers exist that get the data via Iceoryx.
- Advertising the correct port number instead of 0 in reader/writer discovery messages when unicast addresses are included in network partitions while the ParticipantIndex is set to
none
. - Fix for incorrectly handling padding in the authentication plugin.
- Fix for memory leaks on invalid input in the authentication plugin.
- Fix to always use the last copy of a property list in the authentication plugin (if multiple copies are present).
- Fixes for a number of calls to
memset
andmemcpy
with size 0 and a null pointer to avoid the potential consequences of undefined behaviour.
Changes affecting compiler diagnostics:
- Various changes to eliminate compiler warnings on
snprintf
format strings that are potentially too short to hold all possible integer values (all in test code, none where this was affected the behaviour). - Fixing a of completely incorrect buffer size passed into
snprintf
. All inputs were internal and the buffer overrun this would allow in principle was not possible in practice with the set of inputs actually used. - Correcting the prototypes of some internal/test functions from
f()
tof(void)
. - Removal of some dead code in
ddsperf
. - Suppression of a some unused arguments by adding a
(void)argument;
to the function. - Fixing of a syntax warnings in doxygen comments.
0.10.4 (Lettres Dansantes)
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)
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)
No changes since 0.10.2rc1.
0.10.2 (Lettres Dansantes) release candidate 1
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)
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 with0.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 processescyclonedds
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)
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 beenmutex_destroy
when cleaning up participant security attributes - Incorrect handling of array bounds in type object interpretation
0.9.0 (Papillons)
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
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)
This patch release addresses the following issues:
package.xml
version mismatch- IDL miscompilation for certain very large types
- gcc 11 compilation warnings