Avaldatud on Emscripteni tööriistakomplekt 6.0, mis võimaldab kompileerida C/C++ koodi ja teistele keeledele, millel on LLVM põhised frontend'id, universaalseks madala taseme WebAssembly vahekoodiks. Saadud tulemust saab kasutada JavaScript-projektidega integreerimiseks, veebibrauseris käitamiseks, Node.js-is kasutamiseks või eraldiseisvate mitme platvormiga rakenduste loomiseks, mida käitatakse wasm runtime'i abil. Projekti kood jaotatakse MIT litsentsi alusel. Kompilaatoris kasutatakse LLVM projekti saavutusi ja WebAssembly genereerimiseks ning optimeerimiseks on kaasatud Binaryeni teek.
Emscripteni põhieesmärgiks on arendada tööriista, mis võimaldab käitada veebis koodi olenemata programmeerimiskeelest, milles see kood algselt kirjutatud on. Kompilleeritud rakendustes võivad kasutada C ja C++ standardraamatukogude (libc, libcxx) kutseid, C++ laiendusi, mitme lõime toetust pthreads'i põhjal, POSIX API-d ning mitmeid multimeedia raamatukogusid. Eraldi antakse välja API-d Web API-de ja JavaScripti koodiga integreerimiseks.
Emscripten toetab SDL2 teeki väljundi tõlkimist Canvas kaudu ning rakendab OpenGL-i ja EGL-i tuge WebGL API kaudu, võimaldades graafiliste rakenduste ja mängude (näiteks Qt tööriistakomplekti port, Unreal Engine'i ja Unity mängumootorite tugi ning Bullet füüsikamootor) teisendamist WebAssembly-ks.
Lisaks C/C++ koodi kompileerimisele arendatakse eraldi projekte, et käivitada tõlgendajaid brauserites ja virtuaalmasinad muid keeltes nagu Lua, C#, Python, Ruby ja Perl. Samuti on võimalik rakendada LLVM frontend'e, mis ei ole Clang, näiteks keelte frontend'id nagu Swift, Rust, D ja Fortran.
Versiooninumbri 6.0 määramine on seotud ühilduvust rikkuda teinud muudatustega. Emscripten 6.0 peamised muudatused:
- Suurendatud järkjärguliste brauserimootorite minimaalset versiooninumbrit, millel genereeritud kood võib töötada: Chrome 74 -> 85, Firefox 68 -> 79 ja Safari 12.2 -> 14.1. Muudatus võimaldas vaikimisi kasutada WebAssembly laiendusi muudetavate globaalsete muutujate importimiseks ja eksportimiseks ning suurendada signaali ja väärtuse säilitamisega numbrite täpsust.
- Voogesidete avaldamisel, kasutades Fetch operatsiooni, on laaditava ploki suurus nüüd piiratud 8 MB, et vältida suurte failide kogu sisu korraga mälu laadimist.
- Uuendatud versioonid musl libc 1.2.6, libpng 1.6.58 ja google-closure-compiler 20260429.0.0.
- Keerukuse lipp "-m64" on nüüd rakendatud, mis on sarnane lippudega
"-sMEMORY64" ja "—target=wasm64". - PThread objektist on eemaldatud väli PThread.runningWorkers.
- Funktsioon pause() tagastab nüüd 0, mitte EINTR.
- Windowsi platvormil on Emscripteni käivitamiseks pakkuda .exe faili (emcc.exe) bat faili asemel (emcc.bat).
Allikas: opennet.ru
