Dostupan je Wasmer 2.0, alat za izradu aplikacija temeljenih na WebAssembly

Održano je drugo značajno izdanje projekta Wasmer, koji razvija runtime za izvođenje WebAssembly modula, koji se može koristiti za izradu univerzalnih aplikacija koje se mogu izvršavati na različitim operativnim sistemima, kao i za izolovano izvršavanje nepouzdanog koda. Kod projekta je napisan na jeziku Rust i distribuira se pod MIT licencom.

Prenosivost je osigurana kompajliranjem koda aplikacije u niskonivovski međudatotečni kod WebAssembly, koji se može izvoditi na bilo kojem OS-u ili ugrađivati u programe na drugim programskim jezicima. Programi predstavljaju lagane kontejnere u kojima se izvršava pseudokod WebAssembly. Ti kontejneri nisu vezani za operativni sistem i mogu sadržavati kod prvobitno napisan na bilo kom programskom jeziku. Za kompajliranje u WebAssembly može se koristiti alat Emscripten. Za prevođenje WebAssembly u mašinski kod trenutne platforme podržava se povezivanje različitih backendova za kompajlaciju (Singlepass, Cranelift, LLVM) i izvršitelja (korišćenje JIT ili generisanje mašinskog koda).

Upravljanje pristupom i interakcijom sa sistemom osigurano je putem API WASI (WebAssembly System Interface), koji pruža programske interfejse za rad sa datotekama, soketima i drugim funkcijama koje pruža operativni sistem. Aplikacije su izolovane od glavnog sistema u sandbox okruženju i imaju pristup samo deklarisanim funkcionalnostima (mehanizam sigurnosti temeljen na upravljanju mogućnostima — za akcije sa svakim od resursa (datoteke, direktoriji, soketi, sistemski pozivi itd.) aplikaciji moraju biti dodeljene odgovarajuće ovlasti).

Za pokretanje WebAssembly kontejnera dovoljno je instalirati Wasmer runtime u sustav, koji se isporučuje bez vanjskih ovisnosti ("curl https://get.wasmer.io -sSfL | sh"), i pokrenuti potrebnu datoteku ("wasmer test.wasm"). Programi se distribuiraju u obliku običnih WebAssembly modula, a za njihovo upravljanje može se koristiti paketni menadžer WAPM. Wasmer je također dostupan u obliku knjižnice, koju je moguće koristiti za ugrađivanje WebAssembly koda u programe napisane jezicima Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir i Java.

Platforma omogućava postizanje performansi izvršavanja aplikacija bliskih izvršavanju izvornih kompilacija. Pomoću Native Object Engine-a za WebAssembly modul može se generisati mašinski kod ("wasmer compile —native" za generisanje prekompajliranih objektnih datoteka .so, .dylib i .dll), za pokretanje kojeg je potreban minimalni runtime, ali se zadržavaju sve mogućnosti sandbox izolacije. Moguća je isporuka prekompajliranih programa sa ugrađenim Wasmer-om. Za izradu ekstenzija i dodataka nude se Rust API i Wasm-C-API.

Značajna promjena verzije Wasmera povezana je s uvođenjem nekompatibilnih izmjena u unutrašnji API, koje, prema riječima programera, neće utjecati na 99% korisnika platforme. Među nekompatibilnim promjenama ističe se i promjena formata serijaliziranih modula Wasm (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, koje omogućuju paralelizaciju operacija nad podacima. Područja u kojima primjena SIMD može značajno povećati performanse uključuju strojno učenje, kodiranje i dekodiranje videa, obrada slika, simulacija fizičkih procesa i manipulacija grafikom.
  • Podrška za referentne tipove, koji omogućuju Wasm modulima pristup informacijama iz drugih modula ili osnovnog okruženja.
  • Provedena je značajna optimizacija performansi. Brzina rada LLVM runtime-a s brojevima s pomičnom točkom povećana je za otprilike 50%. Pozivanje funkcija je značajno ubrzano smanjenjem situacija koje zahtijevaju pristup jezgru. Performanse generatora koda Cranelift povećane su za 40%. Smanjeno je vrijeme deserializacije podataka.
    Dostupan je Wasmer 2.0, alat za izradu aplikacija temeljenih na WebAssembly
    Dostupan je Wasmer 2.0, alat za izradu aplikacija temeljenih na WebAssembly
  • Radi preciznijeg odražavanja suštine promijenjena su imena motora: JIT → Universal, Native → Dylib (Dinamička biblioteka), Object File → StaticLib (Staticka biblioteka).

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster