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

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

Так как в будущих выпусках появятся дополнительные программные интерфейсы, для их идентификации клиентскими приложениями предлагается использовать объект wl_registry, который вернёт информацию о версиях протокола, поддерживаемых текущим сервером. Устаревшие интерфейсы со временем могут быть удалены, но только после предоставления альтернативы и длительного нахождения в фазе ожидания прекращения поддержки. Композитные серверы могут использовать собственные протоколы для организации взаимодействия между внутренними компонентами, но поддержка данных интерфейсов выходит за рамках протокола Wayland. Для всех релизов 1.x.x помимо обратной совместимости протокола и API будет обеспечена и совместимость на уровне ABI, т.е. слинкованные с libwayland-client.so 1.0.0 клиентские приложения смогут без пересборки использовать все остальные выпуски серии 1.x.x.

Для серверного API, определённого в wayland-server.h и используемого для взаимодействия с композитным сервером, стабильность протокола будет сохранена в рамках ветки 1.0.x (т.е. в версии 1.1.0 совместимость может быть нарушена). API м ABI для разработки модулей к композитному серверу Weston также будут стабилизированы в рамках ветки 1.0.x, несмотря на то, что программные интерфейсы для создания модулей пока официально не представлены и ограничиваются вызовами, определёнными в заголовочном файле src/compositor.h.

В ближайшее время ожидается увеличение числа продуктов для прямой работы с Wayland и проведение интеграции поддержки технологий Wayland в дистрибутивы. В частности, в состав Ubuntu 13.04 планируется включить реализацию графического окружения, построенного поверх дисплейного сервера Wayland и композитного сервера Weston. Переход на Wayland позволит обеспечить бесшовную работу единого графического режима на протяжении всех стадий работы дистрибутива, включая загрузку, вход в систему и завершение работы. Кроме того, вследствие более простой архитектуры и исключения лишней буферизации, будет достигнуто увеличение производительности вывода на экран. Выполнение классических X11-приложений будет доступно по умолчанию благодаря интеграции прослойки XWayland.

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

В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK3+, Qt 5, SDL, Clutter и EFL (Enlightenment Foundation Library). К сожалению, из-за наличия прямых обращений к библиотекам X11 не все приложения на базе вышеотмеченных тулкитов смогут без переработки кода работать поверх Wayland. Например, из 22 протестированных GTK-приложений, доступных по умолчанию в меню Ubuntu, под управлением Wayland заработали только 9, так как оставшиеся 13 использовали функции Xlib. Тем не менее, уже наблюдается прогресс в проведении чистки приложений от прямого обращения к Xlib, например, разработчики проекта KDE приступили к осуществлению плана по обеспечению работы KDE и KWin поверх Wayland.

В рамках проекта Weston развивается один из прототипов реализации композитного сервера. Подчёркивается, что это лишь одна из реализаций (по аналогии с оконными менеджерами), так как в роли композитного сервера может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в таких существующих композитных менеджерах для X11, как KWin и Compiz. Взаимодействие с аппаратным обеспечением, например, проведение инициализации, переключение видеорежимов (drm modesetting) и управление памятью (GEM для i915 и TTM для radeon и nouveau) графических карт, может производиться напрямую через модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя. Композитный сервер Weston может работать не только с использованием DRM-модуля ядра Linux, но и поверх X11 или поверх другого композитного сервера Wayland.

Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland и композитного сервера Weston развивается проект XWayland, позволяющий организовать запуск полноценного X.Org-сервера в роли клиента Wayland. Примечательно, что разработчики проекта X.Org планируют включить компонент XWayland в состав X.Org Server начиная с выпуска 1.14, который ожидается в марте 2013 года, что значительно упростит решение задач по интеграции X11-приложений в окружения на базе Wayland. Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. При таком подходе процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland.

Для решения вопроса с организацией работы с приложениями, запущенными на другой машине, для Wayland подготовлен прототип системы удалённого рендеринга, выполненный в виде дополнения к композитному серверу Weston, которое выступает в роли надстройки для обеспечения сетевого взаимодействия при организации рендеринга и передачи событий от устройств ввода. Взаимодействие происходит на уровне двух композитных менеджеров, т.е. композитный сервер Weston на локальной системе, на которой работает пользователь, может отображать отдельные окна из композитного сервера Weston, запущенного на удалённой системе. Трансляция вывода реализована на основе передачи изменения содержимого отдельных окон, обслуживаемых композитным сервером. По сети передаются только изменившиеся элементы окон, изменения вычисляются на уровне битмапов и передаются с использованием протокола похожего на VNC.

Из планов на будущее отмечается подготовка прослойки для обеспечения сетевой прозрачности, учёт MIME-типов при манипуляции данными через буфер обмена и механизм drag&drop, создание протокола для управления элементами декорации окон (назначение заголовка и размещение кнопок закрытия/сворачивания), определение логики работы с всплывающими окнами, поддержка синхронного вывода изображений на несколько мониторов, возможность предоставления совместного доступа к буферам для клиента, создания протокола для управления настройками (темы оформления, параметры шрифтов и т.п.).

Оценить состояние и возможности проекта Wayland можно воспользовавшись специализированным Live-дистрибутивом RebeccaBlackOS, последняя сборка которого произведена в конце августа. В состав дистрибутива включено окружение на базе Wayland с композитным сервером Weston и поддерживающими Wayland сборками библиотек Qt, Gtk+ и EFL. Для запуска обычных X-приложений в состав включён Xwayland.

Источник: http://www.opennet.ru/opennews/art.shtml?num=35142