Shopify 开源 Ruvy,将 Ruby 代码转换成 WebAssembly

|----|-----------------------------------------------------------------------------------------------|
| 导读 | Shopify 最近开源了一个名为 Ruvy 的项目。Ruvy 是一个工具链,它接受 Ruby 代码作为输入,并创建一个将执行该 Ruby 代码的 WebAssembly 模块。 |

目前已有从 Ruby 代码创建 Wasm 模块的项目,最常见的是 ruby.wasm,Ruvy 也是基于 ruby.wasm 构建,并提供了一些特定的优势。

官方称创建 Ruvy 旨在利用预初始化 Ruby 虚拟机和 Ruby 脚本包含的 Ruby 文件带来的性能改进。此外,Ruvy 不需要在运行时提供 WASI 参数,从而简化了 Wasm 模块的执行。

WASI 是一组导入的 Wasm 函数的标准化集合,旨在为 Wasm 模块提供一个标准接口,以实现许多典型语言标准库中存在的系统调用。

目前,Ruvy 并未随预编译的二进制文件一起发布,因此需要安装它的构建依赖项,然后编译 Ruvy 才能使用。

安装这些依赖项的详细信息请查看 README。

构建 Ruvy 后,可以运行以下命令来打印出 Hello World。

复制代码
$ cargo run -- package=cli ruby_examples / hello_world.rb - o index.wasm 
$ wasmtime index.wasm 
Hello world

上述命令将构建并执行 CLI,首先获取 ruby_examples/hello_world.rb 的内容,并创建一个名为 index.wasm 的 Wasm 模块。当调用 index.wasm 的导出_start 的函数时,将执行 puts "Hello world"。

如果要使用额外的 Ruby 文件,可以运行以下命令:

复制代码
$ cargo run -- package=cli -- -- preload=prelude / ruby_examples / use_preludes_and_stdin.rb 
$ echo "this is my input" | wasmtime index.wasm 
{:discount_input=>"this is my input", :value=>100.0}

这就是 Shopify 新推出 Ruvy 项目的简要介绍。它为 Ruby 开发者提供了一个新工具,使得他们可以更方便地将 Ruby 代码转换为 WebAssembly 模块,并从中获得性能改进。

相关推荐
狗哥哥1 天前
企业级 Vue 3 基础数据管理方案:从混乱到统一
前端
前端涂涂1 天前
哈希指针,什么是区块链,genesis blcok,most recent block,tamper-evident log,merkle tree,binar
前端
尽兴-1 天前
问题记录:数据库字段 `CHAR(n)` 导致前端返回值带空格的排查与修复
前端·数据库·mysql·oracle·达梦·varchar·char
DsirNg1 天前
Vue 3:我在真实项目中如何用事件委托
前端·javascript·vue.js
克喵的水银蛇1 天前
Flutter 适配实战:屏幕适配 + 暗黑模式 + 多语言
前端·javascript·flutter
前端涂涂1 天前
第2讲:BTC-密码学原理 北大肖臻老师客堂笔记
前端
能不能送我一朵小红花1 天前
基于uniapp的PDA手持设备红外扫码方案
前端·uni-app
风止何安啊1 天前
别被 JS 骗了!终极指南:JS 类型转换真相大揭秘
前端·javascript·面试
拉不动的猪1 天前
深入理解 Vue keep-alive:缓存本质、触发条件与生命周期对比
前端·javascript·vue.js
|晴 天|1 天前
WebAssembly:为前端插上性能的翅膀
前端·wasm