写点什么

Shopify 开源 WebAssembly 工具链 Ruvy

  • 2023-11-22
    北京
  • 本文字数:774 字

    阅读完需:约 3 分钟

大小:388.70K时长:02:12
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 只提供了源代码发行版,所以你需要自行进行构建。这个过程很简单,原则上,在安装了所有必需的依赖项,包括rustupwasm32-wasicmakeRosetta 2(macOS)之后,只需运行make,然后像下面的示例一样执行 Ruvy 来从ruby_examples/hello_world.rb创建index.wasm模块:


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


如上所述,你可以使用--preload命令行标志来指定包含 Ruby 文件的目录,这些文件应该会被传给 Ruby VM。


Charles 强调,Ruvy 目前只能运行简单的 Ruby 程序。具体来说,它还不能requireRuby gem,也就是说大部分 Ruby 标准库仍然不可用。未来,他们计划支持从标准库和非本地第三方 gem 中加载代码以消除这一限制。


原文链接

https://www.infoq.com/news/2023/11/shopify-ruvy-ruby-wasm/

2023-11-22 10:074185

评论

发布
暂无评论
发现更多内容

对接HiveMetaStore,拥抱开源大数据

华为云开发者联盟

大数据 华为云 华为云开发者联盟 华为云GaussDB(DWS) 企业号2024年4月PK榜

5月10-11日·大连线下·CSM认证【提前报名特惠】“全球金牌课程”CST导师亲授

ShineScrum

CSM CSM认证 cst 线下授课

西安站开营!AI 编码助手通义灵码帮大学生“整活儿”

阿里巴巴云原生

阿里云 云原生 通义灵码

流水线运行出错排查难?AI 来帮你

阿里云云效

阿里云 云原生 云效

GaussDB SQL查询语句执行过程解析

华为云开发者联盟

数据库 华为云 华为云GaussDB 华为云开发者联盟 企业号2024年4月PK榜

成都算筹科技有限公司

科技热闻

HCDG北京站精彩回顾 | 鸿蒙千帆起,开启万物互联新纪元

华为云开发者联盟

鸿蒙 物联网 华为云 华为云开发者联盟 企业号2024年4月PK榜

加密世界:NFT、DeFi和游戏的热点新闻概览

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

5G chip showdown: QCN6274 vs QCN6224, who is the real 5G king?

wifi6-yiyi

5G wifi iiot

拥抱AI技术:5月18-19日 全球金牌CSM认证课程 · Jim老师引导讨论AI & Agility话题

ShineScrum

IAM打通数字世界身份信息通道

芯盾时代

网络安全 iam 统一身份管理平台 最小权限管理

风险防不胜防?看YashanDB如何守护你的数据库安全(上篇)

YashanDB

选择合适的监控观测平台,为业务出海合规建设减负

观测云

监控 出海

京东广告研发 —— 京东推荐广告排序机制演化

京东科技开发者

软件测试学习笔记丨Selenium执行JavaScript脚本

测试人

JavaScript 软件测试 自动化测试 测试开发

孙中亮:北斗三十周年,看北斗芯片高质量发展历程和方向

江湖老铁

指标+AI:迈向智能化,让指标应用更高效

袋鼠云数栈

指标 指标管理 指标平台 指标开发 指标+ai

全国独家线下面授 | 杭州·大规模敏捷LeSS认证6月13-15日开班

ShineScrum

less 大规模敏捷LeSS 吕毅老师

Memecoin再迎爆发:是本轮牛市大反弹的开始吗?

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

西安站开营!AI 编码助手通义灵码帮大学生“整活儿”

阿里云云效

阿里云 云原生 通义灵码

离开工位老是忘记锁屏?试着让电脑自动完成这事吧!

京东科技开发者

高可用 - 隔离原则

京东科技开发者

Shopify开源WebAssembly工具链Ruvy_编程语言_Sergio De Simone_InfoQ精选文章