Разработчики из Mozilla продолжают стараться продвинуть производительность браузера Firefox на новый уровень, для этого будет создан новый JavaScript-двигатель под названием IonMonkey и графический двигатель Azure.
Новый JS-двигатель IonMonkey будет содержать в себе улучшенную сборку мусора обрабатываемого JavaScript-кода, тем самым будет оптимизирована работа памяти, также IonMonkey будет являться JIT-компилятором. Также как и Crankshaft, используемый в Google Chrome, IonMonkey позволит добиться дополнительной оптимизации, такой как подстановка функций, удаление мёртвого (неиспользуемого) кода. На данный момент IonMonkey находится в стадии проектирования и проводятся эксперименты, целью которых является выявление наиболее востребованных функций и возможностей.
Графический двигатель Azure должен заменить использование Cairo, который отчасти уже исчерпал свои возможности в улучшении производительности отрисовки контента в браузере Firefox. Azure должен продолжить движение в достижении цели увеличения производительности.
По умолчанию Firefox выполняет отрисовку следующими этапами: первоначально контент для вывода подразделяется на отдельные независимые слои, каждый из слоёв отрисовывается с помощью Cairo, данный двигатель использует доступный графический 2D API в исполняемой операционной системе, при этом если доступно аппаратное ускорение — оно будет задействовано, на данный момент аппаратное ускорение доступно на Windows Vista и Windows 7, но в компании Mozilla хотят расширить поддержку аппаратного ускорения на другие платформы, включая мобильные. После отрисовки слои собираются вместе, используя доступный 3D API (OpenGL или Direct3D) или Cairo и результат выводится на экран.
Из-за различий в используемом типе данных Cairo и Direct2D API при отрисовке графики приходится для вызова функций приводить результаты из чисел с фиксированной точкой к числам с плавающей точкой и обратно, тем самым увеличивая бесполезную нагрузку, дополнительно к этому в Cairo при работе с посторонними API добавляются новые издержки, что в конечном счёте ухудшает производительность при работе с графикой.
В Mozilla решили удалить эти ненужные преобразования и отслеживания состояния. По замыслам новый двигатель Azure должен быть достаточно близок к Direct2D, но при этом должен позволять реализовать функционал OpenGL и Direct3D 9.
Проводимые эксперименты уже показали, что Azure оказался быстрее чем использование Cairo.
Всё же Cairo останется в браузере Firefox на тот случай, если Azure будет нестабильным или не оправдает возложенных надежд.