This is the sixteenth 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.3.x release. Note that source compatibility has been broken with 3.2.x in some minor areas. Scalafixes are available and should be automatically applied by Scala Steward if relevant.
This release contains bug fixes and performance enhancements to tracing and some other areas. Both enhanced exceptions and fiber dumps should now behave better on the latest versions of the JVM (which use a different top-level package identifier). Tracing on Scala.js can now be fully disabled if its overhead is too high, whereas previously some bookkeeping was retained even when tracing was configured to off.
Most significantly, Resource.uncancelable
previously contained a significant bug in which error states were rewritten within the block. This ultimately stemmed from a limitation in the original Resource
API with respect to full representation of outcomes, and it indirectly impacted all use of Async[Resource]
. Thanks to the efforts of @TimWSpence, these bugs have now been completely squashed with the addition of a new Resource
interpreter: allocatedCase
(originally proposed by @kubukoz). In the interest of maintaining forward-compatibility, this function is currently marked as package-private, but will be marked as public in Cats Effect 3.4.0.
User-Facing Pull Requests
- #2617 – Add
Resource#allocatedCase
(@TimWSpence) - #2665 – Fixes cancelling
CompletableFuture
on fiber cancellation (@LightSystem) - #2662 – micro-optimization: use
Map.empty
instead ofMap.apply
(@yanns) - #2642 – Only use
FiberAwareExecutionContext
if tracing is enabled (@armanbilge) - #2623 – Add
jdk.
to trace filter (@armanbilge) - #2609 – Fix trace filtering (@alexandrustana)
- #2607 – Duplicated fibers in fiber dump (@TimWSpence)
- #2600 – Handle interruption gracefully and halt the runtime on fatal errors (@vasilmkd)
- #2654, #2635, #2647, #2629, #2591 – Documentation fixes and improvements (@danicheg, @zarthross, @danicheg, @xuwei-k, @djspiewak)
Heartfelt thanks; you are all amazing!