Contact emails...@chromium.org

Explainer
https://github.com/WebAssembly/js-promise-integration/blob/main/proposals/js-promise-integration/Overview.md

Specification
https://github.com/WebAssembly/js-promise-integration/blob/main/proposals/js-promise-integration/Overview.md

Design docs
https://docs.google.com/document/d/16Us-pyte2-9DECJDfGm5tnUpfngJJOc8jbj54HMqE9Y/edit#heading=h.n1atlriavj6v

Summary

Stack Switching denotes a technology that allows programs to suspend and
resume computation. This is an active area that is part of the WebAssembly
standards track. See https://github.com/WebAssembly/stack-switching and
https://github.com/WebAssembly/meetings/tree/main/stack. This particular
feature refers to the integration between JavaScript Promises and stack
switching. This is described in more detail in
https://docs.google.com/document/d/16Us-pyte2-9DECJDfGm5tnUpfngJJOc8jbj54HMqE9Y/edit#


Blink componentBlink>JavaScript>WebAssembly
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EJavaScript%3EWebAssembly%22>

Search tagsstack switching
<https://chromestatus.com/features#tags:stack%20switching>, Promise
<https://chromestatus.com/features#tags:Promise>, JSPI
<https://chromestatus.com/features#tags:JSPI>

TAG reviewhttps://github.com/w3ctag/design-reviews/issues/809 Review was
declined, deferring to W3C WebAssembly CG

TAG review statusPending

Origin Trial NameWebAssembly JavaScript Promise Integration

Chromium Trial NameWebAssemblyJSPromiseIntegration

Origin Trial documentation link
https://github.com/WebAssembly/js-promise-integration

WebFeature UseCounter namekV8WasmJavaScriptPromiseIntegration

Risks


Interoperability and Compatibility

This spec is backed by a standardization effort. We do not plan to ship the
JSPI until it has been standardized by the W3C Wasm WG. However, post
standardization, we will depend on all browsers implementing the standard.


*Gecko*: Positive (https://bugzilla.mozilla.org/show_bug.cgi?id=1850627)
Mozilla have an experimental imlementation available in the nightly build

*WebKit*: No signal

*Web developers*: No signals

*Other signals*:

Activation

Making use of JSPI requires some changes by WebAssembly-based developers
(no impact on JavaScript developers). Depending on their toolchain usage a
developer will need to modify their code. For Emscripten users, this is
likely to be minimal as support for JSPI exists in Emscripten.


Security

1. Control flow integrity. 2. Ensuring that JavaScript programs cannot
suspend via JSPI.


WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that
it has potentially high risk for Android WebView-based applications?



Goals for experimentation



Reason this experiment is being extended

JSPI is part of a standards track effort. We are currently in 'stage 3' of
a five stage process. The next stage (4) is when a specification is deemed
final.


There have been one or two small changes to the API which have prevented
moving to phase 4. The text of the specification is much closer to being
final than in previous rounds of the origin trial. However, we would like
some time to further bake the revised API.

We anticipate being able to fully ship JSPI before the end of 2025Q2.

Ongoing technical constraints

None.


Debuggability

Developers can piggyback on existing DevTools support for Promises to help
with debugging JSPI applications. In particular the existing mechanisms for
constructing extended stack traces from so-called Promise chains will also
include stack traces from JSPI applications.


Will this feature be supported on all six Blink platforms (Windows, Mac,
Linux, ChromeOS, Android, and Android WebView)?Yes

Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
?
Yes

Flag name on about://flagsenable-experimental-webassembly-jspi

Finch feature nameNone

Non-finch justificationNone

Requires code in //chrome?False

Tracking bug
https://bugs.chromium.org/p/v8/issues/detail?id=12191&q=owner%3Ame&can=2

Estimated milestones
Origin trial desktop first 123
Origin trial desktop last 131
Origin trial extension 1 end milestone 131
Origin trial extension 2 end milestone 133
Origin trial extension 3 end milestone 136
DevTrial on desktop 109
Origin trial Android first 123
Origin trial Android last 131
Origin trial WebView first 123
Origin trial WebView last 131

Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5674874568704000?gate=5136083140214784

Links to previous Intent discussionsIntent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAdKk6BGFseZ6pBO2qEW_xeovVw1_guVq26rcNM1nWY442Y5Ng%40mail.gmail.com
Intent to Experiment:
https://groups.google.com/a/chromium.org/g/blink-dev/c/Fu79zrp7MoE
Intent to Extend Experiment 1:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALi9WK-JJNTYSeNdSuai827Qg5%3D2vZo-emYP2z-5vJOfE%2B8Nng%40mail.gmail.com
Intent to Extend Experiment 2:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67103777.2b0a0220.137ef7.0e4c.GAE%40google.com


This intent message was generated by Chrome Platform Status
<https://chromestatus.com/>.

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAE65UWDsoPqTePz3S42YsV2_Wr3OGL6yY2YdsS6oOYw3Rh8%2Bww%40mail.gmail.com.

Reply via email to