След 13 месеца разработка е представена стабилна версия на протокола, механизма за межпроцесно взаимодействие и библиотеките Wayland 1.24. Ветката 1.24 е обратно съвместима на ниво API и ABI с изданията 1.x и съдържа основно корекции на грешки и незначителни обновления на протокола. Разработките на проекта се разпространяват под лицензия MIT. Референтният композитен сървър Weston, предоставящ код и работни примери за използването на Wayland в десктоп среди и вградени решения, се развива в рамките на отделен цикъл на разработка.
Основни промени в протокола:
- Реализиран е интерфейсът wl_fixes, позволяващ решаване на проблеми с други програмни интерфейси на базовите протоколи, които не могат да бъдат устранени със собствени средства на тези интерфейси. Например, заявката „wl_fixes::destroy_registry“ позволява ликвидиране на обект wl_registry, след което клиентът не може да го използва, а композитният сървър ще спре предаването на събития през него.
- В програмния интерфейс wl_keyboard::key е реализирано псевдо-състояние „repeated“, означаващо натисната клавиша. Клавишът може да бъде преведен в състояние „repeated“ само след преминаване в състояние „pressed“, но преди настъпването на състояние „released“. Свързаните с новото състояние събития могат да се генерират няколко пъти, докато клавишът е натиснат. Промяната позволява на композитни сървъри да обработват повторни натискания при задържане на клавишите като отделни състояния, а не просто като поток от повторни събития на натиск („pressed“), което може да бъде полезно за организация на работа с отдалечен работен плот.
- Добавени функции wl_display_dispatch_queue_timeout() и wl_display_dispatch_timeout() за диспечиране на събития в опашката с оглед на таймаута (функциите wl_display_dispatch и wl_display_dispatch_queue връщат 0 само при липса на събития, а вариантите *_timeout също и при настъпване на таймаута).
- Добавени функции wl_shm_buffer_ref() и wl_shm_buffer_unref() за достъп до споделена памет, свързана с буфера wl_shm_buffer, след неговата ликвидация (например, когато клиентът завърши работа). Функциите позволяват да се отдели буфера wl_shm_buffer от жизнения цикъл на основния ресурс wl_buffer, когато на композитния сървър е необходимо да забави прехода към ново състояние.
- Добавени функции wl_proxy_get_interface() и wl_resource_get_interface(), които връщат wl_interface за указан ресурс, което е нужно в обвивките за езици с динамична типизация.
- Добавена е функцията wl_resource_post_error_vargs(), която служи като алтернатива на функцията wl_resource_post_error() с възможността да предаде списък от аргументи за форматиране на низ (va_list).
Най-забележителните събития, свързани с Wayland и настъпили след публикуването на предишния брой:
- Подобрена поддръжка на Wayland в проприетарни драйвери NVIDIA.
- KDE планира да запази само поддръжката на Wayland. Разделяне на кода kwin_x11 и kwin_wayland.
- Ubuntu и Kubuntu ще запазят само поддръжка на сесия Wayland в GNOME и KDE.
- В GDM по подразбиране е запазена само поддръжката на Wayland.
- GTK премести бекенда за X11 в категорията на остарели.
- В Fedora 43 е решено да се премахнат от репозитория пакетите, използвани в GNOME за работа над X-сървъра. Всички потребители на GNOME с X11 ще бъдат принудително преместени на сесия, базирана на Wayland.
- В средата на работния плот Budgie ще бъде запазена само поддръжката на Wayland.
- В Xfce 4.20 е реализирана частична поддръжка на Wayland.
- MATE 1.28 с експериментална поддръжка на Wayland.
- Wayback — композитен сървър Wayland за стартиране на работни станции, базирани на X11.
- Компанията Valve стартира проекта Frog за ускоряване на напредъка на новите Wayland протоколи.
- Библиотеката за изграждане на графични интерфейси Cosmoe, използваща Wayland и API в стил BeOS.
- Включване по подразбиране на драйвера Wayland в Wine.
- Преминаване на Raspberry Pi OS към използването на Wayland.
- Пуснат е графичният тулкит FLTK 1.4.0 с поддръжка на Wayland.
- В набора Wayland-Protocols е добавена допълнителна фаза за напредък на протоколите — ‘experimental’, насочена към намаляване на бариерите за интеграция на протоколи, ускоряване на предоставянето на протоколи на разработчиците и стимулиране на ранната реализация в съществуващи проекти.
- AMD развива собствен композитен сървър ACS, използващ Wayland.
- Седем алфа-издания на работната среда COSMIC.
- Актуализация на композитни сървъри: Weston 14.0, Niri 25.05, Wayland Maker 0.5, miracle-wm 0.5, Hyprland 0.49, labwc 0.8.3, Cage 0.2, Wayfire 0.9, Sway 1.11.
Добавени за последната година разширения на протоколите, допълващи основния протокол Wayland и предоставяни в отделен пакет Wayland-Protocols:
- color-management — възможности за управление на цвета и поддръжка на разширен динамичен диапазон на яркост (HDR, High Dynamic Range).
- color-representation-v1 — задаване на цветово представяне на Wayland повърхността.
- xdg-toplevel-tag — позволява на клиентите на Wayland да прикачат тагове към повърхностите на горно ниво, които композитният сървър може да използва за идентифициране на прозорци след рестартиране на приложението.
- ext-background-effect — прилагане на ефекти към полупрозрачните части на Wayland-повърхността, като размазване на фона.
- pointer-warp — позволява на приложението незабавно да премести указателя в указаната позиция.
- xx-session-management — възстановяване на състоянието на прозорците за прекъснати сесии (например, след аварийно приключване на композитния мениджър).
- xx-input-method — развитие на нов протокол за използване на методи за въвеждане на текст. ext-data-control — позволява на привилегировани клиенти да управляват обработката на данни, например, за реализиране на мениджъри на буфера за обмен.
- ext-workspace — реализира концепцията виртуални работни площи и предлага събития с информация за състоянието на работните плотове, както и възможности за активиране и деактивиране на работни плотове.
- xdg-system-bell — позволява излъчването на системен сигнал, който може да се използва, например, като предупреждение в емулацията на терминали.
- xdg-toplevel-icon — за свързване на иконка с прозорец на горно ниво.
- ext-image-capture-source и ext-image-copy-capture — улавяне на съдържание, изведено на екрана.
- fifo — реализира FIFO механизъм (първи пристигнал — първи обслужен) за обработка на опашката на обновяване на съдържанието на показваната повърхност.
- commit-timing — позволява свързването на времево ограничение към съдържанието на повърхността (композитният сървър трябва да показва промяна в съдържанието възможно най-скоро след указаното време, но не по-рано).
Напомняме, че Wayland представлява протокол за взаимодействие между композитния сървър и приложенията, които работят с него. Клиентите сами извършват рисуването на своите прозорци в отделен буфер, предавайки информация за обновленията на композитния сървър, който комбинира съдържанието на буферите на отделните приложения, за да формира окончателния изход с оглед на възможни нюанси, като припокриване на прозорци и прозрачност. С други думи, композитният сървър не предоставя API за рисуване на отделни елементи, а работи само с вече формирани прозорци, което позволява да се избегне двойно буфериране при използването на високостепенни библиотеки, като GTK и Qt, които поемат работата по композиране на съдържанието на прозорците.
Wayland решава много проблеми със сигурността на X11, тъй като за разлика от последния, изолира входа и изхода за всеки прозорец, не позволява на клиента да получи достъп до съдържанието на прозорците на други клиенти и не допуска прихващане на събития за вход, свързани с други прозорци. Поддръжката на директна работа с Wayland е реализирана за повечето използвани в Linux графични библиотеки, включително GTK, Qt, SDL, FLTK, wxWidgets, Clutter и EFL (Enlightenment Foundation Library).
Взаимодействието с хардуера в Wayland/Weston, например, извършване на инициализация, превключване на видео режими (drm modesetting) и управление на паметта (GEM за i915 и TTM за radeon и nouveau) на графични карти, може да се реализира директно чрез модул, работещ на ядрено ниво, което позволява да се избегне необходимостта от права на суперпотребител. За да се осигури изпълнението на стандартните X11 приложения в среда, базирана на Wayland, се използва DDX компонент XWayland (Device-Dependent X), подобен по организация на работа на Xwin и Xquartz за платформи Win32 и macOS.


Източник: opennet.ru
