Emscripten 3.0, compilador de C/C++ a WebAssembly dispoñible

Publicouse o lanzamento do compilador Emscripten 3.0, que lle permite compilar código en C/C++ e outras linguaxes para as que están dispoñibles interfaces baseadas en LLVM en código intermedio universal de baixo nivel WebAssembly, para a súa posterior integración con proxectos JavaScript, executando nun navegador web e úsao en Node.js ou crea aplicacións multiplataforma autónomas que se executan mediante o tempo de execución de wasm. O código do proxecto distribúese baixo a licenza MIT. O compilador usa desenvolvementos do proxecto LLVM e a biblioteca Binaryen úsase para a xeración e optimización de WebAssembly.

O obxectivo principal do proxecto Emscripten é crear unha ferramenta que permita executar código na Web independentemente da linguaxe de programación na que estea escrito o código. As aplicacións compiladas poden usar chamadas a bibliotecas estándar C e C++ (libc, libcxx), extensións C++, multithreading baseado en pthreads, API POSIX e moitas bibliotecas multimedia. As API para a integración coa API web e o código JavaScript ofrécense por separado.

Emscripten admite a difusión da saída da biblioteca SDL2 a través de Canvas, e tamén ofrece soporte para OpenGL e EGL a través de WebGL, o que lle permite converter aplicacións e xogos gráficos a WebAssembly (por exemplo, hai un porto do kit de ferramentas Qt e admite Unreal Engine). Motores de xogo 4 e Unit, motor físico Bullet). Ademais de compilar código en C/C++, están a desenvolverse proxectos por separado para permitir que intérpretes e máquinas virtuais funcionen en navegadores para as linguaxes Lua, C#, Python, Ruby e Perl. Tamén é posible aplicar frontends non Clang a LLVM, dispoñibles para idiomas como Swift, Rust, D e Fortran.

Principais cambios en Emscripten 3.0:

  • A biblioteca C musl utilizada en emscripten actualizouse á versión 1.2.2 (usouse a versión 2 na rama Emscripten 1.1.15.x).
  • Unha parte das funcións que se usaban principalmente no proxecto foron eliminadas da biblioteca parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isTtructuraStrucTypetParturalType, isTtructuralTypeType Bits, isFunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Nos modelos shell.html e shell_minimal.html, a saída das mensaxes de erro que se producen durante o funcionamento de emscripten e que saen a aplicación a través de stderr cambia por defecto para usar console.warn en lugar de console.error.
  • Engadida a posibilidade de especificar unha codificación de texto específica utilizada nos nomes de ficheiros. A codificación pódese especificar en forma de sufixo ao pasar o nome do ficheiro, por exemplo, "a.rsp.utf-8" ou "a.rsp.cp1251").

Fonte: opennet.ru

Engadir un comentario