Archive for January 2007
Today I merged the archive loading code from a branch into trunk. The archive loading allows rubinius to load code directly from a .rba (ruby archive). .rba’s are really just zip files with recompiled .rbc inside them. Archive loading is really important for stuff like the kernel and compiler because it allows all the code for them to be contained in one file and used all together.
I’ve also cleaned up the argument’s to ./shotgun/rubinius. The kernel is no longer specified on as the first argument, it’s either detected in a specific directory (currenly just runtime/kernel.rba) or is specified directly in the KERNEL environment variable.
Thirdly, I’ve checked in a kernel.rba and compiler.rba which people can use without going through the hoops of generating their own. I’ve modified the Rakefile so that build:all now only builds ./shotgun/rubinius and therefore uses the checked in version of kernel.rba and compiler.rba.
The upshot of all this change is that it should be a lot easier for people to out of the box get rubinius running simple code.
shell$ svn co http://code.fallingsnow.net/svn/rubinius/trunk rbx shell$ cd rbx shell$ rake build:all shell$ ./shotgun/rubinius -e "puts 'hello rubinius'"
I’ll be restructuring the kernel code in rubinius in the next few days to clean up things further. This cleanup should allow people to work on the core classes and methods a bit more easily.
Thanks to everyone who’s submitted patchs and commited code to the project!
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.