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

S'ha publicat el llançament del compilador Emscripten 3.0, que us permet compilar codi en C/C++ i altres llenguatges per als quals estan disponibles interfícies basades en LLVM en codi intermedi universal de baix nivell WebAssembly, per a la posterior integració amb projectes JavaScript, en execució. en un navegador web i utilitzar-lo a Node.js o crear aplicacions multiplataforma autònomes que s'executen amb el temps d'execució de wasm. El codi del projecte es distribueix sota la llicència MIT. El compilador utilitza desenvolupaments del projecte LLVM i la biblioteca Binaryen s'utilitza per a la generació i optimització de WebAssembly.

L'objectiu principal del projecte Emscripten és crear una eina que permeti executar codi a la Web independentment del llenguatge de programació en què estigui escrit el codi. Les aplicacions compilades poden utilitzar trucades a biblioteques C i C++ estàndard (libc, libcxx), extensions C++, multiprocés basat en pthreads, API POSIX i moltes biblioteques multimèdia. Les API per a la integració amb l'API web i el codi JavaScript es proporcionen per separat.

Emscripten admet la difusió de la sortida de la biblioteca SDL2 mitjançant Canvas, i també ofereix suport per a OpenGL i EGL mitjançant WebGL, que us permet convertir aplicacions gràfiques i jocs a WebAssembly (per exemple, hi ha un port del kit d'eines Qt i és compatible amb Unreal Engine). Motors de joc 4 i Unit, motor físic Bullet). A més de compilar codi en C/C++, s'estan desenvolupant projectes per separat per garantir el llançament d'intèrprets i màquines virtuals en navegadors per als llenguatges Lua, C#, Python, Ruby i Perl. També és possible aplicar interfícies que no siguin Clang a LLVM, disponibles per a idiomes com Swift, Rust, D i Fortran.

Canvis importants a Emscripten 3.0:

  • La biblioteca musl C utilitzada a emscripten s'ha actualitzat a la versió 1.2.2 (la versió 2 es va utilitzar a la branca Emscripten 1.1.15.x).
  • Una part de les funcions que s'utilitzaven principalment dins del projecte s'han eliminat de la biblioteca parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isTtructuraSpetrucTypeTypeTypeTypeTypetrulType Bits, isFunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • A les plantilles shell.html i shell_minimal.html, la sortida dels missatges d'error que es produeixen durant el funcionament d'emscripten i que l'aplicació emet mitjançant stderr es canvia per defecte per utilitzar console.warn en comptes de console.error.
  • S'ha afegit la possibilitat d'especificar una codificació de text específica utilitzada en els noms de fitxers. La codificació es pot especificar en forma de sufix quan es passa el nom del fitxer, per exemple, "a.rsp.utf-8" o "a.rsp.cp1251").

Font: opennet.ru

Afegeix comentari