Nakon 13 mjeseci razvoja predstavljen je stabilan izdanje protokola, mehanizma međuprocesnog povezivanja i biblioteka Wayland 1.24. Grana 1.24 je unazad kompatibilna na razini API i ABI s izdanjima 1.x i uglavnom sadrži ispravke grešaka i neznatna ažuriranja protokola. Radovi projekta se šire pod MIT licencom. Referentni kompozitni poslužitelj Weston, koji pruža kod i radne primjere za korištenje Waylanda u desktop okruženjima i ugrađenim rješenjima, razvija se u okviru odvojene razvojne faze.
Glavne promjene u protokolu:
- Implementirano je sučelje wl_fixes, koje omogućava rješavanje problema s drugim softverskim sučeljima osnovnih protokola koja se ne mogu riješiti vlastitim mogućnostima tih sučelja. Na primjer, zahtjev "wl_fixes::destroy_registry" omogućava uklanjanje objekta wl_registry, nakon čega klijent ne može koristiti isti, a kompozitni poslužitelj prestaje prenositi događaje putem njega.
- U programskom sučelju wl_keyboard::key implementirano je pseudo-stanje "repeated", koje označava da je tipka pritisnuta. Tipka može biti prevedena u stanje "repeated" samo nakon prelaska u stanje "pressed", ali prije nego što nastupi stanje "released". Povezani događaji s novim stanjem mogu se generirati više puta dok je tipka pritisnuta. Ova promjena omogućava kompozitnim poslužiteljima da obrađuju ponovna pritiskanja dok je tipka držana kao odvojena stanja, a ne samo kao niz ponovljenih događaja pritiska ("pressed"), što može biti korisno za organizaciju rada s udaljenim radnim stolom.
- Dodane su funkcije wl_display_dispatch_queue_timeout() i wl_display_dispatch_timeout() za raspoređivanje događaja u redu uzimajući u obzir vremensko ograničenje (funkcije wl_display_dispatch i wl_display_dispatch_queue vraćaju 0 samo u slučaju kada nema događaja, dok opcije *_timeout vraćaju i kada nastupi vremensko ograničenje).
- Dodane su funkcije wl_shm_buffer_ref() i wl_shm_buffer_unref() za pristup dijeljenoj memoriji povezanoj s bufferom wl_shm_buffer nakon njegove eliminacije (na primjer, kada klijent završi s radom). Funkcije omogućavaju odvajanje buffer-a wl_shm_buffer od trajanja glavnog resursa wl_buffer kada kompozitnom poslužitelju zatreba odgoditi prijelaz na novo stanje.
- Dodane funkcije wl_proxy_get_interface() i wl_resource_get_interface(), koje vraćaju wl_interface za navedeni resurs, što je zahtijevano u povezivanjima za jezike s dinamičkim tipovima.
- Dodana funkcija wl_resource_post_error_vargs(), koja je alternativa funkciji wl_resource_post_error() s mogućnošću prosljeđivanja popisa argumenata za formatiranje stringa (va_list).
Najznačajniji događaji vezani za Wayland koji su se dogodili od objave prethodnog izdanja:
- Poboljšana podrška za Wayland u proprietarnim NVIDIA drajverima.
- KDE planira zadržati podršku samo za Wayland. Razdvajanje koda kwin_x11 i kwin_wayland.
- Ubuntu i Kubuntu će zadržati samo podršku za Wayland sesije u GNOME i KDE.
- U GDM-u je po defaultu zadržana samo podrška za Wayland.
- GTK je označio backend za X11 kao zastarjeli.
- U Fedora 43 odlučeno je ukloniti iz repozitorija pakete koji se koriste u GNOME-u za rad preko X-servera. Svi korisnici GNOME-a na X11 biće prisilno prebačeni na sesiju baziranu na Waylandu.
- U Budgie radnom okruženju će biti zadržana samo podrška za Wayland.
- U Xfce 4.20 je implementirana djelomična podrška za Wayland.
- MATE 1.28 s eksperimentalnom podrškom za Wayland.
- Wayback — kompozicijski server Wayland za pokretanje radnih površina na bazi X11.
- Kompanija Valve je pokrenula projekt Frog za ubrzanje promocije novih protokola Wayland.
- Biblioteka za izgradnju grafičkih sučelja Cosmoe, koja koristi Wayland i API u stilu BeOS-a.
- Uključivanje drajvera Wayland po defaultu u Wine.
- Prelazak Raspberry Pi OS na korištenje Waylanda.
- Izdanje grafičkog alata FLTK 1.4.0 s podrškom za Wayland.
- Paketu Wayland-Protocols dodana je nova faza promocije protokola — 'eksperimentalna', usmjerena na smanjenje barijere za integraciju protokola, ubrzanje dovođenja protokola do programera i poticanje ranih implementacija u postojećim projektima.
- AMD razvija vlastiti kompozicijski server ACS, koji koristi Wayland.
- Sedam alfa-izdanja radnog okruženja COSMIC.
- Ažuriranja kompozicijskih servera: 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.
Dodaci protokola dodani u posljednjih godinu dana, koji dopunjuju osnovni protokol Wayland i isporučuju se u zasebnom paketu Wayland-Protocols:
- color-management — mogućnosti za upravljanje bojom i podršku za prošireni dinamički raspon svjetline (HDR, High Dynamic Range).
- color-representation-v1 — definicija kolor reprezentacije Wayland-površine.
- xdg-toplevel-tag — omogućuje Wayland klijentima da pridruže oznake površinama najvišeg nivoa koje kompozitorski poslužitelj može koristiti za identifikaciju prozora nakon ponovnog pokretanja aplikacije.
- ext-background-effect — primena efekata na polu-transparentne delove Wayland površine, kao što je zamućenje pozadine.
- pointer-warp — omogućava aplikaciji da trenutno premesti pokazivač na određenu poziciju.
- xx-session-management — obnova stanja prozora za prekinute sesije (na primjer, nakon neuspeha kompozicijskog menadžera).
- xx-input-method — razvoj novog protokola za korištenje metoda unosa teksta. ext-data-control — omogućuje privilegiranima klijentima upravljanje obradom podataka, na primjer, za implementaciju menadžera međuspremnika.
- ext-workspace — implementira koncept virtualnih radnih površina i nudi događaje s informacijama o stanju radnih površina, kao i mogućnosti za aktiviranje i deaktiviranje radnih površina.
- xdg-system-bell — omogućuje isporuku sistemskog signala koji se može koristiti, na primjer, kao upozorenje u emulatorima terminala.
- xdg-toplevel-icon — za povezivanje ikone s prozorom najvišeg nivoa.
- ext-image-capture-source i ext-image-copy-capture — snimanje sadržaja koji se prikazuje na ekranu.
- fifo — implementira FIFO mehanizam (prvi došao, prvi otišao) za obradu redoslijeda ažuriranja sadržaja prikazane površine.
- commit-timing — omogućava vezivanje vremenskog ograničenja na sadržaj površine (kompozitni poslužitelj treba prikazati promjenu sadržaja što je prije moguće unutar navedenog vremena, ali ne ranije).
Podsećamo da Wayland predstavlja protokol interakcije između kompzitnog poslužitelja i aplikacija koje s njim rade. Klijenti sami izvršavaju crtanje svojih prozora u zasebnom baferu, prenoseći informacije o ažuriranjima kompzitnom poslužitelju, koji kombinira sadržaj bafera pojedinih aplikacija kako bi formirao konačni izlaz uzimajući u obzir moguće nijanse, poput preklapanja prozora i prozirnosti. Drugim rečima, kompzitni poslužitelj ne pruža API za crtanje pojedinačnih elemenata, već operira samo sa već formiranim prozorima, što omogućava eliminisanje dvostrukog baferiranja prilikom korištenja visoko-levelnih biblioteka kao što su GTK i Qt, koje preuzimaju radnu na kompoziciji sadržaja prozora.
Wayland rješava mnoge sigurnosne probleme X11, jer, za razliku od potonjeg, izolira unos i izlaz za svaki prozor, ne dopušta klijentu pristup sadržaju prozora drugih klijenata, kao i ne omogućava presretanje događaja unosa povezanih s drugim prozorima. Podrška za izravni rad s Waylandom implementirana je za većinu korištenih grafičkih biblioteka u Linuxu, uključujući GTK, Qt, SDL, FLTK, wxWidgets, Clutter i EFL (Enlightenment Foundation Library).
Interakcija s hardverom u Waylandu/Westonu, poput inicijalizacije, prebacivanja video režima (drm modesetting) i upravljanja memorijom (GEM za i915 i TTM za radeon i nouveau) grafičkih kartica, može se obavljati izravno putem modula koji radi na razini jezgre, što omogućuje izbjegavanje privilegija superkorisnika. Za osiguranje rada običnih X11 aplikacija u okruženju temeljenom na Waylandu koristi se DDX komponenta XWayland (Device-Dependent X), koja je organizacijski slična Xwin i Xquartz za Win32 i macOS platforme.


Izvor: opennet.ru
