Ruby 2.6.0-preview1 リリース
Posted by naruse on 24 Feb 2018
Ruby 2.6.0に向けた最初のプレビューである、Ruby 2.6.0-preview1がリリースされました。
Ruby 2.6.0-preview1は、重要な新機能であるJITを含むため、例年よりも早期にリリースすることにしました。 その一部を以下に紹介します。
JIT
Ruby 2.6ではJIT (Just-in-time) コンパイラが導入されました。
JITコンパイラはあらゆるRubyプログラムの実行を高速化することを目的としています。 他言語の一般的なJITコンパイラと異なり、RubyのJITコンパイラはC言語のソースコードをファイルとしてディスクに書き、通常のCコンパイラを用いてネイティブコードに変換することでJITコンパイルを行うという手法を用いています。(参考: Vladimir MakarovのMJIT organization)
JITコンパイルを有効にするには --jit オプションをコマンドラインまたは$RUBYOPT環境変数を指定します。--jit-verbose=1を指定すれば実行中のJITコンパイルの基本的な情報を表示します。その他のオプションについては ruby --help を参照ください。
今回のリリースはこのJITコンパイル機能を皆さんの環境で動作を確認して頂くとともに、セキュリティ上の問題が無いかを早期に確認するために行っています。 現在のJITコンパイラはいくつか制限があり、まずgccまたはclangによってビルドされたRubyでかつ、そのコンパイラが実行時に利用可能である必要があります。また、現在はJITコンパイルの基盤を準備している段階で、少数の最適化のみ実装しています。そのため現在でもいくつかのマイクロベンチマークでは潜在的な速度改善が見られるものの、より大きなプログラム、特にRailsアプリケーションなどではJITコンパイラの性能を計測出来る段階ではありません。
今後はインライン化等を実装することでRubyの性能を桁違いに向上させます。また、Visual Studioを筆頭に、サポートする環境も増やしていきます。
引き続き新時代のRubyの実効性能にご期待ください。
新機能
Random.bytesの追加 [Feature #4938]-
Binding#source_locationの追加 [Feature #14230]bindingのソースコード上の位置を__FILE__と__LINE__の二要素配列として返します。従来でもeval("[__FILE__, __LINE__]", binding)とすることでこれらの情報は得られましたが、将来的にKernel#evalはbindingのソースコード行を無視する変更を予定しているため [Bug #4352]、この新しいメソッドを用いることが今後は推奨されます。 Kernel#systemの失敗時に、falseを返す代わりに例外を上げさせる:exceptionオプションを追加 [Feature #14386]
パフォーマンスの改善
-
後述の
$SAFEの変更に伴って考慮すべきことが減ったため、Proc#callが高速化されました [Feature #14318]Proc#callを大量に呼び出すlc_fizzbuzzベンチマークにおいては、1.4倍高速化されています [Bug #10212]. -
blockがブロックパレメータである時、block.callが高速化されました [Feature #14330]Ruby 2.5ではブロック渡しの性能が改善されましたが [Feature #14045]、加えてRuby 2.6では渡されたブロックの呼び出しも改善されました。 マイクロベンチマークにおいては2.6倍高速化されています。
その他の注目すべき 2.5 からの変更点
$SAFEはプロセスグローバルで扱われることになると共に、0以外を設定した後に0に戻せるようになりました [Feature #14250]ERB.newにsafe_levelを渡すのは非推奨になりました。また、trim_modeとeoutvarはキーワード引数に変更されました。 [Feature #14256]- RubyGems 2.7.6 をマージしました
その他詳細については、NEWS ファイルまたはコミットログを参照してください。
なお、こうした変更により、Ruby 2.5.0 以降では 1115 個のファイルに変更が加えられ、23023 行の追加と 14748 行の削除が行われました !
今日、2月24日はRubyの25年目の誕生日です。 誕生日おめでとう! みなさんもRuby 2.6.0-preview1で楽しいプログラミングを!
ダウンロード
-
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.gz
SIZE: 16082501 bytes SHA1: 94b4a2f5f992dc9855364284e9c64316bf129c90 SHA256: 2023c42676d9237481e1a97157d5e2ecc10db5e320d5b9cf872ec1d293265d61 SHA512: 004696c4f087333ba7cb2285418dcce70f399966ae8fed817aab9759fd2d75beb088c4aeb294fcd4260112e8422f490cd4dbdfce402d73f96bb679b8bb3e1607 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.zip
SIZE: 19807007 bytes SHA1: 24d76f67bf913348eca783a2ecf6f3faf37299ae SHA256: 6c883927e80430cf07f2d90728d6c2c71164223f378a48ebf964d3b66319f623 SHA512: 1e7f318cec1b7875fd9891df671078de7585b556695a2a85708483ddcacfd6e0b63b70ec2535e92ff981b4f72063721ed552df49688e066666fcd7ae520ae667 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.bz2
SIZE: 14104578 bytes SHA1: 9f0fb79643a4673a839b0c8496eccc6e1dbd022d SHA256: 8bd6c373df6ee009441270a8b4f86413d101b8f88e8051c55ef62abffadce462 SHA512: d9cb270529a97670d54f43a0236fab072714e715c39277dab70b7a1843ec818e6700e47e1384c7256f9e0ae41ab2c0b768a0de38a5ecf4f4fff5da6ef5ad4944 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.xz
SIZE: 11423984 bytes SHA1: bbbc89d760cdaadbca3cbff587295864edeff0af SHA256: 1d99139116e4e245ce543edb137b2a8873c26e9f0bde88d8cee6789617cc8d0e SHA512: d12ff29778d8d940344619881b4d8247c2fb6b44ac2b2dbddb7078828e893cfac9a5a95b5588f0afdbed52bdb6dea95cff1b9ce3ad47dfa62209e97dab8810b6
最近のニュース
Ruby 4.0.0 リリース
Ruby 4.0.0 が公開されました。 Ruby 4.0 には “Ruby Box”、”ZJIT” ほか多数の改善が含まれています。
Posted by naruse on 25 Dec 2025
サイトのアイデンティティの再設計
サイトの包括的なデザインのアップデートを発表できることを嬉しく思います。今回の更新ではTaeko Akatsukaさんにデザインを担当していただきました。
Posted by Hiroshi SHIBATA on 22 Dec 2025
Ruby 4.0.0 preview3 リリース
Ruby 4.0.0-preview3 が公開されました。
Posted by naruse on 18 Dec 2025
Ruby 4.0.0 preview2 リリース
Ruby 4.0.0-preview2 が公開されました。Ruby 4.0では、Unicodeバージョンの17.0.0へのアップデートなど様々な改善が行われています。
Posted by naruse on 17 Nov 2025