WebAssembly 2022 現狀調查

語言: CN / TW / HK

本文作者:Colin Eberhardt

原文鏈接:https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html

本文的翻譯與傳播已獲得原作者 Colin 的授權。

2022年 WebAssembly 狀態調查已經結束,結果新鮮出爐——有些很有趣的發現!

去年 WebAssembly 經歷了相當大的轉變,雖然 Wasm 語言格局變化緩慢,但是人們使用 WebAssembly 的目的發生了顯著變化。Wasm 在 Serverless、容器化和作為插件技術等方面的應用有了很大的飛躍,WebAssembly 系統接口 (WASI)變得越來越重要。

想知道更多?讓我們來看看細節。

要點

我去年也做了同樣的問卷調查,我們瞭解到:

  • Rust 是人們最常用和最需要的 WebAssembly 語言。
  • AssemblyScript 是第二受歡迎的 WebAssembly 語言。
  • WebAssembly 預計將對 Web、Serverless、遊戲和容器化應用程序產生重大影響。
  • 更好的 debug 支持是人們認為最需要關注的領域。

那麼,今年有哪些新的結論呢?在討論細節之前,我們先看看關鍵點:

  • Rust 的使用量和受歡迎度持續攀升。
  • Python 的使用量大幅增長。
  • JavaScript 已經成為一種可行的 WebAssembly 語言。
  • 對於 Blazor 而言,其過去一年有長足發展,使用率和受歡迎度都高度提升。
  • Wasmtime 是使用最廣泛的 runtime。
  • WebAssembly 在 Serverless、容器化和作為插件主機方面的使用量顯著增加。
  • 調查受訪者更頻繁地使用 WebAssembly。
  • 非瀏覽器 API 是 WebAssembly 最需要的。

對於 WebAssembly 來説,這是相當不錯的一年!接下來,我們將更詳細地研究調查結果,並探討其中的一些變化。該問卷直接沿用了去年的許多問題,方便直接與去年做對比。去年共有250名受訪者,今年增加到了299名。

語言

第一個問題為了探索人們正在使用哪些開發語言,詢問了受訪者您正使用哪些語言,或者是否嘗試過使用 WebAssembly 開發?

Rust 再次名列第一,45%的人表示他們經常或有時使用它。WebAssembly 和 Rust 確實有相當密切的關係,大多數 WebAssembly runtime 都是用 Rust 編寫的,基於 wasm 的各種平台也是如此。它還擁有一些最好的工具,所以排第一併不令人意外。

今年,JavaScript 排在第二位。去年我沒有添加 JavaScript 選項(也沒有人通過“其他”選項表示他們使用它),這是和去年相比的一個重大變化!

JavaScript 無法編譯為 WebAssembly,那麼它是如何工作的呢?對於這一挑戰,有一個巧妙的解決方法:可以將 JavaScript 引擎編譯為 WebAssembly,然後用它來執行代碼,而不是將 JS 編譯為 Wasm。這實際上比想象的要實用得多。

今年,67%的受訪者表示經常使用 WebAssembly,這比去年的47%有很大的提升。

下圖顯示了與去年相比,使用給定語言“經常”或“有時”的受訪者百分比:

該圖表明 Rust 的使用量穩步攀升,但上升最多的是 Blazor 和 Python。Pyscript ,一個交互式在線遊樂場的推出,無疑對 Python 意義重大。AssemblyScript 的使用量下降幅度最大,這讓我有點吃驚。我想知道是否有些受訪者錯誤地將 AssemblyScript 認定為 JavaScript?

下一個問題詢問的是人們最想使用哪種語言進行 WebAssembly 開發:

毫無意外,Rust 名列前茅。在過去的六年裏,它在 StackOverflow 調查中一直穩居“最受歡迎”語言的榜首。

讓我們看看它與去年相比如何:

Rust 的受歡迎程度略有上升,但上升最快的是 Blazor,Go 緊隨其後。

對於 Blazor 來説,這是非常不錯的一年!

WebAssembly 應用

接下來,我們來看看大家使用 WebAssembly 的目的,以及他們未來的期望。

調查詢問您目前使用 WebAssembly 的目的是什麼?可多選,或者輸入自己建議的其它答案。以下是所有回覆,其中“其他”包括只有一個回覆的所有內容:

大多數人都在使用 WebAssembly 進行 Web 開發。但是,如果我們將今年的結果與去年的結果進行比較,就會發現一些很大的變化:

WebAssembly 在 Serverless 和容器化方面的使用有所提升。如果你想知道為什麼 WebAssembly 對這些應用程序來説是一項如此重要的技術,我推薦這篇文章《請關注 WebAssembly》 ,或這篇《當 WebAssembly 取代 Docker 之時》,它們涵蓋了今年在 Kubecon 上的各種討論。

最大的增長是 WebAssembly 作為插件環境的應用。它是在安全環境中託管不受信任代碼的絕佳 runtime。Lapce 代碼編輯器就是一個很好的例子。

WebAssembly 在遊戲中的使用下降了,但我不清楚其原因是什麼🤷

Runtimes

考慮到基於非瀏覽器的 WebAssembly 使用情況如何發展的問題,今年我提出了一個關於 runtime 的新問題——你聽説過或使用過哪些 runtimes?

來自字節碼聯盟的 wasmtime,得到了最廣泛的使用;其次為 wasmer,它由一個初創公司所開發。

特性

WebAssembly 遵循由 W3C 管理的公共提案流程。該調查囊括了在第 2 階段(可用規範)和第 3 階段(實現)的更成熟的特性提案,並詢問了大家對哪幾項最感興趣。

添加了 shared linear memory 和 atomics 的線程提案名列前茅,其次是對 exception 和垃圾收集的支持。

WebAssembly 系統接口(WASI),為 WebAssembly 添加了進一步的系統級集成 API,正變得越來越重要,所以問卷還詢問了人們對哪些 WASI 提案感興趣:

I/O 類型排在首位,其次是 socket、文件系統和本機線程。值得注意的是,如果您將此圖表與前面 WebAssembly 提案的圖表相比較,那麼可以發現整體而言人們對 WASI 的興趣要大得多。

最後,問到受訪者你認為 WebAssembly 在未來取得成功最需要的是什麼?

non-brower API 名列前茅,這進一步凸顯了人們對 WASI 的興趣以及 WASI 的重要性。

人口分佈

最後,該調查包括了一些人口分佈的問題。這裏簡要分享下數據。

受訪者需勾選他們的 JavaScript、後端和 WebAssembly 開發技術水平:

有趣的是,去年的調查受訪者顯示最精通 JavaScript 和前端開發,今年的調查則吸引了具有更高後端能力的開發者,這很可能反映了 WebAssembly 焦點的不斷變化。

他們還被問及使用 WebAssembly 或瞭解 WebAssembly 的時間。

今年的受訪者顯然更有經驗,與上一次的“<1 年”相比,大部分人回答是有 2 年左右的經驗。

結論

感謝所有參與本次調查的人。如果您想進行自己的分析,可以下載本 CSV 文件(https://wasmweekly.news/assets/state-of-webassembly-2022.csv)。如果另有發現任何有趣的結果,請務必和大家分享。

正如我在引言中所提及,對於 WebAssembly 來説,今年是相當重要的一年。雖然之前就確定 WebAssembly 正在向通用 runtime 轉變,但未預料到變化如此顯著。


本文分享自微信公眾號 - WebAssembly 中文社區(webassemblywasm)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閲讀的你也加入,一起分享。