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

Den anden betydningsfulde udgivelse af Wasmer-projektet er sket, som udvikler et runtime til udførelse af WebAssembly-moduler, der kan bruges til at skabe universelle applikationer, der kan køres på forskellige operativsystemer, samt til isoleret udførelse af usikker kode. Projektets kode er skrevet i Rust og distribueres under MIT-licensen.

Portabiliteten sikres ved at kompilere applikationskoden til lav-niveau WebAssembly mellemformat, som kan køres på ethvert OS eller integreres i programmer skrevet i andre programmeringssprog. Programmerne fungerer som letvægtscontainere, hvor pseudokode i WebAssembly udføres. Disse containere er ikke knyttet til operativsystemet og kan indeholde kode skrevet i ethvert programmeringssprog. Emscripten-værktøjet kan anvendes til at kompilere til WebAssembly. For at oversætte WebAssembly til maskinkode for den nuværende platform understøttes tilslutning til forskellige kompilations-backends (Singlepass, Cranelift, LLVM) og motorer (brugen af JIT eller generering af maskinkode).

Adgangsstyring og interaktion med systemet sikres ved hjælp af API'en WASI (WebAssembly System Interface), som giver programmeringsgrænseflader til filhåndtering, sockets og andre funktioner, der tilbydes af operativsystemet. Applikationer er isoleret fra hovedsystemet i et sandbox-miljø og har kun adgang til den erklærede funktionalitet (sikkerhedsmekanismen baseret på capability control — for handlinger med hver ressource (filer, mapper, sockets, systemopkald osv.) skal applikationen have de tilsvarende rettigheder).

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.

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.

Den betydelige versionsændring af Wasmer skyldes indførelsen af brud på kompatibilitet i det interne API, som ifølge udviklerne ikke vil påvirke 99% af brugerne på platformen. Blandt de brud på kompatibilitet nævnes også ændringen af formatet for 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), som muliggør parallelisering af operationer over data. Områder, hvor anvendelse af SIMD kan forbedre ydeevnen markant, inkluderer maskinlæring, kodning og dekodning af video, billedbehandling, simulering af fysiske processer og grafikhåndtering.
  • Understøttelse af referencetyper, der gør det muligt for Wasm-moduler at få adgang til information i andre moduler eller i det underliggende miljø.
  • Der er foretaget betydelig ydeevneoptimering. Hastigheden af LLVM-runtime med flydende tal er øget med cirka 50%. Funktionskald er blevet betydeligt hurtigere på grund af reduktion af situationer, der kræver adgang til kernen. Ydeevnen af Cranelift kodegeneratoren er øget med 40%. Tiden til deserialisering af data er reduceret.
    Wasmer 2.0 er tilgængelig, et værktøjssæt til oprettelse af applikationer baseret på WebAssembly.
    Wasmer 2.0 er tilgængelig, et værktøjssæt til oprettelse af applikationer baseret på WebAssembly.
  • For at mere nøjagtigt afspejle essensen er navne på motorerne ændret: JIT → Universal, Native → Dylib (Dynamisk Bibliotek), Object File → StaticLib (Statisk Bibliotek).

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