Wasmer 2.0, një paketë veglash për ndërtimin e aplikacioneve të bazuara në WebAssembly, është në dispozicion

Projekti Wasmer ka lëshuar versionin e tij të dytë të madh, duke zhvilluar një kohë ekzekutimi për ekzekutimin e moduleve WebAssembly që mund të përdoren për të krijuar aplikacione universale që mund të ekzekutohen në sisteme të ndryshme operative, si dhe për të ekzekutuar kode të pabesueshme në izolim. Kodi i projektit është shkruar në Rust dhe shpërndahet nën licencën MIT.

Transportueshmëria arrihet duke përpiluar kodin e aplikacionit në kodin e ndërmjetëm të nivelit të ulët WebAssembly, i cili mund të funksionojë në çdo OS ose të futet në programe në gjuhë të tjera programimi. Programet janë kontejnerë të lehtë që ekzekutojnë pseudokodin WebAssembly. Këto kontejnerë nuk janë të lidhur me sistemin operativ dhe mund të përfshijnë kodin e shkruar fillimisht në çdo gjuhë programimi. Paketa e veglave Emscripten mund të përdoret për të përpiluar në WebAssembly. Për të përkthyer WebAssembly në kodin e makinës të platformës aktuale, ai mbështet lidhjen e mbështetësve të ndryshëm të përpilimit (Singlepass, Cranelift, LLVM) dhe motorëve (duke përdorur JIT ose gjenerimin e kodit të makinës).

Kontrolli i aksesit dhe ndërveprimi me sistemin sigurohet duke përdorur API WASI (WebAssembly System Interface), i cili ofron ndërfaqe programimi për të punuar me skedarë, priza dhe funksione të tjera të ofruara nga sistemi operativ. Aplikacionet janë të izoluara nga sistemi kryesor në një mjedis sandbox dhe kanë akses vetëm në funksionalitetin e deklaruar (një mekanizëm sigurie i bazuar në menaxhimin e aftësive - për veprimet me secilin prej burimeve (skedarët, drejtoritë, prizat, thirrjet e sistemit, etj.), aplikimit duhet t'i jepen kompetencat e duhura).

Për të nisur një kontejner WebAssembly, thjesht instaloni Wasmer në sistemin e funksionimit, i cili vjen pa varësi të jashtme ("curl https://get.wasmer.io -sSfL | sh") dhe ekzekutoni skedarin e nevojshëm ("wasmer test.wasm" ). Programet shpërndahen në formën e moduleve të rregullta WebAssembly, të cilat mund të menaxhohen duke përdorur menaxherin e paketave WAPM. Wasmer është gjithashtu i disponueshëm si një bibliotekë që mund të përdoret për të futur kodin WebAssembly në programet Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir dhe Java.

Platforma ju lejon të arrini performancën e ekzekutimit të aplikacionit afër asambleve vendase. Duke përdorur Native Object Engine për modulin WebAssembly, mund të gjeneroni kodin e makinës (“wasmer compile -native” për të gjeneruar skedarë objektesh të parapërpiluar .so, .dylib dhe .dll), i cili kërkon kohë minimale ekzekutimi për t'u ekzekutuar, por ruan të gjithë izolimin e sandbox veçoritë. Është e mundur të furnizohen programe të parakompiluara me Wasmer të integruar. Rust API dhe Wasm-C-API ofrohen për krijimin e shtesave dhe shtesave.

Një ndryshim i rëndësishëm në numrin e versionit të Wasmer shoqërohet me futjen e ndryshimeve të papajtueshme në API të brendshme, të cilat, sipas zhvilluesve, nuk do të prekin 99% të përdoruesve të platformës. Ndër ndryshimet që prishin përputhshmërinë, ka edhe një ndryshim në formatin e 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 instruksionet SIMD (Single Instruction, Multiple Data), duke lejuar paralelizimin e operacioneve të të dhënave. Fushat në të cilat përdorimi i SIMD mund të përmirësojë ndjeshëm performancën përfshijnë mësimin e makinerive, kodimin dhe dekodimin e videove, përpunimin e imazhit, simulimin e procesit fizik dhe manipulimin grafikë.
  • Mbështetje për llojet e referencës, duke i lejuar modulet Wasm të aksesojnë informacionin në module të tjera ose në mjedisin themelor.
  • Janë bërë optimizime të rëndësishme të performancës. Shpejtësia e kohës së ekzekutimit të LLVM me numra me pikë lundruese është rritur me afërsisht 50%. Thirrjet e funksioneve janë përshpejtuar ndjeshëm duke reduktuar situatat që kërkojnë qasje në kernel. Performanca e gjeneratorit të kodit Cranelift është rritur me 40%. Koha e reduktuar e deserializimit të të dhënave.
    Wasmer 2.0, një paketë veglash për ndërtimin e aplikacioneve të bazuara në WebAssembly, është në dispozicion
    Wasmer 2.0, një paketë veglash për ndërtimin e aplikacioneve të bazuara në WebAssembly, është në dispozicion
  • Për të pasqyruar më saktë thelbin, emrat e motorëve janë ndryshuar: JIT → Universal, Native → Dylib (Biblioteka Dinamike), Skedari i Objekteve → StaticLib (Biblioteka Statike).

Burimi: opennet.ru

Shto një koment