wasm类似于一个跨平台的C语言,但是出于安全因素加了一些限制,比如不能内嵌汇编,不能任意跳转,其抽象程度类似于C语言,所以VM,JIT,AOT都很好做,而且做的也可以很轻量级。 先不考虑web相关的东西。
wasm 的价值主要有以下几点: 它是一个标准,解析起来也比较简单,能跑wasm的设备会比较多,甚至包括大量低端的IOT设备, 分发比较容易,reachability很高。
在虚机出现的早期,很多人都对其应用价值有怀疑,吐槽其性能慢得像蜗牛,装个双系统双启动不就好了。即便若干年后,虚机依然没有找到其真正的应用场景,虚机公司所宣传的软件分发,瘦客户端等等,一直都发展得不温不火。
直到云计算的出现,虚机成为了一项基础措施。硬件级别的支持也不断出现,被诟病很久的性能问题得到大幅改善。WebAssembly技术在我看来也是类似的。它是更高层面上的虚机,以浏览器+Web平台作为其支撑平台,有机会从根本上重新定义所谓的“计算机”的边界。
但是其现在还处于非常早期的阶段,目前也没有找到真正合适的应用场景,所以各家企业对其支持也不强,更谈不上硬件级别的支持。
我们认为 WebAssembly 的潜力在服务端,理由如下:
WASM 从客户端到服务端的迁移,这与Java 和 JavaScript 等前几代技术的发展历程一脉相承。与现有解决方案相比,WASM 在服务端提供了一些重要的价值。
与Java 和 JavaScript 引擎相比,WASM 通过LLVM 工具链支持20多种编程语言,从而让开发人员有选择语言工具的自由,大大提高了生产力。特别是,它支持有影响力的新锐编程语言,例如Rust 。
同时,WASM 可以轻松支持CPU、GPU、 AI 优化芯片和FPGA 等硬件功能。 与Docker之类的容器相比,它为开发人员提供了更抽象的代码执行环境,从而提高了开发效率。
它可以直接部署代码和应用程序,而不必启动操作系统。Wasm 程序不需修改,就可以在不同的操作系统上运行。这与当今的原生微服务架构配合得很好。
WASM 消耗的内存和资源比操作系统级别的容器少得多。其模块化的安全模型允许为每个函数调用配置硬件和操作系统资源,从而在保证安全性的同时,保留了本机的性能。