Implementation Tracking
Things are looking very healthy for when this is ready for Stage advancement:
Implementations
- [x] Chrome (121): https://chromestatus.com/feature/5069575759069184
- [x] Firefox (115): https://bugzilla.mozilla.org/show_bug.cgi?id=1795816
- [x] Safari (16.4): https://webkit.org/blog/13966/webkit-features-in-safari-16-4/#javascript-and-webassembly
- [x] LibJS (July 2023): https://github.com/SerenityOS/serenity/pull/20047
- [x] polyfill: array-from-async
- [x] polyfill: core-js
This is considered "Baseline 2024" by MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fromAsync
Excellent—thank you for collating all of this together.
I plan on progressing this later this year. First we need to address the still-outstanding tasks in https://github.com/tc39/proposal-array-from-async/issues/14#issuecomment-1789806147. I have had little time to do these, but I hope to push the changes through over the next months.
Once those tasks are done, I will be able to present Array.fromAsync to Stage 4 hopefully later this year.
Engines will need to update their behavior to close sync iterables when they yield rejected promises (#49).
There is a pending test262 pull request (tc39/test262#4450). This change came from upstream in tc39/ecma262#1849, but it did not affect this proposal’s spec.
When I tested last month, V8 already should pass this test, while Safari 18.4 and Firefox 136.0 did not pass.
I’m not sure whether this tweak should block Stage 4, given that this change stemmed from a change to ecma262 upstream and not specifically this proposal.
I’m also not sure whether there are bugs filed for Safari and Firefox for tc39/ecma262#1849.
The mentioned test262 test has landed, which is usually sufficient to inform browsers about a change.
Safari tech preview should pass as well, since they implemented https://github.com/tc39/ecma262/pull/2600 and their implementation of fromAsync is self-hosted. It takes a while for things to hit stable, is all.
Firefox has not implemented https://github.com/tc39/ecma262/pull/2600 yet, but it's tracked in https://bugzilla.mozilla.org/show_bug.cgi?id=1610315 and they'll probably fix fromAsync at the same time.
Anyway, since there are two implementations of the spec'd behavior, this does not affect stage 4.
I have confirmed that Safari Technology Preview Release 219 (WebKit 20622.1.12) will pass tc39/test262#4450.
For future reference, the fix that made Chrome/V8 pass tc39/test262#4450 was in https://github.com/v8/v8/commit/6c3f7aa4c76af4c3e0c89c5c279f2b98867c35f0#diff-c18e5d5743326f6ba544801f6ce25154b785f759885651f98924d5b56dc1c2e6, on April 2024.
Conditional Stage 4 was achieved in plenary today. Let’s continue in #14.