Dostupan je Wasmer 3.0, skup alata za izradu aplikacija temeljenih na WebAssemblyju

Predstavljeno je treće veliko izdanje projekta Wasmer, koje razvija runtime za izvršavanje WebAssembly modula koji se mogu koristiti za stvaranje univerzalnih aplikacija koje se mogu izvoditi na različitim operativnim sustavima, kao i za izolirano izvršavanje nepouzdanog koda. Kod projekta napisan je u Rustu i distribuira se pod licencom MIT-a.

Mogućnost pokretanja jedne aplikacije na različitim platformama pruža se kompajliranjem koda u međukod WebAssembly niske razine, koji se može izvoditi na bilo kojem OS-u ili biti ugrađen u programe na drugim programskim jezicima. Programi su lagani spremnici koji pokreću WebAssembly pseudokod. Ovi spremnici nisu vezani za operativni sustav i mogu sadržavati kod izvorno napisan u bilo kojem programskom jeziku. Emscripten toolkit može se koristiti za kompajliranje u WebAssembly. Kako bi preveo WebAssembly u strojni kod trenutne platforme, podržava povezivanje različitih pozadina kompilacije (Singlepass, Cranelift, LLVM) i motora (koristeći JIT ili generiranje strojnog koda).

Aplikacije su izolirane od glavnog sustava u sandbox okruženju i imaju pristup samo deklariranoj funkcionalnosti (sigurnosni mehanizam temeljen na upravljanju mogućnostima – za radnje sa svakim od resursa (datoteke, direktoriji, utičnice, sistemski pozivi itd.), aplikacija mora dobiti odgovarajuće ovlasti). Kontrola pristupa i interakcija sa sustavom omogućena je korištenjem WASI (WebAssembly System Interface) API-ja, koji pruža programska sučelja za rad s datotekama, utičnicama i drugim funkcijama koje pruža operativni sustav.

Platforma vam omogućuje da postignete performanse izvršavanja aplikacija bliske izvornim sklopovima. Koristeći Native Object Engine za modul WebAssembly, možete generirati strojni kod ("wasmer compile -native" za generiranje prethodno kompajliranih .so, .dylib i .dll objektnih datoteka), koji zahtijeva minimalno vrijeme izvođenja za izvođenje, ali zadržava svu izolaciju sandboxa značajke. Moguće je isporučiti unaprijed prevedene programe s ugrađenim Wasmerom. Rust API i Wasm-C-API nude se za stvaranje dodataka i proširenja.

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

Glavne promjene u Wasmeru 3.0:

  • Dodana je mogućnost stvaranja izvornih izvršnih datoteka za bilo koju platformu. Naredba "wasmer create-exe" u potpunosti je redizajnirana kako bi pretvorila WebAssembly međudatoteku koda u samostalne izvršne datoteke za Linux, Windows i macOS platforme koje se mogu pokrenuti bez instaliranja samog Wasmera.
  • Moguće je pokrenuti WAPM pakete koji se nalaze u direktoriju wapm.io pomoću naredbe “wasmer run”. Na primjer, pokretanje "wasmer run python/python" će preuzeti python paket iz repozitorija wapm.io i pokrenuti ga.
  • Wasmer Rust API potpuno je redizajniran, mijenjajući stil rada s memorijom i pružajući mogućnost sigurnog spremanja Wasm objekata u strukturi Storea. Predložena je nova struktura MemoryView koja omogućuje čitanje i pisanje podataka u linearno memorijsko područje.
  • Implementiran je skup wasmer-js komponenti za pokretanje Wasmera u web pregledniku i interakciju s njim iz JavaScripta pomoću biblioteke wasm-bindgen. Po svojim mogućnostima, wasmer-js odgovara komponentama wasmer-sys dizajniranim za pokretanje Wasmera na uobičajenim operativnim sustavima.
  • Motori su pojednostavljeni. Umjesto zasebnih motora za JIT, dinamičko i statičko povezivanje (Universal, Dylib, StaticLib), sada je u ponudi jedan zajednički motor, a učitavanje i spremanje koda kontrolira se na razini podešavanja parametara.
  • Za deserijalizaciju artefakata koristi se okvir rkyv koji osigurava rad u načinu rada bez kopiranja, tj. koji ne zahtijeva dodatnu dodjelu memorije i izvodi deserijalizaciju samo korištenjem inicijalno osiguranog međuspremnika. Korištenje rkyv značajno je povećalo brzinu pokretanja.
  • Singlepass jednoprolazni kompajler je poboljšan, dodajući podršku za funkcije s više vrijednosti, poboljšanu pouzdanost i dodatnu podršku za okvire za rukovanje iznimkama.
  • Poboljšana implementacija API-ja WASI (WebAssembly System Interface). Riješeni su problemi u softverskom sučelju WASI za rad s datotečnim sustavom. Interni tipovi redizajnirani su korištenjem WAI (WebAssembly Interfaces), što će omogućiti niz novih značajki u budućnosti.

Izvor: opennet.ru

Dodajte komentar