Servo 0.4 vykreslí správně víc webů. Označit v nich text ale zatím nejde
Prohlížečové jádro Servo vydalo verzi 0.4.0. Obsahuje 558 commitů, které do repozitáře přišly v červnu, a s nimi lepší vykreslení lichess.org, Zulipu nebo Speedtestu. Viditelný výběr textu se v něm teprve začal psát a v knihovně pro RSA zůstává známá časovací zranitelnost.
Projekt Servo vydal 31. července verzi 0.4.0. Na GitHubu k ní patří značka 0.4.0, devět sestavených balíčků pro Linux, Windows, macOS, Android a OpenHarmony a archiv se zdrojovými kódy. Číslo verze ale nepopisuje červenec: podle měsíčního zápisu jsou v 0.4.0 změny, které do repozitáře přišly v červnu.
Červen byl na commity rekordní, 558 proti 534 v dubnu a 391 v květnu. Projekt u toho poznamenává, že za měsíc pročítá přes čtyřnásobek toho, co v září 2023, kdy s měsíčními zápisy začínal. Kvůli tomu spustil robota, kterému autor štítkem řekne, že jde o zajímavou změnu, a on mu pak položí otázky, které se z kódu nevyčtou: koho se úprava týká, jestli je vidět a jestli se musí zapnout přepínačem.
Weby, které se vykreslí líp
Nejvíc je na vydání vidět práce na skutečných stránkách. Podle projektu se výrazně zlepšilo rozvržení na šachovém serveru lichess.org a jinak psaná podpora proměnných fontů (#45768) udělala čitelnějšími další weby, jmenovitě Zulip a Speedtest. Google Photos a australský Cash Converters fungovaly už dřív a fungují dál. Mapy Google a OpenStreetMap se vykreslí dobře, jenže ovládání v nich vázne.
S tím souvisí dotazy na média, tedy pravidla, kterými stránka pozná, na čem se zobrazuje. Servo jich přidalo hned několik naráz: rozměrové device-width, device-height, height a aspect-ratio včetně variant min- a max-, k tomu orientation, pointer, any-pointer, hover a any-hover. Web, který podle nich přepíná rozvržení nebo velikost ovládacích prvků, se jimi ve Servu do té doby řídit nemohl.

Z nových rozhraní DOM přibyl SharedWorker, tedy vlákno na pozadí sdílené více kartami téhož webu, dále vlastní registry pro uživatelské HTML prvky a zachytávání ukazatele přes setPointerCapture(). Demonstrační prohlížeč servoshell mezitím dostal přetahování souborů myší, vodorovně posuvnou lištu karet a na Androidu nově vyžaduje verzi 13 a novější.
Označit text ve stránce se teprve začalo psát
Ve stejném zápisu stojí věta, která o zralosti Serva řekne víc než seznam funkcí: projekt začal pracovat na viditelném a interaktivním výběru textu (#46107) a sám ho označuje za jednu z nejdéle očekávaných funkcí jakéhokoli prohlížeče. Ve verzi 0.4.0 tedy text ve stránce myší neoznačíte.
Za přepínačem zůstává i přístupnost, tedy zpřístupnění obsahu odečítačům obrazovky: kód existuje, spouští se ale volbou --pref accessibility_enabled. Totéž platí pro WebGPU, pro webové animace a pro obecnější podobu funkce attr() v CSS. V servoshellu se to všechno zapíná najednou v experimentálním režimu.
Opravy z Firefoxu ESR a jedna díra, která zůstává
JavaScript ve Servu obstarává SpiderMonkey, tedy motor Firefoxu. Verze 0.4.0 ho posunula ze 140.10.1 na 140.11.0 a pak na 140.12.0. První skok zavírá čtyři chyby z oznámení MFSA 2026-48 k Firefoxu ESR 140.11: CVE-2026-8388, CVE-2026-8391, CVE-2026-8974 a CVE-2026-8975. Mozilla to oznámení vydala 19. května, do vydání Serva se ty opravy dostaly na konci července. U druhého skoku, k němuž patří MFSA 2026-58 ze 16. června, projekt píše, že zatím neví, které z tamních chyb se ho týkají.
Vlastní chybu Servo opravilo ve výpisu adresářů na file:///. Jméno souboru, ve kterém byl řetězec </script>, se dalo použít k podstrčení cizího HTML.
Jedna zranitelnost naopak zůstává otevřená a projekt na ni upozorňuje sám. Operace RSA v rozhraní SubtleCrypto sice nově počítají modulární mocninu v konstantním čase, jenže použitá knihovna rsa je pořád zranitelná útokem Marvin: z rozdílů v době výpočtu, měřitelných po síti, jde odvodit soukromý klíč. Záznam RUSTSEC-2023-0071 ho vede od listopadu 2023, hodnotí ho známkou 5,9 a v kolonce s opravenou verzí má „no patched versions“.
Rust nemá stabilní ABI, dopisuje se rozhraní v céčku
Servo se má dát vložit do cizí aplikace a právě tady naráží na jazyk, ve kterém je psané. Rust nemá stabilní binární rozhraní, takže dosud šlo Servo vestavět jen tak, že si ho vývojář přeložil ze zdrojových kódů. Projekt proto navrhuje obalové rozhraní v céčku (#44984), přes které půjde použít předem sestavenou sdílenou knihovnu. Nad ním má později vzniknout obal v Rustu, aby zůstalo pohodlí jazyka a odpadl překlad celého jádra.
Šetřit se zkoušelo i uvnitř. Servo umí v částech kódu dokázat, že tam nemůže proběhnout úklid paměti v JavaScriptu, a v takovém úseku pak nemusí objekty zamykat proti uklizení. Na rozvržení stránky a na kolekci HTMLCollection to podle projektu ubralo přes jedno procento režie.
Servo vzniklo v roce 2012 v Mozilla Research, správu nad ním v roce 2020 převzala Linux Foundation a od roku 2023 sídlí v Linux Foundation Europe. Svůj krátkodobý cíl si projekt formuluje střízlivě: dostat se z výzkumného projektu k použitelnému jádru se stabilním rozhraním. Na to má trvalé dary ve výši 7 681 dolarů měsíčně, tedy o 0,2 % víc než v květnu, a platí z nich servery na překlad a měření i část práce správců. Náš názor: proti rozpočtům, se kterými se dělá Chrome a Firefox, je to číslo, které o tempu vypovídá líp než rekord v počtu commitů.