WebAssembly元件提案

banq發表於2022-01-21

本文探討了新的 WebAssembly 元件模型提案,並展示了一種使用介面、構建 Rust 和 C++ 元件、連結和使用 Wasmtime 執行它們的非常早期的方法。
隨著越來越多的程式語言將 WebAssembly 新增為編譯目標,並且構建了自動為這些程式語言生成繫結的工具,元件模型將為軟體實現真正的可移植和跨語言組合。
WebAssembly (或 Wasm)是 W3C 規範,用於分發和執行程式碼的可移植二進位制格式,自 2017 年以來已在四大瀏覽器引擎中實現。用熟悉的術語來說,Wasm 被用作 各種程式語言的編譯目標 ,生成一個緊湊的二進位制檔案,可以在瀏覽器中以接近本機的速度執行。這將 Rust、C 和 C++、Go 或 C# 等現有語言(以及Grain等新語言 )引入了網路,並允許將極其複雜的應用程式(如 Google Earth 或Photoshop )移植 到瀏覽器中。
 WASI 專案或 WebAssembly 系統介面 是一項旨在標準化 Wasm 在瀏覽器之外的執行並提供通用(平臺無關)層和一組原語的提案,客戶端使用這些原語與其底層執行時進行互動,同時維護 WebAssembly 承諾的安全沙箱。
 

什麼是WebAssembly 元件模型
使用作業系統類比,WebAssembly 允許執行低階 CPU 指令,而 WASI 是一種對輸入/輸出介面進行建模的方法。
從這個角度來看,對定義流程如何啟動以及它們如何相互互動的“流程模型”的需求開始出現——這就是 WebAssembly 元件模型提案試圖解決的問題。
元件模型的第一個既定 目標 是定義一種可移植的、載入和執行時高效的二進位制格式 […],它支援可移植的跨語言組合——有效地解決多個元件如何相互互動,以及用例描述了嵌入元件、組合和動態連結的廣泛場景。
本文討論的主要用例如下——將 API 層定義為 WebAssembly 介面,將其實現為 WebAssembly 元件,然後透過傳遞引數和返回值從其他元件中使用它。在該領域還有許多其他主題需要探索,例如傳遞依賴、分發、開發人員體驗或為給定介面構建專門的主機執行時,所有這些都將在以後的文章中討論。
詳細點選標題

相關文章