[Haskell-cafe] Re: Climbing up the shootout...

Manlio Perillo manlio_perillo at libero.it
Wed Sep 24 15:25:21 EDT 2008

Simon Marlow ha scritto:
> Manlio Perillo wrote:
> [...]
> We'd certainly support any efforts to add support for a more modern I/O 
> multiplexing or asynchronous I/O back-end to the IO library.  It's not 
> too difficult, because the interface between the low-level I/O supplier 
> and the rest of the IO library is rather small - just a few functions 
> that read and write blocks of data in a blocking or non-blocking way. 
> The blocking variants currently communicate with the I/O manager thread 
> which does select() on behalf of the clients.

There is some documentation that summarize the current status, and how 
all fits together?

There are some benchmarks that tell you the use of a separate I/O 
manager thread is a good solution?

> Before doing this, though, I'd urge you to check that your application 
> really does have scaling issues with the current system.  If it doesn't, 
> then great, and if it does then you have a good benchmark to evaluate 
> the replacement.

Right now I don't have any Haskell applications.
The only application that I develope and need to scale are, until now, 
web applications, and for this I use Nginx + mod_wsgi + wsgix (the last 
two implemented by myself, http://hg.mperillo.ath.cx/).

I'm quite satisfied with the current status, and I don't think I need to 
change language/frameworks.

However I'm looking for a good environment for implementing generic 
internet servers, or web applications with special needs.
As an example one of my "maybe future" tasks is to write a simple 
BitTorrent tracker + seeder.

I have tried to write it as a Nginx module, but it requires a lot of 
boiler plate code, so I gave up.

Twisted (a Python asynchronous framework) is a confortable environment, 
but I feel concurrent Haskell is superior.

It surely will work using just select, but since I have experience 
(including indirect experience) with both Twisted and Nginx, I know that 
using select is asking for troubles (but the solution used by Haskell is 
very new for me).
It is ok for clients, but not for servers that need to go in internet.

> Cheers,
>     Simon

Thanks   Manlio Perillo

More information about the Haskell-Cafe mailing list