Changelog for retry-0.7
0.7
- RetryPolicy has become RetryPolicyM, allowing for policy logic to consult the monad context.
- RetryPolicyM now takes a RetryStatus value. Use the function rsIterNum to preserve existing behavior of RetryPolicy only receiving the number.
- The monadic action now gets the RetryStatus on each try. Use const if you don't need it.
- recoverAll explicitly does not handle the standard async exceptions. Users are encouraged to do the same when using recovering, as catching async exceptions can be hazardous.
- We no longer re-export (<>) from Monoid.
- Utility functions simulatePolicy and simulatePolicyPP have been added which help predict how a policy will behave on each iteration.
0.6
- Actions are now retried in the original masking state, while
handlers continue to run in
MaskedInterruptible
(@maoe) - Added several tests confirming exception hierarchy semantics under
recovering
(@ozataman)
0.5
- Mitsutoshi's backoff work inspired a complete redo of the RetryPolicy interface, replacing it with a monoidal RetryPolicy. The result is a much thinner API that actually provides much more power to the end user.
- Now using microseconds in all premade policies. PLEASE TAKE CARE WHEN UPGRADING. It was a bad idea to use miliseconds and deviate from norms in the first place.
0.4
- Transitioned to using Edward Kmett's exceptions package instead of monad-control. Use 0.3 series if you still need monad-control support.
0.3
Thanks to John Wiegley and Michael Snoyman for their contributions:
- Now using monad-control instead of MonadCatchIO, which is widely agreed to be broken.
- Now using transformers instead of mtl, which was a broader than needed dependency.