Dopo 13 mesi di sviluppo, è stato presentato il rilascio stabile del protocollo, del meccanismo di inter-process communication e delle librerie Wayland 1.24. Il ramo 1.24 è retrocompatibile a livello di API e ABI con le versioni 1.x e contiene principalmente correzioni di bug e aggiornamenti minori del protocollo. I risultati del progetto sono distribuiti con licenza MIT. Il server composito di riferimento Weston, che fornisce codice ed esempi funzionanti per l'uso di Wayland negli ambienti desktop e nelle soluzioni incorporate, è in fase di sviluppo all'interno di un ciclo di sviluppo separato.
Principali cambiamenti nel protocollo:
- È stata implementata l'interfaccia wl_fixes, che consente di risolvere problemi con altre interfacce software dei protocolli di base che non possono essere risolti con le sole capacità di queste interfacce. Ad esempio, la richiesta "wl_fixes::destroy_registry" permette di eliminare l'oggetto wl_registry, dopodiché il client non potrà più utilizzarlo, e il server composito smetterà di trasmettere eventi attraverso di esso.
- Nell'interfaccia di programmazione wl_keyboard::key è implementato uno stato pseudonimo «repeated», che indica che il tasto è premuto. Un tasto può essere trasformato nello stato «repeated» solo dopo essere passato nello stato «pressed», ma prima che si verifichi lo stato «released». Gli eventi associati al nuovo stato possono essere generati più volte fintanto che il tasto è premuto. Questa modifica consente ai server compositi di gestire i tasti premuti ripetutamente come stati separati, piuttosto che semplicemente come una serie di eventi ripetuti di pressione («pressed»), il che può essere utile per organizzare l'interazione con desktop remoto.
- Sono state aggiunte le funzioni wl_display_dispatch_queue_timeout() e wl_display_dispatch_timeout() per la gestione degli eventi nella coda considerando il timeout (le funzioni wl_display_dispatch e wl_display_dispatch_queue restituiscono 0 solo in assenza di eventi, mentre le varianti *_timeout restituiscono anche in caso di timeout).
- Sono state aggiunte le funzioni wl_shm_buffer_ref() e wl_shm_buffer_unref() per accedere alla memoria condivisa legata al buffer wl_shm_buffer dopo la sua eliminazione (ad esempio, quando il client termina). Le funzioni consentono di dissociare il buffer wl_shm_buffer dalla durata della risorsa principale wl_buffer, quando il server compositore deve ritardare il passaggio a un nuovo stato.
- Sono state aggiunte le funzioni wl_proxy_get_interface() e wl_resource_get_interface(), che restituiscono wl_interface per la risorsa specificata, come richiesto dai binding per linguaggi a tipizzazione dinamica.
- È stata aggiunta la funzione wl_resource_post_error_vargs(), che funge da alternativa alla funzione wl_resource_post_error() con la possibilità di fornire un elenco di argomenti per la formattazione della stringa (va_list).
Gli eventi più significativi relativi a Wayland avvenuti dalla pubblicazione dell'ultimo rilascio:
- Miglioramento del supporto di Wayland nei driver proprietari NVIDIA.
- KDE prevede di mantenere solo il supporto di Wayland. Separazione del codice kwin_x11 e kwin_wayland.
- Ubuntu e Kubuntu manterranno solo il supporto della sessione Wayland in GNOME e KDE.
- In GDM è stato lasciato solo il supporto per Wayland di default.
- GTK ha dichiarato obsoleto il backend per X11.
- In Fedora 43, it has been decided to remove packages used in GNOME for operation on the X server from the repository. All GNOME users with X11 will be forcibly switched to a Wayland-based session.
- In the Budgie desktop environment, only Wayland support will be retained.
- Xfce 4.20 has implemented partial Wayland support.
- MATE 1.28 comes with experimental Wayland support.
- Wayback is a Wayland compositing server for running X11-based desktops.
- Valve has launched the Frog project to accelerate the promotion of new Wayland protocols.
- The Cosmoe graphical interface library utilizes Wayland and a BeOS-style API.
- Enabling the Wayland driver in Wine by default.
- Transition of Raspberry Pi OS to using Wayland.
- Release of the FLTK 1.4.0 graphical toolkit with Wayland support.
- An additional phase for promoting protocols called ‘experimental’ has been added to the Wayland-Protocols set, aimed at lowering the barrier for protocol integration, accelerating protocol availability for developers, and encouraging early implementation in existing projects.
- AMD is developing its own compositing server, ACS, that uses Wayland.
- Seven alpha releases of the COSMIC desktop environment.
- Aggiornamento dei server compositi: 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.
Estensioni del protocollo aggiunte nell'ultimo anno, che completano il protocollo di base Wayland e sono fornite in un pacchetto separato Wayland-Protocols:
- color-management — funzionalità per la gestione del colore e supporto per l'esteso intervallo dinamico di luminosità (HDR, High Dynamic Range).
- color-representation-v1 — definizione della rappresentazione del colore della superficie Wayland.
- xdg-toplevel-tag — consente ai client Wayland di associare tag alle superfici di livello superiore, che il server composito può utilizzare per identificare le finestre dopo il riavvio dell'applicazione.
- ext-background-effect — applicazione di effetti alle parti semi-trasparenti della superficie Wayland, come il sfondo sfocato.
- pointer-warp — consente all'applicazione di spostare istantaneamente il puntatore nella posizione specificata.
- xx-session-management — ripristino dello stato delle finestre per sessioni interrotte (ad esempio, dopo l'arresto anomalo del gestore di composizione).
- xx-input-method — sviluppo di un nuovo protocollo per l'uso dei metodi di input del testo. ext-data-control — consente ai client privilegiati di gestire l'elaborazione dei dati, ad esempio, per implementare i gestori degli appunti.
- ext-workspace — implementa il concetto scrivanie virtuali e offre eventi con informazioni sullo stato dei desktop, oltre a funzionalità per attivare e disattivare i desktop.
- xdg-system-bell — consente di emettere un segnale di sistema, che può essere utilizzato, ad esempio, come avviso nei terminali.
- xdg-toplevel-icon — per associare l'icona con la finestra principale.
- ext-image-capture-source e ext-image-copy-capture — per catturare il contenuto visualizzato sullo schermo.
- fifo — implementa un meccanismo FIFO (first in — first out) per la gestione della coda degli aggiornamenti contenuti sulla superficie visualizzata.
- commit-timing — consente di legare un vincolo temporale al contenuto della superficie (il server composito deve visualizzare la modifica del contenuto entro il tempo specificato, ma non prima).
Ricordiamo che Wayland è un protocollo di interazione tra il server composito e le applicazioni che vi lavorano. I client eseguono autonomamente il rendering delle loro finestre in un buffer separato, trasmettendo al server composito informazioni sugli aggiornamenti, il quale combina il contenuto dei buffer delle singole applicazioni per formare l'output finale, tenendo conto di eventuali particolarità come la sovrapposizione delle finestre e la trasparenza. In altre parole, il server composito non fornisce un'API per il rendering di singoli elementi, ma opera solo con finestre già formate, il che permette di eliminare il doppio buffering quando si utilizzano librerie di alto livello, come GTK e Qt, che si occupano della composizione del contenuto delle finestre.
Wayland risolve molti problemi di sicurezza di X11, poiché a differenza di quest'ultimo isola l'input e l'output per ogni finestra, impedendo al client di accedere al contenuto delle finestre di altri client e non consente l'intercettazione degli eventi di input correlati ad altre finestre. Il supporto per il funzionamento diretto con Wayland è implementato per la maggior parte delle librerie grafiche utilizzate in Linux, tra cui GTK, Qt, SDL, FLTK, wxWidgets, Clutter e EFL (Enlightenment Foundation Library).
L’interazione con l'hardware in Wayland/Weston, ad esempio, l'inizializzazione, il cambio delle modalità video (drm modesetting) e la gestione della memoria (GEM per i915 e TTM per radeon e nouveau) delle schede grafiche può avvenire direttamente tramite un modulo che opera a livello di kernel, consentendo di operare senza privilegi di superutente. Per garantire l'esecuzione delle normali applicazioni X11 in un ambiente basato su Wayland, si utilizza il componente DDX XWayland (Device-Dependent X), simile per organizzazione a Xwin e Xquartz per le piattaforme Win32 e macOS.


Fonte: opennet.ru
