Objavljeno je izdanje Emscripten 3.0 kompajlera, koji vam omogućava da prevedete kod u C/C++ i drugim jezicima za koje su dostupni frontendovi zasnovani na LLVM-u u univerzalni srednji kod niskog nivoa WebAssembly, za naknadnu integraciju sa JavaScript projektima, pokretanje u web pretraživaču i koristiti u Node.js ili kreirati samostalne višeplatformske aplikacije koje se pokreću koristeći wasm runtime. Šifra projekta se distribuira pod MIT licencom. Kompajler koristi razvoje iz LLVM projekta, a Binaryen biblioteka se koristi za generiranje WebAssembly-a i optimizaciju.
Glavni cilj Emscripten projekta je kreiranje alata koji vam omogućava da izvršavate kod na Webu bez obzira na programski jezik na kojem je kod napisan. Prevedene aplikacije mogu koristiti pozive standardnim C i C++ bibliotekama (libc, libcxx), C++ ekstenzijama, višenitno bazirano na pthreads, POSIX API-je i mnoge multimedijalne biblioteke. API-ji za integraciju sa Web API-jem i JavaScript kodom su dati odvojeno.
Emscripten podržava prevođenje izlaza SDL2 biblioteke putem Canvasa, a također pruža podršku za OpenGL i EGL putem WebGL-a, što omogućava konverziju grafičkih aplikacija i igara u WebAssembly (na primjer, postoji port Qt alata i podrška za Unreal Engine 4 i Unit game engine, kao i Bullet fizički engine). Pored kompajliranja C/C++ koda, razvijaju se i odvojeni projekti koji omogućavaju izvršavanje interpretera u preglednicima i virtuelne mašine Za Lua, C#, Python, Ruby i Perl. Također je moguće koristiti LLVM frontendove osim Clanga, dostupne za jezike kao što su Swift, Rust, D i Fortran.
Glavne promjene u Emscripten 3.0:
- Musl C biblioteka koja se koristi u emscriptenu je ažurirana na verziju 1.2.2 (verzija 2 je korištena u grani Emscripten 1.1.15.x).
- Dio funkcija koje su se uglavnom koristile u okviru projekta uklonjen je iz biblioteke parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getParctionTucturalTypeStructuralTypeDructural ef, 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 grešci koje se javljaju tokom rada emscripten-a i koje aplikacija izlazi preko stderr-a se podrazumevano prebacuje da koristi console.warn umjesto console.error.
- Dodata mogućnost specificiranja specifičnog kodiranja teksta koji se koristi u nazivima datoteka. Kodiranje se može navesti u obliku sufiksa prilikom prosljeđivanja imena datoteke, na primjer, "a.rsp.utf-8" ili "a.rsp.cp1251").
izvor: opennet.ru
