cats-effect
cats-effect copied to clipboard
Ecosystem upgrade megathread
Here, we can track the progress of major libraries upgrading to CE3.
That should be a nice way of finding out whether any of them are going to be late with the upgrade, or straight-up impossible to migrate in a relatively source-compatible fashion.
If you have edit rights, feel free to add more details / libraries.
I came here from your tweet 😅 In cats, I did the following doc PR to collect the libs/projects related to the typelevel ecosystem
https://github.com/typelevel/cats/pull/3609
It may be relevant to this thread I guess Cheers 😉
Are you using cats-effect in production? Let us know what libraries from the ecosystem you're using
In addition to the things mentioned in the above comment;
- https://github.com/typelevel/scalacheck-effect
- https://github.com/satabin/fs2-data
- https://github.com/circe/circe-fs2
- https://github.com/ovotech/http4s-micrometer-metrics
- https://github.com/ChristopherDavenport/log4cats
- https://github.com/ChristopherDavenport/fuuid / fuuid-doobie
- https://github.com/profunktor/fs2-rabbit/
- https://github.com/ChristopherDavenport/cormorant
- https://github.com/kubukoz/slick-effect
- streamz - WIP at https://github.com/krasserm/streamz/pull/80/files
@Daenyth added. @ChristopherDavenport -verse is a vital part of it!
btw. you have edit rights, feel free to add them to OP
Can we roll fuuid in to cats-effect-std module?
Can we roll fuuid in to cats-effect-std module?
I'm all for it. Also a small Random[F]
, Chris's unique
and https://github.com/ChristopherDavenport/system-effect/blob/master/src/main/scala/io/chrisdavenport/system/effect/Environment.scala
Added, thanks!
Can we open issues for each library/class we'd like to port to std
?
Random - https://github.com/christopherdavenport/random Cats-Effect-Time - https://github.com/ChristopherDavenport/cats-effect-time (scalajs artifact size complications)
@RaasAhsan I like the idea, I can create some later on, unless someone beats me to it
For ZIO interop, the repo is this one https://github.com/zio/interop-cats
fs2-rabbit has a CE/FS2 3.0 branch with all tests green
catbird
seems to be missing from the list (Finch is using it for example).
I tried to implement the new typeclasses but I'm again blocked by cancelation requirements. My thoughts are here: https://github.com/travisbrown/catbird/pull/267
redis4cats - no progress so far it seems
A note for anyone passing by, if you want to help, there's no official migration guide yet, but some useful information is being gathered in https://github.com/typelevel/cats-effect/issues/1048 - should be a good place to start.
@kubukoz If you've got some time to spare, do you think you could chase down current status on some of this? It'd be good to get a table going in the OP to indicate status and blockers if there are any.
https://github.com/TimWSpence/cats-stm is running on CE3 :)
oof, thanks for the reminder @djspiewak - I'll do the rounds now.
Ney @felixbr, are you planning on updating the catbird repository to the latest milestones (no rush though)? I can't comment there, since I'm blocked 😅
Added a table to clean this all up, now thinking of creating a project to track this instead - it'll be easier to spot which projects need attention. Thoughts?
The table is great! Also I can report that munit-cats-effect already releases for CE3, which is good because it has a bunch of downstream dependencies. In that vein, cats-effect-testing is also now also fully updated.
Oh, it releases for both. I guess my cmd+f only showed me the last version here and I gave up. Good, good. Thanks!
Yeah the munit-cats-effect build is unique to my knowledge. The only one remotely close to it is Weaver. Most projects are just maintaining separate series branches because so much source has to be changed.
Ney @felixbr, are you planning on updating the catbird repository to the latest milestones (no rush though)?
I will try to update the PR from M2 to M5. It will probably not be ready for a merge into master for a while until we decide how to go about making the switch. We also haven't checked yet if my PR still covers all use-cases of downstream libraries (e.g. finch
).
I'm a bit concerned that Monix
doesn't even seem to have a WIP migration to CE3. It's one of the few actual implementers of the full CE spec and finalizing CE3 without seeing if other implementers can follow suite with IO
would not be ideal in my mind. If a library like Monix
could not implement CE3 fully, it would also lose access to (some of) the fs2
ecosystem.
Not trying to push anyone, just thinking out loud.
For catbird
we might have to drop certain CE features because we cannot implement the full spec (neither for CE2 nor CE3) and the requirements to be compliant/lawful seem even stricter now in some cases.
I'm a bit concerned that Monix doesn't even seem to have a WIP migration to CE3. It's one of the few actual implementers of the full CE spec and finalizing CE3 without seeing if other implementers can follow suite with IO would not be ideal in my mind. If a library like Monix could not implement CE3 fully, it would also lose access to (some of) the fs2 ecosystem.
Agreed. I think the blocker there has mostly been people's time and availability. It is believed that the major new elements will be straightforward to implement, but no one has.
and the requirements to be compliant/lawful seem even stricter now in some cases.
They definitely are. Kind of sucks for projects like catbird, but it makes the ecosystem a bit tighter and more generic, which was the goal.
Note to self: we're missing on the list:
- softwaremill/tapir
- odin
- weaver
will update the list and ping the maintainers later
fs2-kafka now has a milestone release (v3.0.0-M1) on RC2.
I'll probably do a round of updates in the post this weekend :) seeing some commits in these repos in my inbox every day!
Most projects seem to be doing fine (and have updated to RC2) :)