From Rust to Spark: Formally Proven Bip-Buffers
blog.adacore.com
blog.adacore.com
I definitely want to give credit to Andrea Lattuada [1] from the Systems group at ETH Zurich, who I worked with to design the algorithm behind bbqueue, as well as Simon Cooke [2], the original author of the bip-buffer algorithm we based bbqueue on (with some thread-safe changes).
Happy to answer any questions (though my knowledge of Ada/Spark is limited), especially on the algorithm or the Rust implementation. I use it super often for embedded systems, and it also allows for ridiculous performance even on PC/Desktop/Server systems.
[1]: https://twitter.com/utaal [2]: https://twitter.com/FleetingShadow
I haven't had a chance to look at bbqueue, but I recall (wow, I guess more than two years ago) difficulty designing patterns to use DMA due to aliasing concerns over the buffers given to DMA peripherals. What's the state of the art for that today? Did you folks ever find a nice abstraction?
This post also reminds me to check up on embedded async executors. Using interrupts to drive native async code is still a dream that keeps me up at night with excitement.
This is not about Spark, the data processing system written in Scala.