[IND] 4 分鐘閱讀OraCore 編輯部

WASI 0.3 正式版讓 WebAssembly 協作更順

WASI 0.3 正式版把非同步處理收斂到主機端單一事件迴圈,適合先看 5 個重點再決定要不要跟進升級。

分享 LinkedIn
WASI 0.3 正式版讓 WebAssembly 協作更順

WASI 0.3 把 WebAssembly 元件的非同步處理收斂到主機端,讓不同部件更容易一起運作。

這份清單看完,你會知道 WASI 0.1、0.2、0.3 各自解決了什麼問題,也能判斷自己是該先補基礎、直接追元件模型,還是開始評估非同步整合。對已經在做 WebAssembly 服務的人來說,這 5 項足夠幫你決定要不要升級實作與調整架構。

項目定位關鍵變化
WASI 0.1基礎抽象層把 OS API 抽離,讓 WebAssembly 能跑出瀏覽器
WASI 0.2元件模型導入加入 WIT,並整理 wasi-http、wasi-cli、wasi-clocks
WASI 0.3非同步整合改為由主機管理單一事件迴圈
Wasmtime 46參考實作預計支援 WASI 0.3,且 async 預設啟用
Component model 1.0下一階段目標持續補強 ABI 與跨執行環境相容性

1. WASI 0.1:先把 WebAssembly 從瀏覽器放出去

訂閱 AI 趨勢週報

每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。

不會寄垃圾信,隨時可取消。

WASI 的第一步,不是炫技,而是把 WebAssembly 從單純的瀏覽器技術,變成能在更多環境執行的通用基礎。它的核心是把作業系統相關的 API 先抽象掉,讓同一份模組可以往伺服器、桌面或其他執行器延伸。

WASI 0.3 正式版讓 WebAssembly 協作更順

對開發者來說,這代表你不必一開始就被特定作業系統綁住。它先解決的是「能不能跑」這件事,之後才是「怎麼更好地跑」。

  • 重點:OS API 抽象化
  • 用途:擴大到瀏覽器外執行
  • 意義:建立可攜式運算的第一層

2. WASI 0.2:元件模型把組裝方式先定下來

到了 WASI 0.2,重點就不只是執行,而是如何把不同語言、不同來源的 WebAssembly 部件拼成一個系統。這一版把元件模型帶進來,讓「模組之間怎麼對接」開始有共同語言。

其中最關鍵的是 WIT,也就是 WebAssembly Interface Type。它像是元件之間的介面說明書,讓型別與功能描述能被一致理解;同時也整理出常見能力,例如 HTTP、命令列與時鐘。

  • WIT:定義介面的共同格式
  • 常見項目:wasi-httpwasi-cliwasi-clocks
  • 價值:讓跨語言元件更容易互接

3. WASI 0.3:非同步處理改由主機統一管理

WASI 0.3 最重要的改變,是把原本各元件自己處理的事件迴圈收回到主機端。以前每個元件可能有自己的非同步邏輯,組起來時容易出現責任切割不清、整合成本偏高的問題。

WASI 0.3 正式版讓 WebAssembly 協作更順

新規格改成由主機管理單一事件迴圈後,元件之間的非同步互動就能放在同一套基礎上協調。這對需要同時處理 I/O、請求轉發、背景工作或多個服務組合的場景特別有感。

  • 變更前:各元件各自維護事件迴圈
  • 變更後:主機統一調度
  • 效果:降低非同步元件混用的摩擦

4. Wasmtime 46:實作跟上,才知道規格能不能用

規格成熟不代表立刻能落地,實作跟不跟得上才是關鍵。WASI 的參考實作 Wasmtime 預計在 46 版支援 WASI 0.3,並把 async 設為預設啟用,這讓開發者有機會直接觀察新規格在真實環境中的表現。

如果你正在評估要不要導入新的 WebAssembly 工作流,實作端的進度通常比文件更有參考價值。能先在 Wasmtime 上試出問題,後面移植到其他執行器時會省很多時間。

  • 參考實作:Wasmtime
  • 版本焦點:46
  • 觀察重點:async 預設開啟後的相容性

5. Component model 1.0:現在做的是鋪路,不是收尾

Bytecode Alliance 對 WASI 的定位很清楚:這不是終點,而是往 Component model 1.0 前進的中繼站。接下來還有 ABI 改善、更多執行環境實作,以及讓規格更容易被採用的工程化工作。

換句話說,WASI 0.3 的價值不只在於「能不能更順」,而是先把元件協作的共通規則定穩。當非同步、介面定義與主機責任都對齊之後,後續才有機會真正跨平台、跨語言地擴大使用。

  • 方向:邁向 Component model 1.0
  • 待解問題:ABI 與實作一致性
  • 長期目標:更廣泛的相容環境

哪種適合你

如果你現在還在理解 WebAssembly 能做到什麼,先看 WASI 0.1 就夠了;如果你已經在設計元件化系統,WASI 0.2 的 WIT 和介面定義會更重要;如果你最在意的是多個非同步部件怎麼一起跑,WASI 0.3 才是這次真正該跟進的版本。

而若你是想評估實際導入時機,先追 Wasmtime 的支援進度最務實。它能幫你判斷現在是適合觀望、試作原型,還是可以開始調整既有架構。