Revision history for Perl module Promise::ES6
0.25
- Make async/await tests require a suitably modern F::AA.
0.24 Fri 16 Jul 2021
- Added EXPERIMENTAL async/await support via Future::AsyncAwait.
- Fix tests under Devel::Cover.
0.23 Wed 15 Jul 2020
- Undefined or missing rejection values now trigger a warning.
0.22 Sun 19 Apr 2020
- BUG FIX: finally() within a callback no longer produces
action-at-a-distance bugs from reuse of package variables.
- BUG FIX: Resolve callbacks now properly defer propagation when an
unfulfilled promise is given as the resolution value.
- Promise::ES6 can now “transparently” work in asynchronous mode via the
new use_event() function. The old separate classes will eventually be
deprecated.
- allSettled() method is added.
- Unhandled rejection warnings now show the stringification of the
promise object itself. This can help with debugging.
0.21 Sun 29 Mar 2020
- BUG FIX: all() and race() now recognize all “then()”-able objects (not
merely Promise::ES6 instances) as promises.
- BUG FIX: Exceptions thrown in finally() callbacks are now assigned as the
promise’s rejection value. (Previously undef was errantly assigned as the
rejection value.)
0.20 Sat 22 Feb 2020
- We now recognize all “then()”-able objects as promises. This facilitates
interoperability with other promise implementations but also creates
“false-positive” interactions with Future. (NB: This change omitted all()
and race(); the next version fixes this.)
- BREAKING CHANGE (minor): finally() callbacks now run in scalar context.
(The return is ignored, though, unless you return a promise that rejects.)
- BUG FIX: finally() callbacks now handle rejected promises as returns
according to the ES6 specification.
- BUG FIX: Promises that reject because a rejected promise was returned from
a callback will now warn if the “consequent” rejection is unhandled.
0.19 Thu 20 Feb 2020
- BREAKING CHANGE / BUG FIX: finally() now matches the ES6 standard better.
While the erstwhile differences weren’t documented, they’re salient enough
to be noticeable. That said, it seems unlikely that anything depended on the
old (useless?) behavior.
* Its callback no longer receives any arguments.
* Its callback runs in void context. (NB: Changed to scalar in 0.20.)
* Its returned promise now duplicates the original if the callback
succeeds. This means that unhandled rejection warnings will now fire
correctly from finally().
- BUG FIX: all() and race() now correctly handle all promises’ rejections.
- Anything that has a then() method is now regarded as a promise. This allows
easier compatibility with other promise implementations.
- All unresolved promises—including those resolved immediately—now prompt
uncaught-rejection warnings. The prior behavior of suppressing the warning
for immediately-rejected promises made sense under initial implementations
of the uncaught-rejection warning but now appears to serve no useful end.
0.18 Thu 16 Jan 2020
- Rejected promises no longer “repromise” their rejection values. Previously
this module would attempt to settle a value given to a rejector callback
in the same way as with a value given to a resolver callback; however,
this behavior deviated from ES6 behavior. Since it was undocumented anyway,
it’s removed here.
- Fix t/mojo.t to abort if given an unworkable Mojolicious version.
0.17 Sun 5 Jan 2020
- Optimization: remove extra call to isa(), and use $self rather than $_[0].
(Thank you, bdraco!)
0.16 Tue 31 Dec 2019
- Optimization: reuse coderefs in all() and race().
0.15 Thu 19 Dec 2019
- BUG FIX: Make all() ignore rejections after the first one.
- Promise::ES6’s internal representation has changed to reduce memory usage.
Any code that may depend on the former internals will likely be broken.
- Speed up implementation.
- Clarify intent when an executor function $resolve_cr is passed a promise.
- Make Mojo subclass require a sufficiently modern Mojo::IOLoop.
- Update Future.pm docs a bit.
- Refactor implementation to prepare for XS backend.
0.14 Wed 27 Nov 2019
- Fix test by requiring a reasonably recent Test::More.
0.13 Tue 26 Nov 2019
- Provide Future conversion logic.
- Flesh out Mojo.pm documentation.
0.12 Thu 21 Nov 2019
- Fix event-loop logic to run ->then() asynchronously.
- Remove left-in Data::Dumper.
- Add Mojolicious backend.
0.11 Fri 15 Nov 2019
- Fix memory leak in callback propagation.
0.10 Thu 14 Nov 2019
- Fix ::AnyEvent and ::IOAsync to pass values to callbacks.
0.09 Thu 14 Nov 2019
- Update documentation with discussions of synchronous operation and
cancellation.
- Add Promise::ES6::AnyEvent and Promise::ES6::IOAsync to implement
Promises/A+ support. (EXPERIMENTAL)
- Fix warnings in tests on old Perl versions.
0.08 Sun 22 Sep 2019
- Fix memory leaks in pre-5.18 perls, and proactively delete internal
references.
- Update documentation about memory leaks.
0.07 Tue 17 Sep 2019
- Fix a number of memory leaks. (This necessitated some significant
changes underneath.)
- Fix spurious unhandled-rejection warnings. These now happen at DESTROY
time rather than right away. (I consider this too subtle of a change to
be “breaking”.)
- Add more tests.
0.06 Thu 12 Sep 2019
- Issue #2: Make all() resolve when given an empty array reference.
0.05 Wed 31 Jul 2019
- Issue #1: Prevent warn() when creating a pre-rejected promise.
0.04 Mon 4 Mar 2019
- Fix missing test dependency. (doh!)
0.03 Sat 2 Mar 2019
- warn() on unhandled promise rejection.
0.02 Wed 13 Feb 2019
- Make tests Windows-compatible. (cf. RT #128491)
No production changes.
0.01 Mon 11 Feb 2019
- Initial release