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://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EJavaScript%3EWebAssembly>

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

TAG review statusPending

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 started their own imlementation

*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 was a change in the API which we soft launched in M126 but we
would like to formally switch to this new API in M129. (We had informed our
users that we would be maintaining the old API through the end of the OT.)
So, in summary there are two reasons for extending the origin trial: 1. We
are not quite ready to move the spec to phase 4. This is for
non-implementation reasons: we need to draft and review the specification
text. 2. We would like to allow sufficient time for users to fully
experiment with the new API. We anticipate being able to fully ship JSPI
before the end of 2024, but also dont want to have to ask for yet another
extension.


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>
?Partially

Flag name on chrome://flagsenable-experimental-webassembly-stack-switching

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 128
Origin trial extension 1 end milestone 134
DevTrial on desktop 109
OriginTrial Android last 128
OriginTrial Android first 123
OriginTrial webView last 128
OriginTrial webView first 123

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

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


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 on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAE65UWBDn_Vvj5uqqOVMABJWopy_ZfOz4P5ZZYiqCxa7HACxCA%40mail.gmail.com.

Reply via email to