chore(deps): update dependency org.typelevel:cats-effect to v3.7-4972921#197
Open
renovate[bot] wants to merge 1 commit into
Open
chore(deps): update dependency org.typelevel:cats-effect to v3.7-4972921#197renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
5081954 to
91fece7
Compare
91fece7 to
c4b269a
Compare
fd082be to
8523f91
Compare
d17452c to
c4d0d4e
Compare
1487e09 to
f7acd97
Compare
f021827 to
9f6b24d
Compare
5fbc9d4 to
d40b7f4
Compare
a3e8338 to
b77bee4
Compare
b77bee4 to
8c239a6
Compare
9e02856 to
00f458d
Compare
00f458d to
ff7af0f
Compare
ff7af0f to
2f16ff2
Compare
2f16ff2 to
e5ee527
Compare
e5ee527 to
634820d
Compare
a8c3b86 to
2e2c94f
Compare
2e2c94f to
c4a9884
Compare
6c04a59 to
2f23c41
Compare
5408638 to
411657f
Compare
5cc7919 to
aecbaf8
Compare
d96273e to
a9b8950
Compare
831090e to
a9397ba
Compare
a9397ba to
b8d0874
Compare
43e0f7e to
9a8af76
Compare
588c0e0 to
8721e59
Compare
8721e59 to
6724087
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
3.6-623178c→3.7-4972921Release Notes
typelevel/cats-effect (org.typelevel:cats-effect)
v3.7.0Compare Source
This is the fifty-ninth release in the Cats Effect 3.x lineage. It is fully binary compatible with every 3.x release and fully source-compatible with the 3.7.x lineage.
What's Changed
This is a relatively smaller minor release jump relative to 3.6.x since it contains a major and long-anticipated enhancement: support for Scala Native 0.5, including full multithreading on LLVM! This has been a very long time coming, and we've been planning how to provide this support and planting the seeds for several years now. As noted in previous release notes, the integrated runtime released in 3.6.0 provides the basic building blocks for true, practically usable multithreaded asynchronous I/O on LLVM, and this release finally brings all of those pieces to fruition.
Full support has been implemented for
epollandkqueue, and we intend to extend this support toio_uringin the future. These polling systems have been significantly upgraded and enhanced since 3.6.x in order to support the same sort of thread coordination that has been present on the JVM from the beginning.Of course, the largest piece of this is the
WorkStealingThreadPoolitself. This was ported from JVM-only to cross-build entirely on both JVM and LLVM targets. Surprisingly, almost no changes were required to make this possible! It is a testament to the thought and effort which went into Scala Native 0.5 that this port was dramatically smoother and less complex than anyone could have reasonably predicted. While we did run into a few minor issues with Scala Native, only one major problem with its multithreading support was encountered, and it only applies in a very niche scenario which was easily worked around.We really cannot stress enough how impressed we are with Scala Center and Virtus' work on this front. Scala Native 0.5 is quite the triumph, and Cats Effect 3.7 is the proof. Going forward, you should essentially expect rough parity between scheduling functionality on JVM and LLVM, with JavaScript now being the unusual one (due to its single-threaded nature).
As an aside, it's worth noting that this parity holds despite the fact that Scala Native actually implements subtly different memory publication semantics than the JVM in some very specific circumstances. The Cats Effect concurrency state model (i.e.
Ref/Deferred) is such that these semantic differences are entirely invisible in userspace, while the performance benefits are present regardless. This is one example of the careful planning and coordination which went into this release spanning across many people and multiple projects.The one area in which Cats Effect on Scala Native meaningfully lags behind the JVM is fiber tracing. This functionality should exist on LLVM, but it appears that the APIs do not work correctly at runtime. It is expected that these bugs will be resolved in a future Scala Native release, at which point we'll be able to enable the functionality in Cats Effect.
Enhancements
SecureRandominstance toSyncIOcompanion by @qxrein in #4324realTimeZonedDateTimetoClockJVM extensions by @mmienko in #4316blockingandinterruptibleon Scala Native by @djspiewak in #4378IOLocal#asLocal[F[_]]:Local[F,A]by @NthPortal in #4438awaitEventto expose the full featureset of kqueue by @rahulrangers in #4423KeyedMutexby @BalmungSan in #4065AtomicMapby @BalmungSan in #4424SyncIO.realTime*methods withClockimplementation by @satorg in #4522LiftIOfromLiftValueby @NthPortal in #4481Lift{Value,Kind}instances forResourceby @NthPortal in #4478Bug Fixes
IOFiber#{_join,_cancel}volatile on Native by @durban in #4400IORuntimeBuilder#addPolleron Scala.js by @djspiewak in #4419TimerHeapvolatile on native by @armanbilge in #4443Documentation
MapRefcan be total by @mtomko in #4475IOLocaldoc by @japgolly in #4551Behind the Scenes
Uncategorized
New Contributors
Full Changelog: typelevel/cats-effect@v3.6.3...v3.7.0
v3.6.3Compare Source
This is the fifty-eighth release in the Cats Effect 3.x lineage. It is fully binary compatible with every 3.x release and fully source-compatible with the 3.6.x lineage.
What's Changed
This release fixes a pretty nasty bug introduced in 3.6.2 which frequently results in the thread pool being entirely poisoned, producing severe performance degradation that could only be resolved by restarting the process. It is highly recommended that all users on 3.6.2 upgrade to 3.6.3 as soon as possible.
Bug Fixes
Full Changelog: typelevel/cats-effect@v3.6.2...v3.6.3
v3.6.2This is the fifty-seventh release in the Cats Effect 3.x lineage. It is fully binary compatible with every 3.x release and fully source-compatible with the 3.6.x lineage.
What's Changed
This release addresses a performance issue since 3.6.0 that was reported to be somewhat severe in applications which leverage asynchronous I/O without using the new polling system. Extensive discussion of this issue can be found in #4328. While a workaround was possible, the regression was certainly undesirable. We've changed the polling logic to be considerably less aggressive. In particular, threads will only poll if the polling system has outstanding events which require polling. This means that any applications which make no use of the polling system should see marginal (if any) overhead relative to pre-3.6 versions of Cats Effect, while applications which lean heavily on the new integrated runtime will still see the full benefits thereof.
Note that there is a somewhat pathological case here where an application makes use of the polling system (usually via some dependency, like Skunk or Ember), but does not make heavy use of that code path while simultaneously making very heavy use of other asynchronous I/O mechanisms (such as Netty or Blaze, often indirectly via other dependencies). In this scenario, the worker threads will be forced to make the more expensive polling syscalls, but those calls will often yield very small or empty batches while the majority of the work is enqueued externally (via other async I/O mechanisms). This will result in meaningful overhead relative to the theoretical optimal behavior.
We made the conscious decision in 3.6.0 to prioritize the performance of the integrated runtime, and while we certainly still want all use cases to behave as optimally as possible, this does mean that we occasionally needed to make some tradeoffs in order to achieve the performance goals we had in mind. Our hope is that as the ecosystem continues to adapt to the use of the integrated runtime (particularly with the rise of Scala Native 0.5, where there are essentially no other viable options), these edge cases will become quite rare.
Enhancements
Bug Fixes
IO#syncStepinterpreter stack-safe by @pantShrey in #4352mayInterruptIfRunning = truewhen cancelingCompletableFutureby @istreeter in #4375EPOLLHUPinEpollSystemby @rahulrangers in #4422Documentation
IOLocalscaladoc by @arinal in #4391IOApp#pollingSystemby @armanbilge in #4222Behind the Scenes
New Contributors
Full Changelog: typelevel/cats-effect@v3.6.1...v3.6.2
v3.6.1This is the fifty-sixth release in the Cats Effect 3.x lineage. It is fully binary compatible with every 3.x release and fully source-compatible with the 3.6.x lineage. Please note that we did break binary compatibility with 3.6.0 RC1 (not with 3.5.x) in order to fix some things, so if you published anything against that release you will need to reconsider your life choices.
What's Changed
Bug Fixes
IO.onErrorpackage private by @CJSmith-0141 in #4343Documentation
PollingSystem#metricsby @antoniojimeneznieto in #4334Behind the Scenes
New Contributors
Full Changelog: typelevel/cats-effect@v3.6.0...v3.6.1
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.