LGTM2 On Wed, Apr 9, 2025 at 8:26 AM Philip Jägenstedt <foo...@chromium.org> wrote:
> LGTM1, very exciting to see this ship! > > There are some apparent failures in > https://wpt.fyi/results/wasm/jsapi/jspi, but this seems to be because of > https://github.com/web-platform-tests/wpt.fyi/issues/4216, not real > failures. > > On Tue, Apr 8, 2025 at 6:32 PM Chromestatus < > ad...@cr-status.appspotmail.com> wrote: > >> Contact emails f...@chromium.org, thiba...@chromium.org, >> irez...@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 >> >> JavaScript Promise Integration (JSPI) is an API that allows WebAssembly >> applications to integrate with JavaScript Promises. It allows a WebAssembly >> program to act as the generator of a Promise, and it allows the WebAssembly >> program to interact with Promise-bearing APIs. In particular, when an >> application uses JSPI to call a Promise-bearing (JavaScript) API, the >> WebAssembly code is suspended; and the original caller to the WebAssembly >> program is given a Promise that will be fulfilled when the WebAssembly >> program finally completes. JSPI is described in more detail in >> https://github.com/WebAssembly/js-promise-integration which is part of >> the W3C WebAssembly standards track. See also >> https://github.com/WebAssembly/stack-switching and >> https://github.com/WebAssembly/meetings/tree/main/stack. >> >> >> Blink component Blink>JavaScript>WebAssembly >> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EJavaScript%3EWebAssembly%22> >> >> Search tags stack switching <http:///features#tags:stack%20switching>, >> Promise <http:///features#tags:Promise>, JSPI >> <http:///features#tags:JSPI> >> >> TAG review https://github.com/w3ctag/design-reviews/issues/809 Review >> was declined, deferring to W3C WebAssembly CG >> >> TAG review status Issues addressed >> >> Origin Trial Name WebAssembly JavaScript Promise Integration >> >> 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 ( >> https://github.com/WebKit/standards-positions/issues/422) >> >> *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. 3. Ensuring that heap sandbox escapes are not possible. >> >> >> 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? >> >> No. >> >> >> 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 >> >> https://wpt.fyi/results/wasm/jsapi/jspi >> >> >> Flag name on about://flags >> enable-experimental-webassembly-stack-switching >> >> Finch feature name None >> >> Non-finch justification None >> >> Rollout plan Will ship enabled for all users >> >> Requires code in //chrome? False >> >> Tracking bug >> https://bugs.chromium.org/p/v8/issues/detail?id=12191&q=owner%3Ame&can=2 >> >> Measurement >> https://chromestatus.com/metrics/feature/timeline/popularity/4760 >> >> Availability expectation JSPI will be available on Chrome (including >> Edge) and on FireFox at launch. No specific indication about availability >> on Safari. >> >> Adoption expectation 1. We expect that JSPI will be used by both 1P and >> 3P partners within a few months of launch. >> >> Adoption plan 1. There has been an origin trial running for one year. >> This OT has > 300 registrants at time of writing. 2. We will be publishing >> V8.dev blog posts both about the feature (see >> https://v8.dev/blog/jspi-newapi) and its implementation. We believe that >> this will further increase awareness of JSPI. 3. We will also benefit from >> awareness of WebAssembly and the W3C wasm CG. >> >> Non-OSS dependencies >> >> Does the feature depend on any code or APIs outside the Chromium open >> source repository and its open-source dependencies to function? >> no. >> >> Estimated milestones >> Shipping on desktop 137 >> 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 >> Shipping on Android 137 >> Origin trial Android first 123 >> Origin trial Android last 131 >> Shipping on WebView 137 >> Origin trial WebView first 123 >> Origin trial WebView last 131 >> >> Anticipated spec changes >> >> Open questions about a feature may be a source of future web compat or >> interop issues. Please list open issues (e.g. links to known github issues >> in the project for the feature specification) whose resolution may >> introduce web compat/interop risk (e.g., changing to naming or structure of >> the API in a non-backward-compatible way). >> No spec changes anticipated. JSPI is part of a W3C standards process (see >> https://github.com/WebAssembly). We plan to ship after this spec reaches >> 'stage 4' which represents a completed specification. >> >> Link to entry on the Chrome Platform Status >> https://chromestatus.com/feature/5674874568704000?gate=5851957764292608 >> >> 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 >> Intent to Extend Experiment 2: >> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67103777.2b0a0220.137ef7.0e4c.GAE%40google.com >> Intent to Extend Experiment 3: >> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAE65UWDsoPqTePz3S42YsV2_Wr3OGL6yY2YdsS6oOYw3Rh8%2Bww%40mail.gmail.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/67f54f82.170a0220.374483.0000.GAE%40google.com >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67f54f82.170a0220.374483.0000.GAE%40google.com?utm_medium=email&utm_source=footer> >> . >> > -- > 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/CAARdPYcnDkdpAWDeod8YB853RKTDD6G%2BccXbfG4eWwCpsx%3DLyw%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYcnDkdpAWDeod8YB853RKTDD6G%2BccXbfG4eWwCpsx%3DLyw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- 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/CAOMQ%2Bw8BHA-bsxy50tGX4Krt1SVwt7%2BrADBM4RWbhHXYiHUO8w%40mail.gmail.com.