3 puan yazan GN⁺ 2024-07-12 | 1 yorum | WhatsApp'ta paylaş
  • WebVM, WebAssembly tabanlı olarak tarayıcı içinde bir Linux ortamı çalıştırır ve sunucu olmadan x86 ikililerinin istemci tarafında kullanılmasını sağlar
  • Temel altyapı olan CheerpX, x86-to-WebAssembly JIT derleyicisi, sanal blok tabanlı dosya sistemi ve Linux sistem çağrısı emülatörüyle tarayıcı sanallaştırmasını oluşturur
  • Çalıştırma işlemi tarayıcının sandbox ortamında gerçekleşir ve x86 ikilileri sunucuda değil, kullanıcının cihazında yürütülür
  • Örnek komutlar arasında python3, gcc, objdump, vim, curl bulunur; curl --max-time 15 parrot.live komutu ağ bağlantısı gerektirir
  • Ayrı bir deneme ortamı olarak Alpine / Xorg / i3 WebVM sunulur; BrowserCode ise tarayıcıda Claude Code çalıştıran ilgili bir öğedir

WebVM nasıl çalışır

  • WebVM, WebAssembly aracılığıyla tarayıcıda çalışan sanal bir Linux ortamıdır
  • Temel motor olan CheerpX, x86 ikililerini güvenli bir sandbox içinde çalıştırır
    • Çalıştırma işlemi tamamen istemci tarafında gerçekleşir

CheerpX'in tarayıcı sanallaştırma yapısı

  • CheerpX, tarayıcı tabanlı sanallaştırma için şu bileşenleri içerir
    • x86-to-WebAssembly JIT derleyicisi

      • Sanal blok tabanlı dosya sistemi
      • Linux sistem çağrısı emülatörü

Deneme ortamı ve örnek komutlar

  • Alpine / Xorg / i3 WebVM, yeni bir WebVM deneme ortamı olarak sunulur
  • Varsayılan WebVM örneği şu komutları önerir
    • 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
      • Bu komut ağ bağlantısı gerektirir

İlgili öğe

  • BrowserCode, WebAssembly üzerinden tarayıcıda Claude Code çalıştıran ilgili bir öğedir

