Ruby開発プロジェクトは12月25日、Rubyのメジャーバージョンアップ版「Ruby 3.2.0」をリリースしました(ruby-lang.org)。Ruby 3.2では、多数の新機能の追加とともに様々な改善が行われており、現在公式サイトよりソースコードをダウンロードすることができます。
Ruby 3.2ではまず、WASIベースのWebAssemblyがサポートされました。これにより、ブラウザやサーバーレスエッジ環境、その他のWebAssembly/WASI環境でCRubyのバイナリが利用できるようになります。
Ruby 3.1で導入されたJITコンパイラ「YJIT」は実験段階を脱して実用段階に入り、動作速度もRuby 3.1より速くなり、メモリオーバーヘッドも1/3となっています。
ReDoS(正規表現DoS)に対するRegexpの改善も進められています。マッチアルゴリズムがメモ化の最適化によって大幅に改善されたほか、正規表現マッチングにタイムアウトを指定できるようになました。適切にRegexp.timeoutを設定することで、DoSのリスクを防止、または大幅に緩和することができるようになっています。Regexp.timeoutはグローバルな設定で、一部の正規表現にだけ異なるタイムアウトを設定したい場合、Regexp.newのtimeoutキーワードを使用します。
Regexp.timeout = 1.0 long_time_re = Regexp.new("^a*b?a*$", timeout: nil) # タイムアウトなし long_time_re =~ "a" * 50000 + "x" # 割り込まれない
その他syntax_suggest
のRubyへの統合や、TypeErrorとArgumentErrorの引数を下線表示する機能の追加、Find patternの実験的機能からの昇格、libyaml、libffiのようなサードパーティ製ライブラリのソースコードの同梱の廃止、パフォーマンスの改善、標準ライブラリのアップデートなど多数の変更が行われています。
3.1からの変更点を含め詳細はこちらで確認可能です。
タイトル | Ruby | |
---|---|---|
公式サイト | http://www.ruby-lang.org/ja/ | |
ソフトアンテナ | https://softantenna.com/softwares/1964-ruby | |
説明 | オブジェクト指向スクリプト言語。 |