写点什么

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:074124

评论

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

一起学习设计模式:责任链模式

宇宙之一粟

设计模式 8月月更

树莓派3b+ python3.5+opencv3.4.1下载安装及配置详解

Five

树莓派 OpenCV Python. 8月月更

极狐GitLab 15.3 | issues 中建任务、许可证合规分析,超 30 项更新全面来袭!

极狐GitLab

DevOps gitlab 运维 API gitops

Network源码接口分析

长安链

影视动漫制作为什么要选择云渲染农场?

Finovy Cloud

计算器 云渲染 影视渲染

每日一R「21」Unsafe Rust

Samson

学习笔记 8月月更 ​Rust

流日志轻松应对“10亿级别IP对”复杂场景,实现超大规模混合云网络流量可视化

Baidu AICLOUD

流日志 网络问题诊断 专线网络

rocksdb和innodb的一些区别

趁早

[Go WebSocket] 为什么我选用Go重构Python版本的WebSocket服务?

HullQin

Go golang 后端 websocket 8月月更

Go 代码城市上云——KusionStack 实践

SOFAStack

开源

基于 Serverless+OSS 分分钟实现图片秒变素描

阿里巴巴云原生

阿里云 Serverless 云原生 OSS

低代码是什么?国内排名前 5 的低代码开发平台对比

蒋川

低代码 开发工具 开发平台

【JVM】HotspotJVM精通垃圾回收器原理

小明Java问道之路

8月月更

network_factory.go源码分析

长安链

区块链交易隐私如何保证?华为零知识证明技术实战解析

创意时空

【JVM】HotspotJVM 分代回收机制

小明Java问道之路

8月月更

电商订单全流程可观测性最佳实践

观测云

面向大规模数据的云端管理,百度沧海存储产品解析

Baidu AICLOUD

云存储 混合云

TDesign 品牌价值观|视觉新基础

TDesign

腾讯 设计 开源项目

图解一致性模型

Databend

分布式 协议

设计模式的艺术 第二十六章访问者模式练习(开发一套高校奖励审批系统,该系统可以实现教师奖励和学生审批。如果教师发表的论文数超过10篇或学生发表论文数超过2篇可以评选科研奖,如果教师教学反馈分大于等于90分或学生平均成绩大于等于90分可以评选成绩优秀奖。)

代廉洁

设计模式的艺术

FIXP vs SSL/TLS,谁更安全?

LAXCUS分布式操作系统

网络安全 分布式系统

构建万物可信的基石:解密区块链跨链技术

创意时空

这些智能合约漏洞,可能会影响你的账户安全!

创意时空

【编程实践】认识爬虫并手把手带手实现新闻网站的爬取

迷彩

记录 Python爬虫 8月月更 网络爬虫

C/CPP基础练习题多维数组,矩阵转置,杨辉三角详解

CtrlX

c c++ 基础 8月月更

React useReducer 终极使用教程

蒋川

JavaScript react.js 低代码 Hooks useReducer

性能提升1倍,成本直降50%!基于龙蜥指令加速的下一代云原生网关

OpenAnolis小助手

操作系统 网关 龙蜥技术 cpu加速

创投基金黑钻资本Black3Lab Capital主投互联网3.0

股市老人

技术解析+代码实战,带你入门华为云政务区块链平台

创意时空

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