Emscripten é um compilador de LLVM para JavaScript. Ele recebe bytecode LLVM (gerado por exemplo de código C/C++ utilizando Clang, ou de outra linguagem) e compila para JavaScript, que pode ser executado na Web.
Importante: Esta página fornece uma breve introdução sobre o que é o Emscripten. Para aprender mais Emscripten, vá para o Wiki oficial do Emscripten.
Ao utilizar o Emscripten, é possível
- Compilar código C e C++ para JavaScript
- Compilar qualquer outro código que pode ser traduzido em bytecode de LLVM para JavaScript.
- Compilar runtimes C/C++ de outras linguagens para JavaScript, e então executar o código nessas outras linguagens de forma indireta (isto já foi feito para Python e Lua)!
O Emscripten torna o código nativo imediatamente disponível na Web: uma plataforma que é baseada em padrões, tem inúmeras implementações compatíveis independentes, e executa em todos os lugares desde PCs até iPads.
Com Emscripten, desenvolvedores C/C++ não tem o alto custo de portar código manualmente para JavaScript — ou de precisar aprender JavaScript. Desenvolvedores Web também se beneficiam, pois podem utilizar em seus sites as milhares de utilizadades e bibliotecas nativas pré-existentes.
Praticamente qualquer base de código de C or C++ pode ser compilada para JavaScript utilizando Emscripten, variando de jogos de alta performance que precisam renderizar gráficos, tocar sons, carregar e processar arquivos, até frameworks de aplicativos como Qt.
O Emscripten gera código veloz — seu formato de saída padrão é asm.js , um subset de JavaScript altamente otimizado que pode ser executado em velocidade quase nativa em muitos casos.
Nota: Parece interessante? Leia mais sobre Emscripten e experimente alguns demos, e depois comece a utilizá-lo.
Outros artigos interessantes no MDN
- Nossa área de Desenvolvimento de jogos contém algum conteúdo útil relacionado a jogos, que é uma área de uso comum do Emscripten.
- Nossa página Emscripten techniques é um lugar para guardar ideias úteis relacionadas ao Emscripten que não tenham chegado ao Emscripten Wiki.