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


【源创会预告】1024 程序员节(的前两天),相约开源PHP办公室,我们一起聊 AI!>>>

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模块,并从中获得性能改进。

延伸阅读:Shopify 开发团队放弃 Ruby,改用 Node 重写 CLI 工具


相關推薦

2023-01-19

Shopify 开发团队去年将原本用 Ruby 编写的 CLI 工具改用 Node 进行了重写,并在近日介绍了这项决定背后的原因和权衡。 Shopify CLI 是 Shopify 平台开发者的重要工具,能够用于构建主题、应用程序和 Hydrogen 开发,让开发者以最佳实

2022-09-22

历经三年开发,Bytecode Alliance(字节码联盟)宣布 WebAssembly runtime —— Wasmtime 1.0 正式发布,并可用于生产环境。 Bytecode Alliance(字节码联盟)由 Mozilla、Fastly、Intel 与 Red Hat 联合成立,是一个推动 WebAssembly 标准化的组织

2022-12-17

Shopify 介绍了他们采用 Rust 进行系统编程的原因,以及未来参与 Rust 的计划。 自成立以来,Shopify 的主要服务器端应用程序编程语言一直是 Ruby。 Ruby 的灵活性和表现力让 Shopify 开发了一个强大的商务系统,可以满足数百万商

2022-12-08

Ruby 3.2.0 RC 1 发布了,3.2.0 预览版引入基于 WASI 的 WebAssembly 支持和正则表达式超时退出机制,3.2.0 RC 1 则引入两项可显著缓解 ReDoS 攻击的改进,以及一些语言功能和性能改进。 改进的正则表达式匹配算法 从 Ruby 3.2 开始,Regexp

2022-10-24

WebAssembly 是一种新兴的网页虚拟机标准,它的设计目标包括:高可移植性、高安全性、高效率(包括载入效率和运行效率)、尽可能小的程序体积。2018 年 WebAssembly 第一个规范草案诞生,2019 年成为 W3C 第四个标准语言。到了 2022

2022-12-26

许多功能和性能改进。具体更新内容如下: 基于 WASI 的 WebAssembly 支持 这是基于 WASI 的 WebAssembly 支持的初始移植。此项特性使得 CRuby 二进制文件可在 Web 浏览器、Serverless Edge 环境和其他 WebAssembly/WASI 嵌入器上使用。目前,此

2023-09-12

网站中的 10 万网站。 [PHP] WordPress 生态 (63%) [Ruby] Shopify Wix Squarespace [PHP] Joomla 生态 (3%) [PHP] Drupal 生态 (2%) [PHP] Adobe Magento (2%) [PHP] PrestaShop (1%) [Python] Google Blogger [PHP] Bitrix (1%) [PHP] OpenCart (1%) [PH

2022-04-09

范等,详情查看 release note。 值得关注的变化 初步支持 WebAssembly 1.4.0 版本提供了对 WebAssembly 支持的 MVP 实现(最小可行性产品),目前只支持将 Crystal 程序编译为 WebAssembly,以及与基于 WASI 的 LibC 连接,尚未支持浏览器。更多

2022-11-16

分别是:Cookpad、Doximity、Fleetio、GitHub、Intercom、Procore、Shopify 和 37signals。 这些公司成员共同向基金会提供了 1,000,000 美元的种子资金;创始核心成员均在基金会董事会中有代表,董事会由 Ruby on Rails 的创建者 David Heinemeier Hansson

2022-10-28

Docker 宣布推出与 WebAssembly 集成 (Docker+Wasm) 的首个技术预览版,并表示公司已加入字节码联盟 (Bytecode Alliance),成为投票成员。 Bytecode Alliance(字节码联盟)由 Mozilla、Fastly、Intel 与 Red Hat 联合成立,是一个推动 WebAssembly 标准

2022-02-22

LibreOffice 团队一直在致力于将其编译到 WebAssembly (WASM),以便在浏览器中执行或可能以可移植的方式在桌面上运行,如 Wasmer 和 Wasmtime。 现如今,一个编译为 WebAssembly 的 LibreOffice 实验版本 (名为 LOWA) 已发布。根据介绍,它

2022-11-02

大竞争对手。 近日 Remix 在官网发布公告,表示已经与 Shopify 达成协议,已被后者收购,但公告中并没有透露此次收购的金额。 Michael Jackson 和 Ryan Florence 在 2020 年共同创立了 Remix,在推出 Remix 框架之前,两人一起围绕 React

2023-06-17

少云资源消耗。GraalVM还支持JavaScript,Python,Ruby,LLVM和WebAssembly等多种语言,并提供了丰富的跨语言互操作能力。 近日,GraalVM官方发布了基于JDK 20的最新版本,带来了一系列的平台更新,编译器优化,本地镜像打包和动态特性

2022-12-10

语言的下一个重要里程碑可能是支持将 Dart 代码编译成 WebAssembly(Wasm),这将使 Flutter Web 应用程序在浏览器中作为原生代码运行成为可能。这项工作需要 W3C 和浏览器厂商的合作,通过 WasmGC 扩展将对垃圾回收语言的支持加入 Wa