Ruby 実装一覧



Ruby の実装はたくさんある。通常は CRuby (MRI) を使うが、パフォーマンスが必要な場合は TruffleRuby, JRuby も選択肢になる。

実装の見分け方

スクリプトの側からRuby実装を調べるには, RUBY_ENGINE 変数を見る.

RUBY_ENGINE Implementation
<undefined> MRI < 1.9
'ruby' MRI >= 1.9
'jruby' JRuby
'macruby' MacRuby
'rbx' Rubinius
'maglev' MagLev
'ironruby' IronRuby
'cardinal' Cardinal

各実装の互換性: The Ruby Spec Suite Compatibility Report · On the Edge of Ruby 2020年の記事。CRuby 100%, TruffleRuby 97%, JRuby 88% (C-API が全滅), Opal 35%

ベンチマーク; Benchmarking CRuby, MJIT, YJIT, JRuby and TruffleRuby · On the Edge of Ruby 2022 年の記事. TruffleRuby が圧勝、JRuby も速い。CRuby では yjit が効果的。

各実装

asdf-ruby は内部で rbenv/ruby-build を呼び出している。それでインストールがサポートされているか。

Matz's Ruby Interpreter (MRI) / CRuby

RUBY_ENGINE = "ruby"

  • Webサイト: https://www.ruby-lang.org/ja/downloads/
  • 開発言語: plain C

Ruby 3.1 でJITコンパイラが変更。yjit を選ぶとよい。

JRuby

JavaVM 上で動かす。

  • Webサイト: https://www.jruby.org/
  • 開発言語: Java半分, Ruby 半分.

JRuby 9.4.x targets Ruby 3.1 compatibility. Rails 7 が動かない。 JRuby v9.4.3 までに動くようになったようだ。

Artichoke - a Ruby made with Rust

  • Webサイト: https://www.artichokeruby.org/
  • 開発言語: Rust

開発は継続しているようだが, 2023年7月現在, まだ最初のリリースがない。

mruby

  • Webサイト: なし. ソースコード https://github.com/mruby/mruby/
  • 開発言語: plain C

Ruby 2.0.0 のサブセット。どのような特徴があるのか、どのぐらい互換性があるのか、試していない。

picoruby

  • Webサイト: なし. ソースコード https://github.com/picoruby/picoruby/
  • 開発言語: plain C

mruby の別実装。for one-chip microcontrollers. キーボードのファームウェアなど。

TruffleRuby

Oracle が開発。v23 が 2023年6月リリース.

  • Webサイト: https://www.graalvm.org/ruby/
  • 開発言語: plain C, Java, Ruby

RUBY_ENGINE = 'truffleruby'. RUBY_VERSION is the compatible MRI version. Compatibility [graalvm.org]

MRI version 3.1, including C extensions, との互換性を目指す. 継続 (callcc()), fork() はない。

Opal - Ruby to JavaScript source-to-source compiler

  • Webサイト: https://opalrb.com/
  • 開発言語: Ruby, JavaScript

Webブラウザで動かす! フロントエンドフレームワークで使われている。v1.7.3 が 2023年3月。リリースが続いている。

Natalie Programming Language - Ruby implementation, compiled to C++

  • Webサイト: https://natalie-lang.org/
  • 開発言語: Ruby, C++

Ahead-of-Time (AOT) compiler. 活発に開発されている。ruby/spec への適合も上がっている。ただ, まだリリースなし。

関連プロジェクトに、手書きの再帰下降パーサ Natalie Parser がある。

ruruby - an alternative Ruby implementation by Rust.

  • Webサイト: https://github.com/sisshiki1969/ruruby/
  • 開発言語: Rust

v0.4.2 が 2021年11月. 開発停滞か。

廃れた実装

IronRuby

Microsoft .NET で動かす。

▲ rbx - Rubinius Language Platform

LLVM Webサイトが消失。プロジェクト終了。

▲ MagLev

64ビット Smalltalk VMである GemStone/S上に構築された Ruby VM. public archive になった。開発終了。