Началась работа над IonMonkey, новым JIT-компилятором JavaScript от проекта Mozilla
5 мая 2011 года
Разработчики проекта Mozilla приступили к созданию нового JIT-компилятора для увеличения скорости выполнения JavaScript в движке SpiderMonkey. Новый JIT-копилятор получил название IonMonkey и пока находится на стадии проектирования архитектуры и формирования начального прототипа. IonMonkey является третьим JIT-компилятором, создаваемым в рамках проекта Mozilla, прошлые варианты были выпущены в 2010 и 2008 годах, каждый раз значительно поднимая производительность Firefox.
Новый JIT-компилятор не станет исключением, в нем ожидается реализация передовых техник оптимизиации JavaScript, некоторые из которых уже представлены в конкурирующем JIT-компиляторе Crankshaft проекта V8. JavaScript является языком с динамической типизацией, с одной стороны это предоставляет большую гибкость для разработчиков (по сути объекты в JavaScript можно рассматривать как хэш-таблицу), но с другой стороны создает трудности при создании JIT-компиляторов. Так как невозможно заранее определить какой тип данных будет содержаться в переменной, невозможно сопоставить данную переменную с определенными фиксированными инструкциями, рассматривающими эту переменную, например, как строку или число. В IonMonkey планируется провести большую работу по обеспечению более организованной работы со структурами данных и более точному учету типов. Из платформ, генерация кода для которых появится в IonMonkey, отмечаются i386, x86_64, и ARM.
В рамках проекта IonMonkey разработчики Mozilla планируют не просто создать новую технику JIT-компиляции, но и учесть ранее созданные наработки, превратив IonMonkey в единую консолидированную платформу, поддерживающую различные техники оптимизации и задействующую каждую из них в зависимости от текущей ситуации. В отличии от системы Crankshaft, разработанной для V8, в IonMonkey ожидается реализация системы вероятностной оценки типов (проект Type Inference), в рамках которой предложен гибридный метод статического и динамического анализа, позволяющий точно сопоставить типы для каждой переменой и свойства JavaScript-программы. Подобный подход даст возможность избавиться от выполнения всех дополнительных проверок в процессе работы JavaScript-программы и реализовать некоторые виды оптимизации, которые при другом подходе оказались бы невозможными.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.