Release Notes¶
These are all the recent releases of OpenDDS.
v3.31.0¶
Released 2025-01-29
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
Platform Support and Dependencies¶
ACE/TAO
Updated ACE 8/TAO 4 from 8.0.1 to 8.0.2.
CMake
Fixed an issue where OpenDDS won’t build ACE/TAO with Visual Studio 2015. (PR #4843)
Fixes¶
Notes¶
Releases will now use a new git tagging and branching strategy.
Previously releases were tagged as either
DDS-X.Y
orDDS-X.Y.Z
. Release tags from now on will also be tagged asvX.Y.Z
. Any future OpenDDS 3 releases will be tagged both ways, while OpenDDS 4 releases will only be tagged in the new way.New branches can now be used for following specific release series. For example v3 will always be updated to the latest 3 release and
v3.31
will be used for any future 3.31 releases.
v3.30.0¶
Released 2024-10-11
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
Added
RtpsRelay -AdmissionMaxParticipantsRange
to RtpsRelay options (PR #4774)This option provides another mechanism for detecting load on each RtpsRelay instance
Improved RelayThreadMonitor error reporting (PR #4778)
All threads that have missed the deadline are reported before the process dies. These log messages include the timestamp of the most recent update for each thread that has missed the deadline.
Embedded a GDB extension in
libOpenDDS_Dcps
to help make debugging OpenDDS in GDB a bit easier. (PR #4791, PR #4727)Use a configurable thread pool for the RtpsRelay event handlers (PR #4808)
Platform Support and Dependencies¶
Fixes¶
Fixed cross-compiled builds using Java (PR #4763)
Fixed a memory leak in the address caches used by the RTPS/UDP transport. (PR #4772)
Corrected implementation of
RtpsRelay -AdmissionControlQueueSize
andRtpsRelay -AdmissionControlQueueDuration
(PR #4783)Fix cleanup of pending associations in the RTPS/UDP transport. (PR #4785)
Change the tag type separator in
opendds_idl
to allow underscores in identifiers. (PR #4800)Change “reallocating primary receive buffer” to transport debug logging level 3 (PR #4810)
Documentation¶
Documented the
bit_autopurge_nowriter_samples_delay
andbit_autopurge_disposed_samples_delay
configuration properties. (PR #4816)
v3.29.1¶
Released 2024-07-31
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Fixes¶
Fixed code generation for fixed-size structs in Java that caused compilation errors. (PR #4752)
v3.29.0¶
Released 2024-07-26
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
Added support for the @optional IDL annotation for the IDL-to-C++11 mapping.
@optional
maps to eitherstd::optional
or a similar custom implementation in the generated code. (PR #4364)Implemented the
create_sample
,create_sample_rc
,create_dynamic_sample
, andcreate_dynamic_sample_rc
methods onTypeSupport
to convert samples to and fromDynamicData
. (PR #4373)Also documented the existing
DynamicDataAdapter
class for wrapping IDL-generated types in aDynamicData
.See DynamicData and IDL-Generated Types for details.
Samples from DynamicDataReaders can be modified and passed to DynamicDataWriters. (PR #4609)
Added config properties to give more control over what UDP ports RTPS uses: (PR #4655)
For RTPS Discovery:
Added
[rtps_discovery] SedpPortMode=probe
, which will use ports similar to how the RTPS specification defines them. This uses the existing port parameter properties for SPDP and a new one,[rtps_discovery] DY
.Added
[rtps_discovery] SpdpPortMode
as an alias to the now deprecated[rtps_discovery] SpdpRequestRandomPort
.Added
[rtps_discovery] SpdpMulticastAddress
,[rtps_discovery] Ipv6SpdpMulticastAddress
,[rtps_discovery] SedpMulticastAddress
, and[rtps_discovery] Ipv6SedpMulticastAddress
to set the multicast addresses and ports separately on SPDP and SEDP.See here for the full overview of port usage.
For RTPS/UDP Transport:
Added
[transport] PortMode=probe (rtps_udp)
, which will use ports exactly as the RTPS specification defines them. This uses new port parameter properties:[transport] PB (rtps_udp)
,[transport] DG (rtps_udp)
,[transport] PG (rtps_udp)
,[transport] D2 (rtps_udp)
, and[transport] D3 (rtps_udp)
.See here for the full overview of port usage.
All ports calculated using port parameter properties now warn if they overflow the 16 bit integer.
[rtps_discovery] SedpPortMode=probe
and[transport] PortMode=probe (rtps_udp)
might make config template customizations unnecessary.
Added
dds/OpenDDSConfigWrapper.h
anddds/OpenDDSConfigWrapper.idl
. (PR #4659)These files will provide defaults for various configuration macros.
These files should be included in preference to
dds/OpenDDSConfig.h
Added a new data member,
monotonic_timestamp
to theInternalThreadBuiltInTopic
IDL struct. (PR #4677)monotonic_timestamp
is the time of the sample was written (time of last update of this instance) on the monotonic clock.On systems that don’t support a monotonic clock, this will be the same value as the corresponding
SampleInfo
’ssource_timestamp
.
The ParticipantLocation BIT instance is now published before participant discovery completes. (PR #4693)
Applications can use ParticipantLocation to get notified that discovery is in progress. The spec-defined Participant BIT won’t be published until participant discovery is complete.
The Info Destination submessage is now used if present in incoming SPDP messages (PR #4710)
The ParticipantLocation BIT has a new data member: the SPDP user tag of the peer (0 if none present) (PR #4711)
Also added the SPDP user tag to outbound messages which are directed to a specific destination
[rtps_discovery] ResendPeriod
now accepts fractions of a second. (PR #4712)OpenDDS now sends pre-emptive (pre-association) acknacks in a form that RTI Connext understands. (PR #4735)
Pre-association acknacks now fall off like heartbeats. (PR #4735)
Platform Support and Dependencies¶
ACE/TAO
Added support for building with ACE 8.0.0 / TAO 4.0.0.
Updated ACE 6/TAO 2 from 6.5.20 to 6.5.21.
CMake
Allow using the ACE/TAO master branch which now requires C++17. (PR #4618)
Building with CMake
Visual Studio now defaults to using at least C++11 with ACE 6/TAO 2 instead of C++03. (PR #4618)
Fixed configure error when using
OPENDDS_JUST_BUILD_HOST_TOOLS
with CMake <3.28. (PR #4646)
Removals¶
Removed
OPENDDS_IGNORE_OPENDDSCONFIG_H_FILE
macro. (PR #4687)Users manually configuring a build will need to create
dds/OpenDDSConfig.h
which may be empty.
Fixes¶
When
DCPSThreadStatusInterval
is enabled, threads that run the ACE Reactor now use timers instead of a time-limitedselect()
system call to update theInternalThreadBuiltInTopic
. (PR #4677)This allows the
InternalThreadBuiltInTopic
to be updated accurately on systems that suspend/resume and are configured for boottime timers.
[rtps_discovery] MaxSpdpSequenceMsgResetChecks
is recognized again. (PR #4696)RtpsRelay: Recognize clients that are using different IP addresses for SPDP and SEDP. (PR #4718)
Fixed memory leak of remote locators in the RTPS/UDP transport. (PR #4731)
Documentation¶
v3.28.1¶
Released 2024-05-02
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
Added
OPENDDS_COMPILE_WARNINGS
andconfigure
option--compile-warnings=[WARNING|ERROR]
to enable additional compiler warnings and treating them as errors. (PR #4558)Add a
configure
script option for MPC options requiring a value. (PR #4574)For example,
./configure --mpc:value_template build_flags+="-Wall -Werror"
.
Platform Support and Dependencies¶
Building with CMake
Fixed CMake saying it’s missing the ACE library when using
OPENDDS_ACE_TAO_SRC
with an ACE/TAO outside of the build directory. (PR #4604)
Removals¶
Values passed to the configure script via
--mpcopts
are no longer split on spaces. (PR #4574)For example,
./configure --mpcopts="-value_template build_flags+=-Wall -Werror"
must now be written as./configure --mpcopts=-value_template --mpcopts="build_flags+=-Wall -Werror"
.
Fixes¶
Documentation¶
v3.28.0¶
Released 2024-04-16
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
Added an XCDR2 value writer that can be used to serialize static and dynamic samples to XCDR2 encoding format. (PR #4421)
Added utility to flatten the index to a multi-dimensional array represented by dynamic data. (PR #4421)
A new header,
dds/OpenDDSConfig.h
is generated by configure or CMake. (PR #4482, PR #4498)Users manually configuring a build will need to create this file, which may be empty, or add
#define OPENDDS_IGNORE_OPENDDSCONFIG_H_FILE
to theirace/config.h
file.See
dds/OpenDDSConfig.h.in
for details.
ConfigStore
Converted the transport and discovery loading and
domain
section to useConfigStore
. (PR #4488, PR #4475, PR #4469, PR #4454)OpenDDS can now be configured with environment variables. (PR #4491)
See Configuration with Environment Variables for details.
OpenDDS now supports multiple config files. (PR #4505)
See Configuration Approach for details.
The ConfigStore is available in Java. (PR #4515)
The
@value(x)
annotation is now supported on IDL enumerators when using the IDL-to-C++11 mapping. (PR #4519)See @value(<v>) for details.
The IDL for the Shapes example was updated for interoperability. (PR #4528)
Added
[rtps_discovery] SpdpUserTag
. (PR #4533)The data type for the OpenDDS-specific Built-in ParticipantLocation Topic now includes the lease duration. (PR #4545)
See OpenDDSParticipantLocation Topic for details.
Allow compile-time configuration of CLOCK_BOOTTIME as the clock used for timers (PR #4568)
If the platform supports it, this can be done using
--boottime
when building with the configure script orOPENDDS_BOOTTIME_TIMERS
when building with CMake.
Platform Support and Dependencies¶
Building with CMake
Fixed building with CMake and Apple Clang on macOS without setting
-DCMAKE_CXX_STANDARD=14
or using ACE 6. (PR #4481, PR #4487)Added support for C++03 and some support for building ACE/TAO with the same compiler and C++ standard as OpenDDS. (PR #4481, PR #4487)
Fixed building release builds on Windows at the same time as ACE/TAO (PR #4535)
Fixed ACE/TAO build not getting Xerces path when using
OPENDDS_XERCES3
. (PR #4572)
Fixes¶
The ValueReader and ValueWriter interfaces now use
ACE_CDR::Fixed
as the type of IDL fixed values (PR #4466)CMake Config Package
Made
opendds_target_sources(INCLUDE_BASE)
work correctly in more cases, specifically involving generating an export header. (PR #4489)Added
opendds_target_sources(EXPORT_HEADER_DIR)
andopendds_export_header(DIR)
as part of these changes.
Fixed bug so ConfigStore entries generated by SEDP are cleaned up. (PR #4540, PR #4485)
Fixed bug where various RtpsDiscoveryConfig setters didn’t set. (PR #4540, PR #4485)
Fixed bug where
vread
for unions used uninitialized memory. (PR #4544)Fixed bug where an RTPS Reader gets stuck when heartbeat advances. (PR #4548)
XCDR2 KeyOnly serialization of union that has no key now has a delimiter for appendable and mutable extensibility. (PR #4554)
Documentation¶
Run-time Configuration (PR #4464, PR #4570, PR #4467, PR #4588)
Restructured configuration properties so they can be linked to directly. Also reviewed each property description to correct or add missing context as needed.
Introduction to OpenDDS (PR #4467)
Added Plugins to explain generally how discovery, transports, and security libraries must be initialized when statically linking these libraries.
Added summaries of important information needed to use the discovery and transport libraries.
-
Added Property QoS, Data Representation QoS, and Type Consistency Enforcement QoS.
Every policy now has a box that says if it’s mutable, if it affects writer-reader association, and a link to the spec definition. Also removed large default value tables and put the default values in these boxes.
Added links to the QoS policies.
Added definitions for instance, unregister, and dispose to the glossary. (PR #4520)
-
Added summary of important information needed to use the security library. (PR #4467)
Moved Fnmatch Expressions into an “annex” file so it can be common between security and partitions QoS. (PR #4520)
ConfigStore
Add configuration capabilities to DevGuide. (PR #4556)
v3.27.0¶
Released 2024-02-07
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
Complete interfaces for dealing with DynamicData and DynamicTypes. (PR #4320, PR #4339)
It is now possible to specify the validity for individual publish/subscribe actions in DDS Security Permission documents. This is an OpenDDS extension. (PR #4344)
Building with CMake
Added new options for how to get ACE/TAO. (PR #4346)
CMake Config Package
Added
OPENDDS_ACE_VERSION
andOPENDDS_TAO_VERSION
. (PR #4346)
Add a warning that
@optional
is not supported. (PR #4355)Convert discovery configurations (
repository
, static discovery,rtps_discovery
including templates) to key-value store. (PR #4360, PR #4361, PR #4426, PR #4411, PR #4276, PR #4347)Convert ICE configuration to key-value store. (PR #4360, PR #4361, PR #4426, PR #4411, PR #4276, PR #4347)
Change
transport_template
andrtps_discovery
template processing to not generate new keys. (PR #4360, PR #4361, PR #4426, PR #4411, PR #4276, PR #4347)
Platform Support and Dependencies¶
Fixes¶
Updated the read and write semantics of DynamicData for union, expandable collections (sequence and string), and optional member of an aggregated type. (PR #4278)
Fixed memory leak where instances were not cleaned up with exclusive ownership. (PR #4343)
Removed the special handling for sequence members with length code of 5,6, or 7. (PR #4376)
Reading data from a dynamic data object for a primitive type now must use
MEMBER_ID_INVALID
id. (PR #4376)create_datawriter
andcreate_datareader
check if the topic belongs to the same participant as the publisher/subscriber. (PR #4398)Fixed uninitialized
durability_service
in Topic QoS when using QoS-XML. (PR #4424)Fixed a bug where compiling IDL with
-Lc++11 -Gequality
produced code outside of a namespace that didn’t compile. (PR #4450)SedpLocalAddress
now defaults toDCPSDefaultAddress
to behave likeSpdpLocalAddress
andlocal_address
. (PR #4451)
Notes¶
TheParticipantFactory*
will now return a null pointer when Configuration with a File doesn’t exist. (PR #4372)
v3.26.1¶
Released 2023-11-14
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Fixes¶
Building with CMake
Fixed Issue #4328, where each run of CMake effectively always appended the MPC features to
default.features
in ACE. (PR #4330)
Fixed a corner case in RTPS ParameterList parsing (PR #4336)
Reject some types of invalid RTPS DataFrag submessages (PR #4348)
v3.26.0¶
Released 2023-10-23
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
OpenDDS can now be built using CMake for most common scenarios. (PR #4203, PR #4214)
This is still considered somewhat experimental as it doesn’t support everything that an MPC-built OpenDDS currently can.
See Building OpenDDS Using CMake for details.
Convert transport configurations (
rtps_udp
,multicast
,shmem
,tcp
,udp
) uses key-value store. (PR #4162, PR #4270, PR #4272, PR #4241, PR #4242, PR #4243, PR #4249, PR #4255)CMake Config Package
Added
opendds_install_interface_files
to help install IDL files and the files generated from them. (PR #4203, PR #4214)Added
OPENDDS_HOST_TOOLS
andOPENDDS_ACE_TAO_HOST_TOOLS
to allow cross compiling applications with both MPC and CMake-built OpenDDS. (PR #4203, PR #4214)-
Added
opendds_target_sources(INCLUDE_BASE)
to preserve the directory structure of the IDL files for compiling the resulting generated files and installing everything usingopendds_install_interface_files
. (PR #4203, PR #4214)Added
opendds_target_sources(USE_VERSIONED_NAMESPACE)
as a shortcut to the-Wb,versioning_*
IDL compiler options. (PR #4203, PR #4214)
Support sending DynamicDataAdapter sample via DynamicDataWriter (PR #4226)
Added export macro to ConditionImpl (PR #4295)
Deprecations¶
Deprecated
OPENDDS_FILENAME_ONLY_INCLUDES
in favor ofopendds_target_sources(INCLUDE_BASE)
. (PR #4203, PR #4214)
Fixes¶
Improved the subject name parsing to better conform to the DDS Security spec. (PR #4201)
The order of attributes in subject names is now significant when comparing them.
Remove from TypeLookupService when remote endpoint is removed from SEDP (PR #4216)
WaitSet is now notified when DataWriter liveliness is lost. (PR #4223)
ICE doesn’t use IPv4-mapped IPv6 addresses anymore. (PR #4230)
Efficiency: Remove per-element locking in JobQueue (PR #4253)
RtpsRelay: fixed bug in record_activity’s use of remove in GuidAddrSet (PR #4254)
Fix warnings in typeobject_generator when using TAO 3 (PR #4262)
Fix null pointer when participant is absent when updating locators (PR #4265)
Initialize variables in TypeObject to silence warnings (PR #4292)
RtpsRelay: Use ACE_Message_Block’s locking strategy for cached SPDP to fix tsan warning (PR #4293)
Fix tsan warning in ReactorTask (PR #4298)
Documentation¶
Removed documentation for
-Grapidjson
option ofopendds_idl
that was removed in 3.20.0 (PR #4231)Remove reference to mailing lists (PR #4234)
Restructured parts of DDS Security page and expanded documentation of some XML security document elements. (PR #4281)
OS-specific instructions will now be automatically selected based on the browser’s user agent. (PR #4281)
OMG specification section references are now links to that section in the specification PDF. (PR #4281)
Move build and install instructions to DevGuide (PR #4294)
Incorporate the quick start guides, FAQ, and shapes demo into the DevGuide. (PR #4297)
Notes¶
Using Perl 5.38.0 might prevent TAO from building properly, see here for details.
v3.25.0¶
Released 2023-07-20
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
The Observer interface now has support for dispose and unregister. (PR #4137)
OpenDDS now stores configuration information in a key-value store. (PR #4138, PR #4134, PR #4151)
Configuration values can be set via API, config file, or command line.
Currently applies to the common section and common transport configuration.
Added
encode_to_string
,encode_to_bytes
,decode_from_string
, anddecode_from_bytes
toTypeSupport
. (PR #4144, PR #4122, PR #4133, PR #4135)These methods convert samples to and from other formats.
Currently only
OpenDDS::DCPS::JSON_DATA_REPRESENTATION
is supported.
Add
-Gequality
option to opendds_idl to generate==
and!=
for structs and unions. (PR #4154)The members of the struct or union must have a type that could appear in a DDS topic and be supported by opendds_idl.
The motivation for this change was to make the generated code more useful as many users go on to define these operators.
CMake Config Package
Added executable targets. (PR #4160)
OPENDDS_CMAKE_VERBOSE
output has been expanded, but now accepts a list of categories to control how much is logged. (PR #4160)Added
opendds_export_header
to generate an export header. (PR #4160)-
Added
opendds_target_sources(GENERATE_SERVER_SKELETONS)
to allowtao_idl
to generate code for CORBA servers. (PR #4140)Added
opendds_target_sources(AUTO_LINK)
as a fine-grained version ofOPENDDS_AUTO_LINK_DCPS
. (PR #4140)Added
opendds_target_sources(SKIP_TAO_IDL)
to disabletao_idl
. (PR #4140)Added
opendds_target_sources(SKIP_OPENDDS_IDL)
to disableopendds_idl
. (PR #4140)Added
opendds_target_sources(USE_EXPORT)
to allow overriding the generated export header with an existing one. (PR #4160)
Libraries and features can be passed to
find_package(OpenDDS COMPONENTS)
to change what is required. (PR #4160, PR #4140)See Components for details.
Security¶
Fixed null pointer exception caused by RTPS Parameters with incorrect zero size. (PR #4197)
Fixes¶
CMake Config Package
Fixed issue deserializing bounded sequences with JSON (PR #4150)
The deserialization will fail if the JSON input contains more elements than the bounded sequence can hold.
Updated the RtpsRelay’s tracking of client IP addresses so they are removed when no longer used. (PR #4202)
The RtpsRelay configuration option -MaxAddrSetSize was renamed to -MaxIpsPerClient
Documentation¶
Moved various markdown files into the Sphinx documentation so that they are now included along with the Developer’s Guide: (PR #4139)
INSTALL.md
is now Building and Installing.docs/dependencies.md
is now Dependencies.docs/cmake.md
is now Using OpenDDS in a CMake Project.docs/android.md
is now Android.docs/ios.md
is now iOS.
Restructured how the documentation is presented to cleanly separate the Developer’s Guide and internal documentation. (PR #4139)
Added a proper main page. (PR #4139)
In addition to
NEWS.md
, started adding release notes to Release Notes. (PR #4125)
Notes¶
CMake Config Package
OPENDDS_TARGET_SOURCES
is now calledopendds_target_sources
. (PR #4140)CMake macros and functions names are case insensitive, so this should have no effect on CMake code.
v3.24.2¶
Released 2023-06-30
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Security¶
Fixed a vulnerability in the rtps_udp transport where an acknowledgement sequence number beyond the maximum expected by the writer leads to an assert and incorrect state. (PR #4155)
Thanks to Seulbae Kim (@squizz617) for discovering this.
Fixes¶
Fixed leaked shared memory by the shared memory transport. (PR ##4171)
For a 100% fix, a new ACE version including https://github.com/DOCGroup/ACE_TAO/pull/2077 must be used.
Fixed bug introduced by PR #4120 (PR #4180, PR #4184)
The fix introduced in #4120 causes the TransportClient to silently drop messages when the client’s guid is not initialized. This causes issues for TransportClients that send messages to the transport before association. One such example is a DataWriter with liveliness configured. The DataWriter will send liveliness messages to the transport (which will be dropped) and hang waiting for them to be delivered.
The solution was set the guid for a TransportClient before calling any method that uses the guid.
Notes¶
PR #4180 required changes in InfoRepoDiscovery’s IDL, so InfoRepo compatibility with older versions has been broken.
v3.24.1¶
Released 2023-04-22
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Fixes¶
Fixed compile warnings in TypeSupport that can happen with GCC and
-O2
or higher (PR #4117)Fixed compile error in TypeSupport for IDL that contains a typedef of a typedef (PR #4117)
Fixed bug in the tcp transport where readers and writers can fail to associate (PR #4120)
Fixed issue in some headers that could leak
#pragma pack (push, 8)
into user code on Visual Studio (PR #4123)Fixed theoretical infinite loop in rtps_udp transport code (PR #4124)
Documentation¶
Removed invalid links and references in README and the Developer’s Guide and fixed other minor issues (PR #4115, PR #4116, PR #4121, PR #4126)
Changed theme used by the Sphinx documentation to make the Developer’s Guide easier to navigate (PR #4127)
Added copy buttons to embedded code and code-like examples (PR #4127)
v3.24.0¶
Released 2023-04-11
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
The OpenDDS Developer’s Guide is now available at https://opendds.readthedocs.io/ (PR #4100, PR #4101, PR #4102, PR #4103, PR #4104, PR #4105, PR #4051, PR #4092, PR #4094, PR #4095)
The Sphinx/reStructuredText source for this new format is now located in the repo at
docs/devguide
DOCGroup ACE6/TAO2 is now the default ACE/TAO for OpenDDS, OCI ACE/TAO is no longer supported (PR #4069)
Dynamic content subscription (PR #3988)
This allows
DynamicDataReader
s to useQueryCondition
andContentFilteredTopic
and allowsDynamicDataWriter
s to do filtering on behalf of matchedDataReader
s that useContentFilteredTopic
.
DynamicData
Added aliases for IDL types from XTypes spec such as
DDS::UInt32
(PR #3394)See
dds/DdsDcpsCore.idl
for all of them.
Added PublicationMatchedStatus Current Count To RtpsRelay Statistics (PR #4006)
Allow reassembly of overlapping fragment ranges in RTPS (PR #4035, PR #4047)
Added hardening features to RtpsRelay (PR #4045)
These are configured with the new options
-MaxAddrSetSize
and-RejectedAddressDuration
.
Can now cross-compile on macOS (PR #4048)
Added
OPENDDS_AUTO_LINK_DCPS
andOPENDDS_USE_CORRECT_INCLUDE_SCOPE
global options to the CMake package (PR #4071)Expanded support for using C++ keywords in IDL (PR #4073)
IDL file and generated TypeSupport.idl can now be in different directories (PR #4077)
Improved support for anonymous types in unions branches (PR #4078)
Fixes¶
Fixed
rtps_relay_address_change
deadlocks (PR #3989)Fixed RtpsUdpTransport data race from
relay_stun_mutex_
(PR #3990)Fixed invalid socket handles in RtpsUdpTransport (PR #4002)
Fixed index increment in
GuidPartitionTable::prepare_relay_partitions
(PR #4005)Improved reliability of the shared memory transport (PR #4028)
Fixed a bug in content filtering with enum comparisons on serialized samples (PR #4038)
Secure writers and readers in same participant can now associate (PR #4041)
Fixed transport config and transport instance derived from template conflicting (PR #4058)
Fixed issue with using
-o
intao_idl
/opendds_idl
options inOPENDDS_TARGET_SOURCES
and those directories are now automatically included (PR #4071)XTypes (PR #4078)
TypeObject
s struct and union members used to be sorted by member ID, but they are now sorted by declaration order as the XTypes spec calls for.By default member IDs increment starting at 0, and in that case the
TypeObject
s will be the same. If@autoid(hash)
,--default-autoid hash
, or@id(ID)
are being used then the order could be different. This could cause some reader/writer matching incompatibility with older versions of OpenDDS:Topics with final and appendable structs will no longer match.
If
DISALLOW_TYPE_COERCION
QoS is being used, then all topics where the order differ will not longer match. Note that this is true for any time the type hash changes.Pass the
opendds_idl --old-typeobject-member-order
to use the non-standard order.
The size of XCDR2 member parameters in mutable structs and unions is now correctly interpreted when the “length code” is 5, 6, or 7.
This is an optimization that OpenDDS doesn’t serialize samples with, so this could only be an issue when dealing with samples from other DDS implementations.
DynamicDataImpl
(DynamicData
made byDynamicDataFactory
that can be passed toDynamicDataWriter
):get_member_id_at_index
now returns ids for members that haven’t been initialized yet.Fixed incorrect serialization of keyed unions for instance registration, disposal, and unregistration samples.
Fixed errors from serializing some cases of arrays and sequences.
Notes¶
Release files will only be uploaded to GitHub from now on
OpenDDS::DCPS::RepoId
has been removed, if needed useOpenDDS::DCPS::GUID_t
instead (PR #3972)
Older Releases¶
Older releases can be found in NEWS.md