Today Simon Marlow merged Bryan O'Sullivan and my I/O manager patches into the main GHC tree. All the tests pass, and it’s performing well.
The new I/O manager is primarily useful in high-performance server applications, where the server maintains many open connections simultaneously and only a small number of those connections are active at any given time. This is the common case for most web applications. As a bonus, timeouts are also handled more efficiently: you can have many more threads calling e.g.
threadDelay simultaneously than before.
You don’t need to do change any code to see benefit from the new I/O manager: any code that uses
forkIO and runs on a system that supports
kqueue should scale better in terms of the number of open file descriptors.
The limit on number of open file descriptors is also gone: you can now have more than 1024 open file descriptors.
If you find any bugs, please use the GHC bug tracker to report them to me, “tibbe”.