Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Remove Hopac Job overloads? #8

Closed
cmeeren opened this issue Nov 21, 2021 · 2 comments
Closed

RFC: Remove Hopac Job overloads? #8

cmeeren opened this issue Nov 21, 2021 · 2 comments

Comments

@cmeeren
Copy link
Owner

cmeeren commented Nov 21, 2021

Is anyone actually using the Job<_> overloads available throughout Felicity? Please let me know. I am considering removing them.

Felicity uses Hopac for performance reasons. When I made the switch from F#'s Async<_> to Hopac's Job<_> long ago, I also made overloads accepting Job<_> throughout Felicity, but I have never used them myself; I only use the Async<_> overloads.

The way I see it, Felicity's primary problem at the moment is too many overloads. This manifests itself in two ways:

  • When using Felicity, there may be problems where F#'s overload resolution can't find a unique overload, meaning that type annotations are needed and things get more verbose.
  • When developing Felicity, I have to add a lot of overloads for all API additions.

Since the Job<_> overloads are named distinctly from the Async<_> ones, the first point is not relevant here; it is the second point above that would improve by removing the Job<_> overloads.

Furthermore, this would make Hopac an implementation detail, meaning that I could switch it out if I found anything better. (Not sure what that would be or if it will ever be relevant; I just tried switching to F#'s native task CE, but the performance was 3x worse.)

@MortalFlesh
Copy link

Hello,
I don't use Job<_> anywhere as far as I remember. I use almost exclusively Async<Result<_, _>>.

So it is fine by me 👍

@cmeeren
Copy link
Owner Author

cmeeren commented May 2, 2022

Hopac was removed in v0.20.0.

The Job overloads were replaced with Task overloads though, so nothing much changed in that regard.

@cmeeren cmeeren closed this as completed May 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants