Un intérprete de Python 3 escrito en Rust que ejecuta código Python sin bindings de CPython y ofrece compatibilidad con WebAssembly e integración en aplicaciones.
WebAssembly/binaryen
Biblioteca de compilación y optimización en C++ para WebAssembly, con la herramienta wasm-opt y una versión para JavaScript (binaryen.js).
- Estrellas
- 8,666
- Forks
- 899
- Issues abiertos
- 580
- Último commit
- hace 8 horas
¿Qué es?
Binaryen es una biblioteca de infraestructura para compiladores y cadenas de herramientas de WebAssembly, escrita en C++. Ofrece una API de C sencilla y una interfaz de JavaScript, y acepta entradas tanto en un formato similar a WebAssembly como en forma de grafo de flujo de control general. Su IR interna está diseñada para compilar rápidamente a WebAssembly y ejecutar pasadas de optimización en paralelo.
El optimizador incluye numerosas pasadas para reducir el tamaño del código y mejorar la velocidad, con énfasis en transformaciones específicas de WebAssembly, como la asignación de registros locales, la eliminación de código muerto, el inlining y el empaquetado de segmentos de datos. La herramienta principal, wasm-opt, ejecuta estas pasadas en un archivo wasm; otras herramientas permiten ensamblar y desensamblar wasm, convertir wasm a JavaScript con wasm2js, combinar módulos, reducir casos de prueba e interpretar wasm.
Varias cadenas de herramientas usan Binaryen como componente, entre ellas Emscripten, wasm-pack, Kotlin/Wasm y la compilación web de Flutter de Dart. También se usa como biblioteca en AssemblyScript y Grain.
Funciones clave
- 01Optimizador con numerosas pasadas específicas de WebAssembly para reducir el tamaño del código y mejorar la velocidad
- 02Herramienta de línea de comandos wasm-opt para optimizar y transformar archivos wasm
- 03Compilador wasm2js que convierte WebAssembly en módulos JavaScript ES6
- 04API de C sencilla y binaryen.js para crear y optimizar módulos mediante código
- 05Utilidades wasm-merge, wasm-metadce y wasm-reduce para agrupar, depurar y reducir archivos wasm
Casos de uso
- Reducir el tamaño y mejorar la velocidad del código WebAssembly generado por cadenas de herramientas de C, C++, Rust o Kotlin
- Compilar WebAssembly a JavaScript para entornos sin compatibilidad nativa con wasm
- Combinar varios módulos wasm en un solo archivo antes de distribuirlo
- Crear módulos WebAssembly mediante programación desde JavaScript o C
Antes de usarlo
- La salida de texto predeterminada no siempre es texto WebAssembly válido. Para obtener texto válido, usa --generate-stack-ir --print-stack-ir.
Temas
Preguntas frecuentes
- ¿Qué es binaryen?
- Biblioteca de compilación y optimización en C++ para WebAssembly, con la herramienta wasm-opt y una versión para JavaScript (binaryen.js). Binaryen es una biblioteca de infraestructura para compiladores y cadenas de herramientas de WebAssembly, escrita en C++. Ofrece una API de C sencilla y una interfaz de JavaScript, y acepta entradas tanto en un formato similar a WebAssembly como en forma de grafo de flujo de control general. Su IR interna está diseñada para compilar rápidamente a WebAssembly y ejecutar pasadas de optimización en paralelo.
- ¿binaryen es gratuito? ¿Qué licencia tiene?
- binaryen es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿binaryen sigue mantenido?
- Mantenimiento activo. El último commit de binaryen fue el 21 oct 2026.
- ¿Para qué puedo usar binaryen?
- Reducir el tamaño y mejorar la velocidad del código WebAssembly generado por cadenas de herramientas de C, C++, Rust o Kotlin Compilar WebAssembly a JavaScript para entornos sin compatibilidad nativa con wasm Combinar varios módulos wasm en un solo archivo antes de distribuirlo Crear módulos WebAssembly mediante programación desde JavaScript o C
- ¿Dónde consigo binaryen?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/WebAssembly/binaryen
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Editor de mapas de tiles de propósito general para crear mapas de juegos basados en tiles, como RPG, plataformas y clones de Breakout.
Un compilador experimental de TypeScript y JavaScript que convierte programas en ejecutables nativos o WebAssembly, sin necesitar Node.js en tiempo de ejecución.
Un port en Rust del compilador y el servidor de lenguaje de TypeScript 7, como reemplazo directo para la comprobación de tipos y la generación de código.
Motor de OCR de código abierto (libtesseract) y herramienta de línea de comandos para extraer texto de imágenes, con reconocimiento basado en LSTM y compatibilidad con más de 100 idiomas.
Un motor de videojuegos 2D sencillo para el lenguaje de programación D, con física, animación, tilemaps y diálogos integrados.