Вместо тяжеловесных браузерных движков в Kitesurf задействованы открытые библиотеки на языке Rust: Blitz для разбора HTML, работы с DOM, компоновки и отрисовки страницы; Stylo (используется в Firefox) для обработки CSS; Boa для выполнения JavaScript и поддержки WebAssembly; Linebender для работы с текстом и 2D-графикой; Krilla для генерации вывода в формате PDF.
По сравнению с использованием движка Chromium при выполнении операций создания скриншотов в Kitesurf отмечено снижение нагрузки на CPU в 3.1 раза и снижение потребления памяти в 4.7 раза, а при разборе HTML - в 3.8 и 7 раз соответственно. При этом общее время выполнения тестов оказалось в 1.7 и 1.8 раз медленнее из-за холодного старта, растеризации и кодирования в JPEG/PNG.
Kitesurf успешно проходит более 215 тысяч тестов из набора WPT (Web Platform Tests), корректно отрисовывает страницы типовых сайтов, таких как Wikipedia, поддерживает разные web-фреймворки (React, Vue, Angular, Preact) и способен выполнить игру Doom, скомпилированную в WebAssembly.
Из ограничений, отмечается отсутствие поддержи воспроизведения видео, WebGL, сложных скриптов для проверки капчи и длительных аутентифицированных сеансов, требующих сохранения состояния.
Браузер состоит из трёх компонентов:
- Движок для управления сеансами, обработки клиентских соединений и поддержки протокола CDP (Chrome DevTools Protocol);
- PageScript для изолированной обработки web-страницы и выполнения JavaScript;
- PageRenderer для отрисовки страниц, генерации скриншотов и экспорта в PDF.
Kitesurf рассчитан на запуск с использованием платформы Cloudflare Workers (доступен открытый runtime workerd) с компиляцией в WebAssembly, но может применяться не только в инфраструктуре Cloudflare, но и на локальных системах с Node.js. Для управления и автоматизации взаимодействия с Kitesurf предлагается использовать Web API через WebSocket, интерфейс командной строки и протокол CDP, совместимый с библиотекой Puppeteer.
Источник: https://www.opennet.ru/opennews/art.shtml?num=66689
(opennet.ru, основная лента)
