-
Notifications
You must be signed in to change notification settings - Fork 64
Net10 #345
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
base: master
Are you sure you want to change the base?
Net10 #345
Conversation
| "version": "9.0", | ||
| "additionalVersions": "8.0" | ||
| "version": "10.0", | ||
| "additionalVersions": ["8.0", "9.0"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is necessary but temporarily have it here
| let! actual = | ||
| cancellableTaskResult { | ||
| use d = null | ||
| use d: IDisposableNull = null |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought this felt odd that this was complaining about the incompatible IAsyncDisposable vs IAsyncDisposable | null here. I locked it into IDisposableNull to allow me to continue building and testing other things
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I appreciate the work but we shouldn't replace net9.0 -> net10.0.
Things we should not do:
- Replace net9.0 outright.
- The 9 sdk is still under support until next year https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core
- We shouldn't replace tfm net9.0 -> net10.0 in libraries (things under src)
- This would be a breaking change
- The reason you choose a TFM in libraries is because it brings a set of APIs you need.
- In the case of netstandard2.1, it's because it provides IAsyncEnumerable/IAsyncDisposable/ValueTask natively
- In the case of net6.0, it's because it provides PooliingValueTask support
- In the case of 9.0, it's because of the Nullable/Nullness support in F# 9.0. (This is technically not a TFM limitation but an FSharp.Core version limitation. I didn't want to start forcing people to use FSharp.Core 9 on older TFMs so I drew a line in the sand at TFM 9.0)
- The only reason we would want to build against 10.0 is the RuntimeAsync work. However, there's an F# compiler limitation at the moment, so we can't ship with this until that's fixed.
- In either case, it would be additive and not remove the build target of net9.0
Things we can do:
- Add (not replace) net10.0 to test projects if we want to see how they work against 10 runtime
- Add net10.0 to benchmarks
- Update the various infrastructure like docker/yml/global.json to support being able to run 10.
Proposed Changes
Types of changes
What types of changes does your code introduce to FsToolkit.ErrorHandling?
Put an
xin the boxes that apply and remove ones that don't applyChecklist
Put an
xin the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.Further comments
If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc...