È stato rilasciato OpenDDS 3.34.0 — implementazione C++ della specifica Servizio di distribuzione dei dati dell'Object Management Group per sistemi in tempo reale. DDS è utilizzato per la creazione di sistemi distribuiti secondo il modello di pubblicazione e sottoscrizione, e OpenDDS, oltre a C++, offre collegamenti Java/JNI e si basa su ACE/TAO. La versione è stata pubblicata 21 maggio 2026, archivi pronti disponibili per Windows, Linux e macOS.
Il progetto è distribuito come open source: OpenDDS può essere utilizzato, modificato e distribuito senza pagare royalties, mantenendo l'avviso di copyright; si sottolinea separatamente che OpenDDS può essere utilizzato anche nello sviluppo di software proprietario senza obbligo di rivelare il proprio codice sorgente.
Modifiche principali di OpenDDS 3.34.0:
Ammpliato il supporto per RtpsRelay. In RtpsRelay ora è possibile modificare parametri aggiuntivi durante l'esecuzione tramite il meccanismo RtpsRelayControl. È stata anche aggiunta la possibilità di definire un elenco di partizioni, a cui sarà negato l'accesso a una specifica istanza di RtpsRelay, attraverso un nuovo topic RelayDeniedPartitions. È stata introdotta l'opzione -DeniedPartitionsTimeout per gestire il tempo di validità di tale divieto.
Aggiunta una modalità di compilazione per il profiling. Nello script configure è stata aggiunta una flag —profiling, che attiva le impostazioni di compilazione tipiche per l'analisi delle prestazioni in GCC.
Introdotti dei callback per la gestione dei thread di OpenDDS. Gli sviluppatori hanno aggiunto gestori che vengono chiamati all'avvio e alla chiusura dei thread di OpenDDS. Questo consente di controllare il comportamento dei thread, ad esempio fissandoli a specifici core CPU in Linux.
Ottimizzata la deserializzazione dei tipi IDL. Tutti i mapping IDL ora cercano di evitare il ripristino non necessario della memoria per le sequenze di tipi primitivi durante la deserializzazione di un campione. Per IDL-to-C++11 è necessario attivare esplicitamente l'inclusione tramite @OpenDDS::no_init_before_deserialize.
Aggiunta la gestione del numero di thread dell'EventDispatcher. Introdotte le impostazioni DCPSEventDispatcherThreads e la configurazione del trasporto event_dispatcher_threads. Quando event_dispatcher_threads=0, il trasporto utilizzerà un dispatcher eventi condiviso invece di crearne uno locale.
Aggiunte impostazioni per i buffer TCP. Per il trasporto TCP sono state introdotte le impostazioni send_buffer_size e rcv_buffer_size. Per impostazione predefinita, la dimensione dei buffer socket ora è lasciata alla discrezione della piattaforma se questi parametri non sono definiti con valori positivi.
Aggiornati ACE/TAO. Nel pacchetto sono state aggiornate le dipendenze: ACE 6/TAO 2 sono state elevate da 6.5.23 a 6.5.24, mentre ACE 8/TAO 4 da 8.0.5 a 8.0.6. Durante la compilazione di OpenDDS tramite CMake, la versione di ACE/TAO predefinita è ora la combinazione ACE 8 / TAO 4.
Opzione RtpsRelay non utilizzata rimossa. L'opzione -LogParticipantStatistics è stata rimossa da RtpsRelay poiché non era più utilizzata.
Correzioni relative alle prestazioni e al funzionamento della rete. Aumentata la dimensione del buffer di ricezione per netlink, e gran parte dei compiti di servizio e risposta è stata trasferita dai thread Reactor ai corrispondenti thread EventDispatcher. Questo dovrebbe alleggerire i thread Reactor per la lettura di rete.
Errori in ThreadStatusManager e nei trasporti corretti. ThreadStatusManager ora utilizza più slot con i propri lock, riducendo la competizione tra i thread. Corretto il dereferenziamento di un puntatore nullo durante la deserializzazione di DynamicData da un partecipante rimovibile, così come errori nella ricerca dell'istanza di trasporto e nella gestione degli indirizzi locali comuni, che potevano portare a valori di locator errati nelle dichiarazioni dei partecipanti e degli endpoint.
<<<<
Fonte: linux.org.ru
