Kuburitswa kweEmscripten 4.0 toolkit kwakabudiswa, zvichikubvumidza kuti ugadzire kodhi muC/C++ nemimwe mitauro iyo LLVM-based frontends inowanikwa mune yepasirese-level yepakati kodhi WebAssembly. Mhedzisiro inoguma inogona kushandiswa kubatanidza nemapurojekiti eJavaScript, ichimhanya mubrowser, uchishandisa muNode.js, kana kugadzira akamira ega akawanda-mapuratifomu maapplication akatangwa uchishandisa wasm runtime. Iyo kodhi yeprojekiti yakagoverwa pasi peMIT rezinesi. Iyo compiler inoshandisa magadzirirwo eiyo LLVM chirongwa, uye Binaryen raibhurari inoshandiswa kuWebAssembly chizvarwa uye optimization.
Chinangwa chikuru cheEmscripten kugadzira chishandiso chinokutendera kuti uite kodhi paWebhu, zvisinei nemutauro wechirongwa wakanyorwa kodhi iyi. Zvishandiso zvakaunganidzwa zvinogona kushandisa mafoni kune akajairwa C uye C++ maraibhurari (libc, libcxx), C++ edzedzero, pthreads-based multithreading, POSIX APIs, uye akawanda multimedia raibhurari. MaAPI ekubatanidza neWebhu API uye JavaScript kodhi anopihwa zvakasiyana.
Emscripten inotsigira kutepfenyura kubuda kweibhurari yeSDL2 kuburikidza neCanvas, uye zvakare inoshandisa tsigiro yeOpenGL neEGL kuburikidza neWebGL API, iyo inokutendera kuti uchinje graphical application nemitambo kuita WebAssembly (semuenzaniso, kune chiteshi cheQt toolkit, iyo injini dzemitambo Unreal Injini uye Chikamu zvinotsigirwa, pamwe neyemuviri simulation injini Bullet maitiro).
Pamusoro pekunyora kodhi yeC/C++, mapurojekiti ari kugadzirwa zvakasiyana kuti ashandise vaturikiri mumabhurawuza uye michina chaiyo yeLua, C#, Python, Ruby, uye Perl. Zvinogonekawo kushandisa mamwe maLLVM frontends kunze kweClang, akadai semafrontends eSwift, Rust, D, uye Fortran.
Iko kupihwa kwevhezheni nhamba 4.0 kunokonzerwa nekuunzwa kweshanduko dzinokanganisa kuenderana padanho reABI (pakuvakazve chirongwa muEmscripten 4.0, zvichave zvakakosha kuvaka patsva mafaera echinhu nemaraibhurari akaunganidzwa neshanduro dzakapfuura dzeEmscripten). Shanduko huru muEmscripten 4.0:
- Yakawedzerwa sarudzo "-sWASM_LEAGCY_EXCEPTIONS" yekusarudza pakati pemabatirwo ekare kana matsva akasiyana. Nekumisikidza, iyo yekare mashini inoramba ichishandiswa, sezvo asiri ese mabhurawuza akashandisa WebAssembly kugona kubata iwo matsva ekunze ekubata.
- Compiler-rt, libcxx, libcxxabi uye libunwind zvikamu zvakagadziridzwa kune LLVM 19 bazi.
- Iyo yakaderera vhezheni yeSafari browser inotsigirwa mumagungano (iyo MIN_SAFARI_VERSION marongero) yakawedzera kubva 14.1 kusvika 15.0, izvo zvakaita kuti zvikwanise kushandisa akati wandei epamberi WebAssembly maficha nekusarudzika:
- Yagonesa kushandiswa kwekuyangarara kutsva kune int shanduko mirairo (nontrapping-fptoint), iyo pachinzvimbo chekukanda yakasarudzika kana mhedzisiro yafashukira, dzosera hushoma kana huwandu hunogoneka kukosha (inodiwa kuSIMD).
- Iyo WASM_BIGINT sarudzo inogoneswa, inoshandisa iyo BigInt mhando kuchinjanisa 64-bit integer kukosha pakati peWebAssembly neJavaScript kodhi.
- Iyo BULK_MEMORY sarudzo inogoneswa, iyo inoshandisa iyo WebAssembly mirayiridzo memory.copy uye memory.fill kuita C mabasa memcpy uye memset.
- Path normalization yakadzimwa muPATH.basename() basa (PATH.normalize()), i.e. kudaidza 'PATH.basename("a/.")' ikozvino yadzoka "." pachinzvimbo che "a", uye 'PATH.basename("a/b/..")' achadzoka ".." pachinzvimbo che "a".
- Paunenge uchishandisa -sMODULARIZE sarudzo, fekitori mabasa anogadzira uye anodzosa zviitiko zveWebAssembly modules uye zvinhu zveJavaScript zvave kunzi "async" kana zvaunganidzwa mune default WASM_ASYNC_COMPILATION modhi.
- Yakawedzera kugona kutsanangura maraibhurari eJavaScript uchishandisa "-lfoo.js" sarudzo. Kusiyana ne "--js-library" sarudzo, raibhurari inotsvakwa munzira dzese dzakatsanangurwa kuburikidza ne "-L" sarudzo.
- Kana uchibatanidza mudebug mode (-O0 kana -sASSERTIONS), iyo default debug vhezheni yebasa remalloc inogoneswa, ine cheki cheki inogoneswa kuona zvikanganiso sekufona mahara () kaviri.
Source: opennet.ru
