This is the forty-first release in the Cats Effect 3.x lineage. It is fully binary compatible with every 3.x release. It is expected to be fully source- and binary-compatible with the final version of 3.5.0, but there are no guarantees of such.
As with all release candidates, we are not aware of any bugs or issues preventing production use, but we are making this release precisely because we know that the changes in this version are of a sufficiently significant nature as to benefit from broader testing and experimentation across the ecosystem before we incorporate them into a stable release. If you have the time, please do take a moment to try this version in your library or service and see how things work!
Far and away the most significant change in this release is the rewriting of the timer data structure within WorkerThread
(courtesy of @durban!). This results in significantly higher sleep
performance, particularly under load when most timers are being canceled. If you previously tested an earlier RC and saw issues with these types of scenarios, we recommend you take another look using this latest RC!
For the full, cumulative list of changes in the 3.5.0 release, please also see the release notes for RC1, RC2, and RC3. This list only encompasses the changes from RC3 to RC4 (not including changes already released and ported from the 3.4.x line).
User-Facing Pull Requests
- #3499 – Shared timers (@durban)
- #3518 –
AtomicCell#get
should not semantically block (@armanbilge) - #3465 – Make
Console#readLine
cancelable (@armanbilge) - #3435 – Further optimize
IODeferred
(@armanbilge) - #3480 – Make
HotSwap
safe to concurrent access (@armanbilge) - #3484 – Allow that the renamed blocker thread is terminated (@aeons)
- #3478 – Fix
IORuntimeBuilder
failureReporter config on JS (@armanbilge) - #3477, #3479 – Documentation fixes and improvements (@amast09, @durban)
Thank you so much!