Do you plan to run it as a finch experiment or do you have partners
prepared for an Origin Trial?
/Daniel
On 2023-09-12 21:24, 'Emanuel Ziegler' via blink-dev wrote:
Dear API Owners,
Many use cases for WasmGC require calling JS functions or
WebAPIs frequently. These calls suffer from substantial
overhead when strings are involved due to the
encoding/decoding required for changing in between the
non-standardized Wasm module representation and the
engine-internal JS string representation.
We previously evaluated native string operations in Wasm
<https://github.com/WebAssembly/stringref/blob/main/proposals/stringref/Overview.md>which
would map to JS equivalents and use the same backend,
eliminating the need for re-encoding and copies. While the
performance of this approach was excellent (see e.g.
Kotlin/Wasm's DBMonster benchmark with
<https://zal.im/wasm/dbmonster-stringref/>and without
<https://zal.im/wasm/dbmonster/>stringref), the Wasm Community
Group preferred an alternative solution that uses imported JS
functions
<https://github.com/WebAssembly/js-string-builtins/blob/main/proposals/js-string-builtins/Overview.md>for
creating and manipulating strings which could then be
optimized away by the engine. Our experiments show a similar
peak performance but slightly lower performance on startup as
Liftoff is not capable of doing such optimizations effectively
falling back to executing the call.
We would therefore like to launch a 6-month origin trial
starting in M119 for comparing the two approaches and, if
performance is good enough, encourage partners to switch over
to the new proposal to verify its viability.
Contact emails
ecmzieg...@chromium.org, jkumme...@chromium.org, ad...@chromium.org
Explainer
None
Specification
https://github.com/WebAssembly/js-string-builtins/blob/main/proposals/js-string-builtins/Overview.md
Summary
This feature exposes common JS string operations for easy import into
WebAssembly and optimizations thereof. This allows creating and
manipulating JS strings from WebAssembly without native support within
WebAssembly while still allowing for a similar performance as native
string references. The mechanism works by exposing suitably strict
versions of JS string operations in the WebAssembly JS API. These can
be imported by modules using externref as a generic data type for
storing the strings. The engine can identify that these imports can be
represented by native graph operators without the need for calling
into JS. This leads to a comparable peak performance as native string
operations while allowing quick interoperability with JS since no
copying at the boundary is required when calling into arbitrary JS
functions that consume strings.
Blink component
Blink>JavaScript>WebAssembly
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EJavaScript%3EWebAssembly>
TAG review
None
TAG review status
Not applicable
Risks
Interoperability and Compatibility
None
/Gecko/: Positive
/WebKit/: No signal
/Web developers/: No signals
/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?
None
Goals for experimentation
Ongoing technical constraints
None
Debuggability
None
Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
No
Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
No
Flag name on chrome://flags
None
Finch feature name
None
Non-finch justification
None
Requires code in //chrome?
False
Estimated milestones
No milestones specified
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/6695587390423040
--
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/CAPAU7RyzxKa0Pj6q7B_jyfT%3DH%2BSK264%3Dx8wn1ans%3D8UjHRhctQ%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPAU7RyzxKa0Pj6q7B_jyfT%3DH%2BSK264%3Dx8wn1ans%3D8UjHRhctQ%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 on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/9eadc70f-b9a5-cc8c-3b15-9b0c5bd8aa85%40gmail.com.