09.06.2016
Аса Доцлер (Asa Dotzler), координатор сообщества разработчиков Firefox, сообщил о скором переходе Firefox на многопроцессный режим (e10s, electrolysis). Отмечается, что многопроцессный режим доведён до полной функциональной готовности и отвечает всем критериям качества, стабильности, потребления памяти и производительности, предъявляемым к функциональности, включаемой в стабильные выпуски.
Новый режим будет включён в состав Firefox 48 и активирован по умолчанию для тестирования у примерно 1% пользователей, не использующих дополнения. В зависимости от хода тестирования процент охвата будет меняться, например, в случае отсутствия проблем охват аудитории может быть увеличен, а при непредвиденных проблемах тестирование может быть прервано. В сентябрьском выпуске Firefox 49 планируется включить многопроцессный режим для всех пользователей, которые не используют дополнения (по оценке Mozilla около 40% от всех пользователей) и в течение 30 дней не включали средства для людей с ограниченными возможностями.
Напомним, что проект e10s стартовал в 2009 году, после чего несколько раз приостанавливался и возвращался в строй. В ноябре 2014 года наработки e10s были включен в ночные сборки Firefox, в мае 2015 года вошли в состав Firefox Developer Edition, а в апреле 2016 года по умолчанию предложены 50% пользователей бета-версии Firefox 47. В Firefox 48 Beta будет произведено включение e10s для всех пользователей.
Ключевым отличием нового режима является вынос обработки содержимого вкладок в отдельный процесс, который функционирует отдельно от процесса, занимающегося формированием интерфейса, что позволяет увеличить безопасность, повысить отзывчивость интерфейса, минимизировать подвисания во время сборки мусора и заметно ускорить работу браузера на многоядерных системах за счёт организации параллельного выполнения неблокирующих друг друга операций. Обратной стороной медали является несовместимость с достаточно большим числом дополнений, например, c новым режимом несовместимы около 20% из протестированных дополнений, включая NoScript, Ghostery, Flash Video Downloader, Adblock Edge, Web of Trust и Disconnect.
Основное отличие текущей реализации от многопроцессной модели Chrome состоит в том, что вся обработка контента вынесена в один внешний процесс, без разбиения обработчиков отдельных вкладок на процессы. Процесс, отвечающий за интерфейс, во многом напоминает базовый однопроцессный вариант Firefox, он формирует окружение браузера на основе XUL, выполняет дополнения, инициирует управление вкладками и обеспечивает вывод окна. Результат компоновки интерфейса и обработки контента формируется в виде слоёв, которые определяют содержимое окна. Содержимое передаются в систему отрисовки, которая занимается сведением (композитингом) серии слоёв в единое изображение, определяющее итоговое содержимое окна браузера. В будущем запланирован второй этап развития e10s, на котором планируется обеспечить работу нескольких процессов обработки контента (например, можно будет разделить обработчики для каждого дополнения и каждой вкладки).
Основные цели перехода к многопроцессной обработке: