3 poin oleh GN⁺ 2024-07-12 | 1 komentar | Bagikan ke WhatsApp
  • WebVM menjalankan lingkungan Linux di dalam browser berbasis WebAssembly, sehingga biner x86 dapat ditangani di sisi klien tanpa server
  • Fondasi utamanya, CheerpX, membangun virtualisasi browser dengan kompiler JIT x86-to-WebAssembly, sistem berkas virtual berbasis blok, dan emulator system call Linux
  • Eksekusi diproses di dalam sandbox browser, dan menjalankan biner x86 dilakukan di perangkat pengguna, bukan di server
  • Contoh perintah mencakup python3, gcc, objdump, vim, curl, dan curl --max-time 15 parrot.live memerlukan jaringan
  • Lingkungan uji terpisah Alpine / Xorg / i3 WebVM juga disediakan, dan BrowserCode adalah item terkait yang menjalankan Claude Code di browser

Cara kerja WebVM

  • WebVM adalah lingkungan Linux virtual yang berjalan di browser melalui WebAssembly
  • Mesin dasarnya, CheerpX, menjalankan biner x86 di dalam sandbox yang aman
    • Seluruh proses eksekusi dilakukan sepenuhnya di sisi klien

Komponen virtualisasi browser CheerpX

  • Untuk virtualisasi berbasis browser, CheerpX mencakup elemen-elemen berikut
    • Kompiler JIT x86-to-WebAssembly

      • Sistem berkas virtual berbasis blok
      • Emulator system call Linux

Lingkungan uji dan contoh perintah

  • Alpine / Xorg / i3 WebVM disediakan sebagai lingkungan uji WebVM yang baru
  • Contoh default WebVM menyarankan perintah berikut
    • python3 examples/python3/fibonacci.py
    • gcc -o helloworld examples/c/helloworld.c && ./helloworld
    • objdump -d ./helloworld | less -M
    • vim examples/c/helloworld.c
    • curl --max-time 15 parrot.live
      • Perintah ini memerlukan jaringan

Item terkait

  • BrowserCode adalah item terkait yang menjalankan Claude Code di browser melalui WebAssembly

