WebAssembly版Rubyが正式に登場、YJITが実用段階に。「Ruby 3.2.0」正式リリース

今回は「WebAssembly版Rubyが正式に登場、YJITが実用段階に。「Ruby 3.2.0」正式リリース」についてご紹介します。

関連ワード (業界標準、稼働、自身等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

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


Ruby開発チームは、2022年12月25日にRuby 3.2.0の正式リリースを発表しました。Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっています。

fig

WebブラウザでRubyコードをそのまま実行可能に

新バージョンであるRuby 3.2.0の最大の新機能は、WASIベースのWebAssembly版Rubyが登場したことです。

これによりWASIをサポートしたWebAssemblyの実行環境、例えばWebブラウザやNode.js、DenoなどのサーバサイドJavaScriptランタイム、Cloudflare WorkersやFastly Compute@Edgeなどのクラウドエッジ環境で、WebAssembly版のRubyを実行できるようになりました。

これらの環境でWebAssemblyの上でRubyランタイムを実行すると、Rubyで書かれたコードをそのまま走らせることができます。

WebブラウザでRubyを試せるTryRuby Playgroundは、このWebAssembly版Rubyランタイムを用いることで、Webブラウザ上で直接Rubyのコードを実行しています。

fig

WebAssembly版Rubyが正式に登場

WASIベースのWebAssembly版Rubyの開発は、Rubyアソシエーションによる開発助成金の対象として今年(2022年)1月にスタートしました。

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

Ruby言語のリファレンス実装、すなわち事実上の標準となっているRubyランタイムはC言語で実装されているため、このRubyランタイムもしくはそのソースコードは一般に「CRuby」(もしくは、まつもとゆきひろ氏による実装という意味でMRI:Matz’ Ruby Implementation)と呼ばれています。

このCRubyのソースコードをコンパイルすることで、Windows対応RubyやLinux対応Rubyなどのバイナリファイルが生成されるわけです。今回のWASIベースのWebAssembly版Rubyも、このCRubyのソースコードをコンパイルしてWebAssemblyバイナリとして生成されたものです。

さらにファイルシステムAPIなどのOSごとの違いをWebAssemblyのレイヤで吸収する業界標準の仕様「WASI」(WebAssembly System Interface)にも対応したことで、前述のように異なるOS環境におけるWebブラウザからJavaScriptランタイム、クラウドエッジまで、単一のWebAssemblyバイナリでサポートされています。

さらにWASIの上にリードオンリーの仮想ファイルシステム(VFS)が実装されており、これによりWebAssembly版RubyランタイムとRubyのコードをワンバイナリにまとめることが可能です、つまりRubyアプリケーションをWebAssembly環境で簡単に実行できる形式で配布できるようになっています。

ここまで説明してきたWebAssembly版Rubyの開発を担当した齋藤優太氏が9月のRubyKaigi 2022で行った基調講演の内容がログミーで記事として公開されています。

参考:Rubyを手軽にブラウザ上で動かすことが可能に WebAssemblyを使って解消する、Rubyの動作環境問題 – ログミーTech

実用段階に入ったYJIT

前バージョンのRuby 3.1でメインラインにマージされたJITコンパイラ「YJIT」が1年以上にわたって本番環境でテストされ、安定して稼働する実用段階に到達したことも発表されました。

YJITは、ECサイト構築サービスで知られるShopifyが開発を進めてきたもので、Shopify自身が構築している大規模なRailsアプリケーションにおいて、より高い性能向上を目指して開発されました。

Ruby 3.2のYJITはRuby 3.1よりも高速になり、メモリのオーバーヘッドも3分の1になっています。

YJITはx86-64とarm64/aarch64のCPU アーキテクチャと、Linux、 MacOS、BSDとその他のUNIXプラットフォームをサポート。今回のリリースではMacのM1/M2プロセッサ、AWS Graviton、Raspberry Pi 4 のARM64プロセッサに対応しています。

正規表現処理の高速化など

そのほかRuby 3.2では正規表現の処理を行うRegexpのマッチングアルゴリズムの改善による高速化やRegexpのタイムアウトの導入をはじめ、多数の改善や機能追加が行われています。詳細は「Ruby 3.2.0 リリース」や公式ドキュメントなどをご参照ください。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
絶滅危惧種「フタ止めシール」の歴史を振り返る
くらテク
2021-06-04 04:37
スマホで次世代型決済と販促をハイブリッド化–東芝テックとデジタルガレージが実証実験
IT関連
2022-03-04 07:13
「Java 22」正式リリース。無名変数と無名パターン、複数のソースコードからなるJavaを一発実行する新機能など。「void main()」な記述もセカンドプレビューへ
Java
2024-03-21 05:57
Amazonプライムデー、日本で最も売れたのは?
企業・業界動向
2021-06-25 01:37
Flutter for Windowsが正式版に、「Flutter 2.10」リリース。単一コードでiOS/Android/Web/Windowsアプリが可能に
Dart
2022-02-07 19:28
Otter.ai、AIで会議を支援する新たな機能群「Meeting GenAI」を発表
IT関連
2024-02-15 14:18
ITエンジニアのための新刊案内(2023年6月):改訂新版Webエンジニアの教科書/動かして学ぶ!Flutter開発入門/自作OSで学ぶマイクロカーネルの設計と実装 、ほか
新刊案内
2023-06-02 05:29
打刻レス勤怠サービス「ラクロー」と「freee人事労務」、API連携を強化
IT関連
2023-11-11 22:02
2022年には5nmプロセスへ–日本AMDが戦略説明
IT関連
2021-06-28 21:04
「Googleアカウント」、パスキーに対応–生体認証でのログインが可能に
IT関連
2023-05-09 01:56
シンガポールでのランサムウェア攻撃増加–今後IoTが標的になるリスクも
IT関連
2022-09-01 14:10
Google、睡眠モニター機能つきスマートディスプレイ「Nest Hub(第2世代)」日本でも発売 1万1000円
製品動向
2021-04-23 10:46
朝日生命、コールセンターに「bellFace」を試験導入–社内の要望受け
IT関連
2022-06-04 00:58
経理職が会社から消える? 進むデータ化、インボイスが拍車
IT関連
2021-06-30 19:41