Примерно четыре месяца назад Mozilla начала первые испытания многопроцессной архитектуры. В версии Firefox 48 её включили по умолчанию у небольшой части пользователей, а потом тестовую выборку увеличили в полтора раза. Как сообщает Mozilla в официальном блоге, в число испытателей попали почти все пользователи Firefox без установленных расширений.
Результаты эксперимента оказались очень неплохие. Отклик браузера уменьшился на 400%, а улучшения в скорости при загрузке страниц составили 700%.
Осталось не так уж много времени до окончания тестирования, когда многопроцессность станет стандартной встроенной функцией Firefox, так что «Огненный лис» догонит (или обгонит) по стабильности, безопасности и скорости работы Chrome, Edge, Safari и Internet Explorer, которые уже давно используют многопроцессную архитектуру.
Многопроцессность означает, что Firefox способен распределять задачи между несколькими процессами. На практике в браузере это означает изоляцию движка рендеринга от пользовательского интерфейса браузера. Таким образом проблема с рендерингом веб-страницы не приводит к зависанию всего браузера, что увеличивает общую стабильность работы. Если для каждой вкладки запущен отдельный изолированный процесс рендеринга, то проблема с зависанием будет ограничена и вовсе одной лишь вкладкой. К тому же изоляция рендеринга в отдельной песочнице повышает безопасность работы: труднее использовать эксплойты для уязвимостей в движке рендеринга.
Chrome и другие используют многопроцессность уже много лет. В Chrome она и вовсе присутствует с самой первой версии, которая вышла в 2008 году. Это был в каком-то смысле технологический прорыв. Интересно отметить, что для создания той самой первой версии Chrome компания Google пригласила в штат нескольких разработчиков Firefox, и те не подвели.
А вот у самой Mozilla дело чуть заглохло. Разработка многопроцессной архитектуры под кодовым названием Electrolysis (e10s) началась в 2009 году, но между 2011 и 2013 годами она была остановлена «из-за смены приоритетов».
Сразу после перехода на новую систему расширений в 2015 году работа над многопроцессной архитектурой возобновилась. На новой системе были реализованы программные интерфейсы WebExtensions, во многом совместимые с расширениями Chrome и Opera.
В августе 2016 года Electrolysis наконец-то дорос до тестирования в продакшне. Тогда вышла версия Firefox 48, где многопроцессность активировали для ограниченного числа пользователей с браузерами без расширений.
Чтобы включить многопроцессность, следует зайти в about:config
и установить логический параметр browser.tabs.remote.autostart
в значение true
. Если многопроцессность не включилась, то следует создать новый логический параметр browser.tabs.remote.force-enable
и присвоить ему значение true
. Результат операций будет показан на вкладке about:support
в разделе «Многопроцессные окна».
Дальнейшее тестирование
Начиная с версии Firefox 49 многопроцессность начали тестировать на браузерах с ограниченным набором проверенных дополнений. Результаты обнадёжили, поэтому с выходом Firefox 50 тестовую аудиторию ещё больше расширили, включив в неё браузеры с большим набором дополнений, для которых их авторы сделали специальную пометку о поддержке многопроцессности. Список поддерживаемых расширений обновляется на сайте Are we e10s yet?.
С помощью отдельного дополнения Add-on Compatibility Reporter можно проверять, совместимы ли ваши дополнения с режимом многопроцессности Firefox.
Теперь осталось несколько последних шагов. Нужно обеспечить нормальную работу браузера в сборках Firefox с расширениями, которые пока не поддерживают многопроцессность. По плану, в версии Firefox 51 планируют обеспечить работу с расширениями, которые не помечены явно как несовместимые с многопроцессностью.
Дальше Mozilla будет дорабатывать саму архитектуру. Кроме отделения движка рендеринга в отдельный процесс, следует реализовать поддержку нескольких контент-процессов. В этом случае прибавка производительности будет максимально возможной, а риски стабильности браузера от зависаний отдельных вкладок сведутся к минимуму.
Сначала второй контент-процесс реализовали на ветке Nightly. Сейчас разработчики проверяют на нём, сколько отдельных процессов способен выдерживать Electrolysis, и вылавливают баги.
Вторая большая задача — реализовать песочницу безопасности с дочерними процессами, которые ограничены в правах. В версии Firefox 50 песочницу впервые реализовали в релизе под Windows. Это пока первая экспериментальная версия, не защищённая должны образом, предупреждают разработчики. В следующих версиях Firefox песочницу добавят в версии Mac и Linux.
Пусть и с опозданием на несколько лет, но Firefox наконец-то внедряет многопроцессность. И эта отличная новость для всех пользователей этого замечательного браузера. Лучше поздно, чем никогда. Да и лучше сделать всё как надо, а не спешить. Первые тесты показали, что Electrolysis обеспечивает заметную прибавку в производительности, стабильности и безопасности.
Автор: alizar