Emscripten 3.0, C/C++ u WebAssembly kompajler dostupan

Objavljeno je izdanje kompajlera Emscripten 3.0, što vam omogućuje kompajliranje koda u C/C++ i drugim jezicima za koje su dostupna sučelja temeljena na LLVM-u u univerzalni posredni kod niske razine WebAssembly, za kasniju integraciju s JavaScript projektima, koji se izvode u web pregledniku i koristiti u Node.js ili izraditi samostalne aplikacije za više platformi koje se pokreću pomoću wasm runtimea. Kod projekta se distribuira pod licencom MIT-a. Kompajler koristi razvoj iz LLVM projekta, a biblioteka Binaryen koristi se za WebAssembly generiranje i optimizaciju.

Glavni cilj projekta Emscripten je stvoriti alat koji vam omogućuje izvršavanje koda na webu bez obzira na programski jezik u kojem je kod napisan. Prevedene aplikacije mogu koristiti pozive prema standardnim C i C++ bibliotekama (libc, libcxx), C++ ekstenzijama, višenitnosti temeljenoj na pthreads-u, POSIX API-jima i mnogim multimedijskim bibliotekama. API-ji za integraciju s Web API-jem i JavaScript kodom dostupni su zasebno.

Emscripten podržava emitiranje izlaza SDL2 biblioteke putem Canvasa, a također pruža podršku za OpenGL i EGL putem WebGL-a, što vam omogućuje pretvaranje grafičkih aplikacija i igara u WebAssembly (na primjer, postoji priključak Qt alata i podržava Unreal Engine 4 i Unit motori igara, fizički Bullet engine). Osim kompajliranja koda u C/C++, projekti se razvijaju zasebno kako bi se osiguralo pokretanje tumača i virtualnih strojeva u preglednicima za jezike Lua, C#, Python, Ruby i Perl. Također je moguće primijeniti sučelja koja nisu Clang na LLVM, dostupna za jezike kao što su Swift, Rust, D i Fortran.

Glavne promjene u Emscriptenu 3.0:

  • Knjižnica musl C koja se koristi u emscriptenu ažurirana je na verziju 1.2.2 (verzija 2 korištena je u ogranku Emscripten 1.1.15.x).
  • Dio funkcija koje su se uglavnom koristile unutar projekta uklonjen je iz biblioteke parseTools.js: 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.
  • U predlošcima shell.html i shell_minimal.html, izlaz poruka o pogreškama koje se pojavljuju tijekom rada emscriptena i koje šalje aplikacija putem stderr-a prebacuje se prema zadanim postavkama na korištenje console.warn umjesto console.error.
  • Dodana je mogućnost određivanja specifičnog kodiranja teksta koji se koristi u nazivima datoteka. Kodiranje se može odrediti u obliku sufiksa prilikom prosljeđivanja naziva datoteke, na primjer, "a.rsp.utf-8" ili "a.rsp.cp1251").

Izvor: opennet.ru

Dodajte komentar