Biblioteca de compilação e otimização em C++ para WebAssembly, com a ferramenta wasm-opt e uma versão para JavaScript (binaryen.js).
emscripten-core/emscripten
Uma toolchain de compilação que transforma código C e C++ em WebAssembly para execução em navegadores, Node.js e outros runtimes Wasm.
- Estrelas
- 27,734
- Forks
- 3,572
- Issues abertas
- 2,527
- Último commit
- há 3 horas
O que é?
O Emscripten compila C e C++ para WebAssembly usando LLVM e Binaryen. O resultado pode ser executado na web, no Node.js e em runtimes Wasm standalone. O comando emcc funciona de forma parecida com gcc ou clang e gera um módulo WebAssembly com um loader em JavaScript ou uma página HTML de exemplo.
Ele oferece implementações para a web de APIs portáveis, como OpenGL e SDL2, permitindo portar para o navegador aplicativos gráficos nativos existentes. Projetos grandes como o motor de jogos Unity e o Google Earth são citados como exemplos desse tipo de portabilidade.
Embora o foco seja C e C++ via Clang, o projeto também pode ser integrado a outros compiladores baseados em LLVM, como o target wasm32-unknown-emscripten do Rust.
Recursos principais
- 01Compila C e C++ para WebAssembly usando LLVM e Binaryen.
- 02Executa o resultado em navegadores, Node.js, Deno, Bun e runtimes Wasm standalone.
- 03Oferece implementações para a web das APIs OpenGL e SDL2.
- 04Pode ser usado como substituto direto de gcc ou clang com o comando emcc.
- 05Pode gerar uma página HTML com um loader ou um arquivo JavaScript sem HTML.
Casos de uso
- Portar um aplicativo ou jogo existente para desktop, escrito em C ou C++, para execução em um navegador.
- Executar bibliotecas nativas de C ou C++ dentro de um projeto Node.js.
- Criar módulos WebAssembly a partir de código C para uso em outros runtimes Wasm.
Início rápido
- 1
Instale o Emscripten SDK (emsdk) pela página de downloads
- 2
Compile hello.c em um arquivo JavaScript
emcc hello.c -o hello.js - 3
Execute o JavaScript gerado com o Node.js
node hello.js
Antes de usar
- A configuração consiste em instalar a cadeia de ferramentas emsdk pela página de downloads, e não em instalar um único pacote.
Tópicos
Perguntas frequentes
- O que é emscripten?
- Uma toolchain de compilação que transforma código C e C++ em WebAssembly para execução em navegadores, Node.js e outros runtimes Wasm. O Emscripten compila C e C++ para WebAssembly usando LLVM e Binaryen. O resultado pode ser executado na web, no Node.js e em runtimes Wasm standalone. O comando emcc funciona de forma parecida com gcc ou clang e gera um módulo WebAssembly com um loader em JavaScript ou uma página HTML de exemplo.
- emscripten é gratuito? Qual é a licença?
- emscripten é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- emscripten ainda é mantido?
- Manutenção ativa. O último commit de emscripten foi em 21 de out. de 2026.
- Para que posso usar emscripten?
- Portar um aplicativo ou jogo existente para desktop, escrito em C ou C++, para execução em um navegador. Executar bibliotecas nativas de C ou C++ dentro de um projeto Node.js. Criar módulos WebAssembly a partir de código C para uso em outros runtimes Wasm.
- Como instalar emscripten?
- Instale o Emscripten SDK (emsdk) pela página de downloads Compile hello.c em um arquivo JavaScript: emcc hello.c -o hello.js Execute o JavaScript gerado com o Node.js: node hello.js
- Onde consigo emscripten?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/emscripten-core/emscripten
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Uma implementação de FFmpeg em WebAssembly puro e JavaScript que permite gravar, converter e transmitir vídeo e áudio no navegador.
Coleção modular de tecnologias para compiladores e toolchains, incluindo o núcleo do LLVM, o frontend Clang para C/C++, libc++ e o linker LLD.
Uma linguagem e um compilador semelhantes a TypeScript que transformam um subconjunto tipado de TypeScript em módulos WebAssembly.
Um compilador Go baseado em LLVM para microcontroladores, WebAssembly (WASM/WASI) e ferramentas de linha de comando.
Um compilador experimental de TypeScript e JavaScript que transforma programas em executáveis nativos ou WebAssembly, sem exigir Node.js em tempo de execução.