在第一个版本发布近六个月后, 宣布启动 Wasmer 项目的新版本,这是其第二个主要版本 并且其中的重要更改已达到第二个版本中的内部 API 不兼容的程度,尽管还添加了新功能以增加稳定性、安全性和性能改进。
对于那些不知道的人 Wasmer,你应该知道它开发了一个运行时来执行 WebAssembly 模块 可用于创建可在多个操作系统上运行的通用应用程序,并可以隔离运行不受信任的代码。
通过将应用程序代码编译成低级 WebAssembly 中间件来提供可移植性 它可以在任何操作系统上运行,也可以集成到其他编程语言的程序中。 程序是运行 WebAssembly 伪代码的轻量级容器。
这些 容器不依赖于操作系统,可以包含最初用任何语言编写的代码 编程。 Emscripten Toolkit 可用于编译为 WebAssembly。 要将 WebAssembly 转换为当前平台机器代码,支持连接不同的构建后端(Singlepass、Cranelift、LLVM)和引擎(使用 JIT 或生成机器代码)。
访问控制和与系统的交互是通过 WASI(WebAssembly 系统接口)API 提供的,该 API 提供了用于处理文件、套接字和操作系统提供的其他功能的编程接口。
应用程序与主系统隔离 并且它们只能访问声明的功能(基于对每个资源(文件、目录、套接字、系统调用等)的操作的管理能力的安全机制。
Wasmer 2.0 的主要新奇之处
在提出的这个新版本中,提到 版本号的重大变化 由瓦斯默 与引入内部 API 不兼容更改有关, 根据开发商的说法, 不会影响99%的用户 平台的任何方式。
在主要兼容性更改中,序列化 Wasm 模块的格式也发生了变化(在 Wasmer 1.0 中序列化的模块在 Wasmer 2.0 中将不可用)。
另外, 突出显示了对 SIMD 指令的支持 (单指令,多数据)其中 允许数据操作的并行化. 使用 SIMD 可以显着提高生产力的领域包括机器学习、视频编码和解码、图像处理、物理过程模拟和图形处理。
还 突出显示了对引用类型的支持, 允许 Wasm 模块访问其他模块或基础环境中的信息,并进行了显着的性能优化。 带有浮点数的 LLVM 运行时速度提高了大约 50%。
通过减少需要内核调用的情况,显着加快了函数调用. Cranelift 代码生成器的性能提高了 40%。 减少数据反序列化时间。 为了更准确地反映要点,引擎名称已更改:JIT → Universal、Native → Dylib(动态库)、Object File → StaticLib(静态库)。
最后 如果您有兴趣了解有关Wasmer的更多信息, 你应该知道项目代码是用 Rust 编写的,它有 MIT 许可证,你可以在它的官方网站上查看它的详细信息 以下链接。
安装Wasmer运行时
另一方面,对于那些对能够运行WebAssembly容器感兴趣的人,您只需要在系统上安装Wasmer运行时,而无需外部依赖。
重要的是要提到 Wasmer可以在任何平台上运行 在macOS,Linux和Windows上,唯一的要求是在系统上安装其运行时。
为此,只需在终端中运行以下命令:
curl https://get.wasmer.io -sSfL | sh
然后,他们必须执行所需的文件:
wasmer test.wasm
如果您需要更多有关Wasmer的工作原理或想要了解其源代码,则可以查阅所有内容。 在下面的链接中。