Merge pull request #4655 from iguessthislldo/igtd/rtps-ports
[OpenDDS.git] / NEWS.md
blob202f1362fddbb75c50ebc0bbcc8e30f0697546d6
1 # OpenDDS Releases
3 ## Version 3.28.1 of OpenDDS
5 Released 2024-05-02
7 Download [this release on GitHub](https://github.com/OpenDDS/OpenDDS/releases/tag/DDS-3.28.1).
9 Read [the documentation for this release on Read the Docs](https://opendds.readthedocs.io/en/dds-3.28.1).
11 ### Additions
13 - Added [`OPENDDS_COMPILE_WARNINGS`](https://opendds.readthedocs.io/en/dds-3.28.1/devguide/building/index.html#cmake-var-OPENDDS_COMPILE_WARNINGS) and `configure` option `--compile-warnings=[WARNING|ERROR]` to enable additional compiler warnings and treating them as errors. ([PR #4558](https://github.com/OpenDDS/OpenDDS/pull/4558))
14 - Add a `configure` script option for MPC options requiring a value. ([PR #4574](https://github.com/OpenDDS/OpenDDS/pull/4574))
15   - For example, `./configure --mpc:value_template build_flags+="-Wall -Werror"`.
17 ### Platform Support and Dependencies
19 - Building with CMake
20   - Fixed CMake saying it's missing the ACE library when using [`OPENDDS_ACE_TAO_SRC`](https://opendds.readthedocs.io/en/dds-3.28.1/devguide/building/index.html#cmake-var-OPENDDS_ACE_TAO_SRC) with an ACE/TAO outside of the build directory. ([PR #4604](https://github.com/OpenDDS/OpenDDS/pull/4604))
22 ### Removals
24 - Values passed to the configure script via `--mpcopts` are no longer split on spaces. ([PR #4574](https://github.com/OpenDDS/OpenDDS/pull/4574))
25   - For example, `./configure --mpcopts="-value_template build_flags+=-Wall -Werror"` must now be written as `./configure --mpcopts=-value_template --mpcopts="build_flags+=-Wall -Werror"`.
27 ### Fixes
29 - Fixed incorrect usage of OpenSSL in `gov_gen` application. ([PR #4591](https://github.com/OpenDDS/OpenDDS/pull/4591))
30 - Fix bug where `Service_Participant::type_object_encoding` doesn't return configured value. ([PR #4593](https://github.com/OpenDDS/OpenDDS/pull/4593))
31 - Do not send heartbeats during a fragmented send in `rtps_udp`. ([PR #4603](https://github.com/OpenDDS/OpenDDS/pull/4603))
33 ### Documentation
35 - Added [`[transport] send_buffer_size (rtps_udp)`](https://opendds.readthedocs.io/en/dds-3.28.1/devguide/run_time_configuration.html#cfg-prop-transport-rtps_udp-send_buffer_size) and [`[transport] rcv_buffer_size (rtps_udp)`](https://opendds.readthedocs.io/en/dds-3.28.1/devguide/run_time_configuration.html#cfg-prop-transport-rtps_udp-rcv_buffer_size). ([PR #4602](https://github.com/OpenDDS/OpenDDS/pull/4602))
37 ## Version 3.28.0 of OpenDDS
39 Released 2024-04-16
41 Download [this release on GitHub](https://github.com/OpenDDS/OpenDDS/releases/tag/DDS-3.28).
43 Read [the documentation for this release on Read the Docs](https://opendds.readthedocs.io/en/dds-3.28).
45 ### Additions
47 - Added an XCDR2 value writer that can be used to serialize static and dynamic samples to XCDR2 encoding format. ([PR #4421](https://github.com/OpenDDS/OpenDDS/pull/4421))
48 - Added utility to [flatten the index](https://opendds.readthedocs.io/en/dds-3.28/devguide/xtypes.html#xtypes-reading-collections-of-basic-types) to a multi-dimensional array represented by dynamic data. ([PR #4421](https://github.com/OpenDDS/OpenDDS/pull/4421))
49 - A new header, `dds/OpenDDSConfig.h` is generated by configure or CMake. ([PR #4482](https://github.com/OpenDDS/OpenDDS/pull/4482), [PR #4498](https://github.com/OpenDDS/OpenDDS/pull/4498))
50   - Users manually configuring a build will need to create this file, which may be empty, or add `#define OPENDDS_IGNORE_OPENDDSCONFIG_H_FILE` to their `ace/config.h` file.
51   - See [`dds/OpenDDSConfig.h.in`](https://github.com/OpenDDS/OpenDDS/blob/DDS-3.28/dds/OpenDDSConfig.h.in) for details.
52 - `ConfigStore`
53   - Converted the transport and discovery loading and `domain` section to use `ConfigStore`. ([PR #4488](https://github.com/OpenDDS/OpenDDS/pull/4488), [PR #4475](https://github.com/OpenDDS/OpenDDS/pull/4475), [PR #4469](https://github.com/OpenDDS/OpenDDS/pull/4469), [PR #4454](https://github.com/OpenDDS/OpenDDS/pull/4454))
54   - OpenDDS can now be configured with environment variables. ([PR #4491](https://github.com/OpenDDS/OpenDDS/pull/4491))
55     - See [Configuration with Environment Variables](https://opendds.readthedocs.io/en/dds-3.28/devguide/run_time_configuration.html#config-environment-variables) for details.
56   - OpenDDS now supports multiple config files. ([PR #4505](https://github.com/OpenDDS/OpenDDS/pull/4505))
57     - See [Configuration Approach](https://opendds.readthedocs.io/en/dds-3.28/devguide/run_time_configuration.html#config-store-keys) for details.
58   - The ConfigStore is available in Java. ([PR #4515](https://github.com/OpenDDS/OpenDDS/pull/4515))
59 - The `@value(x)` annotation is now supported on IDL enumerators when using the IDL-to-C++11 mapping. ([PR #4519](https://github.com/OpenDDS/OpenDDS/pull/4519))
60   - See [@value(v)](https://opendds.readthedocs.io/en/dds-3.28/devguide/xtypes.html#xtypes-value) for details.
61 - The IDL for the Shapes example was updated for interoperability. ([PR #4528](https://github.com/OpenDDS/OpenDDS/pull/4528))
62 - Added [`[rtps_discovery] SpdpUserTag`](https://opendds.readthedocs.io/en/dds-3.28/devguide/run_time_configuration.html#cfg-prop-rtps_discovery-SpdpUserTag). ([PR #4533](https://github.com/OpenDDS/OpenDDS/pull/4533))
63 - The data type for the OpenDDS-specific Built-in ParticipantLocation Topic now includes the lease duration. ([PR #4545](https://github.com/OpenDDS/OpenDDS/pull/4545))
64   - See [OpenDDSParticipantLocation Topic](https://opendds.readthedocs.io/en/dds-3.28/devguide/built_in_topics.html#built-in-topics-openddsparticipantlocation-topic) for details.
65 - Allow compile-time configuration of CLOCK_BOOTTIME as the clock used for timers ([PR #4568](https://github.com/OpenDDS/OpenDDS/pull/4568))
66   - If the platform supports it, this can be done using `--boottime` when building with the configure script or [`OPENDDS_BOOTTIME_TIMERS`](https://opendds.readthedocs.io/en/dds-3.28/devguide/building/index.html#cmake-var-OPENDDS_BOOTTIME_TIMERS) when building with CMake.
68 ### Platform Support and Dependencies
70 - Building with CMake
71   - Fixed [building with CMake and Apple Clang on macOS](https://github.com/OpenDDS/OpenDDS/issues/4478) without setting `-DCMAKE_CXX_STANDARD=14` or using ACE 6. ([PR #4481](https://github.com/OpenDDS/OpenDDS/pull/4481), [PR #4487](https://github.com/OpenDDS/OpenDDS/pull/4487))
72   - Added support for C++03 and some support for building ACE/TAO with the same compiler and C++ standard as OpenDDS. ([PR #4481](https://github.com/OpenDDS/OpenDDS/pull/4481), [PR #4487](https://github.com/OpenDDS/OpenDDS/pull/4487))
73   - Fixed [building release builds on Windows at the same time as ACE/TAO](https://github.com/OpenDDS/OpenDDS/issues/4531) ([PR #4535](https://github.com/OpenDDS/OpenDDS/pull/4535))
74   - Fixed [ACE/TAO build not getting Xerces path](https://github.com/OpenDDS/OpenDDS/issues/4375) when using [`OPENDDS_XERCES3`](https://opendds.readthedocs.io/en/dds-3.28/devguide/building/cmake.html#cmake-var-OPENDDS_XERCES3). ([PR #4572](https://github.com/OpenDDS/OpenDDS/pull/4572))
76 ### Fixes
78 - The ValueReader and ValueWriter interfaces now use `ACE_CDR::Fixed` as the type of IDL fixed values ([PR #4466](https://github.com/OpenDDS/OpenDDS/pull/4466))
79 - CMake Config Package
80   - Made [`opendds_target_sources(INCLUDE_BASE)`](https://opendds.readthedocs.io/en/dds-3.28/devguide/building/cmake.html#cmake-func-arg-opendds_target_sources-INCLUDE_BASE) work correctly in more cases, specifically involving generating an export header. ([PR #4489](https://github.com/OpenDDS/OpenDDS/pull/4489))
81     - Added [`opendds_target_sources(EXPORT_HEADER_DIR)`](https://opendds.readthedocs.io/en/dds-3.28/devguide/building/cmake.html#cmake-func-arg-opendds_target_sources-EXPORT_HEADER_DIR) and [`opendds_export_header(DIR)`](https://opendds.readthedocs.io/en/dds-3.28/devguide/building/cmake.html#cmake-func-arg-opendds_export_header-DIR) as part of these changes.
82 - Fixed bug so ConfigStore entries generated by SEDP are cleaned up. ([PR #4540](https://github.com/OpenDDS/OpenDDS/pull/4540), [PR #4485](https://github.com/OpenDDS/OpenDDS/pull/4485))
83 - Fixed bug where various RtpsDiscoveryConfig setters didn't set. ([PR #4540](https://github.com/OpenDDS/OpenDDS/pull/4540), [PR #4485](https://github.com/OpenDDS/OpenDDS/pull/4485))
84 - Fixed bug where `vread` for unions used uninitialized memory. ([PR #4544](https://github.com/OpenDDS/OpenDDS/pull/4544))
85 - Fixed bug where an RTPS Reader gets stuck when heartbeat advances. ([PR #4548](https://github.com/OpenDDS/OpenDDS/pull/4548))
86 - XCDR2 KeyOnly serialization of union that has no key now has a delimiter for appendable and mutable extensibility. ([PR #4554](https://github.com/OpenDDS/OpenDDS/pull/4554))
88 ### Documentation
90 - [Run-time Configuration](https://opendds.readthedocs.io/en/dds-3.28/devguide/run_time_configuration.html#config) ([PR #4464](https://github.com/OpenDDS/OpenDDS/pull/4464), [PR #4570](https://github.com/OpenDDS/OpenDDS/pull/4570), [PR #4467](https://github.com/OpenDDS/OpenDDS/pull/4467), [PR #4588](https://github.com/OpenDDS/OpenDDS/pull/4588))
91   - Restructured configuration properties so they can be linked to directly.
92     Also reviewed each property description to correct or add missing context as needed.
93 - [Introduction to OpenDDS](https://opendds.readthedocs.io/en/dds-3.28/devguide/introduction.html#introduction) ([PR #4467](https://github.com/OpenDDS/OpenDDS/pull/4467))
94   - Added [Plugins](https://opendds.readthedocs.io/en/dds-3.28/devguide/introduction.html#plugins) to explain generally how discovery, transports, and security libraries must be initialized when statically linking these libraries.
95   - Added summaries of important information needed to use the discovery and transport libraries.
96 - [Quality of Service](https://opendds.readthedocs.io/en/dds-3.28/devguide/quality_of_service.html#qos) ([PR #4520](https://github.com/OpenDDS/OpenDDS/pull/4520))
97   - Added [Property QoS](https://opendds.readthedocs.io/en/dds-3.28/devguide/quality_of_service.html#qos-property), [Data Representation QoS](https://opendds.readthedocs.io/en/dds-3.28/devguide/quality_of_service.html#qos-data-representation), and [Type Consistency Enforcement QoS](https://opendds.readthedocs.io/en/dds-3.28/devguide/quality_of_service.html#qos-type-consistency-enforcement).
98   - 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.
99     Also removed large default value tables and put the default values in these boxes.
100   - Added links to the QoS policies.
101 - Added definitions for [instance](https://opendds.readthedocs.io/en/dds-3.28/glossary.html#term-Instance), [unregister](https://opendds.readthedocs.io/en/dds-3.28/glossary.html#term-Unregister), and [dispose](https://opendds.readthedocs.io/en/dds-3.28/glossary.html#term-Dispose) to the glossary. ([PR #4520](https://github.com/OpenDDS/OpenDDS/pull/4520))
102 - [DDS Security](https://opendds.readthedocs.io/en/dds-3.28/devguide/dds_security.html#sec)
103   - Added summary of important information needed to use the security library. ([PR #4467](https://github.com/OpenDDS/OpenDDS/pull/4467))
104   - Moved [Fnmatch Expressions](https://opendds.readthedocs.io/en/dds-3.28/devguide/annex.html#fnmatch-exprs) into an "annex" file so it can be common between security and partitions QoS. ([PR #4520](https://github.com/OpenDDS/OpenDDS/pull/4520))
105 - `ConfigStore`
106   - Add [configuration capabilities](https://opendds.readthedocs.io/en/dds-3.28/devguide/run_time_configuration.html#run-time-configuration-configuration-approach) to DevGuide. ([PR #4556](https://github.com/OpenDDS/OpenDDS/pull/4556))
108 ## Version 3.27.0 of OpenDDS
110 Released 2024-02-07
112 Download [this release on GitHub](https://github.com/OpenDDS/OpenDDS/releases/tag/DDS-3.27).
114 Read [the documentation for this release on Read the Docs](https://opendds.readthedocs.io/en/dds-3.27).
116 ### Additions
118 - Complete interfaces for dealing with DynamicData and DynamicTypes. ([PR #4320](https://github.com/OpenDDS/OpenDDS/pull/4320), [PR #4339](https://github.com/OpenDDS/OpenDDS/pull/4339))
119 - It is now possible to specify the [validity for individual publish/subscribe actions](https://opendds.readthedocs.io/en/dds-3.27/devguide/dds_security.html#dds-security-psr-validity) in DDS Security Permission documents.  This is an OpenDDS extension. ([PR #4344](https://github.com/OpenDDS/OpenDDS/pull/4344))
120 - Building with CMake
121   - Added new options for [how to get ACE/TAO](https://opendds.readthedocs.io/en/dds-3.27/devguide/building/index.html#cmake-building-ace-tao). ([PR #4346](https://github.com/OpenDDS/OpenDDS/pull/4346))
122 - CMake Config Package
123   - Added [`OPENDDS_ACE_VERSION`](https://opendds.readthedocs.io/en/dds-3.27/devguide/building/cmake.html#var-OPENDDS_ACE_VERSION) and [`OPENDDS_TAO_VERSION`](https://opendds.readthedocs.io/en/dds-3.27/devguide/building/cmake.html#var-OPENDDS_TAO_VERSION). ([PR #4346](https://github.com/OpenDDS/OpenDDS/pull/4346))
124 - Add a warning that `@optional` is not supported. ([PR #4355](https://github.com/OpenDDS/OpenDDS/pull/4355))
125 - Convert discovery configurations (`repository`, static discovery, `rtps_discovery` including templates) to key-value store. ([PR #4360](https://github.com/OpenDDS/OpenDDS/pull/4360), [PR #4361](https://github.com/OpenDDS/OpenDDS/pull/4361), [PR #4426](https://github.com/OpenDDS/OpenDDS/pull/4426), [PR #4411](https://github.com/OpenDDS/OpenDDS/pull/4411), [PR #4276](https://github.com/OpenDDS/OpenDDS/pull/4276), [PR #4347](https://github.com/OpenDDS/OpenDDS/pull/4347))
126 - Convert ICE configuration to key-value store. ([PR #4360](https://github.com/OpenDDS/OpenDDS/pull/4360), [PR #4361](https://github.com/OpenDDS/OpenDDS/pull/4361), [PR #4426](https://github.com/OpenDDS/OpenDDS/pull/4426), [PR #4411](https://github.com/OpenDDS/OpenDDS/pull/4411), [PR #4276](https://github.com/OpenDDS/OpenDDS/pull/4276), [PR #4347](https://github.com/OpenDDS/OpenDDS/pull/4347))
127 - Change `transport_template` and `rtps_discovery` template processing to not generate new keys. ([PR #4360](https://github.com/OpenDDS/OpenDDS/pull/4360), [PR #4361](https://github.com/OpenDDS/OpenDDS/pull/4361), [PR #4426](https://github.com/OpenDDS/OpenDDS/pull/4426), [PR #4411](https://github.com/OpenDDS/OpenDDS/pull/4411), [PR #4276](https://github.com/OpenDDS/OpenDDS/pull/4276), [PR #4347](https://github.com/OpenDDS/OpenDDS/pull/4347))
129 ### Platform Support and Dependencies
131 - Improved support for configure script detection of clang on Linux ([PR #4449](https://github.com/OpenDDS/OpenDDS/pull/4449))
132 - When using Visual C++, OpenDDS can now be configured using `--std=c++NN` (NN = 17 or 20). ([PR #4452](https://github.com/OpenDDS/OpenDDS/pull/4452))
134 ### Fixes
136 - Updated the [read](https://opendds.readthedocs.io/en/dds-3.27/devguide/xtypes.html#xtypes-interpreting-data-samples-with-dynamicdata) and [write](https://opendds.readthedocs.io/en/dds-3.27/devguide/xtypes.html#xtypes-populating-data-samples-with-dynamicdata) semantics of DynamicData for union, expandable collections (sequence and string), and optional member of an aggregated type. ([PR #4278](https://github.com/OpenDDS/OpenDDS/pull/4278))
137 - Fixed memory leak where instances were not cleaned up with exclusive ownership. ([PR #4343](https://github.com/OpenDDS/OpenDDS/pull/4343))
138 - Removed the special handling for sequence members with length code of 5,6, or 7. ([PR #4376](https://github.com/OpenDDS/OpenDDS/pull/4376))
139 - Reading data from a dynamic data object for a primitive type now must use `MEMBER_ID_INVALID` id. ([PR #4376](https://github.com/OpenDDS/OpenDDS/pull/4376))
140 - `create_datawriter` and `create_datareader` check if the topic belongs to the same participant as the publisher/subscriber. ([PR #4398](https://github.com/OpenDDS/OpenDDS/pull/4398))
141 - Fixed uninitialized `durability_service` in Topic QoS when using QoS-XML. ([PR #4424](https://github.com/OpenDDS/OpenDDS/pull/4424))
142 - Fixed a bug where compiling IDL with `-Lc++11 -Gequality` produced code outside of a namespace that didn't compile. ([PR #4450](https://github.com/OpenDDS/OpenDDS/pull/4450))
143 - `SedpLocalAddress` now defaults to `DCPSDefaultAddress` to behave like `SpdpLocalAddress` and `local_address`. ([PR #4451](https://github.com/OpenDDS/OpenDDS/pull/4451))
145 ### Notes
147 - `TheParticipantFactory*` will now return a null pointer when `DCPSConfigFile` doesn't exist. ([PR #4372](https://github.com/OpenDDS/OpenDDS/pull/4372))
149 ## Version 3.26.1 of OpenDDS
151 Released 2023-11-14
153 Download [this release on GitHub](https://github.com/OpenDDS/OpenDDS/releases/tag/DDS-3.26.1).
155 Read [the documentation for this release on Read the Docs](https://opendds.readthedocs.io/en/dds-3.26.1).
157 ### Fixes
159 * Building with CMake
160     * Fixed [Issue #4328](https://github.com/OpenDDS/OpenDDS/issues/4328), where each run of CMake effectively always appended the MPC features to `default.features` in ACE. ([PR #4330](https://github.com/OpenDDS/OpenDDS/pull/4330))
162 * Fixed a corner case in RTPS ParameterList parsing ([PR #4336](https://github.com/OpenDDS/OpenDDS/pull/4336))
163 * Reject some types of invalid RTPS DataFrag submessages ([PR #4348](https://github.com/OpenDDS/OpenDDS/pull/4348))
165 ## Version 3.26.0 of OpenDDS
167 Released 2023-10-23
169 Download [this release on GitHub](https://github.com/OpenDDS/OpenDDS/releases/tag/DDS-3.26).
171 Read [the documentation for this release on Read the Docs](https://opendds.readthedocs.io/en/dds-3.26).
173 ### Additions
175 * OpenDDS can now be built using CMake for most common scenarios. ([PR #4203](https://github.com/OpenDDS/OpenDDS/pull/4203), [PR #4214](https://github.com/OpenDDS/OpenDDS/pull/4214))
176     * This is still considered somewhat experimental as it doesn't support [everything that an MPC-built OpenDDS currently can](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/index.html#cmake-known-limitations).
177     * See [Building OpenDDS Using CMake](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/index.html#cmake-building) for details.
179 * Convert transport configurations (`rtps_udp`, `multicast`, `shmem`, `tcp`, `udp`) uses key-value store. ([PR #4162](https://github.com/OpenDDS/OpenDDS/pull/4162), [PR #4270](https://github.com/OpenDDS/OpenDDS/pull/4270), [PR #4272](https://github.com/OpenDDS/OpenDDS/pull/4272), [PR #4241](https://github.com/OpenDDS/OpenDDS/pull/4241), [PR #4242](https://github.com/OpenDDS/OpenDDS/pull/4242), [PR #4243](https://github.com/OpenDDS/OpenDDS/pull/4243), [PR #4249](https://github.com/OpenDDS/OpenDDS/pull/4249), [PR #4255](https://github.com/OpenDDS/OpenDDS/pull/4255))
180 * CMake Config Package
181     * Added [`opendds_install_interface_files`](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/cmake.html#func-opendds_install_interface_files) to help install IDL files and the files generated from them. ([PR #4203](https://github.com/OpenDDS/OpenDDS/pull/4203), [PR #4214](https://github.com/OpenDDS/OpenDDS/pull/4214))
182     * Added [`OPENDDS_HOST_TOOLS`](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/cmake.html#var-OPENDDS_HOST_TOOLS) and [`OPENDDS_ACE_TAO_HOST_TOOLS`](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/cmake.html#var-OPENDDS_ACE_TAO_HOST_TOOLS) to allow cross compiling applications with both MPC and CMake-built OpenDDS. ([PR #4203](https://github.com/OpenDDS/OpenDDS/pull/4203), [PR #4214](https://github.com/OpenDDS/OpenDDS/pull/4214))
183     * [`opendds_target_sources`](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/cmake.html#func-opendds_target_sources):
185         * Added [`opendds_target_sources(INCLUDE_BASE)`](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/cmake.html#func-arg-opendds_target_sources-INCLUDE_BASE) to preserve the directory structure of the IDL files for compiling the resulting generated files and installing everything using [`opendds_install_interface_files`](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/cmake.html#func-opendds_install_interface_files). ([PR #4203](https://github.com/OpenDDS/OpenDDS/pull/4203), [PR #4214](https://github.com/OpenDDS/OpenDDS/pull/4214))
186         * Added [`opendds_target_sources(USE_VERSIONED_NAMESPACE)`](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/cmake.html#func-arg-opendds_target_sources-USE_VERSIONED_NAMESPACE) as a shortcut to the `-Wb,versioning_\*` IDL compiler options. ([PR #4203](https://github.com/OpenDDS/OpenDDS/pull/4203), [PR #4214](https://github.com/OpenDDS/OpenDDS/pull/4214))
188 * Support sending DynamicDataAdapter sample via DynamicDataWriter ([PR #4226](https://github.com/OpenDDS/OpenDDS/pull/4226))
189 * Added export macro to ConditionImpl ([PR #4295](https://github.com/OpenDDS/OpenDDS/pull/4295))
191 ### Deprecations
193 * Deprecated [`OPENDDS_FILENAME_ONLY_INCLUDES`](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/cmake.html#var-OPENDDS_FILENAME_ONLY_INCLUDES) in favor of [`opendds_target_sources(INCLUDE_BASE)`](https://opendds.readthedocs.io/en/dds-3.26/devguide/building/cmake.html#func-arg-opendds_target_sources-INCLUDE_BASE). ([PR #4203](https://github.com/OpenDDS/OpenDDS/pull/4203), [PR #4214](https://github.com/OpenDDS/OpenDDS/pull/4214))
195 ### Fixes
197 * Improved the [subject name](https://opendds.readthedocs.io/en/dds-3.26/devguide/dds_security.html#dds-security-subject-name) parsing to better conform to the DDS Security spec. ([PR #4201](https://github.com/OpenDDS/OpenDDS/pull/4201))
198     * The order of attributes in subject names is now significant when comparing them.
200 * Remove from TypeLookupService when remote endpoint is removed from SEDP ([PR #4216](https://github.com/OpenDDS/OpenDDS/pull/4216))
201 * WaitSet is now notified when DataWriter liveliness is lost. ([PR #4223](https://github.com/OpenDDS/OpenDDS/pull/4223))
202 * ICE doesn't use IPv4-mapped IPv6 addresses anymore. ([PR #4230](https://github.com/OpenDDS/OpenDDS/pull/4230))
203 * Efficiency: Remove per-element locking in JobQueue ([PR #4253](https://github.com/OpenDDS/OpenDDS/pull/4253))
204 * RtpsRelay: fixed bug in record_activity's use of remove in GuidAddrSet ([PR #4254](https://github.com/OpenDDS/OpenDDS/pull/4254))
205 * Fix warnings in typeobject_generator when using TAO 3 ([PR #4262](https://github.com/OpenDDS/OpenDDS/pull/4262))
206 * Fix null pointer when participant is absent when updating locators ([PR #4265](https://github.com/OpenDDS/OpenDDS/pull/4265))
207 * Initialize variables in TypeObject to silence warnings ([PR #4292](https://github.com/OpenDDS/OpenDDS/pull/4292))
208 * RtpsRelay: Use ACE_Message_Block's locking strategy for cached SPDP to fix tsan warning ([PR #4293](https://github.com/OpenDDS/OpenDDS/pull/4293))
209 * Fix tsan warning in ReactorTask ([PR #4298](https://github.com/OpenDDS/OpenDDS/pull/4298))
211 ### Documentation
213 * Removed documentation for `-Grapidjson` option of `opendds_idl` that was removed in 3.20.0 ([PR #4231](https://github.com/OpenDDS/OpenDDS/pull/4231))
214 * Remove reference to mailing lists ([PR #4234](https://github.com/OpenDDS/OpenDDS/pull/4234))
215 * Restructured parts of [DDS Security](https://opendds.readthedocs.io/en/dds-3.26/devguide/dds_security.html#dds-security) page and expanded documentation of some XML security document elements. ([PR #4281](https://github.com/OpenDDS/OpenDDS/pull/4281))
216 * OS-specific instructions will now be automatically selected based on the browser's user agent. ([PR #4281](https://github.com/OpenDDS/OpenDDS/pull/4281))
217 * OMG specification section references are now links to that section in the specification PDF. ([PR #4281](https://github.com/OpenDDS/OpenDDS/pull/4281))
218 * Move build and install instructions to DevGuide ([PR #4294](https://github.com/OpenDDS/OpenDDS/pull/4294))
219 * Incorporate the quick start guides, FAQ, and shapes demo into the DevGuide. ([PR #4297](https://github.com/OpenDDS/OpenDDS/pull/4297))
221 ### Notes
223 * Using Perl 5.38.0 might prevent TAO from building properly, see [here](https://github.com/DOCGroup/ACE_TAO/issues/2148) for details.
225 ## Version 3.25.0 of OpenDDS
227 Released 2023-07-20
229 Download [this release on GitHub](https://github.com/OpenDDS/OpenDDS/releases/tag/DDS-3.25).
231 Read [the documentation for this release on Read the Docs](https://opendds.readthedocs.io/en/dds-3.25).
233 ### Additions
235 * The Observer interface now has support for dispose and unregister. ([PR #4137](https://github.com/OpenDDS/OpenDDS/pull/4137))
236 * OpenDDS now stores configuration information in a key-value store. ([PR #4138](https://github.com/OpenDDS/OpenDDS/pull/4138), [PR #4134](https://github.com/OpenDDS/OpenDDS/pull/4134), [PR #4151](https://github.com/OpenDDS/OpenDDS/pull/4151))
237     * Configuration values can be set via API, config file, or command line.
239         * Currently applies to the common section and common transport configuration.
241 * Added `encode_to_string`, `encode_to_bytes`, `decode_from_string`, and `decode_from_bytes` to `TypeSupport`. ([PR #4144](https://github.com/OpenDDS/OpenDDS/pull/4144), [PR #4122](https://github.com/OpenDDS/OpenDDS/pull/4122), [PR #4133](https://github.com/OpenDDS/OpenDDS/pull/4133), [PR #4135](https://github.com/OpenDDS/OpenDDS/pull/4135))
242     * These methods convert samples to and from other formats.
243     * Currently only `OpenDDS::DCPS::JSON_DATA_REPRESENTATION` is supported.
245 * Add `-Gequality` option to opendds_idl to generate `==` and `!=` for structs and unions. ([PR #4154](https://github.com/OpenDDS/OpenDDS/pull/4154))
246     * The members of the struct or union must have a type that could appear in a DDS topic and be supported by opendds_idl.
247     * The motivation for this change was to make the generated code more useful as many users go on to define these operators.
249 * CMake Config Package
251     * Added [executable targets](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#cmake-executables). ([PR #4160](https://github.com/OpenDDS/OpenDDS/pull/4160))
252     * [`OPENDDS_CMAKE_VERBOSE`](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#var-OPENDDS_CMAKE_VERBOSE) output has been expanded, but now accepts a list of categories to control how much is logged. ([PR #4160](https://github.com/OpenDDS/OpenDDS/pull/4160))
253     * Added [`opendds_export_header`](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#func-opendds_export_header) to generate an export header. ([PR #4160](https://github.com/OpenDDS/OpenDDS/pull/4160))
254     * [`opendds_target_sources`](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#func-opendds_target_sources):
255         * Added [`opendds_target_sources(GENERATE_SERVER_SKELETONS)`](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#func-arg-opendds_target_sources-GENERATE_SERVER_SKELETONS) to allow `tao_idl` to generate code for CORBA servers. ([PR #4140](https://github.com/OpenDDS/OpenDDS/pull/4140))
256         * Added [`opendds_target_sources(AUTO_LINK)`](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#func-arg-opendds_target_sources-AUTO_LINK) as a fine-grained version of [`OPENDDS_AUTO_LINK_DCPS`](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#var-OPENDDS_AUTO_LINK_DCPS). ([PR #4140](https://github.com/OpenDDS/OpenDDS/pull/4140))
257         * Added [`opendds_target_sources(SKIP_TAO_IDL)`](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#func-arg-opendds_target_sources-SKIP_TAO_IDL) to disable `tao_idl`. ([PR #4140](https://github.com/OpenDDS/OpenDDS/pull/4140))
258         * Added [`opendds_target_sources(SKIP_OPENDDS_IDL)`](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#func-arg-opendds_target_sources-SKIP_OPENDDS_IDL) to disable `opendds_idl`. ([PR #4140](https://github.com/OpenDDS/OpenDDS/pull/4140))
259         * Added [`opendds_target_sources(USE_EXPORT)`](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#func-arg-opendds_target_sources-USE_EXPORT) to allow overriding the generated export header with an existing one. ([PR #4160](https://github.com/OpenDDS/OpenDDS/pull/4160))
261     * Libraries and features can be passed to `find_package(OpenDDS COMPONENTS)` to change what is required. ([PR #4160](https://github.com/OpenDDS/OpenDDS/pull/4160), [PR #4140](https://github.com/OpenDDS/OpenDDS/pull/4140))
263         * See [Components](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html#cmake-components) for details.
265 ### Security
267 * Fixed null pointer exception caused by RTPS Parameters with incorrect zero size. ([PR #4197](https://github.com/OpenDDS/OpenDDS/pull/4197))
269 ### Fixes
271 * CMake Config Package
272     * Made linking dependencies and macro definitions closer match using MPC with OpenDDS and TAO. ([PR #4140](https://github.com/OpenDDS/OpenDDS/pull/4140))
273     * Fixed issues with passing `OPENDDS_IDL_OPTIONS -SI` to `opendds_target_sources`. ([PR #4140](https://github.com/OpenDDS/OpenDDS/pull/4140))
275 * Fixed issue deserializing bounded sequences with JSON ([PR #4150](https://github.com/OpenDDS/OpenDDS/pull/4150))
276     * The deserialization will fail if the JSON input contains more elements than the bounded sequence can hold.
278 * Updated the RtpsRelay's tracking of client IP addresses so they are removed when no longer used. ([PR #4202](https://github.com/OpenDDS/OpenDDS/pull/4202))
280     * The RtpsRelay configuration option -MaxAddrSetSize was renamed to -MaxIpsPerClient
282 ### Documentation
284 * Moved various markdown files into the Sphinx documentation so that they are now included along with the Developer's Guide: ([PR #4139](https://github.com/OpenDDS/OpenDDS/pull/4139))
285     * `INSTALL.md` is now [Building and Installing](https://opendds.readthedocs.io/en/dds-3.25/building/index.html).
286     * `docs/dependencies.md` is now [Dependencies](https://opendds.readthedocs.io/en/dds-3.25/building/dependencies.html).
287     * `docs/cmake.md` is now [Using OpenDDS in a CMake Project](https://opendds.readthedocs.io/en/dds-3.25/building/cmake.html).
288     * `docs/android.md` is now [Android](https://opendds.readthedocs.io/en/dds-3.25/building/android.html).
289     * `docs/ios.md` is now [iOS](https://opendds.readthedocs.io/en/dds-3.25/building/ios.html).
291 * Restructured how the documentation is presented to cleanly separate the Developer's Guide and internal documentation. ([PR #4139](https://github.com/OpenDDS/OpenDDS/pull/4139))
292 * Added a [proper main page](https://opendds.readthedocs.io/en/dds-3.25/index.html). ([PR #4139](https://github.com/OpenDDS/OpenDDS/pull/4139))
293 * Added [Glossary](https://opendds.readthedocs.io/en/dds-3.25/glossary.html). ([PR #4139](https://github.com/OpenDDS/OpenDDS/pull/4139))
294 * In addition to [`NEWS.md`](https://github.com/OpenDDS/OpenDDS/blob/DDS-3.25/NEWS.md), started adding release notes to [Release Notes](https://opendds.readthedocs.io/en/dds-3.25/news.html). ([PR #4125](https://github.com/OpenDDS/OpenDDS/pull/4125))
296 ### Notes
298 * CMake Config Package
300     * `OPENDDS_TARGET_SOURCES` is now called `opendds_target_sources`. ([PR #4140](https://github.com/OpenDDS/OpenDDS/pull/4140))
302         * CMake macros and functions names are case insensitive, so this should have no effect on CMake code.
304 ## Version 3.24.2 of OpenDDS
305 OpenDDS 3.24.2 was released on Jun 30 2023.
307 ### Security:
308 - 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. (#4155)
309   - Thanks to Seulbae Kim (@squizz617) for discovering this.
311 ### Fixes:
312 - Fixed leaked shared memory by the shared memory transport. (#4171)
313   - For a 100% fix, a new ACE version including https://github.com/DOCGroup/ACE_TAO/pull/2077 must be used.
314 - Fixed bug introduced by #4120 (#4180, #4184)
315   - The fix introduced in #4120 causes the TransportClient to silently drop messages when the client's guid is not initialized.
316     This causes issues for TransportClients that send messages to the transport before association.
317     One such example is a DataWriter with liveliness configured.
318     The DataWriter will send liveliness messages to the transport (which will be dropped) and hang waiting for them to be delivered.
319   - The solution was set the guid for a TransportClient before calling any method that uses the guid.
321 ### Notes:
322 - #4180 required changes in InfoRepoDiscovery's IDL, so InfoRepo compatibility with older versions has been broken.
324 ## Version 3.24.1 of OpenDDS
325 OpenDDS 3.24.1 was released on Apr 21 2023.
327 ### Fixes:
328 - Fixed compile warnings in TypeSupport that can happen with GCC and `-O2` or higher (#4117)
329 - Fixed compile error in TypeSupport for IDL that contains a typedef of a typedef (#4117)
330 - Fixed bug in the tcp transport where readers and writers can fail to associate (#4120)
331 - Fixed issue in some headers that could leak `#pragma pack (push, 8)` into user code on Visual Studio (#4123)
332 - Fixed theoretical infinite loop in rtps_udp transport code (#4124)
334 ### Documentation:
335 - Removed invalid links and references in README and the Developer's Guide and fixed other minor issues (#4115, #4116, #4121, #4126)
336 - Changed theme used by the Sphinx documentation to make the Developer's Guide easier to navigate (#4127)
337 - Added copy buttons to embedded code and code-like examples (#4127)
339 ## Version 3.24.0 of OpenDDS
340 OpenDDS 3.24.0 was released on Apr 11 2023.
342 ### Additions:
343 - The OpenDDS Developer's Guide is now available at https://opendds.readthedocs.io/ (#4051, #4094, #4092, #4100, #4101, #4095, #4103, #4102, #4104, #4105)
344   - The Sphinx/reStructuredText source for this new format is now located in the repo at `docs/devguide`
345 - DOCGroup ACE6/TAO2 is now the default ACE/TAO for OpenDDS, OCI ACE/TAO is no longer supported (#4069)
346 - Dynamic content subscription (#3988)
347   - This allows `DynamicDataReader`s to use `QueryCondition` and `ContentFilteredTopic` and allows `DynamicDataWriter`s to do filtering on behalf of matched `DataReader`s that use `ContentFilteredTopic`.
348 - `DynamicData`:
349   - Can now read and write enum members as strings (#4022)
350   - `get_int64_value` and `get_uint64_value` can now cast from different types (#4078)
351   - `DynamicDataImpl` now uses lazy initialization to reduce memory usage (#4024)
352 - Added aliases for IDL types from XTypes spec such as `DDS::UInt32` (#3994)
353   - See `DdsDcpsCore.idl` for all of them.
354 - Added PublicationMatchedStatus Current Count To RtpsRelay Statistics (#4006)
355 - Allow reassembly of overlapping fragment ranges in RTPS (#4035, #4047)
356 - Can now cross-compile on macOS (#4048)
357 - Added hardening features to RtpsRelay (#4045)
358   - These are configured with the new options `-MaxAddrSetSize` and `-RejectedAddressDuration`.
359 - Added `OPENDDS_AUTO_LINK_DCPS` and `OPENDDS_USE_CORRECT_INCLUDE_SCOPE` global options to the CMake package (#4071)
360 - Expanded support for using C++ keywords in IDL (#4073)
361 - Improved support for anonymous types in unions branches (#4078)
362 - IDL file and generated TypeSupport.idl can now be in different directories (#4077)
364 ### Fixes:
365 - Fixed `rtps_relay_address_change` deadlocks (#3989)
366 - Fixed RtpsUdpTransport data race from `relay_stun_mutex_` (#3990)
367 - Fixed invalid socket handles in RtpsUdpTransport (#4002)
368 - Fixed index increment in `GuidPartitionTable::prepare_relay_partitions` (#4005)
369 - Fixed a bug in content filtering with enum comparisons on serialized samples (#4038)
370 - Fixed transport config and transport instance derived from template conflicting (#4058)
371 - Improved reliability of the shared memory transport (#4028)
372 - Secure writers and readers in same participant can now associate (#4041)
373 - Fixed issue with using `-o` in `tao_idl`/`opendds_idl` options in `OPENDDS_TARGET_SOURCES` and those directories are now automatically included (#4071)
374 - XTypes (#4078):
375   - `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.
376     By default member IDs increment starting at 0, and in that case the `TypeObject`s will be the same.
377     If `@autoid(hash)`, `--default-autoid hash`, or `@id(ID)` are being used then the order could be different.
378     This could cause some reader/writer matching incompatibility with older versions of OpenDDS:
379     - Topics with final and appendable structs will no longer match.
380     - If `DISALLOW_TYPE_COERCION` QoS is being used, then all topics where the order differ will not longer match.
381       Note that this is true for any time the type hash changes.
382     - Pass the `--old-typeobject-member-order` option to `opendds_idl` to use the non-standard order.
383   - The size of XCDR2 member parameters in mutable structs and unions is now correctly interpreted when the "length code" is 5, 6, or 7.
384     - 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.
385   - `DynamicDataImpl` (`DynamicData` made by `DynamicDataFactory` that can be passed to `DynamicDataWriter`):
386     - `get_member_id_at_index` now returns ids for members that haven't been initialized yet.
387     - Fixed incorrect serialization of keyed unions for instance registration, disposal, and unregistration samples.
388     - Fixed errors from serializing some cases of arrays and sequences.
390 ### Notes:
391 - Release files will only be uploaded to GitHub from now on
392 - `OpenDDS::DCPS::RepoId` has been removed, if needed use `OpenDDS::DCPS::GUID_t` instead (#3972)
394 ## Version 3.23.1 of OpenDDS
395 OpenDDS 3.23.1 was released on Feb 1 2023.
397 ### Fixes:
399 - Addressed a DDS Security issue where participants can sign their own permissions file if the same CA is used for both identity and permissions (#3992)
400 - Addressed CVE-2023-23932, where untrusted sources can use invalid CDR strings in RTPS messages to crash OpenDDS applications (#4010, #4016, #4018)
401   - Thanks to Seulbae Kim (@squizz617) for discovering this.
402 - Fixed an issue in `DynamicData::get_*_values` and `print_dynamic_data` (#3952)
403 - Fixed a bug where `DynamicDataReader` wouldn't be able to read a topic type with final or mutable extensibility (#3993)
404 - Fixed race conditions involving reference counted objects (#3999)
406 ## Version 3.23.0 of OpenDDS
407 OpenDDS 3.23.0 was released on Dec 21 2022.
409 ### Additions:
410 - DataRepresentationQosPolicy and TypeConsistencyEnforcementQosPolicy can be set through XML (#3763)
411 - RTPS send queue performance improvements (#3794)
412 - Cross-compiling improvements (#3853)
413 - New support for DynamicDataWriter and enhanced support for DynamicDataReader (#3827, #3727, #3871, #3718, #3830, #3893, #3904, #3885, #3933, #3935)
414 - New config option for RtpsDiscovery `SpdpRequestRandomPort` (#3903)
415 - New `opendds_mwc.pl` Wrapper Script (#3821, #3913)
416 - Improve support for loading signed documents (#3864)
418 ### Fixes:
419 - Unauthenticated participant leads to invalid iterator (#3748)
420 - Shmem Association race (#3549)
421 - Shmem and tcp null pointer (#3779)
422 - Submodule checkout on Windows (#3812)
424 ### Notes:
425 - Docker images are built for release tags https://github.com/objectcomputing/OpenDDS/pkgs/container/opendds (#3776)
427 ## Version 3.22.0 of OpenDDS
428 OpenDDS 3.22.0 was released on Sep 16 2022.
430 ### Additions:
431 - Sequences in FACE mapping: support == for any type (#3604)
432 - Implement instance security methods from DDS Security Spec (#3557)
433 - Added meta-discovery server to RtpsRelay (#3655)
434 - Support building for VxWorks 21.03 (#3723, #3740)
435 - Alive and active flags now have timestamps in RtpsRelay (#3579)
436 - Static initializers for registration of TypeSupport objects (#3736)
438 ### Fixes:
439 - Fixed bug where partitions for RtpsRelay client were not updated (#3583)
440 - Fixed data race on status flag which causes missing listener invocation for BIT readers (#3584)
441 - Fixed bug where SEDP removes crypto handles before dissassociating (#3597)
442 - Fixed null BIT subscriber in ConnectionRecord (#3610)
443 - Fixed bug where user data reverts to original for RtpsRelay clients (#3613)
444 - Removed warning about unexpected register in MulticastManager (#3608)
445 - Fixed reference counting issue that blocks SPDP shutdown (#3619)
446 - Fixed dds_suppress_anys=0 (#3656)
447 - Ignore interfaces with no FQDN in AddressLookup (#3660)
448 - Fixed memory leak where DataWriter doesn't remove unregistered instances (#3684)
449 - Update TransportClient's use of PendingAssoc's lock (#3652)
450 - Clone Google Test and RapidJSON if not found (#3691)
451 - Set extensibility on enums (#3686)
452 - Do not use fixed-size buffer for partition parsing (#3704)
453 - Prevent Use Of IPv4-mapped IPv6 'Any' Addresses In RTPS Locators (#3713)
454 - Fix SEGV in shutdown when using monitor (#3732)
455 - Crash from missing BIT reader in shutdown (#3741)
457 ### Notes:
458 - Removed wait param in TransportRegistry::create_inst (#3644)
459 - Changed Multicast Group Join Errors to Warnings (#3558)
460 - Remove Leading `::` from `TypeObject` Names (#3679)
461 - Updates to the ValueReader/ValueWriter/ValueDispatcher framework (#3719)
462 - Updates to Dockerfile (#3737)
464 ## Version 3.21.0 of OpenDDS
465 OpenDDS 3.21.0 was released on Jun 24 2022.
467 ### Additions:
468 - Reduced code generation for XTypes (#3456)
469 - `ValueWriter::begin_struct_member` now takes a member descriptor for identifying key fields (#3459)
470 - Added detailed logging for invalid QoS (#3475)
471 - Added example usage for `inspect` (#3493)
472 - RTPS:
473   - Added debug logging for non-final RTPS messages (#3504)
474   - `ConnectionRecord` now reports the round-trip latency to the RtpsRelay (#3506)
476 ### Fixes:
477 - Add locking to `RecorderImpl` (#3531)
478 - Fixed minor issues with choosing addresses and hostnames in `NetworkResource` (#3527)
479 - RTPS:
480   - `PropertySeq` now checks for invalid length (#3432)
481   - `UseXTypes` RTPS discovery option now accepts descriptive values (#3493)
482     - This was added in OpenDDS 3.20.0, but wasn't functional.
483   - Performance improvements for RTPS (#3500, #3508)
484   - Fixed a bug where heartbeats were being sent to readers that didn't exist anymore (#3540)
486 ## Version 3.20.0 of OpenDDS
487 OpenDDS 3.20.0 was released on Mar 25 2022.
489 ### Additions:
490 - Added the `host_name` shared memory transport config option (#3386)
491 - Added an example test for demonstrating issues (#3322)
492 - Added the `--old-typeobject-encoding` option to `opendds_idl` for compatibility with `TypeObject` before OpenDDS 3.18.0 (#3263)
493 - Added return code to `ServiceParticipant::shutdown()` (#3159, #3270)
494 - CMake Module:
495   - Improved support for installing CMake projects that use OpenDDS (#3315, #3354, #3367, #3368, #3393)
496     - OpenDDS, ACE, and TAO libraries can now be installed using `install(IMPORTED_RUNTIME_ARTIFACTS)` if using CMake 3.21 or later
497       - To help facilitate this, a new function called `opendds_get_library_dependencies` has been added.
498     - To help install generated files, `OPENDDS_TARGET_SOURCES` now adds lists of the files that where passed in and generated that are part of the `PUBLIC` and `INTERFACE` scopes as properties on the target
499     - See `docs/cmake.md` for details on all of these new features
500   - Added an `OPENDDS_DEFAULT_SCOPE` option that allows changing the default scope of `OPENDDS_TARGET_SOURCES` (#3315)
501   - Support `INSTALL_LIB` being used with `make install` to change the name of the `lib` directory (#2879)
502     - NOTE: This required changing the CMake module installation destination from `lib` to `share`.
504 ### Platform Support and Dependencies:
505 - Support for Visual Studio 2022 (#3267)
506 - Updated to work with the C++20 standard library (#3288)
507 - Support for OpenSSL 3.0.1 and later (#3358, #3404)
508 - Updated Wireshark dissector to work with GLib 2.68 and later (#2918)
509 - Removed Boost as an optional dependency (#3323)
510 - Updated the RapidJSON submodule (#3284)
512 ### Fixes:
513 - Fixed issue preventing 2 `sequence<string>` anonymous types in the same struct (#3415)
514 - Fixed issues with entity association when using the multicast transport (#3377)
515 - Fixed issue #3268, a segfault in `opendds_idl` (#3374)
516 - Fixed thread safety of `DataReaderImpl_T`'s allocator (#3335, #3403)
517 - Improvements to how data representation is handled (#3233)
518 - Fixed instance lifetime issue with `assert_liveliness` (#3241)
519 - RTPS:
520   - Improved internal handling of remote addresses to reduce initial traffic (#3375)
521   - General ICE improvements (#3298, #3218)
522   - Improvements to RtpsRelay (#3257, #3240, #3237)
523   - Check for invalid RTPS Parameter length (#3405)
524 - CMake Module:
525   - Fixed issue when using `install(EXPORT)` on a target used with `OPENDDS_TARGET_SOURCES` (#3315)
526   - Fixed issue #1297 where `opendds_idl` generates an incorrect include path (#3315)
528 ## Version 3.19.0 of OpenDDS
529 OpenDDS 3.19.0 was released on Dec 10 2021.
531 ### Additions:
532 - XTypes: Dynamic Language Binding (#2976)
533   - Read support only in this version
534   - New `inspect` tool that prints data samples read from a topic in text form
535   - See section 16.7 of the Developer's Guide for details
536 - CDR Encapsulation support for non-rtps_udp transports (#3135)
537   - When XCDR2 is enabled in DataRepresentationQosPolicy, these transports can use mutable and extensible extensibility
538 - Enhanced RtpsRelay support (#3208, #3116, #3094)
539 - RTPS transport-level statistics (#3166)
540 - Made the allocators in TransportReceiveStrategy configurable (#3170)
541 - Option to simulate lossy network (#3138)
542 - Configurable maximum participants in discovery (#3145)
543 - Extend ValueWriter/ValueReader with array based operations (#3140)
544 - Extend RawDataSample with the header to support XCDR2 streams (#3028)
545 - DCPSLogLevel config option, see section 7.6 of the Developer's Guide for details (#3113, #3158)
547 ### Fixes:
548 - Source IP check override configuration (#3195)
549 - Update use of receive address in RtpsUdpDataLink::accumulate_addresses (#3191)
550 - Updated Node.js/V8 support (#3188, #3177)
551 - Better support for DDS Security static library builds (#3122)
552 - TransportReceiveStrategy: fixed issue with response queue (#3136)
553 - Remove broken fragment resend early return check (#3095)
554 - Added special-case handling for PID_PROPERTY_LIST interop (#3057)
555 - SEDP sequencing (#3068, #3116)
556 - MultiTopic robustness (#2988)
557 - Fixed issue with `find_package(Threads)` on recent CMake releases when calling `find_package(OpenDDS)` before a C/C++ project has been declared (#3093)
559 ### Notes:
560 - configure: Add vs2022 as a compiler option (#3169)
561 - MSVC++ 12.0 updates (#3075)
562 - Fixed dependency cycle when `OPENDDS_TARGET_SOURCES` is used on a CMake target that also has Qt MOC source files (#3093)
564 ## Version 3.18.1 of OpenDDS
565 OpenDDS 3.18.1 was released on Sep 24 2021.
567 ### Fixes:
568 - Improve RTPS messaging behaviors under IPv6 (#2923)
569 - Fixed a few rtps_udp transport issues (#2954, #2997, #2998, #3009, #3013, #3027)
570 - Configurable parameters for RTPS Discovery lease durations (#2999)
571 - Auth resend backs off (more delay over time) (#2937, #2984)
572 - Input validity check for RTPS Parameters (#2917), sequences (#2944), addresses (#2981, #3016), locators (#3000)
573 - Fragment reassembly fixes (#2960)
574 - Type lookup service fixes (#2941)
575 - Fixed generation of unreachable code in operator<< (#2962)
576 - RtpsRelay logging and related changes (#2936, #2980, #2979, #2978, 2987, #2996, #2832)
577 - XML QoS loader can now use custom error handlers (#2961)
578 - CMake: Prevent Duplicate BUILD_DLL creation (#2977)
579 - CMake: Assign runtime library tao_idl on MSVC (#2990)
581 ## Version 3.18.0 of OpenDDS
582 OpenDDS 3.18.0 was released on Aug 24 2021.
584 ### Additions:
585 - IDL4 explicitly-named integer types (#2814, #2857, #2862)
586   - The existing IDL integer types, `short`, `long`, and `long long`, now have new aliases, which are `int16`, `int32`, and `int64` respectively, along with unsigned versions of them like `uint32`.
587   - There are also two new distinct integer types: `int8` and `uint8`.
588 - RTPS:
589   - Added the `LeaseExtension` RTPS discovery config option that extends the lease of discovered participants (#2869)
590   - Added the `SedpPassiveConnectDuration` RTPS discovery config option (#2847)
591   - Improved reassembly of fragments by adding an expiration to them (#2848)
592     - Added the `SedpFragmentReassemblyTimeout` RTPS discovery config option to control this.
593   - Use preallocated buffers in `RtpsUdpDataLink` (#2901)
594     - Added the `anticipated_fragments` RTPS transport config option to scale how much memory is preallocated for packet customization and fragments buffers.
595   - To try to reduce possible network congestion, temporarily increase the heartbeat send period while they go unanswered (#2911, #2913, #2915)
596   - Added the `SendBufferSize` and `RecvBufferSize` RTPS discovery config options to set the buffer sizes for the sockets used for discovery (#2935)
597 - The QoS XML Handler can now take input from a string (#2439)
599 ### Fixes:
600 - RTPS:
601   - Fixed `RtpsUdpDataLink` leaking remote writers on failed associations (#2812)
602   - Fixed `TypeObject` encoding compatibly and consistency issues (#2749, #2804)
603   - Fixed local/local RTPS associations not properly notifying liveliness (#2783)
604   - Fixed durable data not being delivered in the right order (#2728)
605   - `RtpsUdpDataLink` will no longer purge durable data (#2690)
606   - Fixed writers of fragmented data samples having issues reconnecting with readers (#2930)
607   - Fixed non-durable readers receiving historical samples (#2914)
608   - Fixed issues with security permissions and governance XML file parsing (#2896, #2912, #2916)
609     - `<id_range>`s in domain id sets can now omit `<max>` in permissions and governance files.
610       - This means `<id_range><min>0</min></id_range>` will now mean all domains.
611     - Fix date/time in `<not_before>` and `<not_after>` in permissions grants always being interpreted as local time and fix issues with parsing time zone offsets.
612     - Fixed settings for multiple `<domain_rule>`s in governance files ending up just being copies of the first domain rule.
613     - Allow using `1`/`0` in addition to `TRUE`/`FALSE` and `true`/`false` for boolean values.
614   - RtpsRelay fixes and improvements (#2899, #2895, #2887, #2884, #2864, #2881, #2776, #2761, #2751, #2717, #2710, #2927, #2929, #2928, #2921)
615 - Fixed `Topic`s returned from `find_topic` not being distinct entities (#2731)
616 - Try to workaround faulty DNS when getting the FQDN (#2677)
617 - Fixed `configure --wireshark-cmake` not working on Linux (#2679)
618 - Fixed an invalid memory write in `SporadicTask` (#2685)
619 - Fixed occasional deadlocks in `DataReaderImpl` and `SubscriberImpl` associated with presentation QoS (#2886, #2903)
620 - `make install`:
621   - Use `$(INSTALL_LIB)` instead of hardcoded `lib` for Java-related files (#2740)
622   - Use relative links in `$(INSTALL_PREFIX)/share` (#2780)
623   - Fix headers unnecessarily getting installed to `$(INSTALL_PREFIX)/include/DCPS` (#2864)
625 ### Notes:
626 - Fixed a spelling error for the `DCPSChunkAssociationMultiplier` config option (#2723)
627   - The old spelling, `DCPSChunkAssociationMutltiplier` (with an extra "t" in "Multiplier"), will continue to also be accepted for the time being.
629 ## Version 3.17.0 of OpenDDS
630 OpenDDS 3.17.0 was released on May 18 2021.
632 ### Additions:
633 - Support for converting samples to and from JSON (#2312)
634   - This requires RapidJSON, so it is now installed along with OpenDDS if it was configured (#2426)
635     - NOTE: This might conflict with an existing RapidJSON installation.
636 - Support for `ignore_member_names` in the XTypes type consistency enforcement QoS (#2364)
637 - Internal tracking of and reuse of instance handles (#2530, #2557)
638 - `--install-origin-relative` configure script option for installing with RPATH relative to `$ORIGIN` (#2651)
639 - RTPS:
640   - RTPS message logging (#2458)
641   - RTPS performance logging (#2477)
642   - Add logging to measure latency of RTPS discovery and association (#2511)
643   - Consolidate RTPS messages based on time (#2534)
644   - `RtpsUdpDataLink` can now handle more than one unicast address (#2653)
646 ### Fixes:
647 - DiscoveryBase: additional iterator checks (#2421)
648 - Improve memory usage (#2481)
649 - Allow Java with `linux-cross` in configure script, Fixes #2518 (#2519)
650 - Fix listeners not being invoked when remote participant times out (#2602, #2650)
651 - RTPS:
652   - `RtpsRelay` improvements (#2402, #2442, #2484, #2578, #2598)
653   - `RtpsUdpDataLink::flush_send_queue_task_` cleanup (#2544)
654 - Security:
655   - Auth plugin: check for one of the expected handshake message types (#2551)
656   - Fixed re-keying the endpoints that use derived keys (#2623)
657 - Type Support Generation:
658   - Use a leading `::` to qualify generated C++ scoped names (#2350)
659   - `opendds_idl` fix for underscore fields (#2377)
660   - Make initialization of static XTypes type support data tread-safe in C++03 (#2362, #2389)
661   - Clean up JNI local references, fixes runtime issues with large types (#2465, #2497)
662   - Corrected serialization for XCDR2 mutable unions. (#2471)
663   - Fix for include of a TAO pidl sequence using the `TAO_ROOT`-based path (#2566)
664   - Generate Typecode identifiers needed by `tao_idl` when using C++11 Mapping (#2582, #2627)
665   - Support IDL modules and topic types that are C++ or IDL keywords (#2608, #2665, #2668)
666 - CMake Module:
667   - Fix an issue where a type support library's export header was expected to exist before it was created (#2495)
668   - Use `CMAKE_CXX_COMPILER` as the preprocessor for `opendds_idl` and `tao_idl` so a compiler is no longer required on the path. (#2503)
669   - Fix compatibility with CMake 3.3 (#2562)
670   - Subsequent calls to `find_package(OpenDDS)` no longer cause a fatal error (#2616)
671     - NOTE: `OPENDDS_ALLOW_ENV_CHANGE` optionally allowed this before, so it is no longer needed and has been removed.
673 ### Notes:
674 - `OPENDDS_VERSION` and other version indicators now includes the ".0" at the end for minor releases like this one. (#2563)
675   - NOTE: Release archive filenames and Git tags will retain the old version pattern for now.
676 - CMake Module: `CMAKE_CXX_STANDARD` will no longer be set on Unix platforms. This will have to be correctly set by the user (#2616)
678 ## Version 3.16 of OpenDDS
679 OpenDDS 3.16 was released on Jan 27 2021.
681 ### Additions:
682 - XTypes (#1633)
683   - Initial implementation of the OMG DDS XTypes version 1.3 specification
684   - Allows different IDL definitions to be used in the same topics and for
685     these definitions to evolve while remaining compatible
686   - Includes new RTPS discovery options, QoS policies, `opendds_idl` options, and
687     IDL annotations
688   - See the new "XTypes" chapter in the Developer's Guide for more information
689 - Added new version macros to `dds/Version.h` (#2333)
690   - NOTE: Version macros starting with `DDS_` have been deprecated and will be
691     removed in OpenDDS 4.0.
692 - Configure Script:
693   - Added `--doc-group3` option for using DOC Group ACE7/TAO3 (#2336)
694   - Added `--workspace` option for using a custom MPC workspace file (#2262)
695 - Android:
696   - Support for adapting to network changes in Android apps targeting API 30+ (#2237)
697   - Support for building with the Android NDK directly (Only supported with
698     ACE7/TAO3) (#2296)
699   - See `docs/android.md` for more information
700 - RTPS performance improvements (#2325)
702 ### Fixes:
703 - Fixed port in RTPS discovery `spdp_local_address` configuration being ignored (#2272)
704 - Fixed Participant Location Built-in Topic Updates being ignored (#2255)
705 - Fixed Internal Thread Status Built-in Topic Updates being ignored (#2247)
706   - NOTE: The IDL of the topic has changed.
708 ### Notes:
709 - For the `rtps_udp` transport, the default encoding of DataWriters changed
710   from classic CDR to XCDR2. To maintain interoperability with pre-3.16 OpenDDS
711   and other DDS implementations, the first element of `representation.value` of
712   `DataWriterQos` must be set to `DDS::XCDR_DATA_REPRESENTATION` or the
713   non-OpenDDS 3.16 DataReader must be set up with
714   `DDS::XCDR2_DATA_REPRESENTATION` if supported. DataReaders will continue to
715   be interoperable by default.
716 - Removed `max_bundle_size` `rtps_udp` transport option (#2249)
717 - Replaced old performance-tests/bench with new Bench 2 framework (#2340, #2346)
719 ## Version 3.15 of OpenDDS
720 OpenDDS 3.15 was released on Dec 22 2020.
722 ### Additions:
723 - Scalability and performance improvements (#1525, #1610, #1616, #1662, #1792, #1927)
724 - Support for dynamic configuration of discovery and transport from config file templates (#1764)
725 - Some forms of IDL4 Anonymous Types are supported, see Developer's Guide (#1754)
726 - Added the Observer interface, which allows untyped access to data samples (#1851)
727 - Built-In Topics with RTPS Discovery support disconnect/reconnect cycles (#1924)
728   - This feature required adopting the upcoming DDS spec (1.5) change to BuiltinTopicKey_t: it is now based on a 16-byte opaque identifier.
729 - Added an OpenDDS-specific Built-In Topic for internal thread status reporting (#1906)
730 - Added an option to omit DomainParticipant's USER_DATA QoS from in-the-clear messages when security is enabled (#2066)
731 - Added options to the CMake module, see `docs/cmake.md` (#2075)
733 ### Platform Support and Dependencies:
734 - Improved Android support (#1634, #2171)
735 - Improved IPv6 support (#1639)
736 - The only DOCGroup ACE/TAO versions supported are the current releases from the 6.x/2.x series (#2070)
737 - Compatibility with Wireshark 3.4 (#2076)
739 ### Fixes:
740 - Fixed bugs in RtpsRelay/ICE/STUN (#1595, #1605, #1603, #1628, #1625, #1636)
741 - Fixed some rtps_udp fragmentation issues (#1643, #1800, #1884)
742 - Fixed an rtps_udp protocol issue (#1654)
743 - Fixed bug with wrong status mask used for publication matched event (#1659)
744 - Fixed a bug where SpdpLocalAddress was parsed incorrectly (#1743)
745 - Improve efficiency of waiting on pending writes (#1831)
746 - Reduced the chances for GUID collision in RTPS Discovery multi-domain processes (#2107)
747 - Explicit initialization of reliable RTPS readers to more closely follow DDS spec (#2146)
749 ### Notes:
750 - Passing C++ source files to the `OPENDDS_TARGET_SOURCES` macro in the CMake module is now deprecated (#1741)
752 ## Version 3.14.1 of OpenDDS
753 OpenDDS 3.14.1 was released on Nov 20 2020.
755 ### Fixes:
756 - Improved robustness when using multiple secure participants in the same process (#1593)
757 - Content filter fix for instance registration with non-key filters (#1596)
758 - Prevent Potential Infinite Processing Loop in ReactorInterceptor (#1598)
759 - Android platform improvements (#1626)
760 - Network Config Modifier bugfix (#1648)
761 - Fix deadlock in OfferedDeadlineWatchdog (#1567)
762 - IDL-to-C++11: corrected mapping of enum constants when enum is in a module (#1661)
763 - IDL-to-C++11: fix for enum-discriminated unions (#1950)
764 - Fixed a corner case for IDL union code generation in Java (#1671, #1676)
765 - Fixed Java code generation when an included IDL file has @topic (#1695)
766 - Correctly handle duplicate underlying array types within idl2jni (#1780)
767 - Participants can reauthenticate and exchange data after network partition (#1723)
768 - DCPSDefaultAddress parsing and integration with NetworkConfigMonitor (#1727, #1752, #2021)
769 - Security: checking permissions based on Partition QoS (#1733)
770 - Allow Built-in Security Plugin to be Reloaded in a Static Build (#1737)
771 - Prevent invalid access in TransportClient::PendingAssocTimer::ScheduleCommand during shutdown (#1811)
772 - Additional validity check for submessage parsing (#1844)
773 - Reader Data Lifecycle QoS configurability for Built-In Topics (#1940)
774 - Fix NetworkInterface interaction with MulticastInterface addresses (#1956)
775 - Fixed loopback interface multicast joins (#1964)
776 - Fixed usage of netlink sockets for LinuxNetworkConfigMonitor (#1985)
777 - Fixed bug in zero-copy sequences that grow from a nonzero length (#2039)
778 - CMake Module:
779   - Fixed `OPENDDS_TARGET_SOURCES` setting global include paths. (#1741)
780   - Fixed situations requiring C++ source files to be passed to
781     `OPENDDS_TARGET_SOURCES`. (#1741)
783 ### Additions:
784 - Support for the C++11 mapping in the CMake module. `-Lc++11` can now be
785   passed with `OPENDDS_IDL_OPTIONS` in `OPENDDS_TARGET_SOURCES`. (#1728, #1736)
787 ## Version 3.14 of OpenDDS
788 OpenDDS 3.14 was released on Mar  5 2020.
790 ### Additions:
791 - XTypes IDL annotations for topic types, Union topic types (#1067, #1422):
792   - `#pragma DCPS_DATA_TYPE` and `#pragma DCPS_DATA_KEY` are now deprecated in
793     favor of the `@topic` and `@key` IDL annotations.
794   - Like structures, unions can now be used to define a topic.
795   - See section 2.1.1 of the OpenDDS 3.14 Developer's Guide for more
796     information on both of these features.
797   - See `docs/migrating_to_topic_type_annotations.md` for a guide on how to
798     migrate existing IDL to use topic type annotations.
799 - Added a C++11 mode to opendds_idl's code generation (#954, #1030, #1379)
800 - RtpsRelay, a server that assists with peer-based discovery on the internet, see the "Internet-Enabled RTPS" Chapter in the Developer's Guide (#1057, #1068, #1286, #1341)
801 - Support for IETF ICE for NAT firewall traversal, see the "Internet-Enabled RTPS" Chapter in the Developer's Guide (#1069)
802 - Dynamic network interface changes on supported platforms (#1365, #1551)
803 - An OpenDDS-specific Built-In Topic to report network location/connection details (#1389)
804 - Performance improvements to RTPS Discovery and the RTPS_UDP transport (#1045, #1177, #1138, #1202, #1251, #1260, #1262, #1265, #1324, #1402)
805 - CMake package for building applications that use OpenDDS, see `docs/cmake.md` (#981)
806 - Query Condition and Content-Filtered Topic can filter dispose/unregister messages (#900)
807 - Support for publishing using the [Node.js module](https://www.npmjs.com/package/opendds) with V8 (#1065)
808 - opendds_idl can generate code to convert IDL structures to RapidJSON (#1097, #1254)
809 - Full-message protection (RTPS Protection) in DDS Security (#1280)
810 - RTPS protocol version 2.4 (#1367, #1374, #1364, #1359, #1404, #1381, #1518, #1522, #1530, #1540)
811 - TCP transport: configurable connection timeout (#1493)
812 - A new benchmarking and performance analysis tool in `performance-tests/bench_2` (#1546)
814 ### Platform Support and Dependencies:
815 - Support for Java Development Kit up to version 12 (#1137)
816 - Monitor GUI and the ishapes example now use Qt5, see `docs/qt.md` (#929, #932, #1083)
817 - Improved Android support, see `docs/android.md` (#1066, #1446)
818 - iOS support (#1535, #1545, #1551)
819 - Updated dissector to work with Wireshark 3 (#1080)
821 ### Fixes:
822 - DDS Security improvements (#1310, #1482, #1531)
823 - Java API can now be used on Android (#1156)
824 - Support equals() and hashCode() in Java (#1331)
825 - Improved Java bindings builds (#1146, #1157, #1160, #1167)
826 - InconsistentTopicStatus support in RTPS Discovery (#1158, #1164)
827 - Presentation QoS coherent_access (#1094)
828 - RTPS_UDP transport supports combination of best effort and reliable readers of the same writer (#1449)
829 - Improved support for fragmented data (#1474, #1547)
830 - Topics need to be enabled to use with DataReader/Writer (#1193)
831 - TCP Reconnect (#1273, #1464, #1487, #1497, #1501, #1506, #1519, #1523, #1526)
832 - Shared memory transport improvements (#1301)
833 - GuardCondition _narrow (#1407)
834 - "make install" with DESTDIR (#1429, #1440)
835 - Support for multiple transport instances in the same transport configuration (#1465)
836 - The reliability QoS for DataWriters and Topics is now immutable, matching the DDS 1.4 spec (#1584)
838 ### Notes:
839 - The configure script now defaults to not including tests (#1287)
840 - Removed obsolete `-Gws` option in `opendds_idl`. This option produced sample
841   descriptions for the Wireshark dissector before OpenDDS v3.7. (#966, #1031)
843 ## Version 3.13.3 of OpenDDS
844 Released Fri Oct 11 16:13:35 UTC 2019
846 ### Fixes:
847 - Updated IDL V8 generation to use decimal strings (#1055)
848 - Updated Dissector for Wireshark 3.0 (#1080)
849 - Added support for Visual Studio 2019 (#1053)
850 - .NET compatibility (#1096)
851 - Security: improved support for DH keys (#1092)
852 - Security: general updates (#1091, #1101, #1118)
853 - GoogleTest version update (#1112, #1115)
854 - Improved performance of GUID comparison and lookup (#1128, #1133)
855 - Fixed Monitor library interaction with DomainParticipant (#1132)
856 - Configure script MSVC version detection (#1141)
857 - Security with some submessages encoded and some plain (#1166)
858 - Receive Strategy buffer management (#1192)
859 - Error check in TcpTransport::configure_i (#1209)
860 - Service Participant, Reactors, and signals (#1206, #1215, #1231)
861 - Modeling SDK Eclipse plugins updated to latest Eclipse (#1222)
862 - Secure discovery for unregister/dispose (#1225, #1227, #1232)
863 - InstanceState and reactor interceptor with reader data lifecycle (#1237, #1248)
864 - Serializer: input validity check when aligning (#1239)
865 - Transport framework improvements (#1249)
866 - Use monotonic time for relative timeouts on platforms that support it (#1272)
867 - SPDP: start counter at a random value and detect bad sequence numbers (#1274)
869 ## Version 3.13.2 of OpenDDS
871 ### Fixes:
872 - Service Participant, Transport Registry, RTPS libs updated to support certain Restart scenarios (#1081)
873 - Wrong entity_refs_ counter when deleting data reader in the TopicDescriptionImpl (#936)
874 - Add an include required for std::back_inserter (#965)
875 - DDS Security on VxWorks7 (#968)
876 - Fix unregister with nil handle (#1064)
877 - Install with java: Fix classpath for i2jrt.jar and i2jrt_compact.jar in .mpbs (#1079)
879 ## Version 3.13.1 of OpenDDS
881 ### Fixes:
882 - rtps_udp: enhanced generation of gaps for durable data (#1001)
883 - rtps_udp transport: improved handling of socket errors (#1002)
884 - Fixed a bug in contains_entity for DataReaders (#944)
885 - Fixed set_qos method for not enabled DataWriters and DataReaders (#955)
886 - Fixed requiring Conditions to be cleaned up in DataReaders (#958)
887 - Fixed a locking issue in transport with Security enabled (#933)
888 - Fixed total_count fields in on Offered/RequestedDeadlineMissed (#969)
889 - Security: Fixing uninitialized values reported by valgrind
890 - Support static builds with DDS Security enabled (#967)
891 - Fixing build when no-builtin-topic and security flags are both configured
892 - Configure: fixed detection of MSVC compiler versions
893 - Configure on Windows: allow Perl to be located in a directory with spaces
894 - Configure: follow redirects if using curl to download (#1025)
895 - Configure: Android support (#964)
896 - Configure: added for --host-tools option (part of #968)
897 - Make install awareness of user_macros.GNU and improved Java bindings support (#1022)
899 ## Version 3.13 of OpenDDS
901 ### Additions:
902 - Includes a beta implementation of the OMG DDS Security 1.1 specification
903 - Monitor library can be enabled with -DCPSMonitor 1 or ini file
904 - Updated Wireshark dissector now supports Wireshark version 2.x
905 - MultiTopic: use Topic's QoS when creating constituent data readers
907 ### Fixes:
908 - Memory management improvements
909 - Command-line argument -DCPSRTISerialization takes a 0/1 parameter
910 - Further refined fix for RtpsUdpDataLink::remove_sample locking
911 - Improved Java bindings build process when using GNU Make
912 - RTPS interoperability fixes from testing at OMG conferences
913 - OpenDDS can be completely shut down and restarted within a process
914 - Improved code generation for IDL unions, including in Javascript/V8
915 - Fix for in-process messaging in FACE TSS (PR #819)
916 - Fix for ReadCondition leak in OpenDDS::FaceTSS::receive_message (PR #832)
917 - TCP reconnect enhancements
918 - Removed unused sequence number tracking in DataReaderImpl
919 - Fixed a memory leak in content filtering on the subscriber side
920 - rtps_udp transport: improved handling of socket errors
921 - RTPS discovery: avoid skipping sequence numbers in SEDP
922 - InfoRepo: improved persistence with Built-in Topics
924 ### Notes:
925 - The contrib directory, which contained unmaintained code, was removed
927 ## Version 3.12 of OpenDDS
929 ### Fixes:
930 - RtpsUdpDataLink::remove_sample locking
931 - track latency only when needed for LatencyBudget QoS or statistics
932 - corrected counters for sample rejected/lost liveliness lost total_count_change
933 - get_key_value() corrected return value for errors
934 - setting DCPSBitTransportPort without DCPSBitTransportIPAddress had no effect
935 - writer side association wasn't removed after the the reader had unsubscribed
936 - memory leaks
937 - issue with unregistered instances when deleting DataWriter
938 - problem with multiple transport instances in a single transport config
939 - EntityFactory QoS didn't enable child objects when the factory was enabled
941 ### Notes:
942 - configure supports ACE+TAO from DOCGroup repository as an option
943 - configure improvements for using external ACE+TAO, cross-compiling on Windows
944 - coverity fixes
945 - improved Bench performance test
946 - Docker Hub now has an OpenDDS docker image
948 ## Version 3.11 of OpenDDS
950 ### Additions:
951 - Support for Visual Studio 2017
952 - Content-filter expressions can now use 64-bit integer literals
953 - tcp transport has a new wait_for_acknowledgements implementation
954 - DataWriter's HISTORY QoS processing now allows replacing old samples with new ones without blocking
956 ### Fixes:
957 - Improved robustness of DEADLINE QoS processing
958 - Uses of content-filter expressions are now checked for the correct number of parameters
959 - Fixed versioned namespace support
960 - Improved support for IPv6
961 - Improved robustness of rtps_udp transport, especially when used with static discovery
962 - Use of the constant PARTICIPANT_QOS_DEFAULT no longer initializes the domain participant factory
963 - Bug fixes in the OpenDDS Wireshark dissector (for sample dissection)
965 ### Notes:
966 - The QoS XML Handler library is now decoupled from DDS4CCM, it requires xerces
968 ## Version 3.10 of OpenDDS
970 ### Additions:
971 - Added support for versioned namespaces
972 - Reworked TypeSupport implementation in order to reduce exposure of internal headers to user code
973 - Added `read/take_instance_w_condition` (not in DDS spec)
974 - Time Based Filter QoS: fixed GitHub issue #268, samples can now be held and delivered after the timeout
975 - C\++11 updates to the ishapes example: make use of C++11 `shared_ptr` and `to_string` instead of using boost
976 - When C++11 is enabled, use noexcept(false) where necessary
977 - Extended TypeSupport to allow unregistering of types from a domain participant (not in DDS spec)
978 - RtpsDiscovery: allow config to specify which interface's MAC addr is used in GUIDs
979 - Wireshark dissector updates: support for more IDL constructs in data sample dissection
981 ### Fixes:
982 - Liveliness QoS: fixed incorrect "liveliness lost" for automatic liveliness with sporadic writers
983 - Fixed RTPS ParticipantMessageData entityIds used by automatic and by-participant liveliness
984 - Fixed make install problem when DESTDIR is specified
985 - Allow fallback to next transport implementation when active side fails to connect using the first one
986 - Updated `TypeSupport::get_type_name()` to match the DDS spec
988 ### Stability Improvements:
989 - Fixed many issues included in recent Coverity Scan defect reports
990 - Fixed a few reference counting issues in internal classes
992 ### Notes:
993 - This is the final version we will test with TAO 2.0a, please upgrade to a newer TAO (see README.md)
995 ## Version 3.9 of OpenDDS
997 - Updated how DataWriter QoS is interpreted by internal data structures:
998   - RESOURCE\_LIMITS.max\_samples\_per\_instance controls total samples that can be
999     stored per instance, independent of HISTORY
1000   - HISTORY.depth controls number of samples (per instance) that will be made
1001     available to late-joining readers if DURABILITY is enabled
1002     - KEEP\_ALL history uses max\_samples\_per\_instance as its depth
1003   - WriteDataContainer is more eager to remove samples that are no longer needed
1004   - WriteDataContainer will not remove samples that are required to implement
1005     DURABILITY, hence if RELIABILITY is enabled this can block a write() just
1006     like other "no resource available" scenarios
1008 - Fixed an RTPS interoperability issue with the new ParticipantMessageData
1009   messages (used for liveliness)
1011 - Enhanced RTPS support for DURABILITY QoS enabling faster reader/writer
1012   associations when DURABILITY is in use (set to TRANSIENT\_LOCAL)
1014 - RTPS Discovery has a new option "SpdpLocalAddress" which can be used to
1015   bind SPDP's socket to a particular network interface
1017 - InfoRepo discovery will use TAO's BiDir GIOP feature to reduce number
1018   of sockets needed (disable with -DCPSBidirGIOP 0)
1020 - Intermediate Type Language (itl), a helper library used by the OpenDDS
1021   wireshark dissector, is now included in the source tree in
1022   tools/IntermediateTypeLang.  itl depends on the 3rd-pary lib rapidjson.
1023   When running the configure script, use --rapidjson=<location>
1025 - Corrected makefile generation for Java bindings with IDL bounded strings
1027 - Fixed a bug where some header files would be missing from "make install"
1029 - "make install" now works with Java bindings
1031 - Configure script: now supports FreeBSD, Mac OS X El Capitan,
1032   and cross-compiles for Linux targets (Raspberry Pi and Intel Edison tested).
1033   The configure script attempts to find the JDK if invoked with --java.
1035 - cross-compilation now works with Java bindings, including use of JRE compact1
1039 ## Version 3.8 of OpenDDS
1041 - Improved support for Safety Profile
1043 - OpenDDS multicast transport (reliable mode) now guarantees in-order delivery
1045 - Added a "default address" configuration parameter that sets an overall default
1046   for binding to a specific network interface
1048 - Fixed bugs in transport framework, udp transport, InfoRepo discovery, static
1049   discovery, and the Liveliness and Durability QoS policies
1052 ## Version 3.7 of OpenDDS
1054 ### Additions:
1055 - Implements FACE Transport Services API v2.1, FACE safety base and
1056   FACE safety extended profiles (Future Airborne Capability Environment).
1057 - Implements DDS 1.4 and RTPS 2.2.
1058 - Support allocations from memory pool in safety profile builds.  Introduced
1059   standard library containers and strings, as well as TAO sequences that
1060   allocate from this pool.
1061 - To support FACE TS, the IDL struct DDS::SampleInfo has a new field
1062   opendds\_reserved\_publication\_seq as an extension to the DDS specification.
1063 - Updated opendds\_idl for FACE support, moving some of the code-generation
1064   from tao\_idl to opendds\_idl when targeting FACE TS.
1065 - Support IDL fixed type inside of DCPS\_DATA\_TYPE (used with FACE TS).
1066 - Type-specific DataWriterImpl and DataReaderImpl are now templates.  Code
1067   generation now introduces a typedef of these.
1068 - Content filtering now supports modulus (MOD) operator as an extension.
1069 - Added a static (configuration-based) discovery mechanism.
1070 - RTPS Discovery is now supported when OpenDDS is built without built-in topics.
1071 - RTPS Discovery has a new configuration parameter SedpLocalAddress which
1072   configures the rtps\_udp transport used internally by discovery in the same way
1073   that local\_address configures a user-created rtps\_udp transport instance.
1074 - Support non-default liveliness QOS in rtps\_udp transport.
1075 - Support wait\_for\_acknowledgements in rtps\_udp transport.
1076 - Support command line option -DCPSRTISerialization when integrating with RTI
1077   DDS using RTPS, to account for a different serialization algorithm.
1078 - Configure script handles some cross-compile builds and safety profile.
1079 - Support for new Visual Studio compilers (vc11, vc12, and vc14).
1080 - Support for clang builds on Mac OS X.
1081 - Removed support for old GCC compilers (<= 3.3).
1082 - opendds\_idl command-line option -Gitl is a replacement for -Gws.  Wireshark
1083   dissector now reads ITL files, rather than .ini files.
1085 ### Fixes:
1086 - Fixed many tests for minimum profile builds.
1087 - Enforced correct behavior of a reliable data writer when history QoS
1088   is set to KEEP\_LAST with depth=1.
1089 - opendds\_idl can now be specified in user\_macros.GNU instead of always
1090   assuming it is in $DDS\_ROOT/bin (for -type gnuace builds).
1091 - Fixed initial IPv6 support in windows builds.
1092 - Fixed disassociate handling of local entities on loopback interface.
1093 - Corrected wait\_for\_acknowedgements for non-reliable writers to return
1094   success immediately.
1095 - Allow disassociating readers to finish processing messages from active writer
1096   before removing.
1097 - Remove TcpDataLink from DataLinkSet when connect() fails.  Previously, the
1098   datalink would remain and would be seen as a fully-connected datalink by new
1099   associations.
1100 - DCPSTransportDebugLevel 1 messages are now association-oriented.
1101 - Fixed durable resend out-of-order handling for rtps\_udp transport.
1102 - Fixed handling of acknowledgements during shutdown of rtps\_udp data link.
1103 - RTPS Discovery now ignores 'RTPX' messages seen during RTI integration.
1104 - Dissection of unions in wireshark dissector (requires ITL).
1105 - Corrected reference counting scheme for Recorder and Replayer objects:
1106   the reference-counted handle types changed from \_rch to \_var.
1108 ### Notes:
1109 - OCI no longer builds with vc71, vc8, and GCC 4.1.1.  If you require support
1110   of these older platforms contact sales@ociweb.com.
1111 - The project repository is now at https://github.com/objectcomputing/OpenDDS
1114 ## Version 3.6 of OpenDDS
1116 ### Notes:
1117 - The discovery framework of OpenDDS has been refactored to be more
1118   asynchronous.  This should make discovery faster and more reliable
1119   for both publishing and subscribing clients, regardless of the
1120   discovery mechanism used (RTPS or InfoRepo).
1122 - DataWriters now release locks more quickly than before. This allows the
1123   transport to be available to more threads when compared to 3.5.1.
1125 - Improved DDS specification compliance with regards to reliability,
1126   resource limits, and history qos settings.  Specifically, reliable
1127   data writers may block for max\_blocking\_time and potentially return
1128   DDS::RETCODE\_TIMEOUT in situations where they would have simply
1129   written the data in older version of OpenDDS.  The new behavior
1130   is required by the DDS specification, see section 2.2.2.4.2.11
1131   of the version 1.4 specification for details.  This change affects
1132   various operations of the data writer interface including the
1133   write and register operations.
1135 ### Additions:
1136 - The wireshark dissector now supports wireshark versions 1.8.x, 1.10.x,
1137   1.12.x, and 1.99.1.
1139 - The modeling framework now support Eclipse 4.4 (Luna) and GMF 3.1.x
1141 - Added a public\_address option for the tcp transport.  This option
1142   allows a tcp transport instance to listen on one address (local\_address)
1143   while advertising another address (public\_address) to discovery.
1144   This feature was used to allow a proxy process between the subscriber
1145   and publisher in the TcpReconnect test, but may also be useful in
1146   other deployment scenarios, especially using OpenDDS through a firewall.
1148 ### Fixes:
1149 - There were a number of concurrency and thread utilization improvements.
1150   These changes fixed a number of threading issues as well as improving
1151   the efficiency of publication.
1153 - Fixed some issues with RTPS discovery.
1155 - Fixed a number of issues related to the reconnect functionality of
1156   the tcp transport.
1158 - Fixed some bugs in the OpenDDS IPv6 support.
1160 - Eliminate duplicate samples received during durable resend.
1162 - Fixed memory leak at shutdown time in modeling library.
1164 ### Tests:
1165 - Many updates to make test results more complete and deterministic.
1167 - Added a TcpReconnect test that exercised the ability of the tcp
1168   transport to seamlessly reconnect OpenDDS clients when the transport
1169   layer drops a connection.
1171 - Added a WriteDataContainer unit test to verify data writer memory
1172   management compliance with the DDS specification.
1174 - Added a PubScalability test that was used to test association and
1175   publications with large numbers of subscribers.
1177 - Added a packet reassembly unit test.
1180 ## Version 3.5.1 of OpenDDS
1182 ### Notes:
1184   - Due to addition control messages in the 3.5.1 release, mixing 3.5.0
1185   and 3.5.1 releases should work properly, but the 3.5.0 data readers can emit
1186   the following error message when associating with a durable 3.5.1 data
1187   writer:
1188     ERROR: DataReaderImpl::data\_received unexpected message\_id = 11
1189     Upgrade all endpoints to 3.5.1 to remove this error message.
1191 ### Additions:
1193 - Support later (>= 4.7) versions of GCC compilers, and later (>= 2.0a)
1194   builds of TAO. Configure script now downloads 2.2a by default.
1196 - Added IDL compiler support for typedef of string fields within unions.
1197   Added Java IDL compiler support for struct forward declarations.
1199 - Updated UML design diagrams to reflect current code base.
1201 ### Fixes:
1203 - DCPSInfoRepo no longer informs a subscriber about a crashed or killed
1204   publisher.  This made associations of current publishers and subscribers
1205   delayed until timeout was reached.
1207 - Fixed deadlock condition in send\_delayed\_notifications() resulting from
1208   multiple datawriters.
1210 - Fixed deadlock in DataLinkSet::send\_control().
1212 - Fixed deadlock in WaitSet::wait() and DataReaderImpl::data\_received().
1214 - Fixed multicast transport with multiple participants in a single process.
1216 - Fixed parsing of -ReassociateDelay argument by DCPSInfoRepo.
1218 - Fixed crash of long-lived zero-copy sequence when it is destroyed and
1219   crash of zero-copy sequence accessing released instances.
1221 - Fixed unprotected access to DataWriterImpl::reader\_info\_,  and
1222   TransportSendStrategy::pkt\_chain\_.
1224 - Fixed multiple RTPS crashes when participant is being deleted.
1226 - Fixed RTPS crash when a data reader is being deleted.
1228 - Fixed problem for non-unique repo ids for multicast when multiple
1229   (non-federated) DCPSInfoRepos are used on the same network.
1231 - Fixed crash caused by back-pressure in transport causing the most recent
1232   sample for an instance to be dropped.
1234 - Fixed error in reconstruction logic for fragmentation of udp and multicast
1235   transport packets.
1237 - Fixed PublisherImpl and SubscriberImpl to properly set a DataWriterImpl
1238   or DataReaderImpl entity's deleted flag during deletion to allow
1239   association checks to properly identify entities that are being deleted and
1240   not proceed in association.
1242 - Fixed problem for persisted DCPSInfoRepo where persisted participants
1243   were never dissociating.
1245 - Fixed activity improperly occuring when a partipant is being deleted
1246   that caused pure virtual function calls. In one case, waiting now takes
1247   place during deletion of a data writer until all control messages sent during
1248   unregistration of instances are account for. In another case fixed so
1249   TransportSendControlElement will delete itself before it reports to the listener
1250   that the message has been delivered/dropped.
1252 ### Tests:
1254 - Many updates to make test results more deterministic.
1256 - Added Reliability test.
1258 - Added ManyToMany test to test associations with additional participants,
1259   publishers, subcribers, data readers and data writers.
1261 - Added PersistentInfoRepo test.
1263 - Restored thrasher medium and high test cases.
1265 - Rewrite Priority test to make it verify proper QOS functionality.
1267 - Rewrite LargeSample test to make it verify message contents are as expected.
1270 ## Version 3.5 of OpenDDS
1272 - Updates to RTPS support resulting from both interoperability
1273   testing (March 2013 OMG meeting) and user feedback.
1275 - Fixed a bug in the DataReader relating to the Deadline timer.
1277 - Generated TypeSupportImpl classes now contain nested typedefs that
1278   facilitate programming with C++ templates.
1279   See tests/DCPS/ManyTopicTest for an example of usage.
1281 - Added config options to bind RTPS-related multicast sockets to
1282   specific network interfaces.  See the ChangeLog for details.
1284 - Fixed an opendds\_idl code generated bug when typedefs of basic
1285   types are used as fields of structs.
1287 - Corrected a number of other bugs related to discovery and scaling.
1290 ## Version 3.4.1 of OpenDDS
1292 - Added a new option to opendds\_idl, -Wb,v8, which generates type support
1293   for copying DCPS structs from C++ objects to JavaScript objects -- requires
1294   the V8 JavaScript engine.  See https://npmjs.org/package/opendds for OpenDDS
1295   integration with Node.js.
1297 - Fixed a bug in serialization with misaligned reads.  It only impacts
1298   certain platforms with strict alignment requirements such as SPARC/SunCC.
1300 - Clang 3.2 is now a supported compiler.
1302 - Fixed a bug in the rtps\_udp transport, in certain cases an invalid Gap
1303   submessage was sent which can result in data samples not being received.
1306 ## Version 3.4 of OpenDDS
1308 - Added new OpenDDS-specific APIs for sending and receiving untyped data,
1309   (does not require code generation from IDL data structures).  See the
1310   Recorder and Replayer classes and the test in tests/DCPS/RecorderReplayer.
1312 - Implemented the ability to send fragmented data with the rtps\_udp transport.
1314 - Fixed a bug in copy\_from\_topic\_qos(): the Ownership policy is now copied.
1316 - The optimization of publisher-side content filtering now applies to durable
1317   data in addition to newly written data samples.
1319 - As with versions before 3.2, the DCPSInfoRepo object reference is allowed to
1320   fail to resolve.  If it fails, the current operation can be re-tried at a
1321   later time when the DCPSInfoRepo server is available.
1323 - Added a new option for per-domain default transport configurations.
1325 - Corrected IDL string constants for QoS policy names which were wrong in the
1326   DDS spec (GROUPDATA and TRANSPORTPRIORITY ...\_QOS\_POLICY\_NAME).  These are
1327   not used anywhere in OpenDDS.
1330 ## Version 3.3 of OpenDDS
1332 - If an instance of a transport can't be set up, an exception is thrown so
1333   that different configuration parameters can be attempted by the user.
1335 - Corrected the mapping of Priority QoS to DiffServ CodePoint DS subfield.
1337 - For thread-per-connection send, if no explicit scheduling policy has been
1338   configured, OpenDDS will now inherit the current thread's policy/priority.
1340 - Fixed a possible deadlock of RTPS discovery on Windows.
1342 - Added non-blocking I/O setting to tcp sockets, VxWorks 6.4 required it.
1344 - Fixed various bugs in deadline and ownership QoS.
1346 - Improved multicast transport's robustness during handshaking when many
1347   connections are set up at the same time, and also allow for multicast
1348   to skip over received datagrams that don't have the expected header values.
1350 - Multicast transport configuration can now specify a local network interface
1351   which will be used to join the multicast group.
1353 - The support for the generation of the DDS4CCM needed LEM library has been
1354   moved to CIAO DDS4CCM. This removed the optional dependency on CIAO.
1357 ## Version 3.2 of OpenDDS
1359 - Added a new transport type: Shared Memory
1360   Use shmem as the short name (in place of "tcp", "udp", "multicast", etc.).
1361   See dds/DCPS/transport/shmem/ShmemInst.h for configurable parameters.
1363 - The udp transport now supports setting IP DSCP (DiffServ CodePoint) based on
1364   the writer's TRANSPORT\_PRIORITY QoS value.
1366 - Fixed bugs in udp and multicast transports, including reassembly of fragments.
1368 - Made several changes in order to support CIAO 1.1.2 with DDS4CCM. From
1369   this version DDS4CCM has support for OpenDDS as DDS vendor. Check the CIAO
1370   release notes for details on what has been ported.
1372 - Added new QOS\_XML library with which QoS settings can be done through an XML
1373   file. Used at this moment by the CIAO DDS4CCM implementation.
1375 - Implemented rejection of samples due to exceeding max\_instances and
1376   max\_samples.
1378 - Made the RTPS discovery and transport code more robust.
1380 - Refactored InfoRepo-based discovery into its own library. This reduces the
1381   dependency on TAO such that certain TAO libraries will no longer be loaded
1382   unless they are needed for InfoRepo-based discovery.
1384 - For IDL files that only contain local interfaces, the generation of
1385   server-side TAO code was suppressed. The suppression applies to DdsDcps*.idl.
1386   This means, for example, that code that was including DdsDcpsSubscriptionS.h
1387   needs to be changed to include DdsDcpsSubscriptionC.h.
1389 - To reduce library size, OpenDDS can now be conditionally compiled to exclude
1390   profiles discussed in the Compliance section of the DDS spec. See
1391   section 1.3.3 in the Developer's Guide for more information.
1394 ## Version 3.1 of OpenDDS
1396 - This release includes the initial implementation of DDS Interoperability
1397   in OpenDDS, using the DDS-RTPS spec v2.1 from the OMG (formal/2010-11-01).
1399   RTPS support in OpenDDS consists of two main features:
1401     - A pluggable transport implementation, known as "rtps\_udp" because it
1402       implements the UDP PSM of the DDS-RTPS spec.  This is a peer of the
1403       existing OpenDDS-native transports: "tcp", "udp", and "multicast".
1405     - A new discovery mechanism for RTPS's distributed discovery.  This can
1406       replace the DCPSInfoRepo in existing OpenDDS deployments.
1408   Neither of these features is enabled by default.  See the OpenDDS Developer's
1409   Guide chapter 7 for configuration details.  Also, note that not every OpenDDS
1410   feature (for example, certain QoS values) is supported with RTPS in the
1411   initial implementation.  These exceptions are documented in the Developer's
1412   Guide sections 7.3.3 and 7.4.5.5.
1414 - Changed set\_qos() of DataWriter, DataReader, Publisher and Subscriber so
1415   when provided a QoS value incompatible with an existing association, that the
1416   value will be changed, association will be broken, and RETCODE\_OK returned.
1417   Previously, if any association would be broken, no change would take place
1418   and false would be returned.  New version is compatible with DDS spec.
1420 - OpenDDS udp transport enhancements:
1421     - Added send\_buffer\_size and rcv\_buffer\_size parameters to the udp
1422       transport configuration.
1423     - The default local address will use DNS host names instead of IP
1424       addresses.
1425     - Added support for IPv6 when ACE is built with IPv6 support.
1427 - OpenDDS multicast transport enhancements:
1428     - Added a configuration parameter "async\_send" (defaults to false)
1429       that will send multicast datagrams using async I/O if supported
1430       by the platform.  As of now this is only implemented on Windows.
1431       It could be extended to Unix aio\_*() functions in theory, but these
1432       are generally not preferred and the regular socket functions are
1433       sufficiently fast.
1435 - Removed DataReaderQosExt from DdsDcpsSubscriptionExt.idl.  This was only
1436   being used to provide a non-standard-compliant backwards-compatibility
1437   setting to get the DURABILITY QoS behavior matching that of OpenDDS v1.2
1438   and earlier.  It was not being used in any OpenDDS code.
1441 ## Version 3.0.1 of OpenDDS
1443 - The DCPSInfoRepo reassociates Built in Topic connections for existing
1444   datareaders and datawriters when restarted from persistence.
1446 - The opendds\_idl compiler will now print a warning about not including TAO's
1447   orb.idl file when a file named orb.idl is included.
1449 - Fixed a bug where the timeout for passive\_connect\_duration was ignored.
1451 - Fixed multiple bugs in fragmentation/reassembly used for udp and multicast.
1453 - Fixed multicast loopback and session re-use problems.
1455 - Fixed a bug with memory management for the TransportCustomizedElement
1456   used in publisher-side content filtering.
1458 - New example Messenger.minimal - which is like messenger, but streamlined
1459   for new users to understand the whole easier.
1462 ## Version 3.0 of OpenDDS
1464 - Transport configuration has undergone a major redesign and any existing
1465   transport application code or transport configuration files need to be
1466   updated.  See the Developer's Guide for details of the design.  See
1467   $DDS\_ROOT/docs/OpenDDS\_3.0\_Transition.txt for a description on how
1468   to migrate your applications to the OpenDDS 3.0 design.  As a part of
1469   this design OpenDDS gains the following capabilities:
1470     - Most applications can do all transport configuration via
1471       configuration files (no transport source code required).
1472     - Individual writers and readers can now support multiple
1473       transports.
1475 - The simpleTcp transport was renamed to tcp (the directory containing
1476   its source code was also renamed).
1478 - The udp transport no longer required a local\_address when being
1479   configured.  If not specified, the property defaults to a value
1480   selected by the operating system (similar to the tcp transport).
1482 - Details of the OpenDDS Modeling SDK changes in this release are documented
1483   in the Eclipse-based help, see OpenDDS Modeling SDK Guide -> Getting
1484   Started -> Introduction to the OpenDDS Modeling SDK.
1486 - First release of OpenDDS Real-Time Data (RTD) for Excel an Excel Add-in
1487   and RTD Server.  It allows visualization of an operating OpenDDS system
1488   from within Excel. It gives a tree view of a repository that mirrors the
1489   stand-alone OpenDDS Monitor application's tree view, but with the
1490   additional capabilities to automatically restart monitoring of a repository
1491   when a saved workbook is opened, monitoring multiple repositories
1492   simultaneously, and snapshot a repository monitor tree view.
1494 - Wireshark dissector improvements include removal of the restriction
1495   that inforepo IOR be placed in a special file.  Dissector config
1496   files can now be generated by opendds\_idl.
1498 - The monitor tool has a new view which is an alternate to the Graphviz
1499   view.  The Node view uses Qt gui elements to model the OpenDDS system.
1500   Users can manipulate Node view graphs before saving them to PNG files.
1502 ## NEWS for Previous Major Versions
1504 - NEWS for OpenDDS release 2.X versions are archived in [docs/history/NEWS-2.md](docs/history/NEWS-2.md)
1505 - NEWS for OpenDDS release 1.X versions are archived in [docs/history/NEWS-1.md](docs/history/NEWS-1.md)
1506 - NEWS for OpenDDS release 0.X versions are archived in [docs/history/NEWS-0.md](docs/history/NEWS-0.md)