Wasm3 geht in minimale Wartung über
(github.com/wasm3)- Wasm3 versteht sich als schneller WebAssembly-Interpreter und allgemeine WASM-Runtime, stellt jedoch die Entwicklung neuer Funktionen ein und geht in eine Phase minimaler Wartung über
- Der Entwickler erklärte, dass er nach der Zerstörung seines Hauses durch die russische Invasion keine neuen Funktionen mehr weiterentwickeln könne; das Projekt solle aber am Leben bleiben, eingehende Pull Requests würden geprüft und gemergt
wasm3besteht die WebAssembly spec testsuite und kann vieleWASI-Apps ausführen; die minimal sinnvollen Systemanforderungen liegen bei etwa 64 KB Code und etwa 10 KB RAM- Unterstützt werden zahlreiche Architekturen wie x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa und ARC32 sowie Linux, Windows, OS X, FreeBSD, Android, iOS, MCUs, Browser und sogar die Ausführung seiner selbst
- Der Interpreter-Ansatz hat Vorteile bei Größe der ausführbaren Datei, Speicherverbrauch, Startlatenz, Portabilität, Sicherheit und Integrationsaufwand; in Umgebungen wie iOS oder WebAssembly selbst, in denen zur Laufzeit keine Code Pages erzeugt werden können, ist JIT nicht nutzbar
Änderung des Wartungsstatus
- Wasm3 geht in eine Phase minimaler Wartung über
- Die Entwicklung neuer Funktionen ist derzeit kaum fortzuführen
- Das Projekt wird weiter gepflegt; eingehende Pull Requests sollen aktiv geprüft und gemergt werden
- Beiträge aus der Community werden wichtiger als zuvor
- Der Entwickler erklärte, dass er nach der Zerstörung seines Hauses durch die russische Invasion derzeit keine neuen Funktionen weiterentwickeln könne
Was Wasm3 bietet
- Wasm3 zielt darauf ab, ein schneller WebAssembly-Interpreter und eine allgemeine WASM-Runtime zu sein
- Die Performance-Aussagen basieren auf CoreMark 1.0 und unabhängigen Benchmarks
- Die tatsächliche Performance kann je nach Umgebung variieren
- Es kann in vielen Sprachen und Umgebungen auch als Library genutzt werden
Ausführbare Umgebungen und Anforderungen
wasm3besteht die WebAssembly spec testsuite- Es kann viele
WASI-Apps ausführen - Die minimal sinnvollen Systemanforderungen sind:
- Code: etwa 64 KB
- RAM: etwa 10 KB
- Die Bandbreite der unterstützten Architekturen ist groß
x86,x86_64,ARM,RISC-V,PowerPC,MIPS,Xtensa,ARC32usw.
- Auch die unterstützten Plattformen und Umgebungen sind vielfältig
- Linux, Windows, OS X, FreeBSD, Android, iOS
- Router und Modems auf Basis von OpenWrt, Yocto und Buildroot
- SBCs wie Raspberry Pi und Orange Pi
- MCUs wie Arduino, ESP8266, ESP32 und Particle
- Ausführung im Browser über WebAssembly selbst möglich
- Auch Self-Hosting, bei dem
wasm3wasm3ausführt, ist möglich
Unterstützung von WebAssembly-Funktionen
- Unterstützte WebAssembly-Proposals
- Import/Export of Mutable Globals
- Non-trapping float-to-int conversions
- Sign-extension operators
- Multi-value
- Bulk memory operations werden teilweise unterstützt
- Custom page size
- Zusätzliche Funktionen
- Strukturierte Ausführungstraces
- Unterstützung für Big-Endian-Systeme
- Self-Hosting von Wasm und WASI
- Gas metering
- Begrenzung des linearen Speichers: unter 64 KiB
- Einige Punkte sind noch in Arbeit oder werden nicht unterstützt
- In Arbeit: Multiple memories, Reference types
- Nicht unterstützt: Tail call optimization, Fixed-width SIMD, Exception handling, Stack Switching
Warum einen Interpreter wählen, und Embedded WASM
- Geschwindigkeit ist nicht immer die zentrale Anforderung; der Interpreter-Ansatz hat in verschiedenen Situationen Vorteile
- Größe der Runtime-Binary, Speicherverbrauch und Startlatenz können verbessert werden
- Portabilität und Sicherheit lassen sich leichter erreichen und erhalten
- Eine einfache Library wie Wasm3 lässt sich leicht in bestehende Projekte kompilieren und integrieren; Builds sind in wenigen Sekunden abgeschlossen
- Auf einigen Plattformen kann JIT nicht genutzt werden
- Unter iOS und in WebAssembly selbst können zur Laufzeit keine ausführbaren Code Pages erzeugt werden
- Es werden auch Gründe genannt, WASM auf Embedded-Geräten auszuführen
- Wasm3 begann als Forschungsprojekt; die Evaluierung der Engine in verschiedenen Umgebungen ist Teil der Forschung
- Wenn auf MCUs bereits
Lua,JS,Python,Lispusw. laufen, kann auchWebAssemblyeine Alternative sein - WebAssembly bietet eine Trennung der Toolchain sowie eine vollständig sandboxed, gut definierte und vorhersagbare Umgebung
- Praktische Beispiele sind Edge Computing, Scripting, Plugin-Systeme,
IoT rulesund Smart Contracts
Referenzen und Lizenz
- Wichtige Dokumentation
- Verwandte Materialien
- Das Projekt wird unter der MIT License veröffentlicht
1 Kommentare
Kommentare auf Hacker News
Da dies ein anonymer Account ist, kann ich es sagen, ohne dass es sich wie Prahlerei anfühlt: Ich habe getan, was ich konnte – gespendet, Trolle gemeldet, Desinformation entgegengewirkt und Druck auf Politiker ausgeübt. Trotzdem habe ich immer noch das Gefühl, den Menschen in der Ukraine etwas schuldig zu sein
Du bist nicht allein, und ich hoffe, dass auch andere kleine Dinge tun – Politiker anschreiben, mit Spenden Zivilisten und Helden an der Front unterstützen oder Desinformation melden
Ich hoffe, Volodymyr hält gut durch, während er trotz Russlands Invasion der Ukraine versucht, das Projekt weiter zu pflegen, und dass der Krieg bald endet
Die Performance ist sehr gut, und die Eleganz der Architektur und des Codes ist definitiv beeindruckend
Der verlinkte Tweet stammt aus dem September 2022, zeigt ein Video des zerstörten Hauses und bittet Menschen, die helfen möchten, um Spenden
Die EU sollte mehr Geld bereitstellen, um der Ukraine zu helfen