Elérhető az Emscripten 3.0, egy C/C++ to WebAssembly fordító

Megjelent az Emscripten 3.0 fordító kiadása, amely lehetővé teszi a kód fordítását C/C++ nyelven és más nyelveken, amelyekhez LLVM-alapú frontendek állnak rendelkezésre, univerzális alacsony szintű köztes kódú WebAssembly-vé, a későbbi JavaScript projektekkel való integrációhoz, futtatáshoz egy webböngészőben, és használja a Node.js-ben, vagy hozzon létre önálló többplatformos alkalmazásokat, amelyek wasm runtime használatával futnak. A projekt kódját az MIT licence alatt terjesztik. A fordító az LLVM projekt fejlesztéseit használja, a Binaryen könyvtár pedig a WebAssembly generálására és optimalizálására szolgál.

Az Emscripten projekt fő célja egy olyan eszköz létrehozása, amely lehetővé teszi a kód futtatását a weben, függetlenül attól, hogy a kódot milyen programozási nyelven írták. A lefordított alkalmazások használhatják a szabványos C és C++ könyvtárak (libc, libcxx), C++ kiterjesztések, pthreads alapú többszálú kezelés, POSIX API-k és számos multimédiás könyvtár hívását. A Web API-val és a JavaScript-kóddal való integrációhoz szükséges API-k külön állnak rendelkezésre.

Az Emscripten támogatja az SDL2 könyvtár kimenetének Canvason keresztüli sugárzását, valamint támogatja az OpenGL-t és az EGL-t is WebGL-en keresztül, amely lehetővé teszi grafikus alkalmazások és játékok WebAssembly-re való konvertálását (például van egy port a Qt eszköztárban, és támogatja az Unreal Engine-t 4 és Unit játékmotorok, fizikai Bullet motor). A kód C/C++ nyelven történő fordítása mellett külön-külön is fejlesztenek olyan projekteket, amelyek biztosítják a Lua, C#, Python, Ruby és Perl nyelvek böngészőiben a tolmácsok és virtuális gépek elindítását. Lehetőség van nem Clang frontendek alkalmazására az LLVM-re is, amelyek olyan nyelveken érhetők el, mint a Swift, a Rust, a D és a Fortran.

Főbb változások az Emscripten 3.0-ban:

  • Az emscriptenben használt musl C könyvtár az 1.2.2-es verzióra frissült (az Emscripten 2.x ágban az 1.1.15-ös verziót használták).
  • A projektben főként használt függvények egy része eltávolításra került a parseTools.js könyvtárból: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType, isStructuralType, getStructTParype isStructTParype. Def, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • A shell.html és shell_minimal.html sablonokban az emscripten működése során fellépő és az alkalmazás által az stderr-n keresztül kiadott hibaüzenetek kimenete alapértelmezés szerint a console.warn fájlra van kapcsolva a console.error helyett.
  • Hozzáadtuk a fájlnevekben használt konkrét szövegkódolás megadásának lehetőségét. A kódolás megadható utótag formájában a fájlnév átadásakor, például "a.rsp.utf-8" vagy "a.rsp.cp1251").

Forrás: opennet.ru

Hozzászólás