2024 vivo開發(fā)者大會官宣:OriginOS 5/自研藍河系統(tǒng)2降臨真·AI程序員來了,阿里云「通義靈碼」全面進化,全流程開發(fā)僅用幾分鐘東方甄選烤腸全網(wǎng)銷量及銷售額領先鴻蒙PC要來了 界面很漂亮!余承東:目前華為PC將是最后一批搭載Windows上半年中國AR/VR出貨23.3萬臺,同比下滑了 29.1%IDC:2024 上半年中國 AR / VR 頭顯出貨 23.3 萬臺,同比下滑 29.1%英特爾AI加速器Gaudi3下周發(fā)布,挑戰(zhàn)NVIDIA統(tǒng)治地位!大屏技術邂逅千年色彩美學!海信激光電視成為電影《只此青綠》官方合作伙伴OpenAI將最新AI模型o1擴展到企業(yè)和教育領域三星新專利探索AR技術新應用:檢測屏幕指紋殘留,提高手機安全性猛瑪傳奇C1:直播圖傳技術的革新者JFrog推出首個運行時安全解決方案,實現(xiàn)從代碼到云的全面軟件完整性和可追溯性亞馬遜推出一大波生成式 AI 工具,購物體驗全面升級機器人公司1X推出世界模型Apple Intelligence測試版現(xiàn)已開放革命性AI對話系統(tǒng)Moshi問世:機器也能說人話了?阿里國際推出最新多模態(tài)大模型 Ovis,看菜品就能提供烹飪步驟華為發(fā)布智聯(lián)集成行業(yè)解決方案,助力客戶打造行業(yè)領先的目標網(wǎng)絡AI 3D生成天花板再拉升!清華團隊煉成3D Scaling Law正在逐步覆蓋!騰訊提醒勿為實況圖重裝微信:以免丟失微信聊天記錄
  • 首頁 > 數(shù)據(jù)存儲頻道 > 數(shù)據(jù)庫頻道 > 操作系統(tǒng)與開源

    掘力計劃22期-基于 WebAssembly 打造一個純?yōu)g覽器上的POSIX 運行環(huán)境

    2023年08月25日 08:59:03   來源:中文科技資訊

      8月19日,在掘力計劃系列第22場《聊聊前端工程化實踐和未來》活動中,來自阿里的劉睿老師受邀進行了一場主題為《基于 WebAssembly 打造一個純?yōu)g覽器上的POSIX 運行環(huán)境》的技術分享。

    圖片1.jpg

      劉睿老師是一位擁有8年互聯(lián)網(wǎng)工作經(jīng)驗的專業(yè)人士,他目前就職于阿里巴巴TRE工程基礎服務團隊,主要從事于中后臺、內部工具產(chǎn)品的應用層開發(fā),在領域內有著豐富的實踐經(jīng)驗和深厚的技術功底。

      這次劉老師結合自身在WebAssembly領域的研究與探索,通過介紹阿里內部開發(fā)的WebIDE產(chǎn)品WebC與目前市面上類似產(chǎn)品講述了WebAssembly在構建純前端POSIX運行環(huán)境方面的應用沒,以及與之相關的技術和實現(xiàn)方式。

      背景

      在 2021 年 Google I/O 大會上,StackBlitz 正式推出了與 Next.js 以及 Google Chrome 團隊合作開發(fā)的一項基于 WebAssembly 的新技術,名為 WebContainers 。

      基于 WebContainers (以及開源的 VS Code Web),StackBlitz 構建了全新的在線 IDE 產(chǎn)品 CodeFlow。

    圖片2.jpg

      劉睿老師提到在阿里內部也存在云端研發(fā)場景的用戶訴求存在,因此從去年開始就在著手打造類 “WebContainers” 相關的產(chǎn)品,面向云研發(fā)用戶提供高效運行 Node.js 、bash、git、 Core Utils等終端能力。

      WebContainers 的優(yōu)勢相比于WebIDE無容器、WebIDE Docker的方案更加的輕量且無額外成本,功能相對完善。因此,伴隨著WebContainers技術的出現(xiàn),基于WebContainers的WebIDE體驗普遍獲得了明顯的體驗提升。

      在下文中,我們將WebAssembly和WebContainers分別簡稱為WASM和WebC,以便更加簡潔和方便地提及它們。

      WebC 實現(xiàn)方式

      類比本地而言,WebC 更像是一個運行在瀏覽器上的操作系統(tǒng)。不同之處在于Wasm 跟 WebC 有兩層關系:

      1.WebC 本身使用 Wasm 實現(xiàn)。

      2.wasm 是 WebC 中的可執(zhí)行文件格式,就好比 ELF 之于 *nix、PE 之于 Windows、Mach-O 之于 macOS。

      如下圖所示:

    圖片3.jpg

      數(shù)據(jù)傳遞

      瀏覽器 Worker 間傳遞數(shù)據(jù)通常存在三種方式:

      ●ArrayBuffer + MessageChannel (COPY)

      ●ArrayBuffer + MessageChannel + transferable (MOVE)

      ●SharedArrayBuffer + Atomics

      雖然 ShardArrayBuffer 因為安全問題被瀏覽器默認關閉,但是ShardArrayBuffer +Atomics方案依然是目前比較好的數(shù)據(jù)傳遞方式選項。其原因主要是因為 WebC 大量核心邏輯(文件系統(tǒng)、進程管理、管道、TTY/PTY等)由 C++實現(xiàn),而在 Wasm 中調用諸如 PostMessage等 Web API需要JS 做大量膠水工作。

    圖片4.jpg

      從 WebC 多進程深⼊ Wasm

      類⽐本地,WebC 更像是⼀個運⾏在瀏覽器上的操作系統(tǒng),WebC 本身也是使⽤ Wasm 實現(xiàn)的。

    圖片5.jpg

      WebC 共享內存設計 & Wasm 類型

      WebC在設計上選擇了SharedArrayBuffer+Atomics的方案進行不同進程間的數(shù)據(jù)傳遞。相比消息通道的傳遞方式,這種基于共享內存的設計可以避免大量的數(shù)據(jù)拷貝開銷。Wasm中的SharedArrayBuffer和Atomics可在多線程/進程間高效安全地進行數(shù)據(jù)交換。這也更契合WebC的場景,大量核心邏輯由C++編寫,消息通道方式將帶來更多JS膠水層的額外性能損耗。

    圖片6.jpg

      內存隔離問題 & Wasm 內存和變量

      WebC需要在不同的進程間進行內存隔離。Wasm中的內存布局包括Global、Local和Linear Memory三個部分。其中Global區(qū)域可以用于實現(xiàn)數(shù)據(jù)的邏輯隔離。WebC就是通過控制Wasm的內存布局,為每個進程預留獨立的Global內存空間,從而實現(xiàn)了進程間內存的隔離。這展示了Wasm內存模型的靈活性和隔離特性在構建安全的運行環(huán)境方面的應用價值。

    圖片7.jpg

    圖片8.jpg

      Fork 函數(shù) & Wasm Call 和 Stack-Switching

      “fork”函數(shù)可以通過保存和恢復程序計數(shù)器來實現(xiàn)進程的創(chuàng)建。但是在Wasm中,函數(shù)的調用對開發(fā)者是不透明的。Wasm中的調用無法保存和恢復調用現(xiàn)場。這也導致了Wasm目前無法調用異步JS接口的問題。Stack-Switching提案將通過“棧切換”功能實現(xiàn)類似于fork的上下文切換效果。這為Wasm帶來了實現(xiàn)類似fork的能力。

    圖片9.jpg

      WebC “系統(tǒng)調⽤”& Wasm Linking

      WebC 并沒有真正的系統(tǒng)調⽤,但是依然存在程序訪問系統(tǒng)接⼝的過程。⽬前 Wasm Module 之間是⽆法直接 link 的,⽐如在前端,我們必須使⽤ JS 作為膠⽔層。解決這個問題的 Wasm Module Linking Proposal 也被合⼊ Component Model Proposal(階段1)。

    圖片10.jpg

      Pipe & Wasm 編程

      以下示例展示了Wasm提供底層內存訪問和計算的優(yōu)勢,可進行更高效的位操作和內存管理。

    圖片11.jpg

    圖片12.jpg

    圖片13.jpg

      對 Wasm 未來的一點小期待

      劉睿老師提到說現(xiàn)在的 Wasm 并沒有像期待的那樣給前端帶來革新,根據(jù)Results for js web frameworks benchmark得出的調研結果來看目前基于 Wasm 的前端框架性能普遍上不如 JS 框架。

    圖片14.jpg

      或許是由于WASM本身功能的缺陷導致需要大量膠水層產(chǎn)生來修補才能夠很好的進行工作,當 Component Model,Stack-Switching, GC 這些 proposals 落地之后,Wasm 在前端的應用可以完全擺脫對 JS 的依賴以及膠水層產(chǎn)生的性能損失,基于 Wasm 的前端框架可以充分發(fā)揮自己的性能優(yōu)勢。

      如下圖所示:

    圖片15.jpg

      總結

      WebC產(chǎn)品展示了Wasm構建瀏覽器運行環(huán)境的可能性。但要發(fā)揮Wasm性能優(yōu)勢,仍需不斷迭代和優(yōu)化。本文對其實現(xiàn)原理和應用場景進行了一定分析,希望對相關領域的探索提供一定借鑒和啟發(fā)。

      參考資料

      https://krausest.github.io/js-framework-benchmark/2023/table_chrome_116.0.5845.82.html

      https://webcontainers.io/

      關于掘力計劃

      掘力計劃由稀土掘金技術社區(qū)發(fā)起,致力于打造一個高品質的技術分享和交流的系列品牌。聚集國內外頂尖的技術專家、開發(fā)者和實踐者,通過線下沙龍、閉門會、公開課等多種形式分享最前沿的技術動態(tài)。(作者:葉飛)

      

    [No. X048]
    分享到微信

    即時

    TCL實業(yè)榮獲IFA2024多項大獎,展示全球科技創(chuàng)新力量

    近日,德國柏林國際電子消費品展覽會(IFA2024)隆重舉辦。憑借在核心技術、產(chǎn)品設計及應用方面的創(chuàng)新變革,全球領先的智能終端企業(yè)TCL實業(yè)成功斬獲兩項“IFA全球產(chǎn)品設計創(chuàng)新大獎”金獎,有力證明了其在全球市場的強大影響力。

    新聞

    敢闖技術無人區(qū) TCL實業(yè)斬獲多項AWE 2024艾普蘭獎

    近日,中國家電及消費電子博覽會(AWE 2024)隆重開幕。全球領先的智能終端企業(yè)TCL實業(yè)攜多款創(chuàng)新技術和新品亮相,以敢為精神勇闖技術無人區(qū),斬獲四項AWE 2024艾普蘭大獎。

    企業(yè)IT

    重慶創(chuàng)新公積金應用,“區(qū)塊鏈+政務服務”顯成效

    “以前都要去窗口辦,一套流程下來都要半個月了,現(xiàn)在方便多了!”打開“重慶公積金”微信小程序,按照提示流程提交相關材料,僅幾秒鐘,重慶市民曾某的賬戶就打進了21600元。

    3C消費

    “純臻4K 視界煥新”——愛普生4K 3LCD 激光工程投影

    2024年3月12日,由愛普生舉辦的主題為“純臻4K 視界煥新”新品發(fā)布會在上海盛大舉行。

    研究

    2024全球開發(fā)者先鋒大會即將開幕

    由世界人工智能大會組委會、上海市經(jīng)信委、徐匯區(qū)政府、臨港新片區(qū)管委會共同指導,由上海市人工智能行業(yè)協(xié)會聯(lián)合上海人工智能實驗室、上海臨港經(jīng)濟發(fā)展(集團)有限公司、開放原子開源基金會主辦的“2024全球開發(fā)者先鋒大會”,將于2024年3月23日至24日舉辦。