Dopo più di un anno di sviluppo, è stato presentato il rilascio stabile del protocollo, del meccanismo di comunicazione interprocesso e delle librerie Wayland 1.23. Il ramo 1.23 è retrocompatibile a livello API e ABI con i rilasci 1.x e contiene principalmente correzioni di bug e aggiornamenti minori del protocollo. I progressi del progetto sono distribuiti sotto licenza MIT. Il server composito di riferimento Weston, che fornisce codice e esempi di lavoro per utilizzare Wayland in ambienti desktop e soluzioni integrate, è in fase di sviluppo all'interno di un ciclo di sviluppo separato.
Principali cambiamenti nel protocollo:
- In libwayland è stato implementato un API che consente al client di definire la dimensione massima del buffer interno delle connessioni lato server. La dimensione massima di base del buffer è impostata tramite l'interfaccia wl_display, e il nuovo API consente ai client di modificarla in relazione a ciascuna connessione client. Dal punto di vista pratico, questa modifica consente di utilizzare buffer di dimensioni maggiori in client specifici di Wayland, come Xwayland, che presentano una maggiore intensità di eventi di input.
- Per richieste (request), eventi (event) ed enumerazioni (enum) è stata fornita la possibilità di utilizzare l'attributo XML "deprecated-since" per contrassegnare gli elementi obsoleti. Nella terminologia di Wayland, le richieste sono messaggi inviati dal client a server; gli eventi sono messaggi inviati dal server al client; le enumerazioni sono insieme di valori numerici correlati a un nome specifico, gestiti dal protocollo.
- È stata aggiunta alla utility wayland-scanner, destinata a generare intestazioni e codice in C basati su file XML con la descrizione del protocollo, una modalità "enum-header", che include solo "enumerazioni" negli header.
- In wayland-scanner è stata garantita la generazione di funzioni di validazione (validator) per le "enumerazioni" lato server.
- È stata aggiunta la possibilità di assegnare nomi alle code di eventi per semplificare il debug.
- Sono state aggiunte le funzioni wl_client_get_user_data() e wl_client_set_user_data(), che semplificano l'attaccamento di dati arbitrari al client.
- È stata aggiunta la richiesta wl_shm.release, che consente al client di informare il server della cessazione dell'utilizzo di un oggetto condiviso, permettendo così al server di liberare la memoria associata.
- Aggiunta del supporto per la piattaforma OpenBSD.
Eventi relativi a Wayland accaduti dall'ultima pubblicazione:
- È stata pubblicata XWayland 24.1.0, che supporta la tecnologia Explicit Sync e migliora il supporto per le architetture di accelerazione 2D GLAMOR e EXA.
- Aggiornamento del server composito labwc (Lab Wayland Compositor) con funzionalità simili a quelle di un gestore di finestre Openbox.
- Il progetto wprs, che sviluppa per Wayland un gestore di sessione simile all'utility screen, ma per applicazioni grafiche.
- Pubblicazione del server composito Niri, che utilizza Wayland e offre un metodo di layout a mosaico (tiling) con raggruppamento delle finestre in un nastro che scorre all'infinito sullo schermo.
- Aggiornamento del set di protocolli e estensioni Wayland-Protocols: 1.34, 1.33, 1.32, 1.35.
- Sviluppo della libreria SDL3, che utilizza Wayland come impostazione predefinita.
- Pubblicazione dell'ambiente desktop LXQt 2.0.0 con supporto per Wayland nel file manager PCManFM-Qt, nel sistema di notifiche, nel desktop, nell'utility di avvio programmi (Runner), nella barra dei menu, nell'interfaccia di logout, nelle impostazioni di LXQt e nella maggior parte delle applicazioni.
- Rilascio dell'ambiente utente Sway 1.9, che utilizza Wayland.
- Nuovo gestore composito miracle-wm, basato su Wayland e componenti per costruire gestori compositi Mir.
- Louvre - nuova libreria per lo sviluppo di compositori server basati su Wayland.
- Lavori per implementare il supporto di Wayland in Xfce.
- Supporto iniziale di Wayland nell'ambiente desktop Budgie.
- Supporto iniziale di Wayland nell'ambiente desktop Cinnamon.
- Quasi completato il porting dell'ambiente desktop MATE per Wayland.
- La distribuzione Lubuntu sta passando all'utilizzo di Qt 6 e Wayland.
- In KDE 6, come impostazione predefinita, è stato proposto un sessione che utilizza il protocollo Wayland. È stato implementato il supporto per le estensioni Wayland per la gestione del colore.
- Nella piattaforma Electron è stata inclusa una modalità di decorazione delle finestre per Wayland.
- Aggiornamento del server composito Wayfire, che utilizza Wayland e consente di creare interfacce utente con effetti 3D in stile 3D plugin per Compiz.
- Supporto di Wayland in IDE IntelliJ e OpenJDK.
- Supporto di Wayland nell'editor di testo GNU Emacs.
- In GNOME, nella sessione basata su Wayland, è stato implementato il supporto per l'interruttore KVM software Input Leap, che consente di utilizzare una sola tastiera e un mouse per gestire più computer.
- La versione di Fedora con desktop KDE ha interrotto il supporto per la sessione basata sul protocollo X11 nella distribuzione di base.
- Migliorato il supporto per gli ambienti basati su Wayland nei driver proprietary di NVIDIA.
- È stato implementato un driver che consente di utilizzare Wine in ambienti basati sul protocollo Wayland senza l'uso di XWayland e componenti X11.
- È stato rilasciato il server composito Weston 13.0.
- Per testare le funzionalità di KDE, GNOME, Enlightenment, Wayfire, Mir, Xfce e Sway sopra Wayland, è disponibile una distribuzione Live specifica chiamata Rebecca Black Linux.
- Nelle versioni di Firefox per Linux, l'uso del server composito Wayland è attivato per impostazione predefinita anziché XWayland. È possibile creare versioni che supportano solo Wayland.
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 input e output per ogni finestra, non consente ai client di accedere ai contenuti delle finestre di altri client e impedisce la cattura di eventi di input associati a altre finestre. Attualmente, il supporto per l'interazione diretta con Wayland è già implementato per le librerie GTK, Qt, SDL (a partire dalla versione 2.0.2), Clutter ed EFL (Enlightenment Foundation Library). A partire da Qt 5.4, è incluso il modulo QtWayland con l'implementazione di componenti per l'esecuzione di applicazioni Qt nell'ambiente del server composito Weston, sviluppato dal progetto Wayland.
L'interazione con l'hardware in Wayland/Weston, come 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 a livello di kernel, evitando così la necessità di privilegi di superutente. Il server composito Weston può operare non solo utilizzando il modulo DRM del kernel Linux, ma anche sopra X11, un altro server composito Wayland, framebuffer e RDP. Inoltre, sono in corso progetti per garantire il funzionamento sopra il stack grafico della piattaforma Android.
Nell'ambito del progetto Weston si sta sviluppando una delle implementazioni del server composito. Qualsiasi altro prodotto che supporti il protocollo Wayland può fungere da server composito. Ad esempio, attualmente sono in corso lavori per garantire il supporto di Wayland in KWin. Nella sua forma attuale, Weston è già andato oltre un semplice insieme di esempi per testare il protocollo Wayland e può essere espanso con funzionalità tramite plugin e estensioni. Si propone di realizzare shell utente e funzionalità avanzate di gestione delle finestre come backend esterni a Weston. Per garantire l'esecuzione di normali applicazioni X11 in ambienti basati su Wayland, viene utilizzato il componente DDX XWayland (Device-Dependent X), simile per organizzazione a Xwin e Xquartz per le piattaforme Win32 e macOS.


Fonte: opennet.ru
