GHC/NewIOManager

From HaskellWiki
< GHC
Revision as of 14:46, 26 December 2009 by GregoryCollins (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

GHC's I/O manager currently uses select() for I/O multiplexing. The select() call requires an walk through the file descriptor list to determine whether the descriptors are ready for reading or writing. We've been wanting to replace this with epoll() (or the equivalent) for years now.

Our work in process can be downloaded here: http://github.com/tibbe/event

Todo list

  • remove any non-base dependencies so that the code can be acceptable for inclusion into GHC
  • set up a darcs repo instead of the git one
  • work out a compatible design that will work for Windows IO completion ports -- many changes to the other I/O functions may be required here!
  • determine which other API changes will be necessary in GHC proper
  • testing for all platforms
  • use the pipe() trick GHC currently uses to support waking up the I/O manager from other threads
  • finish poll() / select() / kqueue() / epoll() backends

Resources