Компания Mozilla, разрабатывающая популярный веб-браузер
Firefox, столкнулась с неожиданными трудностями в дальнейшем развитии своего
продукта, которые, правда, выглядят несколько надуманными в свете
современных технологий. Как сообщили разработчики, объем кода в браузере
Firefox стал слишком велик, поэтому, по их словам, программе-компоновщику не
хватает адресуемой виртуальной памяти. Дело в том, как говорят разработчики,
что компиляция и сборка продукта выполняются на 32-битных машинах, которые
могут адресовать лишь ограниченный объем виртуальной памяти даже при установке
дополнительной физической памяти.
Как заявил
Кайл Хьюи (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.
|