Wasmer 3.0 er nu tilgængelig, et værktøjssæt til oprettelse af applikationer baseret på WebAssembly.

Den tredje betydelige udgivelse af Wasmer-projektet er blevet præsenteret, som udvikler en runtime til kørsel af WebAssembly-moduler, der kan bruges til at skabe universelle applikationer, der kan køre på forskellige operativsystemer, samt til isoleret udførelse af uautorisere kode. Projektets kode er skrevet i Rust og distribueres under MIT-licensen.

Muligheden for at køre en applikation på forskellige platforme sikres gennem kompilering af koden til lavniveau WebAssembly-mellemkode, som kan køres på alle operativsystemer eller indgå i programmer skrevet i andre programmeringssprog. Programmerne er letvægtige containere, hvori der kører WebAssembly-pseudokode. Disse containere er ikke bundet til operativsystemet og kan indeholde kode, der oprindeligt er skrevet i ethvert programmeringssprog. Emscripten værktøjet kan bruges til at kompilere til WebAssembly. Oversættelse af WebAssembly til maskinkode for den nuværende platform understøtter tilslutning af forskellige kompilations-backends (Singlepass, Cranelift, LLVM) og motorer (involvering af JIT eller generation af maskinkode).

Applikationer er isoleret fra det underliggende system i et sandbox-miljø og har kun adgang til den deklarerede funktionalitet (sikkerhedsmekanismen er baseret på kapabilitetsstyring - for handlinger med hver af ressourcerne (filer, mapper, sockets, systemopkald osv.) skal applikationen have de relevante beføjelser). Adgangsstyring og interaktion med systemet håndteres via WASI (WebAssembly System Interface), som leverer programmeringsgrænseflader til håndtering af filer, sockets og andre funktioner, der leveres af operativsystemet.

Platformen gør det muligt at opnå ydeevne, der nærmer sig udførelsen af native builds. Ved hjælp af Native Object Engine til WebAssembly-modulet kan der genereres maskinkode (»wasmer compile —native« for at generere forudkompilerede objektfiler .so, .dylib og .dll), hvortil der kræves minimal runtime, men alle sandbox-isolationsmuligheder bevares. Levering af forudkompilerede programmer med indbygget Wasmer er mulig. Rust API og Wasm-C-API tilbydes til oprettelse af udvidelser og supplementer.

For at kunne køre en WebAssembly-container er det tilstrækkeligt at installere Wasmer-runtime'en i systemet, som leveres uden eksterne afhængigheder ("curl https://get.wasmer.io -sSfL | sh") og køre den nødvendige fil ("wasmer test.wasm"). Programmer distribueres i form af almindelige WebAssembly-moduler, som kan styres ved hjælp af pakkehåndteringssystemet WAPM. Wasmer er også tilgængelig som et bibliotek, som kan bruges til at integrere WebAssembly-kode i programmer skrevet i Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir og Java.

De vigtigste ændringer i Wasmer 3.0:

  • Muligheden for at skabe native eksekverbare filer til alle platforme er blevet tilføjet. Kommandoen «wasmer create-exe» er helt omarbejdet, hvilket gør det muligt at konvertere en fil med mellemkode fra WebAssembly til selvstændige eksekverbare filer for platforme som Linux, Windows og macOS, som kan køre uden installation af selve Wasmer.
  • Det er nu muligt at køre WAPM-pakker, der er hostet på wapm.io, ved hjælp af kommandoen «wasmer run». For eksempel vil udførelsen af «wasmer run python/python» føre til, at pakken python bliver hentet fra wapm.io-repositoriet og kørt.
  • Wasmer Rust API er blevet fuldstændig omarbejdet, hvor stil og håndtering af hukommelse er ændret, hvilket muliggør sikker opbevaring af Wasm-objekter i Store-strukturen. En ny struktur, MemoryView, er blevet foreslået, hvilket gør det muligt at læse og skrive data i det lineære hukommelsesområde.
  • Der er implementeret et sæt af wasmer-js komponenter for at køre Wasmer i webbrowseren og interagere med den fra JavaScript ved hjælp af biblioteket wasm-bindgen. Wasmer-js svarer til komponenterne wasmer-sys, som er designet til at køre Wasmer i almindelige operativsystemer.
  • Motorerne er blevet forenklet. I stedet for separate motorer til JIT, dynamisk og statisk linking (Universal, Dylib, StaticLib) tilbydes nu en fælles motor, hvor indlæsning og gemning af kode styres på niveau med parameterindstillinger.
  • Frameworket rkyv er blevet aktivt brugt til deserialisering af artefakter, hvilket muliggør zero-copy drift, dvs. det kræver ikke yderligere hukommelsesallokering og udfører deserialisering ved kun at bruge den oprindeligt leverede buffer. Anvendelsen af rkyv har betydeligt øget opstartshastigheden.
  • Den enegangskompilator, Singlepass, er forbedret, med support til funktioner med flere argumenter (multi-value), øget pålidelighed og support til stack-trace for undtagelseshåndtering.
  • Implementeringen af API WASI (WebAssembly System Interface) er forbedret. Der er løst problemer i WASI API'en for filsysteminteraktion. Interne typer er blevet redesignede ved hjælp af WAI (WebAssembly Interfaces), hvilket i fremtiden vil muliggøre en række nye funktioner.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster