Състоянието е реализирано OpenDDS 3.34.0 — свободна C++ реализация на спецификацията Data Distribution Service за реални системи на Object Management Group. DDS се използва за изграждане на разпределени системи по модела на публикуване и абониране, а самият OpenDDS предлага Java/JNI биндинги, освен C++, и разчита на ACE/TAO. Релизът е публикуван на 21 май 2026 година, готови архиви достъпни за Windows, Linux и macOS.
Проектът се разпространява като open source: OpenDDS може да се използва, променя и разпространява без лицензионни такси при запазване на уведомлението за авторски права; изрично се подчертава, че OpenDDS може да се прилага и при разработка на собствен софтуер без задължение за разкриване на собствения изходен код.
Основни промени в OpenDDS 3.34.0:
Разширени възможности на RtpsRelay. В RtpsRelay сега могат да се променят допълнителни параметри в реално време чрез механизма RtpsRelayControl. Добавена е и възможност за задаване на списък с теми, достъпът до които ще бъде забранен за конкретен екземпляр на RtpsRelay, чрез новата тема RelayDeniedPartitions. За управление на срока на валидност на такава забрана е добавена опция -DeniedPartitionsTimeout.
Добавен режим на компилиране за профилиране. В скрипта configure е добавен флаг —profiling, който активира типичните параметри за компилация за анализ на производителността в GCC.
Появиха се callbacks за управление на потоковете на OpenDDS. Разработчиците добавиха обработчици, извиквани при стартиране и завършване на потоковете на OpenDDS. Това позволява управление на поведението на потоковете, например, да бъдат закрепени за конкретни ядра на CPU в Linux.
Оптимизирана десериализация на IDL типове. Всички IDL мапинги вече се опитват да избягват ненужно нулиране на паметта за последователности от примитивни типове при десериализиране на образец. За IDL-to-C++11 е необходимо допълнително явно включване чрез @OpenDDS::no_init_before_deserialize.
Добавено управление на броя на потоковете в EventDispatcher. Добавени са параметри DCPSEventDispatcherThreads и транспортна настройка event_dispatcher_threads. При стойност event_dispatcher_threads=0, транспортът ще използва общия диспетчер на събития вместо да създава собствен локален диспетчер.
Добавени настройки за TCP буфери. За TCP транспорта са добавени параметри send_buffer_size и rcv_buffer_size. По подразбиране размерът на socket-буферите сега остава на преценката на платформата, ако тези параметри не са зададени с положителни стойности.
Обновени ACE/TAO. Актуализирани зависимости: ACE 6/TAO 2 са повдигнати от 6.5.23 до 6.5.24, а ACE 8/TAO 4 — от 8.0.5 до 8.0.6. При компилирането на OpenDDS чрез CMake, версията на ACE/TAO по подразбиране сега е ACE 8 / TAO 4.
Премахната е неизползваемата опция RtpsRelay. От RtpsRelay е премахната опцията -LogParticipantStatistics, тъй като тя вече не се използваше.
Оптимизации на производителността и мрежовата работа. Увеличен е размерът на receive buffer за netlink, а значителна част от обслужващите и отговорните задачи са прехвърлени от Reactor потоковете на съответните EventDispatcher потоци. Това трябва да облекчи Reactor потоковете за мрежово четене.
Коригирани са грешки в ThreadStatusManager и транспортите. ThreadStatusManager вече използва няколко слота със свои заключвания, което намалява конкуренцията между потоковете. Коригирано е разразменуването на нулев указател при десериализация на DynamicData от отстраняващия се участник, както и грешки в търсенето на transport instance и работата с общи локални адреси, които биха могли да водят до неверни locator стойности в обявленията на участниците и endpoint-ите.
<<<
Източник: linux.org.ru
