Как стать автором
Обновить

Релиз Wayland 1.23

Время на прочтение3 мин
Количество просмотров4.9K

30 мая 2024 года состоялся релиз протокола для организации графического сервера, механизма межпроцессного взаимодействия и библиотек Wayland 1.23. Предыдущая стабильная версия проекта вышла в апреле 2023 года.

Ветка Wayland 1.23 обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ранее обнаруженных ошибок и незначительные обновления протокола. Компоненты исходного кода и наработки проекта распространяются под лицензией MIT.

Эталонный композитный сервер Weston, предоставляющий код и рабочие примеры для использования Wayland в десктоп-окружениях и встраиваемых решениях, развивается сообществом в рамках отдельного цикла разработки.

По данным OpenNET, основные изменения в протоколе в рамках релиза Wayland 1.23:

• добавлена официальная поддержка платформы OpenBSD;

• в libwayland реализован API, позволяющий клиенту определить максимальный размер внутреннего буфера соединений на стороне сервера. Базовый максимальный размер буфера выставляется через интерфейс wl_display, а новый API позволяет клиентам изменять его в привязке к каждому клиентскому соединению. C практической стороны изменение позволяет использовать буферы большего размера в специфичных Wayland-клиентах, таких как Xwayland, которым свойственна большая интенсивность событий ввода;

• для запросов (request), событий (event) и перечислений (enum) предоставлена возможность использования XML-атрибута "deprecated-since" для пометки устаревших элементов. В терминологии Wayland запросы — это сообщения, отправляемые клиентом к серверу; события — это сообщения передаваемые от сервера к клиенту; перечисления — это связанные с определённым именем наборы числовых значений, которыми манипулирует протокол.

• в утилиту wayland-scanner, предназначенную для генерации заголовочных файлов и кода на языке Си на основе XML-файлов с описанием протокола, добавлен режим "enum-header", включающий указание в заголовочных файлах только "перечислений".

• в wayland-scanner обеспечена генерация проверочных функций (validator) для "перечислений" на стороне сервера.

• добавлена возможность присвоения имён очередям событий с целью упрощения отладки.

• добавлены функции wl_client_get_user_data() и wl_client_set_user_data(), упрощающие прикрепление произвольных данных к клиенту.

• добавлен запрос wl_shm.release, позволяющий клиенту информировать сервер о прекращении использования разделяемого объекта, что позволяет серверу освободить связанную с ним память.

Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавиться от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK и Qt, берущих на себя работу по компоновке содержимого окон.

Wayland решает многие проблемы с безопасностью X11, так как в отличие от последнего изолирует ввод и вывод для каждого окна, не позволяет клиенту получить доступ к содержимому окон других клиентов, а также не допускает перехват связанных с другими окнами событий ввода. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK, Qt, SDL (начиная с выпуска 2.0.2), Clutter и EFL (Enlightenment Foundation Library). Начиная с Qt 5.4 в состав включён модуль QtWayland с реализацией компонентов для работы Qt-приложений в окружении композитного сервера Weston, развиваемого проектом Wayland.

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+5
Комментарии24

Другие новости

Ближайшие события

Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область