I’m happy to announce that today I finished debugging the new generational garbage collector and have committed it to trunk!
This is a proud day as the VM is really starting to mature into a great system, and everyone is really pitching in to create a great ruby engine!
For those that are curious, the generational GC (genGC) uses a baker copy collector for the young objects and a mark/sweep collector for the old objects. Currently, an object is promoted to the old space once it has an age of 7 (the tenure age). An objects age goes up each time it survives a collection of the young space.
Soon, I’ll add the ability to tune the tenure age. I’m thinking about adding a config file to the VM so there is a single place to tune these kind of values.