Servo 0.2









Opublikowano wersję Servo 0.2.0 — nowej wersji eksperymentalnego silnika przeglądarki, napisanego w Rust. Wydanie miało miejsce 31 maja 2026 roku i zawiera zmiany wprowadzone w kwietniu: łącznie deweloperzy policzyli 534 commity, co stało się nowym miesięcznym rekordem projektu. Servo rozwija się jako niezależny projekt pod egidą Linux Foundation Europe i ma na celu stworzenie lekkiego, wbudowanego silnika webowego dla aplikacji, platform mobilnych oraz eksperymentalnych powłok przeglądarek.

Główne zmiany

  • Przeprojektowano interfejs servoshell dla Android.
    W wersji demonstracyjnej powłoki Servo dla Androida zaktualizowano interfejs przeglądarki i dodano nowy ekran historii. APK stał się około 30% mniejszy, a także naprawiono błąd z czarnym ekranem po zamknięciu ustawień lub powrocie z innej aplikacji. W OpenHarmony teraz można zamykać zakładki.

  • Zwiększona obsługa tekstu w języku chińskim, japońskim i koreańskim.
    W silniku tylnym poprawiono obsługę łamania linii dla języków CJK, a w interfejsie servoshell na Windows, Linux i FreeBSD włączono czcionki CJK. Jest to ważne dla rzeczywistego wyświetlania stron w językach, gdzie zasady łamania i dobierania czcionek różnią się od łacińskich.

  • Dodano interaktywny podgląd JSON.
    Jeśli otworzyć plik JSON jako główny dokument, Servo teraz wyświetla go za pomocą interaktywnego pretty-printera. Ułatwia to korzystanie z silnika nie tylko do przeglądania stron, ale także dla deweloperów, którzy muszą otwierać odpowiedzi API i dane strukturalne bezpośrednio w przeglądarce.

  • Rozszerzono wsparcie dla platformy webowej.
    W Servo pojawiły się <select multiple>, <template shadowrootslotassignment>, odtwarzanie <video> na OpenHarmony, wsparcie dla minimum-scale i maximum-scale w <meta name=viewport>, funkcja CSS color-mix() z dowolną liczbą kolorów, tab-size, text-align: match-parent, tworzenie Worker z blob URL, kontekst WebGL dla OffscreenCanvas, a także właściwość detail z PerformanceMark i PerformanceMeasure.

  • Dodano nowe interfejsy DOM API.
    Zrealizowano zdarzenia selectionchange dla <input> i <textarea>, eksperymentalny StorageManager, activeElement dla Document i ShadowRoot, crypto.subtle.supports(), właściwości cellPadding, cellSpacing i align dla HTMLTableElement, relatedTarget dla zdarzeń focus i blur, a także transferFromImageBitmap() dla ImageBitmapRenderingContext. Deweloperzy szczególnie zwracają uwagę, że Servo stał się pierwszym dużym silnikiem przeglądarki z obsługą crypto.subtle.supports().

  • Ulepszono nawigację z klawiatury i działanie focus.
    Zakładka teraz potrafi przechodzić przez granice , a Ctrl+Backspace — lub Option+Backspace na macOS — usuwa całe słowo w polach wprowadzania. Naprawiono również błędy związane z fokusem i IME w stacjonarnej wersji servoshell.

  • Rozszerzone narzędzia dla programistów.
    W połączeniu z Firefox DevTools ulepszono zakładki Inspector, Console i Debugger. Panel Rules teraz pokazuje deklaracje z @layer, a w Console i Debugger pojawiło się więcej informacji o funkcjach, tablicach, obiektach i innych wartościach, wprowadzono możliwość inspekcji zmiennych lokalnych i globalnych przez Scopes, debugowanie skryptów worker oraz początkowe wsparcie dla Style Editor.

  • Zwiększone bezpieczeństwo.
    CryptoKey teraz nadpisuje bufory z materiałem klucza po użyciu. Naprawiono problemy z dostępem do DOM API między dokumentami z różnymi origin, błędy izolacji localStorage i sessionStorage w sandboxed iframe oraz iframe srcdoc, niepoprawna dostępność IndexedDB w sandboxed iframe i worker z data: URL, możliwość wycieków cookie między niektórymi IP-origin, odczyt pamięci poza buforem w texImage3D() dla WebGL2 oraz nieokreślone zachowanie w obsłudze sygnałów servoshell.

  • Pracuje się nad IndexedDB i magazynem.
    IndexedDB włączono w eksperymentalnym trybie servoshell i przeszło na nowy system «client storage», który powinien zapewnić Servo jednolity format przechowywania na dysku i wspólne zarządzanie limitami dla funkcji sieciowych, które przechowują dane. Ulepszono również zapytania według zakresów kluczowych, obsługę transakcji, kluczy, wartości i wyjątków.

  • Zaktualizowano API do wbudowywania Servo.
    Ponieważ to drugie miesięczne wydanie biblioteki Servo, deweloperzy doprecyzowali politykę zgodności: wersja 0.2.0 uznawana jest za breaking update w stosunku do 0.1.x. Dodano ładowanie URL z niestandardowymi nagłówkami HTTP przez WebView::load_request, asynchroniczne pobieranie cookie, czyszczenie tylko session cookies bez usuwania trwałych cookie, przekazywanie destination i referrer_url przy przechwytywaniu zapytań oraz tryb tymczasowego magazynu do izolowania danych sesji.

  • Naprawiono błędy wyświetlania i zachowania stron.
    Deweloperzy wspominają o poprawkach dla console.log, animacji CSS, box-shadow, display: contents, display: inline-flex, display: table-cell, overflow: clip, absolutnego pozycjonowania wewnątrz grid, word-spacing, removeChild() na Document i URL.revokeObjectURL(). Ulepszono również wygląd i placeholder dla