This is the fifth major release in the Cats Effect 3.x lineage. It is fully binary compatible with every 3.x release. It is fully source-compatible with every release in the 3.1.x lineage (with a small caveat that a leaked internal implementation detail was hidden from the public IORuntimeConfig
API, we hope that this does not cause trouble for anyone).
The primary focus of this release are substantial performance improvements to the IO
interop with the outside world (unsafeRun
methods), thanks to the outstanding work of @RafalSumislawski, SyncIO
API fixes, as well as some minor thread scheduling improvements in the face of blocking code running on the work stealing compute thread pool.
The long awaited migration guide by the tireless @kubukoz has been finally published. We cannot wait to hear your feedback.
Alongside these changes come the improvements to the project documentation and the tutorial on the website, including updated links to the new Typelevel Discord server.
Finally, this release brings Cats Effect 3 into the Scala 3.0.0 final world. We hope that you enjoy it.
User-Facing Pull Requests
- #1913 – Add striped locks to the
IORuntime
custom fiber callback hashtable (@vasilmkd) - #1879 – The "Dealing with cancelation" section of the documentation has been change to not include Semaphores anymore (@lrodero)
- #1687 – The great Cats Effect 3 Migration Guide (@kubukoz)
- #1935 #1937 – Intricate performance tuning of the
IORuntime
custom fiber callback hashtable (@RafalSumislawski) - #1880, #1941 – Build and test Cats Effect 3 against the latest JDK versions (@vasilmkd)
- #1943 – Hide leaked internal implementation detail from the public
IORuntimeConfig
API (@vasilmkd) - #1938 – Performance optimization for running externally submitted
Runnable
instances on the work stealing thread pool (@vasilmkd) - #1928 – Scheduling improvements when running blocking code on the work stealing thread pool (@vasilmkd)
- #1947 – Fix
SyncIO#>>
to take a by-name parameter (@vasilmkd) - #1921 – Documentation of cancelation boundaries (@TimWSpence)
- #1951, #1952 – Add a badge for the Typelevel Discord server (@paualarco)
- #1967 – Scala 3.0.0 support (dropped support for Scala 3.0.0-RC2 and 3.0.0-RC3) (@larsrh)
Special thanks to each and every one of you! You are all amazing.