Release Notes¶
These are all the releases of OpenDDS.
v3.33.0¶
Released 2025-08-01
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
IDL Maps are now supported by
opendds_idl. (PR #4999)We would like to thank tmayoff for contributing much of the work needed for this.
Usage example:
@nested struct Item { string desc_name; uint32 count; }; @topic struct Inventory { map<string, Item> items; };
They map to C++
std::mapin both the classic IDL-to-C++ and IDL-to-C++11 mappings.See IDL Compliance for known limitations.
RtpsRelay
Output from
RtpsRelay -LogRelayStatistics/RtpsRelay -PublishRelayStatisticsincludes extended RtpsRelay statistics (PR #4972, PR #5006)Output from
RtpsRelay -LogRelayStatistics/RtpsRelay -PublishRelayStatisticsincludes internal OpenDDS statistics (PR #5000, PR #5006, PR #4990, PR #5023)RtpsRelay no longer needs to store and replay SPDP messages (PR #5017, PR #5020)
The OpenDDSInternalThread built-in topic has additional detail fields which may be populated by internal threads. (PR #5026)
The RtpsRelay’s event handling threads make use of this feature.
RtpsRelay expiration/deactivation is now done by separate timer events instead of during input handling (PR #5032)
RtpsRelay -DrainIntervalcan drain clients to implement a controlled shutdown (PR #5063)
When DDS Security is configured to require authentication and an incoming SPDP message has a different Identity CA, authentication is not attempted. (PR #5046)
Platform Support and Dependencies¶
ACE/TAO
CMake
opendds_target_sourcesnow has a FOLDER argument which sets the CMake FOLDER property on generated targets. (PR #5009)Fixed accidental use of RapidJSON’s
CMakeLists.txtfile when building OpenDDS with CMake. (PR #5054) This caused issues such as forcing theCMAKE_CXX_STANDARDto C++11 and breaking the ACE C++ standard detection code.Fixed configure issue with Xerces from vcpkg when building OpenDDS with CMake. (PR #5054)
The configure script detects the C++ standard supported by the Android NDK compiler (PR #5057, PR #5052)
Fixes¶
Reset heartbeat fallback when the sequence number advances. (PR #5048)
v3.32.0¶
Released 2025-05-06
Download this release on GitHub.
Read the documentation for this release on Read the Docs.
Additions¶
Added
RtpsRelay -LogUtilizationChangesto RtpsRelay options (PR #4890)Added
opendds_idl --append-typeobjectsto opendds_idl options. It can be used to write XTypes Type Objects to a separate output file in addition to normal code generation. (PR #4898)Added
RtpsRelay -SynchronousOutputoption to RtpsRelay. (PR #4928)The TypeLookupService now has support for strongly connected components (recursive types). (PR #4940)
Platform Support and Dependencies¶
ACE/TAO
Updated ACE 8/TAO 4 from 8.0.2 to 8.0.3.
CMake
-
Added support for using the same IDL files in different targets with different options. (PR #4962)
It will not automatically generate an export header when all IDL files are scoped
PRIVATEunlessopendds_target_sources(ALWAYS_GENERATE_LIB_EXPORT_HEADER)is set toTRUE. (PR #4962)It will not export symbols in code generated from
PRIVATEIDL files. (PR #4962)Added support for the codegen target (CMake 3.31 or later) to build and run IDL compilers on targets with IDL. (PR #4962)
opendds_target_sources(USE_EXPORT)will now pass on its arguments toopendds_export_header(EXISTING). (PR #4964)
Fixes and improvements for
opendds_export_header: (PR #4954)opendds_export_headernow allows specifying an existing export header and gives control over what names are used.opendds_export_headerandopendds_target_sourcesnow set symbol visibility to hidden using CXX_VISIBILITY_PRESET and VISIBILITY_INLINES_HIDDEN on platforms where this applies.Fixed Visual Studio failing because of inconsistent linkage of exported symbols when linking between a DLL and a static library.
Fixed issue with building iShapes demo with CMake. (PR #4884)
Improved C++ standard detection in CMake. (PR #4884)
Added
opendds_bigobjto set/bigobjon targets that need it on Windows. (PR #4954)When using CMake 4, fixed relative path issues when working within a symlinked directory, including a warning about CMP0177. (PR #4959)
Fixed issue with CMake being unable to find RapidJSON after installing OpenDDS. (PR #4973)
Fixed reconfigured cross-compiled builds trying to use
TRUEas the path to host tools. (PR #4986)Building OpenDDS with CMake
The Shapes Demo will now be built when Building OpenDDS Using CMake and
OPENDDS_QTis set toTRUE. (PR #4884)Improved support for using Xerces 3.3.0 when building OpenDDS using CMake. (PR #4926)
GoogleTest will no longer be installed if it was built as part of the OpenDDS tests. (PR #4973)
Added
OPENDDS_INSTALL_RAPIDJSONto disable installing RapidJSON automatically. (PR #4973)OPENDDS_ACEandOPENDDS_TAOcan now be overrode after OpenDDS is installed. (PR #4973)Fixed
OPENDDS_COMPILE_WARNINGS=ERROR, which didn’t work before. (PR #4986)
-
Updated GoogleTest to be compatible with CMake 4. (PR #4959)
OpenDDS’s use of
std::optionalor an emulation is determined by the configuration file (PR #4976)See
OPENDDS_CONFIG_STD_OPTIONALindds/OpenDDSConfig.hDefault is to use
std::optionalon compilers that support itSee configure script’s
--no-std-optionalor CMake’sOPENDDS_STD_OPTIONAL
New configure script option:
--[no-]static-runtime(PR #4977, PR #4983)
Fixes¶
Added
RTPS_HARVEST_THREAD_STATUSproperty to select the participant that harvests thread status. (PR #4887)This addresses erroneous results from multiple participants harvesting thread status.
See OpenDDSInternalThread Topic for usage.
Signal the thread monitor in RtpsRelay listeners to avoid thread monitor timeouts. (PR #4900)
Introduced a time separation when processed expired discovered participants with RtpsDiscovery. (PR #4908)
Documentation¶
Fixed minor typo in documentation of DOC Group ACE 6.5.22/TAO 2.5.22 option of
OPENDDS_ACE_TAO_KIND. (PR #4884)
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.YorDDS-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.31will 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 -AdmissionMaxParticipantsRangeto 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_Dcpsto 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 -AdmissionControlQueueSizeandRtpsRelay -AdmissionControlQueueDuration(PR #4783)Fix cleanup of pending associations in the RTPS/UDP transport. (PR #4785)
Change the tag type separator in
opendds_idlto 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_delayandbit_autopurge_disposed_samples_delayconfiguration 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.
@optionalmaps to eitherstd::optionalor a similar custom implementation in the generated code. (PR #4364)Implemented the
create_sample,create_sample_rc,create_dynamic_sample, andcreate_dynamic_sample_rcmethods onTypeSupportto convert samples to and fromDynamicData. (PR #4373)Also documented the existing
DynamicDataAdapterclass 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] SpdpPortModeas an alias to the now deprecated[rtps_discovery] SpdpRequestRandomPort.Added
[rtps_discovery] SpdpMulticastAddress,[rtps_discovery] Ipv6SpdpMulticastAddress,[rtps_discovery] SedpMulticastAddress, and[rtps_discovery] Ipv6SedpMulticastAddressto 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=probeand[transport] PortMode=probe (rtps_udp)might make config template customizations unnecessary.
Added
dds/OpenDDSConfigWrapper.handdds/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_timestampto theInternalThreadBuiltInTopicIDL struct. (PR #4677)monotonic_timestampis 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] ResendPeriodnow 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_TOOLSwith CMake <3.28. (PR #4646)
Removals¶
Removed
OPENDDS_IGNORE_OPENDDSCONFIG_H_FILEmacro. (PR #4687)Users manually configuring a build will need to create
dds/OpenDDSConfig.hwhich may be empty.
Fixes¶
When
DCPSThreadStatusIntervalis 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
InternalThreadBuiltInTopicto be updated accurately on systems that suspend/resume and are configured for boottime timers.
[rtps_discovery] MaxSpdpSequenceMsgResetChecksis 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_WARNINGSandconfigureoption--compile-warnings=[WARNING|ERROR]to enable additional compiler warnings and treating them as errors. (PR #4558)Add a
configurescript 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_SRCwith an ACE/TAO outside of the build directory. (PR #4604)
Removals¶
Values passed to the configure script via
--mpcoptsare 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.his 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_FILEto theirace/config.hfile.See
dds/OpenDDSConfig.h.infor details.
ConfigStoreConverted the transport and discovery loading and
domainsection 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
--boottimewhen building with the configure script orOPENDDS_BOOTTIME_TIMERSwhen building with CMake.
Platform Support and Dependencies¶
Building with CMake
Fixed building with CMake and Apple Clang on macOS without setting
-DCMAKE_CXX_STANDARD=14or 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::Fixedas 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
vreadfor 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 #4564, 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)
ConfigStoreAdd 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_VERSIONandOPENDDS_TAO_VERSION. (PR #4346)
Add a warning that
@optionalis not supported. (PR #4355)Convert discovery configurations (
repository, static discovery,rtps_discoveryincluding 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_templateandrtps_discoverytemplate 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_INVALIDid. (PR #4376)create_datawriterandcreate_datareadercheck if the topic belongs to the same participant as the publisher/subscriber. (PR #4398)Fixed uninitialized
durability_servicein Topic QoS when using QoS-XML. (PR #4424)Fixed a bug where compiling IDL with
-Lc++11 -Gequalityproduced code outside of a namespace that didn’t compile. (PR #4450)SedpLocalAddressnow defaults toDCPSDefaultAddressto behave likeSpdpLocalAddressandlocal_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.featuresin 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 #4314)
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_filesto help install IDL files and the files generated from them. (PR #4203, PR #4314)Added
OPENDDS_HOST_TOOLSandOPENDDS_ACE_TAO_HOST_TOOLSto allow cross compiling applications with both MPC and CMake-built OpenDDS. (PR #4203, PR #4314)-
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 #4314)Added
opendds_target_sources(USE_VERSIONED_NAMESPACE)as a shortcut to the-Wb,versioning_*IDL compiler options. (PR #4203, PR #4314)
Support sending DynamicDataAdapter sample via DynamicDataWriter (PR #4226)
Added export macro to ConditionImpl (PR #4295)
Deprecations¶
Deprecated
OPENDDS_FILENAME_ONLY_INCLUDESin favor ofopendds_target_sources(INCLUDE_BASE). (PR #4203, PR #4314)
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
-Grapidjsonoption ofopendds_idlthat 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_bytestoTypeSupport. (PR #4144, PR #4122, PR #4133, PR #4135)These methods convert samples to and from other formats.
Currently only
OpenDDS::DCPS::JSON_DATA_REPRESENTATIONis supported.
Add
-Gequalityoption 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_VERBOSEoutput has been expanded, but now accepts a list of categories to control how much is logged. (PR #4160)Added
opendds_export_headerto generate an export header. (PR #4160)-
Added
opendds_target_sources(GENERATE_SERVER_SKELETONS)to allowtao_idlto 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.mdis now Building and Installing.docs/dependencies.mdis now Dependencies.docs/cmake.mdis now Using OpenDDS in a CMake Project.docs/android.mdis now Android.docs/ios.mdis 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_SOURCESis 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
-O2or 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
DynamicDataReaders to useQueryConditionandContentFilteredTopicand allowsDynamicDataWriters to do filtering on behalf of matchedDataReaders that useContentFilteredTopic.
DynamicDataAdded aliases for IDL types from XTypes spec such as
DDS::UInt32(PR #3394)See
dds/DdsDcpsCore.idlfor 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
-MaxAddrSetSizeand-RejectedAddressDuration.
Can now cross-compile on macOS (PR #4048)
Added
OPENDDS_AUTO_LINK_DCPSandOPENDDS_USE_CORRECT_INCLUDE_SCOPEglobal 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_changedeadlocks (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
-ointao_idl/opendds_idloptions inOPENDDS_TARGET_SOURCESand those directories are now automatically included (PR #4071)XTypes (PR #4078)
TypeObjects 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
TypeObjects 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_COERCIONQoS 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-orderto 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(DynamicDatamade byDynamicDataFactorythat can be passed toDynamicDataWriter):get_member_id_at_indexnow 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::RepoIdhas been removed, if needed useOpenDDS::DCPS::GUID_tinstead (PR #3972)
Older Releases¶
Older releases can be found in NEWS.md