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
Copy file name to clipboardExpand all lines: document/core/appendix/changes.rst
+38Lines changed: 38 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,44 @@ Change History
7
7
Since the original release 1.0 of the WebAssembly specification, a number of proposals for extensions have been integrated.
8
8
The following sections provide an overview of what has changed.
9
9
10
+
All present and future versions of WebAssembly are intended to be *backwards-compatible* with all previous versions.
11
+
Concretely:
12
+
13
+
1. All syntactically well-formed (in :ref:`binary <binary>` or :ref:`text <text>` format) and :ref:`valid <valid>` modules remain well-formed and valid with an equivalent :ref:`module type <syntax-moduletype>` (or a subtype).
14
+
15
+
.. note::
16
+
This allows previously malformed or invalid modules to become legal,
17
+
e.g., by adding new features or by relaxing typing rules.
18
+
19
+
It also allows reclassifying previously malformed modules as well-formed but invalid,
20
+
or vice versa.
21
+
22
+
And it allows refining the typing of :ref:`imports <syntax-import>` and :ref:`exports <syntax-export>`,
23
+
such that previously unlinkable modules become linkable.
24
+
25
+
Historically, minor breaking changes to the *text format* have been allowed
26
+
that turned previously possible valid modules invalid,
27
+
as long as they were unlikely to occur in practice.
28
+
29
+
2. All non-:ref:`trapping <trap>` :ref:`executions <exec>` of a valid program retain their behaviour with an equivalent set of possible :ref:`results <syntax-result>` (or a non-empty subset).
30
+
31
+
.. note::
32
+
This allows previously malformed or invalid programs to become executable.
33
+
34
+
It also allows program executions that previously trapped to execute successfully,
35
+
although the intention is to only exercise this where the possibility of such an extension has been previously noted.
36
+
37
+
And it allows reducing the set of observable behaviours of a program execution,
38
+
e.g., by reducing non-determinism.
39
+
40
+
In a program linking prior modules with modules using new features,
41
+
a prior module may encounter new behaviours,
42
+
e.g., new forms of control flow or side effects when calling into a latter module.
43
+
44
+
In addition, future versions of WebAssembly will not allocate the :ref:`opcode <binary-instr>` :math:`\hex{FF}` to represent an instruction or instruction prefix.
0 commit comments