I pushed an updated version here:

http://git.rubini.us/?p=code;a=blob;f=lib/mongrel/http11_parser.rb.rl;h=60c8f3d2519dc1673ef0b4107d40a9df9eca0662;hb=7d246b17efc0ac37db6c241729f6b0e298f49950

It's now confirmed working with Mongrel::HttpServer on Rubinius with a "Hello, world!" Mongrel::HttpHandler.

It can be used to generate a goto-driven FSM using Rubinius assembly:

http://git.rubini.us/?p=code;a=blob;f=lib/mongrel/http11.rb;h=435f643ea105f7adc486dc06ab960392c3dfeab5;hb=7d246b17efc0ac37db6c241729f6b0e298f49950

Some performance figures:

MRI + C extension, parsing 10,000 requests:
  0.150000   0.000000   0.150000 (  0.152268)

Rubinius + Rubinius.asm parser, parsing 10,000 requests:
 20.500086   0.000000  20.500086 ( 20.500085)

So, presently ~135x slower than the C extension on MRI :)

--
Tony Arcieri
medioh.com