Emscripten 3.0, una cadena de herramientas de compilación para WebAssembly utilizando LLVM

Hace poco se dio a conocer el lanzamiento de la nueva versión del compilador Emscripten 3.0, el cual se caracteriza por permitir compilar código en C/C++ y otros lenguajes para los que están disponibles frontends basados ​​en LLVM, en un WebAssembly de middleware universal de bajo nivel.

La principal función de realizar esta compilación es para su posterior integración con Proyectos de JavaScript, ejecutar en un navegador web, utilizar en Node. Js o crear aplicaciones independientes multiplataforma que se ejecutan con el tiempo de ejecución wasm.

Sobre Emscripten

El principal objetivo de desarrollo del proyecto Emscripten es crear una herramienta que le permita ejecutar código en la Web, independientemente del lenguaje de programación en el que esté escrito.

Las aplicaciones compiladas pueden usar llamadas a bibliotecas estándar de C y C++ (libc, libcxx), extensiones de C++, subprocesos múltiples basados ​​en pthreads, API POSIX y muchas bibliotecas multimedia. Las API para la integración con la API web y el código JavaScript se proporcionan por separado.

Emscripten admite la transmisión de la salida de la biblioteca SDL2 a través de Canvas, y también proporciona compatibilidad con OpenGL y EGL a través de WebGL, lo que permite convertir aplicaciones gráficas y juegos a WebAssembly.

Prácticamente cualquier base de código C o C++ portátil se puede compilar en WebAssembly usando Emscripten, desde juegos de alto rendimiento que necesitan renderizar gráficos, reproducir sonidos y cargar y procesar archivos, hasta marcos de aplicaciones como Qt. Emscripten ya se ha utilizado para convertir una lista muy larga de bases de código del mundo real a WebAssembly, incluidas bases de código comerciales como Unreal Engine 4 y Unity Engine.

Además de compilar el código C/C++, los proyectos se desarrollan por separado para garantizar que los intérpretes y las máquinas virtuales para Lua, C #, Python, Ruby y Perl se inicien en los navegadores. También es posible aplicar interfaces que no sean de Clang a LLVM disponibles para idiomas como Swift, Rust, D y Fortran.

Cabe destacar que existen diferencias entre el entorno de ejecución nativo y Emscripten, lo que significa que, por lo general, es necesario realizar algunos cambios en el código nativo. Dicho esto, muchas aplicaciones solo necesitarán cambiar la forma en que definen su bucle principal y también modificar su manejo de archivos para adaptarse a las limitaciones del navegador / JavaScript.

También existen limitaciones que pueden hacer que algunos códigos sean más fáciles de migrar: lea las Pautas de portabilidad para determinar dónde puede que deba dedicar más esfuerzo.

Principales novedades de Emscripten 3.0

En esta nueva versión que se presenta, la biblioteca musl C utilizada en emscripten se ha actualizado a la versión 1.2.2 (la versión 1.1.15 se utilizó en la rama Emscripten 2.x).

De la biblioteca parseTools.js se eliminó una parte de las funciones, que se utilizan principalmente en el proyecto: removePointing, apuntandoLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.

Mientras que en las plantillas shell.html y shell_minimal.html, la salida de los mensajes de error que ocurren durante la operación de emscripten y emitidos por la aplicación a través de stderr se cambia de forma predeterminada para usar console.warn en lugar de console.error.

Tambien se destaca que se agregó la capacidad de especificar una codificación de texto específica utilizada en los nombres de los archivos. La codificación se puede especificar en forma de sufijo al pasar el nombre del archivo, por ejemplo, «a.rsp.utf-8» o «a.rsp.cp1251»).

Finalmente si estás interesado en conocer más al respecto sobre Emscripten, puedes consultar los detalles del proyecto en su pagina web oficial.

Y de igual forma, puedes consultar documentación en la web de como utilizar Emscripten, un sitio de referencia que te podemos recomendar es el sitio web para desarrolladores de Mozilla: https://developer.mozilla.org.

Ademas, es importante mencionar que el código del proyecto se distribuye bajo la licencia MIT. El compilador usa los desarrollos del proyecto LLVM y la biblioteca Binaryen se usa para generar WebAssembly y optimización. Puedes consultar su código fuente en GitHub.


El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error pincha aquí.

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada.

*

*

  1. Responsable de los datos: AB Internet Networks 2008 SL
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.