Публикуван нова версия Servo 0.2.0 — нова версия на експерименталния браузърен механизъм, написан на Rust. Издаването е на 31 май 2026 година и включва промените, направени през април: общо разработчиците отчетоха 534 комита, което е нов месечен рекорд за проекта. Servo се развива като независим проект под егидата на Linux Foundation Europe и е насочен към създаването на лек вграден уеб механизъм за приложения, мобилни платформи и експериментални браузърни обвивки.
Основни промени
Променен е интерфейсът servoshell за Android.
В Android версията на демонстрационната обвивка Servo е обновен браузърния интерфейс и е добавен нов екран с история. APK стана с приблизително 30% по-малък, а също така е коригирана грешка с черен екран при затваряне на настройките или връщане от друго приложение. За OpenHarmony вече е възможно да се затварят табове.Подобрена е поддръжката на китайски, японски и корейски текст.
В механизма за подредба е поправено обработването на пренасянето на редове за CJK езици, а в интерфейса servoshell на Windows, Linux и FreeBSD са включени CJK шрифтове. Това е важно за реалното показване на сайтове на езици, където правилата за пренасяне и подбиране на шрифтове се различават от латиницата.Добавен е интерактивен преглед на JSON.
Ако отворите JSON файл като основен документ, Servo сега го показва чрез интерактивен pretty-printer. Това прави механизма удобен не само за обикновено гледане на страници, но и за разработчици, които трябва да отварят API отговори и структурирани данни направо в браузъра.Разширена е поддръжката на Web Platform.
В Servo вече има <select multiple>, <template shadowrootslotassignment>, възпроизвеждане на <video> на OpenHarmony, поддръжка на minimum-scale и maximum-scale в <meta name=viewport>, CSS функция color-mix() с произволно число цветове, tab-size, text-align: match-parent, създаване на Worker от blob URL, WebGL контекст за OffscreenCanvas, както и свойството detail на PerformanceMark и PerformanceMeasure.Добавени са нови DOM API.
Реализирани са събития selectionchange за <input> и <textarea>, експериментален StorageManager, activeElement за Document и ShadowRoot, crypto.subtle.supports(), свойства cellPadding, cellSpacing и align на HTMLTableElement, relatedTarget за събитията focus и blur, както и transferFromImageBitmap() за ImageBitmapRenderingContext. Разработчиците особено подчертават, че Servo стана първият голям браузърен механизъм с поддръжка на crypto.subtle.supports().Подобрен е контролът с клавиатурата и фокусното управление.
Tab вече може да преминава през граници , а Ctrl+Backspace — или Option+Backspace на macOS — изтрива целия думи в полетата за въвеждане. Също така са коригирани проблеми с фокуса и IME в настолната версия servoshell.Разширени инструменти за разработчици.
В партньорство с Firefox DevTools са подобрени разделите Inspector, Console и Debugger. Панелът Rules сега показва декларации от @layer, в Console и Debugger има повече информация за функции, масиви, обекти и други стойности, добавена е инспекция на локални и глобални променливи чрез Scopes, отстраняването на грешки в worker скриптове и начална поддръжка на Style Editor.Подобрената безопасност.
CryptoKey сега изтрива буферите с ключов материал след употреба. Коригирани са проблеми с достъпа до DOM API между документи с различни origin, грешки в изолацията на localStorage и sessionStorage в sandboxed iframe и iframe srcdoc, неправилна достъпност на IndexedDB в sandboxed iframe и worker от data: URL, възможността за намаляване на cookie между някои IP-origin, четене на памет извън буфера в texImage3D() за WebGL2, както и неопределено поведение в обработчика на сигнали servoshell.Работата по IndexedDB и хранилището напредва.
IndexedDB е включен в експериментален режим на servoshell и е преместен на новата структура 'client storage', което трябва да предостави на Servo единен формат на съхранение на диска и общо управление на квотите за уеб функции, които съхраняват данни. Също така, подобрени са запитванията по ключови диапазони, обработката на транзакции, ключове, стойности и изключения.Обновен API за вграждане на Servo.
Тъй като това е второто месечно издание на библиотеката Servo, разработчиците уточниха политиката за съвместимост: версия 0.2.0 се счита за счупваща актуализация спрямо 0.1.x. Добавено е зареждане на URL с потребителски HTTP заглавия чрез WebView::load_request, асинхронно получаване на cookie, изтриване само на session cookies без премахване на постоянни cookie, предаване на destination и referrer_url при прихващане на запитвания, както и режим на временна памет за изолация на данните от сесията.Коригирани са грешки в показването и поведението на страниците.
Разработчиците споменават корекции за console.log, CSS анимации, box-shadow, display: contents, display: inline-flex, display: table-cell, overflow: clip, абсолютно позициониране в grid, word-spacing, removeChild() на Document и URL.revokeObjectURL(). Също така, подобрен е външният вид и placeholder наПовишена производителност и намалено потребление на памет.
Отстранени са основните неефективности: зареждането на спецификацията ECMAScript е ускорено чрез преработка на обработката на атрибутите id и name, първата TLS сесия стана по-бърза с 30–60 мс, намален е IPC трафикът между нишките, потреблението на памет от DOM възлите Attr, Text и CharacterData е намалено с 16 байта на възел, коригирана е теч на памет при изтриване на <video controls> и <audio controls>. Страницата about:memory вече по-точно отразява заделената памет, включително allocations на libc в Linux.
В крайна сметка Servo 0.2 представлява още една стъпка към превръщането на проекта в подходящ за вграждане web двигател: подобрява се мобилната обвивка, нараства съвместимостта с модерните web стандарти, поправят се проблеми със сигурността и постепенно се стабилизира API за разработчици на приложения.
Източник: linux.org.ru




