WebAssembly 最初作为“浏览器中的 JavaScript 替代品”诞生。其想法是在浏览器中安全地运行编译自 C/C++ 或 Rust 等语言的高性能应用程序。在浏览器中,WebAssembly 和 JavaScript 并列运行。
随着云中越来越多地使用 WebAssembly ,Wasm 现在是云原生应用程序的通用 runtime。与类似 Docker 的应用程序容器相比,WebAssembly runtime 以更低的资源消耗实现更高的性能。在云上,WebAssembly 常见的应用场景包括:
- 用于 serverless 函数即服务 (FaaS) 的 runtime
- 将用户定义的函数嵌入到 SaaS 应用或数据库
- 用于 service mesh sidecar 应用的 runtime
- 用于 Web 代理的可编程插件
- 边缘设备的沙盒 runtime ,包括软件定义汽车和智能工厂
可是,在这些云原生应用场景中,开发者常常想要使用 JavaScript 来编写商业应用。这意味着我们要在 WebAssembly 内支持JavaScript。此外,我们应该支持在 WebAssembly runtime 中从 JavaScript 调用 C/C++ 或 Rust 函数,充分利用 WebAssembly 的计算效率。用 WasmEdge WebAssembly runtime 能够轻松做到这些。
WasmEdge
WasmEdge 是一个领先的云原生 WebAssembly runtime,由 CNCF(云原生计算基金会) / Linux 基金会托管 。它是当今市场上性能非常好的 WebAssembly runtime。 WasmEdge 支持所有标准的 WebAssembly 扩展以及 Tensorflow 推理、networking、KV 存储和图像处理等的专有扩展。其编译器工具链不仅支持 WebAssembly 语言,如 C/C++、Rust、Swift、Kotlin 和 AssemblyScript,还支持常规 JavaScript。
WasmEdge 应用可以嵌入到 C 程序、 Go 程序、 Rust 程序、 JavaScript 程序,或者操作系统的 CLI 中。WasmEdge 可以由以下工具管理:
- Docker 工具(例如 CRI-O)
- 编排工具 (例如 K8s)
- Serverless 平台 (例如 Vercel、Netlify、 AWS Lambda、