Dear API owners,
Following the continued experiment for Garbage Collected WebAssembly (WasmGC), we plan to ship the feature in M119 after the positive vote to phase 4 by the WebAssembly Community Group today.
The feature has shown very good performance with reasonable compromises. The findings from the origin trial are summarized in a public document.
This feature is tied to the Function References proposal which is a de-facto part of WasmGC (no current use outside of the proposal, hard requirement for WasmGC) and only listed as a separate proposal for historic reasons. The Function References proposal has therefore also been voted to phase 4 on the same day as WasmGC.
We plan to launch the feature in the following manner:
End the current origin trial with M118 as its last milestone
Refactor the binary instruction representation to match the final spec (incompatible change)
Ship the feature with M119
Our data from the trial has shown that there is a need for fast string interoperability with JS that this proposal does not address. We plan to launch a new experiment investigating different approaches to this problem (see separate I2E mail).
The GC proposal adds efficient support for high-level managed languages to WebAssembly, via struct and array types that enable language compilers targeting Wasm to integrate with a garbage collector in the host VM. In Chrome, enabling this feature implies enabling Typed Function References, which allow function references to be stored in the aforementioned structs and arrays.
Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?
The feature does not enable any functionality without the module being explicitly compiled for that feature. We therefore chose to use an origin trial to evaluate its suitability and stability. This allowed websites that want to try this feature to opt in and do their own A/B comparisons.
OriginTrial desktop last | 120 |
OriginTrial desktop first | 112 |
OriginTrial Android last | 120 |
OriginTrial Android first | 112 |
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).
On 9/12/23 9:22 PM, 'Emanuel Ziegler' via blink-dev wrote:
Dear API owners,
Following the continued experiment for Garbage Collected WebAssembly (WasmGC), we plan to ship the feature in M119 after the positive vote to phase 4 by the WebAssembly Community Group today.
The feature has shown very good performance with reasonable compromises. The findings from the origin trial are summarized in a public document.
This feature is tied to the Function References proposal which is a de-facto part of WasmGC (no current use outside of the proposal, hard requirement for WasmGC) and only listed as a separate proposal for historic reasons. The Function References proposal has therefore also been voted to phase 4 on the same day as WasmGC.
We plan to launch the feature in the following manner:
End the current origin trial with M118 as its last milestone
Refactor the binary instruction representation to match the final spec (incompatible change)
Ship the feature with M119
Our data from the trial has shown that there is a need for fast string interoperability with JS that this proposal does not address. We plan to launch a new experiment investigating different approaches to this problem (see separate I2E mail).
Contact emails
ad...@chromium.org, jkum...@chromium.org
Explainer
https://github.com/WebAssembly/gc/blob/master/proposals/gc/Overview.md
https://github.com/WebAssembly/function-references/blob/main/proposals/function-references/Overview.md
Specification
https://github.com/WebAssembly/gc/tree/main/proposals/gc
Summary
The GC proposal adds efficient support for high-level managed languages to WebAssembly, via struct and array types that enable language compilers targeting Wasm to integrate with a garbage collector in the host VM. In Chrome, enabling this feature implies enabling Typed Function References, which allow function references to be stored in the aforementioned structs and arrays.
Blink component
Blink>JavaScript>WebAssembly
Search tags
wasm, webassembly, gc, managed objects, wasmgc
TAG review
https://github.com/w3ctag/design-reviews/issues/814
TAG review status
Issues addressed
Risks
Interoperability and Compatibility
Gecko: Positive
WebKit: No signal
Web developers: Positive Google Sheets, which is currently compiling Java to JavaScript, is experimenting with using WasmGC to speed up their calculation engine. JetBrains is working on a Kotlin -> WasmGC compiler. Dart is working on a Dart -> WasmGC compiler, in collaboration with Flutter.
Other signals:
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?
Debuggability
Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
No
--
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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPAU7RzPfx-CgUJbWOhiCpFkhr1myZNVS8c4N3YUcLT538dcJQ%40mail.gmail.com.
Can you say more about this?
Web developers: Positive Google Sheets, which is currently compiling Java to JavaScript, is experimenting with using WasmGC to speed up their calculation engine. JetBrains is working on a Kotlin -> WasmGC compiler. Dart is working on a Dart -> WasmGC compiler, in collaboration with Flutter.
Other signals:
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?
Debuggability
Can you say more about this?
Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
No
In this case, is this new feature covered by existing wasm test suites?
Presumably this is behind a feature, if an Origin Trial occured, right?
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEvLGc%2B_PnX%3DTXosOwV%3DcpTOCr0w16Xi940o7Rc3%3DWiEm%2BnKoQ%40mail.gmail.com.
LGTM2 - thanks Adam.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/221fb42e-d5f9-424b-97db-82b34b66bf86%40chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw9UpuDt6rP4bgiJa_p9dMc_t%3DR9m8Ei3mjNzuzyBkfaYg%40mail.gmail.com.