This is the forty-ninth 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.5.x release.
Warning
The 3.5.x series contains some changes that may be semantically breaking with respect to earlier 3.x releases. If you're using fs2, http4s, or other libraries from the ecosystem, make sure you've upgraded to versions of these libraries that are compatible with this release (for fs2, that's 3.7.0+, for http4s it's 0.23.19+)!
Additionally, if you're using methods like fromFuture
, make sure you're aware of the major changes to async
, described in these release notes.
What's Changed
The most significant change in this release involves the complete greenfield rewrite of Dispatcher
. While Dispatcher
is, in practice, one of the most-used components of Cats Effect apart from IO
itself, it is also one of the oldest and most "accreted" parts of the codebase. The original variant of Dispatcher
had far fewer features and was thrown together relatively quickly during the 3.0 milestone process, and every change and enhancement to its functionality has been layered on top of that foundation.
In this release, we started with an empty editor buffer and rebuilt the whole thing, taking the opportunity to correct a number of corner cases in semantics while significantly beefing up the test suite. We're very confident that the results are much more stable and reliable than the previous iteration, and we're excited to get it into everyone's hands!
Enhancements
IORuntimeConfig
: reject invalid auto-yield and cancelation check thresholds by @durban in #3987- Rewrote
Dispatcher
by @djspiewak in #3923
Bug Fixes
- Fix a few Supervisor bugs by @durban in #3972
- Clear the CallbackStack more aggressively by @samspills in #3973
- Fix issue #3998 by @durban in #4001
- Fix issue #4002 by @durban in #4003
- Introduce
WeakList
and use inFiberMonitor
by @armanbilge in #3964
Documentation
- Fix typos in
Async
scaladoc by @durban in #3995 - Removes language:postfixOps from tutorial as it is not used. by @froth in #4025
Behind the Scenes
- Update versions for 3.5.3 by @armanbilge in #3957
- Fix Discord post step in release job by @armanbilge in #3956
- Refine steps about post-release scripts by @armanbilge in #3961
- Attempt to cancel the running test in case of a timeout by @durban in #3969
- Add explanatory comment to Mutex implementation by @durban in #3968
- Updated copyright year by @djspiewak in #3976
- Try to fix issue #3979 by @durban in #3983
- Fixed
WeakList
headers by @djspiewak in #4027
New Contributors
Full Changelog: v3.5.3...v3.5.4