Die Veröffentlichung fand statt OpenDDS 3.34.0 — eine freie C++-Implementierung der Spezifikation Object Management Group Data Distribution Service für Echtzeitsysteme. DDS wird zur Erstellung verteilter Systeme nach dem Modell von Veröffentlichung und Abonnement eingesetzt, während OpenDDS neben C++ auch Java/JNI-Bindungen bietet und sich auf ACE/TAO stützt. Die Veröffentlichung wurde veröffentlicht 21. Mai 2026, fertige Archive verfügbar für Windows, Linux und macOS.
Das Projekt wird vertrieben als Open Source: OpenDDS kann verwendet, verändert und ohne Lizenzabgaben verbreitet werden, solange die Copyright-Hinweise erhalten bleiben; es wird ausdrücklich darauf hingewiesen, dass OpenDDS auch bei der Entwicklung proprietärer Software verwendet werden kann, ohne dass die Verpflichtung besteht, den eigenen Quellcode offenzulegen.
Die wichtigsten Änderungen in OpenDDS 3.34.0:
Die Möglichkeiten von RtpsRelay wurden erweitert. In RtpsRelay können jetzt zusätzliche Parameter zur Laufzeit über den Mechanismus RtpsRelayControl geändert werden. Zudem wurde die Möglichkeit geschaffen, eine Liste von Partitionen festzulegen, auf die ein bestimmtes RtpsRelay-Exemplar keinen Zugriff haben soll, über ein neues Thema RelayDeniedPartitions. Um die Gültigkeitsdauer dieses Verbots zu steuern, wurde die Option -DeniedPartitionsTimeout hinzugefügt.
Ein Profilierungs-Build-Modus wurde hinzugefügt. Im Konfigurationsskript wurde die Option —profiling hinzugefügt, die typische Kompilierungsparameter zur Leistungsanalyse in GCC aktiviert.
Callbacks zur Steuerung der OpenDDS-Threads wurden hinzugefügt. Die Entwickler haben Handler hinzugefügt, die beim Start und Ende von OpenDDS-Threads aufgerufen werden. Dies ermöglicht die Steuerung des Verhaltens von Threads, z.B. das Binden an bestimmte CPU-Kerne unter Linux.
Die Deserialisierung von IDL-Typen wurde optimiert. Alle IDL-Mappings versuchen jetzt, überflüssiges Nullsetzen des Speichers für Sequenzen primitiver Typen bei der Deserialisierung zu vermeiden. Für IDL-to-C++11 ist eine zusätzliche explizite Aktivierung über @OpenDDS::no_init_before_deserialize erforderlich.
Die Steuerung der Anzahl der EventDispatcher-Threads wurde hinzugefügt. Es wurden die Parameter DCPSEventDispatcherThreads und die Transportkonfiguration event_dispatcher_threads hinzugefügt. Wenn der Wert von event_dispatcher_threads=0 gesetzt ist, verwendet der Transport einen gemeinsamen Ereignisdispatcher, anstatt einen eigenen lokalen Dispatcher zu erstellen.
TCP-Puffer-Einstellungen wurden hinzugefügt. Für den TCP-Transport wurden die Parameter send_buffer_size und rcv_buffer_size eingeführt. Standardmäßig liegt die Größe der Socket-Puffer jetzt im Ermessen der Plattform, wenn diese Parameter nicht mit positiven Werten angegeben werden.
ACE/TAO wurden aktualisiert. Die Abhängigkeiten wurden aktualisiert: ACE 6/TAO 2 wurden von 6.5.23 auf 6.5.24 angehoben, und ACE 8/TAO 4 von 8.0.5 auf 8.0.6. Bei der Erstellung von OpenDDS über CMake ist die Standardversion von ACE/TAO jetzt die Kombination aus ACE 8 / TAO 4.
Die nicht verwendete Option RtpsRelay wurde entfernt. Die Option -LogParticipantStatistics wurde aus RtpsRelay entfernt, da sie nicht mehr genutzt wurde.
Leistungs- und Netzwerkoptimierungen. Die Größe des Receive Buffers für Netlink wurde erhöht, und ein wesentlicher Teil der Verwaltungs- und Antwortaufgaben wurde von den Reactor-Threads auf die entsprechenden EventDispatcher-Threads verlagert. Dies sollte die Reactor-Threads für die Netzwerkverarbeitung entlasten.
Fehler im ThreadStatusManager und in den Transporten wurden behoben. Der ThreadStatusManager verwendet jetzt mehrere Slots mit eigenen Sperren, was die Konkurrenz zwischen den Threads reduziert. Das Dereferenzieren eines Nullzeigers beim Deserialisieren von DynamicData eines entfernten Teilnehmers wurde behoben, ebenso wie Fehler bei der Suche nach Transportinstanzen und beim Umgang mit gemeinsamen lokalen Adressen, die zu falschen Locator-Werten in den Ankündigungen von Teilnehmern und Endpunkten führen konnten.
««««
Neuigkeiten auf der Projektwebseite
Quelle: linux.org.ru
