[Haskell-cafe] New IO foundations. [Was: Climbing up the shootout...]

Don Stewart dons at galois.com
Wed Sep 24 15:37:18 EDT 2008


simonmarhaskell:
> Manlio Perillo wrote:
> >Don Stewart ha scritto:
> >>[...]
> >>Ok. So I'll just say: high level, efficient code is an overriding theme
> >>of many individuals working on Haskell. Things are better and better
> >>each year. We do not stand still.
> >>
> >
> >Any roadmap for improve support in intensive IO multiplexing?
> >Or, at least, some papers about how this is implemented in GHC?
> >
> >Af far as I understand, select is used in two separate places.
> >How much effort it takes to implement a pluggable "reactor" (select, 
> >poll, epoll, kqueue, /dev/poll, and so)?
> 
> 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.
> 

Indeed, it has been done at least once elsewhere,

    http://www.seas.upenn.edu/~lipeng/homepage/unify.html

Check the tarball for a custom bytestring and epoll implementation used
to scale up to 10M haskell threads,

    http://www.seas.upenn.edu/%7Elipeng/unify/unify-0.0.1.tar.gz

Perhaps something worth resuscitating code for, for more epoll servers.

-- Don


More information about the Haskell-Cafe mailing list