Dostupan je Wasmer 2.0, komplet alata za izgradnju aplikacija zasnovanih na WebAssembly-u

Wasmer projekat je objavio svoje drugo veliko izdanje, razvijajući runtime za izvršavanje WebAssembly modula koji se mogu koristiti za kreiranje univerzalnih aplikacija koje mogu raditi na različitim operativnim sistemima, kao i za pokretanje nepouzdanog koda u izolaciji. Kod projekta je napisan u Rustu i distribuira se pod MIT licencom.

Prenosivost se postiže kompajliranjem koda aplikacije u WebAssembly međukod niskog nivoa, koji se može pokrenuti na bilo kojem OS-u ili biti ugrađen u programe na drugim programskim jezicima. Programi su lagani kontejneri koji pokreću WebAssembly pseudokod. Ovi kontejneri nisu vezani za operativni sistem i mogu uključivati ​​kod koji je originalno napisan u bilo kojem programskom jeziku. Emscripten komplet alata se može koristiti za prevođenje u WebAssembly. Za prevođenje WebAssembly-a u strojni kod trenutne platforme, podržava povezivanje različitih kompilacijskih backenda (Singlepass, Cranelift, LLVM) i motora (koristeći JIT ili generiranje strojnog koda).

Kontrola pristupa i interakcija sa sistemom se obezbjeđuje korištenjem WASI (WebAssembly System Interface) API-ja, koji obezbjeđuje programska sučelja za rad sa datotekama, utičnicama i drugim funkcijama koje pruža operativni sistem. Aplikacije su izolovane od glavnog sistema u sandbox okruženju i imaju pristup samo deklariranoj funkcionalnosti (sigurnosni mehanizam zasnovan na upravljanju mogućnostima - za radnje sa svakim od resursa (fajlovi, direktoriji, utičnice, sistemski pozivi, itd.), aplikacija mora imati odgovarajuća ovlaštenja).

Da biste pokrenuli WebAssembly kontejner, samo instalirajte Wasmer u runtime sistem, koji dolazi bez vanjskih ovisnosti (“curl https://get.wasmer.io -sSfL | sh”) i pokrenite potrebnu datoteku (“wasmer test.wasm” ). Programi se distribuiraju u obliku redovnih WebAssembly modula, kojima se može upravljati pomoću WAPM menadžera paketa. Wasmer je takođe dostupan kao biblioteka koja se može koristiti za ugradnju WebAssembly koda u Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir i Java programe.

Platforma vam omogućava da postignete performanse izvršavanja aplikacije blizu izvornih sklopova. Koristeći Native Object Engine za WebAssembly modul, možete generirati strojni kod (“wasmer compile -native” za generiranje unaprijed kompajliranih .so, .dylib i .dll objektnih datoteka), koji zahtijeva minimalno vrijeme rada za pokretanje, ali zadržava svu izolaciju sandbox-a karakteristike. Moguće je isporučiti unaprijed kompajlirane programe sa ugrađenim Wasmerom. Rust API i Wasm-C-API se nude za kreiranje dodataka i ekstenzija.

Značajna promjena u broju verzije Wasmera povezana je s uvođenjem promjena koje razbijaju kompatibilnost internog API-ja, a koje, prema riječima programera, neće utjecati na 99% korisnika platforme. Među promjenama koje narušavaju kompatibilnost, postoji i promjena u formatu serijaliziranih Wasm modula (moduli serijalizirani u Wasmer 1.0 neće se moći koristiti u Wasmer 2.0). Ostale promjene:

  • Podrška za SIMD (Single Instruction, Multiple Data) instrukcije, omogućavajući paralelizaciju operacija podataka. Oblasti u kojima upotreba SIMD-a može značajno poboljšati performanse uključuju mašinsko učenje, video kodiranje i dekodiranje, obradu slike, simulaciju fizičkog procesa i grafičku manipulaciju.
  • Podrška za referentne tipove, omogućavajući Wasm modulima da pristupe informacijama u drugim modulima ili u osnovnom okruženju.
  • Napravljene su značajne optimizacije performansi. Brzina LLVM vremena izvođenja s brojevima s pomičnim zarezom povećana je za približno 50%. Pozivi funkcija su značajno ubrzani smanjenjem situacija koje zahtijevaju pristup kernelu. Performanse generatora koda Cranelift povećane su za 40%. Smanjeno vrijeme deserializacije podataka.
    Dostupan je Wasmer 2.0, komplet alata za izgradnju aplikacija zasnovanih na WebAssembly-u
    Dostupan je Wasmer 2.0, komplet alata za izgradnju aplikacija zasnovanih na WebAssembly-u
  • Da bi se što preciznije prikazala suština, nazivi motora su promijenjeni: JIT → Universal, Native → Dylib (Dinamička biblioteka), Object File → StaticLib (statička biblioteka).

izvor: opennet.ru

Dodajte komentar