В Firefox 22 появится Asm.js, низкоуровневое высокопроизводительное подмножество JavaScript

22 марта 2013 года

Wikinews-logo-ru.svg

Разработчики проекта Mozilla объявили об интеграции в ночные сборки Firefox оптимизирующего модуля OdinMonkey c реализацией поддержки Asm.js - низкоуровневого подмножества языка JavaScript, позволяющего существенно увеличить производительность приложений, автоматически преобразованных в JavaScript с языков C/C++ при помощи таких инструментов, как Emscripten и Mandreel. Ожидается, что поддержка Asm.js будет включена в выпуск Firefox 22, запланированный на 26 июня.

Из отличительных черт Asm.js можно отметить поддержку строгой типизации, при которой переменные на протяжении своего жизненного цикла имеют заранее известный и не изменяемый тип. Наличие информации о типах позволяет использовать не только JIT, но и предварительную AOT-компиляцию, выполняемую для всего кода до начала его выполнения и генерирующую более простой и эффективный машинный код. При этом, в отличие от JIT-компиляции, Asm.js обеспечивает предсказуемую производительность и не зависит от сборщика мусора. В итоге, код с известной информацией о типах выполняется всего в два раза медленнее нативного приложения, написанного на C/C++. В то время как без Asm.js скомпилированное с использованием Emscripten приложение выполняется медленнее в 5 раз.

Достоинством Asm.js также является то, что он отлично интегрируется с существующими JavaScript-движками, не требуя подключения новой виртуальной машины или JIT-компилятора - достаточно внести небольшие оптимизацию в текущий движок JavaScript. В частности, для SpiderMonkey подготовлен оптимизирующий модуль OdinMonkey, реализующий дополнительные техники оптимизации для Asm.js.

Подмножество JavaScript, предлагаемое в Asm.js, полностью совместимо с обычным JavaScript и может выполняться в любых браузерах, так как вся дополнительная информация определяется в форме аннотаций (например, "x = x|0; // x : int"). Совместимость полностью сохраняется - если браузер не поддерживает Asm.js, то код выполняется как обычный JavaScript, а если поддерживает - включается дополнительный оптимизирующий модуль, учитывающий добавленные в код аннотации.

Поддержка Asm.js уже обеспечена в Emscripten и активируется при сборке с установкой флага "ASM_JS=1". Пока код Asm.js нацелен на автоматическую генерацию, но в будущем, планируется обеспечить поддержку генерации Asm.js-кода на основе исходных текстов, написанных на более удобных для разработчиков низкоуровневых диалектах JavaScript, таких как LLJS (Low-Level JavaScript), что позволит использовать Asm.js не только для кода, транслируемого с C/C++, но и для проектов, изначально развиваемых на JavaScript.

 

ИсточникиПравить


Эта статья содержит материалы из статьи «В Firefox 22 появится Asm.js, низкоуровневое высокопроизводительное подмножество JavaScript», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
 

Комментарии:В Firefox 22 появится Asm.js, низкоуровневое высокопроизводительное подмножество JavaScript