Shopify 开源 WebAssembly 工具链 Ruvy

最近,Spotify 开源了Ruvy,一个 WebAssembly 工具链,能够将 Ruby 代码转换为 Wasm 模块。Ruvy 基于ruby.wasm, 用 Rust 实现,提升了性能并简化了 Wasm 模块的执行。

Ruvy 利用了ruby.wasm提供的 Ruby 解释器模块,并使用wasi-vfs (WASI 虚拟文件系统)将其与所有指定的 Ruby 源文件一起打包到单个模块中。wasi-vfs创建了一个虚拟文件系统并嵌入到.wasm二进制文件中,它提供了一种机制,让 Ruby 源文件对ruby.wasm可读,但不允许在 WebAssembly 运行时访问主机文件系统。

在构建 Wasm 模块时预先初始化 Ruby VM,而不是在将其加载到内存中执行时(默认使用ruby.wasm/wasi-vfs),从而提升了性能。Shopify 高级 Wasm 开发人员 Jeff Charles 解释说,这将使运行时性能提升了 20%。

此外,Charles 解释说,Ruvy 使得使用 Cranelift 编译器将 Wasm 编译成本机代码所需的时间缩短至 30%。

Ruvy 的另一个好处是,由于它将所有必需的文件打包在一起,不需要文件路径作为 WASI 参数,因而简化了执行语法。这对于各种边缘计算服务来说特别有用,因为这些服务不允许向主要端点函数提供额外的 WASI 参数。

目前,Ruvy 只提供了源代码发行版,所以你需要自行进行构建。这个过程很简单,原则上,在安装了所有必需的依赖项,包括rustup、wasm32-wasi、cmake和 Rosetta 2(macOS)之后,只需运行make,然后像下面的示例一样执行 Ruvy 来从ruby_examples/hello_world.rb

相关推荐

  1. Shopify 开源 WebAssembly 工具 Ruvy

    2023-12-07 11:58:02       56 阅读
  2. 大话前端:WebAssembly的未来与前端开发

    2023-12-07 11:58:02       57 阅读
  3. WebAssembly在前端开发中的创新与应用

    2023-12-07 11:58:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 11:58:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 11:58:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 11:58:02       87 阅读
  4. Python语言-面向对象

    2023-12-07 11:58:02       96 阅读

热门阅读

  1. Qt对象树与所有权管理

    2023-12-07 11:58:02       63 阅读
  2. 51单片机程序

    2023-12-07 11:58:02       53 阅读
  3. uniapp-获取手机型号

    2023-12-07 11:58:02       60 阅读
  4. 网页产品经理常用的ChatGPT通用提示词模板

    2023-12-07 11:58:02       68 阅读
  5. 27、数据存储&秒表(定时器扫描按键数码管)

    2023-12-07 11:58:02       55 阅读
  6. 【C++】时间time库

    2023-12-07 11:58:02       65 阅读
  7. 【力扣100】2.字母异位词分组

    2023-12-07 11:58:02       66 阅读
  8. openCv颜色矩

    2023-12-07 11:58:02       52 阅读
  9. js实现多个word合并,使用docx-merger库

    2023-12-07 11:58:02       54 阅读