How the Ruby Runtime Works with Aaron Patterson

Aaron Patterson introduces ruby runtime internals including details on its virtual machine, global interpreter lock, JIT compiler, and the complexities of building a compacting garbage collector.

Aaron is on both the ruby and rails core teams.   He's best known for making puns, teaching others, and his contributions to the internals of ruby.  Lately he's been focusing on a compacting garbage collector for ruby.

This episode originally aired on Software Engineering Radio.

Timestamps:
  • 00:40 - What Aaron likes about Ruby
  • 04:43 - Interpreted vs Compiled
  • 07:00 - Why the ruby interpreter is written in C
  • 11:00 - Other good languages to write virtual machines?
  • 15:20 - Moving from an Interpreter (MRI) to Virtual Machine (YARV)
  • 18:50 - Why there's no manual compilation step in Ruby
  • 23:28 - Why compile to bytecode instead of directly to machine code?
  • 26:34 - Stack based vs Register based VM
  • 28:00 - Differences between Core and Standard Library
  • 29:46 - Do you program more in ruby or C as a member of the ruby/rails core teams?
  • 30:30 - The Global Interpreter Lock (GIL / GVL)
  • 37:40 - Concurrency options in Ruby
  • 45:55 - Just in Time Compilation
  • 49:29 - Evolution of Garbage Collection in Ruby
  • 53:40 - Compacting Garbage Collection
  • 61:40 - Building a Compacting Garbage Collector without breaking C Extensions
  • 65:20 - Ruby's future, resources for learning

Links: