Releases: glessard/deferred
Improved queue handling
API improvements
-
API improvements when the
Failure
type isNever
: some accessors become non-Optional, while some functions become non-throwing. -
Made the
cancel()
method available only when it is usable by repeating it in conditional extensions. -
Added a customization point for cancellation for subclasses of
Deferred
. -
Added versions of
recover()
for error types more specific thanError
.
Typed Errors
Major update to deferred
, adding typed errors as a generic parameter, using the same parameter names as the standard library's Result
.
Another major change involves execution scheduling: execution now starts only once a Deferred
's result has been explicitly requested in some way. The notify
method is the primary way to accomplish this (along with onValue
and onError
), as well an explicit call to beginExecution()
.
Finally, the URLSessionTask wrapper has been moved to its own package, DeferredHTTP
.
5.1.0
5.0.0
5.0.0-b2
4.4.0
Improves performance by consolidating notifications and deallocations
- fewer calls to dispatch_async
- more work done in each dispatch_async
Improvements to and full testing of DeferredURLSessionTask
.
Added a split
method for any Deferred
whose value type is a tuple of 2, 3 or 4 elements. The return value is a tuple of Deferred
; if the original Deferred
's outcome is an Error
, then every Deferred
in the split is determined with the same Error
.
more api tweaks
-
added parameter labels to
determine()
methods (with fix-its.) The parameter-less versions didn't save anything much, while causing grief whenValue
has a type that implementsError
-
improved behaviour of
firstValue()
. Its outcome is now an error only when all the inputs are errors. -
the old behaviour is still provided by
firstDetermined()
.
api tweaks
made class Transferred: Deferred
public as a convenience.
renamed Determined<T>
to Outcome<T>
(no changes necessary.)
renamed some parameter labels for clarity (with deprecation/rename warnings.)
Swift 4.2 update
4.1.3 update CI configuration