「Ruby 3.2.0」公開、WASIベースのWebAssemblyへのコンパイルをサポート その可能性は?WebAssembly/WASI環境でCRubyのバイナリが利用可能に

オープンソースプログラミング言語「Ruby」の最新メジャーリリース「Ruby 3.2.0」が公開された。WASIベースのWebAssemblyサポートが追加されている。

» 2023年01月05日 08時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Ruby開発チームは2022年12月25日、オープンソースプログラミング言語「Ruby」の最新メジャーリリース「Ruby 3.2.0」(以下、Ruby 3.2)を公開したと発表した。

 Ruby 3.2では、WASIベースのWebAssemblyサポート、実用段階になったYJIT、ReDoS攻撃に対する正規表現クラスの改善など、多くの機能追加やさまざまな改善が行われている。

WASIベースのWebAssemblyサポート

 WASIベースのWebAssemblyへのコンパイルがサポートされ、ブラウザやサーバレスエッジ環境、その他のWebAssembly/WASI環境でCRuby(Rubyのレファレンス実装)のバイナリが利用できるようになった。

 WebAssembly(「Wasm」とも呼ばれる)が導入されたのは、プログラムをブラウザ上で安全かつ高速に実行するためだが、さまざまな環境で安全かつ効率的にプログラムを実行するという目的は、Webだけでなく、一般的なアプリケーションでも長らく求められてきた。

 WASI(WebAssembly System Interface)は、そうしたユースケースのために設計された。このようなアプリケーションはOSと通信する必要があるが、WebAssemblyは、システムインタフェースを持たない仮想マシン(VM)で実行され、WASIはこのシステムインタフェースを規格化する。

 RubyのWebAssembly/WASIサポートは、こうしたプロジェクトを活用することを狙っている。これにより、Ruby開発者がそうした有望なプラットフォームで動くアプリケーションを作成できるようになった。

 CRubyをWebAssembly環境で利用できるので、例えば、オリジナルのCRubyをWebブラウザで試すことが可能だ。

 なお、現在のWASIとWebAssemblyは、Fiber、例外、GCを実装するための機能に一部足りないものがある。CRubyはこのギャップを埋めるために、ユーザーランドで実行を制御できるAsyncifyというバイナリ変換技術を使っている。

 また、Ruby開発チームは、WASIの言語・ホスト非依存の仮想ファイルシステム(VFS)層を提供するwasi-vfsを開発した。これにより、Rubyアプリケーションを単一の.wasmファイルに容易にパッケージ化できるようになった。

YJITが実用段階に

 「Ruby 3.1」で実験的機能として導入されたJITコンパイラである「YJIT」(Yet Another Ruby JIT)が、1年以上にわたって本番環境でテストされ、安定稼働の実績を積み重ね、実用段階に入った。

 YJITは、x86-64とarm64/aarch64のCPUアーキテクチャと、Linux、macOS、BSD、その他のUNIXプラットフォームをサポートしている。

 Ruby 3.2のYJITは、Ruby 3.1よりも高速になっており、メモリのオーバーヘッドも3分の1に軽減されている。

ReDoS攻撃に対する正規表現クラスの改善

 Ruby 3.2では、ReDoS攻撃(「正規表現DoS攻撃」とも呼ばれる)を大幅に軽減する2つの改善が導入された。

マッチングアルゴリズムの改善

 正規表現クラス(Regexp)のマッチングアルゴリズムが、メモ化の最適化によって大幅に改善された。例えば、次のマッチングは、Ruby 3.1では10秒かかるが、Ruby 3.2では0.003秒で終了する。

/^a*b?a*$/ =~ "a" * 50000 + "x"

タイムアウトの導入

 この最適化は、ある種の正規表現には適用できない。例えば、後方参照や先読み、後読みのような発展的機能や、非常に大きい固定回数繰り返しを使っている場合には適用されない。この場合の対策として、正規表現マッチングのタイムアウト機能が導入された。

他の主要な機能強化

 Ruby 3.2では以上の他、Rubyコードの実行時にエラーが起きた場所を容易に発見できる「syntax_suggest」の機能が統合された。また、TypeErrorとArgumentErrorの引数を下線表示するようになった。さらに、さまざまな言語機能が改善され、パフォーマンスも強化されている。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。