1 komentar

 
GN⁺ 2024-07-12
Opini Hacker News
  • Ada beberapa proyek lain yang mirip. Untuk sisi VM, ada https://copy.sh/v86/, https://bellard.org/jslinux/, https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce), https://www.pcjs.org/, dan yang terakhir punya banyak perangkat keras serta sistem operasi (https://github.com/jeffpar/pcjs)
    Untuk sisi Mac OS, ada juga https://infinitemac.org/ (https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...), https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo..., https://jamesfriend.com.au/pce-js/pce-js-apps/

    • Semua ini adalah emulator sistem penuh, sedangkan WebVM lebih dekat ke lapisan kompatibilitas untuk binary userspace yang diemulasikan. Dengan kata lain, ini adalah “emulator system call Linux”, jadi berada di level yang sedikit lebih tinggi, dan karenanya cenderung lebih mudah dipakai serta lebih fleksibel
    • https://exaequos.com
    • Saya penasaran komputer canggih yang dibuat di dalam Minecraft berada di mana dalam skala kecanggihan dibanding proyek-proyek seperti ini dan WebVM
      https://duckduckgo.com/?q=comptuers+built+in+minecraft
  • Proyek dasarnya sepertinya bukan open source. Tertulis: “WebVM didasarkan pada build CheerpX yang kami hosting. Kami mendorong pengguna untuk menerapkan versi WebVM mereka sendiri, tetapi saat ini kami tidak mengizinkan self-hosting mesin CheerpX itu sendiri. Build CheerpX publik ini disediakan apa adanya dan gratis untuk eksplorasi teknis, pengujian, serta penggunaan nonkomersial. Jika Anda ingin membuat produk di atas CheerpX/WebVM, silakan hubungi kami”
    https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-...

    • Sayang sekali. Awalnya saya tertarik, tapi sekarang minat saya pada proyek ini hilang
  • Saya lead developer WebVM sekaligus CTO Leaning Technologies. Kalau ada pertanyaan akan saya jawab, tetapi di sini sudah cukup larut jadi mungkin baru beberapa jam lagi. Silakan juga bergabung ke Discord: https://discord.gg/yTNZgySKGa

    • Terima kasih sudah ikut berdiskusi. Mungkin ini pertanyaan bodoh, tetapi saya penasaran mengapa membuat hal seperti ini. Saya juga ingin tahu use case apa yang Anda bayangkan, dan apakah ada server atau kanal IRC sebagai alternatif Discord
      Pekerjaannya keren. Semoga ini tidak terdengar seperti sindiran ringan. Tambahan lagi, saya membuka vi, tetapi Esc entah karena masalah browser tidak begitu berfungsi, jadi saya tidak menyangka harus mengucapkan lagi “tidak bisa keluar dari vi”
    • Saya sangat menyukai WebVM dan pekerjaan lain dari Leaning Tech. Saya penasaran apakah implementasi yang menangani lwIP pada bagian networking bersifat open source
      Saya sudah membaca tulisan tentang networking yang ditautkan sebelumnya, tetapi ingin melihat pendekatan spesifik yang digunakan
    • Saya mengujinya di Firefox pada Linux dan secara umum berjalan baik, tetapi copy-paste tidak berfungsi, yang bisa cukup fatal untuk pekerjaan pengeditan seperti pemrograman
      Selain itu, kadang layar membeku dan input tombol tidak muncul. Biasanya saat menekan backspace, layar kembali normal. Di about:performance Firefox tidak terlihat penggunaan CPU untuk tab tersebut, dan di htop Linux pada mesin saya Firefox juga tidak tampak aneh
      Ada pertanyaan juga. Saya melihat file baru tetap ada meski tab ditutup lalu dibuka kembali, tetapi saya belum memeriksa localStorage dan semacamnya lewat developer tools. Saya penasaran apakah itu yang dipakai, atau ada fitur browser lain yang digunakan. Seberapa persisten sebenarnya file-file ini?
    • Terima kasih atas usahanya. Saya penasaran apakah ada roadmap untuk dukungan aplikasi GUI
    • Saya penasaran apakah ini terkait dengan Tailscale. Apakah Tailscale semacam proxy, apakah ada opsi lain, dan apakah Tailscale juga open source
      Saya melihat jawaban lain: https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
  • Judulnya mungkin bisa diperbaiki menjadi kira-kira “WebVM adalah VM WebAssembly yang berjalan di browser

  • Buzzword-nya keren. Pada akhirnya ini adalah lingkungan command line Linux yang berjalan di browser, dan lambat

    • Setuju. Penjelasan saat ini malah lebih membingungkan. Saya jadi bertanya-tanya apakah kode JavaScript yang dijalankan web browser sekarang juga dianggap “serverless”
  • Tertulis “CheerpX enables you to run existing 32-bit x86 native binaries”. Anehnya, dukungan wasm64 di browser sudah mandek selama bertahun-tahun, sungguh disayangkan

    • Sebagian besar fitur WebAssembly, WebGL, dan WebGPU memang butuh waktu sangat lama sampai masuk ke browser, hampir harus dilihat dalam skala satu dekade
  • Cerdik sekali menyediakan jaringan melalui Tailscale. Ini menghindari beberapa potensi masalah

  • Terasa jauh lebih lambat daripada https://bellard.org/jslinux/

    • Saya mencoba mengompilasi dan menjalankan versi single-threaded mandelbrot.c dari benchmark game; jslinux selesai dalam 12 detik, sedangkan webvm dalam 1,2 detik. Di host dengan flag gcc yang sama, butuh 0,03 detik
  • Keren, tetapi input tombol sering tidak muncul, jadi secara praktis sulit digunakan. Bahkan untuk use case sebagai lingkungan pengembangan lokal bagi Web IDE, rasanya belum cukup cepat
    node --version cepat setelah eksekusi pertama, tetapi eksekusi JavaScript sangat lambat:
    user@:~$ time node -e "console.log('Hello')"
    Hello
    real 0m7.693s
    user 0m0.012s
    sys 0m0.000s

  • Saya penasaran apa use case praktis untuk hal seperti ini

    • Teknologi ini sangat fleksibel. Yang langsung terlintas saja sudah mencakup Linux, pemrograman, pendidikan keamanan, dokumentasi yang dapat dieksekusi untuk bahasa apa pun atau library biner apa pun, pelestarian software dan game historis, virtualisasi aplikasi korporat Windows legacy, lingkungan pengembangan untuk Web IDE, dan lain-lain
      Itu hanya beberapa contoh, dan daftarnya bisa jauh lebih panjang
    • Bukan WebVM itu sendiri, tetapi ada contoh yang dibuat memakai WebContainers: https://demo.graphweaver.com/
      Karena server Node.js dan frontend berjalan di dalam browser, Anda bisa melihat apa yang dapat dilakukan Graphweaver tanpa menginstal atau menjalankan apa pun di komputer selain browser. Contohnya menggabungkan database SQLite dengan REST API, lalu Graphweaver menyediakan GraphQL API dari hasilnya