OpenDDS 3.34.0

good-penguin.png

Состоялся релиз 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«ов. <<<<

Новость на сайте проекта

>>> Источник

©  Linux.org.ru