Emscripten | |
---|---|
Tipo de | Transpilador |
Desarrollador | alon zakai |
Escrito en | C [2] , C++ y JavaScript |
Sistema operativo | multiplataforma |
plataforma de hardware | multiplataforma |
ultima versión | 3.1.15 [1] ( 1 de julio de 2022 ) |
Licencia | Licencia MIT y licencia abierta de la Universidad de Illinois [d] |
Sitio web | emscripten.org |
Emscripten es un compilador de código de bytes LLVM a JavaScript que se puede ejecutar en un navegador web [3] . El código de bytes LLVM se puede obtener del código fuente C o C++ .
El fundador del proyecto es Alon Zakai. Distribuido bajo la licencia MIT .
Los desarrolladores de JavaScript a menudo enfrentan tareas difíciles, que a menudo ya están resueltas, pero no en el JavaScript que necesitan, sino en un lenguaje de programación completamente diferente . Reescribir decenas o incluso cientos de miles de líneas de código de C/C++ a JavaScript es un placer para los aficionados. No aumenta la emoción en absoluto.
Un problema adicional con la migración es que la emulación de código es notoriamente menos eficiente que la ejecución de código nativo . Y cuando la velocidad del modelado paso a paso del funcionamiento del procesador de otra persona no es suficiente, tienen que agregar la recompilación dinámica: traducción automática de secciones del código emulado a JavaScript. Es bastante difícil, pero después de ser refactorizado por un compilador JIT inteligente, el código se vuelve más rápido.
El objetivo de desarrollo del proyecto Emscripten es crear una herramienta que permita ejecutar código en Internet , independientemente del lenguaje de programación en el que esté escrito este código. Emscripten le permite compilar el código de bytes LLVM en código JavaScript que se puede ejecutar dentro de un navegador web utilizando solo un motor JavaScript normal , sin necesidad de complementos adicionales. El código de bytes LLVM se puede generar a partir de fuentes C/C++ utilizando los compiladores llvm-gcc y clang , así como a partir de código en otro lenguaje de programación para el que existe una interfaz LLVM. Emscripten admite la traducción de la salida SDL a través del lienzo y también brinda soporte para OpenGL a través de WebGL .
Los proyectos que se han vuelto a compilar con éxito para ejecutarse en el navegador incluyen el kernel de NetBSD , los intérpretes de CPython , Ruby y Lua , el visor de PDF Poppler , el sistema de representación de fuentes FreeType TrueType , el decodificador de video H.264 , Doom [4] y Doom 3 [5] , el motor de juego Unreal Engine [6] [7] y otros. [ocho]