A apărut o nouă versiune Servo 0.2.0 — o nouă versiune a motorului de browser experimental, scris în Rust. Lansarea a avut loc 31 mai 2026 și include modificările realizate în aprilie: totalul a fost de 534 de comituri, ceea ce a constituit un nou record lunar pentru proiect. Servo evoluează ca un proiect independent sub egida Linux Foundation Europe și este destinat creării unui motor web ușor de integrat pentru aplicații, platforme mobile și shell-uri experimentale de browsere.
Principalele modificări
Interfața servoshell pentru Android a fost refăcută.
În versiunea Android a shell-ului de demonstrație Servo, interfața browser-ului a fost actualizată și a fost adăugat un nou ecran de istoric. APK-ul a devenit cu aproximativ 30% mai mic, iar o eroare cu un ecran negru la închiderea setărilor sau revenirea din altă aplicație a fost corectată. Pentru OpenHarmony acum este posibil să închizi tab-uri.Suportul pentru text în chineză, japoneză și coreeană a fost îmbunătățit.
Motorul de layout a corectat procesarea întreruperilor de linie pentru limbile CJK, iar în interfața servoshell pe Windows, Linux și FreeBSD au fost incluse fonturi CJK. Acest lucru este important pentru o afișare reală a site-urilor pe limbile unde regulile de întrerupere și selecția fonturilor diferă de cele latine.A fost adăugat un vizualizator interactiv pentru JSON.
Dacă deschizi un fișier JSON ca document principal, Servo acum îl afișează printr-un pretty-printer interactiv. Acest lucru face motorul mai convenabil nu doar pentru vizualizarea obișnuită a paginilor, ci și pentru dezvoltatori care trebuie să deschidă răspunsuri API și date structurate direct în browser.Suportul pentru Web Platform s-a extins.
În Servo au apărut <select multiple>, <template shadowrootslotassignment>, redare <video> pe OpenHarmony, suport pentru minimum-scale și maximum-scale în <meta name=viewport>, funcția CSS color-mix() cu un număr arbitrar de culori, tab-size, text-align: match-parent, crearea Worker din blob URL, context WebGL pentru OffscreenCanvas, precum și proprietatea detail pentru PerformanceMark și PerformanceMeasure.Au fost adăugate noi API-uri DOM.
Au fost implementate evenimentele selectionchange pentru <input> și <textarea>, StorageManager experimental, activeElement pentru Document și ShadowRoot, crypto.subtle.supports(), proprietățile cellPadding, cellSpacing și align ale HTMLTableElement, relatedTarget pentru evenimentele focus și blur, precum și transferFromImageBitmap() pentru ImageBitmapRenderingContext. Dezvoltatorii subliniază în mod special că Servo a devenit primul motor mare de browser cu suport pentru crypto.subtle.supports().Navigarea cu tastatura și funcționarea focalizării au fost îmbunătățite.
Tab poate acum să treacă peste limitele <iframe>, iar Ctrl+Backspace — sau Option+Backspace pe macOS — șterge întreaga cuvânt în câmpurile de introducere. De asemenea, s-au corectat erorile de focalizare și IME în versiunea desktop a servoshell.Instrumentele dezvoltatorului au fost extinse.
Împreună cu Firefox DevTools, tab-urile Inspector, Console și Debugger au fost îmbunătățite. Panoul Rules arată acum declarațiile din @layer, Console și Debugger oferă mai multe informații despre funcții, array-uri, obiecte și alte valori, s-a adăugat inspectarea variabilelor locale și globale prin Scopes, depanarea scripturilor worker și suport inițial pentru Style Editor.Securitatea a fost întărită.
CryptoKey acum netezește buferele cu materialul cheii după utilizare. S-au corectat problemele de acces la DOM API între documente cu origin diferite, erorile de izolare localStorage și sessionStorage în iframe-uri sandboxed și iframe-uri srcdoc, accesibilitatea necorespunzătoare a IndexedDB în iframe-uri sandboxed și worker-uri din URL-uri data:, posibilitatea de a suprascrie cookie-urile între anumite IP-origin, citirea memoriei dincolo de buffer în texImage3D() pentru WebGL2, precum și comportamentele nedefinite în handler-ul de semnale al servoshell.Proiectul IndexedDB și stocarea au avansat.
IndexedDB a fost activat în modul experimental al servoshell și a fost mutat pe un nou sistem de „client storage”, care ar trebui să ofere Servo un format unic de stocare pe disc și o gestionare comună a cotelor pentru funcțiile web care salvează date. De asemenea, s-au îmbunătățit solicitările pe intervale de chei, procesarea tranzacțiilor, chei, valori și excepții.API-ul pentru integrarea Servo a fost actualizat.
Având în vedere că acesta este al doilea release lunar al bibliotecii Servo, dezvoltatorii au clarificat politica de compatibilitate: versiunea 0.2.0 este considerată o actualizare breaking față de 0.1.x. A fost adăugată încărcarea URL-urilor cu antete HTTP personalizate prin WebView::load_request, obținerea asincronă a cookie-urilor, ștergerea doar a cookie-urilor de sesiune fără a elimina cookie-urile permanente, transmiterea destination și referrer_url la interceptarea cererilor, precum și un mod de stocare temporară pentru izolarea datelor de sesiune.Eroarea de afișare și comportament al paginilor a fost corectată.
Dezvoltatorii menționează corecții pentru console.log, animații CSS, box-shadow, display: contents, display: inline-flex, display: table-cell, overflow: clip, poziționare absolută în interiorul grid-ului, word-spacing, removeChild() pe Document și URL.revokeObjectURL(). De asemenea, aspectul <input type=file> și placeholderul de la <textarea> a fost îmbunătățit.Performanța a fost îmbunătățită și consumul de memorie a fost redus.
S-au corectat ineficiențele semnificative: încărcarea specificației ECMAScript a fost accelerată datorită revizuirii procesării atributelor id și name, prima sesiune TLS a devenit mai rapidă cu 30–60 ms, traficul IPC între thread-uri a fost redus, consumul de memorie al nodurilor DOM Attr, Text și CharacterData a fost diminuat cu 16 bytes pe nod, și a fost corectată o scurgere de memorie la eliminarea <video controls> și <audio controls>. Pagina about:memory contabilizează acum mai precis alocările de memorie, inclusiv alocările libc pe Linux.
În concluzie, Servo 0.2 este un alt pas în transformarea proiectului într-un motor web integrabil: se îmbunătățește interfața pentru mobil, crește compatibilitatea cu standardele moderne web, se rezolvă erorile de securitate și API-ul pentru dezvoltatorii de aplicații se stabilizează treptat.
Sursa: linux.org.ru




