WebAssembly生态圈有哪些重要专案?Wasm生态地图重点剖析

图片来源: 

CNCF

前篇报导请见:

Wasm是云原生技术的下一步发展,更是GAI实现快速推论关键助力 

WebAssembly如何成为云原生生态圈关键技术

在2023年发表的Wasm生态地图第一版,涵盖了120个专案,包括了四类开发语言和11类相关专案,CNCF估计经济产值达到594亿美元。主要可以分为两大类专案,包括了Dev(应用程式开发)和Ops(应用程式部署)。后续这份生态地图则整合到CNCF官网上的云原生生态地图,成为了其中一类子技术地图。

图片来源/CNCF

在应用程式开发类Wasm相关专案上,包括了四种不同Wasm支援型态的语言,分别是编译语言、托管类语言、脚本语言、为Wasm优化的新语言,另外开发类专案则可分为Runtime、应用程式框架、边缘和裸机、AI推论、嵌入式功能、工具链等6类专案。

而在应用程式部署的Wasm相关专案上,则可分为调度与管理类专案、托管平台、去中心化平台、除错和可观察性专案、半成品储存等5类Wasm相关专案。

进一步来看可支援Wasm的语言,包括了提供一级支援的编译语言,主要有C、C++、Rust和Zig,这类语言可以直接编译成Wasm二进位档,而托管类语言则Go、Dart、Kotlin、Java、C#和.Net等,则需要搭配具有管理能力(如记忆体垃圾搜集能力)的runtime来执行wasm。可搭配的runtime专案像是WasmEdghe、Wasmtime或浏览器圈熟悉的V8引擎,或像Java与C#则需要把runtime和程式码一起编译才能执行,档案大小会稍大,另外还有脚本语言如JavaScript、Ruby、PHP、Python可以在Wasm环境中执行,编译成Wasm档后,用Wasm的解释器就可以执行。而Moonbit和Grain则是两个正在发展,以Wasm优化为目标而诞生的开发语言。

程式码编译成Wasm Bytecode之后,需要建立Wasm执行环境,这也是开发者最关心的Wasm类专案。可用来建立Wasm执行环境的专案,较受到关注的像是WasmEdge、Wasmtime、Wamr、WAVM、Wasmer、wasm3、Lunatic、wazero和V8。其中,WasmEdge适合用于云端、边缘应用和分散式应用,而Wasmtime则是一个独立安装,可支援WASI,只能执行wasm的runtime。

对于想要打造大型云原生应用的开发者,则需要功能更完整的Wasm应用框架上,来提供更多进阶或复杂功能的元件,这类应用框架专案最受到关注的是WasmEdge专案。WasmEdge框架最大特色是提供了许多进阶的POSIX API,也可以搭配支援许多知名Rust和JavaScript框架,像是可搭配node.js使用。另外还两个值得关注的Wasm应用框架,包括了可用来打造Wasm微服务架构的Spin框架,以及可用于开发和管理分散式应用架构的WasmCloud专案。

这两年GenAI爆红后,可以将Wasm建立AI推论环境的专案受到高度关注,较知名的则有Wasmtime、WasmEdge和WAMR。像是WasmEdge专案可支援不少知名AI技术框架,如OpenVINO、Pytorch、Tensorflow、MMGL/Llama2,也受到AI圈高度青睐。