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.

Reply via email to