Наконец-то настало время для Firefox обновить устаревший движок рендеринга Gecko, который прослужил ему 20 или несколько лет. Обновление позволит Firefox в полной мере использовать преимущества современных процессоров и графических процессоров и приведет к быстрому повышению производительности как на настольных компьютерах, так и на мобильных устройствах. устройств.
«Страницы будут загружаться быстрее, а прокрутка будет плавной. Анимация и интерактивные приложения будут реагировать мгновенно и смогут обрабатывать более интенсивный контент, сохраняя постоянную частоту кадров. А контент, наиболее важный для вас, автоматически получит наивысший приоритет, фокусировка вычислительная мощность там, где она вам больше всего нужна «.
Однако это будет не так просто. Переход с надежного, долго работающего и хорошо зарекомендовавшего себя движка на что-то новое представляет собой сложную задачу, особенно когда рассматриваемый проект, браузер Firefox, находится в рабочем состоянии и находится в стадии разработки.
По этой причине переход будет облегчен с помощью еще одного проекта, проекта Quantum, независимого веб-движка на базе сообщества, спонсируемого Mozilla, который будет действовать как мост между двумя экосистемами, пока переход не завершится:
«Применяя поэтапный подход и объединяя проверенные компоненты от Servo до Gecko по мере их готовности, пользователям не придется долго ждать, чтобы увидеть значительные улучшения стабильности и производительности Firefox. Мы собираемся выпустить основные улучшения в 2017 году, и мы будем повторять оттуда. »
Таким образом, Quantum будет использовать высокопроизводительные компоненты Servo, чтобы обеспечить большее распараллеливание и разгрузку графического процессора в Firefox. Этими высокопроизводительными основными компонентами в активной разработке являются:
rust-bindgen, генератор привязок C ++ для языка Rust. Quantum использует rust-bindgen для генерации связующего кода между кодом C ++ Firefox и компонентами Rust Servo.
Quantum CSS (также известный как Stylo) для интеграции параллельной системы стилей CSS Servo в Gecko.
Quantum Render, средство рендеринга нового поколения Servo, оптимизированное для рендеринга с помощью графического процессора, чтобы действовать как графический бэкэнд для Firefox.
Quantum Compositor, наборщик, который перемещает композитор Gecko в свой собственный процесс, поскольку перенос кода, который взаимодействует с графическим процессором, в его собственный процесс сделает Firefox более стабильным и устранит большинство сбоев Firefox, связанных с графикой.
Quantum DOM — проект, который сделает Gecko более отзывчивым, особенно когда открыто много фоновых вкладок.
Servo как проект по-прежнему считается экспериментальным, поэтому ему предстоит многое наверстать, пока он не станет полноценной заменой Gecko с богатым набором функций; однако факт заключается в том, что он постоянно развивается и скоро станет достаточно хорошим, чтобы сделать его очень удобным. первое появление как часть будущей сборки разработчика Firefox.
Таким образом, Servo ставит перед собой две долгосрочные цели:
постепенно заменять компоненты в Firefox на компоненты, написанные на Rust и совместно используемые с Servo,
а также
для определения возможностей продукта для автономного браузера Servo или встраиваемой библиотеки (например, для Android).
Далее они разбиты на несколько подзадач, как они указаны в дорожной карте проекта.
Достигнутые цели на 2016 год:
Создайте начальную сквозную техническую демонстрацию браузера, чтобы мы могли начать итерацию интерфейса browser.html.
Окисление: добавление компонентов Rust / Servo в Firefox
Систематически отслеживайте эффективность
Разрешить сравнения с Gecko и Blink
Поддержка большего количества стандартных тестов
Webrender стал графическим движком по умолчанию в производстве
в то время как другие все еще в списке дел:
Заставьте работать автопосадку для Stylo, чтобы поделиться кодом сервопривода с Firefox
Завершите работу с сервоприводами, необходимыми для Stylo.
Завершите переход на MSVC в Windows
Поэкспериментируйте с WebRender в других программах
дополнительные исследования Magic DOM и / или других оптимизаций JS и программной транзакционной памяти (в целях компоновки + параллелизм скриптов)
Основание на Rust выглядит еще одной причиной, которая может замедлить развитие проекта, поскольку этот новый язык системного программирования, несмотря на его преимущества в области безопасности, защиты и распараллеливания, все еще находится в зачаточном или экспериментальном состоянии.
Тем не менее, Servo активно ищет участников, поэтому, если вам хочется, вы можете скачать, собрать и начать работу с Servo из его репозитория на Github.
Там вы найдете несколько открытых проблем, в которые вы можете внести свой вклад, например:
Добавьте аккуратную проверку для операторов использования с лишними пробелами
Добавить уведомление для элементов, которые изменил дочерний текстовый узел
Создание переносимого вывода (избегайте создания системных тестов + конфигурации для улучшения замены типов)
Сказав это, лучший способ начать — пройти Hacking Servo — Краткое руководство
Так что в не столь отдаленном будущем можно ожидать достижений, которые могут восстановить Firefox в качестве одного из самых популярных кроссплатформенных браузеров.