当前位置: 首页 > news >正文

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

相关文章:

  • MongoDB的条件操作符
  • mysql5.7安装详细教程
  • 【目标检测从零开始】torch实现yolov3数据加载
  • Tomcat管理功能使用
  • [Geek Challenge 2023] web题解
  • 德国进口高速主轴电机在机器人上的应用及选型方案
  • oops-framework框架 之 Excel转Json
  • LinuxShell的 中括号[], 双中括号[[]], 双小括号(()) 笔记231207
  • Java Web应用优化 认识软件设计分层架构
  • Spring Boot 3 集成 Druid 连接池详解
  • 游戏被攻击该怎么办?游戏盾该如何使用,游戏盾如何防护攻击
  • IDEA使用git从远程仓库获取项目
  • 大屏图表汇总echarts圆环
  • LAMP架构
  • 用户案例|Milvus 助力 Credal.AI 实现 GenAI 安全与可控
  • [nginx文档翻译系列] 控制nginx
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Create React App 使用
  • ES6 ...操作符
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript设计模式与开发实践系列之策略模式
  • leetcode388. Longest Absolute File Path
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • mysql innodb 索引使用指南
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • React-redux的原理以及使用
  • Sublime Text 2/3 绑定Eclipse快捷键
  • ⭐ Unity + OpenCV 实现实时图像识别与叠加效果
  • 汉诺塔算法
  • 基于webpack 的 vue 多页架构
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端相关框架总和
  • 如何用vue打造一个移动端音乐播放器
  • 通信类
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)LINQ之路
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (轉貼) UML中文FAQ (OO) (UML)
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET构架之我见
  • .Net环境下的缓存技术介绍