Ruby Internals, Implementations and Version History

53.1 How CRuby Runs Your Code

Objects are VALUE pointers. Small integers, symbols, nil, true, and false are immediate values (no heap allocation).

Method caching (inline caches), object shapes (3.2+) for fast instance variable access.

Source → Parser (Prism, the default since Ruby 3.4; parse.y before) → AST
       → Compiler → YARV bytecode (instruction sequences)
       → YARV VM interpreter (+ YJIT/ZJIT compiling hot code to machine code)
       → GC-managed object heap (RVALUE slots, variable-width allocation)
puts RubyVM::InstructionSequence.compile("1 + 2").disasm
Prism.parse("x = 1 + 2").value     # Prism AST (3.3+)
RubyVM::YJIT.enabled?

53.2 Version History Highlights

Rails era begins YARV VM, encodings, new hash syntax, lambdas ->

Keyword arguments, refinements, %i[], prepend, UTF-8 default

Generational GC, &. (2.3), frozen string comment, yield_self/then, pattern matching preview (2.7), numbered params

"Ruby 3x3": Ractors, Fiber Scheduler, RBS/TypeProf, pattern matching stable, endless methods, keyword argument separation

YJIT (experimental), the debug gem, error_highlight, hash shorthand {x:}, anonymous block forwarding

YJIT production-ready, WASI support, Data class, Regexp.timeout, object shapes, anonymous rest/kwrest forwarding

Prism parser, M:N threads (opt-in), YJIT speedups, ObjectSpace::WeakKeyMap, IRB improvements

it block parameter, Prism as the default parser, chilled (frozen-ready) strings, new Hash#inspect format, modular GC, faster JSON, YJIT improvements

30th anniversary release: ZJIT (experimental JIT), Ruby::Box (namespace isolation, experimental), Ractor API improvements (Ractor::Port), Set and Pathname in core, further performance work (check the release notes for details)

53.3 Community and Governance

Matz is the "Benevolent Dictator for Life." Core development happens on bugs.ruby-lang.org (issue tracker and feature requests) and GitHub (ruby/ruby). A new version ships every December 25th.

Conferences: RubyKaigi (Japan), RailsConf/RubyConf (now merged as RubyConf), Euruko, Rails World. Ruby Central maintains RubyGems.org and Bundler.