[Haskell-cafe] [ANN](and feedback request) unagi-chan: Fast and scalable concurrent queues for x86, with a Chan-like API

Brandon Simmons brandon.m.simmons at gmail.com
Thu Jul 10 18:39:00 UTC 2014


I'm happy to finally release unagi-chan, an implementation of
high-performance concurrent FIFO queues that have an API very similar
to Control.Concurrent.Chan. You can see benchmarks and documentation
here:

    http://hackage.haskell.org/package/unagi-chan

If you have a moment (especially if you're on a non-x86 architecture)
please take 10 minutes and run the tests with:

    $ cabal configure --enable-tests
    $ cabal build
    $ time ./dist/build/test/test

Thanks to Ryan Newton for helping answer some low-level questions
about his atomic-primops package which provides the CAS and
fetch-and-add implementations that are the core of unagi-chan.

REQUEST FOR FEEDBACK: would anyone be interested in any functionality
like the following:
   - concurrent builder for Text, something like:
           new :: IO (InTextChan , Lazy.Text)
           write :: String -> InTextChan -> IO ()

   - something similar for ByteString (is there a class for types
convertable to ByteString?)

   - concurrent Text and/or ByteString readers, something like:
           reader :: Text -> IO TextReader
           takeText :: Int -> TextReader -> IO Text

That's very sketchy, but I ask because I'm very close to that already
with Unagi.Unboxed, and should be able to implement something like any
of the above without too much trouble if it would be useful.

Brandon
http://brandon.si


More information about the Haskell-Cafe mailing list