Dopo quattro mesi di sviluppo, è stato presentato un rilascio stabile del protocollo, del meccanismo di interazione tra processi e delle librerie Wayland 1.26. La branch 1.26 è 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 compositore di riferimento un server Weston, che fornisce codice e esempi operativi per utilizzare Wayland in ambienti desktop e nelle soluzioni embedded, si sviluppa all'interno di un ciclo di sviluppo separato.
Principali cambiamenti nel protocollo:
- È stato aggiunto l'evento wl_pointer.warp, attraverso il quale è possibile ricevere notifiche sulla nuova posizione del puntatore senza gestire l'evento wl_pointer.motion, generato dall'attività dell'utente.
- È stata aggiunta la richiesta wl_fixes.ack_global_remove, destinata a inviare al gestore di composizione la conferma che il client ha smesso di gestire l'evento per evitare condizioni di race nella rimozione di eventi globali. Dopo aver ricevuto conferma da tutti i client, il gestore di composizione può rimuovere il gestore associato all'evento dalla propria parte.
- È stata aggiunta la funzione wl_display_remove_socket_fd() per rimuovere i socket precedentemente aggiunti tramite la chiamata wl_display_add_socket_fd().
- In modalità di debug WAYLAND_DEBUG, è fornita la registrazione del tempo nel formato «HH:MM:ss.xxxxxx», facilitando l'analisi e il confronto dei log.
Le estensioni dei protocolli aggiunte dopo l'ultima versione di Wayland, che integrano il protocollo base di Wayland e vengono fornite in un pacchetto separato di Wayland-Protocols:
- xx-fractional-scale — per la scalabilità del sistema delle coordinate logiche, i cui valori sono definiti da numeri interi, per aumentare la precisione del posizionamento e migliorare la risoluzione delle coordinate logiche fino ai singoli pixel. Questa funzionalità risolve il problema della risoluzione limitata del sistema delle coordinate logiche, non sufficiente per il posizionamento a livello dei singoli pixel, necessario per l'implementazione completa della scalabilità frazionaria.
- xx-cutouts — per ottenere informazioni sui ritagli sullo schermo (ad esempio, aree per la fotocamera frontale sullo schermo di uno smartphone).
- xx-zones — per creare e aggiungere finestre di livello superiore nelle «zone» — ambienti con il proprio spazio di coordinate. Il protocollo consente di organizzare un layout logico delle finestre, in cui ogni finestra è posizionata rispetto a un'altra finestra.
- xx-keyboard-filter — per intercettare gli eventi della tastiera selezionati dal cliente, modificare gli eventi di input o bloccare la trasmissione di determinati eventi nella superficie Wayland su cui è impostato il focus di input.
- Nella categoria «staging» è stato aggiunto il protocollo xdg-session-management, che offre la possibilità di ripristinare lo stato e la posizione delle finestre di una sessione interrotta negli ambienti basati sul protocollo Wayland, ad esempio dopo un arresto anomalo del compositore server o dell'applicazione.
- Nel protocollo «linux-dmabuf» è stata aggiunta la supporto per il funzionamento su sistemi con più GPU. Su tali sistemi, il cliente può concordare con il compositore server quale GPU utilizzare.
- Nel protocollo color-management-v1 è stata aggiunta la supporto per i metadati delle immagini nel formato BT.2100 da applicare ai compositori server specifici che consentono di visualizzare correttamente il contenuto HDR realizzato per Windows.
Gli eventi più significativi legati a Wayland che si sono verificati dopo la pubblicazione dell'ultimo aggiornamento:
- In Cinnamon è stata implementata un'eccellente supporto per Wayland.
- Nella libreria ANGLE, utilizzata in Chrome e Android, è stato aggiunto il supporto per Wayland.
- In KDE, utilizzando Wayland, è stata implementata la funzionalità per il ripristino delle sessioni ed è stato realizzato il protocollo Wayland xx-fractional-scale-v2 per la scalatura frazionaria.
- È stato creato un porto del driver X.Org Synaptics per ambienti basati su Wayland.
- È stata avviata una verifica della prontezza delle piattaforme VFX e animazione per la transizione da X11 a Wayland.
- Sono iniziati i test del server composito Xfwl4 del progetto Xfce.
- Basata su Wayfire e Libadwaita, è stata ricreata l'interfaccia utente Unity.
- Aggiornati i server compositi e gli ambienti desktop: 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.
Ricordiamo che Wayland è un protocollo di interazione tra il server composito e le applicazioni che vi operano. I client eseguono autonomamente il rendering delle proprie finestre in un buffer separato, trasmettendo le informazioni sugli aggiornamenti al compositivo server, che combina il contenuto dei buffer delle singole applicazioni per formare un output finale tenendo conto di eventuali nuance, come sovrapposizioni delle finestre e 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 nel server X.Org, poiché, a differenza di quest'ultimo, isola l'input e l'output per ogni finestra, non consente ai client di accedere al contenuto delle finestre di altri client e non permette la cattura di eventi di input associati ad altre finestre (in XLibre XServer è implementata l'estensione X11 Xnamespace, che garantisce l'isolamento dei client tramite la separazione a livello di spazi dei nomi). Il supporto per il funzionamento diretto con Wayland è implementato per la maggior parte delle librerie grafiche utilizzate in Linux, inclusi GTK, Qt, SDL, FLTK, wxWidgets, Clutter ed 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
