Intent to Ship: WebAssembly Exception Handling

172 views
Skip to first unread message

Andreas Haas

unread,
Aug 24, 2021, 5:04:33 AM8/24/21
to blink-dev

Contact emails

thib...@chromium.org, ah...@chromium.org, va...@chromium.org, ahe...@chromium.org


Explainer

https://github.com/aheejin/exception-handling


Specification

https://github.com/WebAssembly/exception-handling


Summary

This feature is adding exception support to WebAssembly. Exception handling allows code to break control flow when an exception is thrown. The exception can be any exception known by the WebAssembly module, or it may be an unknown exception that was thrown by a called imported function.



Blink component

Blink>JavaScript>WebAssembly


Search tags

wasm, webassembly, Exceptions


TAG review

Not required for WebAssembly feature launches


TAG review status

Not applicable


Risks



Interoperability and Compatibility



Gecko: Positive (https://bugzilla.mozilla.org/show_bug.cgi?id=1335652)


WebKit: Positive They're probably not likely to begin working on the proposal before stage 3


Web developers: The developer feedback on the spec proposal (https://github.com/WebAssembly/exception-handling) was positive. This feature is one of the last bits missing to port legacy c++ apps to the web. Code that uses WebAssembly Exception Handling can be generated by Emscripten and has been used successfully in the origin trial. 



Debuggability

Supported using DevTools



Is this feature fully tested by web-platform-tests?

Yes, tests are provided by the spec, see https://github.com/WebAssembly/exception-handling/tree/master/test.


Flag name

WebAssembly Exception handling can be enabled and disabled by the V8 Flag: --experimental-wasm-eh.



Requires code in //chrome?

No


Tracking bug

https://bugs.chromium.org/p/v8/issues/detail?id=8091


Launch bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1173515


Estimated milestones

OriginTrial desktop first

90

OriginTrial desktop last

94

OriginTrial android first

90

OriginTrial android last

94



Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/4756734233018368


Links to previous Intent discussions

Intent to Experiment: https://groups.google.com/a/chromium.org/g/blink-dev/c/7l3oDJuNs6o/m/MtlFURU1BAAJ



This intent message was generated by Chrome Platform Status.

Yoav Weiss

unread,
Aug 25, 2021, 9:56:34 AM8/25/21
to blink-dev, Andreas Haas
On Tuesday, August 24, 2021 at 11:04:33 AM UTC+2 Andreas Haas wrote:

Contact emails

thib...@chromium.org, ah...@chromium.org, va...@chromium.org, ahe...@chromium.org


Explainer

https://github.com/aheejin/exception-handling


Specification

https://github.com/WebAssembly/exception-handling


Summary

This feature is adding exception support to WebAssembly. Exception handling allows code to break control flow when an exception is thrown. The exception can be any exception known by the WebAssembly module, or it may be an unknown exception that was thrown by a called imported function.



Blink component

Blink>JavaScript>WebAssembly


Search tags

wasm, webassembly, Exceptions


TAG review

Not required for WebAssembly feature launches


TAG review status

Not applicable


Risks



Interoperability and Compatibility



Gecko: Positive (https://bugzilla.mozilla.org/show_bug.cgi?id=1335652)


Looks like they shipped (or at least fully implemented), so that's definitely a strong signal :)
 

WebKit: Positive They're probably not likely to begin working on the proposal before stage 3


Links?
Any conclusions/feedback from the Origin Trial?

Andreas Haas

unread,
Aug 26, 2021, 7:12:26 AM8/26/21
to Yoav Weiss, blink-dev
The conclusion/feedback from the OT was that we've shown that the WebAssembly Exceptions work well with the C++ toolchain that targets it, and that it had the desired impact (i.e. exception-using code is much smaller and faster).
We targeted the OT to specific partners, and it enabled those partners to deploy to users and validate WebAssembly Exceptions based on their usage. 

Andreas Haas

unread,
Aug 26, 2021, 11:41:34 AM8/26/21
to blink-dev, blink-dev, yoav...@chromium.org
Here is a link to the toolchain that targeted the OT: https://emscripten.org/docs/porting/exceptions.html

Lars Hansen

unread,
Aug 26, 2021, 2:58:29 PM8/26/21
to blink-dev, yoav...@chromium.org, Andreas Haas
On Wednesday, August 25, 2021 at 3:56:34 PM UTC+2 yoav...@chromium.org wrote:
On Tuesday, August 24, 2021 at 11:04:33 AM UTC+2 Andreas Haas wrote:

Contact emails

thib...@chromium.org, ah...@chromium.org, va...@chromium.org, ahe...@chromium.org


Explainer

https://github.com/aheejin/exception-handling


Specification

https://github.com/WebAssembly/exception-handling


Summary

This feature is adding exception support to WebAssembly. Exception handling allows code to break control flow when an exception is thrown. The exception can be any exception known by the WebAssembly module, or it may be an unknown exception that was thrown by a called imported function.



Blink component

Blink>JavaScript>WebAssembly


Search tags

wasm, webassembly, Exceptions


TAG review

Not required for WebAssembly feature launches


TAG review status

Not applicable


Risks



Interoperability and Compatibility



Gecko: Positive (https://bugzilla.mozilla.org/show_bug.cgi?id=1335652)


Looks like they shipped (or at least fully implemented), so that's definitely a strong signal :)

We have an incomplete implementation (available behind a flag in Nightly, not on by default even there) and have not in any sense shipped anything.  We do not (to my knowledge) have any publicly stated position on this spec, apart from that bug and an intent-to-prototype.

--lars

Yoav Weiss

unread,
Aug 26, 2021, 3:18:34 PM8/26/21
to blink-dev, lha...@mozilla.com, Yoav Weiss, Andreas Haas
On Thursday, August 26, 2021 at 8:58:29 PM UTC+2 lha...@mozilla.com wrote:
On Wednesday, August 25, 2021 at 3:56:34 PM UTC+2 yoav...@chromium.org wrote:
On Tuesday, August 24, 2021 at 11:04:33 AM UTC+2 Andreas Haas wrote:

Explainer

https://github.com/aheejin/exception-handling


Specification

https://github.com/WebAssembly/exception-handling


Summary

This feature is adding exception support to WebAssembly. Exception handling allows code to break control flow when an exception is thrown. The exception can be any exception known by the WebAssembly module, or it may be an unknown exception that was thrown by a called imported function.



Blink component

Blink>JavaScript>WebAssembly


Search tags

wasm, webassembly, Exceptions


TAG review

Not required for WebAssembly feature launches


TAG review status

Not applicable


Risks



Interoperability and Compatibility



Gecko: Positive (https://bugzilla.mozilla.org/show_bug.cgi?id=1335652)

Looks like they shipped (or at least fully implemented), so that's definitely a strong signal :)

We have an incomplete implementation (available behind a flag in Nightly, not on by default even there) and have not in any sense shipped anything.  We do not (to my knowledge) have any publicly stated position on this spec, apart from that bug and an intent-to-prototype.

Apologies. I read too much into the issue marked as FIXED. 

Chris Harrelson

unread,
Aug 26, 2021, 5:14:57 PM8/26/21
to Yoav Weiss, blink-dev, lha...@mozilla.com, Andreas Haas
Hi, two points:

* This proposal appears to be only at phase 3, which is one lower than the "intent-is-rubber-stamped" level. If you wish to ship now, please provide signals from the other implementations.
* Implementation signals must come from bit.ly/blink-signals.

--
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/92a38cf6-cd34-430a-bb1f-56dbae947a2fn%40chromium.org.

Adam Klein

unread,
Aug 27, 2021, 5:55:39 PM8/27/21
to blink-dev, Chris Harrelson, blink-dev, lha...@mozilla.com, Andreas Haas, Yoav Weiss
Thanks Chris. Here's the updated signals links (no replies yet on either):

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

Andreas Haas

unread,
Sep 1, 2021, 12:09:32 PM9/1/21
to Adam Klein, blink-dev, Chris Harrelson, lha...@mozilla.com, Yoav Weiss
The signals from the other implementations are in now and are both positive, see
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

Chris Harrelson

unread,
Sep 1, 2021, 12:12:06 PM9/1/21
to Andreas Haas, Adam Klein, blink-dev, lha...@mozilla.com, Yoav Weiss

Yoav Weiss

unread,
Sep 1, 2021, 12:39:50 PM9/1/21
to Chris Harrelson, Andreas Haas, Adam Klein, blink-dev, lha...@mozilla.com
LGTM2

Andreas Haas

unread,
Sep 1, 2021, 12:51:32 PM9/1/21
to Adam Klein, blink-dev, Chris Harrelson, lha...@mozilla.com, Yoav Weiss
Sorry for the wrong WebKit link. Here is the correct link:

Mike West

unread,
Sep 2, 2021, 8:57:40 AM9/2/21
to Andreas Haas, Adam Klein, blink-dev, Chris Harrelson, lha...@mozilla.com, Yoav Weiss

Alex Russell

unread,
Sep 2, 2021, 3:10:33 PM9/2/21
to blink-dev, Mike West, Adam Klein, blink-dev, Chris Harrelson, lha...@mozilla.com, Yoav Weiss, Andreas Haas
Non-voting note: there's no WASM exception to filing for TAG review. It should not have been skipped (as an FYI, at least) in this case.

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

--
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+unsubscribe@chromium.org.

Alex Russell

unread,
Sep 2, 2021, 3:14:10 PM9/2/21
to blink-dev, Alex Russell, Mike West, Adam Klein, blink-dev, Chris Harrelson, lha...@mozilla.com, Yoav Weiss, Andreas Haas
Sorry for the noise; Chris Harrelson corrected me that this is fully internal to the language and doesn't have a DOM visible effect, so *is* subsumed by our JS internals exception for TAG filing.
Reply all
Reply to author
Forward
0 new messages