Você já descreveu o que é . O uso é que é uma linguagem de baixo nível que funciona em todos os navegadores, é bastante rápida na maioria e muito rápida em alguns. O que você faz disso é tão aberto quanto o que você faz com qualquer outra linguagem de programação.
O caso de uso que o Mozilla parece mais interessado é o seguinte: já existem maneiras de compilar linguagens com back-end LLVM (principalmente C e C ++) para JavaScript, via Emscripten. o asm.js está muito próximo do que o Emscripten já emite, portanto, isso permite que o código do Emscripten (que já é impressionantemente rápido nos compiladores JavaScript JIT de hoje) se torne ainda mais rápido, promovendo o objetivo de portar bases de código existentes na Web. Novamente, o que exatamente você usa para isso é a sua decisão. Portar jogos é um dos casos de uso (no qual o Mozilla aparentemente está envolvido ativamente), mas existem inúmeras coisas escritas em C e C ++, algumas das quais podem ser úteis para o site de alguém. Alguns que eu vi foram lançados (além de alguns dos meus próprios projetos), sem garantia de viabilidade:
- Portar algoritmos de uso geral (por exemplo, implementações zlib, libjpeg, openssl, FFT) para capacitar JavaScript / sites a fazer mais, sem precisar criar um novo padrão da web e dependendo de navegadores individuais para implementá-lo.
- Portando intérpretes, para que outros idiomas que não sejam JavaScript possam ser executados no navegador, com menos sobrecarga e esforço mínimo de portabilidade.
- Usando o asm.js como back-end para mais compiladores, especialmente aqueles que não mapeiam bem o JavaScript e não precisam da maioria de seus recursos e despesas gerais. Um exemplo pode ser um idioma projetado para trabalhos numéricos rápidos, sem alocação de memória.
- Usando asm.js para criar um JIT em JavaScript. Ele pode implementar qualquer linguagem - por exemplo, o ActionScript .
- Na mesma linha, portando compiladores JIT existentes para execução no navegador (consulte portando intérpretes, com efetivamente nulo overhead sobre JS). Provavelmente, isso só é possível quando os compiladores JIT são gerados automaticamente, como no PyPy.