http://www.opennet.ru/opennews/art.shtml?num=36468Asm.js - низкоуровневое высокопроизводительное подмножество JS, со спец. аннотациями в комментариях, для эффективной трансляции с языков С/С++-уровня.
Цитата:
Из отличительных черт Asm.js можно отметить поддержку строгой типизации, при которой переменные на протяжении своего жизненного цикла имеют заранее известный и не изменяемый тип. Наличие информации о типах позволяет использовать не только JIT, но и предварительную AOT-компиляцию, выполняемую для всего кода до начала его выполнения и генерирующую более простой и эффективный машинный код. При этом, в отличие от JIT-компиляции, Asm.js обеспечивает предсказуемую производительность и не зависит от сборщика мусора. В итоге, код с известной информацией о типах выполняется всего в два раза медленнее нативного приложения, написанного на C/C++. В то время как без Asm.js скомпилированное с использованием Emscripten приложение выполняется медленнее в 5 раз.
Цитата:
Подмножество JavaScript, предлагаемое в Asm.js, полностью совместимо с обычным JavaScript и может выполняться в любых браузерах, так как вся дополнительная информация определяется в форме аннотаций (например, "x = x|0; // x : int"). Совместимость полностью сохраняется - если браузер не поддерживает Asm.js, то код выполняется как обычный JavaScript, а если поддерживает - включается дополнительный оптимизирующий модуль, учитывающий добавленные в код аннотации.