In 3.5.0 there was a breaking semantic change to async/async_:
As of 3.5.0, the following is now considered to be uncancelable:
IO {
// ...
None // we aren't returning a finalizer
}
}
Previously, the above was cancelable without any caveats. Notably, this applies to all uses of the async_ constructor!
There are no new laws to ensure this behavior, a build updating to 3.5.1 passes without having to add uncancelability to the implemenation of async.
I think this may be a potential footgun for any third-party implementors of CE typeclasses if the laws don't specify this behavior.
In 3.5.0 there was a breaking semantic change to
async/async_:There are no new laws to ensure this behavior, a build updating to 3.5.1 passes without having to add uncancelability to the implemenation of
async.I think this may be a potential footgun for any third-party implementors of CE typeclasses if the laws don't specify this behavior.