Wasmer 5.0 ist verfügbar, ein Toolkit zur Erstellung von WebAssembly-Anwendungen.

Die Ausgabe des Wasmer 5.0-Projekts wurde vorgestellt, das ein Runtime für die Ausführung von WebAssembly-Modulen entwickelt, das zur Erstellung universeller Anwendungen verwendet werden kann, die auf verschiedenen Betriebssystemen ausgeführt werden können. Wasmer kann auch verwendet werden, um nicht vertrauenswürdige Codeblocks isoliert im Rahmen herkömmlicher Anwendungen auszuführen. Der Code des Projekts ist in der Programmiersprache Rust geschrieben und wird unter der MIT-Lizenz verbreitet.

Die Möglichkeit, eine Anwendung auf verschiedenen Plattformen auszuführen, wird durch die Kompilierung in niederleveligen Intermediate Code von WebAssembly realisiert, der auf jedem Betriebssystem ausgeführt oder in Programme anderer Programmiersprachen integriert werden kann. Die Programme sind leichte Container, in denen Pseudocode von WebAssembly ausgeführt wird. Diese Container sind betriebssystemunabhängig und können Code enthalten, der ursprünglich in jeder Programmiersprache geschrieben wurde.

Für die Ausführung oder Übersetzung des Intermediate Codes von WebAssembly in den Maschinencode der Zielplattform stehen verschiedene Backends zur Verfügung:

  • Ein Singlepass-kompilierter Backend, optimal für die Verwendung in Blockchain-Anwendungen.
  • Ein Cranelift-Codegenerator-Backend, optimal für den Entwicklungsprozess.
  • Ein LLVM-kompilierter Backend, optimal für Produktionsimplementierungen.
  • Ein Backend für die Ausführung im Webbrowser.
  • Ein JavaScript-Engine-basierter Backend namens JavascriptCore, optimal für die Verwendung auf der macOS-Plattform.
  • Ein JavaScript-Engine-basierter Backend namens V8, optimal für Anwendungen auf den Plattformen iOS und Android.
  • Ein auf dem Wasmi-Interpreter basierendes Backend, optimal für Blockchain- und Rust-Projekte, die keine Standardbibliothek (nostd) verwenden.
  • Ein Runtime-basiertes Backend von WAMR, optimal für die iOS-Plattform.

Anwendungen werden von dem Hauptsystem in einer Sandbox-Umgebung isoliert und haben nur Zugriff auf die angegebene Funktionalität. Zur Isolation wird ein Mechanismus verwendet, der auf Berechtigungsmanagement basiert — für Aktionen mit jedem der Ressourcen (Dateien, Verzeichnisse, Sockets, Systemaufrufe usw.) müssen dem Anwendung entsprechende Berechtigungen erteilt werden. Der Zugriff und die Interaktion mit dem System werden über die API WASI (WebAssembly System Interface) bereitgestellt, die Programmierschnittstellen für die Arbeit mit Dateien, Sockets und anderen Systemfunktionen anbietet.

Die Plattform ermöglicht eine Anwendungsleistung, die der Ausführung nativer Builds nahekommt. Mit dem Native Object Engine für das WebAssembly-Modul kann Maschinen-Code generiert werden, für dessen Ausführung nur ein minimaler Runtime erforderlich ist, während alle Möglichkeiten der Sandbox-Isolation erhalten bleiben. Die Bereitstellung vorcompilierter Programme mit integriertem Wasmer ist möglich. Rust API und Wasm-C-API werden angeboten, um Erweiterungen und Ergänzungen zu erstellen.

Um einen WebAssembly-Container auszuführen, genügt es, das Wasmer-Runtime auf dem System zu installieren, das ohne externe Abhängigkeiten geliefert wird („curl https://get.wasmer.io -sSfL | sh“), und die erforderliche Datei auszuführen („wasmer test.wasm“). Programme werden in Form gewöhnlicher WebAssembly-Module verbreitet, deren Verwaltung über den Paketmanager WAPM erfolgen kann. Wasmer ist auch als Bibliothek verfügbar, die zur Einbindung von WebAssembly-Code in Programme in den Sprachen Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir und Java verwendet werden kann.

Die wichtigsten Neuerungen von Wasmer 5.0:

  • Es ist jetzt möglich, WebAssembly-Interpreter zu verwenden.
  • Ein experimenteller Backend auf Basis des leichtgewichts Wasmi-Interpreters wurde hinzugefügt, der die Ausführung von intermediärem WebAssembly-Code in Umgebungen mit begrenzten Ressourcen ermöglicht.
  • Ein experimenteller Backend auf Basis des WAMR (WebAssembly Micro Runtime) wurde hinzugefügt, der für einen minimalen Ressourcenverbrauch optimiert ist und sich für den Einsatz auf Geräten mit begrenztem RAM eignet.
  • Ein experimenteller Backend auf Basis der JavaScript-Engine V8, die in Browsern auf der Chromium-Codebasis verwendet wird, wurde hinzugefügt. Der Hauptvorteil der Verwendung dieses Backends liegt in der Verfügbarkeit des integrierten Debuggers und der Entwicklungswerkzeuge für Webentwickler sowie der erweiterten Funktionen von WebAssembly in V8, wie etwa die Behandlung von Ausnahmen und die Müllabfuhr.
  • Der Backend, der LLVM verwendet, hat experimentelle Unterstützung für die Architektur Loongarch64 hinzugefügt.
  • Die Unterstützung für die iOS-Plattform wurde hinzugefügt und ist bei der Verwendung der Backends WAMR, Wasmi und V8 verfügbar.
  • Die Unterstützung des Emscripten-Compilers wurde eingestellt.
  • Die Abhängigkeiten wurden aktualisiert, darunter LLVM 18, der Codegenerator Cranelift 27 und das Framework rkyv 0.8.
  • Die Leistung wurde optimiert. Beispielsweise wurde bei der Ausführung von Deserialisierungsoperationen eine Leistungssteigerung von bis zu 50 % festgestellt.
    Wasmer 5.0 ist verfügbar, ein Toolkit zur Erstellung von WebAssembly-Anwendungen.
    Wasmer 5.0 ist verfügbar, ein Toolkit zur Erstellung von WebAssembly-Anwendungen.
    Wasmer 5.0 ist verfügbar, ein Toolkit zur Erstellung von WebAssembly-Anwendungen.
    Wasmer 5.0 ist verfügbar, ein Toolkit zur Erstellung von WebAssembly-Anwendungen.
    Wasmer 5.0 ist verfügbar, ein Toolkit zur Erstellung von WebAssembly-Anwendungen.
    Wasmer 5.0 ist verfügbar, ein Toolkit zur Erstellung von WebAssembly-Anwendungen.
    Wasmer 5.0 ist verfügbar, ein Toolkit zur Erstellung von WebAssembly-Anwendungen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4