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