Прошло больше года, и команда разработчиков представила очередной стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.23. Положительным моментом является то, что эта версия обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Подробности — под катом.
Что такое Wayland?
Это специфический протокол взаимодействия композитного сервера и зависимых приложений. Клиенты отрисовывают окна в выделенном буфере. Соответственно, эта информация поступает композитному серверу. А он, в свою очередь, комбинирует содержимое буферов отдельных приложений для формирования финального вывода с учётом ряда факторов, включая прозрачность окон и перекрытие.
В ряде случаев Wayland позволяет решить большое количество проблем с безопасностью Х11. Дело в том, что он изолирует как ввод, так и вывод для каждого окна. Не позволяет клиенту получить доступ к содержимому окна других клиентов. А также не позволяет перехватить связанные с другими окнами события ввода. На данный момент поддержка прямой работы с Wayland готова для библиотек GTK, Qt, SDL (начиная с выпуска 2.0.2), Clutter и EFL (Enlightenment Foundation Library). Начиная с Qt 5.4 в состав включён модуль QtWayland с реализацией компонентов для работы Qt-приложений в окружении композитного сервера Weston, развиваемого проектом Wayland.
Стоит отметить, что в рамках этого проекта развивается ещё один вариант композитного сервера. Так, в роли последнего может быть любой продукт, который поддерживает протокол Wayland. К примеру, сейчас идёт работа по обеспечению поддержки Wayland в KWin. Функциональность Weston можно расширять, добавляя плагины и дополнения. Пользовательские оболочки и расширенные функции управления окнами предлагается реализовывать в форме внешних бэкендов к Weston. Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland используется DDX-компонент XWayland (Device-Dependent X), похожий по организации работы на Xwin и Xquartz для платформ Win32 и macOS.
Ну хорошо, а что нового?
Для запросов, событий и перечислений теперь появилась возможность использования XML-атрибута "deprecated-since" для пометки устаревших элементов. Что касается запросов, то в данном контексте это сообщения, которые отправляются клиентом к серверу, события — сообщения, передаваемые от сервера к клиенту. Ну а перечисления — связанные с определённым именем наборы числовых значений, которыми манипулирует протокол.
В libwayland добавлен API, который предоставляет возможность для клиента определить максимальный размер внутреннего буфера соединений на стороне сервера. Базовый максимальный размер буфера выставляется через интерфейс wl_display, а новый API позволяет клиентам изменять его в привязке к каждому клиентскому соединению. C практической стороны изменение позволяет использовать буферы большего размера в специфичных Wayland-клиентах, таких как Xwayland, которым свойственна большая интенсивность событий ввода.
В утилиту wayland-scanner, предназначенную для генерации заголовочных файлов и кода на языке Си на основе XML-файлов с описанием протокола, добавлен режим "enum-header", включающий указание в заголовочных файлах только «перечислений».
В wayland-scanner обеспечена генерация проверочных функций (validator) для «перечислений» на стороне сервера.
Добавлен API для назначения очереди имени с целью упрощения последующей отладки.
Добавлены функции wl_client_get_user_data() и wl_client_set_user_data(), упрощающие прикрепление произвольных данных к клиенту.
Добавлен запрос wl_shm.release, позволяющий клиенту информировать сервер о прекращении использования разделяемого объекта, что позволяет серверу освободить связанную с ним память.
Добавлена поддержка платформы OpenBSD.
Начальная поддержка Wayland в среде рабочего стола Budgie.
Начальная поддержка Wayland в среде рабочего стола Cinnamon.
Почти завершено портирование рабочего стола MATE для Wayland.
Отдельно стоит выделить появление в KDE6 сеанса, который использует протокол Wayland. Также реализована поддержка расширений, позволяющих управлять цветом.
Добавлена поддержка Wayland в IDE IntelliJ, OpenJDK и GNU Emacs.
В GNOME в сеансе на базе Wayland реализована поддержка программного KVM-коммутатора Input Leap, позволяющего использовать одну клавиатуру и мышь для управления несколькими компьютерами.
Редакция Fedora с рабочим столом KDE прекратила поддержку сеанса на основе протокола X11 в базовой поставке.
Улучшена поддержка окружений на базе Wayland в проприетарных драйверах NVIDIA.
Реализован драйвер, позволяющий использовать Wine в окружениях на базе протокола Wayland без применения XWayland и компонентов X11.
Сформирован выпуск композитного сервера Weston 13.0.
Для тестирования работы KDE, GNOME, Enlightenment, Wayfire, Mir, Xfce и Sway поверх Wayland выпускается специальный Live-дистрибутив Rebecca Black Linux.
В Linux-сборках Firefox по умолчанию включено использование композитного сервера Wayland вместо XWayland. Предоставлена возможность создания сборок, поддерживающих работу только в Wayland.
Дополнительные подробности доступны здесь.