Publicatie van een uitgave Servo 0.2.0 ā de nieuwe versie van de experimentele browser-engine, geschreven in Rust. De release is uitgekomen 31 mei 2026 en omvat wijzigingen die in april zijn doorgevoerd: ontwikkelaars hebben in totaal geteld 534 commits, wat een nieuwe maandrecord voor het project is. Servo ontwikkelt zich als een onafhankelijk project onder auspiciĆ«n van de Linux Foundation Europe en richt zich op het creĆ«ren van een lichte, inbedbare web-engine voor applicaties, mobiele platforms en experimentele browseromgevingen.
Belangrijkste wijzigingen
De interface van servoshell voor Android is herontworpen.
In de Android-versie van de demonstratieomgeving van Servo is de browserinterface vernieuwd en een nieuw geschiedenis-scherm toegevoegd. De APK is ongeveer 30% kleiner geworden en een fout met een zwart scherm bij het sluiten van de instellingen of terugkeren uit een andere applicatie is verholpen. Voor OpenHarmony kunnen nu tabs worden gesloten.Verbeterde ondersteuning voor Chinese, Japanse en Koreaanse tekst.
In de lay-out-engine is de afhandeling van regelovergangen voor CJK-talen gecorrigeerd, en in de interface van servoshell op Windows, Linux en FreeBSD zijn CJK-lettertypes toegevoegd. Dit is belangrijk voor de correcte weergave van websites in talen waar de regels voor regelovergangen en het kiezen van lettertypes afwijkend zijn van het Latijns alfabet.Interactieve weergave van JSON toegevoegd.
Als je een JSON-bestand opent als hoofddocument, toont Servo dit nu via een interactieve pretty-printer. Dit maakt de engine handiger voor zowel het normale bekijken van pagina's als voor ontwikkelaars die API-antwoorden en gestructureerde gegevens direct in de browser moeten openen.Ondersteuning voor Web Platform uitgebreid.
In Servo zijn <select multiple>, <template shadowrootslotassignment>, afspelen van <video> op OpenHarmony, ondersteuning voor minimum-scale en maximum-scale in <meta name=viewport>, de CSS-functie color-mix() met een willekeurig aantal kleuren, tab-size, text-align: match-parent, het creëren van Workers uit blob URL, WebGL-context voor OffscreenCanvas, en ook de detail property van PerformanceMark en PerformanceMeasure geïntroduceerd.Nieuwe DOM API's toegevoegd.
Events voor selectionchange zijn geĆÆmplementeerd voor <input> en <textarea>, experimentele StorageManager, activeElement voor Document en ShadowRoot, crypto.subtle.supports(), cellPadding, cellSpacing en align properties voor HTMLTableElement, relatedTarget voor focus en blur events, alsook transferFromImageBitmap() voor ImageBitmapRenderingContext. Ontwikkelaars merken op dat Servo de eerste grote browser-engine is met ondersteuning voor crypto.subtle.supports().Navigatie met het toetsenbord en focusbeheer zijn verbeterd.
Tab kan nu over iframe-grenzen gaan, en Ctrl+Backspace of Option+Backspace op macOS verwijdert het hele woord in invoervelden. Er zijn ook problemen met focus en IME in de desktopversie van servoshell verholpen.De ontwikkelaarstools zijn uitgebreid.
In combinatie met Firefox DevTools zijn de tabbladen Inspector, Console en Debugger verbeterd. Het Rules-paneel toont nu declaraties uit @layer, en de Console en Debugger bieden meer informatie over functies, arrays, objecten en andere waarden, evenals inspectie van lokale en globale variabelen via Scopes, debugging van worker-scripts, en initiƫle ondersteuning voor Style Editor.De beveiliging is versterkt.
CryptoKey wist nu buffers met sleutelmateriaal na gebruik. Problemen met toegang tot de DOM API tussen documenten met verschillende origins zijn verholpen, evenals foutieve isolatie van localStorage en sessionStorage in sandboxed iframe en iframe srcdoc, onjuiste beschikbaarheid van IndexedDB in sandboxed iframe en worker vanaf data: URL, de mogelijkheid om cookies tussen bepaalde IP-origins te overschrijven, en het lezen van geheugen buiten de buffer in texImage3D() voor WebGL2, alsook ongedefinieerd gedrag in de signal handler van servoshell.Het werk aan IndexedDB en opslag is gevorderd.
IndexedDB is ingeschakeld in de experimentele modus van servoshell en is overgezet naar een nieuw systeem voor 'client storage', dat Servo een uniform opslagformaat op de schijf zou moeten bieden en een gezamenlijke quota-beheer voor webfuncties die gegevens opslaan. Ook zijn de aanvragen op sleutelbereiken, verwerking van transacties, sleutels, waarden en uitzonderingen verbeterd.De API voor het embedden van Servo is bijgewerkt.
Aangezien dit de tweede maandelijkse release van de Servo-bibliotheek is, hebben de ontwikkelaars het compatibiliteitsbeleid verduidelijkt: versie 0.2.0 wordt beschouwd als een breaking change ten opzichte van 0.1.x. URL-lading met aangepaste HTTP-headers is toegevoegd via WebView::load_request, asynchrone verkrijging van cookies, het wissen van alleen session cookies zonder permanente cookies te verwijderen, doorgeven van destination en referrer_url bij het onderscheppen van aanvragen, evenals een tijdelijke opslagmodus voor isolatie van sessiegegevens.Er zijn fouten in de weergave en het gedrag van pagina's verholpen.
Ontwikkelaars melden correcties voor console.log, CSS-animaties, box-shadow, display: contents, display: inline-flex, display: table-cell, overflow: clip, absolute positioning binnen grid, word-spacing, removeChild() op Document en URL.revokeObjectURL(). Ook is de weergave van en de placeholder vanDe prestaties zijn verhoogd en het geheugengebruik is verlaagd.
Grote inefficiĆ«nties zijn gecorrigeerd: de laadtijd van de ECMAScript-specificatie is versneld door de verwerking van de attributen id en name te herstructureren, de eerste TLS-sessie is 30ā60 ms sneller geworden, de IPC-verkeer tussen threads is verminderd, het geheugenverbruik van DOM-knooppunten Attr, Text en CharacterData is met 16 bytes per knooppunt verminderd, en er is een geheugenlek opgelost bij het verwijderen van <video controls> en <audio controls>. De pagina about:memory houdt nu nauwkeuriger rekening met geheugentoewijzingen, inclusief libc-toewijzingen op Linux.
Uiteindelijk is Servo 0.2 weer een stap dichterbij het omvormen van het project tot een inbouwvriendelijke web-engine: de mobiele interface verbetert, de compatibiliteit met moderne webstandaarden groeit, beveiligingsfouten worden verholpen en de API voor applicatieontwikkelaars stabiliseert geleidelijk.
Bron: linux.org.ru




