This is the ninth 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
The main new feature of this release is the support for programmatically generating IO
runtime tracing information through the IO.trace
constructor, courtesy of @alexandrustana.
As always, this Cats Effect 3 release brings important bug-fixes and performance improvements. Namely, an oversight in the implementation of the improved par
operators from the 3.2.2 release, which could lead to nonterminating code in the face of concurrent errors, has been successfully identified and fixed.
Furthermore, a surprising Scala 3 regression which pertains to the conversion process of => A
thunks to () => A
(Function0
) instances, and its effect on IO.delay
constructor tracing was identified by @armanbilge. An elegant cross-platform solution has been implemented, which ultimately resulted in bringing the regressed performance of Scala 3 thunks back to the expected Scala 2 levels of performance.
We thank our tireless contributors for their outstanding work and we hope that you enjoy this release.
User-Facing Pull Requests
- #2174, #2227 – Add support for generating
IO
runtime traces usingIO.trace
(@alexandrustana, @vasilmkd) - #2226 – Fix cached tracing support for
IO.delay
and improveIO.delay
performance on Scala 3 (@armanbilge) - #2239 – Fix nontermination issue in
par
operators (@djspiewak) - #2208, #2213, #2232 – Documentation fixes and improvements (@bplommer, @vasilmkd)
Special thanks to each and every one of you! You are all awesome!