Repolode
WebAssembly

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