3 पॉइंट द्वारा GN⁺ 2024-07-12 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • WebVM एक WebAssembly-आधारित ब्राउज़र-के-अंदर चलने वाला Linux environment है, जो बिना server के क्लाइंट-साइड पर x86 binaries को संभालने देता है
  • इसका मुख्य आधार CheerpX है, जो x86-to-WebAssembly JIT compiler, virtual block-based file system, और Linux system call emulator के जरिए ब्राउज़र virtualization बनाता है
  • execution ब्राउज़र के sandbox के अंदर होता है, और x86 binaries server पर नहीं बल्कि user device पर चलती हैं
  • उदाहरण commands में python3, gcc, objdump, vim, curl आदि शामिल हैं, और curl --max-time 15 parrot.live को networking की जरूरत होती है
  • अलग अनुभव environment के रूप में Alpine / Xorg / i3 WebVM दिया गया है, और BrowserCode ब्राउज़र में Claude Code चलाने से जुड़ा एक संबंधित प्रोजेक्ट है

WebVM कैसे चलता है

  • WebVM WebAssembly के जरिए ब्राउज़र में चलने वाला एक virtual Linux environment है
  • इसका underlying engine CheerpX x86 binaries को सुरक्षित sandbox में चलाता है
    • execution पूरी तरह client-side पर होता है

CheerpX की ब्राउज़र virtualization संरचना

  • CheerpX ब्राउज़र-आधारित virtualization के लिए निम्नलिखित घटक शामिल करता है
    • x86-to-WebAssembly JIT compiler

      • virtual block-based file system
      • Linux system call emulator

अनुभव environment और उदाहरण commands

  • Alpine / Xorg / i3 WebVM को नए WebVM अनुभव environment के रूप में दिया गया है
  • मूल WebVM उदाहरण निम्न commands सुझाता है
    • 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
      • इस command को networking की जरूरत होती है

संबंधित आइटम

  • BrowserCode WebAssembly के जरिए ब्राउज़र में Claude Code चलाने से जुड़ा एक संबंधित आइटम है

