- WebVM executa um ambiente Linux no navegador com base em WebAssembly, permitindo lidar com binários x86 no lado do cliente sem servidor
- A base principal, CheerpX, compõe a virtualização no navegador com um compilador JIT de x86 para WebAssembly, um sistema de arquivos virtual baseado em blocos e um emulador de chamadas de sistema Linux
- A execução ocorre dentro do sandbox do navegador, e os binários x86 são executados no dispositivo do usuário, não em um servidor
- Os comandos de exemplo incluem
python3,gcc,objdump,vim,curletc., ecurl --max-time 15 parrot.liverequer conectividade de rede - Como ambiente separado de demonstração, é oferecido o Alpine / Xorg / i3 WebVM, e o BrowserCode é um item relacionado que executa Claude Code no navegador
Como o WebVM funciona
- WebVM é um ambiente virtual Linux executado no navegador por meio de WebAssembly
- O motor subjacente, CheerpX, executa binários x86 em um sandbox seguro
- O processamento da execução acontece inteiramente no lado do cliente
Componentes da virtualização no navegador do CheerpX
- O CheerpX inclui os seguintes elementos para virtualização baseada em navegador
-
Compilador JIT de x86 para WebAssembly
- Sistema de arquivos virtual baseado em blocos
- Emulador de chamadas de sistema Linux
-
Ambiente de demonstração e comandos de exemplo
- Alpine / Xorg / i3 WebVM é oferecido como novo ambiente de demonstração do WebVM
- O exemplo padrão do WebVM sugere os seguintes 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 requer rede
Itens relacionados
- BrowserCode é um item relacionado que executa Claude Code no navegador por meio de WebAssembly
1 comentários
Comentários do Hacker News
Existem mais alguns projetos parecidos. Do lado de VM, há https://copy.sh/v86/, https://bellard.org/jslinux/, https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce) e https://www.pcjs.org/; o último tem bastante hardware e sistemas operacionais (https://github.com/jeffpar/pcjs)
Do lado de Mac OS, também há https://infinitemac.org/ (https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...), https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo... e https://jamesfriend.com.au/pce-js/pce-js-apps/
https://duckduckgo.com/?q=comptuers+built+in+minecraft
Pelo visto, o projeto-base não é open source. Está escrito: “WebVM is based on a build of CheerpX hosted by us. Users are encouraged to deploy their own version of WebVM, but self-hosting of the underlying CheerpX engine itself is not currently permitted. This public CheerpX build is provided as-is and is free for technical exploration, testing, and non-commercial use. If you would like to build products on top of CheerpX/WebVM please contact us”
https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-...
Sou o desenvolvedor líder do WebVM e CTO da Leaning Technologies. Se tiverem perguntas, responderei, mas já está bem tarde aqui, então pode ser que leve algumas horas. Também podem entrar no Discord: https://discord.gg/yTNZgySKGa
O trabalho é muito legal. Espero que não soe como deboche leve. E, como observação, abri o vi e o Esc não funcionou muito bem, não sei se por causa do navegador, então não imaginei que voltaria a dizer “não consigo sair do vi”
Li antes o post sobre rede que foi linkado, mas queria ver que abordagem específica vocês adotaram
Além disso, às vezes a tela trava e a digitação não aparece. Normalmente, se eu aperto backspace, a tela destrava. No about:performance do Firefox não aparece uso de CPU dessa aba, e no htop do Linux da minha máquina o Firefox também não parece estranho
Também tenho uma pergunta. Vi que arquivos novos continuam lá mesmo depois de fechar e reabrir a aba, mas não olhei em localStorage nem nada parecido nas ferramentas de desenvolvedor. Queria saber se foi isso que vocês usaram ou algum outro recurso do navegador. E, na prática, quão persistentes são esses arquivos?
Vi outra resposta: https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
O título talvez devesse ser ajustado para algo como “WebVM é uma VM WebAssembly que roda no navegador”
O termo da moda é legal. No fim das contas, é um ambiente de linha de comando Linux rodando no navegador, e lento
Está escrito “CheerpX enables you to run existing 32-bit x86 native binaries”. Estranhamente, o suporte do navegador a wasm64 está parado há anos, o que é uma pena
É inteligente oferecer a rede via Tailscale. Isso contorna alguns problemas potenciais
Parece bem mais lento do que o https://bellard.org/jslinux/
mandelbrot.cdo benchmark game, e o jslinux terminou em 12 segundos, enquanto o webvm terminou em 1,2 segundo. No host, com as mesmas flags do gcc, levou 0,03 segundoÉ legal, mas como as teclas digitadas muitas vezes não aparecem, na prática é difícil de usar. Mesmo como ambiente de desenvolvimento local para um Web IDE, não parece rápido o bastante
node --versioné rápido depois da primeira execução, mas executar JavaScript é muito lento:user@:~$ time node -e "console.log('Hello')"Helloreal 0m7.693suser 0m0.012ssys 0m0.000sFico me perguntando quais seriam os casos de uso práticos para algo assim
Esses são apenas alguns exemplos, e a lista poderia ser muito mais longa
Como ele roda um servidor Node.js e o frontend dentro do navegador, você pode ver o que o Graphweaver é capaz de fazer sem instalar nem executar nada no computador além do navegador. O exemplo combina um banco de dados SQLite com uma API REST, e o Graphweaver fornece uma API GraphQL como resultado