Ruby 3.3.0-preview1 リリース

Ruby 3.3.0-preview1 が公開されました。Ruby 3.3ではRJITという新たなJITの仕組みを追加するとともに、YJITの高速化など様々な改善が行われています。

RJIT

  • Introduced a pure-Ruby JIT compiler RJIT and replaced MJIT.
    • RJIT supports only x86_64 architecture on Unix platforms.
    • Unlike MJIT, it doesn’t require a C compiler at runtime.
  • RJIT exists only for experimental purposes.
    • You should keep using YJIT in production.
  • If you are interested in developing JIT for Ruby, please check out k0kubun’s presentation on Day 3 of RubyKaigi.

Use Lrama instead of Bison

YJIT

  • Significant performance improvements over 3.2
    • Splat and rest arguments support has been improved.
    • Registers are allocated for stack operations of the virtual machine.
    • More calls with optional arguments are compiled.
    • Integer#!=, String#!=, Kernel#block_given?, Kernel#is_a?, Kernel#instance_of?, Module#=== are specially optimized.
    • Instance variables no longer exit to the interpreter with megamorphic Object Shapes.
  • Metadata for compiled code uses a lot less memory.
  • Improved code generation on ARM64
  • Option to start YJIT in paused mode and then later enable it manually
    • --yjit-pause and RubyVM::YJIT.resume
    • This can be used to enable YJIT only once your application is done booting
  • Exit tracing option now supports sampling
    • --trace-exits-sample-rate=N
  • Multiple bug fixes

*

その他の主要な新機能

言語機能

パフォーマンスの改善

その他の注目すべき 3.2 からの変更点

互換性に関する変更

定数の削除

以下の非推奨定数は削除されました

メソッドの削除

以下の非推奨のメソッドは削除されました

標準添付ライブラリの互換性に関する変更

ext/readline の削除

  • 今後は Ruby で書かれた GNU Readline の互換ライブラリである reline をすべての環境で標準で利用し、ext/readline は削除されました。以前の ext/readline が必要なユーザーは gem install readline-ext でインストールすることができます。
  • この変更により、Ruby のインストール時に libreadlinelibedit などのライブラリのインストールは不要となります。

C API の変更

C API の更新

以下の API が更新されました

C API の削除

以下の非推奨の API は削除されました

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

  • 以下の default gems のバージョンがアップデートされました。

  • RubyGems 3.5.0.dev
  • bigdecimal 3.1.4
  • bundler 2.5.0.dev
  • csv 3.2.7
  • fiddle 1.1.2
  • fileutils 1.7.1
  • irb 1.6.4
  • optparse 0.4.0.pre.1
  • psych 5.1.0
  • reline 0.3.3
  • stringio 3.0.7
  • strscan 3.0.7
  • syntax_suggest 1.0.4
  • time 0.2.2
  • timeout 0.3.2
  • uri 0.12.1

  • 以下の bundled gems のバージョンがアップデートされました。

  • minitest 5.18.0
  • rbs 3.1.0
  • typeprof 0.21.7
  • debug 1.8.0

default gems と bundled gems の詳細については Logger の GitHub Releases のような GitHub releases または changelog ファイルを参照してください。

その他詳細については、NEWS ファイルまたはコミットログを参照してください。

なお、こうした変更により、Ruby 3.2.0 以降では 1922 個のファイルに変更が加えられ、75283 行の追加と 44896 行の削除が行われました !

メリークリスマス、Ruby 3.3 とともによいお年をお迎えください!

ダウンロード

  • https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.gz

    SIZE: 20428213
    SHA1: 5445eec1cd9ddb44e03e74568cac94209c91b42d
    SHA256: c3454a911779b8d747ab0ea87041030d002d533edacb2485fe558b7084da25ed
    SHA512: 0f891f140ddc6372aa7c4459f8784126e0c341db7b80e72c51e441c5153c43c2d7b965f7807c076862ac84b9b8b0c6a66bbf66fc341746016151397bb21c782a
    
  • https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.xz

    SIZE: 15074600
    SHA1: 4c22ebca287c87811e1050bf4d59b7d32255b212
    SHA256: ae300b49e06c13087dd163b97eddd38db895dc8e0c9904284119795d75303fbb
    SHA512: 46c1134dba5810847f7f6b4298900a91f5225679d7873548b271f4ef2ad1dc168722562a2e468a2ccf136314176ee613d8c7792fd4411a3f7a44c80b93b417ee
    
  • https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.zip

    SIZE: 24846962
    SHA1: 31774fa653c54107b6afc30adda3a0350d8f41d2
    SHA256: 6ecafecf83f2cacf446b2326012f2b6ee1a0614d8dd29bb1fb3f105c27e2c553
    SHA512: 794bef847fefbbdbbdced85975a00c9289ef6464810408af3f0f2055052d6b5ef5576dbd41e0d87bb73f1ad276d8e27c36018610f8e2b9936828c0e692f611f0
    

Ruby とは

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