Emscripten 4.0 është disponibile, kompilator nga C/C++ në WebAssembly

është publikuar versioni i 4.0 të mjetit Emscripten, që lejon kompilimin e kodit në C/C++ dhe gjuhëve të tjera që kanë frondë për LLVM, në kodin e ulët të nivelit universale WebAssembly. Rezultati i marrë mund të përdoret për integrim me projektet JavaScript, ekzekutimin në shfletuesin web, përdorimin në Node.js ose për të krijuar aplikacione shumëplatformat që ekzekutohen përmes wasm runtime. Kodi i projektit shpërndahet nën licencën MIT. Në kompilator përfshihen zhvillimet e projektit LLVM, ndërsa për gjenerimin e WebAssembly dhe optimizimin përdoret biblioteka Binaryen.

Qëllimi kryesor i Emscripten është krijimi i një mjeti që lejon ekzekutimin e kodit në Web, pavarësisht nga gjuha programimi në të cilën ky kod është shkruar fillimisht. Në aplikacionet e kompuar mund të përdoren thirrjet e bibliotekave standarde C dhe C++ (libc, libcxx), zgjerimet C++, shumëfije në bazë të pthreads, API POSIX dhe shumë biblioteka multimedia. Po ashtu, ofrohen API të veçanta për integrimin me Web API dhe kodin në JavaScript.

Emscripten mbështet përkthimin e daljes nga biblioteka SDL2 përmes Canvas, si dhe realizon mbështetje për OpenGL dhe EGL përmes API WebGL, që lejon të transformohen në WebAssembly aplikacione grafike dhe lojëra (p.sh., ka portin e toolkit Qt, mbështeten motorët e lojrave Unreal Engine dhe Unit, si dhe motori i simuluar i proceseve fizike Bullet).

Përveç kompilimit të kodit në C/C++, zhvillohen projekte të veçanta për ekzekutimin e interpretueseve në shfletues për makinat virtuale gjuhët Lua, C#, Python, Ruby dhe Perl. Për më tepër, është e mundur të aplikohet frondë të tjera për LLVM, përveç Clang, si p.sh., frondët për gjuhë si Swift, Rust, D dhe Fortran.

Përshkrimi i numrit të versionit 4.0 është i lidhur me ndryshimet që prishin kompatibilitetin në nivelin ABI (në rikonstruksionin e projektit në Emscripten 4.0 do të kërkohet rikonstruksioni i skedhave objekt dhe biblioteka të ndërtuara me versionet e kaluara të Emscripten). Ndryshimet kryesore në Emscripten 4.0:

  • Ă«shtĂ« shtuar opsioni "-sWASM_LEAGCY_EXCEPTIONS" pĂ«r tĂ« zgjedhur midis mekanizmave tĂ« vjetĂ«r dhe atyre tĂ« reja tĂ« trajtimit tĂ« pĂ«rjashtimeve. Sipas parazgjedhjes vazhdon tĂ« pĂ«rdoret mekanizmi i vjetĂ«r, pasi jo tĂ« gjithĂ« shfletuesit e kanĂ« implementuar mundĂ«sitĂ« e WebAssembly pĂ«r tĂ« punuar me trajtuesit e rinj tĂ« pĂ«rjashtimeve.
  • KomponentĂ«t compiler-rt, libcxx, libcxxabi dhe libunwind janĂ« azhurnuar nĂ« degĂ«n LLVM 19.
  • Versioni minime tĂ« mbĂ«shtetura pĂ«r ndĂ«rtimin e shfletuesit Safari (caktimi MIN_SAFARI_VERSION) Ă«shtĂ« rritur nga 14.1 nĂ« 15.0, duke mundĂ«suar aktivizimin e disa veçorive tĂ« avancuara tĂ« WebAssembly si tĂ« parazgjedhura:
    • ËshtĂ« e bĂ«rĂ« e mundur pĂ«rdorimi i instrukcioneve tĂ« reja pĂ«r konvertimin e tipit float nĂ« int (nontrapping-fptoint), tĂ« cilat nĂ« vend qĂ« tĂ« gjenerojnĂ« njĂ« pĂ«rjashtim nĂ« rast teprice, kthejnĂ« vlerĂ«n minimale ose maksimale tĂ« mundshme (e nevojshme pĂ«r SIMD).
    • ËshtĂ« mundĂ«suar opsioni WASM_BIGINT, i cili pĂ«rdor tipin BigInt pĂ«r shkĂ«mbimin e vlerave tĂ« numrave tĂ« plotĂ« 64-bit midis WebAssembly dhe kodit JavaScript.
    • ËshtĂ« mundĂ«suar opsioni BULK_MEMORY, i cili aplikon instrukcionet WebAssembly memory.copy dhe memory.fill pĂ«r realizimin e funksioneve C memcpy dhe memset.
  • 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", fabrikat e funksioneve qĂ« krijojnĂ« dhe kthejnĂ« instanca tĂ« moduleve WebAssembly dhe objekte pĂ«r JavaScript tani janĂ« tĂ« markuara si "async" gjatĂ« kompilimit me mĂ«nyrĂ«n WASM_ASYNC_COMPILATION, e cila aplikohet si e parazgjedhur.
  • ËshtĂ« shtuar mundĂ«sia e pĂ«rcaktimit tĂ« bibliotekave JavaScript duke pĂ«rdorur opsionin "-lfoo.js". Ndryshe nga opsioni "—js-library", kĂ«rkimi i bibliotekĂ«s bĂ«het nĂ« tĂ« gjitha rrugĂ«t e caktuara pĂ«rmes opsionit "-L".
  • Kur komponohet nĂ« modalitetin e rindĂ«rtimit pĂ«r debugging (-O0 ose -sASSERTIONS) versioni i debugging i funksionit malloc Ă«shtĂ« aktivizuar si e parazgjedhur me kontrolle assert, tĂ« cilat zbulojnĂ« gabime tĂ« tilla si thirrja e dyfishtĂ« e funksionit free().

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster