Shopify 開源 Ruvy,將 Ruby 代碼轉換成 WebAssembly

來源: OSCHINA
編輯:
2023-10-20 17:11:00

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 工具

展開閱讀全文
點擊引領話題?? 發布并加入討論??
0 評論
2 收藏
分享
返回頂部
頂部
一本久久综合亚洲鲁鲁五月天,无翼乌口工全彩无遮挡H全彩,英语老师解开裙子坐我腿中间