Вы уже описали, что это такое . Дело в том, что это низкоуровневый язык, который работает во всех браузерах, довольно быстрый в большинстве и очень быстрый в некоторых. То, что вы делаете из этого, так же открыто, как и любой другой язык программирования.
Сценарий использования Mozilla, по-видимому, наиболее заинтересован в следующем: уже есть способы компиляции языков с бэкэндами LLVM (особенно C и C ++) в JavaScript через Emscripten. asm.js очень близок к тому, что Emscripten уже испускает, поэтому это позволяет коду Emscripten (который уже впечатляюще быстр в современных JIT-компиляторах JavaScript) стать еще быстрее, продвигая цель переноса существующих баз кода в сеть. Опять же, для чего именно вы используете это ваше решение. Портирование игр - один из вариантов использования (в котором Mozilla, по-видимому, активно участвует), но на C и C ++ написано бесчисленное множество вещей, довольно много из которых могут пригодиться для чьего-либо веб-сайта. Некоторые из них, которые я видел, бросались (плюс некоторые из моих собственных разработок), без каких-либо гарантий относительно осуществимости:
- Портирование алгоритмов общего назначения (например, zlib, libjpeg, openssl, реализации FFT) для расширения возможностей JavaScript / веб-сайтов для выполнения большего, без необходимости создания нового веб-стандарта и в зависимости от отдельных браузеров для его реализации.
- Портирование интерпретаторов, так что в браузере могут работать языки, отличные от JavaScript, с меньшими издержками и минимальными усилиями по переносу.
- Использование asm.js в качестве бэкэнда для большего количества компиляторов, особенно тех, которые плохо отображаются на JavaScript и не нуждаются в большинстве его функций и накладных расходов. Примером может служить язык, предназначенный для быстрой числовой работы без выделения памяти.
- Использование asm.js для создания JIT в JavaScript. Он может реализовывать любой язык вообще - например, ActionScript .
- В том же духе портирование существующих JIT-компиляторов для запуска в браузере (см. Перенос интерпретаторов с фактически нулевыми накладными расходами по сравнению с JS). Это, вероятно, возможно только тогда, когда JIT-компиляторы генерируются автоматически, как в PyPy.