NEWS.md
Changed the way we create future objects to stay compatible with new versions of future. Apparently the way we were doing it was never idiomatic and only worked by accident. (#121)
Fixed #122: Use future::future(..., lazy = TRUE) to avoid manual capturing of state within future_promise (Thank you, @HenrikBengtsson! #123)
is.promising is now an S3 method. (#104)future_promise() received a speed improvement when submitting many requests with a minimal number of future workers. If future_promise() runs out of available future workers, then future_promise() will preemptively return for the remainder of the current later execution. While it is possible for future to finish a job before submitting all of the future_promise() requests, the time saved by not asking future’s worker availability will be faster overall than if a few jobs were submitted early. (#78)
Fixed #86: future_promise() spuriously reports unhandled errors. (#90)
Move fastmap from Suggests to Imports for better renv discovery. (#87)
Added future_promise() which returns a promise that executes the expression using future::future(). future_promise() should (typically) be a drop-in replacement for any future::future() function call. future_promise() will not execute future work faster than future::future(), but future_promise() will only submit future jobs if a worker is available. If no workers are available, future_promise() will hold the expression information in a promise until a worker does become available to better take advantage of computing resources available to the main R session. For more information, please see the future_promise() article. (#62)
Added visibility support for Promise$then(onFulfilled). (#59)
future::resolved() and future::value() by discarding the corrupt future. (#37)Fixed #49: promise_all() previously did not handle NULL values correctly. (#50))
new_promise_domain now takes a wrapOnFinally argument, which can be used to intercept registration of finally(). Previous versions treated finally as passing the same callback to then(onFulfilled=..., onRejected=...), and ignoring the result; for backward compatibility, promise domains will still treat finally that way by default (i.e. if wrapOnFinally is NULL, then finally will result in wrapOnFulfilled and wrapOnRejected being called, but if wrapOnFinally is provided then only wrapOnFinally will be called). (#43)