Emscripten 4.0 është në dispozicion, një kompilator nga C/C++ në WebAssembly.

ËshtĂ« publikuar versioni i mjetit Emscripten 4.0, qĂ« lejon kompilimin e kodit nĂ« C/C++ dhe gjuhĂ« tĂ« tjera pĂ«r tĂ« cilat ka frontend-e tĂ« bazuara nĂ« LLVM, nĂ« njĂ« kod ndĂ«rmjetĂ«s universal tĂ« nivelit tĂ« ulĂ«t WebAssembly. Rezultati i marrĂ« mund tĂ« pĂ«rdoret pĂ«r integrimin me projekte JavaScript, ekzekutimin nĂ« shfletuesin web, pĂ«rdorimin nĂ« Node.js ose krijimin e aplikacioneve tĂ« ndara multilegjerish, tĂ« cilat ekzekutohen me ndihmĂ«n e wasm runtime. Kodi i projektit shpĂ«rndahet nĂ«n licencĂ«n MIT. Compiler-i pĂ«rdor zhvillimet nga projekti LLVM dhe pĂ«r krijimin e WebAssembly dhe optimizimin angazhohet biblioteka Binaryen.

Qëllimi kryesor i Emscripten është krijimi i një mjeti që lejon ekzekutimin e kodit në Web pavarësisht nga gjuha e programimit në të cilën ky kod është shkruar fillimisht. Në aplikacionet e komiluara mund të përdoren thirrje të bibliotekave standarde C dhe C++ (libc, libcxx), zgjerime C++, multithreading të bazuar në pthreads, API POSIX dhe shumë biblioteka multimediale. Ekspertizë ad hoc ofrohet për integrimin me API-të e Web dhe kodin në JavaScript.

Emscripten mbështet përkthimin e daljes së bibliotekës SDL2 përmes Canvas-it, si dhe implementon mbështetje për OpenGL dhe EGL përmes API-së WebGL, duke lejuar transformimin në WebAssembly të aplikacioneve grafike dhe lojërave (për shembull, ekziston një port i toolkit-it Qt, dhe mbështeten motorët e lojërave Unreal Engine dhe Unity, si dhe motoori i simulimit të proceseve fizike Bullet).

Përveç kompilimit të kodit në C/C++, projekti për të ekzekutuar interpretuese për shfletues po zhvillohet gjithashtu për gjuhët Lua, C#, Python, Ruby dhe Perl. Për më tepër, është e mundur të përdoren frontend të LLVM, të ndryshme nga Clang, për shembuj, frontend për gjuhët si Swift, Rust, D dhe Fortran. makinave virtuale për gjuhët Lua, C#, Python, Ruby dhe Perl. Për më tepër, është e mundur të aplikohen frontend-e në LLVM, përveç Clang, si frontend-et për gjuhë si Swift, Rust, D dhe Fortran.

Caktimi i numrit të versionit 4.0 lidhet me ndryshime që ndikojnë në kompatibilitetin në nivelin ABI (kur ndërtohet përsëri projekti në Emscripten 4.0, do të kërkohet rindërtimi i skedave objekt dhe bibliotekave të ndërtuara me versionet e kaluara të Emscripten). Ndryshimet kryesore në Emscripten 4.0 janë:

  • ËshtĂ« shtuar opsioni «-sWASM_LEAGCY_EXCEPTIONS» pĂ«r tĂ« zgjedhur midis mekanizmave tĂ« vjetĂ«r dhe tĂ« rinj tĂ« trajtimit tĂ« pĂ«rjashtimeve. Si standart vazhdon tĂ« pĂ«rdoret mekanizmi i vjetĂ«r, pasi jo tĂ« gjithĂ« shfletuesit e kanĂ« implementuar funksionalitetet e WebAssembly pĂ«r tĂ« punuar me trajtuesit e rinj tĂ« pĂ«rjashtimeve.
  • KomponentĂ«t compiler-rt, libcxx, libcxxabi dhe libunwind janĂ« pĂ«rditĂ«suar nĂ« degĂ«n LLVM 19.
  • Versioni minimal i mbĂ«shtetur nĂ« ndĂ«rtimet e shfletuesit Safari (konfigurimi MIN_SAFARI_VERSION) Ă«shtĂ« rritur nga 14.1 nĂ« 15.0, e cila ka lejuar nĂ« mĂ«nyrĂ« standart pĂ«rdorimin e disa mundĂ«sive tĂ« pĂ«rparuara tĂ« WebAssembly:
    • ËshtĂ« pĂ«rfshirĂ« pĂ«rdorimi i instrukcioneve tĂ« reja pĂ«r konvertimin e tipit float nĂ« int (nontrapping-fptoint), qĂ« nĂ« vend tĂ« gjenerimit tĂ« njĂ« pĂ«rjashtimi nĂ« rast tĂ« mbingarkesĂ«s sĂ« rezultatit kthen vlerĂ«n minimale ose maksimale tĂ« mundshme (e nevojshme pĂ«r SIMD).
    • ËshtĂ« pĂ«rfshirĂ« opsioni WASM_BIGINT, ku pĂ«r shkĂ«mbimin e vlerave tĂ« plota 64-bit midis WebAssembly dhe kodit JavaScript pĂ«rdoret tipi BigInt.
    • ËshtĂ« pĂ«rfshirĂ« opsioni BULK_MEMORY, ku pĂ«r realizimin e funksioneve C memcpy dhe memset pĂ«rdoren instruksionet WebAssembly memory.copy dhe memory.fill.
  • NĂ« funksionin PATH.basename() Ă«shtĂ« çaktivizuar normalizimi i rrugĂ«ve (PATH.normalize()), dmth, thirrja ‘PATH.basename(«a/.»)’ tani do tĂ« kthejĂ« «.» nĂ« vend tĂ« «a», dhe ‘PATH.basename(«a/b/..»)’ do tĂ« kthejĂ« «..» nĂ« vend tĂ« «a».
  • Kur pĂ«rdoret opsioni «-sMODULARIZE», funksionet fabrikĂ«, tĂ« cilat krijojnĂ« dhe kthejnĂ« instanca tĂ« moduleve WebAssembly dhe objekteve pĂ«r JavaScript, tani janĂ« tĂ« shĂ«nuara me shenjĂ«n «async» kur kompilohen nĂ« mĂ«nyrĂ« tĂ« WASM_ASYNC_COMPILATION, e cila pĂ«rdoret si standart.
  • ËshtĂ« shtuar mundĂ«sia pĂ«r tĂ« cilĂ«suar biblioteka JavaScript, duke pĂ«rdorur opsionin «-lfoo.js». Ndryshe nga opsioni «—js-library», kĂ«rkimi i bibliotekĂ«s kryhet nĂ« tĂ« gjitha rrugĂ«t e caktuara pĂ«rmes opsionit «-L».
  • Kur komponohet nĂ« modalitetin gjurmues (-O0 ose -sASSERTIONS), ndihma e pĂ«rdefaultuar nuk shpĂ«rngulet nĂ« variantin e gjurmimit tĂ« funksionit malloc me kujdes tĂ« shtuar, duke zbuluar gabime tĂ« tilla si thirrja e dyfishtĂ« e funksionit free().

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster