RubyのWebAssembly/WASIへの移植が実現、プレリリース版のバイナリ公開。RubyGemsにも対応

今回は「RubyのWebAssembly/WASIへの移植が実現、プレリリース版のバイナリ公開。RubyGemsにも対応」についてご紹介します。

関連ワード (報告、正式、開発助成金等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


Ruby言語のインタプリタをWebAssemblyランタイムで実行できるようにする移植作業が実現しました。WebAssembly版Rubyのバイナリファイルがプレリリース版として公開され、実際に試すことができます(ruby/ruby.wasm)。

RubyのWebAssemblyへの移植作業が始まったことは、1月に公開した記事「RubyがWebAssemblyのWASI対応へ前進。ブラウザでもサーバでもエッジでもどこでもWebAssembly版Rubyが動くように」で紹介しましたが、この移植作業が早くも完了したことが、移植を行ったkatei (Yuta Saito)氏が公開したドキュメント「An Update on WebAssembly/WASI Support in Ruby」で報告されています。

fig

このドキュメントは、Rubyアソシエーションによる開発助成金の対象であった今回のWebAssembly/WASIへの移植作業について、その完了を報告するものです。

今回の移植作業はRubyのリファレンス実装であるCRubyに対して行われました。そのためRubyの次バージョンでは、Webブラウザを始めとするWebAssemblyランタイム上でRubyのインタプリタが実行できる、WebAssembly版Rubyの正式版が登場することはほぼ確実とみられます。

これによりWebブラウザやエッジなどさまざまなWebAssemblyランタイム上でRubyインタプリタが実行できるようになり、そこでRubyのコードがそのまま実行可能になることを意味します。

実際に前述のドキュメント「An Update on WebAssembly/WASI Support in Ruby」では、WebAssembly版Rubyを用いてWebブラウザ上でRubyインタプリタを走らせることで、Rubyコードを実行する以下の3種類のデモ環境が紹介されています。

  • TryRuby now supports CRuby as an engine option
  • Optcarrot on browser
  • irb on browser

WASI対応で高いポータビリティ。性能はmrubyとほぼ同等

今回行われたRubyのWebAssemblyへの移植は、単にRubyのリファレンス実装であるCRubyのソースコードをWebAssemblyバイナリへコンパイルしたものではなく、OSのファイルシステムへのアクセスなど、OSに依存するシステムコールなどを抽象化してポータビリティを実現する業界標準仕様の「WASI」(WebAssembly System Interface)への対応を含んでいます。

そのため、WASIに対応したWebAssemblyライタイム上であれば、このWebAssembly/WASI版RubyはOSやWebブラウザなどのプラットフォームに依存することなく、どこでも実行可能なポータビリティを備えたWebAssemblyバイナリとなっています。

また、仮想ファイルシステム(VFS)機能も搭載しており、Webブラウザのような基本的にはファイル操作ができない環境でもファイルシステムからの読み込みなどの操作を可能にしています。

VFSについて、移植を行ったkatei (Yuta Saito)氏はPublickeyからの質問に答えて以下のように説明しています。

「VFSもRubyに必要な機能は実装が完了しております。VFSではBytecode AllianceのWasm事前初期化ツールWizerを使うことで初期化中にホストのファイルを吸い出し、開発者がファイルを埋め込む際にRuby自体のビルドを必要としない方式を採用しています」

つまり事前初期化ツールを用いて仮想ファイルシステムに「.rb」を埋め込んでおけば、開発者はシングルファイルでRubyのアプリケーションがデプロイ可能なバイナリを作成可能になり、Rubyアプリケーションの配布が容易になる、ということです。

またRubyGemsなどの周辺ツールとの連携については「RubyGemsがWASI環境で動作するようになり、拡張ライブラリを含まないGemであれば動作するようになっています。またJavaScriptとの連携強化も行っており、Rubyとホスト環境との相互運用のためのnpmパッケージを公開しております」とのこと。

「An Update on WebAssembly/WASI Support in Ruby」では処理速度を比較したベンチマークテストの結果も示されています。

「パフォーマンスに関してはWasmの例外機能の成長によって更に改善出来る可能性がありますが、プロジェクト期間で一定の改善を達成でき、optcarrot(Ruby製ゲームエミュレータ)ではmrubyと同レベルのベンチマーク結果となっています」

RubyをWebAssembly/WASI環境で実行可能にする移植作業は、これで実現できたといえそうですが、katei (Yuta Saito)氏は今後も以下のような作業をしていくつもりとのことです。

「今後の予定としては、SpiderMonkeyで行われているWizerを使った高速化テクニックの検証や、VFSのサイズ圧縮、RDocとの連携によってライブラリドキュメントのサンプルRubyコードをブラウザ上で実行可能にする、といったことを思案しております」

Rubyのメジャーバージョンアップは毎年クリスマスのタイミングで行われています。今年のクリスマスに登場するであろうRuby 3.2でWebAssembly/WASI版Rubyの正式リリースを楽しみに待つことにしましょう。

関連記事

移植作業の開始を紹介したこの記事で、CRuby、WebAssembly、WASIなどについて詳しく紹介していますので、合わせてお読みください。

  • RubyがWebAssemblyのWASI対応へ前進。ブラウザでもサーバでもエッジでもどこでもWebAssembly版Rubyが動くように

COMMENTS


Recommended

TITLE
CATEGORY
DATE
VRイベント「バーチャルマーケット」のHIKKYがシリーズA調達を70億円で完了、メディアドゥと提携し「メタバースと読書」追求
IT関連
2022-02-09 04:50
AWS、「Aurora DSQL」や「Amazon Q」で進める“データの民主化”
IT関連
2024-12-28 09:42
雇用主が求める言語は「SQL」「Python」「Java」–「IEEE Spectrum」レポート
IT関連
2024-08-27 16:55
Instagram、嫌がらせDMリクエストを見ないで削除できる機能を追加
アプリ・Web
2021-04-23 12:42
NECのCDOが語る「今、DX人材の中で至急増強すべき職種とは」
IT関連
2022-09-23 10:12
ヴィーム、2023年の事業戦略を発表–ランサムウェア被害への対応強化
IT関連
2023-04-14 23:46
DNP、VMware環境で運用する基幹システムを「Oracle Cloud」に移行
IT関連
2022-05-13 14:50
アディッシュ、チャットボットに生成AIでFAQを自動生成する機能を追加
IT関連
2023-08-18 16:48
Docker Desktop内のコンテナに対して「localhost」でアクセス可能に、WSL2のストレージ領域を自動で縮小など新機能、Docker Desktop 4.34正式リリース
Docker
2024-09-05 18:38
富士通、ネットワーク機器の製造拠点でローカル5Gシステムを運用開始
IT関連
2021-04-01 08:37
AWSにサーバ停止されたSNS「Parler」、AWSを提訴「政治的敵意によるもので、独禁法違反だ」
クラウドユーザー
2021-01-13 04:42
DNPとレノボ、GIGAスクール端末の予備機を運用管理–日本郵便・佐川急便と連携
IT関連
2025-02-16 09:35
NTT Com、市街地映像のビッグデータ活用基盤「モビスキャ」を24年度上期に提供
IT関連
2024-01-14 13:39
故郷が「帰ってくるな」という夏休み、「バーチャル帰省」はアリ? :小寺信良のIT大作戦(1/2 ページ)
トップニュース
2021-08-11 00:51