- WebVM รันสภาพแวดล้อม Linux ภายในเบราว์เซอร์ด้วย WebAssembly ทำให้สามารถจัดการไบนารี x86 ได้ฝั่งไคลเอนต์โดยไม่ต้องมีเซิร์ฟเวอร์
- แกนหลักอย่าง CheerpX ประกอบการทำเวอร์ชวลไลเซชันบนเบราว์เซอร์ด้วย x86-to-WebAssembly JIT compiler, ระบบไฟล์เสมือนแบบ block-based และ Linux system call emulator
- การประมวลผลเกิดขึ้นภายใน sandbox ของเบราว์เซอร์ และการรันไบนารี x86 ทำบนอุปกรณ์ของผู้ใช้ ไม่ใช่บนเซิร์ฟเวอร์
- ตัวอย่างคำสั่งมี
python3,gcc,objdump,vim,curlเป็นต้น และcurl --max-time 15 parrot.liveต้องใช้เครือข่าย - มีสภาพแวดล้อมทดลองแยกต่างหากคือ Alpine / Xorg / i3 WebVM และ BrowserCode เป็นรายการที่เกี่ยวข้องซึ่งรัน Claude Code ในเบราว์เซอร์
วิธีการทำงานของ WebVM
- WebVM คือสภาพแวดล้อม Linux เสมือนที่ทำงานในเบราว์เซอร์ผ่าน WebAssembly
- เอนจินพื้นฐานอย่าง CheerpX รันไบนารี x86 ภายใน sandbox ที่ปลอดภัย
- การประมวลผลทั้งหมดเกิดขึ้น ฝั่งไคลเอนต์ อย่างสมบูรณ์
องค์ประกอบของการทำเวอร์ชวลไลเซชันบนเบราว์เซอร์ของ CheerpX
- CheerpX มีองค์ประกอบต่อไปนี้สำหรับการทำเวอร์ชวลไลเซชันบนเบราว์เซอร์
-
x86-to-WebAssembly JIT compiler
- ระบบไฟล์เสมือนแบบ block-based
- Linux system call emulator
-
สภาพแวดล้อมทดลองและคำสั่งตัวอย่าง
- ให้บริการ Alpine / Xorg / i3 WebVM เป็นสภาพแวดล้อมทดลอง WebVM แบบใหม่
- ตัวอย่างพื้นฐานของ WebVM แนะนำคำสั่งต่อไปนี้
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- คำสั่งนี้ต้องใช้ เครือข่าย
รายการที่เกี่ยวข้อง
- BrowserCode เป็นรายการที่เกี่ยวข้องซึ่งรัน Claude Code ในเบราว์เซอร์ผ่าน WebAssembly
1 ความคิดเห็น
ความคิดเห็นจาก 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/ โดยตัวสุดท้ายมีฮาร์ดแวร์และระบบปฏิบัติการให้เลือกเยอะ (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/ ด้วย
https://duckduckgo.com/?q=comptuers+built+in+minecraft
โปรเจกต์ที่เป็นฐานดูเหมือนจะ ไม่ใช่โอเพนซอร์ส มีข้อความว่า “WebVM อิงจาก CheerpX build ที่เราโฮสต์ไว้ เราสนับสนุนให้ผู้ใช้ deploy WebVM เวอร์ชันของตัวเอง แต่ปัจจุบันยังไม่อนุญาตให้ self-host ตัวเอนจิน CheerpX เอง CheerpX build สาธารณะนี้ให้บริการตามสภาพ และใช้ฟรีสำหรับการสำรวจทางเทคนิค การทดสอบ และการใช้งานที่ไม่ใช่เชิงพาณิชย์ หากต้องการสร้างผลิตภัณฑ์บน CheerpX/WebVM โปรดติดต่อเรา”
https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-...
เป็น lead developer ของ WebVM และ CTO ของ Leaning Technologies ถ้ามีคำถามก็จะตอบให้ แต่ที่นี่ค่อนข้างดึกแล้ว อาจต้องรออีกหลายชั่วโมง จะเข้าร่วม Discord ก็ได้: https://discord.gg/yTNZgySKGa
งานนี้เจ๋งมาก หวังว่าจะไม่ฟังดูเหมือนประชดเบา ๆ เพิ่มเติมคือเปิด vi แล้ว Esc ไม่ค่อยทำงาน ไม่แน่ใจว่าเป็นปัญหาของเบราว์เซอร์หรือเปล่า เลยไม่คิดว่าจะต้องพูดประโยค “ออกจาก vi ไม่ได้” ซ้ำอีกครั้ง
เคยอ่านบทความเกี่ยวกับ networking ที่ลิงก์ไว้ก่อนหน้านี้แล้ว แต่อยากดูว่าใช้แนวทางแบบไหนอย่างเป็นรูปธรรม
อีกอย่างคือบางครั้งหน้าจอค้างและไม่แสดงคีย์ที่พิมพ์ ปกติกด backspace แล้วหน้าจอจะกลับมา Firefox about:performance ไม่แสดง CPU usage ของแท็บนั้น และใน htop บน Linux ของเครื่องผม Firefox ก็ดูไม่ผิดปกติ
มีคำถามด้วย เห็นว่าไฟล์ใหม่ยังคงอยู่แม้ปิดแท็บแล้วเปิดใหม่ แต่ยังไม่ได้ตรวจ localStorage หรืออย่างอื่นผ่าน developer tools อยากรู้ว่าใช้สิ่งนั้นหรือใช้ฟีเจอร์อื่นของเบราว์เซอร์ ไฟล์เหล่านี้คงอยู่ถาวรแค่ไหนกันแน่?
เห็นคำตอบอื่นแล้ว: https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
น่าจะแก้ชื่อเรื่องเป็นประมาณ “WebVM คือ WebAssembly VM ที่ทำงานในเบราว์เซอร์”
buzzword เท่ดี สุดท้ายก็คือ สภาพแวดล้อมบรรทัดคำสั่ง Linux ที่รันในเบราว์เซอร์ และช้า
มีข้อความว่า “CheerpX enables you to run existing 32-bit x86 native binaries” น่าแปลกที่ การรองรับ wasm64 ในเบราว์เซอร์ชะงักมาหลายปีแล้ว น่าเสียดาย
การให้เครือข่ายผ่าน Tailscale ถือว่าฉลาด ช่วยเลี่ยงปัญหาที่อาจเกิดขึ้นได้หลายอย่าง
รู้สึกว่าช้ากว่า https://bellard.org/jslinux/ มาก
เจ๋งดี แต่การกดปุ่มมักไม่แสดงผล ทำให้ใช้งานจริงแทบไม่ได้ แม้มองเป็น use case สำหรับสภาพแวดล้อมพัฒนาโลคัลของ Web IDE ก็ยังดูไม่เร็วพอ
node --versionเร็วหลังจากรันครั้งแรก แต่การรัน JavaScript ช้ามาก:user@:~$ time node -e "console.log('Hello')"Helloreal 0m7.693suser 0m0.012ssys 0m0.000sสงสัยว่า use case ที่ใช้งานได้จริง ของของแบบนี้คืออะไร
นี่เป็นแค่ตัวอย่างไม่กี่อย่าง และรายการอาจยาวกว่านี้มาก
มันรันเซิร์ฟเวอร์ Node.js และฟรอนต์เอนด์ภายในเบราว์เซอร์ ดังนั้นจึงสามารถดูได้ว่า Graphweaver ทำอะไรได้บ้างโดยไม่ต้องติดตั้งหรือรันอะไรบนคอมพิวเตอร์นอกจากเบราว์เซอร์ ตัวอย่างนี้รวมฐานข้อมูล SQLite เข้ากับ REST API และ Graphweaver ก็ให้บริการ GraphQL API จากผลลัพธ์นั้น