Wasmer 3.0, et verktøysett for å bygge WebAssembly-baserte applikasjoner, er tilgjengelig

Dette er den tredje store utgivelsen av Wasmer-prosjektet, som utvikler en kjøretid for kjøring av WebAssembly-moduler som kan brukes til å lage universelle applikasjoner som kan kjøres på forskjellige operativsystemer, samt sandkassekjøring av uklarert kode. Prosjektkoden er skrevet i Rust og distribuert under MIT-lisensen.

Muligheten til å kjøre samme applikasjon på forskjellige plattformer er gitt ved å kompilere koden til en WebAssembly-mellomkode på lavt nivå som kan kjøres på et hvilket som helst operativsystem eller være innebygd i programmer på andre programmeringsspråk. Programmer er lette beholdere som kjører WebAssembly-pseudokode. Disse beholderne er ikke knyttet til operativsystemet og kan inneholde kode som opprinnelig er skrevet på et hvilket som helst programmeringsspråk. Emscripten-verktøysettet kan brukes til å kompilere til WebAssembly. For å oversette WebAssembly til maskinkoden til den nåværende plattformen, støttes det å koble til forskjellige kompileringsbackends (Singlepass, Cranelift, LLVM) og motorer (ved å bruke JIT eller generere maskinkode).

Applikasjoner er isolert fra hovedsystemet i et sandkassemiljø og har kun tilgang til den deklarerte funksjonaliteten (kapasitetsbasert sikkerhetsmekanisme - for handlinger med hver av ressursene (filer, kataloger, sockets, systemanrop osv.), må applikasjonen gis passende myndighet). Tilgangskontroll og interaksjon med systemet er gitt ved hjelp av WASI (WebAssembly System Interface) API, som gir programmeringsgrensesnitt for arbeid med filer, sockets og andre funksjoner levert av operativsystemet.

Plattformen lar deg oppnå applikasjonskjøringsytelse nær den for opprinnelige sammenstillinger. Ved å bruke Native Object Engine for en WebAssembly-modul kan du generere innfødt kode ("wasmer compile -native" for å generere forhåndskompilerte .so-, .dylib- og .dll-objektfiler), som krever minimalt med kjøretid for å kjøre, men beholder alle funksjonene til sandkasse isolasjon. Det er mulig å levere forhåndskompilerte programmer med innebygd Wasmer. Rust API og Wasm-C-API tilbys for å lage tillegg og tillegg.

For å starte WebAssembly-beholderen er det nok å installere Wasmer runtime på systemet, som kommer uten eksterne avhengigheter ("curl https://get.wasmer.io -sSfL | sh"), og kjøre den nødvendige filen ("wasmer test") .wasm"). Programmer distribueres i form av vanlige WebAssembly-moduler, som kan administreres ved hjelp av WAPM-pakkebehandlingen. Wasmer er også tilgjengelig som et bibliotek som kan brukes til å bygge inn WebAssembly-kode i Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir og Java-programmer.

Store endringer i Wasmer 3.0:

  • Lagt til muligheten til å lage opprinnelige kjørbare filer for enhver plattform. "wasmer create-exe"-kommandoen har blitt fullstendig redesignet for å konvertere en WebAssembly mellomkodefil til selvstendige kjørbare filer for Linux-, Windows- og macOS-plattformer som kan kjøres uten å installere Wasmer selv.
  • Muligheten til å kjøre WAPM-pakker som ligger i wapm.io-katalogen ved å bruke "wasmer run"-kommandoen er gitt. For eksempel vil kjøring av "wasmer run python/python" laste ned python-pakken fra wapm.io-depotet og kjøre den.
  • Wasmer Rust API har blitt fullstendig redesignet, der stilen for å jobbe med minne er endret og muligheten til å trygt lagre Wasm-objekter i Store-strukturen er gitt. En ny MemoryView-struktur er foreslått som gjør det mulig å lese og skrive data til et lineært minneområde.
  • Et sett med wasmer-js-komponenter er implementert for å kjøre Wasmer i en nettleser og samhandle med den fra JavaScript ved å bruke wasm-bindgen-biblioteket. Wasmer-js ligner i funksjonalitet på wasmer-sys-komponentene designet for å kjøre Wasmer på vanlige operativsystemer.
  • Forenklede motorer. I stedet for separate motorer for JIT, dynamisk og statisk kobling (Universal, Dylib, StaticLib), tilbys nå én felles motor og lasting og lagring av kode som styres på parameterinnstillingsnivå.
  • For å deserialisere artefakter brukes rkyv-rammeverket, som sikrer nullkopioperasjon, dvs. krever ingen ekstra minneallokering og utfører deserialisering ved bruk av kun den opprinnelig tilveiebrakte bufferen. Bruken av rkyv økte oppstartshastigheten betydelig.
  • Singlepass-kompilatoren har blitt forbedret for å støtte flerverdifunksjoner, forbedre påliteligheten og legge til støtte for rammer for unntakshåndtering.
  • Forbedret implementering av WASI (WebAssembly System Interface) API. Rettet problemer i WASI API for arbeid med filsystemet. Interne typer har blitt redesignet ved hjelp av WAI (WebAssembly Interfaces), som vil tillate en rekke nye funksjoner som kan implementeres i fremtiden.

Kilde: opennet.ru

Legg til en kommentar