Состоялся первый стабильный релиз комплекта библиотек и протокола Wayland, а также эталонного композитного сервера Weston. Версия 1.0 знаменует собой стабилизацию протокола, которая, впрочем, не означает, что протокол не сможет более совершенствоваться. Это означает лишь, что нынешняя версия протокола охватывает всю базовую функциональность, использование которой позволит дополнять Wayland нужными возможностями.
Механизм версионирования протокола аналогичен таковому для расширений Хorg. Основная идея в том, что новые версии никогда не нарушают обратной совместимости, вместо замещения старых запросов и событий происходит дополнение. Объект wl_registry уведомляет клиентские приложения о поддерживаемых версиях протокола. Если сервер использует более старый протокол, приложение не будет посылать неподдерживаемые запросы.
Впрочем, устаревшие интерфейсы могут быть удалены, но только после большого промежутка времени в статусе «deprecated» и только при наличии полноценной замены.
Описание политики версионирования:
- Стабильность протокола и сгенерированного кода, объявленных в wayland.xml, а также клиентского API, определённого в wayland-client.h, будет обеспечиваться для всех версий ветки 1.хх. В ветке 1.хх протокол может быть расширен, но все приложения, собранные с libwayland-client.so версии 1.0.0, будут работать и с версиями в пределах 1.хх.
- Серверная часть сгенерированного кода и серверный API останутся стабильными в пределах ветки 1.0.х. В главной ветке могут быть различные миграции кода между Wayland и Weston или другие ломающие API ситуации. В итоге может быть выпущен релиз 1.1.0, сохраняющий стабильность протокола и на стороне сервера, но чётких планов в этой сфере пока нет.
- Weston будет сохранять стабильность API и ABI в пределах ветки 1.0.х. Работа над новыми функциями проолжится в главной ветке.
Изменения с версий 0.95.0 и 0.99.0:
- Безусловно, самое значительное изменение - более безопасное API нитей. Удалены обратные вызовы из основного API и представлен новый механизм: wl_event_queue.
- Механизм атомарного обновления поверхностей. Ранее точного определения момента обновления поверхностей просто не существовало, что могло привести к появлению артефактов. Теперь существует запрос wl_surface.commit, который должен использоваться для применения изменений к поверхностям.
- Более точная проверка ошибок.
- Удалены неименованные ARRAY_LENGTH и container_of из API.
- Исправлено большое количество ошибок и существенно дополнена документация.
Напомним, что на данный момент вывод через Wayland поддерживается в Qt 5, GTK+ 3, Clutter и EFL. Также ведётся работа по внедрению поддержки Wayland в SDL.
Для желающих поэкпериментировать доступен git-репозиторий проекта Wayland, а так же Live-дистрибутив для тестирования.
>>> Подробности