1 टिप्पणियां

 
GN⁺ 2024-07-12
Hacker News की रायें
  • इसी तरह के कुछ और प्रोजेक्ट भी हैं। VM की तरफ https://copy.sh/v86/, https://bellard.org/jslinux/, https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce), https://www.pcjs.org/ हैं, और आखिरी वाले में बहुत-से hardware और operating systems हैं (https://github.com/jeffpar/pcjs)
    Mac OS की तरफ 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/ भी हैं

    • ये पूरे system emulators हैं, जबकि WebVM emulated user-space binaries के लिए compatibility layer के ज्यादा करीब है। यानी यह “Linux system call emulator” है, इसलिए थोड़ा higher-level है, और इसी वजह से इस्तेमाल में ज्यादा आसान और flexible है
    • https://exaequos.com
    • सोचता हूं कि Minecraft के अंदर बनाए गए advanced computers इन प्रोजेक्ट्स और WebVM की तुलना में sophistication के पैमाने पर कहां बैठते हैं
      https://duckduckgo.com/?q=comptuers+built+in+minecraft
  • लगता है underlying project open source नहीं है। इसमें लिखा है, “WebVM हमारे द्वारा host किए गए CheerpX build पर आधारित है। हम users को WebVM के अपने versions deploy करने के लिए प्रोत्साहित करते हैं, लेकिन फिलहाल CheerpX engine की self-hosting की अनुमति नहीं देते। यह public CheerpX build जैसा है वैसा ही दिया गया है और technical exploration, testing, non-commercial use के लिए मुफ्त है। अगर आप CheerpX/WebVM के ऊपर कोई product बनाना चाहते हैं तो हमसे संपर्क करें”
    https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-...

    • अफसोस। शुरुआत में उम्मीद जगी थी, लेकिन अब इस प्रोजेक्ट में मेरी दिलचस्पी खत्म हो गई
  • मैं WebVM का lead developer और Leaning Technologies का CTO हूं। अगर सवाल हों तो जवाब दूंगा, लेकिन यहां काफी देर हो चुकी है, इसलिए कुछ घंटों बाद भी हो सकता है। Discord पर भी जुड़ सकते हैं: https://discord.gg/yTNZgySKGa

    • शामिल होने के लिए धन्यवाद। शायद बेवकूफी भरा सवाल हो, लेकिन जानना चाहता हूं कि ऐसी चीज क्यों बना रहे हैं। यह भी जानना चाहता हूं कि आपके मन में कौन-से use cases हैं, और Discord के बजाय कोई IRC server या channel है या नहीं
      काम शानदार है। उम्मीद है यह हल्की तंज वाली बात की तरह नहीं लगेगी। साथ में, मैंने vi खोला और Esc शायद browser issue की वजह से ठीक से काम नहीं कर रहा था, इसलिए सोचा नहीं था कि फिर से “vi से बाहर नहीं निकल पा रहा” कहना पड़ेगा
    • WebVM और Leaning Tech के बाकी काम मुझे सच में बहुत पसंद हैं। Networking वाले हिस्से में lwIP को handle करने वाला implementation open source है या नहीं, यह जानना चाहता हूं
      पहले link किया गया networking वाला article पढ़ा है, लेकिन खास तौर पर देखना चाहता हूं कि आपने कौन-सा approach अपनाया
    • Linux पर Firefox में test किया; कुल मिलाकर ठीक काम करता है, लेकिन copy-paste नहीं हो रहा, जो programming जैसे editing कामों के लिए काफी बड़ा issue हो सकता है
      साथ ही कभी-कभी screen freeze हो जाती है और key input दिखाई नहीं देता। आमतौर पर backspace दबाने पर screen फिर चलने लगती है। Firefox के about:performance में उस tab की CPU usage नहीं दिखती, और मेरी machine के Linux htop में भी Firefox अजीब नहीं दिखता
      एक सवाल भी है। Tab बंद करके फिर खोलने पर भी नई file बनी रहती है, यह देखा, लेकिन developer tools में localStorage वगैरह check नहीं किया। क्या आपने वही इस्तेमाल किया है, या browser की कोई और feature? ये files असल में कितनी persistent हैं?
    • मेहनत के लिए धन्यवाद। जानना चाहता हूं कि GUI applications support roadmap में है या नहीं
    • Tailscale से इसका कोई संबंध है या नहीं, यह जानना चाहता हूं। क्या Tailscale किसी proxy जैसा है, क्या और विकल्प हैं, और क्या Tailscale भी open source है
      दूसरा जवाब देखा: https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
  • शीर्षक को “WebVM browser में चलने वाला WebAssembly VM है” जैसा कर देना ठीक रहेगा

  • Buzzwords अच्छे हैं। आखिर में यह browser में चलने वाला Linux command-line environment है, और धीमा है

    • सहमत हूं। अभी का description उल्टा ज्यादा confusing है। अब क्या web browser द्वारा चलाए जाने वाले JavaScript code को भी “serverless” माना जाएगा?
  • लिखा है “CheerpX enables you to run existing 32-bit x86 native binaries”। अजीब बात है कि browser में wasm64 support कई सालों से अटका हुआ है, यह निराशाजनक है

    • WebAssembly, WebGL, WebGPU की ज्यादातर features को browser में आने में सचमुच बहुत लंबा समय लगता है, लगभग 10 साल के scale पर सोचना पड़ता है
  • नेटवर्किंग को Tailscale से उपलब्ध कराना समझदारी है। यह कुछ संभावित समस्याओं को बायपास कर देता है

    • ब्राउज़र के अंदर नेटवर्किंग के लिए Tailscale इस्तेमाल करना सबसे प्रभावी समाधान है। मैंने पहले इस विषय पर विस्तार से लिखा था: https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
  • https://bellard.org/jslinux/ की तुलना में काफ़ी धीमा महसूस होता है

    • benchmark game के mandelbrot.c single-threaded version को compile करके चलाया, तो jslinux 12 सेकंड में और webvm 1.2 सेकंड में पूरा हुआ। उसी gcc flags के साथ host पर 0.03 सेकंड लगे
  • शानदार है, लेकिन key input अक्सर दिखाई नहीं देता, इसलिए व्यवहार में इस्तेमाल करना मुश्किल है। Web IDE के local development environment वाले use case के हिसाब से भी यह पर्याप्त तेज़ नहीं लगता
    node --version पहली बार चलाने के बाद तेज़ है, लेकिन JavaScript execution बहुत धीमा है:
    user@:~$ time node -e "console.log('Hello')"
    Hello
    real 0m7.693s
    user 0m0.012s
    sys 0m0.000s

  • जिज्ञासा है कि ऐसी चीज़ का व्यावहारिक use case क्या होगा

    • यह technology बहुत flexible है। तुरंत दिमाग में आने वाली चीज़ों में Linux, programming और security education, किसी भी language या binary library के लिए executable documentation, historical software और game preservation, legacy Windows enterprise apps का virtualization, Web IDE के लिए development environment वगैरह शामिल हैं
      ये बस कुछ उदाहरण हैं, और list इससे कहीं लंबी हो सकती है
    • WebVM खुद तो नहीं, लेकिन WebContainers का इस्तेमाल करके बनाया गया एक उदाहरण https://demo.graphweaver.com/ है
      यह browser के अंदर Node.js server और frontend चलाता है, इसलिए computer पर browser के अलावा कुछ भी install या run किए बिना देखा जा सकता है कि Graphweaver क्या कर सकता है। example में SQLite database को REST API के साथ जोड़ा गया है, और Graphweaver उसके परिणाम के रूप में GraphQL API उपलब्ध कराता है