[Mongrel] [ANN] Ebb Web Server
ry dahl
ry at tinyclouds.org
Mon Jan 14 11:43:09 EST 2008
Hello Mongrel Users,
I'm writing a web server called Ebb. It's written in C, makes use of
the Mongrel HTTP parser, and uses libev its event loop. The goal is to
be small, fast, and language independent server that can host web
frameworks. I have written a small Ruby binding which provides a Rack
handler - this will allow Ebb to host Rails, Merb, and other Ruby
frameworks. In the future I will write a Python WSGI binding.
The design is similar to the evented Mongrel web server. Connections
are processed as follows:
1. libev loops and waits for incoming connections.
2. When Ebb can read from a client socket, it passes the buffer into the
mongrel state machine which parses the headers into name value pairs.
3. Ebb starts a new thread and passes the request information and peer socket
to a user supplied callback. The thread lasts only for the length of that
callback.
4. The included Ruby binding, supplying this callback transforms the request
into a Rack compatible "env" variable and passes it on a Rack adapter.
The code measures in at less than 1000 lines of C code.
There is much work to do; it is not ready for use. I am soliciting
help from the community for testing and development. You may browse
the git repository at http://repo.or.cz/w/ebb.git or check out the
code with this command:
git clone git://repo.or.cz/ebb.git
I release Ebb under the MIT license.
It is very fun to program Ebb so I suggest you do too :)
Ry Dahl
More information about the Mongrel-users
mailing list