我们与 WebAssembly 联合创建者和其他行业专家探讨了其采用状态、Java 用例、WASI 的重要性等。
译自 WebAssembly Adoption: Is Slow and Steady Winning the Race?,作者 Richard Gall。
我们目前处于 WebAssembly 采用阶段?十八个月前,The New Stack 发布了一篇文章,询问是什么阻碍了 Wasm;就在上个月,51% 的 The New Stack 民意调查受访者表示,他们仍然没有使用 WebAssembly 的个人经验。两个月前,我们的另一项民意调查 发现,虽然 23% 的人在工作中使用过 WebAssembly,但 42% 的人表示,虽然他们不使用 WebAssembly,但计划在它成熟时使用。
对于一项已经存在七年的技术来说——在软件行业中这是一段相当长的时间——如此多的人仍然在等待开始使用它,这很奇怪。
那么,发生了什么事?WebAssembly 是否陷入停滞不前的状态,注定永远处于青春期?还是仅仅是一个期望和观点的问题,是我们所有人学习标准炒作周期过程的症状。
“采用率很低,但仍呈缓慢而稳定的上升趋势,”
Suborbital 的工程总监 Oscar Spencer 告诉 The New Stack。Oscar 也是 Grain 编程语言 的合著者,并为上述文章接受了 The New Stack 的采访。在文章中,他表达了对 AssemblyScript 项目撤销对 WASI(WebAssembly 系统接口)的支持感到失望,这被广泛认为不利于采用,并且会导致 Wasm 生态系统进一步碎片化。
然而,Spencer 现在确信 WebAssembly 已经克服了 2022 年的问题。“工具正在慢慢变得更好,开发人员的信心也在慢慢建立,”他说。
在某种程度上,Spencer 在 2022 年预测的碎片化 已经 成为现实——但它不是一个挑战,而是可以说 WebAssembly 的优势之一。
WebAssembly 的联合创始人之一 Ben Titzer 提出这一观点。“看到它被如此多不同的人在如此多的上下文中使用,真是太棒了,”他说。“我曾预计采用轨迹会更加集中……实际上,它通过口碑和独立实验传播了很多。”
Dylibso 的联合创始人兼首席执行官 Steve Manuel 是一家构建工具以帮助团队利用 Wasm 的软件公司,他说“我们仍处于早期阶段”。他认为当前的现状主要是“系统工程师和编译器开发人员致力于针对 Wasm”。然而,他将“大公司的重要实施”——比如 Shopify,它为其 Functions 产品使用了 Wasm——视为“即将迎来采用浪潮”的标志。
“现在,每个 Shopify 应用程序开发人员都在重新调整工具以使用这个新产品,”他补充说。“无论他们是否知道 [他们] 都在将 WebAssembly 模块部署到 Shopify,伪装成平台上的应用程序。”
Titzer 说,除了惊讶于该项目并没有真正受到中央管理的推动之外,他还惊讶于“现有语言针对它的渐进性”。
“虽然 C/C++ 和 Rust 显然很早就进入生态系统,但其他语言似乎慢慢地‘试水’,首先提供有限的支持,然后随着使用量的增加逐渐投入更多。”
作为一家专门开发工具来帮助工程师利用 WebAssembly 的公司的创始人,Manuel 非常适合跟踪和关注特定的采用趋势。“一个有趣的增长领域是采用用 Java 编写的业务关键型企业应用程序。”他说。这听起来可能令人惊讶,但他解释说,“许多经历过 Java 早期浪潮的人基本上将 Wasm 视为 JVM 2.0。”实际上,这意味着“Wasm 被嵌入到 Java 应用程序中,主要使用 Chicory 运行时,主要由 Dylibso 和 Red Hat 为 Java 用户构建。”
Manuel 看到 WebAssembly 取得成功的另一个领域是帮助开发人员“将插件系统整合到软件应用程序中”。换句话说,“使最终用户能够使用程序(插件)编写软件的自定义,该程序编译为 WebAssembly。”
一种被吹捧为特别适合 Wasm 的用例是无服务器。去年,一位行业分析师告诉 The New Stack,他认为 WebAssembly 有潜力解决供应商锁定问题,这是无服务器的主要弱点之一。同时,我们的分析表明,Scott Logic 的 2023 年 WebAssembly 状态报告 发现无服务器 WebAssembly 的用例正在下降,从 2022 年的 36% 受访者下降到 2023 年的 13%(可能是因为较新的调查问题区分了后端服务和其他无服务器产品,例如以供应商为中心的函数即服务)。
Manuel 认为这个领域存在一些挑战。
“采用周期可能需要更长的时间,因为团队在最近可能已经为采用容器和 Kubernetes 而重新调整和重新学习技能后,被迫再次进行调整和学习,”他说。“有人在努力以更简化的方式将 Wasm 引入 Kubernetes,但这些都是最近才有的。”
Wasm 最终几乎可以应用于任何领域。事实上,Manuel 指出,他相信它将在 LLM 的未来 和人工智能中发挥作用,因为它能够作为此类工作负载的“安全且可移植的运行时”。
在未来几个月和几年里,有一些关键因素将推动 WebAssembly 的采用。
WASI 无疑很重要。WebAssembly 社区中的人们普遍认为 0.2 版是一个里程碑,它稳定了 WebAssembly 的设计和生态系统的基本部分,为开发人员提供了一种更简单的方法来使用该技术。
“ WASI 预览版 2 是稳定接口的检查点,”Spencer 说。“预览版 1 的不稳定性 [可能] 让您害怕或无法在生产中使用 Wasm,现在已经成为过去。”
Titzer 也承认 WASI 对 WebAssembly 生态系统的重要性。“它代表了一个从一开始就拥有经过深思熟虑的平台的机会,该平台具有出色的安全属性,并且部署广泛。”然而,他指出这并不简单。“设计跨语言和跨平台的高级 API 是软件中‘邪恶问题’的一个示例。WebAssembly 社区必须努力坚持适当的分层,以避免他人陷入的陷阱。”
有趣的是,Titzer 和 Spencer 都认为 WASI 之下更令人兴奋。鉴于他们与 WebAssembly 的关系,这可能并不令人惊讶,但它仍然强调,WebAssembly 的重要性不在于达到一个每个人最终都会理解的平台,而在于它对新排列和不断重新构想的容量。
“核心 WebAssembly——指令集设计——是 WASI 之下的一个层,它将在我们尚未想到的上下文中得到采用,”Titzer 说。与此同时,对于 Spencer 来说,尽管 WASI 可能对开发人员有“直接影响”,但 组件模型——支撑 Wasm 互操作性的架构指令——才是真正有价值的地方:“从长远来看,组件模型带来的便利性将使 Wasm 腾飞。”
在考虑 Wasm 采用时,另一个需要考虑的重要方面是支持与之兼容的新语言。正如 Titzer 所说,这可能是“渐进的”,但 Manuel 指出,在支持 WebAssembly 方面,语言正在赶上 Rust。例如,他指出 Go 最近增加了对 WASI 的支持,并且它“可以编译为 Wasm 以针对几乎任何 Wasm 运行时”,还提到了 Zig 等较新的语言。“Zig 的显式内存管理 […] 非常出色,因为它提供了一个专门针对 Wasm 内存模型调整的非常方便的分配器,”他说。“用 Zig 编写的程序编译为 Wasm 后性能非常好。”
WebAssembly 的一个问题可能是它讲述自己清晰故事的能力。例如,对于 Docker 之类的东西,它很简单:它使在容器内构建和运行系统或应用程序的小组件变得容易。
这并不是说 WebAssembly 没有一个好故事;更确切地说,要讲述一个每个人都理解的故事很棘手。
“WebAssembly 的核心思想的传播既因其当今可以做到的热门新事物而变得更容易,也变得更困难,”Titzer 说。“外部价值故事总是依赖于上下文,因为内部价值向用例的转换是外部价值出现的地方。”
他提供了一些示例:“对于智能合约,故事是‘确定性、可验证的正确性和高效的执行,可从主流语言中定位’……对于嵌入式系统,则是‘奇怪的 CPU 现在看起来几乎相同,并且您无法意外地损坏设备’。”
Manuel 对 Titzer 有着类似的看法:“Wasm 讲述了许多引人注目的故事——既是其弱点,也是其优势。”他认为这可能解释了它为何没有按部就班地发展。“[WebAssembly] 的广泛受众意味着它具有交叉影响,但由于影响目前分散在这些领域,因此它可能是一个缓慢的消耗品。”
换句话说,WebAssembly 的采用并不像我们预期的那样引人注目,因为它被广泛分布,并跨越许多领域和用例。
那么,也许这实际上是一个期望的问题。“我听到很多人谈论 Wasm 是什么或不是什么,但对我来说,Wasm 是一个编译器目标,”Spencer 说。“是的,它是一个具有良好安全性和可移植性特征的编译器目标,但它仍然只是一个编译器目标。用 x86 或 ARM 替换您每次说 WebAssembly 的地方,看看它是否仍然有意义。”
换句话说,当我们谈论 WebAssembly 的采用时,我们期望看到一些东西,而实际上,它的真正价值不一定可见。“作为一项基础技术,Wasm 在幕后被使用通常是不可见的——甚至可能不重要,”Titzer 建议。
考虑到这一点,也许 Wasm 是 主流。例如,Spencer 指出,任何浏览网络的人每天都可能与 WebAssembly 互动。但话又说回来,也许没有:“当我们不再过多地谈论它时,Wasm 就已成为主流,”他补充说。
抛开行业闲聊,我们可能只需要意识到缓慢而稳定地赢得比赛。“正如我告诉 Luke [Wagner,WebAssembly 联合创始人] 的那样,”Titzer 讲述道,“‘接管世界是一个缓慢的过程,就像霉菌在物体上生长一样。成为霉菌。’”