- WebVM ejecuta un entorno Linux dentro del navegador basado en WebAssembly, lo que permite manejar binarios x86 del lado del cliente sin servidor
- Su base principal, CheerpX, compone la virtualización en el navegador con un compilador JIT de x86 a WebAssembly, un sistema de archivos virtual basado en bloques y un emulador de llamadas al sistema de Linux
- La ejecución se procesa dentro del sandbox del navegador, y los binarios x86 se ejecutan en el dispositivo del usuario, no en un servidor
- Los comandos de ejemplo incluyen
python3,gcc,objdump,vimycurl, ycurl --max-time 15 parrot.liverequiere conectividad de red - Como entorno de prueba independiente, se ofrece Alpine / Xorg / i3 WebVM, y BrowserCode es un elemento relacionado que ejecuta Claude Code en el navegador
Cómo funciona WebVM
- WebVM es un entorno Linux virtual que se ejecuta en el navegador mediante WebAssembly
- CheerpX, el motor base, ejecuta binarios x86 dentro de un sandbox seguro
- Todo el procesamiento se realiza completamente del lado del cliente
Componentes de la virtualización en el navegador con CheerpX
- CheerpX incluye los siguientes elementos para la virtualización basada en navegador
-
Compilador JIT de x86 a WebAssembly
- Sistema de archivos virtual basado en bloques
- Emulador de llamadas al sistema de Linux
-
Entorno de prueba y comandos de ejemplo
- Alpine / Xorg / i3 WebVM se ofrece como un nuevo entorno de prueba de WebVM
- El ejemplo básico de WebVM propone los siguientes comandos
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- Este comando requiere conectividad de red
Elementos relacionados
- BrowserCode es un elemento relacionado que ejecuta Claude Code en el navegador mediante WebAssembly
1 comentarios
Comentarios en Hacker News
Hay algunos proyectos parecidos más. Del lado de VM están https://copy.sh/v86/, https://bellard.org/jslinux/, https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce) y https://www.pcjs.org/; el último tiene mucho hardware y sistemas operativos (https://github.com/jeffpar/pcjs)
Del lado de Mac OS también están https://infinitemac.org/ (https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...), https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo... y https://jamesfriend.com.au/pce-js/pce-js-apps/
https://duckduckgo.com/?q=comptuers+built+in+minecraft
El proyecto base parece no ser de código abierto. Dice: “WebVM está basado en una compilación de CheerpX alojada por nosotros. Recomendamos que los usuarios desplieguen su propia versión de WebVM, pero por el momento no permitimos el self-hosting del motor CheerpX en sí. Esta compilación pública de CheerpX se ofrece tal cual y es gratuita para exploración técnica, pruebas y uso no comercial. Si quieren crear un producto sobre CheerpX/WebVM, contáctennos”
https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-...
Soy el desarrollador principal de WebVM y CTO de Leaning Technologies. Si tienen preguntas, las responderé, aunque aquí ya es bastante tarde y puede que sea dentro de unas horas. También pueden unirse al Discord: https://discord.gg/yTNZgySKGa
El trabajo está muy bueno. Espero que no suene como una burla ligera. Como detalle extra, abrí vi y la tecla Esc no respondía bien, no sé si por el navegador, así que nunca pensé que volvería a decir “no puedo salir de vi”
Ya leí el post sobre redes que habían enlazado antes, pero me gustaría ver qué enfoque tomaron en concreto
Además, a veces la pantalla se congela y no se muestran las pulsaciones de teclas. Normalmente al presionar backspace la pantalla vuelve a reaccionar. En about:performance de Firefox no aparece uso de CPU de esa pestaña, y en el htop de Linux de mi máquina Firefox tampoco se ve raro
También tengo una pregunta. Vi que aunque cerraba la pestaña y la volvía a abrir, los archivos nuevos seguían ahí; no revisé localStorage ni nada de eso en las herramientas de desarrollo. Me da curiosidad si usan eso o alguna otra función del navegador. ¿Qué tan persistentes son realmente esos archivos?
Vi otra respuesta: https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
Parece que el título debería corregirse a algo como “WebVM es una VM de WebAssembly que corre en el navegador”
El término de moda suena bien. Al final es un entorno de línea de comandos de Linux que corre en el navegador, y es lento
Dice: “CheerpX enables you to run existing 32-bit x86 native binaries”. Es una pena que, de forma extraña, el soporte de wasm64 en los navegadores lleve años estancado
Es inteligente ofrecer el networking con Tailscale. Evita algunos problemas potenciales
Se siente mucho más lento que https://bellard.org/jslinux/
mandelbrot.cdel benchmark game, y jslinux tardó 12 segundos mientras que webvm terminó en 1.2 segundos. En el host, con los mismos flags de gcc, tomó 0.03 segundosEstá genial, pero muchas veces no registra las pulsaciones del teclado, así que en la práctica es difícil de usar. Incluso como entorno de desarrollo local para un Web IDE, no parece lo suficientemente rápido
node --versiones rápido después de la primera ejecución, pero correr JavaScript es muy lento:user@:~$ time node -e "console.log('Hello')"Helloreal 0m7.693suser 0m0.012ssys 0m0.000sMe pregunto cuáles serían los casos de uso prácticos para algo así
Esos son solo algunos ejemplos, y la lista podría ser mucho más larga
Como ejecuta un servidor Node.js y el frontend dentro del navegador, puedes ver lo que Graphweaver puede hacer sin instalar ni ejecutar nada en tu computadora aparte del navegador. El ejemplo combina una base de datos SQLite con una API REST, y Graphweaver expone una API GraphQL con ese resultado