Ndodhi lanshimi i dytë i projektit Wasmer, që zhvillon runtime për ekzekutimin e moduleve WebAssembly, i cili mund të përdoret për të krijuar aplikacione universale që mund të ekzekutohen në sisteme të ndryshme operative, si dhe për ekzekutimin izole të kodit të pasigurt. Kodi i projektit është shkruar në gjuhën Rust dhe shpërndahet nën licencën MIT.
Portabiliteti sigurohet përmes kompilimit të kodit të aplikacionit në kodin e ndërmjetëm të nivelit të ulët WebAssembly, i cili mund të ekzekutohet në çdo OS ose të integrohet në programe në gjuhë të tjera programuese. Programet përbëhen nga konteinerë të lehtë, në të cilët ekzekutohet pseudokodi WebAssembly. Këta konteinerë nuk janë të lidhur me sistemin operativ dhe mund të përfshijnë kod, fillimisht të shkruar në çdo gjuhë programimi. Për kompilimin në WebAssembly mund të përdoret mjeti Emscripten. Për përkthimin e WebAssembly në kodin e makinerisë së platformës aktuale, mbështetet lidhja e backend-ëve të ndryshëm të kompilimit (Singlepass, Cranelift, LLVM) dhe engine-ve (aktivizimi i JIT-it ose gjenerimi i kodit të makinerisë).
Menaxhimi i aksesit dhe ndĂ«rveprimi me sistemin sigurohet falĂ« API-sĂ« WASI (WebAssembly System Interface), e cila ofron ndĂ«rfaqe programuese pĂ«r punĂ«n me skedarĂ«, soketĂ« dhe funksione tĂ« tjera qĂ« ofrohen nga sistemi operacional. Aplikacionet janĂ« tĂ« izoluara nga sistemi kryesor nĂ« njĂ« ambient sandbox dhe kanĂ« akses vetĂ«m nĂ« funksionalitetin e deklaruar (mekanizmi i sigurisĂ« mbi bazĂ«n e menaxhimit tĂ« mundĂ«sive â pĂ«r çdo veprim me burimet (skedarĂ«, katalogĂ«, soketĂ«, thirrje sistemore etj.) aplikacionit i duhet tĂ« jepen autorizimet pĂ«rkatĂ«se).
Për të ekzekutuar një kontejner WebAssembly mjafton të instaloni në sistemin runtime Wasmer, i cili vijon pa varësi të jashtme ("curl https://get.wasmer.io -sSfL | sh"), dhe të ekzekutoni skedarin e nevojshëm ("wasmer test.wasm"). Programet shpërndahen në formën e moduleve të zakonshëm WebAssembly, për menaxhimin e të cilave mund të përdoret menaxheri i paketave WAPM. Wasmer është gjithashtu i disponueshëm në formën e një biblioteke, e cila mund të përdoret për të integruar kodin WebAssembly në programe në gjuhët Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir dhe Java.
Platforma lejon arritjen e performancĂ«s sĂ« ekzekutimit tĂ« aplikacioneve, tĂ« afĂ«rt me ekzekutimin e ndĂ«rtimeve natives. FalĂ« Native Object Engine pĂ«r modul WebAssembly mund tĂ« gjeneroni kodin e makinerisĂ« («wasmer compile ânative» pĂ«r gjenerimin e skedarĂ«ve tĂ« objektit .so, .dylib dhe .dll tĂ« parakomplikuara), pĂ«r ekzekutimin e tĂ« cilit kĂ«rkohet njĂ« runtime minimal, por ruhet tĂ«rĂ« mundĂ«sia e izolimit sandbox. Ofrimi i programeve tĂ« parakomplikuara me Wasmer tĂ« integruar Ă«shtĂ« i mundur. PĂ«r krijimin e shtesave dhe plotĂ«simeve ofrohen Rust API dhe Wasm-C-API.
Një ndryshim i rëndësishëm i numrit të versionit të Wasmer është i lidhur me implementimin e ndryshimeve që dëmtojnë interoperabilitetin në API-në e brendshme, të cilat, sipas zhvilluesve, nuk do të prekën 99% e përdoruesve të platformës. Ndryshime të tilla që dëmtojnë interoperabilitetin përfshijnë gjithashtu ndryshimin e formatit të moduleve të serializuara Wasm (modulet e serializuara në Wasmer 1.0 nuk do të mund të përdoren në Wasmer 2.0). Ndryshime të tjera:
- Mbështetje për instrukcionet SIMD (Single Instruction, Multiple Data), të cilat lejojnë paralelizimin e operacioneve mbi të dhëna. Në fushat ku aplikimi i SIMD mund të rrisë ndjeshëm performancën përmendet machine learning, kodekët e videove, përpunimi i imazheve, simulimi i proceseve fizike dhe manipulimi me grafikën.
- Mbështetje për llojet referenciale, të cilat lejojnë moduleve të Wasm të kenë qasje në informacionin në module të tjera ose në mjedisin themelor.
- ĂshtĂ« realizuar njĂ« optimizim i rĂ«ndĂ«sishĂ«m i performancĂ«s. ShpejtĂ«sia e punĂ«s sĂ« LLVM runtime me numrat me pikĂ« fluturuese Ă«shtĂ« rritur me rreth 50%. Thirrjet e funksioneve janĂ« pĂ«rshpejtuar dukshĂ«m duke reduktuar situatat qĂ« kĂ«rkojnĂ« qasje nĂ« bĂ«rthamĂ«. Performanca e gjeneratorit tĂ« kodit Cranelift Ă«shtĂ« rritur me 40%. KohĂ«zgjatja e deserializimit tĂ« tĂ« dhĂ«nave Ă«shtĂ« shkurtuar.


- PĂ«r tĂ« reflektuar mĂ« saktĂ« natyrĂ«n, emrat e motorĂ«ve janĂ« ndryshuar: JIT â Universal, Native â Dylib (BibliotekĂ« Dinamike), Object File â StaticLib (BibliotekĂ« Statike).
Burimi: opennet.ru


