On all other operating systems, it currently falls back
to a portable Haskell implementation that allocates a
constant-sized memory buffer before it enters an inner
loop which then uses hGetBufSome and hPutBuf; this avoids
lots of tiny allocations as would otherwise be caused by
recv and sendAll functions from Network.Socket.ByteString.

This work is funded by Corsis Research and used in:

PortFusion ]-[ayabusa – German
research project for building the simplest
high-performance distributed reverse / forward proxy.