Është lançuar versioni 5.0 i projektit Wasmer, i cili 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. Wasmer gjithashtu mund të përdoret për ekzekutimin e izoluar të blloqeve të kodit të pa besueshëm brenda aplikacioneve të zakonshme. Kodi i projektit është shkruar në gjuhën Rust dhe shpërndahet nën licencën MIT.
Aftësia për të ekzekutuar një aplikacion në platforma të ndryshme realizohet përmes kompilimit në kodin e ulët ndërmjetës WebAssembly, i cili mund të ekzekutohet në çdo sistem operativ ose të integret në programe të tjera që përdorin gjuhë programimi të ndryshme. Programet janë 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 që është shkruar fillimisht në çdo gjuhë programimi.
Për ekzekutimin e kodit ndërmjetës WebAssembly ose për përkthimin e tij në kodin makinerik të platformës së synuar ofrohen backend të ndryshëm:
- Backend-i me bazë në kompilatorin Singlepass, i optimizuar për përdorim në bllokchain.
- Backend-i me bazë në gjeneruesin e kodit Cranelift, i optimizuar për përdorim në procesin e zhvillimit.
- Backend-i me bazë në kompilatorin LLVM, i optimizuar për përdorim në implementimet e punës.
- Backend-i për ekzekutimin në shfletuesin web.
- Backend-i me bazë në motorin JavaScript JavascriptCore, i optimizuar për përdorim në platformën macOS.
- Backend-i me bazë në motorin JavaScript V8, i optimizuar për aplikacione për platformat iOS dhe Android.
- Backend-i me bazë në interpretorin Wasmi, i optimizuar për bllokchain dhe projekte Rust që nuk përdorin bibliotekën standarde (nostd).
- Backend-i me bazë në runtime WAMR, i optimizuar për platformën iOS.
Aplikacionet izolohen nga sistemi kryesor në një ambient sandbox dhe kanë qasje vetëm në funksionalitetin e deklaruar. Për izolimin përdoret një mekanizëm i bazuar në menaxhimin e mundësive — për veprimet me çdo resurs (skedarë, drejtkëndësh, sokete, thirrje sistemike etj.) aplikacionit duhet t'i jepen përkatësisht autorizimet. Menaxhimi i qasjes dhe ndërveprimi me sistemin sigurohet përmes API WASI (WebAssembly System Interface), që ofron ndërfaqe programimi për punën me skedarët, soketët dhe funksionet e tjera sistemike.
Platforma lejon arritjen e një performanse të ekzekutimit të aplikacioneve, e cila është afër ekzekutimit të ndërtimeve native. Përmes Native Object Engine për modulin WebAssembly mund të gjenerohet kod makinerik, për të cilin kërkohet një runtime minimal, por ruajnë të gjitha mundësitë e izolimit në sandbox. E mundshme është edhe shpërndarja e programeve të parakompliluara me Wasmer të integruar. Për krijimin e shtesave dhe zgjerimeve ofrohen Rust API dhe Wasm-C-API.
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.
Novitetet kryesore në Wasmer 5.0:
- Është realizuar mundësia e përdorimit të interpretueseve WebAssembly.
- Janë shtuar një backend eksperimental i bazuar në interpretuesin e lehtë Wasmi, i cili lejon ekzekutimin e kodit të përkohshëm WebAssembly në ambiente me burime të kufizuara.
- Janë shtuar një backend eksperimental i bazuar në runtime WebAssembly WAMR (WebAssembly Micro Runtime), i optimizuar për konsum minimal të burimeve dhe i përshtatshëm për përdorim në pajisjet me një kapacitet të vogël RAM.
- Eshtë shtuar një backend eksperimental i bazuar në motorin JavaScript v8, i përdorur në shfletuesit mbi bazën e kodit Chromium. Avantazhi kryesor i përdorimit të backend-it të bazuar në V8 është mundësia e përdorimit të debugger-it të integruar dhe mjeteve për zhvilluesit web, si dhe qasja në funksionalitetin e avancuar të WebAssembly në V8, të tilla si trajtimi i përjashtimeve dhe mbledhja e mbetjeve.
- Backend-i që përdor LLVM ka shtuar mbështetje eksperimentale për arkitekturën Loongarch64.
- Është shtuar mbështetje për platformën iOS, e cila është e disponueshme me përdorimin e backend-eve WAMR, Wasmi dhe V8.
- Është ndërprerë mbështetja për kompajlerin Emscripten.
- Janë përditësuar varësitë, ndër të cilat LLVM 18, gjeneratori i kodit Cranelift 27 dhe korniza rkyv 0.8.
- Është optimizuar performanca. Për shembull, gjatë ekzekutimit të operacioneve të deserializimit të moduleve, vërehet një rritje e performancës deri në 50%.







Burimi: opennet.ru







