Biblioteca de compilación y optimización en C++ para WebAssembly, con la herramienta wasm-opt y una versión para JavaScript (binaryen.js).
emscripten-core/emscripten
Una cadena de herramientas de compilación que convierte código C y C++ en WebAssembly para ejecutarlo en navegadores, Node.js y otros runtimes de Wasm.
- Estrellas
- 27,734
- Forks
- 3,572
- Issues abiertos
- 2,527
- Último commit
- hace 3 horas
¿Qué es?
Emscripten compila C y C++ a WebAssembly mediante LLVM y Binaryen. El resultado puede ejecutarse en la web, en Node.js y en runtimes de Wasm independientes. El comando emcc se usa como gcc o clang y genera un módulo de WebAssembly junto con un cargador JavaScript o una página HTML de ejemplo.
Proporciona implementaciones web de API portables, como OpenGL y SDL2, lo que permite portar al navegador aplicaciones gráficas nativas existentes. Entre los ejemplos citados de este tipo de portabilidad están proyectos grandes como el motor de videojuegos Unity y Google Earth.
Aunque se centra en C y C++ mediante Clang, el proyecto también puede integrarse con otros compiladores basados en LLVM, como el target wasm32-unknown-emscripten de Rust.
Funciones clave
- 01Compila C y C++ a WebAssembly mediante LLVM y Binaryen.
- 02Ejecuta el resultado en navegadores, Node.js, Deno, Bun y runtimes de Wasm independientes.
- 03Proporciona implementaciones web de las API OpenGL y SDL2.
- 04Se puede usar como reemplazo directo de gcc o clang mediante el comando emcc.
- 05Puede generar una página HTML con un cargador o un archivo JavaScript independiente.
Casos de uso
- Portar una aplicación de escritorio o un juego existentes en C o C++ para ejecutarlos en un navegador web.
- Ejecutar bibliotecas nativas de C o C++ dentro de un proyecto de Node.js.
- Crear módulos de WebAssembly a partir de código C para usarlos en otros runtimes de Wasm.
Inicio rápido
- 1
Instala Emscripten SDK (emsdk) desde la página de descargas
- 2
Compila hello.c en un archivo JavaScript
emcc hello.c -o hello.js - 3
Ejecuta el JavaScript generado con Node.js
node hello.js
Antes de usarlo
- La configuración consiste en instalar la cadena de herramientas emsdk desde su página de descargas, no en instalar un único paquete.
Temas
Preguntas frecuentes
- ¿Qué es emscripten?
- Una cadena de herramientas de compilación que convierte código C y C++ en WebAssembly para ejecutarlo en navegadores, Node.js y otros runtimes de Wasm. Emscripten compila C y C++ a WebAssembly mediante LLVM y Binaryen. El resultado puede ejecutarse en la web, en Node.js y en runtimes de Wasm independientes. El comando emcc se usa como gcc o clang y genera un módulo de WebAssembly junto con un cargador JavaScript o una página HTML de ejemplo.
- ¿emscripten es gratuito? ¿Qué licencia tiene?
- emscripten es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿emscripten sigue mantenido?
- Mantenimiento activo. El último commit de emscripten fue el 21 oct 2026.
- ¿Para qué puedo usar emscripten?
- Portar una aplicación de escritorio o un juego existentes en C o C++ para ejecutarlos en un navegador web. Ejecutar bibliotecas nativas de C o C++ dentro de un proyecto de Node.js. Crear módulos de WebAssembly a partir de código C para usarlos en otros runtimes de Wasm.
- ¿Cómo se instala emscripten?
- Instala Emscripten SDK (emsdk) desde la página de descargas Compila hello.c en un archivo JavaScript: emcc hello.c -o hello.js Ejecuta el JavaScript generado con Node.js: node hello.js
- ¿Dónde consigo emscripten?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/emscripten-core/emscripten
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Una versión de FFmpeg en WebAssembly y JavaScript que permite grabar, convertir y transmitir video y audio desde el navegador.
Colección modular de tecnologías para compiladores y cadenas de herramientas, que incluye el núcleo de LLVM, el frontend Clang para C/C++, libc++ y el linker LLD.
Lenguaje similar a TypeScript y compilador que convierte un subconjunto tipado de TypeScript en módulos WebAssembly.
Un compilador de Go basado en LLVM que genera código para microcontroladores, WebAssembly (WASM/WASI) y herramientas de línea de comandos.
Un compilador experimental de TypeScript y JavaScript que convierte programas en ejecutables nativos o WebAssembly, sin necesitar Node.js en tiempo de ejecución.