Comments (6)
I think I can update the code and make the overload resolution work without needing the NoEagerConstraintApplication
attribute.
The problem of using that attribute is worst than just forcing everyone to 6.0.2. AFAIK that attribute won't be recognized by earlier F# compilers.
from fsharp.control.taskseq.
Good points, @gusty. But considering that task
uses the same attribute in FSharp.Core, and this library cannot be used without task
, the backward compat issue with earlier compilers is irrelevant. Same is true, for instance, for the resumable code in this lib, which isn't supported either by earlier compilers.
@bartelink I've downed the version to 6.0.1. I may reconsider at some point to go to 6.0.0, but that requires a different approach for the overload resolution that I'm not to keen on trying.
This will be part of whatever the next version is (either 0.3.1 or 0.4.0).
from fsharp.control.taskseq.
Tried to reduce the dependency:
FSharp.Core
v6.0.1
is required for theNoEagerConstraintApplication
compiler hint- the tests pass with 6.0.1
Would still be interested to know the nature of the hard requirement for 6.0.2...
from fsharp.control.taskseq.
I tried the “earliest version possible”, and the NoEagerConstraintApplication
is a requirement, the overload resolution won’t work without it.
The earliest I could make work with everything in the resumable code was 6.0.2, but I’ve changed quite a few things since the first TaskSeq versions, it’s possible I removed something that doesn’t require that anymore. I’d have no problem making the dependency on Core a lower version. In fact, that’d be a plus.
I’ll have to dive into history though, hopefully I recorded the ‘why’ of the decision.
from fsharp.control.taskseq.
It was done as part of #87, and from the text, it suggests I tried to go as low as possible. Let me create a quick PR and see what happens if I use 6.0.1.
See #123, running now.
from fsharp.control.taskseq.
Thanks for looking - tbh if I'd seen the need for the attribute, I probably wouldn't have asked in the first instance, but I do appreciate you investigating and the fact that we now have a paper trail ;)
While rippling dependency updates are not ideal, it's clear that there's a reason so this is not a real problem. It's not inconceivable that there are ancillary perf and stability benefits to 6.0.2, so once the option of targeting 6.0.0 is gone it's less critical.
In Equinox and Propulsion, I've since bitten the bullet and upped their min req to 6.0.7 (in order to ensure 6.0.6's fix for the Async.Parallel stack overflow edge case is forced in)
Happy for this to be closed as and when you see fit.
from fsharp.control.taskseq.
Related Issues (20)
- Implement `^TaskLike` similar to F#'s `task` HOT 1
- Remove irrelevant internals from the public surface area HOT 1
- Port TaskSeq.takeWhileInclusive HOT 9
- Productize Task/ValueTask/Async.`ignore` HOT 5
- Remove AggregateException wrapping in Async CE `for` extension and prevent threadpool transition HOT 10
- Add `skipWhile`, `skipWhileInclusive` with async variants, and `takeUntil` etc
- Add better support for cancellation tokens passing HOT 12
- Consider `StartImmediateAsTask` instead of `StartAsTask` to prevent a thread hop HOT 3
- The file `release-notes.txt` shows up in the content files dependencies graph HOT 1
- TaskEx index
- TaskEx: ignore
- TaskEx: AwaitTaskCorrect / Task.toAsync / Async.ofTask
- TaskEx: Async.startImmediateAsTask
- TaskEx: parallelLimit
- Naming notes HOT 4
- Interoperating with CancellableTasks HOT 3
- Interoperating with existing F# async HOT 2
- Move release notes away from `fsproj` file HOT 1
- F# fails to determine which overload of `TaskSeqBuilder.Using` to use. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fsharp.control.taskseq.