用于构建基于 WebAssembly 的应用程序的工具包 Wasmer 2.0 可用

Wasmer 项目发布了第二个主要版本,开发了一个用于执行 WebAssembly 模块的运行时,该模块可用于创建可在不同操作系统上运行的通用应用程序,以及隔离运行不受信任的代码。 该项目代码是用 Rust 编写的,并根据 MIT 许可证分发。

可移植性是通过将应用程序代码编译为低级 WebAssembly 中间代码来实现的,这些代码可以在任何操作系统上运行或嵌入到其他编程语言的程序中。 这些程序是运行 WebAssembly 伪代码的轻量级容器。 这些容器不依赖于操作系统,并且可以包含最初用任何编程语言编写的代码。 Emscripten 工具包可用于编译为 WebAssembly。 为了将 WebAssembly 翻译为当前平台的机器代码,它支持连接各种编译后端(Singlepass、Cranelift、LLVM)和引擎(使用 JIT 或机器代码生成)。

使用 WASI(WebAssembly 系统接口)API 提供访问控制和与系统的交互,该 API 提供用于处理文件、套接字和操作系统提供的其他功能的编程接口。 应用程序在沙箱环境中与主系统隔离,并且只能访问声明的功能(基于功能管理的安全机制 - 针对每个资源(文件、目录、套接字、系统调用等)的操作、申请必须被赋予适当的权力)。

要启动 WebAssembly 容器,只需在运行时系统中安装 Wasmer,该系统没有外部依赖项(“curl https://get.wasmer.io -sSfL | sh”),然后运行必要的文件(“wasmer test.wasm”) )。 程序以常规 WebAssembly 模块的形式分发,可以使用 WAPM 包管理器进行管理。 Wasmer 还作为一个库提供,可用于将 WebAssembly 代码嵌入 Rust、C/C++、C#、D、Python、JavaScript、Go、PHP、Ruby、Elixir 和 Java 程序。

该平台允许您实现接近本机程序集的应用程序执行性能。 使用 WebAssembly 模块的本机对象引擎,您可以生成机器代码(“wasmercompile-native”以生成预编译的 .so、.dylib 和 .dll 对象文件),这需要最少的运行时间来运行,但保留所有沙箱隔离特征。 可以使用内置 Wasmer 提供预编译程序。 Rust API 和 Wasm-C-API 用于创建附加组件和扩展。

Wasmer 版本号的重大变化与内部 API 引入不兼容的更改有关,据开发人员称,这不会影响 99% 的平台用户。 在破坏兼容性的更改中,还有序列化 Wasm 模块格式的更改(在 Wasmer 1.0 中序列化的模块将无法在 Wasmer 2.0 中使用)。 其他变化:

  • 支持SIMD(单指令、多数据)指令,允许数据操作的并行化。 使用 SIMD 可以显着提高性能的领域包括机器学习、视频编码和解码、图像处理、物理过程模拟和图形操作。
  • 支持引用类型,允许 Wasm 模块访问其他模块或底层环境中的信息。
  • 已进行重大性能优化。 带有浮点数的 LLVM 运行时速度提高了大约 50%。 通过减少需要访问内核的情况,函数调用的速度显着加快。 Cranelift 代码生成器性能提高了 40%。 减少数据反序列化时间。
    用于构建基于 WebAssembly 的应用程序的工具包 Wasmer 2.0 可用
    用于构建基于 WebAssembly 的应用程序的工具包 Wasmer 2.0 可用
  • 为了更准确地反映本质,引擎的名称已更改:JIT → Universal、Native → Dylib(动态库)、Object File → StaticLib(静态库)。

来源: opennet.ru

添加评论