Loole 0.6.0: Improved correctness, performance and Flume compatibility

Hi everyone!

I've recently released a new version of Loole, a Rust channel crate that supports multiple producers and multiple consumers, with both synchronous and asynchronous send/receive operations.

The main focus of this release and the recent development work has been correctness, API compatibility, and performance.

What's improved?

  • Correctness and testing: I've fixed several bugs and added more tests, especially around edge cases. Loole now passes the Flume tests covering the APIs that it implements.

  • Flume API compatibility: I've added more APIs to make Loole more compatible with Flume, making it easier to work with if you're already familiar with Flume's API.

  • Performance: I've continued optimizing the channel implementation and its send/receive paths. I've also expanded the benchmarking setup so the performance of different channel configurations can be evaluated and compared.

What is Loole?

Loole is a safe sync/async MPMC channel crate with:

  • Bounded, unbounded, and rendezvous channels.

  • Blocking and asynchronous send/receive operations.

  • No unsafe code (#![forbid(unsafe_code)]).

  • A familiar API, with compatibility with Flume as one of its goals.

Links

I'd appreciate feedback from people who work with channels and concurrent Rust code. In particular, I'd be interested in hearing about edge cases I may have missed, and benchmark scenarios that better reflect real-world workloads.

Thanks for taking a look!