ニュース

「Ruby 2.6.0」が正式リリース ~JITコンパイラーの導入でパフォーマンスが向上

抽象構文木を扱うAPIや終端なしの範囲、“Unicode 11”をサポート

「Ruby 2.6.0」が正式リリース

 スクリプト言語「Ruby」の最新版v2.6.0が、12月25日に公開された。「Ruby 2.6」シリーズ最初の安定版である本バージョンでは、新しい機能がいくつか導入され、パフォーマンスが向上している。

 「Ruby 2.6」では“JIT(Just-in-time))”コンパイラーが試験的に導入された。バイトコードを実行するオーバーヘッドを削減することが可能で、ファミコンのエミュレーションでCPU負荷を測るベンチマーク「Optcarrot」では、「Ruby 2.5」に比べ約1.7倍の性能向上を実現しているという(JITを有効化しなくても「Ruby 2.6」は「Ruby 2.5」よりも高速に動作する)。「Rails」アプリなど、メモリ負荷の高い環境における性能はまだ満足できるレベルではないとのことだが、今後のパフォーマンスアップに期待がかかる。

 なお、「Ruby」で採用されているJITコンパイラーは、他の言語で採用されている一般的なものとは異なり、C言語のソースコードをファイルとしてディスクに書き、通常のCコンパイラーを用いてネイティブコードに変換することでJITコンパイルを行うという手法(MJIT)を採用しているという。そのため、「Ruby 2.6」でJITコンパイラーを利用するには「GCC」、「Clang」、あるいは「Microsoft VC++」によってビルドされた「Ruby」実装と、それをビルドしたコンパイラーを実行時に利用できる必要がある。

 また、抽象構文木(AST)を扱うAPI(“RubyVM::AbstractSyntaxTree”モジュール)も実験的に導入された。バージョンアップに際して互換性の保証がないため、一般的な利用に役立つものではないが、文字列をパースしてASTのNodeを返すメソッドや、ファイルをパースするメソッドが利用できるようになった。

 そのほかにも、終端なしの範囲(“(1..)”や“ary[1..]”など)のサポートや“Unicode 11”へのアップデートが行われた。ASCII以外の大文字でも定数を定義できるようになるなどの改善も施されている。