I believe AsyncQueue is quite useful concurrent data structure and might be good inclusion in Cats-effect. There is one in Monix - it's not referentially transparent but it could be fixed. Bigger issue is semantics, this one is unbounded and it might not be what we want.
What do you think about having AsyncQueue here?
Personally I'm not keen on growing Cats-Effect beyond essentials. We have added many useful utilities for managing side effects, like MVar, which is very much like a Queue.
We don't have to import the entire universe however, only the essentials, because we'll have to live with what we import forever, which is what happens with "standard" libraries.
Personally I think it's a bit out of scope. We have queues in fs2 (pure, and bounded, but probably slower than what you have in Monix), and I like them being there so we can expose methods that return Streams (which makes a lot of sense for a queue).
I think at some point we'll need to start accepting that these things can live in other libraries that _depend_ on cats-effect, rather than having everything here.
Okay, that makes sense, I'm closing the issue then. :)
Most helpful comment
Personally I think it's a bit out of scope. We have queues in fs2 (pure, and bounded, but probably slower than what you have in Monix), and I like them being there so we can expose methods that return Streams (which makes a lot of sense for a queue).
I think at some point we'll need to start accepting that these things can live in other libraries that _depend_ on cats-effect, rather than having everything here.