… C files Switch to the standard C way of doing things, with a shared header file. This bloats the code a bit as we have to add prototypes that were unnecessary before, as well as add extern for some static variables. However, it's probably better to do things in a standard way. Thanks to Luis Lavena for suggesting this.
…n .so Instead of hard coding date.so, rename the extension from date.c to date_ext.c, and just require date_ext. Most of the other changes are fallout from that. The windows_gem task is now more thorough. I'm not sure why in some cases you need to manually copy the files, but handle that.
Give an error message if trying to run mem_bench or garbage_bench on Windows. Make cpu_bench.rb work on Windows. Add a --bench option for home_run and include the bench directory in the gem to easily run the benchmarks from a gem install. Use File::PATH_SEPARATOR instead of rolling our own.
…e ruby implementation The new ragel parser is not designed to handle all possible cases. It's currently only set up to handle the standard ISO8601 format (YYYY-MM-DDTHH:MM:SS+HH:MM). This is about 40 times faster than the pure ruby implementation. The new design takes extra procautions so that partial values are never set unless the entire string matches. More formats will be added later based on need.
…t pure ruby parser I don't think I could get decent compatibility with a ragel based parser, which is a shame, because it is so much faster.
This version just handles iso8601 dates, and just creates the framework that future improvements will build upon. Unlike the stdlib implementation, instead of trying a bunch of regular expression parses in a serial manner, home_run uses a real parser built with lex and yacc. This should be signicantly faster as well as more flexible.