Ruby開発チームは11月11日、Ruby 3.2系の3番目のプレビューリリースである「Ruby 3.2.0 Preview 3」をリリースしました(ruby-lang.org)。
Ruby 3.2は、毎年12月に公開が予定されているRubyのメジャーバージョンアップ版で、多数の新機能が追加されています。
注目の新機能としては、WASIベースのWebAssemblyのサポートがあげられます。これにより、Webブラウザ、Serverless Edge環境、その他のWebAssembly/WASIエンベッダでCRubyバイナリを利用することができるようになります。
また、正規表現DoS(ReDoS)攻撃を緩和するためのRegexpの改善が行われています。ReDoSを大幅に改善するために、マッチングアルゴリズムの改善が行われ、ほとんどの正規表現が線形時間でマッチ判定できるようになりました。またRegexpにタイムアウトが導入され、、適切にRegexp.timeoutを設定することで、攻撃リスクを緩和することが可能となっています。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" # 割り込まれない
その他、Find patternの実験的機能からの昇格や、libyaml、libffiのようなサードパーティ製ライブラリのソースコードの同梱の廃止、パフォーマンスの改善、標準ライブラリのアップデートなど多数の変更が行われています。
3.2からの変更点を含め詳細はこちらで確認可能です。
タイトル | Ruby | |
---|---|---|
公式サイト | http://www.ruby-lang.org/ja/ | |
ソフトアンテナ | https://softantenna.com/softwares/1964-ruby | |
説明 | オブジェクト指向スクリプト言語。 |