This is the thirty-third 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.4.x release. Note that source compatibility has been broken with 3.3.x in some minor areas. Since those changes require active choice on the part of users to decide the best adjusted usage for their specific scenario, we have chosen to not provide scalafixes which automatically patch the affected call sites.
Despite being a patch release, this update contains two major notable feature additions: full tracing support for Scala Native applications (including enhanced exceptions!), and significantly improved performance for Deferred
when IO
is the base monad. Regarding the latter, since Deferred
is at the core of most concurrent logic written against Cats Effect, it is expected that this change will result in some noticeable performance improvements in most applications, though it is hard to predict exactly how pronounced this effect will be.
User-Facing Pull Requests
- #3284 – Added a specialized version of
Deferred
based onIOFiber
's machinery (@djspiewak) - #3226 – Release loser eagerly in
Resource.race
(@armanbilge) - #3315 – Use configurable
reportFailure
forMainThread
(@armanbilge) - #3305 – More detailed warning for starvation checker (@armanbilge)
- #3310 –
IOLocal
micro-optimizations (@armanbilge) - #3195 – Tracing for Scala Native (@armanbilge)
- #3322 – Documentation fixes and improvements (@djspiewak)
Very special thanks to all of you!