Освобождаването се състоя OpenDDS 3.34.0 — безплатна C++ имплементация на спецификацията Услуга за разпространение на данни за групово управление на обекти за системи в реално времеDDS се използва за изграждане на разпределени системи, използващи модела публикуване/абониране, а самият OpenDDS, освен C++, предоставя Java/JNI връзки и разчита на ACE/TAO. Версията е публикувана. 21 май 2026 година, готови архиви достъпно за Windows, Linux и macOS.
Проектът се разпространява като отворен код: OpenDDS може да се използва, модифицира и разпространява безплатно, при условие че е запазено известието за авторски права; специално се подчертава, че OpenDDS може да се използва и при разработването на собственически софтуер без задължението за разкриване на изходния код.
Ключови промени в OpenDDS 3.34.0:
Възможностите на RtpsRelay са разширени. RtpsRelay вече ви позволява да променяте допълнителни параметри по време на изпълнение чрез механизма RtpsRelayControl. Възможността за задаване на списък с дялове, до които достъпът ще бъде отказан за конкретен екземпляр на RtpsRelay също е добавена чрез новата тема RelayDeniedPartitions. Добавена е опцията -DeniedPartitionsTimeout, за да се контролира продължителността на този отказ.
Добавен е режим на изграждане за профилиране. Флагът --profiling е добавен към скрипта за конфигуриране, за да се активират типичните опции за компилация за анализ на производителността в GCC.
Появиха се обратни извиквания за управление на OpenDDS потоци. Разработчиците са добавили обработчици, извиквани при стартиране и завършване на нишките на OpenDDS. Това позволява контрол върху поведението на нишките, като например присвояването им на конкретни ядра на процесора. Linux.
Десериализацията на IDL типове е оптимизирана. Всички IDL съпоставяния вече се опитват да избегнат ненужно нулиране на паметта за примитивни типови последователности при десериализиране на инстанция. За IDL към C++11 това изисква допълнително изрично включване чрез @OpenDDS::no_init_before_deserialize.
Добавен е контрол върху броя на нишките на EventDispatcher. Добавени са параметрите DCPSEventDispatcherThreads и настройката за транспорт event_dispatcher_threads. Когато event_dispatcher_threads=0, транспортът ще използва споделения диспечер на събития, вместо да създава свой собствен локален диспечер.
Добавени са настройки на TCP буфера. Параметрите send_buffer_size и rcv_buffer_size са добавени към TCP транспорта. По подразбиране размерите на буферите на сокетите вече са оставени на преценка на платформата, освен ако тези параметри не са зададени на положителни стойности.
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. Опцията -LogParticipantStatistics е премахната от RtpsRelay, тъй като вече не се използва.
Корекции на производителността и мрежата. Размерът на буфера за получаване за netlink е увеличен и значителна част от задачите за обслужване и отговор са преместени от нишките на Reactor към съответните нишки на EventDispatcher. Това би трябвало да намали натоварването на нишките на Reactor за четене от мрежата.
Отстранени са грешки в ThreadStatusManager и транспортите. ThreadStatusManager вече използва множество слотове със собствени заключвания, което намалява конфликта между нишките. Поправена е дереференция на нулев указател при десериализиране на DynamicData от изтрит участник, както и грешки при търсенето на транспортни екземпляри и обработката на споделени локални адреси, които биха могли да доведат до неправилни стойности на локатора в декларациите на участници и крайни точки.
<<<
Източник: linux.org.ru
