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
「ピープルアナリティクス」の認知度は4割弱–6割超の企業が成果につながらず
IT関連
2022-06-30 14:11
雇用不安に備える女性 オンライン講座でスキルを複線化
IT関連
2021-06-23 14:02
「Firefox」開発元のMozilla、開発者向け有料サブスクリプションサービス開始
IT関連
2022-03-29 01:32
マイクロソフト、RPA機能を「Windows 10」ユーザーに無償提供
IT関連
2021-03-04 13:09
水素関連株に改めて注目:参考銘柄と投資戦略
IT関連
2021-08-03 04:01
あらゆるクルマをCarPlay対応にする「Coral Vision」、国内販売開始 ワイヤレスモデルも
IT関連
2021-07-03 02:19
足立区、RPA導入でオンライン申請受付の業務効率向上を目指す
IT関連
2022-07-02 08:44
持続可能な自動車製造を目指すBMWが二酸化炭素を排出しない製鉄技術を開発したBoston Metalに投資
EnviroTech
2021-03-15 11:51
KDDIや日立ら、量子関連技術で勤務シフト作成時間を半分以下に短縮
IT関連
2022-09-02 07:42
「ChatGPT」、回答の条件をあらかじめ設定できる機能を追加
IT関連
2023-07-22 12:50
AWS、Java 18対応の独自Javaディストリビューション「Amazon Corretto 18」正式リリース
AWS
2022-03-24 15:54
ピクセルカンパニーズ、生成AI向けコンテナー型データセンターを発表
IT関連
2024-08-24 13:09
「電気の顔の見える化」目指すみんな電力が11.5億円のシリーズC調達、総調達額約41.5億円に
シェアリングエコノミー
2021-05-08 09:21
Google、オープンソースのメンテナの負担をAIなどで軽減する「Project Oscar」を発表
Google
2024-07-22 16:34