Po beveik šešių mėnesių, kai buvo paleista pirmoji versija, buvo paskelbta naujos „Wasmer“ projekto versija, kuri yra antroje pagrindinėje versijoje ir kuriuose buvo atlikti tokie svarbūs pakeitimai, kad vidinės API šioje antrojoje versijoje yra nesuderinamos, nors taip pat buvo pridėta naujų funkcijų, kurios suteikia stabilumo, saugumo ir našumo patobulinimų.
Tiems, kurie nežino Wasmer, turėtumėte žinoti, kad jis sukuria vykdymo laiką vykdyti „WebAssembly“ modulius kurias galima naudoti kuriant universalias programas, kurios gali veikti keliose operacinėse sistemose, ir paleisti nepatikimą kodą atskirai.
Perkeliamumas užtikrinamas kompiliuojant programos kodą į žemo lygio „WebAssembly“ tarpinę programinę įrangą Jis gali veikti bet kurioje operacinėje sistemoje arba būti integruotas į programas kitomis programavimo kalbomis. Programos yra lengvi konteineriai, kuriuose veikia „WebAssembly“ pseudokodas.
Tai konteineriai nėra susieti su operacine sistema ir juose gali būti kodas, iš pradžių parašytas bet kuria kalba programavimas. „Emscripten“ įrankių rinkinį galima naudoti kuriant „WebAssembly“. Jei norite išversti „WebAssembly“ į dabartinį platformos mašinos kodą, palaikomas skirtingų versijų („Singlepass“, „Cranelift“, LLVM) ir variklių (naudojant JIT arba generuojantis mašinos kodą) sujungimas.
Prieigos kontrolė ir sąveika su sistema teikiama per WASI („WebAssembly System Interface“) API, kuri suteikia programavimo sąsajas darbui su failais, lizdais ir kitomis operacinės sistemos teikiamomis funkcijomis.
Programos yra izoliuotos nuo pagrindinės sistemos ir jie turi prieigą tik prie deklaruojamo funkcionalumo (saugos mechanizmas, pagrįstas valdymo galimybėmis, atliekant veiksmus su kiekvienu iš išteklių (failai, katalogai, lizdai, sistemos skambučiai ir kt.).
Pagrindinės „Wasmer 2.0“ naujovės
Šioje naujoje pristatomoje versijoje tai minima reikšmingas versijos numerio pokytis pateikė Wasmeris yra susijęs su vidinio API nesuderinamumo pakeitimų įvedimu, kuris, pasak kūrėjų, neturės įtakos 99% vartotojų nuo platformos bet kokiu būdu.
Tarp pagrindinių suderinamumo pakeitimų taip pat pasikeitė serijinių „Wasm“ modulių formatas („Wasmer 1.0“ serijiniai moduliai nebus naudojami „Wasmer 2.0“).
Be to, paryškintas SIMD instrukcijų palaikymas (Viena instrukcija, keli duomenys), kuri leisti lygiagrečiai atlikti duomenų operacijas. Sritys, kuriose SIMD naudojimas gali žymiai padidinti produktyvumą, yra mašininis mokymasis, vaizdo kodavimas ir dekodavimas, vaizdo apdorojimas, fizinio proceso modeliavimas ir grafikos manipuliavimas.
Tambienas paryškinamas referencinių tipų palaikymas, leidimas „Wasm“ moduliams pasiekti informaciją kituose moduliuose ar pagrindinėje aplinkoje ir atlikta reikšminga našumo optimizacija. LLVM vykdymo laikas su slankiojo kablelio skaičiais padidėjo maždaug 50%.
Funkcijų skambučiai buvo žymiai pagreitinti sumažinant situacijas, kurioms reikalingi branduolio skambučiai. „Cranelift“ kodo generatoriaus našumas padidėjo 40%. Duomenų deserializavimo laiko sutrumpinimas. Siekiant tiksliau atspindėti esmę, variklio pavadinimai buvo pakeisti: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).
Pagaliau Jei jus domina sužinoti daugiau apie Wasmer, Turėtumėte žinoti, kad projekto kodas parašytas „Rust“, jis turi MIT licenciją ir jo informaciją galite patikrinti savo oficialioje svetainėje adresu sekanti nuoroda.
Įdiekite „Wasmer“ vykdymo laiką
Kita vertus, tiems, kurie domisi galimybe paleisti „WebAssembly“ konteinerį, į savo sistemą reikia įdiegti tik „Wasmer“ vykdymo laiką, kuris yra be išorinių priklausomybių.
Svarbu tai paminėti „Wasmer“ galima paleisti bet kurioje platformoje „MacOS“, „Linux“ ir „Windows“, vienintelis reikalavimas yra, kad jo vykdymo laikas būtų įdiegtas jūsų sistemoje.
Norėdami tai padaryti, tiesiog paleiskite šią komandą terminale:
curl https://get.wasmer.io -sSfL | sh
Po to jie turi įvykdyti reikiamą failą:
wasmer test.wasm
Jei norite sužinoti daugiau apie „Wasmer“ veikimą arba norite sužinoti jo šaltinio kodą, galite pasikonsultuoti su viskuo Šioje nuorodoje.