Отсутствие многопоточной архитектуры для разделения и параллельной обработки различных функций — это то, чего недостаёт браузеру Firefox. Его прямые конкуренты — Internet Exploprer и Google Chrome — уже давно используют подобное решение. Тем не менее, как пишет в своём блоге один из разработчиков Mozilla Билл Макклоски, компания учла это обстоятельство и надеется, что переход браузера на использование многопроцессной модели привнесёт для него преимущества в таких ключевых областях как стабильность, безопасность и производительность. Он отмечает, что увеличить производительность Firefox удалось благодаря проектам MemShrink и Snappy, которые позволили разработчикам браузера устранить многие ошибки, связанные с работой движка JavaScript.
Ускорить работу браузера, по словам Макклоски, помогут также наработки, полученные в ходе работы над проектом Electrolysis. Этот проект стартовал в 2009 г., но в 2011-м был приостановлен из-за наличия более простых путей повышения отзывчивости интерфейса, не требующих значительной переработки архитектуры Firefox. Спустя два года, когда более простые варианты оптимизаций уже были реализованы, разработчики вернулись к идее обработки контента и пользовательского интерфейса в разных процессах.
Одной из главных причин для перехода Firefox на многопоточную архитектуру помимо улучшения отзывчивости интерфейса инженер Mozilla называет безопасность. В настоящее время после обнаружения незакрытой уязвимости в Firefox злоумышленник может выполнить произвольный код на машинах пользователей. Для решения проблем безопасности используется множество техник и приёмов, но самым эффективным остаётся запуск кода в “песочнице” с пониженными привилегиями.
Однако размещение текущей однопроцессной архитектуры Firefox в “песочнице” не представляется эффективным: режим песочницы лишь не даёт процессу выполнять действия, которые он делать не должен, а текущая организация браузера (особенно с множеством дополнений) требует широкого доступа к сети и файловой системе. Как надеются разработчики, мультипроцессный Firefox будет обеспечивать работу каждого из процессов веб-контента в режиме “песочницы” с глубокими ограничениями, что позволит уменьшить количество уязвимостей в браузере. Контроль за доступом к файловой системе будет производиться главным процессом.
Новый режим уже доступен в ночных сборках Firefox и может быть активирован в настройках. По словам Билла Макклоски, потребление памяти в многопоточном режиме мало отличается от обычного однопоточного режима, разница составляет около 10 Мб, при этом планируемые оптимизации позволят снизить этот показатель. Разработчик также выразил надежду, что мультипроцессовый Firefox станет более стабильным, поскольку аварийное отключение одного процесса больше не будет приводить к падению всего браузера.