Saadaval on Emscripten 4.0, C/C++ kompilaator WebAssembly'le

Avaldati Emscripteni tööriistakomplekt 4.0, mis vĂ”imaldab kompileerida C/C++ ja teistele keeledele, millel on LLVM-pĂ”hised eesriided, universaalseks madala taseme vahevormiks WebAssembly. Saadud tulemust saab kasutada JavaScripti projektide integreerimiseks, veebibrauserites kĂ€ivitamiseks, Node.js-is kasutamiseks vĂ”i eraldiseisvate platvormideĂŒleste rakenduste loomiseks, mida kĂ€itatakse wasm runtime'i abil. Projekti kood levitatakse MIT-litsentsi alusel. Kompilaator kasutab LLVM-projekti arendusi ning WebAssembly genereerimise ja optimeerimise jaoks on kaasatud Binaryen teek.

Emscripteni pÔhieesmÀrgiks on luua tööriist, mis vÔimaldab veebis kÀitada koodi sÔltumata programmeerimiskeelest, milles see kood algselt kirjutatud on. Kompileeritud rakendustes vÔivad olla kasutuses C ja C++ standardraamatukogude (libc, libcxx) kutsed, C++ laiendused, pthreads-pÔhine mitme lÔime tugi, POSIX API ja paljud multimeedia raamatukogud. Eraldi pakutakse API-sid integreerimiseks veeb API-de ja JavaScripti koodiga.

Emscripten toetab SDL2 raamatukogu vĂ€ljundi tĂ”lkimist Canvas'i kaudu ning rakendab OpenGL ja EGL tuge WebGL API kaudu, mis vĂ”imaldab grafika rakenduste ja mĂ€ngude (nĂ€iteks on olemas Qt tööriistakomplekti port, toetatakse Unreal Engine ja Unity mĂ€ngumootoreid ning fĂŒĂŒsikalise simulatsiooni mootorit Bullet) muutmist WebAssembly-le.

Lisaks C/C++ koodi kompileerimisele arendatakse eraldi projekte, et kÀivitada brauserites tÔlgendusjaotureid ja virtuaalmasinate keeli nagu Lua, C#, Python, Ruby ja Perl. Lisaks on vÔimalik kasutada LLVM-i eesriideid, mis ei ole Clang, nÀiteks keeledele nagu Swift, Rust, D ja Fortran.

Versiooni 4.0 numbrite mÀÀramine on seotud muudatustega, mis rikuvad ABI taseme ĂŒhilduvust (Emscripteni 4.0-s projekti uuesti kompileerimiseks on vajalik objektifailide ja eelnevate Emscripteni versioonidega loodud raamatukogude uuesti kompileerimine). Emscripteni 4.0 peamised muudatused:

  • Lisatud valik „-sWASM_LEGACY_EXCEPTIONS” vana ja uue erandite töötlemise mehhanismi vahel valimiseks. VaikesĂ€tete kohaselt jĂ€tkub vana mehhanismi kasutamine, kuna mitte kĂ”ik brauserid ei ole implementeerinud WebAssembly uusi eranditöötluse vĂ”imalusi.
  • Komponendid compiler-rt, libcxx, libcxxabi ja libunwind on uuendatud LLVM 19 harule.
  • Toetatud Safari brauseri versiooni minimaalne versioon (seade MIN_SAFARI_VERSION) on tĂ”stetud 14.1-lt 15.0-le, mis vĂ”imaldab vaikimisi aktiveerida mitmeid tĂ€iustatud WebAssembly funktsioone:
    • Kasutusele on vĂ”etud uued kĂ€sud float'i tĂŒĂŒpide int'iks (nontrapping-fptoint) konverteerimiseks, mis tagastavad ĂŒlekoormuse korral minimumi vĂ”i maksimumi vÀÀrtuse, mitte ei genereeri erandi (vajalik SIMD-i jaoks).
    • Kasutusele on vĂ”etud valik WASM_BIGINT, kus 64-bitiste tĂ€isarvude vahetamiseks WebAssembly ja JavaScripti koodi vahel kasutatakse BigInt tĂŒĂŒpi.
    • Kasutusele on vĂ”etud valik BULK_MEMORY, kus C funktsioonide memcpy ja memset rakendamiseks kasutatakse WebAssembly kĂ€ske memory.copy ja memory.fill.
  • Funktsioonis PATH.basename() on vĂ€lja lĂŒlitatud teede normaliseerimine (PATH.normalize()), st. kĂ€ik ‘PATH.basename(«a/.»)’ tagastab nĂŒĂŒd «.» asemele «a», ja ‘PATH.basename(«a/b/..»)’ tagastab «..» asemel «a».
  • Valiku kasutamisel «-sMODULARIZE» on factory-funktsioonid, mis loovad ja tagastavad WebAssembly moodulite ja objektide eksemplare JavaScriptile, nĂŒĂŒd mĂ€rgistatud «async» tunnusega, kui kompileeritud on reĆŸiimis WASM_ASYNC_COMPILATION, mis on vaikimisi rakendatud.
  • Lisatud on vĂ”imalus mÀÀrata JavaScripti teeke, kasutades valikut «-lfoo.js». Erinevalt valikust «—js-library» otsitakse teeki kĂ”ikides radades, mis on mÀÀratud valiku «-L» kaudu.
  • Komponimise ajal silumisse (set -O0 vĂ”i -sASSERTIONS) rakendatakse vaikimisi silumise versiooni malloc funktsioonist koos assert-kontrollidega, mis tuvastavad sellised vead, nagu nĂ€iteks kahekordne free() funktsiooni kutsumine.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster