Веб-Острова Анатолия Куликова

Новый CSS-движок для Firefox

Новый CSS-движок для Firefox

В ночные сборки Firefox добавлен новый CSS-движок Stylo, развиваемый в рамках проекта Quantum, в котором производится работа по переносу в браузер возможностей, изначально развиваемых для движка Servo. Stylo написан на языке Rust и примечателен распараллеливанием обработки стилей CSS. Для включения нового CSS-движка в about:config следует установить опцию layout.css.servo.enabled=true.

Наиболее заметным эффектом после включения Stylo отмечается увеличение скорости обработки страниц, так как разные CSS-стили обрабатываются параллельно, не блокируя друг друга. В настоящее время работа сосредоточена на оттачивании кодовой базы и стабилизации Stylo — открытыми остаётся 68 известных проблем, 18 из которых имеют характер блокирующих выпуск. Разработчики намерены оперативно устранить данные проблемы и задействовать Stylo в Firefox 57, запланированном на ноябрь и примечательным модернизацией оформления браузера и полным переходом на WebExtensions.

Тем временем, в ближайшем выпуске Firefox 55, который выйдет 8 августа, будут включены наработки другой инициативы Quantum — Flow, в рамках которой развиваются дополнительные оптимизации для увеличения производительности интерфейса пользователя. Тестирование бета-версии Firefox 55 показало существенное ускорение работы со вкладками и сокращение времени запуска. Тестирование проводилось с профилем, содержащим 1691 (!) вкладку. Если в прошлые выпуски запуск браузера со столь огромным числом вкладок занимал 5-8 минут, то в Firefox 55 ситуация изменилась и на запуск ушло всего 15 cекунд, а потребление памяти снизилось в 4 раза (с 2 до 0.5 Гб, без фактической загрузки содержимого всех страниц).

Текущий браузерный движок Firefox не может в полной мере задействовать потенциал современных многоядерных систем из-за изначального использования однопоточных схем обработки контента. В частности, при обработке одной страницы однопоточным остается связанный с DOM (Document Object Model) внутренний API, функции формирования содержимого окна, парсинга HTML и выполнения JavaScript. Использование Rust позволяет разбить код DOM и рендеринга на более мелкие подзадачи, которые могут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU. Кроме эффективного распараллеливания операций, используемые в Rust технологии безопасного программирования позволят кардинально поднять уровень безопасности.

Анатолий Куликов

Анатолий Куликов

Автор блога, дизайнер, веб-разработчик
Комментарии от HyperComments