Emscripten 3.0, compilador C/C++ a WebAssembly disponible

Se ha publicado el lanzamiento del compilador Emscripten 3.0, que permite compilar código en C/C++ y otros lenguajes para los cuales hay interfaces basadas en LLVM en WebAssembly de código intermedio universal de bajo nivel, para su posterior integración con proyectos JavaScript, ejecutando en un navegador web y utilizarlo en Node.js o crear aplicaciones multiplataforma independientes que se ejecuten utilizando wasm runtime. El código del proyecto se distribuye bajo la licencia MIT. El compilador utiliza desarrollos del proyecto LLVM y la biblioteca Binaryen se utiliza para la generación y optimización de WebAssembly.

El objetivo principal del proyecto Emscripten es crear una herramienta que permita ejecutar código en la Web independientemente del lenguaje de programación en el que esté escrito. Las aplicaciones compiladas pueden utilizar 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 brinda soporte para OpenGL y EGL a través de WebGL, lo que le permite convertir aplicaciones gráficas y juegos a WebAssembly (por ejemplo, hay un puerto del kit de herramientas Qt y es compatible con Unreal Engine 4 y motores de juego Unit, motor Bullet físico). Además de compilar código en C/C++, se están desarrollando proyectos por separado para garantizar el lanzamiento de intérpretes y máquinas virtuales en navegadores para los lenguajes Lua, C#, Python, Ruby y Perl. También es posible aplicar interfaces que no sean Clang a LLVM, disponibles para lenguajes como Swift, Rust, D y Fortran.

Cambios importantes en Emscripten 3.0:

  • La biblioteca musl C utilizada en emscripten se actualizó a la versión 1.2.2 (la versión 2 se usó en la rama Emscripten 1.1.15.x).
  • Una parte de las funciones que se utilizaron principalmente dentro del proyecto se han eliminado de la biblioteca parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralTypePartBits, isFunctionDef, isPossivelyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • En las plantillas shell.html y shell_minimal.html, la salida de mensajes de error que ocurren durante la operación de emscripten y que la aplicación genera a través de stderr se cambia de forma predeterminada para usar console.warn en lugar de console.error.
  • Se agregó la capacidad de especificar una codificación de texto específica utilizada en los nombres de 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").

Fuente: opennet.ru

Añadir un comentario