WasmEdge 0.10.0 釋出!全新的外掛擴充套件機制、LLVM 14、Socket API 增強

語言: CN / TW / HK

在 0.10.0 版本中,WasmEdge 提供了全新的外掛(plug-in)機制,使本地擴充套件更易於開發和安裝,提高了與 LLVM 14 的相容性,並支援新的 WebAssembly 規範、提案和特性。

  • 本地 host 函式的新外掛系統
  • 對 WasmEdge socket API 的增強(例如,WasmEdge 中的微服務和 Web 服務客戶端)
  • 支援新的 WebAssembly 提案和規範
  • WasmEdge C API 增強
  • 其他特性以及漏洞修復

本地 host 函式的新外掛系統

host 函式是允許 WebAssembly 程式訪問本地庫提供的功能和特性的橋樑。 這是我們使用更多特性和函式擴充套件 WebAssembly runtime 的方式。 例如,WASI 標準本身就是通過 host 函式讓 WebAssembly 應用可以使用 libc 進行系統呼叫。

WasmEdge 的 TensorFlow、NN、Socket 和影象處理擴充套件都是通過 host 函式實現的。 讓開發者容易使用 host 函式,對 WebAssembly runtime 至關重要。

新的 WasmEdge 外掛系統旨在簡化 host 函式開發和管理。 外掛系統可以讓開發者可以使用統一的 host 函式介面輕鬆建立新的 WasmEdge 擴充套件。 檢視 WasmEdge Book 中的指南:如何使用 WasmEdge 的外掛系統新增 host 函式 ,來試試吧。

目前只支援使用 C++ 編寫 WasmEdge 外掛。 在不久的將來,我們將增加對 Rust 和 C 的支援。

WasmEdge 的使用者現在可以通過在 WasmEdge 資料夾中新增或刪除包含 host 函式的檔案來啟用或禁用 WasmEdge 擴充套件。 外掛系統讓使用者在未來可以輕鬆、安全地管理大量開發者貢獻的 WasmEdge 擴充套件。

例如, WasmEdge 團隊實現了 wasmedge_process 擴充套件作為外掛。wasmedge_process 允許 WebAssembly 程式呼叫作業系統命令。接下來的幾周,我們會把 WasmEdge 的現有擴充套件移植到新的外掛格式。 同時,也歡迎你為 WasmEdge 貢獻基於 host 函式的擴充套件。

Wasi-socket 提升

WasmEdge networking sockets 是 non-blocking 和高效能的。 WasmEdge 是目前唯一可以執行 Web 服務應用程式的 WebAssembly runtime。 許多開發者嘗試建立和部署基於 WasmEdge 的 Web 服務或客戶端。 在此版本中,我們繼續改進了 WasmEdge socket API。

  • IPV4 和 IPV6 模式
  • UDP 函式:send_toresv_from
  • DNS 名稱查詢
  • 檢查 socket 選項列舉的有效值
  • 修正:MacOS 上的 wasi-socket
  • 修正:用同一個 fd 呼叫 poll_oneoff 兩次和在 socket 上呼叫 fd_close 時出錯。
  • ::getaddrinfo 的以零結尾的字串。

展望未來,我們將提供相容 wasm 的 Rust TLS 實現 ,從而支援 HTTPS在 WasmEdge 中建立 Tokio 非同步 runtime

C API 提升

C API 是 WasmEdge 其他語言 API 的基礎,例如 WasmEdge Rust API 和 WasmEdge Go API。 此版本改進了 WasmEdge C API。

  • WasmEdge_ImportObjectContext 合併到 WasmEdge_ModuleInstanceContext 中。
  • 使用指向 WasmEdge_FunctionInstanceContext 的指標而不是 FuncRef 值型別中的索引。
  • WasmEdge_StoreContext 的函式移至 WasmEdge_ModuleInstanceContext
  • 更新了 WasmEdge_VMContext API。

此新版本也帶來新的 C APIGo API 文件。 對於想使用更新的 C 和 Go API 的開發者來說,請參考 WasmEdge Book

標準 Wasm 擴充套件

WasmEdge 發展勢頭迅猛,完全符合了 WebAssembly 標準,並支援所有強制性和可選的 WebAssembly 規範。 從 0.10.0 版開始,WasmEdge 支援Tail Callextended-const提案。

其他特性及漏洞修復

除了上述特性外,還有一些特性需要注意。

  • 相容 LLVM 14,提高了效能。
  • WasmEdge_VMContextWasmEdge_ConfigureContextWasmEdge_ModuleInstanceContextWasmEdge_StoreContext APIs 中的執行緒安全。
  • AOT 模式下的 gas 限制,允許在 WasmEdge 中精確計量應用程式。
  • 新的單元測試。

要了解有關 WasmEdge 0.10.0 版本的更多資訊,請檢視 changelog! 加入我們吧!

最後,感謝我們的貢獻者!

apepkuss, dm4, q82419, cyw3, SAtacker, ibmibmibm, hydai, gusy1234, hangedfish, 0yi0, tpmccallum, MediosZ, hantmc, LFsWang, eat4toast, eee4017, situ2001, meoww-bot, juntao, mfordjody, joyaaa, sunnywa, DarumaDocker, spacewander, luckyJ-nj, mydreamer4134, malc0lm,kgpp34, wenchajun, laingke, cold-Elite, border1px, zhuyaguang, bbcfive, JooKS-me, KerneIErr, zswaaa, zhannicholas, O3OI, KcjinChen, FlyingOnion, swartz-k, Bevisy, deyuhua, zephoon, abhinandanudupa, chinzhiweiblank.