If anyone ports this to work with GHC6.0 please let us know. Tom On Wed, 5 Nov 2003 09:58 am, Peter Simons wrote:
S Alexander Jacobson writes:
Is there a reasonably efficient Haskell httpd implementation around that uses poll/select?
There is a web server written in Haskell: HWS-WP -- or "Haskell Web Server with Plug-ins". You'll find it at:
http://sourceforge.net/forum/forum.php?forum_id=253134 http://cvs.sourceforge.net/viewcvs.py/haskell-libs/libs/hws-wp/
The following paper from Simon Marlow provides a detailed description of the server's architecture:
Writing High-Performance Server Applications in Haskell, Case Study: A Haskell Web Server
http://www.haskell.org/~simonmar/bib.html
Note that HWS-WP does not use poll(2) directly. Instead, it relies an Haskell's forkIO function to spawn concurrent threads of execution. These are _not_ necessarily system threads, though. GHC, for instance, does implement IO threads with poll() internally. Other compilers or run-time systems may use other techniques.
I have experimented with direct poll()-based scheduling in Haskell (using a CSP monad to implement co-routines) and honestly didn't find it to be worth the extra effort. Eventually, I threw all the code away and just used forkIO, like everybody else does.
Peter
P. S.: If you're interested in a poll()-based web server written in C++, though, let me know. I have some code I'm more than willing to share. The server speaks HTTP/1.1 and can deliver static pages. No dynamic content, though. But it _is_ fast. :-)
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell
-- Uncontrolled power will turn even saints into savages. And we can all be counted on to live down to our lowest impulses. -- Parmen, "Plato's Stepchildren", stardate 5784.3