Interpretador de Python 3 escrito em Rust, capaz de executar código Python sem bindings de CPython, com suporte a WebAssembly e incorporação em aplicações.
WebAssembly/binaryen
Biblioteca de compilação e otimização em C++ para WebAssembly, com a ferramenta wasm-opt e uma versão para JavaScript (binaryen.js).
- Estrelas
- 8,666
- Forks
- 899
- Issues abertas
- 580
- Último commit
- há 8 horas
O que é?
Binaryen é uma biblioteca de infraestrutura de compiladores e toolchains para WebAssembly, escrita em C++. Ela oferece uma API C simples e uma interface JavaScript, e aceita entradas tanto em um formato semelhante ao WebAssembly quanto na forma de um grafo de fluxo de controle geral. Sua IR interna foi projetada para compilar rapidamente para WebAssembly e executar etapas de otimização em paralelo.
O otimizador inclui várias etapas para reduzir o tamanho do código e melhorar a velocidade, com foco em transformações específicas para WebAssembly, como alocação local de registradores, eliminação de código morto, inlining e compactação de segmentos de dados. A principal ferramenta, wasm-opt, executa essas etapas em um arquivo wasm, e ferramentas relacionadas permitem montar e desmontar wasm, converter wasm para JavaScript com wasm2js, mesclar módulos, reduzir casos de teste e interpretar wasm.
Várias toolchains usam Binaryen como componente, entre elas Emscripten, wasm-pack, Kotlin/Wasm e o build web do Flutter para Dart. A biblioteca também é usada pelo AssemblyScript e pelo Grain.
Recursos principais
- 01Otimizador com várias etapas específicas para WebAssembly, voltadas à redução do tamanho do código e à melhoria da velocidade
- 02Ferramenta de linha de comando wasm-opt para otimizar e transformar arquivos wasm
- 03Compilador wasm2js que converte WebAssembly em módulos JavaScript ES6
- 04API C simples e binaryen.js para criar e otimizar módulos por meio de código
- 05Utilitários wasm-merge, wasm-metadce e wasm-reduce para agrupar, remover código desnecessário e reduzir arquivos wasm
Casos de uso
- Reduzir o tamanho e melhorar a velocidade de saídas WebAssembly geradas por toolchains de C, C++, Rust ou Kotlin
- Compilar WebAssembly para JavaScript em ambientes sem suporte nativo a wasm
- Mesclar vários módulos wasm em um único arquivo antes de distribuí-los
- Criar módulos WebAssembly programaticamente com JavaScript ou C
Antes de usar
- A saída de texto padrão nem sempre é texto WebAssembly válido. Para gerar texto válido, use --generate-stack-ir --print-stack-ir.
Tópicos
Perguntas frequentes
- O que é binaryen?
- Biblioteca de compilação e otimização em C++ para WebAssembly, com a ferramenta wasm-opt e uma versão para JavaScript (binaryen.js). Binaryen é uma biblioteca de infraestrutura de compiladores e toolchains para WebAssembly, escrita em C++. Ela oferece uma API C simples e uma interface JavaScript, e aceita entradas tanto em um formato semelhante ao WebAssembly quanto na forma de um grafo de fluxo de controle geral. Sua IR interna foi projetada para compilar rapidamente para WebAssembly e executar etapas de otimização em paralelo.
- binaryen é gratuito? Qual é a licença?
- binaryen é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
- binaryen ainda é mantido?
- Manutenção ativa. O último commit de binaryen foi em 21 de out. de 2026.
- Para que posso usar binaryen?
- Reduzir o tamanho e melhorar a velocidade de saídas WebAssembly geradas por toolchains de C, C++, Rust ou Kotlin Compilar WebAssembly para JavaScript em ambientes sem suporte nativo a wasm Mesclar vários módulos wasm em um único arquivo antes de distribuí-los Criar módulos WebAssembly programaticamente com JavaScript ou C
- Onde consigo binaryen?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/WebAssembly/binaryen
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Editor de mapas de tiles versátil para criar mapas de jogos baseados em tiles, como RPGs, platformers e clones de Breakout.
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.
Uma implementação em Rust do compilador e do servidor de linguagem do TypeScript 7, que substitui diretamente as ferramentas de verificação de tipos e geração de saída.
Um mecanismo OCR de código aberto (libtesseract) e uma ferramenta de linha de comando que extraem texto de imagens, com reconhecimento baseado em LSTM e suporte a mais de 100 idiomas.
Uma engine 2D simples para a linguagem de programação D, com física, animação, tilemaps e diálogos integrados.