Wasmer 2.0, et værktøjssæt til at bygge WebAssembly-baserede applikationer, er tilgængeligt

Wasmer-projektet har udgivet sin anden store udgivelse, der udvikler en runtime til at udføre WebAssembly-moduler, der kan bruges til at skabe universelle applikationer, der kan køre på forskellige operativsystemer, samt til at køre upålidelig kode isoleret. Projektkoden er skrevet i Rust og distribueres under MIT-licensen.

Portabilitet opnås ved at kompilere applikationskode til WebAssembly-mellemkode på lavt niveau, som kan køre på ethvert OS eller indlejres i programmer på andre programmeringssprog. Programmerne er letvægtsbeholdere, der kører WebAssembly pseudokode. Disse beholdere er ikke bundet til operativsystemet og kan indeholde kode, der oprindeligt er skrevet i et hvilket som helst programmeringssprog. Emscripten-værktøjssættet kan bruges til at kompilere til WebAssembly. For at oversætte WebAssembly til maskinkode for den nuværende platform, understøtter den tilslutning af forskellige kompileringsbackends (Singlepass, Cranelift, LLVM) og motorer (ved hjælp af JIT eller maskinkodegenerering).

Adgangskontrol og interaktion med systemet leveres ved hjælp af WASI (WebAssembly System Interface) API, som giver programmeringsgrænseflader til at arbejde med filer, sockets og andre funktioner leveret af operativsystemet. Applikationer er isoleret fra hovedsystemet i et sandkassemiljø og har kun adgang til den erklærede funktionalitet (en sikkerhedsmekanisme baseret på kapacitetsstyring - for handlinger med hver af ressourcerne (filer, mapper, sockets, systemkald osv.), ansøgning skal have de nødvendige beføjelser).

For at starte en WebAssembly-beholder skal du blot installere Wasmer i runtime-systemet, som kommer 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 administreres ved hjælp af WAPM-pakkehåndteringen. Wasmer er også tilgængelig som et bibliotek, der kan bruges til at indlejre WebAssembly-kode i Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir og Java-programmer.

Platformen giver dig mulighed for at opnå applikationsudførelsesydelse tæt på native assemblies. Ved at bruge Native Object Engine til WebAssembly-modulet kan du generere maskinkode ("wasmer compile -native" for at generere prækompilerede .so-, .dylib- og .dll-objektfiler), som kræver minimal runtime at køre, men bevarer al sandkasseisolationen funktioner. Det er muligt at levere prækompilerede programmer med indbygget Wasmer. Rust API og Wasm-C-API tilbydes til oprettelse af tilføjelser og udvidelser.

En væsentlig ændring i versionsnummeret af Wasmer er forbundet med introduktionen af ​​inkompatible ændringer til den interne API, som ifølge udviklerne ikke vil påvirke 99% af platformbrugerne. Blandt de ændringer, der bryder kompatibiliteten, er der også en ændring i formatet af serialiserede Wasm-moduler (moduler, der er serialiseret i Wasmer 1.0, vil ikke kunne bruges i Wasmer 2.0). Andre ændringer:

  • Understøttelse af SIMD-instruktioner (Single Instruction, Multiple Data), der muliggør parallelisering af dataoperationer. Områder, hvor brugen af ​​SIMD kan forbedre ydeevnen betydeligt, omfatter maskinlæring, videokodning og -afkodning, billedbehandling, fysisk processimulering og grafikmanipulation.
  • Understøttelse af referencetyper, der giver Wasm-moduler adgang til information i andre moduler eller i det underliggende miljø.
  • Der er foretaget væsentlige ydelsesoptimeringer. Hastigheden af ​​LLVM runtime med flydende decimaltal er blevet øget med ca. 50 %. Funktionskald er blevet betydeligt accelereret ved at reducere situationer, der kræver adgang til kernen. Cranelift kodegeneratorens ydeevne er blevet øget med 40 %. Reduceret datadeserialiseringstid.
    Wasmer 2.0, et værktøjssæt til at bygge WebAssembly-baserede applikationer, er tilgængeligt
    Wasmer 2.0, et værktøjssæt til at bygge WebAssembly-baserede applikationer, er tilgængeligt
  • For mere præcist at afspejle essensen er navnene på motorerne blevet ændret: JIT → Universal, Native → Dylib (Dynamisk bibliotek), Objektfil → StaticLib (Statisk bibliotek).

Kilde: opennet.ru

Tilføj en kommentar