This is the thirty-fifth 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.
This release rolls back the Deferred[IO, A]
optimizations for the time being due to a memory leak in certain common scenarios. In particular, any use of Fs2's interruptWhen
where the stream in question naturally completes quickly would hit this case relatively hard. Like, for example, Http4s Ember. We have a fix for the memory leak which needs a bit more testing before release, and we felt that, out of an abundance of caution, it is better to revert the changes immediately rather than waiting for the hardening.
User-Facing Pull Requests
- #3365 – Bypass
IO
-specializedDeferred
for now (@djspiewak) - #3351 – Fix cancelation handling in
memoize
(@armanbilge) - #3364 – Fix hang in
Dispatcher.sequential(await = true)
release (@armanbilge) - #3342 – Move the mbean initialization out of blocking and into delay (@mox692)
- #3361 – Fix
CallbackStack
leak on JS (@armanbilge) - #3357 – Fix null pointer in tracing on javascript (@Jasper-M)
- #3355, #3354 – Documentation fixes and improvements (@armanbilge, @samspills)
Thank you so very much!