查看原文
其他

2021 年 WebAssembly 发展状况

21CTO 2022-05-25

本文分享本年度 WebAssembly 现状调查之结果。


以下数据和分析来自包括 250 多名受访者于 2021 年 6 月接受调查的结果,对于那些只想快速了解一些数据的人们,以下是调查数据结果:


  • Rust 是最常用和最受欢迎的 WebAssembly 语言;

  • AssemblyScript 是第二受欢迎的 WebAssembly 语言;

  • WebAssembly 预计将对 Web、Serveless和容器化应用程序产生重大影响。

  • 能够更好的调试支持是人们认为最需要关注的领域。


想查看更详细的分析和大量图表,请各位继续阅读。


简介


WebAssembly 是一项相对较新的技术,W3C 于 2018 年发布了最终规范草案。它最初被设想为一种新的运行时(Run time),它具有多语言支持,可在浏览器中提供接近本地的执行速度,并且确实已经实现了这一承诺。


这四年期间最显着的变化可能是这个简单、轻量级和安全的运行时在浏览器之外发现的成功。这些天我看到的关于无服务器、容器化或区块链应用程序的文章多于浏览器应用程序。


关于WebAssembly


首先,我们来探索人们目前用于开发 WebAssembly 的编程语言有哪些。

Rust 占 26%,是最常用的语言,其次是 C++,然后是 AssemblyScript。


Rust 成功背后的原因是什么?它们有两个方面,首先,Rust 是一种非常受开发人员欢迎的语言,连续四年在 StackOverflow 的开发人员调查中获得“最受欢迎”语言的地位。其次,也许在这种情况下更重要的是,从技术角度来看,Rust 目前非常适合 WebAssembly。它不需要垃圾收集,它创建轻量级二进制文件,工具和社区支持都很强。


记得该语言创始人 Michael Gattozzi 在 2017 年写道:

我们准备成为 wasm 的首选语言。

这对 Rust 来说是正确的地方和正确的时间。


第二名是 C++,它通过Emscripten 工具链成为第一种为 WebAssembly 提供支持的语言,它也是游戏开发的热门之选。


查看所有语言的结果,我们可以看到受访者使用 WebAssembly 的频率:


接近 47% 是经常使用的用户。们正在使用的其他语言,少数(每种情况下都小于 2%)表明他们通过 Cheerp 使用了 Kotlin、Elixir 或 C++。


下一个问题是最想使用哪种语言进行 WebAssembly 开发?

一直流行的 Rust 语言在需求排行榜上名列前茅。


与之前的语言使用图表相比,AssemblyScript 超越 C++ 位居第二。对于那些不熟悉AssemblyScript 的人来说,它是一种新的类似 TypeScript 的语言,专为 WebAssembly 设计。


Blazor 名列第三,去年微软发布的 Blazor 有很多令人兴奋的地方,也就是将 WPF 和 Windows 窗体应用程序迁移到浏览器的人们非常具有吸引力。


WebAssembly 应用程序


接下来,我们将探索人们使用 WebAssembly 的目标,以及未来的愿望。


该调查的问题是:你目前使用 WebAssembly 的目的是什么?我们允许人们选择多个选项并加入自己的建议。


从数据图表中看到,大多数人使用 WebAssembly 进行 Web 应用程序开发。在未来的调查中,更具体地探索在Web上使用方式和位置可能是一个好想法。


WebAssembly 仍然是一项相对年轻的技术,人们仍在探索它会在哪些方面产生影响。


下一个:你认为 WebAssembly 将来会在哪些方面产生重大影响?


结果表明,69% 的人认为 WebAssembly 将对未来的 Web 开发会产生非常大的影响。


然而,调查受访者预计 WebAssembly 会在相当广泛的不同应用领域产生重大影响,而 Serverless 领先,56% 的人认为这是一个高影响的应用领域。


WebAssembly 作为通用运行时的重要性,在 docker 联合创始人之一的这条经常被引用的推文得到了最恰当描述:



有意思的是,有相当多的人表示他们不知道 WebAssembly 的未来会对区块链应用程序产生什么影响。WebAssembly 在区块链开发者社区中获得了巨大的吸引力,并且正在制定以太坊 2.0 的路线图。


我想很多人根本不了解区块链。


WebAssembly 功能和需求


WebAssembly 最初是作为最小可行产品 (MVP) 发布的,其初始功能集侧重于 C++ 用例和预先存在的 C++ 代码库的迁移。从那时起,添加了新的运行时功能,包括可变全局变量和多值返回。


下一个问题:你对 WebAssembly 未来的哪些新功能感兴趣?


WASM的线程环境出现在第一个选项。


提案增加了对原子内存操作和共享线性内存的支持,允许 WebAssembly 模块在线程执行环境中运行。值得注意的是,该提案不包括允许 WebAssembly 模块直接生成线程的操作。



接下来是 WebAssembly 系统接口 (WASI),这是一种由字节码联盟领导的规范,它增加了各种浏览器外的功能。其次是接口类型,该提议使用不同语言编写的模块更容易相互直接通信。


我们看到垃圾收集在人们的优先级列表中如此低,这让人有点惊讶。C# 和 AssemblyScript 等语言必须将自己的垃圾收集器作为 WebAssembly 模块的一部分提供。该提议打开了与垃圾收集器集成的大门,从而产生更小、更高效的功能模块。


下一个问题,你认为 WebAssembly 未来取得成功最需要什么?

人们的首要任务是更好的编码和调试支持。这里的工具确实缺乏一致性,有些使用源映射,有些使用DWARF。在大多数情况下,通过断点、堆栈跟踪和检查局部变量进行调试是不可能的。


另一方面,语言支持不是优先事项,大多数语言都可以某种形式编译为 WebAssembly。我们不需要添加任何新的功能,我们只需要改进已经支持的开发者的体验就可以……说起来容易做起来难。


人数统计


最后,调查包括几个概述人口统计数据的问题。我将在这里简要分享这些结果。


受访者被要求声明他们在 JavaScript、后端和 WebAssembly 开发方面的技能水平:

他们还被问及他们使用或了解 WebAssembly 的时间。看来大多数人对这项技术都比较陌生:


该调查收到了来自 196 个国家的结果,其中最多的是美国(21.8%),其次是中国(9.1%)和德国(9.1%)。


编辑:万能的大雄

来源:21CTO


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存