v0.1.6
🚀 Switch from Task<T>
to ValueTask<T>
The async part of the api surface area has been migrated from using the Task<T>
type to the ValueTask<T>
type.
This allows saving a good amount of memory allocations, making our apps more performant.
Is this a breaking change? In short, no.
To expand on it a little bit more, it could be if you directly used a Task<T>
returned from one of the async methods, instead of await
ing it normally. In that case simply add .AsTask()
to turn the ValueTask<T>
into a Task<T>
and everything will be fine.
In all other normal usage scenarios, just await
ing on one of the async methods would work absolutely the same, while also allocating less memory 🎉
⚠️ Breaking changes
I've finally removed the TryGetResult<T>
type, marked as [Obsolete]
from a lot of time now.
It has been replaced a long ago with the MaybeValue<T>
type, which is better designed and used also as an input, and not just an output.
For more information about the change please read the "Breaking change" section of the v0.1.3 release.
The same goes for the Success
prop in the MaybeValue<T>
type, also marked as [Obsolete]
since the beginning and added just to allow a more pleasant transition from the old type to the new one.
🙏 Thanks
Thanks to the the great Marc Gravell and Stephen Toub for their writings on this subject, in particular this and this which helped clear my mind on the subject.