Saadaval on Wasmer 3.0, tööriistakomplekt WebAssembly-põhiste rakenduste loomiseks

Tutvustatakse Wasmeri projekti kolmandat suuremat väljalaset, mis arendab WebAssembly moodulite täitmiseks kasutatavat käituskeskkonda, mille abil saab luua universaalseid rakendusi, mis võivad töötada erinevatel operatsioonisüsteemidel, samuti käivitada ebausaldusväärset koodi isoleeritult. Projekti kood on kirjutatud Rust keeles ja seda levitatakse MIT litsentsi all.

Võimaluse käitada ühte rakendust erinevatel platvormidel annab koodi kompileerimine madala taseme WebAssembly vahekoodiks, mis võib töötada mis tahes OS-is või olla põimitud teiste programmeerimiskeelte programmidesse. Programmid on kerged konteinerid, mis käitavad WebAssembly pseudokoodi. Need konteinerid ei ole operatsioonisüsteemiga seotud ja võivad sisaldada algselt mis tahes programmeerimiskeeles kirjutatud koodi. Emscripteni tööriistakomplekti saab kasutada WebAssemblysse kompileerimiseks. WebAssembly tõlkimiseks praeguse platvormi masinkoodiks toetab see erinevate kompileerimise taustaprogrammide (Singlepass, Cranelift, LLVM) ja mootorite (kasutades JIT-i või masinkoodi genereerimist) ühendamist.

Rakendused on liivakastikeskkonnas põhisüsteemist isoleeritud ja neil on juurdepääs ainult deklareeritud funktsioonidele (võimehaldusel põhinev turvamehhanism – iga ressursiga (failid, kataloogid, pistikupesad, süsteemikutsed jne) tehtavate toimingute jaoks) taotlusele tuleb anda asjakohased volitused). Juurdepääsu kontroll ja süsteemiga suhtlemine toimub WASI (WebAssembly System Interface) API abil, mis pakub programmeerimisliideseid failide, pistikupesade ja muude operatsioonisüsteemi pakutavate funktsioonidega töötamiseks.

Platvorm võimaldab teil saavutada rakenduste täitmise jõudluse, mis on lähedane algkoostudele. Kasutades WebAssembly mooduli jaoks Native Object Engine'i, saate genereerida masinkoodi (“wasmer compile -native”, et genereerida eelkompileeritud .so, .dylib ja .dll objektifailid), mis nõuab käitamiseks minimaalset käitusaega, kuid säilitab kogu liivakasti isolatsiooni. Funktsioonid. Eelkompileeritud programme on võimalik varustada sisseehitatud Wasmeriga. Lisandmoodulite ja laienduste loomiseks pakutakse Rust API ja Wasm-C-API.

WebAssembly konteineri käivitamiseks installige Wasmer käitussüsteemi, mis on ilma väliste sõltuvusteta (“curl https://get.wasmer.io -sSfL | sh”), ja käivitage vajalik fail ("wasmer test.wasm" ). Programme levitatakse tavaliste WebAssembly moodulitena, mida saab hallata WAPM paketihalduri abil. Wasmer on saadaval ka raamatukoguna, mida saab kasutada WebAssembly koodi manustamiseks Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir ja Java programmidesse.

Peamised muudatused Wasmer 3.0-s:

  • Lisati võimalus luua natiivseid täitmisfaile mis tahes platvormi jaoks. Käsk "wasmer create-exe" on täielikult ümber kujundatud, et teisendada WebAssembly vahekoodifail Linuxi, Windowsi ja macOS-i platvormide jaoks iseseisvateks täitmisfailideks, mis võivad töötada ilma Wasmerit installimata.
  • WAPM-pakette, mis asuvad kataloogis wapm.io, on võimalik käivitada käsuga “wasmer run”. Näiteks "wasmer run python/python" käivitamine laadib pythoni paketi wapm.io hoidlast alla ja käivitab selle.
  • Wasmer Rust API on täielikult ümber kujundatud, muutes mäluga töötamise stiili ja pakkudes võimalust Wasmi objekte Store struktuuris ohutult salvestada. Välja on pakutud uus MemoryView struktuur, mis võimaldab lugeda ja kirjutada andmeid lineaarsesse mälupiirkonda.
  • Wasmer'i käitamiseks veebibrauseris ja sellega suhtlemiseks JavaScripti abil, kasutades Wasm-bindgen teeki, on rakendatud wasmer-js komponentide komplekt. Oma võimaluste poolest vastab wasmer-js wasmer-sys komponentidele, mis on mõeldud Wasmeri käitamiseks tavalistes operatsioonisüsteemides.
  • Mootoreid on lihtsustatud. JIT-i, dünaamilise ja staatilise linkimise (Universal, Dylib, StaticLib) jaoks eraldi mootorite asemel pakutakse nüüd ühte ühist mootorit ning koodi laadimist ja salvestamist juhitakse parameetrite seadistamise tasemel.
  • Artefaktide deserialiseerimiseks kasutatakse rkyv raamistikku, mis tagab töö nullkoopia režiimis, s.t. mis ei nõua täiendavat mälu eraldamist ja teostab deserialiseerimise ainult algselt kaasasoleva puhvri abil. Rkyvi kasutamine on oluliselt suurendanud käivituskiirust.
  • Singlepassi ühekäigulist kompilaatorit on täiustatud, lisades tuge mitme väärtusega funktsioonidele, parandades töökindlust ja lisades tuge erandite käsitlemise raamidele.
  • WASI (WebAssembly System Interface) API täiustatud rakendamine. Probleemid WASI tarkvara liideses failisüsteemiga töötamiseks on lahendatud. Sisemised tüübid on ümber kujundatud, kasutades WAI-d (WebAssembly Interfaces), mis võimaldab tulevikus kasutada mitmeid uusi funktsioone.

Allikas: opennet.ru

Lisa kommentaar