WebAssembly 的未來:將逐漸解鎖整個“技能樹”

發表於2018-10-31

WebAssembly 在2017年受到主流瀏覽器的支援,併發布了 MVP 版本(Minimum Viable Product,最簡可行產品)。雖然 WebAssembly 社群組致力於使 WebAssembly 向後相容,讓現在開發的 WebAssembly 應用程式,仍可以在未來的瀏覽器中運作,但這並不代表 WebAssembly 功能已經完整,MVP 絕非最終版本。相反,WebAssembly 還將增加許多新功能,而這些新功能將從根本上顛覆 WebAssembly 所能實現的工作。

為消除人們對 WebAssembly 的誤解,WebAssembly 社群組以 RPG 遊戲中人物養成的“技能樹”形式,對 WebAssembly 的未來發展路徑做了非常詳細的解釋。他們表示目前已經完全掌握這些技能中的前幾項,後續需要慢慢解鎖整個技能樹。

WebAssembly 在 MVP 版本階段滿足 4 個基本技能要求:編譯、快速執行、壓縮和線性記憶體分配。使用 WebAssembly 的人知道他們不想只支援 C 和 C ++,而是希望能夠將許多不同的語言編譯為 WebAssembly 。經 WebAssembly 編譯器編譯的應用需要能夠快速執行,滿足需求。而為了加速載入速度,WebAssembly 還需具備壓縮能力,減少使用者的等待時間。另外,WebAssembly 需要有別於 JavaScript 使用記憶體方式,能夠直接管理使用的記憶體,在加上安全因素的考量,WebAssembly 採用線性記憶體模式。

社群組表示,WebAssembly 的下一個目標是平滑執行那些更重的應用程式,比如 Photoshop、Gmail 等。為確保此類應用能在瀏覽器中執行良好,他們需要解鎖新一批的“技能”,包括支援多執行緒、SIMD(單指令流多資料流)、64位定址、流式編譯(在下載的同時編譯 WebAssembly 檔案)、分層編譯器、隱式 HTTP 快取以及一些其他改進。

一旦以上功能全部就位,WebAssembly 又將進入下一個階段 —— 與 JavaScript 互操作,包括 JS 和 WebAssembly 之間的快速呼叫、簡便的資料交換、ES模組整合、工具鏈整合和向後相容性。

此外,他們還想在 WebAssembly 中重寫 JavaScript 框架的大部分內容,並使靜態型別的 compile-to-js 語言可編譯為 WebAssembly 。想要實現這兩個目標,WebAssembly 還需要支援高階的語言功能,包括垃圾回收、異常處理、除錯以及尾呼叫(Tail calls)。

更多功能和具體進度,可查閱部落格原文

相關文章