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.