Posted on Nov 26, 2011

RubyConf Argentina and Fenix

Recently I had the honor to speak at RubyConf Argentina 2011 (which I must say was a blast).

My talk was titled Tirando Ruby por la Ventana, which translates to Throwing Ruby through the Window

The talk was aimed at highlight a few issues with Ruby on Windows, ranging from the community to the implementation.

Here are the slides:

While the slides are in spanish, you might get the idea from the profiling to all the other charts 😉

But ranting without something to back you up is silly, so I’ve tried to proof that platform is not the issue.

On my slides I showed Fenix a proof-of-concept of harness the power of Windows API just re-implementing File.expand_path function, which was considered one of the culprits of performance issues on Windows.

Fenix as an experiment is a nice sandbox to play with Ruby without the lengthy compilation times on building Ruby from scratch on Windows.

It also helped to have a side-by-side comparison of Ruby own implementation.

But, most important, it served the purpose of document File.expand_path behavior through specs.

Ruby itself has no code to ensure that File.expand_path behave consistently across versions.

The goals were simple:

  • * Figure out what Ruby it is supposed to do and document it (specs)
  • * Implement the minimum code that make those specs pass
  • * Harness the power of newer Windows API
  • * Benchmark and compare always

So I have only done the minimum set of requirement to make Rails run, and run faster. There are plenty of corner cases that I didn’t cover and some that I’ve acknowledge in the specs but require its implementation.

The end result is use Fenix as playground to start working on better internals for Ruby itself, but without the tedious build process.

Also, all the work is aiming at Ruby 2.0, since the inner changes on Ruby to accommodate something similar are too big to be included back in 1.9.3

How I’m supposed to test this out?

So I guess you don’t believe in my slides… neither other developer’s conclusions

You can take a look to TheCodeShop builds that already include Fenix and test for your self.

Want to join us make Ruby better?

Please, try out and send us your feedback at TheCodeShop group.

A faster Ruby is possible, we just need to get rid of the legacy stuff and build for the future.