OpenDDS 3.34.0

Состоялся релиз OpenDDS 3.34.0 — свободной C++-реализации спецификации Object Management Group Data Distribution Service for Real-time Systems. DDS применяется для построения распределённых систем по модели публикации и подписки, а сам OpenDDS, помимо C++, предоставляет Java/JNI-привязки и опирается на ACE/TAO. Релиз опубликован 21 мая 2026 года, готовые архивы доступны для Windows, Linux и macOS.
Проект распространяется как open source: OpenDDS можно использовать, изменять и распространять без лицензионных отчислений при сохранении copyright-уведомления; отдельно подчёркивается, что OpenDDS можно применять и при разработке проприетарного ПО без обязанности раскрывать собственный исходный код.
Основные изменения OpenDDS 3.34.0:
-
Расширены возможности RtpsRelay. В RtpsRelay теперь можно менять дополнительные параметры во время выполнения через механизм RtpsRelayControl. Также добавлена возможность задавать список разделов, доступ к которым будет запрещён конкретным экземпляром RtpsRelay, через новый topic
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«ов. <<<<
Новость на сайте проекта
>>> Источник
