Wasmer 3.0, WebAssembly rakenduste loomise tööriistakomplekt, on nüüd saadaval.

Tutvustame Wasmeri kolmandat olulist versiooni, mis arendab WebAssembly moodulite käitamiseks vajalikku runtime'i. Seda saab kasutada universaalsete rakenduste loomiseks, mis suudavad töötada eri operatsioonisüsteemides, samuti usaldusväärsetusetud koodi isoleeritud käitamiseks. Projekti kood on kirjutatud Rusti keeles ja levitatakse MIT litsentsi alusel.

Ühe rakenduse käivitamise võimalus erinevates platvormides on võimalik tänu koodi kompileerimisele madala taseme vahe-koodiks WebAssembly, mis saab töötada kõikides operatsioonisüsteemides või integreeruda teiste programmeerimiskeeltel kirjutatud programmidesse. Programmid on kerged konteinerid, milles käib WebAssembly pseudokood. Need konteinerid ei ole seotud operatsioonisüsteemiga ja võivad sisaldada koodi, mis on algselt kirjutatud mis tahes programmeerimiskeeles. WebAssembly kompileerimiseks võib kasutada tööriistakomplekti Emscripten. WebAssembly tõlkimiseks tarkvara praegusele platvormi masinkoodiks toetatakse erinevate kompilaatorite (Singlepass, Cranelift, LLVM) ja mootorite (JIT rakendamine või masinkoodi genereerimine) ühendamiseks vajalikku infrastruktuuri.

Rakendused on peamiselt süsteemist eraldatud sandbox-öökes ja neil on juurdepääs ainult deklareeritud funktsioonidele (turvamehhanism, mis tugineb võimaluste juhtimisele — iga ressursside (failid, kataloogid, pesad, süsteemikutsed jne) toimingute jaoks peab rakendus saama vastavad õigused). Juurdepääsu juhtimine ja süsteemiga suhtlemine on tagatud API WASI (WebAssembly System Interface) abil, mis pakub tarkvaraliideseid failide, pesade ja muude operatsioonisüsteemi pakkuda olevate funktsioonide jaoks.

Platvorm võimaldab saavutada rakenduste töötluse jõudlust, mis on lähedane natiivsete kogude täitmisele. Native Object Engine'i abil WebAssembly-mooduli jaoks saab genereerida masinkoodi („wasmer compile —native” eelkompileeritud objektifailide .so, .dylib ja .dll genereerimiseks), mille käivitamiseks on vajalik minimaalne runtime, kuid säilitades kõik sandbox-isolatsiooni võimalused. On võimalik tarnida eelkompileeritud programme koos sisseehitatud Wasmeriga. Laienduste ja täiustuste loomiseks pakutakse Rust API ja Wasm-C-API.

WebAssembly konteineri käivitamiseks piisab, kui installida süsteemi Wasmer runtime, mis tarnitakse ilma väliste sõltuvusteta („curl https://get.wasmer.io -sSfL | sh”) ja käivitada vajalik fail („wasmer test.wasm”). Programmid levivad tavapäraste WebAssembly moodulitena, mille haldamiseks saab kasutada WAPM paketihaldurit. Wasmer on samuti saadaval raamatukoguna, mida saab kasutada WebAssembly koodi integreerimiseks Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir ja Java keeltesse.

Peamised muudatused Wasmer 3.0:

  • Lisatud võimalus luua natiivseid käivitatavaid faile mis tahes platvormidele. Täiesti ümber töötatud käsk „wasmer create-exe”, mis võimaldab transformeerida WebAssembly vahefaile iseseisvateks käivitatavateks failideks Linuxi, Windowsi ja macOS-i platvormidele, mis saavad töötada ilma Wasmeri installimiseta.
  • Pakutud on võimalus käivitada wapm.io kataloogis asuvaid WAPM pakette käsu „wasmer run” abil. Näiteks käsu „wasmer run python/python” täitmine laadib wapm.io repositooriumist python paketi ja käivitab selle.
  • Täielikult ümber kujundatud Wasmer Rust API, millel on muudetud mälu kasutamise stiili ning tagatud Wasm objektide ohutu salvestamine Store struktuuris. Uus MemoryView struktuur võimaldab lugeda ja kirjutada andmeid otse lineaarsesse mälu.
  • On ellu viidud komponentide komplekt wasmer-js, et käivitada Wasmer veebibrauseris ja suhelda sellega JavaScripti kaudu, kasutades wasm-bindgen raamatukogu. Oma funktsioonidelt vastab wasmer-js komponentidele wasmer-sys, mis on mõeldud Wasmeri käitamiseks tavapärastes operatsioonisüsteemides.
  • Mootorid on lihtsustatud. Eraldi mootoreid JIT, dünaamilise ja staatilise linkimise jaoks (Universal, Dylib, StaticLib) asendab nüüd üks ühine mootor, mille koodi laadimist ja salvestamist juhitakse parameetrite seadmise tasandil.
  • Artefaktide deserialiseerimiseks on kasutusele võetud rkyv raamistik, mis tagab zero-copy režiimi, see tähendab, et see ei nõua täiendava mälu eraldamist ning deserialiseerib ainult algselt antud puhvriga. Rkyv kasutamine on oluliselt suurendanud käivitamiskiirust.
  • Parandatud on ühekordse kompilatsiooni Singlepass, mis nüüd toetab funktsioone mitme argumendiga (multi-value), parandanud töö usaldusväärsust ja lisatud on erandite töötlemise raamide tugi.
  • Parandatud on WASI (WebAssembly System Interface) API teostus. Kõrvaldatud on probleemid WASI süsteemiga, mis on seotud failisüsteemiga. Siserakenduse tüübid on ümber kujundatud kasutades WAI (WebAssembly Interfaces), mis tulevikus võimaldab uute funktsioonide sarja realiseerimist.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster