Na voljo je Emscripten 3.0, prevajalnik C/C++ za WebAssembly

Objavljena je bila izdaja prevajalnika Emscripten 3.0, ki vam omogoča prevajanje kode v C/C++ in drugih jezikih, za katere so na voljo vmesniki, ki temeljijo na LLVM, v univerzalno nizkonivojsko vmesno kodo WebAssembly, za kasnejšo integracijo s projekti JavaScript, ki se izvajajo v spletnem brskalniku in uporabite v Node.js ali ustvarite samostojne aplikacije za več platform, ki se izvajajo z izvajanjem wasm. Koda projekta se distribuira pod licenco MIT. Prevajalnik uporablja razvoj iz projekta LLVM, knjižnica Binaryen pa se uporablja za generiranje in optimizacijo WebAssembly.

Glavni cilj projekta Emscripten je ustvariti orodje, ki omogoča izvajanje kode na spletu ne glede na programski jezik, v katerem je koda napisana. Prevedene aplikacije lahko uporabljajo klice standardnih knjižnic C in C++ (libc, libcxx), razširitev C++, večnitnosti na osnovi pthreads, API-jev POSIX in številnih multimedijskih knjižnic. API-ji za integracijo s spletnim API-jem in kodo JavaScript so na voljo ločeno.

Emscripten podpira oddajanje izhoda knjižnice SDL2 prek Canvasa in nudi tudi podporo za OpenGL in EGL prek WebGL, ki vam omogoča pretvorbo grafičnih aplikacij in iger v WebAssembly (na voljo je na primer vrata kompleta orodij Qt in podpira Unreal Engine 4 in motorji iger Unit, fizični motor Bullet). Poleg prevajanja kode v C/C++ se ločeno razvijajo projekti, ki zagotavljajo zagon tolmačev in virtualnih strojev v brskalnikih za jezike Lua, C#, Python, Ruby in Perl. Možna je tudi uporaba vmesnikov, ki niso Clang, za LLVM, ki je na voljo za jezike, kot so Swift, Rust, D in Fortran.

Glavne spremembe v Emscripten 3.0:

  • Knjižnica musl C, uporabljena v emscripten, je bila posodobljena na različico 1.2.2 (različica 2 je bila uporabljena v veji Emscripten 1.1.15.x).
  • Iz knjižnice parseTools.js je bil odstranjen del funkcij, ki so bile večinoma uporabljene znotraj projekta: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralTypePartBits, isFun ctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • V predlogah shell.html in shell_minimal.html se izhod sporočil o napakah, ki se pojavijo med delovanjem emscripten in jih izpiše aplikacija prek stderr, privzeto preklopi na uporabo console.warn namesto console.error.
  • Dodana možnost določanja specifičnega kodiranja besedila, uporabljenega v imenih datotek. Kodiranje je mogoče določiti v obliki pripone pri posredovanju imena datoteke, na primer "a.rsp.utf-8" ali "a.rsp.cp1251").

Vir: opennet.ru

Dodaj komentar