Wasmer 2.0, een toolkit voor het bouwen van op WebAssembly gebaseerde applicaties, is beschikbaar

Het Wasmer-project heeft zijn tweede grote release uitgebracht, waarin een runtime wordt ontwikkeld voor het uitvoeren van WebAssembly-modules die kunnen worden gebruikt om universele applicaties te creëren die op verschillende besturingssystemen kunnen draaien, maar ook om niet-vertrouwde code afzonderlijk uit te voeren. De projectcode is geschreven in Rust en wordt gedistribueerd onder de MIT-licentie.

Portabiliteit wordt bereikt door applicatiecode te compileren in tussenliggende WebAssembly-code op laag niveau, die op elk besturingssysteem kan draaien of kan worden ingebed in programma's in andere programmeertalen. De programma's zijn lichtgewicht containers waarop WebAssembly-pseudocode draait. Deze containers zijn niet gebonden aan het besturingssysteem en kunnen code bevatten die oorspronkelijk in elke programmeertaal is geschreven. De Emscripten toolkit kan gebruikt worden om te compileren naar WebAssembly. Om WebAssembly te vertalen naar machinecode van het huidige platform, ondersteunt het de verbinding van verschillende compilatie-backends (Singlepass, Cranelift, LLVM) en motoren (met behulp van JIT of machinecodegeneratie).

Toegangscontrole en interactie met het systeem wordt verzorgd met behulp van de WASI (WebAssembly System Interface) API, die programmeerinterfaces biedt voor het werken met bestanden, sockets en andere functies van het besturingssysteem. Applicaties zijn geïsoleerd van het hoofdsysteem in een sandbox-omgeving en hebben alleen toegang tot de aangegeven functionaliteit (een beveiligingsmechanisme gebaseerd op mogelijkhedenbeheer - voor acties met elk van de bronnen (bestanden, mappen, sockets, systeemaanroepen, enz.), de aanvraag moet over de juiste bevoegdheden beschikken).

Om een ​​WebAssembly-container te starten, volstaat het om Wasmer-runtime op het systeem te installeren, dat wordt geleverd zonder externe afhankelijkheden ("curl https://get.wasmer.io -sSfL | sh"), en voer het benodigde bestand uit ("wasmer-test .wasm"). Programma's worden gedistribueerd in de vorm van gewone WebAssembly-modules, die kunnen worden beheerd met behulp van de WAPM-pakketbeheerder. Wasmer is ook beschikbaar als een bibliotheek die kan worden gebruikt om WebAssembly-code in te sluiten in Rust-, C/C++-, C#-, D-, Python-, JavaScript-, Go-, PHP-, Ruby-, Elixir- en Java-programma's.

Met het platform kunt u uitvoeringsprestaties van applicaties bereiken die dicht bij die van native assemblies liggen. Met behulp van de Native Object Engine voor een WebAssembly-module kunt u native code genereren ("wasmer compile -native" voor het genereren van vooraf gecompileerde .so-, .dylib- en .dll-objectbestanden). sandbox-isolatie. Het is mogelijk om voorgecompileerde programma's te leveren met ingebouwde Wasmer. Rust API en Wasm-C-API worden aangeboden voor het maken van add-ons en add-ons.

Een aanzienlijke verandering in het versienummer van Wasmer houdt verband met de introductie van incompatibele wijzigingen in de interne API, die volgens de ontwikkelaars geen gevolgen zullen hebben voor 99% van de platformgebruikers. Onder de veranderingen die de compatibiliteit verbreken, is er ook een verandering in het formaat van geserialiseerde Wasm-modules (modules geserialiseerd in Wasmer 1.0 kunnen niet worden gebruikt in Wasmer 2.0). Overige wijzigingen:

  • Ondersteuning voor SIMD-instructies (Single Instruction, Multiple Data), waardoor parallellisatie van gegevensbewerkingen mogelijk is. Gebieden waarop het gebruik van SIMD de prestaties aanzienlijk kan verbeteren, zijn onder meer machinaal leren, videocodering en -decodering, beeldverwerking, fysieke processimulatie en grafische manipulatie.
  • Ondersteuning voor referentietypen, waardoor Wasm-modules toegang krijgen tot informatie in andere modules of in de onderliggende omgeving.
  • Er zijn aanzienlijke prestatie-optimalisaties doorgevoerd. De snelheid van LLVM-runtime met drijvende-kommagetallen is met ongeveer 50% verhoogd. Functieaanroepen zijn aanzienlijk versneld door het verminderen van situaties waarbij toegang tot de kernel vereist is. De prestaties van de Cranelift-codegenerator zijn met 40% verhoogd. Kortere deserialisatietijd van gegevens.
    Wasmer 2.0, een toolkit voor het bouwen van op WebAssembly gebaseerde applicaties, is beschikbaar
    Wasmer 2.0, een toolkit voor het bouwen van op WebAssembly gebaseerde applicaties, is beschikbaar
  • Om de essentie nauwkeuriger weer te geven, zijn de namen van de zoekmachines gewijzigd: JIT → Universal, Native → Dylib (dynamische bibliotheek), Object File → StaticLib (statische bibliotheek).

Bron: opennet.ru

Voeg een reactie