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
Current core formal spec for WebAssembly Exception Handling (WebAssembly#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: WebAssembly#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 WebAssembly#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.
12
-
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).
15
-
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).
17
-
>>>>>>> Dependencies in proposal (#99)
18
-
19
-
# Reference Types Proposal for WebAssembly
20
-
21
-
This repository is a clone of [github.com/WebAssembly/spec/](https://github.com/WebAssembly/spec/).
22
-
It is meant for discussion, prototype specification and implementation of a proposal to add support for basic reference types to WebAssembly.
23
-
24
-
* See the [overview](https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md) for a summary of the proposal.
25
-
26
-
* 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