Contact emails
f...@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 component
Blink>JavaScript>WebAssembly


Search tags
stack switching, Promise, JSPI


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


TAG review status
Pending


Chromium Trial Name
WebAssemblyJSPromiseIntegration


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


WebFeature UseCounter name
kV8WasmJavaScriptPromiseIntegration


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; which, for a feature like JSPI is not 
completely trivial. 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.



Reason this experiment is being extended

We wish to extend the OT for JSPI for a second time. Hopefully, this will be 
the last extension before shipping. We have recently implemented one of the key 
technology improvements that we believed necessary for shipping: growable 
stacks. However, performance remains a blocker for some partners and we would 
like to be able to continue performance improvements. The specification itself 
should be moving to phase 4 in the standards process; hopefully in the next few 
months.



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


Flag name on chrome://flags
enable-experimental-webassembly-stack-switching


Finch feature name
None


Non-finch justification
None


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

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=5414230854205440


Links to previous Intent discussions
Intent 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



This intent message was generated by Chrome Platform Status.

-- 
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/67103777.2b0a0220.137ef7.0e4c.GAE%40google.com.

Reply via email to