Для разработки Firefox не хватает памяти
Как заявил Кайл Хьюи (Kyle Huey), представитель команды разработчиков Firefox, подобная проблема уже возникала пару лет назад, когда был достигнут предел в 2 Гбайт адресуемого пространства виртуальной памяти. Тогда на машинах, используемых для сборки, разработчики просто добавили специальный ключ «/3GB» в команды сборки, что добавило лишний гигабайт свободного места для линковки компонентов и спасло положение на некоторое время. В нынешней ситуации подобного ключа уже нет – прежние компиляторы уже не подойдут.
Корень проблемы заключается в специальной стадии оптимизации с использованием метода под названием «Profile-Guided Optimisation» (PGO – Оптимизация по профилю). Именно эта стадия в сборке браузера Firefox требует больше всего памяти. Ряд экспертов предлагает вообще перестать использовать PGO, поскольку выигрыш от нее не совсем очевиден. С другой стороны, отказ от оптимизации нельзя назвать умным ходом в угоду компиляции.
Вместо отказа от ресурсоемкой оптимизации на 32-битных сборочных машинах, компания Mozilla рассматривает возможность разбить на части библиотеку «libxul», где подавляющая часть ключевого кода сгруппирована в укрупненные сборки. Лучшими кандидатами на выделение в отдельные сборки могут стать модули WebGL и ANGLE (модуль ANGLE обеспечивает работу 3D-графики WebGL поверх Direct3D), хотя есть и другие вполне подходящие для отдельной сборки компоненты. Кроме того, разбивке на группы могут подвергнуться библиотеки для работы с мультимедийным контентом.
Пока окончательный способ решения проблем с линковкой компонентов не найден, разработчики удаляют из официальных сборок ряд самых новых модулей, включая технологии Graphite, SPDY и libreg, которые планировалось включить в версию Firefox 11. Еще одно возможное решение заключается в переходе на новую среду разработки, компиляции и сборки Microsoft Visual C++ 2010 – она может линковать компоненты эффективнее и с меньшим потреблением памяти. Наконец, разработчики смогут перейти на сборку бинарных компонентов 32-битной версии Firefox на 64-битных машинах, которые могут адресовать более 4 Гбайт памяти. Непонятно, почему они не сделали этого раньше, ведь даже бинарные файлы для смартфонов собирают на обычных ПК и серверах с архитектурой x86, на не самих аппаратах с ARM-процессорами.
По материалам сайта Softpedia.