A avut loc lansarea OpenDDS 3.34.0 — o implementare liberă în C++ a specificației Serviciul de distribuție a datelor pentru sisteme în timp real al Object Management Group. DDS este utilizat pentru construirea de sisteme distribuite pe baza unui model de publicare și subscriere, iar OpenDDS, pe lângă C++, oferă legături Java/JNI și se bazează pe ACE/TAO. Lansarea a fost publicată 21 mai 2026, arhivele gata făcute sunt disponibile pentru Windows, Linux și macOS.
Proiectul este distribuit ca software open source: OpenDDS poate fi utilizat, modificat și distribuit fără taxe de licență, cu menținerea notificării de copyright; se subliniază, de asemenea, că OpenDDS poate fi aplicat și în dezvoltarea de software proprietar fără obligația de a dezvălui codul sursă.
Principalele modificări în OpenDDS 3.34.0:
Capabilitățile RtpsRelay au fost extinse. În RtpsRelay acum se pot schimba parametrii suplimentari în timpul execuției prin mecanismul RtpsRelayControl. De asemenea, a fost adăugată posibilitatea de a defini o listă de partiții la care va fi refuzat accesul de către o instanță specifică a RtpsRelay, prin noul topic RelayDeniedPartitions. Pentru gestionarea duratei acestui refuz, a fost adăugată opțiunea -DeniedPartitionsTimeout.
A fost adăugat un mod de compilare pentru profilare. În scriptul configure a fost adăugat un flag —profiling, care activează parametrii de compilare tipici pentru analiza performanței în GCC.
Au fost adăugate callbacks pentru gestionarea thread-urilor OpenDDS. Dezvoltatorii au adăugat gestionatori care sunt apelate la pornirea și închiderea thread-urilor OpenDDS. Aceasta permite gestionarea comportamentului thread-urilor, de exemplu, prin legarea acestora de nuclee CPU specifice în Linux.
Deserilizarea tipurilor IDL a fost optimizată. Toate mapările IDL încearcă acum să evite resetarea inutilă a memoriei pentru secvențele de tipuri primitive la deserilizarea unui șablon. Pentru IDL-to-C++11 este necesară o includere explicită suplimentară prin @OpenDDS::no_init_before_deserialize.
A fost adăugat controlul numărului de thread-uri EventDispatcher. Au apărut parametrii DCPSEventDispatcherThreads și configurația de transport event_dispatcher_threads. La o valoare event_dispatcher_threads=0, transportul va folosi un dispatcher de evenimente comun în loc să creeze un dispatcher local propriu.
Au fost adăugate setări pentru buffer-e TCP. Pentru transportul TCP au apărut parametrii send_buffer_size și rcv_buffer_size. În mod implicit, dimensiunea buffer-elor socket este lăsată la discreția platformei, dacă acești parametri nu sunt definiți cu valori pozitive.
Actualizate ACE/TAO. În cadrul actualizării, dependențele: ACE 6/TAO 2 au fost ridicate de la 6.5.23 la 6.5.24, iar ACE 8/TAO 4 de la 8.0.5 la 8.0.6. La compilarea OpenDDS prin CMake, versiunea implicită a ACE/TAO este acum combinația ACE 8 / TAO 4.
Opțiunea RtpsRelay inutilizată a fost eliminată. Opțiunea -LogParticipantStatistics a fost eliminată din RtpsRelay, deoarece nu mai era utilizată.
Îmbunătățiri de performanță și rețea. Dimensiunea buffer-ului de recepție pentru netlink a fost crescută, iar o parte semnificativă a sarcinilor de servicii și răspunsuri a fost mutată de pe fluxurile Reactor pe fluxurile corespunzătoare EventDispatcher. Acest lucru ar trebui să elibereze fluxurile Reactor pentru citirea rețelei.
Erorile din ThreadStatusManager și transporturi au fost corectate. ThreadStatusManager folosește acum mai multe sloturi cu blocări proprii, ceea ce reduce competiția între fire. A fost corectată dereferințierea unui pointer nul la deserializarea DynamicData de la un participant eliminat, dar și erorile de căutare a instanței transportului și de gestionare a adreselor locale comune, care ar putea duce la valori locator incorecte în declarațiile participanților și ale endpoint-urilor.
<<<<
Sursa: linux.org.ru
