偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Wasm 玩出花?在瀏覽器中運(yùn)行虛擬機(jī)!

系統(tǒng) 瀏覽器
WebVM 和我們平時(shí)看到的傳統(tǒng)的 WebShell 是完全不一樣的,這個(gè) WebVM 是沒有服務(wù)器的,它單純依賴于 HTML5/WebAssembly 就可以獨(dú)自在瀏覽器客戶端中運(yùn)行一個(gè)基于 Debian 的完整虛擬機(jī)。

最近在 Github 上看到了一個(gè)挺有意思的項(xiàng)目:運(yùn)行在瀏覽器環(huán)境中的虛擬機(jī):WebVM。

傳統(tǒng)意義上的虛擬機(jī)(VM)是一種創(chuàng)建于物理硬件系統(tǒng)(位于外部或內(nèi)部)、充當(dāng)虛擬計(jì)算機(jī)系統(tǒng)的虛擬環(huán)境,它模擬出了自己的整套硬件,包括 CPU、內(nèi)存、網(wǎng)絡(luò)接口和存儲(chǔ)器,它依然需要運(yùn)行在一個(gè)服務(wù)器上。

而 WebVM 和我們平時(shí)看到的傳統(tǒng)的 WebShell 是完全不一樣的,這個(gè) WebVM 是沒有服務(wù)器的,它單純依賴于 HTML5/WebAssembly 就可以獨(dú)自在瀏覽器客戶端中運(yùn)行一個(gè)基于 Debian 的完整虛擬機(jī)。

WebVM 是基于 CheerpX 實(shí)現(xiàn)的,CheerpX 是基于 Cheerp 編譯器實(shí)現(xiàn)的... 別著急,我們先從 Cheerp 開始看, ~

Cheerp

WebAssembly 我們都知道,是一種二進(jìn)制指令格式,簡(jiǎn)稱為 Wsam,它可以運(yùn)行在適用于堆棧的虛擬機(jī)上。WebAssembly 存在的意義就是成為編程語(yǔ)言的可移植編譯目標(biāo),讓在 Web 上部署客戶端和服務(wù)端應(yīng)用成為可能。簡(jiǎn)單來(lái)說(shuō),它可以讓我們?cè)?Web 環(huán)境中運(yùn)行服務(wù)端代碼。

而 Cheerp 就是一個(gè)可以生成 WebAssembly 的 C/C++ 編譯器。

CheerpX

CheerpX 是一種 x86 到 WebAssembly 的虛擬化技術(shù),聲稱可以完全在客戶端運(yùn)行任意的 x86 應(yīng)用程序。

CheerpX 構(gòu)建了一個(gè)基于 WebAssembly 的虛擬機(jī)來(lái)在瀏覽器中運(yùn)行 X86 二進(jìn)制文件。您可以使用它運(yùn)行任何 REPL 環(huán)境。示例:https://repl.leaningtech.com/?python3

WebVM

而 WebVM,是一個(gè)在瀏覽器中運(yùn)行的基于 Debian 的完整虛擬機(jī),由 CheerpX 提供支持,由以下幾部分組成:

  • CheerpX 作為 JavaScript API 執(zhí)行引擎,特別是 cx.run(…) 這樣的代碼,用于啟動(dòng) bash 進(jìn)程。然后 bash 可以在用戶鍵入命令時(shí)啟動(dòng)其他進(jìn)程。
  • Xterm.js 作為主要的 UI 組件:Xterm.js 負(fù)責(zé)解釋 vim 等應(yīng)用程序使用的終端轉(zhuǎn)義,并將用戶輸入發(fā)送回 CheerpX。輸入通過(guò)應(yīng)用程序的標(biāo)準(zhǔn)輸入文件描述符提供給應(yīng)用程序。
  • 一個(gè) Debian buster 磁盤映像,采用 ext2 格式并安裝了一堆軟件包。它們被放在 CDN 上,這可以最大限度地提高可擴(kuò)展性。

WebVM 的使命和愿景是讓程序運(yùn)行:

  • 無(wú)需修改;
  • 無(wú)需重新編譯;
  • 完全客戶端模式。

你可以在 WebVM 上嘗試下面這些操作:

# 運(yùn)行一個(gè)簡(jiǎn)單的 python 程序
python3 examples/python3/fibonacci.py
# 使用 gcc 編譯一個(gè)簡(jiǎn)單的 C 示例
gcc -o helloworld examples/c/helloworld.c
# 運(yùn)行!
./helloworld
# 轉(zhuǎn)儲(chǔ)代碼,驗(yàn)證這實(shí)際上是一個(gè) x86 二進(jìn)制
objdump -d ./helloworld
# 編輯 helloworld.c 文件,然后再試一次
vim examples/c/helloworld.c

目錄中提供了各種語(yǔ)言的示例文件 examples 。

最后

這個(gè)應(yīng)用雖然離生產(chǎn)還有很大一段距離,但它確實(shí)讓我看到了 Web 的無(wú)限可能。

Web 平臺(tái)正在成為應(yīng)用程序分發(fā)的主導(dǎo)平臺(tái)。特別是自從 WebAssembly 標(biāo)準(zhǔn)化以來(lái),這樣的確實(shí)趨勢(shì)已經(jīng)越來(lái)越明顯了,想象一下:一種新的編程語(yǔ)言一旦被開發(fā)出來(lái),就會(huì)被所有現(xiàn)代瀏覽器支持,這可以持續(xù)滿足大型 Web 應(yīng)用程序的性能需求。

WebAssembly 為瀏覽器世界帶來(lái)了真正的創(chuàng)新,以及視角和責(zé)任的轉(zhuǎn)變。

責(zé)任編輯:趙寧寧 來(lái)源: code秘密花園
相關(guān)推薦

2022-04-25 10:26:11

Python代碼瀏覽器

2021-07-31 12:58:53

PodmanLinux虛擬機(jī)

2021-09-12 12:00:12

瀏覽器LinuxWeb 應(yīng)用

2021-12-14 10:54:31

TopK面試排序法

2022-05-04 11:07:32

虛擬機(jī)Linux

2023-11-17 14:06:43

2012-05-04 11:28:41

虛擬化KVM高性能

2012-03-20 11:25:07

360手機(jī)瀏覽器

2009-08-12 14:15:12

VMware虛擬機(jī)配置DHCP服務(wù)器

2009-03-26 15:35:22

detachedRIASilverligh

2022-01-04 09:02:24

瀏覽器命令行ttyd

2011-05-12 11:35:32

Oracle VM V虛擬機(jī)

2010-02-24 10:49:11

Python運(yùn)行環(huán)境

2010-10-26 10:20:31

SUSE 11XenWindows虛擬機(jī)

2016-04-18 09:33:52

nodejswebapp

2012-05-18 10:22:23

2023-09-06 09:20:45

FigmaWasm

2021-04-21 08:28:06

微軟EdgeGoogle

2021-10-28 17:20:51

微軟VS Code工具

2021-09-30 09:40:32

Gitpod開源VS Code
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)