This is the seventh major release in the Cats Effect 3.x lineage. It is fully binary compatible with every 3.x release, and fully source-compatible with every 3.2.x release.
Notable Changes
This release brings a new data type to the cats.effect.std
palette of concurrent data types, Backpressure
, which can be used to apply basic support for backpressure to the execution of a given effect. It comes equipped with a couple of execution strategies for a more customizable experience. Users can also take advantage of the added custom syntax which can be found by importing cats.effect.std.syntax.all._
.
Other behind the scenes improvements include added support for browser web workers, which brings substantial performance improvements for Scala.js IO
programs on browsers which support this feature.
Finally, this release also includes important bug fixes and performance improvements. A peculiar stack-safety issue has been fixed for long parTraverse
chains in combination with the Kleisli
monad transformer. We have used this opportunity to also improve the performance of the parTraverse
combinator, whose simpler implementation for parallel data types now allocates far fewer short-lived objects, resulting in noticeable performance improvements, especially in shorter-length sequences.
User-Facing Pull Requests
- #1817, #2163 -
Backpressure
concurrent data type (@etspaceman) - #2160 -
Backpressure
syntax (@armanbilge) - #2154 - Concepts documentation page cleanup (@djspiewak)
- #2167 - Add
ParallelBenchmark
(@manufacturist) - #2150, #2165, #2173 - Web worker polyfill implementation and testing (@armanbilge)
- #2159 -
map2/map2Eval
optimization for parallel data types (@manufacturist) - #2159 -
Kleisli
parTraverse
stack-safety fix (@vasilmkd and @djspiewak)
Special thanks to each and every one of you! You are all awesome!