Release Notes¶
v4.0.0¶
New features in this release:
Custom executor enhancements - Added support for retrieving transport and entities
ISpinnableinterfaces, making it easier to implement custom executors.Documentation & tutorials - Expanded resources including custom executor tutorial.
Shared Memory Transport - Added POSIX shared memory transport as a new communication option for inter-process communication on POSIX-compliant systems.
Loans - Added loan-based
DataWriterandDataReaderAPIs so applications can publish and consume sample buffers directly when serialization can be avoided.Data sharing - Added inter-process data sharing support so
DataWriterandDataReaderentities on the same machine can exchange DDS history through shared memory.Zero-copy - Combined loans and data sharing to enable zero-copy inter-process communication, reducing serialization and memory-copy overhead.
This release includes the following major changes:
Added
get_transport_spinnablemethod toBaseDomainTransportDispatcherclass to retrieve the transport’sISpinnableinterface.Added
get_spinnablemethod to interfaceEntityto retrieve theirISpinnableinterface.Added shared memory locator support to
transport::LocatorthroughLocatorKind::SHARED_MEMORY,from_shm_info,get_shm_info, andget_shm_group_id.Added built-in
transport::posix::UDPv4_SharedMemorytransport, combining UDPv4 and POSIX shared memory communication in a single transport implementation.Added
DataSharingQosPolicysupport toDataWriterQosandDataReaderQosthrough thedata_sharing()accessors.Added
get_loaned_buffer,write_loaned_buffer, andwrite_loaned_buffer_w_timestampmethods toDataWriter.Added
take_next_sample_bufferandrelease_sample_buffermethods toDataReader.
This release includes the following minor changes:
Added
validate_new_samplemethod toIDataWriterInstanceinterface.Refactored
TypedDataWriterto usevalidate_new_samplemethod fromIDataWriterInstance.Optimized
BasicExecutor,Reader, andWriterto use a round-robin strategy when searching for entities with pending work.
This release includes the following fixes:
[KNOWN_ISSUE_4001] - Fixed
TypedDataWriterto correctly write data after a serialization failure on a previous write for the same instance.[KNOWN_ISSUE_4002] - Fixed
PosixPlatformto correctly calculate current time inget_current_timemethod.[KNOWN_ISSUE_4003] - Fixed compilation errors when using Clang compiler.
Version checksum¶
Safe DDS v4.0.0 checksum is:
212da34f10c4b06c6bbefc30568c95d7d320d0b67832826970e0c6a2770f54f4
The checksum has been calculated over the include and src directories of the Safe DDS v4.0.0 release using the SHA-256 algorithm through the following command in Ubuntu 22.04:
find include/ src/ -type f -exec sha256sum {} + | sort -k 1 | sha256sum | awk '{ print $1 }'
Known issues¶
No known issues.
v3.0.0 (2025-09-15)¶
New features in this release:
Added @optional and @external type support – Native handling of optional members in data types, and external basic types, sequences and arrays of basic types, and strings.
Custom memory allocators – New allocation mode enabling integration with user-defined allocators.
Channel redundancy – Ability to listen on multiple channels simultaneously for improved fault tolerance.
Manual entity decommissioning – Finer control over the lifecycle of DDS entities.
TSN compatibility for UDPv4 transport – New configuration option allowing the ISO 26262 ASIL-D certified UDPv4 transport to operate within TSN setups.
Ethernet transport – Added native IEEE 802.1Q Ethernet transport support, fully compatible with TSN configurations.
Documentation & tutorials – Expanded resources including ROS 2 integration, RTEMS getting started, and dedicated support packages for boards such as NXP, STMicroelectronics, and Espressif, among others.
This release includes the following major changes:
Updated Safe DDS codebase checksum computation method.
Introduced
take_first_sample_from_instancemethod inIDataReaderInstanceStorageandBaseDataReaderInstanceStoragefor taking first sample from an instance.Introduced
remove_first_sample_from_instance_and_push_backmethod inIDataReaderInstanceStorageandBaseDataReaderInstanceStoragefor combined removal and push-back operation.Updated
remove_first_sample_from_instancemethod inIDataReaderInstanceStorageandBaseDataReaderInstanceStorageby removingSampleInfoparameter (responsibility for filling sample info moved totake_first_sample_from_instance) and returningvoid.Updated
remove_oldest_writer_from_instancemethod inIDataReaderInstanceStorageandBaseDataReaderInstanceStorageto return a boolean indicating removal operation result.Introduced
remove_first_sample_and_push_backmethod inBaseDataReaderInstancefor combined removal and push-back operation.Updated
remove_first_samplemethod inBaseDataReaderInstanceto accept outputInstanceSampleparameter (removed sample) and returnvoid.Updated
oldest_writer_unregistermethod inBaseDataReaderInstanceto return a boolean indicating instance unregistering operation result.Introduced
set_view_statemethod inBaseDataReaderInstanceto set view state of instance.Added new
Optional<T>structure tomemorymodule.Replaced
LocalEndpointMemorywithLocalPublicationMemoryandLocalSubscriptionMemory.Replaced
RemoteEndpointMemorywithRemotePublicationMemoryandRemoteSubscriptionMemory.Created new
PublicationBuiltinTopicDatastructure inddsmodule as use ofdiscovery::PublicationInfo.Created new
SubscriptionBuiltinTopicDatastructure inddsmodule as use ofdiscovery::SubscriptionInfo.Created new
ParticipantBuiltinTopicDatastructure inddsmodule as use ofdiscovery::ParticipantInfo.Created new
TopicBuiltinTopicDatastructure inddsmodule.Updated
get_publication_matched_status,get_subscription_matched_status,get_discovered_participant_data, andget_discovered_topic_datamethods arguments.Removed
EndpointBuiltinTopicDataand madeEndpointInfoabsorb its functionality.Removed
PublicationBuiltinTopicDataand madePublicationInfoabsorb its functionality.Removed
SubscriptionBuiltinTopicDataand madeSubscriptionInfoabsorb its functionality.Removed
ParticipantBuiltinTopicDataand madeParticipantInfoabsorb its functionality.Removed all discovery parameter related structures except for
IParameterObserver,ParameterDeserializer,ParameterHeader, andParameterID.Moved handling of discovery parameters to
serialization::cdr::rtpsmodule.Added
fill_local_participant_builtin_endpointsmethod toIDiscoveryinterface.Added
purge_stored_samplesmethod toBaseTopicclass.Added
get_first_last_sequence_numbersmethod toITopicHistoryMapinterface.Added
try_fit_new_samplemethod toITopicHistoryMapinterface.Removed
fragmented_lowest_snandnext_nackfrag_setattributes fromProxyWriterstruct (unused).Removed
is_reliable_communicationmethod fromReaderclass (unused).Added
Safe DDS Gensupport for boolean sequences.Changed inheritance from
PreallocLinkedListandStaticLinkedListinPreallocOrderedLinkedListandStaticOrderedLinkedListto protected, and exposedsize,capacity,at,remove,remove_position, andclearmethods.Renamed
addmethod inPreallocLinkedListandStaticLinkedListtoordered_add.Achieved major performance improvement in
SafeDDSGentool due to use of direct memory copy for basic types.Introduced new
ISortedListinterface inmemorymodule to define behavior of sorted lists.Renamed
PreallocOrderedLinkedListandStaticOrderedLinkedListtoPreallocSortedListandStaticSortedList.Renamed
ordered_addmethod inPreallocSortedListandStaticSortedListtosorted_add.Created
BaseTopicHistoryMapclass indatacentricmodule, unifying core logic ofPreallocTopicHistoryMapandStaticTopicHistoryMap.Refactored
PreallocTopicHistoryMapandStaticTopicHistoryMapto inherit fromBaseTopicHistoryMapand newIPayloadProviderinterface.Integrated
PDPWriterandPDPSinkinto rewrittenPDPWriterfor comprehensive handling of outgoing participant discovery procedure.Added new
Pair<FirstType, SecondType>structure tomemorymodule.Refactored
IMapandIReferenceMapto group shared code intoIBaseMapinterface.Moved
IBaseContainerinheritance fromIMapandIReferenceMaptoIBaseMap.Made
ITopicHistoryMapandIDiscoveryStoragedirectly inherit fromIBaseMap.Added
key_value_atmethod toIBaseMapinterface.Added support for RTEMS.
Changed behavior of
DataWriterconfigured withKEEP_ALLandTRANSIENT_LOCALto allow writing to instance with samples acknowledged by all matchedDataReader’s.Added
Safe DDS Gensupport for external basic types, sequences and arrays of basic types, and strings.Introduced new
IAllocatorinterface inplatformmodule.Removed
allocatemethod fromIPlatforminterface.Added
get_default_allocatorfree function toplatformmodule.Made all allocation-dependent classes get an
IAllocatorinjected.Renamed the
SafeDomainParticipantFactoryPlatformclass toSafeDomainParticipantFactoryAllocator, which implements theplatform::IAllocatorinterface.Added
extra_announced_locatorsattribute toDomainParticipantWireProtocolQosPolicyandParticipantInfoclasses.Added
Safe DDS Gensupport for arrays and sequences of unions.Added
decommission_contained_entitiesmethod toDomainParticipantFactoryclass.Added
decommissionmethod toBaseDomainParticipantclass.Added
decommission_local_participantmethod toIDiscoveryinterface.Added
set_last_sequence_numberandget_last_sequence_numbertoPDPWriterclass.Updated
IPublicationObserverandISubscriptionObserverinterfaces to return a boolean indicating whether the discovered publication or subscription is of interest to the observer.Added
sending_locatorattribute toDataWriterWireProtocolQosPolicyclass.Added
set_origin_configurationmethod toITransportinterface, allowing setting for a given guid a specific locator with a given priority.Added
get_sending_socketmethod toUDPv4class and the attributessending_sockets_,default_sending_socket_enabled_anddefault_sending_socket_, allowing retrieval of the sending socket for a given guid.Integrated
locator_storage_memory_config,reception_socket_memory_configandsending_socket_memory_configintotransport::TransportAllocConfig.Changed
memory::container::PreallocMemoryConfigparameter inSafeDomainParticipantFactoryconstructor to usetransport::TransportAllocConfig.Changed
memory::container::PreallocMemoryConfigparameters in free functioncreate_transportto usetransport::TransportAllocConfig.
This release includes the following minor changes:
Refactored
InlineQosto useParameterDeserializerstructure.Modified
SafeDDSGento generate code following folder structure of input IDL files.Improved performance by using caches in some execution interfaces and
Timerclass.Introduced
clear_irrelevant_changesmethod inBaseDataReaderWriterStorageandIDataReaderWriterStoragefor refactoringprocess_irrelevant_changesinBaseDataReader.Added
discovery_max_samples_per_requestmember to theDomainParticipantWireProtocolQosPolicyclass.Added
max_samples_per_requestparameter to theDiscoveryclass constructor.
This release includes the following fixes:
[KNOWN_ISSUE_3001] - Fixed sample rejection and view state wrong values on readers configured with
KEEP_LASTdepth 1HistoryQoSwhen not taking available data.[KNOWN_ISSUE_3001] - Ensured instance state changes correctly triggered data availability notification.
[KNOWN_ISSUE_3002] - Fixed
Subscriber’son_data_on_readerslistener preventingDataReader’sDATA_AVAILABLE_STATUSstatus being cleaned.[KNOWN_ISSUE_3003] - Fixed
BaseDataReadersample count cache synchronization.[KNOWN_ISSUE_3004] - Fixed removal/add order on
Best EffortRTPS Readerfragmented operation.[KNOWN_ISSUE_3005] - Fixed generated
TypeSupport’s wrongmax_serialized_sizecalculation.[KNOWN_ISSUE_3006] - Fixed
XCDRv1generatedTypeSupportof nested mutable structs to be fully compliant with OMG Standard.[KNOWN_ISSUE_3007] - Fixed
BaseDataReadermemory cleanup on unmatch event.[KNOWN_ISSUE_3008] - Fixed data and
DataFragout of range (far future) not being ignored and handledAckNack/NackFragaccordingly.[KNOWN_ISSUE_3009] - Fixed
RTPS Readeracknowledge behavior when acknowledging one sample fragment.[KNOWN_ISSUE_3010] - Improved
TopicHistoryheuristic for fitting most relevant samples or sample fragments in fullTopicHistoryMapscenarios.[KNOWN_ISSUE_3011] - Fixed memory occupied by fragments on
Best EffortRTPS Readernot being released if last fragment was not last to arrive and sample was incomplete.[KNOWN_ISSUE_3012] - Fixed invalid
TimePointreturn value when normalizing aTimePointwith near maximum representable seconds and enough nanoseconds to reach maximum representable time in total.[KNOWN_ISSUE_3013] - Fixed missing validation in
PreallocMemoryConfigto prevent inconsistent configurations.[KNOWN_ISSUE_3014] - Fixed
PreallocTopicHistoryMapdata preallocation.[KNOWN_ISSUE_3015] - Fixed unnecessary
DATA(P)messages being sent on participant discovery procedure, leading to unnecessary network congestion in certain scenarios.[KNOWN_ISSUE_3016] - Fixed
ParameterRTPS messages withMust-Understandflag being incorrectly ignored, whether known or unknown.[KNOWN_ISSUE_3017] - Fixed overwriting of Heartbeat non-final flag in an
RTPS Readerif anotherHeartbeatwith final flag was received before theRTPS Readerhad time to spin.[KNOWN_ISSUE_3018] - Fixed buffer zero-initialization in
SafeDDSGenwhen dealing with IDL keys calculations.[KNOWN_ISSUE_3019] - Fixed
SafeDDSGento correctly compute union’s XCDRv2 length code.[KNOWN_ISSUE_3020] - Fixed
SafeDDSGento correctly initialize members of unions.[KNOWN_ISSUE_3021] - Fixed matched status updates, incompatible QoS and topic inconsistencies not being detected nor reported upon remote participant publications and subscriptions updates.
[KNOWN_ISSUE_3022] - Fixed maximum payload size calculation not taking into account
HeaderExtensionfield size.
Version checksum¶
Safe DDS v3.0.0 checksum is:
17ac151ed79981a72f5d67ebf1461423a26787da2430423fceca860bb77287db
The checksum has been calculated over the include and src directories of the Safe DDS v3.0.0 release using the SHA-256 algorithm through the following command in Ubuntu 22.04:
find include/ src/ -type f -exec sha256sum {} + | sort -k 1 | sha256sum | awk '{ print $1 }'
Known issues¶
As part of our Functional Safety procedure, we maintain a detailed record of known issues relevant to our software. The issues currently identified are minor and do not affect the overall functionality. This information is available to licensed customers.
v2.0.0 (2024-11-14)¶
This is a stable certifiable version of Safe DDS.
This release includes the following major changes:
Complete ISO 26262 Safety Documentation
Add MISRA C++ 2023 & AUTOSAR C++14 compliance
Complete 100% line, branch, decision and function coverage
Complete set of unit, module, system, profiling, smoke and code generation tests
Add SafeDomainParticipantFactory to DDS module for safety compliance
Add Safe DDS Gen for IDL code generation
Add error detection procedures at Protocol module
Add Logger system in Portable module
Add Initial Peers Discovery at DDS module
Add support for XCDR v2 serialization
Add traffic aggregation support at Protocol module
Support for NuttX RTOS
Support for ThreadX RTOS
Support for Bare Metal
Support for FreeRTOS + TCP stack
Support for LwIP stack (Raw and Socket API)
Support for NetX Duo stack
Major architectural changes to improve performance
This release includes the following minor changes:
Improve Datacentric module
Improve Memory module
Improve Platform module
Improve Serialization module
Improve Protocol module
Improve Execution module
Improve Discovery module
Improve DDS module
Improve Transport module
Complete removal of usage of C++ standard library outside Portable module
General code refactoring and bugfixes
Version checksum¶
Safe DDS v2.0.0 checksum is:
aeb96c87ea50c755711d3f2b20fe241859f810d96a96e734f4638273e8955fcf
The checksum has been calculated over the include and src directories of the Safe DDS v2.0.0 release using the SHA-256 algorithm through the following command in Ubuntu 22.04:
find include/ src/ -type f -exec sha256sum {} + | sort -k 2 | sha256sum | awk '{ print $1 }'
Known issues¶
As part of our Functional Safety procedure, we maintain a detailed record of known issues relevant to our software. The issues currently identified are minor and do not affect the overall functionality. This information is available to licensed customers.
v1.0.0 (2023-08-23)¶
This is the initial stable version of Safe DDS.
This release includes the following major changes:
Add support for QNX Neutrino 7.1 RTOS
Add support for POSIX Linux
Add QNX ARM on CI
Add FreeRTOS platform support on CI
Implement Liveliness
Fast DDS compatibility example
ROS 2 compatibility example
Added User Manual
New Transport module
Add DomainParticipantFactory
Add BasicExecutor
This release includes the following minor changes:
Platform API improvements
Linting, code checking and refactors
Add OwnershipStrengthValue
Improve Discovery module
Improve DDS module
Version checksum¶
Safe DDS v1.0.0 checksum is:
f43aa2cca6f5ed9ac0146f606e8f0f3ace91598e977c00ac9f0eca878cdb8229
The checksum has been calculated over the include and src directories of the Safe DDS v1.0.0 release using the SHA-256 algorithm through the following command in Ubuntu 22.04:
find include/ src/ -type f -exec sha256sum {} + | sort -k 2 | sha256sum | awk '{ print $1 }'
Known issues¶
No known issues.