Release Notes
- 1. System Requirements
- 2. Compatibility
- 3. What’s New in 7.7.0
- 3.1. Discovery
- 3.2. Performance and Scalability
- 3.2.1. Significant memory footprint reduction for Connext applications
- 3.2.2. Reduced default metrics set in Monitoring Library 2.0, minimizing bandwidth utilization
- 3.2.3. Improved discovery and reduced overhead with Collector Service
- 3.2.4. Improved write execution time when dds.data_writer.history.purge_samples_after_acknowledgment set to 1
- 3.2.5. Durable Writer History performance improvements when application-level acknowledgments enabled
- 3.2.6. Priority inheritance used when creating semaphores in Linux
- 3.2.7. Improved responsiveness to remote reader configuration updates
- 3.2.8. Performance improvement loading XML QoS profiles
- 3.2.9. Improved performance of Dynamic Data-to-text format functions
- 3.2.10. DomainParticipants rejoin the system faster
- 3.2.11. Disable reliable writer communication with best effort reader to improve performance and memory usage
- 3.2.12. Improve performance of durable DataWriters when sending data to late-joining DataReaders, using new property
- 3.3. APIs
- 3.3.1. New resource limit gives more control over memory allocation
- 3.3.2. New APIs allow your application code to check for type assignability issues
- 3.3.3. Option to lazily allocate batching resources in DataReaders, reducing unnecessary memory usage
- 3.3.4. Python API supports latest version, Python 3.13, and no longer supports Python 3.8 and 3.9
- 3.4. Usability
- 3.4.1. Monotonic clock as new default enhances robustness against system clock changes
- 3.4.2. Increased maximum length of command-line parameters for rtiddsspy
- 3.4.3. Built-in QoS Snippets added to easily enable or disable TypeObject v1 and TypeObject v2
- 3.4.4. Flexible control over Monitoring Library 2.0 enablement using new environment variable
- 3.5. Debuggability
- 3.5.1. Monitoring Library 2.0 now enabled by default under specific conditions, making it easier to use remote debugging
- 3.5.2. Monitoring Library 2.0 security enforced when using an RTI security plugin, elevating security standards
- 3.5.3. Improved diagnostics through extended SQLite error codes in durable writer and reader state databases
- 3.5.4. Debug symbols for release libraries now provided for Linux platforms
- 3.6. OMG Specification Compliance
- 3.7. DDS Spy
- 3.7.1. Improved transport configuration in DDS Spy with alias-based option
- 3.7.2. Support for Real-Time WAN Transport in DDS Spy
- 3.7.3. Support for participant discovery events in DDS Spy
- 3.7.4. DDS Spy option for printing Publisher and Subscriber Object IDs for easier diagnostics
- 3.7.5. New DDS Spy option for QoS inspection to help identify incompatibilities that prevent communication
- 3.7.6. New DDS Spy options for type inspection
- 3.7.7. DDS Spy enhanced source locator display with IPv6 and shared memory support
- 3.8. Deprecations and Removals
- 3.9. Third-Party Software Changes
- 3.10. Other
- 3.10.1. Improved isolation for observability traffic
- 3.10.2. Aliases for enabled_transport QoS no longer require case-sensitive matching
- 3.10.3. Disallow unrealistic values of polling_period, to avoid errors collecting data for Observability Framework
- 3.10.4. Allow disabling signal-blocking on Connext Threads for POSIX platforms
- 3.10.5. Convert DynamicType (or TypeCode) to JSON schema, for enhanced interoperability
- 3.10.6. Ensure compatibility with other DDS vendors using updated Compatibility.OtherDDSVendor.Enable QoS snippet
- 3.10.7. Added operation to retrieve remaining time until license expiration
- 4. What’s Fixed in 7.7.0
- 4.1. Serialization and Deserialization
- 4.2. Usability
- 4.2.1. [Minor] Lack of allowed multicast interfaces did not cause Connext to ignore multicast addresses
- 4.2.2. [Minor] Error when configuring AllocationSettings with initial equals to maximum
- 4.2.3. [Minor] Monitoring Library 2.0 required a license when used in DDS Ping or DDS Spy with license-managed bundles
- 4.3. Transports
- 4.3.1. [Critical] Applications using Real-Time WAN may have stopped communicating after IP mobility events
- 4.3.2. [Major] IP mobility functionality did not detect when network interfaces gained multicast capability
- 4.3.3. [Minor] Zero-Copy DataReaders did not filter out redundant samples
- 4.3.4. [Minor] Incorrect information in shared memory log message when out of resources
- 4.3.5. [Minor] DomainParticipant failed to be enabled if a network interface with UDPv4 address 0.0.0.0 was detected
- 4.4. Reliability Protocol and Wire Representation
- 4.4.1. [Critical] Sample may not have been delivered to a DataReader in a Required Subscription
- 4.4.2. [Critical] Samples lost if new DataReader created on same topic and DomainParticipant as existing DataReaders using async publishing
- 4.4.3. [Critical] Sample may not have been delivered to a DataReader using application-level acknowledgments
- 4.4.4. [Major] Unexpected precondition error sending repair to DataReaders with 16 locators
- 4.5. Performance and Scalability
- 4.6. Debuggability
- 4.6.1. [Minor] polling_period was not required to be a positive value
- 4.6.2. [Minor] take_discovery_snapshot may have provided inaccurate information for remote endpoints
- 4.6.3. [Minor] Incorrect timestamp in log messages with microseconds higher than 500000
- 4.6.4. [Trivial] Backtraces did not correctly print addresses higher than 0xFFFFFFFF
- 4.7. TopicQueries
- 4.8. Logging
- 4.9. APIs (C or Traditional C++)
- 4.10. APIs (Modern C++ API)
- 4.10.1. [Critical] Implicit destruction of Modern C++ entities inside their Listeners
- 4.10.2. [Major] Excessive memory allocation in rti::core::xtypes::convert function
- 4.10.3. [Major] find_datawriters/readers APIs didn’t work with XML-Based Application Creation
- 4.10.4. [Minor] Incorrect implementation of BuiltinTopicReaderResourceLimits default constructor
- 4.10.5. [Minor] Missing Modern C++ Distributed Logger import library on Windows
- 4.11. APIs (Java)
- 4.12. APIs (C# API)
- 4.13. APIs (Python)
- 4.14. Dynamic Data
- 4.15. XML Configuration
- 4.16. Entities
- 4.17. Crashes
- 4.17.1. [Critical] Possible crash if configuration of Monitoring Library 2.0 was remotely modified while an entity was being destroyed
- 4.17.2. [Critical] Crash when dividing by zero in XML type definition
- 4.17.3. [Critical] DataWriter using Durable Writer History and not using Required Subscription crashed when communicating with a DataReader with a role_name
- 4.17.4. [Critical] Possible crash when deleting an Entity while Monitoring Library 2.0 was enabled
- 4.17.5. [Critical] Crash when concurrently modifying QoS profiles with Monitoring QoS policy set in default factory profile
- 4.17.6. [Critical] Crash when using DDS_RECOVER_INSTANCE_STATE_CONSISTENCY and multiple writers updating the same instances
- 4.17.7. [Critical] Segmentation fault in DataReader that was created disabled when using instance state consistency
- 4.17.8. [Major] Precondition added to rti::flat::StringBuilder::set_string() and rti::flat::PrimitiveSequenceBuilder<T>::add_n()
- 4.18. Hangs
- 4.19. Memory Leaks/Growth
- 4.19.1. [Critical] Memory use by Monitoring Library 2.0 may have grown unbounded over time
- 4.19.2. [Critical] Unbounded memory growth when setting receive_window_size on DataReader
- 4.19.3. [Critical] Memory leak in DataWriter when matching reliable DataReader
- 4.19.4. [Critical] History depth not honored after instance transitioned from NOT_ALIVE to ALIVE state
- 4.19.5. [Major] Memory leak when UDP receive socket creation failed
- 4.19.6. [Major] Memory leak in Monitoring Library 2.0 when mixing library types
- 4.19.7. [Minor] Unbounded memory growth in Modern C++ when creating and deleting DynamicData topics of the same type
- 4.19.8. [Minor] Memory leak when disabling Monitoring Library 2.0 in Traditional C++
- 4.20. Data Corruption
- 4.20.1. [Critical] Data corruption in Monitoring Library 2.0 due to race condition during event and log processing
- 4.20.2. [Major] Monitoring Library 2.0 failed to create dependent Entities when type_object_max_serialized_length and type_code_max_serialized_length were 0 *
- 4.20.3. [Minor] Converting a GUID_t to a BuitinTopicKey_t had issues when high bit was set
- 4.21. OMG Specification Compliance
- 4.22. Interoperability
- 4.23. Vulnerabilities
- 4.23.1. [Critical] Potential unauthorized access to instance information in Connext applications
- 4.23.2. [Critical] Potential Denial of Service in Connext applications when parsing XML files
- 4.23.3. [Critical] Potential heap buffer write overflow and memory leak in Connext applications when parsing an XML type
- 4.23.4. [Critical] Potential heap buffer read overflow in Connext applications when parsing an XML type
- 4.23.5. [Critical] Potential out-of-bounds write in Connext when using Durable Writer History
- 4.23.6. [Critical] Potential external entity attack (XXE) in Connext applications when parsing malicious XML files
- 4.23.7. [Critical] Potential heap-based buffer overflow when parsing malicious XML configuration files
- 4.23.8. [Critical] Potential out-of-bounds read in Core Libraries on invalid XML constant expression
- 4.24. Other
- 5. Previous Releases
- 5.1. What’s New in 7.6.0
- 5.1.1. Updated default heartbeat periods for faster repairs of lost samples
- 5.1.2. DNS tracker now enabled by default to reduce chance of discovery problems when using hostnames in peer lists
- 5.1.3. Extensible Types compliance mask added to all APIs
- 5.1.4. Updated code generation for 8-bit integer types
- 5.1.5. Application no longer fails if platform does not support SOCKET_BUFFER_SIZE_OS_MAX
- 5.1.6. Improved throughput when disable_positive_acks field in DataReaderProtocol QoS policy set to TRUE
- 5.1.7. New metadata fields for custom filters in modern C++, Java, and Python
- 5.1.8. TCP Transport now uses POLL socket monitoring by default on Linux systems, offering significantly better responsiveness
- 5.1.9. Decreased bandwidth usage when not actively debugging remote systems
- 5.1.10. New built-in profile makes it easier to monitor Connext applications across geographically separated networks
- 5.1.11. Third-Party Software Changes
- 5.2. What’s Fixed in 7.6.0
- 5.2.1. Discovery
- 5.2.2. Serialization and Deserialization
- 5.2.3. Usability
- 5.2.4. Transports
- 5.2.5. Reliability Protocol and Wire Representation
- 5.2.6. Performance and Scalability
- 5.2.7. Debuggability
- 5.2.8. Content Filters and Query Conditions
- 5.2.9. TopicQueries
- 5.2.10. Logging
- 5.2.11. Dynamic Data
- 5.2.12. APIs (C or Traditional C++)
- 5.2.13. APIs (Java)
- 5.2.14. APIs (Python)
- 5.2.15. APIs (Multiple Languages)
- 5.2.16. XML Configuration
- 5.2.17. Entities
- 5.2.18. Crashes
- 5.2.19. Hangs
- 5.2.20. Memory Leaks/Growth
- 5.2.21. Data Corruption
- 5.2.22. OMG Specification Compliance
- 5.2.23. Vulnerabilities
- 5.2.24. Other
- 5.3. What’s New in 7.5.0
- 5.3.1. Python RPC API now fully productized and supported
- 5.3.2. More efficient endpoint discovery for RPC and Request-Reply
- 5.3.3. Improved DataWriter queue sample memory management eliminates required configuration for unbounded types
- 5.3.4. Enhanced out-of-the-box network performance with updated socket buffer sizes
- 5.3.5. Improved scalability for applications using writer-side content filtering
- 5.3.6. Initial discovery performance improvements in large systems with participants containing many endpoints
- 5.3.7. Eliminated requirement to manually clean up thread resources on platforms that support automatic thread-specific storage (TSS) cleanup
- 5.3.8. Improved flow control of fragmented sample repairs
- 5.3.9. RTPS messages containing a malformed inline Qos now trigger a warning, to avoid deserialization errors downstream
- 5.3.10. Capture periodic DomainParticipant announcements in DISCOVERY logging category to enhance debugging of discovery
- 5.3.11. Print incompatible QoS policies in a discovery snapshot for improved discovery debugging
- 5.3.12. Updated default value for socket_monitoring_kind to more performant WINDOWS_IOCP value on Windows systems
- 5.3.13. Support for new metadata fields in content filter expressions
- 5.3.14. InstanceHandle now provides a default constructor
- 5.3.15. Parameter type change to more convenient/appropriate size_t in pluggable transport’s to_string APIs
- 5.3.16. Deprecations and Removals
- 5.3.17. Third-Party Software Changes
- 5.4. What’s Fixed in 7.5.0
- 5.4.1. Discovery
- 5.4.2. Usability
- 5.4.3. Transports
- 5.4.4. Reliability Protocol and Wire Representation
- 5.4.5. Performance and Scalability
- 5.4.6. Debuggability
- 5.4.7. Content Filters and Query Conditions
- 5.4.8. Request-Reply and Remote Procedure Calls
- 5.4.9. Logging
- 5.4.10. APIs (C or Traditional C++)
- 5.4.11. APIs (Java)
- 5.4.12. APIs (C# API)
- 5.4.13. APIs (Python)
- 5.4.14. APIs (Multiple Languages)
- 5.4.15. XML Configuration
- 5.4.16. Instances
- 5.4.17. Crashes
- 5.4.18. Hangs
- 5.4.19. Memory Leaks/Growth
- 5.4.20. Data Corruption
- 5.4.21. Entities
- 5.4.22. Interoperability
- 5.4.23. Vulnerabilities
- 5.4.24. Other
- 5.5. What’s New in 7.4.0
- 5.5.1. Set up reliable communications for fragmented data more easily and with better performance, by removing asynchronous publishing requirement
- 5.5.2. Modern C++ RPC API now fully productized and supported
- 5.5.3. Discover relevant QoS more easily through categorizations added to API Reference HTML documentation
- 5.5.4. Easier QoS configuration for Request-Reply and RPC with new built-in QoS profile
- 5.5.5. Write Python applications faster with reactive subscriptions
- 5.5.6. New Ping built-in type helps debug and prototype with the Python API
- 5.5.7. DDS Spy now prints full timestamps (with date and fractions of a second) and epoch timestamps
- 5.5.8. New DynamicData APIs get and set a union’s discriminator value
- 5.5.9. Deprecations and Removals
- 5.6. What’s Fixed in 7.4.0
- 5.6.1. Discovery
- 5.6.2. Serialization and Deserialization
- 5.6.3. Usability
- 5.6.4. Transports
- 5.6.5. Reliability Protocol and Wire Representation
- 5.6.6. Bandwidth Sensitivity
- 5.6.7. Debuggability
- 5.6.8. Content Filters and Query Conditions
- 5.6.9. TopicQueries
- 5.6.10. Request-Reply and Remote Procedure Calls
- 5.6.11. Logging
- 5.6.12. Dynamic Data
- 5.6.13. APIs (Modern C++ API)
- 5.6.14. APIs (Java)
- 5.6.15. APIs (Python)
- 5.6.16. APIs (Multiple Languages)
- 5.6.17. XML Configuration
- 5.6.18. Crashes
- 5.6.19. Hangs
- 5.6.20. Memory Leaks/Growth
- 5.6.21. Data Corruption
- 5.6.22. OMG Specification Compliance
- 5.6.23. Interoperability
- 5.6.24. Vulnerabilities
- 5.6.25. Other
- 5.1. What’s New in 7.6.0
- 6. Known Issues
- 6.1. Known Issues with Discovery
- 6.2. Known Issues with Serialization and Deserialization
- 6.3. Known Issues with Usability
- 6.3.1. Cannot open USER_QOS_PROFILES.xml in rti_workspace/examples from Visual Studio
- 6.3.2. DataWriter’s Listener callback on_application_acknowledgment() not triggered by late-joining DataReaders
- 6.3.3. HighThroughput and AutoTuning built-in QoS Profiles may cause communication failure when writing small samples
- 6.3.4. Memory leak if Foo:initialize() called twice
- 6.3.5. Wrong error code after timeout on write() from Asynchronous Publisher
- 6.3.6. Type Consistency enforcement disabled for structs with more than 10000 members
- 6.3.7. Escaping special characters in regular/filter expressions not supported in some cases
- 6.3.8. Non-English Unicode (UTF-8) file names and paths not supported
- 6.4. Known Issues with Code Generation
- 6.5. Known Issues with Instance Lifecycle
- 6.6. Known Issues with Reliability
- 6.7. Known Issues with Content Filters and Query Conditions
- 6.8. Known Issues with TopicQueries
- 6.9. Known Issues with C# API
- 6.10. Known Issues with Transports
- 6.10.1. AppAck messages cannot be greater than underlying transport message size
- 6.10.2. DataReader cannot persist AppAck messages greater than 32767 bytes
- 6.10.3. Discovery with Connext Micro fails when shared memory transport enabled
- 6.10.4. Communication may not be reestablished in some IP mobility scenarios
- 6.10.5. Corrupted samples may be forwarded through Routing Service when using Zero-Copy transfer over shared memory
- 6.10.6. Network Capture does not support frames larger than 65535 bytes
- 6.10.7. Shared memory transport in QNX 7.0 and earlier can result in priority inversion
- 6.10.8. Ungracefully terminated QNX processes using SHMEM transport prevents startup of new processes due to unclosed POSIX semaphores (QNX 7.0 and earlier)
- 6.11. Known Issues with FlatData
- 6.12. Known Issues with Coherent Sets
- 6.13. Known Issues with Dynamic Data
- 6.14. Known Issues with RTI Monitoring Library
- 6.15. Known Issues with RTI Monitoring Library 2.0
- 6.16. Other Known Issues
- 6.16.1. Possible Valgrind still-reachable leaks when loading dynamic libraries
- 6.16.2. 64-bit discriminator values greater than (2^31-1) or smaller than (-2^31) not supported
- 6.16.3. Creating multiple DataReaders for the same Topic under the same Subscriber configured with Group Ordered Access is not supported
- 6.16.4. With DISALLOW_TYPE_COERCION and Types containing unbounded members, other vendor DataWriters/DataReaders will not match Connext DataWriters/DataReaders
- 6.16.5. find_datawriters/readers APIs when used with XML-Based Application Creation is not supported on systems that use older GCC versions