I've just released Desync 0.7.0, which is the asynchronous programming library I developed to solve the issues I encountered while developing FlowBetween.
Desync is a slightly 'non-traditional' concurrency library in that it eschews the traditional notions of threads and locking in favour of ordering operations. This approach gives it a very simple yet flexible API, with just two main operations to learn: sync()
and desync()
. It's a model that fits particularly well with Rust, as it can greatly simplify using borrowed values with concurrent operations.
0.7.0 was mainly about improving integration with code that uses Futures (async/await). I've split future()
into two functions: future_sync()
and future_desync()
, and added a detach()
function to the result of the desync variant to make it easy to run futures 'in the background'.
I've improved the scheduler quite a lot, especially when piping data which is now very much faster. I've been using it to schedule tessellation operations in FlowBetween's new renderer, which has shaken out a lot of bugs.