Avaldatud on Emscripteni 3.0 kompilatori versioon, mis võimaldab komplitseerida C/C++ ja muudele keeltele, millel on LLVM-põhised front-end'id, universaalse madala taseme vahekoode WebAssembly, et integreerida see JavaScripti projektidega, käivitada veebibrauseris, kasutada Node.js-is või luua iseseisvaid platvormidevahelisi rakendusi, mida käitatakse wasm runtime'i abil. Projekti kood on litsentseeritud MIT litsentsi alusel. Kompilaator kasutab LLVM projekti arengut ja WebAssembly genereerimiseks ning optimeerimiseks on kaasatud Binaryen teek.
Emscripteni projekti arendamise peamine eesmärk on luua tööriist, mis võimaldab koodi Webis käitada olenemata programmeerimiskeelest, milles see kood on kirjutatud. Kompileeritud rakendustes võivad kasutada C ja C++ standardraamatukogude (libc, libcxx) kõnesid, C++ laiendusi, pthreads-põhist mitme laua toetust, POSIX API-d ja paljusid multimeedia teeke. Eraldi on saadaval API-d Web API-de ja JavaScripti koodiga integreerimiseks.
Emscripten toetab SDL2 teegi väljundi tõlkimist Canvasisse ning pakub ka OpenGL ja EGL tuge WebGL-i kaudu, mis võimaldab konverteerida WebAssembly-sse ka graafikurakendusi ja mänge (näiteks on saadaval Qt tööriistakomplekti port ja toetatakse mängumootoreid Unreal Engine 4 ja Unity, füüsikamootor Bullet). Lisaks C/C++ koodi kompileerimisele arendatakse eraldi projekte, et tagada tõlgendajate ja virtuaalmasinad toetust keelte jaoks nagu Lua, C#, Python, Ruby ja Perl. Samuti on võimalik kasutada Clangi erinevaid frontend'e LLVM-i jaoks, mis on saadaval sellistele keeltele nagu Swift, Rust, D ja Fortran.
Emscripteni 3.0 peamised muudatused:
- Emscripteni kasutuses olev C-köide musl on uuendatud versioonile 1.2.2 (Emscripteni 2.x haru puhul kasutati versiooni 1.1.15).
- ParseTools.js raamatukogust on eemaldatud rida funktsioone, mida peamiselt kasutati projekti sees: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType, getStructuralTypeParts, getStructuralTypePartBits, isFunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
- Shell.html ja shell_minimal.html mallides on Emcripteni töö käigus tekkivate vigade teated, mis edastatakse rakenduse kaudu stderr, vaikimisi seadistatud kasutama console.warn'i asemel console.error'i.
- Lisatud võimalus määrata konkreetne tekstikodeering, mida kasutatakse failinimedes. Kodeeringut saab määrata sufiksina failinime edastamisel, näiteks "a.rsp.utf-8" või "a.rsp.cp1251".
Allikas: opennet.ru
