- WebVM führt eine Linux-Umgebung im Browser auf Basis von WebAssembly aus und ermöglicht es, x86-Binärdateien clientseitig ohne Server zu nutzen
- Die zentrale Grundlage CheerpX besteht aus einem x86-zu-WebAssembly-JIT-Compiler, einem virtuellen blockbasierten Dateisystem und einem Emulator für Linux-Systemaufrufe und bildet damit die Browser-Virtualisierung
- Die Ausführung erfolgt innerhalb der Sandbox des Browsers, und x86-Binärdateien werden nicht auf einem Server, sondern auf dem Gerät der Nutzer ausgeführt
- Zu den Beispielbefehlen gehören
python3,gcc,objdump,vimundcurl;curl --max-time 15 parrot.livebenötigt Netzwerkzugriff - Als separate Testumgebung wird Alpine / Xorg / i3 WebVM bereitgestellt; BrowserCode ist ein verwandtes Projekt, das Claude Code im Browser ausführt
Wie WebVM ausgeführt wird
- WebVM ist eine virtuelle Linux-Umgebung, die über WebAssembly im Browser läuft
- Die zugrunde liegende Engine CheerpX führt x86-Binärdateien in einer sicheren Sandbox aus
- Die Ausführung erfolgt vollständig clientseitig
Aufbau der Browser-Virtualisierung mit CheerpX
- CheerpX enthält für browserbasierte Virtualisierung die folgenden Komponenten
-
x86-zu-WebAssembly-JIT-Compiler
- virtuelles blockbasiertes Dateisystem
- Emulator für Linux-Systemaufrufe
-
Testumgebung und Beispielbefehle
- Alpine / Xorg / i3 WebVM wird als neue WebVM-Testumgebung angeboten
- Das Standardbeispiel von WebVM schlägt die folgenden Befehle vor
python3 examples/python3/fibonacci.pygcc -o helloworld examples/c/helloworld.c && ./helloworldobjdump -d ./helloworld | less -Mvim examples/c/helloworld.ccurl --max-time 15 parrot.live- Dieser Befehl benötigt Netzwerkzugriff
Verwandte Einträge
- BrowserCode ist ein verwandter Eintrag, der Claude Code über WebAssembly im Browser ausführt
1 Kommentare
Meinungen auf Hacker News
Es gibt noch ein paar ähnliche Projekte. Bei VMs gibt es https://copy.sh/v86/, https://bellard.org/jslinux/, https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce) und https://www.pcjs.org/; Letzteres bietet viele Hardware- und Betriebssysteme (https://github.com/jeffpar/pcjs)
Bei Mac OS gibt es außerdem https://infinitemac.org/ (https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...), https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo... und https://jamesfriend.com.au/pce-js/pce-js-apps/
https://duckduckgo.com/?q=comptuers+built+in+minecraft
Das zugrunde liegende Projekt scheint nicht Open Source zu sein. Dort heißt es: „WebVM basiert auf einem von uns gehosteten CheerpX-Build. Wir ermutigen Nutzer, eigene Versionen von WebVM bereitzustellen, erlauben derzeit aber kein Self-Hosting der CheerpX-Engine selbst. Dieser öffentliche CheerpX-Build wird wie besehen bereitgestellt und ist für technische Erkundung, Tests und nichtkommerzielle Nutzung kostenlos. Wenn Sie ein Produkt auf CheerpX/WebVM aufbauen möchten, kontaktieren Sie uns“
https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-...
Ich bin Lead-Entwickler von WebVM und CTO von Leaning Technologies. Wenn es Fragen gibt, beantworte ich sie gern, aber hier ist es ziemlich spät, es kann also ein paar Stunden dauern. Ihr könnt auch dem Discord beitreten: https://discord.gg/yTNZgySKGa
Die Arbeit ist beeindruckend. Ich hoffe, das klingt nicht leicht sarkastisch. Nebenbei: Ich habe vi geöffnet, und Esc funktionierte wohl wegen des Browsers nicht richtig, sodass ich nicht erwartet hätte, wieder einmal „ich komme aus vi nicht raus“ sagen zu müssen
Den zuvor verlinkten Artikel zum Networking habe ich gelesen, aber ich würde gern sehen, welchen konkreten Ansatz ihr gewählt habt
Außerdem friert der Bildschirm gelegentlich ein und Tastatureingaben werden nicht angezeigt. Normalerweise löst sich das, wenn man Backspace drückt. In Firefox’ about:performance sehe ich keine CPU-Auslastung dieses Tabs, und auch in htop auf meinem Linux-Rechner wirkt Firefox nicht auffällig
Ich habe auch eine Frage: Mir ist aufgefallen, dass neue Dateien erhalten bleiben, selbst wenn ich den Tab schließe und wieder öffne; ich habe aber nicht per Entwicklertools localStorage o. Ä. geprüft. Nutzt ihr das, oder eine andere Browser-Funktion? Wie persistent sind diese Dateien tatsächlich?
Ich habe eine andere Antwort gesehen: https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
Der Titel sollte wohl eher in „WebVM ist eine WebAssembly-VM, die im Browser läuft“ geändert werden
Tolles Buzzword. Am Ende ist es eine Linux-Kommandozeilenumgebung, die im Browser läuft, und sie ist langsam
Dort steht: „CheerpX enables you to run existing 32-bit x86 native binaries“. Seltsamerweise stagniert die wasm64-Unterstützung in Browsern seit Jahren, was schade ist
Dass das Networking über Tailscale bereitgestellt wird, ist clever. Das umgeht einige potenzielle Probleme.
Es fühlt sich deutlich langsamer an als https://bellard.org/jslinux/.
Cool, aber Tastatureingaben werden häufig nicht angezeigt, wodurch es praktisch schwer benutzbar ist. Selbst für den Use Case einer lokalen Entwicklungsumgebung in einer Web-IDE wirkt es nicht schnell genug.
node --versionist nach dem ersten Lauf schnell, JavaScript-Ausführung ist aber sehr langsam:user@:~$ time node -e "console.log('Hello')"Helloreal 0m7.693suser 0m0.012ssys 0m0.000sIch frage mich, was die praktischen Use Cases für so etwas sind.
Das sind nur ein paar Beispiele, die Liste ließe sich noch deutlich verlängern.
Es führt einen Node.js-Server und ein Frontend im Browser aus, sodass man sehen kann, was Graphweaver leisten kann, ohne auf dem Computer außer einem Browser irgendetwas zu installieren oder auszuführen. Das Beispiel kombiniert eine SQLite-Datenbank mit einer REST API, und Graphweaver stellt daraus eine GraphQL API bereit.