È stata pubblicata la nuova versione OpenDDS 3.34.0 — implementazione C++ della specifica Object Management Group Data Distribution Service per Sistemi in Tempo Reale. DDS è utilizzato per costruire sistemi distribuiti secondo il modello di pubblicazione e sottoscrizione, e OpenDDS, oltre al C++, fornisce collegamenti Java/JNI e si basa su ACE/TAO. La versione è stata pubblicata il 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 royalties, mantenendo l'avviso di copyright; si sottolinea inoltre che OpenDDS può essere utilizzato anche nello sviluppo di software proprietario senza obbligo di divulgare il proprio codice sorgente.
Principali modifiche di OpenDDS 3.34.0:
Ampliata la funzionalità di RtpsRelay. In RtpsRelay è ora possibile cambiare parametri aggiuntivi durante l'esecuzione tramite il meccanismo RtpsRelayControl. È stata anche aggiunta la possibilità di specificare un elenco di partizioni, l'accesso alle quali sarà vietato a specifiche istanze di RtpsRelay, tramite il nuovo topic RelayDeniedPartitions. Per gestire la durata di tale divieto è stata introdotta l'opzione -DeniedPartitionsTimeout.
Aggiunto un modo di costruzione per il profiling. Nello script configure è stata aggiunta l'opzione —profiling, che include le impostazioni di compilazione tipiche per l'analisi delle prestazioni in GCC.
Sono stati introdotti callback per la gestione dei thread in OpenDDS. Gli sviluppatori hanno aggiunto i gestori che vengono chiamati all'avvio e alla chiusura dei thread OpenDDS. Questo consente di controllare il comportamento dei thread, ad esempio legandoli a specifici core CPU in Linux.
Ottimizzazione della deserializzazione dei tipi IDL. Tutti i mapping IDL ora cercano di evitare l'inizializzazione non necessaria della memoria per le sequenze di tipi primiti durante la deserializzazione di un campione. Per IDL-to-C++11 è necessaria un'attivazione esplicita tramite @OpenDDS::no_init_before_deserialize.
Aggiunta la gestione del numero di thread EventDispatcher. Sono stati introdotti i parametri DCPSEventDispatcherThreads e la configurazione del trasporto event_dispatcher_threads. Se l'impostazione event_dispatcher_threads=0 viene utilizzata, il trasporto utilizzerà un dispatcher eventi generale invece di crearne uno locale.
Aggiunti parametri per i buffer TCP. Per il trasporto TCP sono stati introdotti i parametri 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 vengono impostati con valori positivi.
Aggiornato ACE/TAO. Nel pacchetto sono state aggiornate le dipendenze: ACE 6/TAO 2 sono passati da 6.5.23 a 6.5.24, mentre ACE 8/TAO 4 da 8.0.5 a 8.0.6. Nella compilazione di OpenDDS tramite CMake, la versione predefinita di ACE/TAO è ora la combinazione ACE 8 / TAO 4.
Rimossa l'opzione non utilizzata RtpsRelay. Dall'RtpsRelay è stata rimossa l'opzione -LogParticipantStatistics, poiché non era più utilizzata.
Correzioni delle prestazioni e della rete. Aumentata la dimensione del receive buffer per netlink, e una parte significativa delle operazioni di servizio e risposta è stata spostata dai thread Reactor ai relativi thread EventDispatcher. Questo dovrebbe alleggerire i thread Reactor per la lettura di rete.
Corretto errori in ThreadStatusManager e nei transport. ThreadStatusManager ora utilizza più slot con i propri blocchi, riducendo la concorrenza tra i thread. Corretto il dereferenziamento di puntatori nulli durante la deserializzazione di DynamicData da utenti rimossi, così come gli errori nella ricerca dell'istanza di trasporto e nella gestione degli indirizzi locali condivisi, che potevano portare a valori locator errati nelle dichiarazioni degli utenti e degli endpoint.
<<<
Fonte: linux.org.ru
