LGTM3
On 4/9/25 8:35 AM, Chris Harrelson wrote:
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
<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
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw8BHA-bsxy50tGX4Krt1SVwt7%2BrADBM4RWbhHXYiHUO8w%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/f64a8ea5-480e-48f1-88c3-fc895cb09d88%40chromium.org.