One could replace http11's parser with some regular expressions and
out-of-bounds checking rather easily. I think Kirk Haines did this (?)
and said it was rather comparable in speed to the C/Ragel state
machine. I guess that wasn't really the point of your exercise, but
it's worth noting, if anyone actually wants a pure ruby http parser.

ry


On Thu, Apr 24, 2008 at 2:50 AM, Tony <[EMAIL PROTECTED]> wrote:
> Before anything else, let me state this: Of course it's going to be
> PAINFULLY slow on MRI.  That's not the point :)
>
> I thought I'd try out writing out a Ruby version of the parser for the
> purposes of Rubinius.  For those of you who aren't aware, Ragel supports a
> goto-driven FSM on Rubinius by injecting assembly directly, and Rubinus head
> honcho guy Evan Phoenix is working on a patch for Ragel to update it to the
> new compiler semantics.  So really, there is a purpose for trying this out.
>
> Anyway, here's my initial hack.  It's nasty, and presently jams the entire
> FSM into instance-specific data.  Aieee!  But it more or less seems to
> generate similar (albeit not identical) output to the C one:
>
> http://git.rubini.us/?p=code;a=blob;f=lib/mongrel/http11_parser.rb.rl;h=508f9bd42b4aad322f357637d52576f780707a2f;hb=868732662abbf4aa571bf2f3d598152467f6f4da
>
> I've thought about having a Mongrel::HttpParser::FSM module to store the
> actual Ragel-generated state machine, and pass all ivars from the
> Mongrel::HttpParser to an execute method then recapture them as return
> values, or something to that effect.
>
> Thoughts?  Suggestions?  Complete rewrites?  I'd appreciate them all.
>
> --
> Tony Arcieri
> medioh.com
> _______________________________________________
>  Mongrel-development mailing list
>  [email protected]
>  http://rubyforge.org/mailman/listinfo/mongrel-development
>
>
_______________________________________________
Mongrel-development mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/mongrel-development

Reply via email to