È stata pubblicata una nuova versione Servo 0.2.0 — nuova versione di un motore browser sperimentale, scritto in Rust. Il rilascio è avvenuto 31 maggio 2026 e include modifiche apportate ad aprile: in totale gli sviluppatori hanno registrato 534 commit, un nuovo record mensile per il progetto. Servo si sta sviluppando come un progetto indipendente sotto l'egida della Linux Foundation Europe ed è focalizzato sulla creazione di un motore web leggero e integrabile per applicazioni, piattaforme mobili e shell browser sperimentali.
Modifiche principali
Interfaccia di servoshell per Android riprogettata.
Nella versione Android della shell di demo di Servo, l'interfaccia browser è stata aggiornata e è stato aggiunto un nuovo schermo della cronologia. L'APK è diventato circa il 30% più piccolo e risolto un errore con lo schermo nero alla chiusura delle impostazioni o al ritorno da un'altra applicazione. Ora è possibile chiudere le schede anche per OpenHarmony.Migliorato il supporto per il testo in cinese, giapponese e coreano.
Nel motore di layout è stata corretta la gestione dei ritorni a capo per le lingue CJK, e nell'interfaccia di servoshell su Windows, Linux e FreeBSD sono stati inclusi i font CJK. Questo è importante per la visualizzazione corretta dei siti in lingue dove le regole di interruzione e selezione dei font sono diverse dall'alfabeto latino.Aggiunta la visualizzazione interattiva del JSON.
Se si apre il file JSON come documento principale, Servo ora lo mostra tramite un prettifier interattivo. Questo rende il motore più utile non solo per la navigazione delle pagine, ma anche per gli sviluppatori che devono aprire risposte API e dati strutturati direttamente nel browser.Supporto web platform ampliato.
Servo introduce <select multiple>, <template shadowrootslotassignment>, riproduzione di <video> su OpenHarmony, supporto per minimum-scale e maximum-scale in <meta name=viewport>, CSS-function color-mix() con un numero arbitrario di colori, tab-size, text-align: match-parent, creazione di Worker da blob URL, contesto WebGL per OffscreenCanvas, e inoltre la proprietà detail di PerformanceMark e PerformanceMeasure.Nuove API DOM aggiunte.
Implementati gli eventi selectionchange per <input> e <textarea>, StorageManager sperimentale, activeElement per Document e ShadowRoot, crypto.subtle.supports(), proprietà cellPadding, cellSpacing e align di HTMLTableElement, relatedTarget per eventi focus e blur, e transferFromImageBitmap() per ImageBitmapRenderingContext. Gli sviluppatori notano in particolare che Servo è diventato il primo grande motore di navigazione con supporto per crypto.subtle.supports().Migliorate la navigazione da tastiera e la gestione del focus.
Ora il tab può attraversare i confini dei , e Ctrl+Backspace — o Option+Backspace su macOS — rimuove completamente la parola nei campi di input. Inoltre, sono stati corretti errori di focus e IME nella versione desktop di servoshell.Strumenti per sviluppatori ampliati.
In combinazione con Firefox DevTools, le schede Inspector, Console e Debugger sono migliorate. Il pannello Rules ora mostra le dichiarazioni da @layer, e Console e Debugger offrono più informazioni su funzioni, array, oggetti e altri valori, è possibile ispezionare variabili locali e globali attraverso Scopes, debuggare script worker e c'è un supporto iniziale per Style Editor.La sicurezza è stata rafforzata.
CryptoKey ora sovrascrive i buffer con materiale chiave dopo l'uso. Risolti problemi di accesso alle API DOM tra documenti con origini diverse, errori di isolamento localStorage e sessionStorage in iframe sandboxed e iframe srcdoc, accessibilità scorretta di IndexedDB in iframe sandboxed e worker da URL data:, possibilità di sovrascrittura dei cookie tra alcuni IP-origin, lettura della memoria oltre il buffer in texImage3D() per WebGL2, e comportamento indefinito nel gestore di segnali di servoshell.Proseguono i lavori su IndexedDB e lo storage.
IndexedDB è attivato in modalità sperimentale su servoshell ed è stato trasferito nel nuovo sistema "client storage", il quale dovrebbe fornire a Servo un formato di archiviazione unificato su disco e una gestione comune delle quote per le funzionalità web che salvano dati. Inoltre, sono stati migliorati i requisiti relativi agli intervalli di chiave, il trattamento delle transazioni, delle chiavi, dei valori e delle eccezioni.L'API per l'integrazione di Servo è stata aggiornata.
Poiché si tratta del secondo rilascio mensile della libreria Servo, gli sviluppatori hanno precisato la politica di compatibilità: la versione 0.2.0 è considerata un aggiornamento breaking rispetto alla 0.1.x. È stata aggiunta la possibilità di caricare URL con intestazioni HTTP personalizzate tramite WebView::load_request, recupero asincrono dei cookie, cancellazione solo dei cookie di sessione senza rimuovere i cookie permanenti, trasmissione di destination e referrer_url durante l'intercettazione delle richieste, e modalità di archiviazione temporanea per isolare i dati di sessione.Sono stati corretti bug di visualizzazione e comportamento delle pagine.
Gli sviluppatori menzionano correzioni per console.log, animazioni CSS, box-shadow, display: contents, display: inline-flex, display: table-cell, overflow: clip, posizionamento assoluto all'interno di grid, word-spacing, removeChild() su Document e URL.revokeObjectURL(). Inoltre, è stato migliorato l'aspetto di e del placeholder inPrestazioni migliorate e riduzione del consumo di memoria.
Risolti significativi problemi di efficienza: il caricamento della specifica ECMAScript è stato accelerato grazie a una revisione del trattamento degli attributi id e name, il primo sessione TLS è diventata più veloce di 30–60 ms, ridotto il traffico IPC tra i thread, diminuito il consumo di memoria dei nodi DOM Attr, Text e CharacterData di 16 byte per nodo, corretta una perdita di memoria durante la rimozione di <video controls> e <audio controls>. La pagina about:memory ora tiene conto in modo più preciso delle allocazioni di memoria, inclusi gli allocamenti libc su Linux.
In sintesi, Servo 0.2 rappresenta un ulteriore passo verso la trasformazione del progetto in un motore web adatto all'incorporamento: migliorata l'interfaccia mobile, aumentata la compatibilità con gli standard web moderni, risolti problemi di sicurezza e gradualmente stabilizzato l'API per gli sviluppatori di applicazioni.
Fonte: linux.org.ru




