Skip to content

Bump cats-effect_2.12 from 0.4 to 3.0-26ef642 - #111

Closed
dependabot-preview[bot] wants to merge 1 commit into
masterfrom
dependabot/maven/org.typelevel-cats-effect_2.12-3.0-26ef642
Closed

Bump cats-effect_2.12 from 0.4 to 3.0-26ef642#111
dependabot-preview[bot] wants to merge 1 commit into
masterfrom
dependabot/maven/org.typelevel-cats-effect_2.12-3.0-26ef642

Conversation

@dependabot-preview

Copy link
Copy Markdown
Contributor

Bumps cats-effect_2.12 from 0.4 to 3.0-26ef642.

Release notes

Sourced from cats-effect_2.12's releases.

v2.2.0-RC1

This is the seventh major release in the Cats Effect 2.x lineage and the first release candidate for a minor release in this line. It is fully binary compatible with all 2.x.y releases. As previously noted, this is the first Cats Effect release to be exclusively published for ScalaJS 1.x; there are no 0.6.x cross-releases.

This is a relatively large release with a few major changes, which is why we're following a release candidate process. We expect 2.2.0 final to be released within a few weeks, depending on feedback. Despite the "release candidate" moniker, we do not anticipate any serious issues with this release; please try it out and report any problems as soon as possible!

Notable New Features

Asynchronous Tracing

IO tracing is probably the single most-requested Cats Effect feature, and it's finally here! Thanks to the tireless work of @RaasAhsan, IO now has a basic, high-performance asynchronous tracing mechanism. Note that this mechanism has very different internals from the async tracing already available in Akka and ZIO, and thus comes with a different set of tradeoffs. Also please remember that no async tracing on the JVM is perfectly accurate, and you may see misleading trace frames depending on your program. Despite all this, the added information is very welcome and sometimes quite helpful in tracking down issues!

This is what it looks like:

IOTrace: 13 frames captured, 0 omitted
  ├ flatMap at org.simpleapp.example.Example.run (Example.scala:67)
  ├ flatMap at org.simpleapp.example.Example.program (Example.scala:57)
  ├ flatMap at org.simpleapp.example.Example.program (Example.scala:58)
  ├ flatMap at org.simpleapp.example.Example.program (Example.scala:59)
  ├ flatMap at org.simpleapp.example.Example.program (Example.scala:60)
  ├ async at org.simpleapp.example.Example.program (Example.scala:60)
  ├ flatMap at org.simpleapp.example.Example.program (Example.scala:61)
  ├ flatMap at org.simpleapp.example.Example.program (Example.scala:60)
  ├ flatMap at org.simpleapp.example.Example.program2 (Example.scala:51)
  ├ map at org.simpleapp.example.Example.program2 (Example.scala:52)
  ├ map at org.simpleapp.example.Example.program (Example.scala:60)
  ├ map at org.simpleapp.example.Example.program (Example.scala:62)
  ╰ flatMap at org.simpleapp.example.Example.run (Example.scala:67)

It's important to understand that this feature is very new and we have a lot of things we want to improve about it! We need user feedback to guide this process. Please file issues and/or chat us up in Gitter if you have ideas, and especially if you see problems!

Tracing has three modes:

  • Disabled
  • Cached (the default)
  • Full

These are all governed by the cats.effect.stackTracingMode system property and are global to the JVM. As a rough performance reference, at present, Cached tracing imposes a roughly 10% performance penalty in synthetic benchmarks on asynchronous IOs. This difference should be entirely impossible to observe outside of microbenchmarks (though we would love to hear otherwise if you see evidence to the contrary!). Full tracing imposes an exceptionally high performance cost, and is expected to be used only in development environments when specifically attempting to track down bugs. Disabled tracing imposes an extremely negligible penalty, and should be used in production if Cached tracing imposes a noticeable performance hit. It is recommended that you stick with the default tracing mode in most cases.

Cached tracing produces a single linear trace of the last 15 IO actions (roughly). This tracing mode uses heuristics to determine call-site information on functions like flatMap and async, and those heuristics can be misleading, particularly when used with monad transformers or types like Resource or Stream. If you have ideas for how to improve these heuristics, please let us know!

Full tracing captures a full JVM stack-trace for every call into IO, which results in an extremely comprehensive picture of your asynchronous control flow. This imposes a significant performance cost, but it makes it possible to see through complex compositions such as monad transformers or third-party code. This is an appropriate mode for development when the heuristics which generate a Cached trace are insufficient or misleading.

The IO.traced function produces a backtrace from the call-site, and this object provides a printFiberTrace effect which renders the trace to standard error. Additionally, unhandled exceptions are enriched with trace information in order to make diagnosis easier.

We want your feedback! There are so many different things that we can do with this functionality, and we want your opinions on how it should work and how it can be improved. File issues, talk to us, try it out, tweet angrily, you know the drill.

Please note that this API is new in 2.2.0-RC1 and we may make changes to it before 2.2.0 final is released.

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Pull request limits (per update run and/or open at any time)
  • Automerge options (never/patch/minor, and dev/runtime dependencies)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

@dependabot-preview

Copy link
Copy Markdown
Contributor Author

Superseded by #112.

@dependabot-preview
dependabot-preview Bot deleted the dependabot/maven/org.typelevel-cats-effect_2.12-3.0-26ef642 branch August 5, 2020 03:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants