Экспериментальный движок Mozilla Servo близок к выпуску альфа-версии. На днях разработчики сообщили, что планируют первый релиз Servo+Browser.html на июнь 2016 года.

Servo – движок, написанный с нуля на языке программирования Rust. Он отличается лучшей безопасностью, модульностью, а также исключительно высокой производительностью за счёт алгоритма параллельной компоновки страниц и новых парсеров CSS3 и HTML5 на Rust. Два важных компонента используют существующие модули на C++ от Mozilla: это движок SpiderMonkey для обработки JavaScript и библиотека 2D-графики Azure для OpenGL и Direct3D.

Сравнение производительности Servo с другими браузерами, 3 марта 2016 г.
Chrome Canary – 15 FPS
Mozilla Firefox Developer – 9 FPS
Apple WebKit Nightly – 5 FPS
Mozilla Servo – 60 FPS



В данный момент Servo работает под 64-битным Linux, 64-битной OS X, Android и Gonk (Firefox OS). Правда, есть ряд багов с рендерингом. Servo идеально отображает browser.html, но на реальных сайтах возникают проблемы. К июню разработчики хотят исправить баги с рендерингом наиболее актуальных сайтов — Github, Duckduckgo, Hackernews и Reddit. Открыты соответствующие тикеты.

github.com/servo/servo/issues/9914 [meta] баги github.com
github.com/servo/servo/issues/9915 [meta] баги duckduckgo
github.com/servo/servo/issues/9916 [meta] баги hackernews
github.com/servo/servo/issues/9917 [meta] баги reddit

Высокий уровень параллелизма — ключевое достоинство Servo. Оно позволяет использовать многоядерную архитектуру современных процессоров. Разработчики объясняют причины, которые сподвигли их на создание нового движка. Во-первых, современные движки огромны, это миллионы строк кода. Такой объём кода невозможно оптимизировать, он слишком велик и не поддаётся рефакторингу. Легче переписать с нуля.



Нынешние браузеры, в том числе Firefox, разработаны много лет назад для одноядерных процессоров и совсем простеньких веб-страниц. Всё это наследие сохраняется в нынешнем коде, от которого лучше избавиться.

Вторая причина, по словам разработчиков, это небезопасность C++. Большинство уязвимостей в современных браузерах связаны с эксплуатацией модели памяти C++. В отличие от него, Rust – быстрый и безопасный язык программирования, с автоматическим управлением памятью, без состояний гонки, со встроенным параллелизмом и т.д.

Презентация "Servo: Building a Parallel Browser"

Комментарии (0)