From: David Masover Date: 2009-07-11T06:35:11+09:00 Subject: Re: which project should I work on? On Friday 10 July 2009 09:10:57 am Roger Pack wrote: > I was wondering on any feedback on which of the following pet projects > would be most helpful to the community. I can only speak for myself... > 1) create [another] ruby JIT > There are some ideas that could speed up the tired old VM [and the new > VM]. Speed is good, right? I'd say, hack on one of the existing ones. Or, if you can, make Rubinius as fast as (or faster than) MRI. Hey, shoot the moon! > 3) hack on the KRI GC. I think I might be able to run the sweep phase > in a separate thread, thus speeding up GC. So, I'd file that with #1. > 4) create a ruby tutorial gem, which supplements the RI information for > core class by adding tutorials to them [yea!]. It would be wiki > editable and every so often the wiki content snurfed up and packaged > into a gem with only documentation in it [no real code]. That's the > initial thought anyway. Hmm. Would this be something that could be combined with a Try Ruby style tutorial? (tryruby.hobix.net) > 5) create gem plugin to add pre-install hooks [ex: "apt-get install > some_dependency"] Pre-install hooks? Maybe, though I'd be wary. I like being able to install a gem just to read the rdocs. And that sounds like a TERRIBLE way to do what you're trying to do, by the way. I know gems doesn't already do this, but what about reverse dependencies? What about portability? Find me an example of a pre-installation script that isn't better done some other way. > 6) create an "optimized" edition of Ruby--i.e. an REE but for 1.9 [so > tcmalloc, tuned GC to start, GCC profile optimized, etc.] This, I'd love to see. REE meaning Ruby Enterprise Edition, right? +1 here. > 7) try to crack down and kill some of the outstanding bugs in the core. Always a good idea, but I'm guessing there are people on that. Anyone doing a Ruby Enterprise Edition for 1.9? > 9) a ruby optimizing pre processor > converts things like > def go > if a == '3' > end > end > > to > > @_3 = '3' > def go > if a == @_3 > end > end I'd do that in the VM, if you can. Especially seeing as there's no way to tell if your example is universally faster -- it necessarily adds an instance variable. A particularly intelligent optimization might notice that this string is only ever used for the one comparison, so as long as String isn't messed with, it could be converted into code like the following C: if (a[0] == '3' && a[1] == NULL) I'm assuming C strings, Ruby strings might work differently, but you get the idea. > 10) try to optimize rails [is there much possible there though?] Yes! Happening as part of merging with Merb, I thought. I'd love to see progress there, though...