Wasmer 3.0, työkalupakki WebAssembly-pohjaisten sovellusten rakentamiseen, on saatavilla

Wasmer-projektin kolmas suuri julkaisu esitellään, joka kehittää ajonaikaisen WebAssembly-moduulien suorittamiseen, jonka avulla voidaan luoda universaaleja sovelluksia, jotka voivat toimia eri käyttöjärjestelmissä, sekä suorittaa epäluotettavaa koodia erillään. Projektikoodi on kirjoitettu Rust-kielellä ja sitä jaetaan MIT-lisenssillä.

Mahdollisuus ajaa yhtä sovellusta eri alustoilla saadaan kääntämällä koodi matalan tason WebAssembly-välikoodiksi, joka voi toimia missä tahansa käyttöjärjestelmässä tai upottaa ohjelmiin muilla ohjelmointikielillä. Ohjelmat ovat kevyitä säiliöitä, jotka käyttävät WebAssembly-pseudokoodia. Näitä säilöjä ei ole sidottu käyttöjärjestelmään, ja ne voivat sisältää koodia, joka on alun perin kirjoitettu millä tahansa ohjelmointikielellä. Emscripten-työkalupakkia voidaan käyttää WebAssemblyn kääntämiseen. WebAssemblyn kääntämiseksi nykyisen alustan konekoodiksi se tukee erilaisten käännöstaustaohjelmien (Singlepass, Cranelift, LLVM) ja moottoreiden (käyttämällä JIT- tai konekoodin generointia) yhteyttä.

Sovellukset on eristetty pääjärjestelmästä hiekkalaatikkoympäristössä, ja niillä on pääsy vain ilmoitettuihin toimintoihin (ominaisuuksien hallintaan perustuva suojausmekanismi - jokaiselle resurssille (tiedostot, hakemistot, pistorasiat, järjestelmäkutsut jne.) kohdistuville toimille. hakemukselle on annettava asianmukaiset valtuudet). Kulunvalvonta ja vuorovaikutus järjestelmän kanssa tarjotaan WASI (WebAssembly System Interface) API:lla, joka tarjoaa ohjelmointirajapinnat tiedostojen, pistokkeiden ja muiden käyttöjärjestelmän tarjoamien toimintojen käsittelyyn.

Alustan avulla voit saavuttaa sovellusten suorituskyvyn lähellä alkuperäisiä kokoonpanoja. Käyttämällä WebAssembly-moduulin Native Object Engineä voit luoda konekoodin ("wasmer compile -native" esikäännettyjen .so-, .dylib- ja .dll-objektitiedostojen luomiseksi), jonka suorittaminen vaatii vähän ajoaikaa, mutta säilyttää kaiken hiekkalaatikon eristyksen. ominaisuudet. On mahdollista toimittaa esikäännetyt ohjelmat sisäänrakennetulla Wasmerilla. Rust API ja Wasm-C-API tarjotaan lisäosien ja laajennusten luomiseen.

Käynnistä WebAssembly-säilö asentamalla Wasmer ajonaikaiseen järjestelmään, joka tulee ilman ulkoisia riippuvuuksia ("curl https://get.wasmer.io -sSfL | sh") ja suorittamalla tarvittava tiedosto ("wasmer test.wasm" ). Ohjelmat jaetaan tavallisina WebAssembly-moduuleina, joita voidaan hallita WAPM-paketinhallinnan avulla. Wasmer on saatavana myös kirjastona, jota voidaan käyttää WebAssembly-koodin upottamiseen Rust-, C/C++-, C#-, D-, Python-, JavaScript-, Go-, PHP-, Ruby-, Elixir- ja Java-ohjelmiin.

Suuret muutokset Wasmer 3.0:ssa:

  • Lisätty mahdollisuus luoda alkuperäisiä suoritettavia tiedostoja mille tahansa alustalle. "Wasmer create-exe" -komento on suunniteltu kokonaan uudelleen muuntamaan WebAssembly-välikooditiedoston itsenäisiksi suoritettaviksi Linux-, Windows- ja macOS-alustoilla, jotka voivat toimia ilman Wasmerin asentamista.
  • On mahdollista käynnistää wapm.io-hakemistossa olevia WAPM-paketteja "wasmer run" -komennolla. Esimerkiksi "wasmer run python/python" lataa python-paketin wapm.io-arkistosta ja suorittaa sen.
  • Wasmer Rust API on suunniteltu kokonaan uudelleen, mikä muuttaa muistin kanssa työskentelyn tyyliä ja tarjoaa mahdollisuuden tallentaa Wasm-objekteja turvallisesti Store-rakenteeseen. On ehdotettu uutta MemoryView-rakennetta, joka mahdollistaa datan lukemisen ja kirjoittamisen lineaariselle muistialueelle.
  • Joukko wasmer-js-komponentteja on toteutettu suorittamaan Wasmeria verkkoselaimessa ja olemaan vuorovaikutuksessa sen kanssa JavaScriptin avulla wasm-bindgen-kirjaston avulla. Ominaisuuksiltaan wasmer-js vastaa wasmer-sys-komponentteja, jotka on suunniteltu suorittamaan Wasmeria tavallisissa käyttöjärjestelmissä.
  • Moottoreita on yksinkertaistettu. Erillisten JIT-moottorien, dynaamisen ja staattisen linkityksen (Universal, Dylib, StaticLib) sijaan tarjotaan nyt yksi yhteinen moottori, ja koodin latausta ja tallennusta ohjataan parametrien asetustasolla.
  • Artefaktien deserialisoimiseen käytetään rkyv-kehystä, joka varmistaa toiminnan nollakopiotilassa, ts. joka ei vaadi ylimääräistä muistin varaamista ja suorittaa sarjattamisen vain käyttämällä alun perin toimitettua puskuria. Rkyvin käyttö on lisännyt käynnistysnopeutta merkittävästi.
  • Singlepass-single-pass -kääntäjä on parannettu lisäämällä tukea moniarvoisille funktioille, parantunut luotettavuus ja lisätty tuki poikkeusten käsittelykehyksiin.
  • WASI (WebAssembly System Interface) API:n parannettu käyttöönotto. Ongelmat WASI-ohjelmiston käyttöliittymässä tiedostojärjestelmän kanssa työskentelyssä on ratkaistu. Sisäiset tyypit on suunniteltu uudelleen WAI:n (WebAssembly Interfaces) avulla, mikä mahdollistaa joukon uusia ominaisuuksia tulevaisuudessa.

Lähde: opennet.ru

Lisää kommentti