1 yorum

 
GN⁺ 2024-07-12
Hacker News yorumları
  • Benzer birkaç proje daha var. VM tarafında https://copy.sh/v86/, https://bellard.org/jslinux/, https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce), https://www.pcjs.org/ var; sonuncusunda çok sayıda donanım ve işletim sistemi bulunuyor (https://github.com/jeffpar/pcjs)
    Mac OS tarafında da 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/ var

    • Bunlar tam sistem emülatörleri; WebVM ise emüle edilen kullanıcı alanı ikilileri için bir uyumluluk katmanına daha yakın. Yani bir “Linux sistem çağrısı emülatörü”; biraz daha yüksek seviyeli ve bu yüzden kullanımı daha kolay, daha esnek sayılır
    • https://exaequos.com
    • Minecraft içinde yapılan gelişmiş bilgisayarların, bu projeler ve WebVM ile kıyaslandığında karmaşıklık ölçeğinde nereye düştüğünü merak ediyorum
      https://duckduckgo.com/?q=comptuers+built+in+minecraft
  • Temel alınan proje açık kaynak değil gibi görünüyor. Şöyle deniyor: “WebVM, bizim barındırdığımız bir CheerpX derlemesini temel alır. Kullanıcıların WebVM’in kendi sürümlerini dağıtmasını teşvik ediyoruz, ancak şu anda CheerpX motorunun kendisinin self-host edilmesine izin vermiyoruz. Bu herkese açık CheerpX derlemesi olduğu gibi sunulur ve teknik keşif, test ile ticari olmayan kullanım için ücretsizdir. CheerpX/WebVM üzerine bir ürün inşa etmek istiyorsanız lütfen bizimle iletişime geçin”
    https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-...

    • Yazık. Başta heyecanlanmıştım; artık bu projeye olan ilgim kalmadı
  • WebVM’in baş geliştiricisi ve Leaning Technologies CTO’suyum. Sorularınız olursa yanıtlarım, ancak burada saat epey geç; birkaç saat sonra olabilir. Discord’a da katılabilirsiniz: https://discord.gg/yTNZgySKGa

    • Katıldığın için teşekkürler. Aptalca bir soru olabilir ama neden böyle bir şey yaptığınızı merak ediyorum. Hangi kullanım senaryolarını düşündüğünüzü de merak ediyorum; ayrıca Discord yerine bir IRC sunucusu ya da kanalı yok mu diye sormak istiyorum
      Yapılan iş harika. Bunun hafif alaycı bir yorum gibi duyulmasını istemem. Ek olarak, vi’yi açtım ama Esc tarayıcı sorunu mu nedir pek çalışmadı; “vi’den çıkamıyorum” sözünü yeniden söylemek zorunda kalacağımı hiç düşünmezdim
    • WebVM’i ve Leaning Tech’in diğer çalışmalarını gerçekten seviyorum. Ağ tarafında lwIP’yi ele alan uygulamanın açık kaynak olup olmadığını merak ediyorum
      Daha önce bağlantısı verilen ağ yazısını okudum, ama özellikle nasıl bir yaklaşım izlediğinizi görmek isterim
    • Linux üzerinde Firefox’ta test ettim; genel olarak iyi çalışıyor ama kopyala-yapıştır çalışmadığı için programlama gibi düzenleme işleri açısından oldukça ciddi bir sorun olabilir
      Ayrıca bazen ekran donuyor ve tuş girişleri görünmüyor. Genelde Backspace’e basınca ekran çözülüyor. Firefox’un about:performance sayfasında ilgili sekmenin CPU kullanımı görünmüyor; makinemdeki Linux htop’ta da Firefox tuhaf görünmüyor
      Bir sorum da var. Sekmeyi kapatıp yeniden açınca yeni dosyanın korunduğunu gördüm; geliştirici araçlarıyla localStorage vb. kontrol etmedim. Onu mu kullandınız, yoksa başka bir tarayıcı özelliği mi? Bu dosyalar gerçekte ne kadar kalıcı?
    • Emekleriniz için teşekkürler. GUI uygulama desteği yol haritanızda var mı merak ediyorum
    • Tailscale ile ilişkisi olup olmadığını merak ediyorum. Tailscale’in proxy gibi bir şey olup olmadığını, başka seçeneklerin bulunup bulunmadığını ve Tailscale’in de açık kaynak olup olmadığını öğrenmek isterim
      Başka bir yanıtı gördüm: https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
  • Başlık “WebVM, tarayıcıda çalışan bir WebAssembly VM’dir” gibi düzeltilse iyi olur

  • Moda sözcükler havalı. Sonuçta tarayıcıda çalışan bir Linux komut satırı ortamı ve yavaş

    • Katılıyorum. Mevcut açıklama daha da kafa karıştırıyor. Artık web tarayıcısının çalıştırdığı JavaScript kodunu da “sunucusuz” mu sayıyoruz diye düşündürüyor
  • “CheerpX enables you to run existing 32-bit x86 native binaries” deniyor. Garip şekilde tarayıcılarda wasm64 desteği yıllardır yerinde sayıyor; üzücü bir durum

    • WebAssembly, WebGL, WebGPU özelliklerinin çoğunun tarayıcılara girmesi gerçekten çok uzun sürüyor; neredeyse 10 yıllık ölçeklerde düşünmek gerekiyor
  • Ağ iletişimini Tailscale ile sağlaması akıllıca. Birkaç olası sorunun etrafından dolaşmayı sağlıyor

  • https://bellard.org/jslinux/’ten çok daha yavaş hissettiriyor

    • Benchmark Game’in mandelbrot.c tek iş parçacıklı sürümünü derleyip çalıştırdım; jslinux 12 saniyede, webvm ise 1,2 saniyede bitirdi. Aynı gcc bayraklarıyla host üzerinde 0,03 saniye sürdü
  • Havalı ama tuş girişleri sık sık görünmediği için pratikte kullanmak zor. Web IDE’nin yerel geliştirme ortamı kullanım senaryosu açısından bakınca da yeterince hızlı görünmüyor
    node --version ilk çalıştırmadan sonra hızlı, ancak JavaScript çalıştırma çok yavaş:
    user@:~$ time node -e "console.log('Hello')"
    Hello
    real 0m7.693s
    user 0m0.012s
    sys 0m0.000s

  • Böyle bir şeyin pratik kullanım senaryosunun ne olduğunu merak ediyorum

    • Bu teknoloji çok esnek. İlk akla gelenler arasında Linux, programlama ve güvenlik eğitimi; herhangi bir dil veya ikili kütüphane için çalıştırılabilir dokümantasyon; tarihî yazılım ve oyunların korunması; eski Windows kurumsal uygulamalarının sanallaştırılması; Web IDE’ler için geliştirme ortamları var
      Bunlar sadece birkaç örnek; liste çok daha uzayabilir
    • WebVM’in kendisi değil ama WebContainers kullanılarak yapılmış bir örnek olarak https://demo.graphweaver.com/ var
      Tarayıcının içinde Node.js sunucusu ve frontend çalıştırdığı için, bilgisayara tarayıcı dışında hiçbir şey kurmadan veya çalıştırmadan Graphweaver’ın neler yapabildiğini görebilirsiniz. Örnek, SQLite veritabanını bir REST API ile birleştiriyor ve Graphweaver bunun sonucunda bir GraphQL API sunuyor