最新的一份《The State of WebAssembly 2022》调查报告已出炉,“对于 WebAssembly 来说,这是相当不错的一年”。报告的一些重点内容包括:
- Rust 的使用率和渴望度持续攀升
- Python 的使用量有了很大的提升
- JavaScript 已经成为一种可行的 WebAssembly 语言
- Blazor 的使用量和渴望度也都大幅攀升
- Wasmtime 是使用最广泛的运行时
- WebAssembly 在无服务器、容器化和作为插件主机方面的使用大幅攀升
- 受访者表示其已经在更频繁地使用 WebAssembly
- Non-browser API 是 WebAssembly 最需要的
具体表现为,当被问及 “使用的语言,或者是否尝试过使用 WebAssembly 开发” 时,45% 的受访者表示经常或有时使用 Rust;在去年的这一调查中,Rust 名列榜首。报告指出,WebAssembly 和 Rust 确实有相当密切的关系,大多数 WebAssembly 运行时都是用 Rust 编写的,基于 wasm 的各种平台也是如此。它还拥有一些最好的工具,所以这个结果并不令人意外。
今年排在第二位的是 JavaScript,去年是 AssemblyScript。但去年的调查中并未提供 JavaScript 选项,并且也没有人补充表示正在使用。虽然 JavaScript 不能被编译成 WebAssembly,但有一个解决方法是:你可以不把 JS 编译成 Wasm,而是把 JavaScript 引擎编译成 WebAssembly,然后用它来执行你的代码。“这实际上比你想象的要实用得多。”
67% 的受访者表示经常使用 WebAssembly,相较去年的 47% 有了很大的提升。
如上图所示,Rust 的使用量稳步攀升,但攀升者最猛的是 Blazor 和 Python;AssemblyScript 的使用量下降幅度最大。研究人员怀疑,是否存在有些受访者错误地将 AssemblyScript 识别成了 JavaScript?
意料之中的是,受访者表示他们最想用来进行 WebAssembly 开发的语言也是 Rust。与去年相比,Rust 的受欢迎程度略有上升,但最突出的还是 Blazor,Go 紧随其后。总的来说,Blazor 在 2022 年势头不错。
大多数人使用 WebAssembly 进行 Web 开发,其次是无服务。将今年的结果与去年的结果进行比较后发现:WebAssembly 在无服务器和容器化中的使用出现了上涨,但最大的增长是使用 WebAssembly 作为插件环境;WebAssembly 在游戏中的使用出现了下降。
受访者最感兴趣的特性分别是 Threads、Exceptions 和 Garbage Collection,最感兴趣的 WASI(WebAssembly System Interface)提案分别是 I/O types、Sockets、Filesystem 和 Native threads。且报告指出,Non-browser API 是 WebAssembly 在未来取得成功最需要的因素。“这进一步凸显了人们对 WASI 的兴趣和重要性。”
更多详情可查看完整报告。