Wasmer Inc (https://wasmer.io/)近日发布 Wasmer 3.0,这是 WebAssembly (Wasm) 这款开源运行时的最新版本。
Wasmer 新版本可将 Wasm 编译为适用于 Windows、Linux 或 macOS 的本机可执行文件——而且不需要再有任何运行时依赖。
它的创始人 Syrus Akbary 这样表示,新版本还能够直接使用“wasmer run”运行 WAPM(WebAssembly 包管理器)包,这是一款新建的 Rust API,它改进了对 WASI(WebAssembly 系统接口)的支持,它添加了文件 I/ O 和 WebAssembly 的新功能,用于在浏览器外运行。
Wasmer 最初的设计是可以用任何语言和任何操作系统,通过 Wasm WebAssembly 在 Web 浏览器中安全地运行以其它语言(如 C/C++)编写的代码方法,并且让它有接近本地的性能。
我们拿 JavaScript 运行时来说,它现在也经常在服务器上使用,比如在 Edge 函数或 Cloudflare worker 中,而 Wasm 非常适合这种情况。Wasmer 是在非浏览器上下文中运行 Wasm 的另一种形式,这为其它跨平台运行时(例如 Java)提供了潜在的替代方案。
Wasmer 在自己的 GitHub (https://github.com/wasmerio/wasmer)上将自己的这款产品描述为“一个快速且安全的 WebAssembly 运行时,它使用超轻量级容器,可以在任何地方运行:从桌面到云、边缘与物联网设备。”
Akbary 今年 8 月的博客指出,create-exe Wasmer 命令使用一些胶水语言编译 Wasm,然后:“我们使用 C 编译器/链接器文件将所有内容连接在一起”,结果就会成一个独立的可执行文件,“一个完全沙盒化且运行时开销非常小的二进制文件。”
Akbary 提到的适用 create-exe 的语言,包括 Rust、Go、C/C++ 和 C#,也可以编译为和这些语言相同的平台上运行,并且有比原生语言更好的性能。
可以将你喜欢的语言转为WebAssembly,并转换为不同平台的应用程序
那么,Wasmer 会带来优势吗?Akbary 表示,自动支持新芯片组是一个优势,“因此当新芯片和操作系统出现时,我们无需再担心重新编译自己的软件。” 此外,Wasmer 的另一个优势是 Wasmer 沙箱的高度安全性。
尽管有着这样那样优点和说法,但社区中仍有一些怀疑的声音:
有人提出性能与本机代码是一个问题。“总的来说,我发现它要比本地慢 2-3 倍,至少对于我的程序来说是这样的” ,Hacker News 上的一位开发者这样说。
还有一些爱好者则非常积极,他们觉得能够用一种语言编写的应用程序调用其它一种语言编写的库的想法太有吸引力了:“通常情况下,人们会根据用这些语言编写的库的可用性来选择语言。而非浏览器 WASM 的目标是摆脱这种情况,并最大限度地减少跨语言交流的摩擦,”这位开发人员兴奋地说。
也许,最大的吸引力在于 Wasm 沙盒减少服务器上容器需求的潜力,与虚拟机相比容器是轻量级的,虽然开销稍微大一点。
安装Wasmer,只需要以下一条命令:
curl https://get.wasmer.io -sSfL | sh
祝各位顺利!
作者:洛逸
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。