Efter fire måneders udvikling præsenteres en stabil udgave af Wayland-protokollen, mekanismen til inter-proces kommunikation og bibliotekerne Wayland 1.26. 1.26-grenen er bagudkompatibel med både API- og ABI-niveauer for versioner 1.x og indeholder hovedsageligt fejlrettelser og mindre protokolopdateringer. Projektets udviklinger distribueres under MIT-licensen. Referencemanagersystemet server Weston, der leverer kode og arbejdsprøver til brug af Wayland i skrivebordsmiljøer og indlejrede løsninger, udvikles i en separat udviklingscyklus.
De vigtigste ændringer i protokollen:
- Der er tilføjet en hændelse wl_pointer.warp, som gør det muligt at modtage meddelelser om den nye position af pegeren uden at skulle behandle hændelsen wl_pointer.motion, der genereres under brugeraktivitet.
- Anmodningen wl_fixes.ack_global_remove er tilføjet, som er beregnet til at sende en bekræftelse til kompositmanageren om, at klienten har stoppet behandlingen af hændelsen for at undgå racebetingelser ved fjernelse af globale hændelser. Når bekræftelsen er modtaget fra alle klienter, kan kompositmanageren fjerne den tilknyttede hændelseshåndterer på sin side.
- Funktionen wl_display_remove_socket_fd() er tilføjet til at fjerne sockets, der tidligere er tilføjet gennem kaldet wl_display_add_socket_fd().
- I fejlsøgningsmodus WAYLAND_DEBUG gives logoutput i tidsformatet 'HH:MM:ss.xxxxxx', hvilket gør det lettere at analysere og sammenligne logs.
De tilføjede protokoludvidelser efter den tidligere udgave af Wayland, som supplerer den grundlæggende Wayland-protokol og leveres i et separat sæt Wayland-Protocoler:
- xx-fractional-scale — til skalering af systemets logiske koordinater, hvor værdierne angives som heltal for at øge præcisionen af positioneringen og øge opløsningen af de logiske koordinater til enkeltpixel. Denne funktion løser problemet med det begrænsede opløsning af systemets logiske koordinater, som er utilstrækkelig til at positionere på enkeltpixel-niveau, nødvendigt for fuldstændig implementering af brøkdelsskala.
- xx-cutouts — til at få information om udskæringer på skærmen (for eksempel områder under frontkameraet på en smartphone).
- xx-zones — til oprettelse og tilføjelse af top-level vinduer i 'zoner' — miljøer med deres eget koordinatrum. Protokollen gør det muligt at organisere en logisk placering af vinduer, hvor hvert vindue placeres i forhold til et andet vindue.
- xx-keyboard-filter — til at opfange udvalgte tastaturbegivenheder fra klienten, ændre inputbegivenheder eller blokere overførslen af bestemte begivenheder til Wayland-overfladen, hvor inputfokus er installeret.
- Protokollet xdg-session-management er blevet tilføjet til kategorien „staging“, hvilket giver mulighed for at gendanne tilstand og position af vinduerne fra en afbrudt session i miljøer baseret på Wayland, for eksempel efter et nedbrud af kompositøren. server eller applikationen.
- Protokollen «linux-dmabuf» har fået tilføjet support for drift på systemer med flere GPU'er. På sådanne systemer kan klienten forhandle med kompositterne serveren hvilken GPU der skal bruges.
- I protokollen color-management-v1 er der tilføjet støtte for metadata af billeder i BT.2100-formatet til brug i kompositspecifikke serveren behandlere, der muliggør korrekt visning af HDR-indhold, der er skabt til Windows.
De mest bemærkelsesværdige begivenheder relateret til Wayland, som har fundet sted siden udgivelsen af den seneste version:
- Cinnamon har fået fuld support for Wayland.
- Wayland-support er blevet tilføjet til ANGLE-biblioteket, der anvendes i Chrome og Android.
- I KDE er der implementeret sessiongengivelse ved brug af Wayland, og Wayland-protokollen xx-fractional-scale-v2 for brøkdimensionering er blevet realiseret.
- Der er oprettet en port af X.Org-driveren til Synaptics til miljøer baseret på Wayland.
- En evaluering af VFX- og animationsplatformenes klarhed til at erstatte X11 med Wayland er blevet igangsat.
- Testningen af kompositserveren Xfwl4 fra Xfce-projektet er startet.
- Brugergrænsefladen Unity er blevet genskabt på basis af Wayfire og Libadwaita.
- Kompositserverne og skrivebordsmiljøerne er blevet opdateret: COSMIC 1.3.0, Weston 16, Phosh 0.56, Nourish 1.0.0, miracle-wm 0.10, KDE Plasma 6.7, labwc 0.20, Sway 1.2, Wayland Maker 0.8, Hyprland 0.55, Niri 26.04, LXQt 2.4.0, Cage 0.3.
Det er værd at bemærke, at Wayland er et protokol for interaktion mellem kompositserveren og de applikationer, der arbejder med den. Klienter håndterer selv gengivelsen af deres vinduer i en separat buffer, idet de sender oplysninger om opdateringer til kompositoren. server, som kombinerer indholdet fra bufferne af de enkelte applikationer for at danne det endelige output med hensyntagen til eventuelle nuancer, såsom vinduesoverlap og gennemsigtighed. Med andre ord giver kompositserveren ikke en API til gengivelse af enkelte elementer, men arbejder kun med allerede dannede vinduer, hvilket gør det muligt at undgå dobbelt buffering ved brug af højere niveau biblioteker såsom GTK og Qt, der tager sig af arbejdet med at sammensætte indholdet af vinduer.
Wayland løser mange af sikkerhedsproblemerne i X11 i X.Org Server, da det i modsætning til sidstnævnte isolerer input og output for hvert vindue, forhindrer klienten i at få adgang til indholdet af andre klienters vinduer og tillader ikke opsnappet af inputbegivenheder relateret til andre vinduer (i XLibre XServer er X11-udvidelsen Xnamespace implementeret, som sikrer isolering af klienter gennem opdeling på navneområdeniveau). Understøttelse af direkte arbejde med Wayland er implementeret for de fleste grafiske biblioteker, der anvendes i Linux, herunder GTK, Qt, SDL, FLTK, wxWidgets, Clutter og EFL (Enlightenment Foundation Library).
Interaktion med hardware i Wayland/Weston, for eksempel initialisering, skift af videomodes (drm modesetting) og hukommelsesstyring (GEM for i915 og TTM for radeon og nouveau) af grafikkort, kan ske direkte gennem en modul, der arbejder på kernens niveau, hvilket gør det muligt at undgå superbrugerprivilegier. For at muliggøre kørsel af almindelige X11-applikationer i et Wayland-baseret miljø bruges DDX-komponenten XWayland (Device-Dependent X), som ligner driften af Xwin og Xquartz til Win32 og macOS-platforme.
Kilde: opennet.ru
