
Ruby 4.0.0-preview2 が公開されました。Ruby 4.0では、Unicodeバージョンの17.0.0へのアップデートなど様々な改善が行われています。



## 言語機能の変更



* `*nil` no longer calls `nil.to_a`, similar to how `**nil` does
  not call `nil.to_hash`.  [[Feature #21047]]

## コアクラスのアップデート

注: 複数のアップデートの中から注目すべきアップデートのみを掲載しています。

* Binding

    * `Binding#local_variables` does no longer include numbered parameters.
      Also, `Binding#local_variable_get` and `Binding#local_variable_set` reject to handle numbered parameters.
      [[Bug #21049]]

* IO

    * `IO.select` accepts +Float::INFINITY+ as a timeout argument.
      [[Feature #20610]]

* String

    * Update Unicode to Version 17.0.0 and Emoji Version 17.0. [[Feature #19908]][[Feature #20724]][[Feature #21275]]
        (also applies to Regexp)


## 標準ライブラリのアップデート

注: 複数のアップデートの中から注目すべき標準ライブラリのアップデートのみを掲載しています。



## 互換性に関する変更

注: 不具合修正を除きます。



## 標準ライブラリの互換性の変更



## C API のアップデート


## JIT

* YJIT
    * YJIT stats
        * デフォルトビルドでは `ratio_in_yjit` が機能しなくなりました。
          `--yjit-stats` で有効にするためには、`configure` で `--enable-yjit=stats` を使用してください。
        * トレースポイントによってすべてのコードが無効化されたときに増加する `invalidate_everything` をYJIT statsにデフォルトで追加します。
    * `RubyVM::YJIT.enable` に `mem_size:` と `call_threshold:` オプションを追加します。
* ZJIT
    * 実験的なメソッドベースのJITコンパイラを追加しました。
      `--enable-zjit` を `configure` で使用して `--zjit` のサポートを有効にしてください。
    * Ruby 4.0.0-preview2の時点で、ZJITはまだほとんどのベンチマークを高速化する準備が整っていません。
      ZJITの性能評価はRuby 4.0のリリースまでお控えください。
* RJIT
    * `--rjit` は削除されました。サードパーティのJIT APIの実装を
      [ruby/rjit](https://github.com/ruby/rjit) リポジトリに移行します。

## その他の変更点



より詳細な情報は [NEWS](https://github.com/ruby/ruby/blob/v4.0.0-preview2/NEWS.md)
か [commit logs](https://github.com/ruby/ruby/compare/v3_4_0...v4.0.0-preview2) を参照してください。


これらの変更により、Ruby 3.4.0から [3607 ファイルが変更され、 197451 行が追加され、 285607 行が削除されました!deletions(-)](https://github.com/ruby/ruby/compare/v3_4_0...v4.0.0-preview2#file_bucket)


## Download

* <https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.0-preview2.tar.gz>

      SIZE: 23444451
      SHA1: 132e450bbee3f61ed0b463ed1e2bd3a3a324339c
      SHA256: 0a3330dae710302e11f7f0323e83219ab3c6517984691a312c662f329c5120e1
      SHA512: b5e681cc84be59148485b9a2212dcf54d61cfee27431ceddb49bedc8baa913ec8b36da43242cb4f1791b25e4bfc1dcf72b5527288a0656f2933da898d0e0b40f

* <https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.0-preview2.tar.xz>

      SIZE: 17554228
      SHA1: f8e8b98ea85ac82610ab601a21dc9a90c5c56a97
      SHA256: 0b92b15466d77a9d7e59e4a75f050d42cd50fe96c951d2b3b9f8029394cd9a43
      SHA512: 7afaa8d8e832ef0ded28f1caf874da69f16105e1b3aad5947c6911364159b4c6ebd3d7ea5d7d86708e9f2f06a047921b8302ca6e75ec429a3da846845f896976

* <https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.0-preview2.zip>

      SIZE: 28933540
      SHA1: 48a235cfbfd4252dce81da870c792e32309e62b9
      SHA256: f5c68ee44dfcb76b61c07c437fa945814dfc516570b1c921506ac886960160ca
      SHA512: 508c685e46a641c74e2968daf650559503ce2bcaac3403654713adb2345c3ede2bace929294a1367afecac5edd6b2c42fa833f5313456f78c79151d310c860cf

## What is Ruby

Rubyはまつもとゆきひろ (Matz) によって1993年に開発が始められ、今もオープンソースソフトウェアとして開発が続けられています。Rubyは様々なプラットフォームで動き、世界中で、特にWebアプリケーション開発のために使われています。

[Feature #21047]: https://bugs.ruby-lang.org/issues/21047
[Bug #21049]: https://bugs.ruby-lang.org/issues/21049
[Feature #20610]: https://bugs.ruby-lang.org/issues/20610
[Feature #19908]: https://bugs.ruby-lang.org/issues/19908
[Feature #20724]: https://bugs.ruby-lang.org/issues/20724
[Feature #21275]: https://bugs.ruby-lang.org/issues/21275
