You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 25, 2025. It is now read-only.
Current core formal spec for WebAssembly Exception Handling (#121)
Included in this PR:
- Detailed core formal spec additions aiming to fully implement:
+ the "informal formal" core spec laid out by Andreas @rossberg here: #87 (comment) and
+ the core spec outlined in the [proposal overview](https://github.com/WebAssembly/exception-handling/blob/master/proposals/Exceptions.md), while removing the mention of "events" everywhere but in the binary format ,
+ prose for the above in: syntax, validation, execution, binary format, text format, and the appendix, as well as an example for throw contexts.
- Travis-ci build status icon to `README.md`. The contents of this PR get built and deployed on my fork's github page successfully, using [the howto instructions](https://github.com/WebAssembly/proposals/blob/master/howto.md#setting-up-travis-and-github-page).
Not included in this PR:
- Neither the new values representing unresolved throw contexts, nor the additional rules for the execution contexts, which we discussed in #87, are added here. I plan to add these separately.
- No JS API/Web API changes.
Side comments:
- In [document/core/text/types.rst](https://ioannad.github.io/exception-handling/core/text/types.html#text-refedtype): I'm not sure whether `refedtype ::= ... | event ⇒ exnref` should have `event` there or something else (perhaps `exception`?) However, since currently the only events are exceptions, this is probably not really an issue.
- The "informal formal spec" defines the administrative instruction which represents an exception package as `exnref`, i.e., the same name as the type. I called this administrative instruction `ref.exn` instead for two reasons; to match the style of `ref.null` and `ref.extern`, and to avoid ambiguity in the discussions.
- I removed multi-value mentions from `README.md` because multi-value is now part of the main spec. For the same reason I didn't add "multi-value" to the list of included proposals at the top of the core spec landing page.
[proposal](https://github.com/WebAssembly/exception-handling/blob/master/proposals/Exceptions.md) for
8
8
adding exception handling to WebAssembly.
9
9
10
-
The exception handling proposal depends on the [reference-types](https://github.com/WebAssembly/reference-types) proposal
11
-
and on the [multi-value](https://github.com/WebAssembly/multi-value) proposal.
10
+
* See the [proposal overview](proposals/Exceptions.md) for a summary of the proposal.
12
11
13
-
The repository is a clone
14
-
of [WebAssembly/spec](https://github.com/WebAssembly/spec), first rebased on the spec of its dependency [reference-types](https://github.com/WebAssembly/reference-types), and then merged with the other dependency [multi-value](https://github.com/WebAssembly/multi-value).
12
+
The repository is now based on the [reference types proposal](proposals/reference-types/Overview.md) and includes all respective changes.
15
13
16
-
The remainder of the document has contents of the two README files of the dependencies: [reference-types/README.md](https://github.com/WebAssembly/reference-types/blob/master/README.md) and [multi-value/README.md](https://github.com/WebAssembly/multi-value/blob/master/README.md).
This repository is a clone of [github.com/WebAssembly/spec/](https://github.com/WebAssembly/spec/).
23
-
It is meant for discussion, prototype specification and implementation of a proposal to add support for basic reference types to WebAssembly.
24
-
25
-
* See the [overview](https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md) for a summary of the proposal.
26
-
27
-
* See the [modified spec](https://webassembly.github.io/reference-types/) for details.
1. Pre-condition: :math:`exntype` is :ref:`valid <valid-exntype>`.
554
+
555
+
2. Let :math:`\exnaddr` be the result of :ref:`allocating an exception <alloc-exn>` in :math:`\store` with :ref:`exception type <syntax-exntype>` :math:`\exntype`.
556
+
557
+
3. Return the new store paired with :math:`\exnaddr`.
0 commit comments