Dynamic memory management is a complex and often controversial topic. There are a wide variety of different algorithms and approaches that one can take towards managing memory, both manually and automatically.
Some language implementations tend to pick their favourite approach early in their development, like Pythons reference counting and Ruby's extended Mark Sweep collector, and stick with it for the long term.
Others, like the JVM, aim to have a more configurable approach, with multiple Garbage Collection algorithms that can be configured at runtime, or even dynamically tuned by the VM during program execution.
What if we could have that for Ruby?
This talk is going to be an exploration of how we can support multiple GC algorithms in Ruby. We'll talk about building a unified memory management API, and explore our integration with MMTk, a research project to build a unified memory management toolkit, with integrations into the JVM, v8, Julia, and now Ruby.