Wasmer 3.0 发布,可在浏览器外运行 WebAssembly

c4dab12e648048d3a73252be62646a57.gif

Wasmer 是支持 WASI 和 Emscripten 的通用 WebAssembly 运行时,提供基于 WebAssembly 的超轻量级容器,专注于支持在任何平台上运行 WASM 代码“从桌面端到云端、以及 IoT 设备,并且能嵌入在任何编程语言中”。

编译 | 刘春霖  责编 | 杨紫艳

出品 | CSDN(ID:CSDNnews)

Wasmer 3.0 已正式发布。

创始人 Syrus Akbary 表示,新版本还能够直接使用“wasmer run”运行 WAPM 包,这是一个新重建的 Rust API,并改进了对 WASI(WebAssembly System Interface)的支持,添加了文件 I/O 和 WebAssembly 的其他功能,以便在浏览器外运行。

Wasmer 3.0 发布,可在浏览器外运行 WebAssembly_第1张图片

Wasmer:从任何语言到任何操作系统

WebAssembly 最初被设计为在 Web 浏览器中,具有接近本机的性能,安全运行以其他语言(如 C/ c++ )编写的代码。Luke Wagner 曾在自己的 Mozilla 博客上发布了一条公告:“我很高兴向大家报告,我们在 Mozilla 开始跟 Chromium、Edge 和 WebKit 的工程师们合作创建新的标准——WebAssembly。它定义了一种可移植,而且尺寸和加载效率更高的格式与执行模型,专供 Web 编译场景使用。”在 W3 的协助下,核心 Wasm 规范已经被列为“推荐”项目,且各大主流浏览器也都为其提供支持。并且多数语言都已经能够支持 Wasm。

在此期间,Wasm 在浏览器之外的优势也被越来越多的人所注意。当前 JavaScript 经常被用来在服务器上运行,如 Edge 函数或 Cloudflare 工作人员,而 Wasm 正好适合这种环境。Wasmer 是在非浏览器上下文中运行 Wasm 的另一种方式,为其他跨平台运行时(如Java)提供了一个潜在的替代方案。

Wasmer 在 GitHub 上将自己描述为“一个快速且安全的WebAssembly 运行,使超轻量级的容器可以在任何地方运行:从桌面到云、边缘和物联网设备。”

在这过程中,已经有很多人认为 Wasm 的未来就在于能在浏览器之外运行它。当前的新标准使 WebAssembly 能够在浏览器之外使用,但是否值得使用呢?

事实上,正是这些特性使它适用于浏览器,并更适用于云。

ef480d7f75d2aaa53dfb4cafb531b23c.png

适用于浏览器,更适用于云

Web 浏览器中的语言运行时有几个必须满足的特征,而这些特征在云计算中也同样非常重要。

  • 安全性:如果要在浏览器中运行不受信任的代码,则需要确保它是独立运行的,云计算也是如此。

  • 跨平台/跨架构:当开发人员为浏览器构建代码时,当然希望编写一次,可以让它在任何地方运行。这也是云计算非常需要的特性。

  • 多语言:WebAssembly 项目的一个大目标,就是将浏览器扩展到多种语言。云开发并不像浏览器开发那样以 JS 为中心,所以多语言支持不是可选的。

  • 速度:没有人愿意等待网页加载,而云计算上也是如此。瞬时加载意味着快速扩展。

  • 效率:浏览器在消耗方面会受到限制,云基础设施也是一样,运行时的效率越高,运营成本就越低。

  • 代码大小:下载的快慢,在很大程度上取决于要下载怎样的对象。较小的二进制文件则意味着下载的会更快,这类对象在云端也能够更快移动。

这一切都代表了 Wasm 在云端的核心优势,比其他云服务更低的运行成本。Wasmer 3.0 有哪些更新后的新内容呢?

073a9b6899805bcc738fdd0bebb5decd.png

Wasmer 3.0 

  1. Wasmer 现在可以通过 wasmer run 直接运行 WAPM 包:开发者可以将任何 wapm.io 上的组件,传递给 Wasmer 命令行工具,像是使用 wasmer run python/python 指令,就可以从该组件注册表下载并且执行 Python 组件,官方表示,这大幅简化了以 Wasmer 执行从 WAPM 运行 WASI 可执行文件的流程。

  2. 更好的 API 和内存管理:Wasmer Rust API 经过重新设计,拥有新的 API 和内存管理方式,开发者现在可以将 Wasm 对象存储在 Store 中,另外,官方还加入 MemoryView,并且添加在浏览器运行的 wasmer-js,提供与本机原生 Wasmer 相同功能。

  3. 简化了引擎的工作方式:在引擎架构上,开发团队也作出改进,Wasmer 之前有不同引擎概念,包括 dylib、universal 等,现在开发团队将其简化为一,使开发者能够更方便地重用程序代码。

  4. 零拷贝反序列化的工件:Wasmer 3.0 也具有零复制反串行化功能,这项更新可明显提高执行性能。

  5. 支持为任何平台创建本机可执行程序:由于 Wasmer 3.0 的 create-exe 子命令获得改进,Wasmer 现在可以将 WebAssembly 文件转换成为本机 Windows、Linux 或 Mac OS 可执行文件,这允许用户不需要安装 Wasmer,就能够发布可执行文件。

Wasmer WASI 实例也越来越成熟了,开发团队修复文件系统中的多个错误,并且使用 WebAssembly 接口重新设计内部类别,方便在未来加入更多新功能。虽然 Wasm 目前还有需要完善的地方,但在未来会更美好。

参考链接:

https://devclass.com/2022/11/25/wasmer-3-0-released/

https://wasmer.io/posts/announcing-wasmer-3.0

https://www.wasm.builders/thomastaylor312/why-webassembly-belongs-outside-the-browser-331a

fb02cc7b30f440c85034f358bf2ec967.gif

☞C++ 首超 Java,与 Python、C 共角逐年度最佳编程语言奖!
☞PyTorch 2.0 发布,一行代码将训练提速 76%!
☞AMD 回击黄仁勋:摩尔定律没死;英国 22% 的技术人员年龄 50 岁或以上;PyTorch 2.0 发布|极客头条

你可能感兴趣的:(wasm)