Skip to content

Commit c2ec899

Browse files
authored
[spec] Add change history appendix (WebAssembly#1306)
1 parent 4a24f96 commit c2ec899

File tree

5 files changed

+126
-4
lines changed

5 files changed

+126
-4
lines changed

document/core/appendix/changes.rst

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
.. index:: ! changes
2+
.. _changes:
3+
4+
Change History
5+
--------------
6+
7+
Since the original release 1.0 of the WebAssembly specification, a number of proposals for extensions have been integrated.
8+
The following sections provide an overview of what has changed.
9+
10+
Release 1.1
11+
~~~~~~~~~~~
12+
13+
.. index:: instruction, integer
14+
15+
Sign extension instructions
16+
...........................
17+
18+
Added new numeric instructions for performing sign extension within integer representations [#proposal-signext]_.
19+
20+
* New :ref:`numeric instructions <syntax-instr-numeric>`: :math:`\K{i}\X{nn}\K{.}\EXTEND\X{N}\K{\_s}`
21+
22+
23+
.. index:: instruction, trap, floating-point, integer
24+
25+
Non-trapping float-to-int conversions
26+
.....................................
27+
28+
Added new conversion instructions that avoid trapping when converting a floating-point number to an integer [#proposal-cvtsat]_.
29+
30+
* New :ref:`numeric instructions <syntax-instr-numeric>`: :math:`\K{i}\X{nn}\K{.}\TRUNC\K{\_sat\_f}\X{mm}\K{\_}\sx`
31+
32+
33+
.. index:: block, function, value type, result type
34+
35+
Multiple values
36+
...............
37+
38+
Generalized the result type of blocks and functions to allow for multiple values; in addition, introduced the ability to have block parameters [#proposal-multivalue]_.
39+
40+
* :ref:`Function types <syntax-functype>` allow more than one result
41+
42+
* :ref:`Block types <syntax-blocktype>` can be arbitrary function types
43+
44+
45+
.. index:: value type, reference, reference type, instruction, element segment
46+
47+
Reference types
48+
...............
49+
50+
Added |FUNCREF| and |EXTERNREF| as new value types and respective instructions [#proposal-reftype]_.
51+
52+
* New :ref:`value types <syntax-valtype>`: :ref:`reference types <syntax-reftype>` |FUNCREF| and |EXTERNREF|
53+
54+
* New :ref:`reference instructions <syntax-instr-ref>`: |REFNULL|, |REFFUNC|, |REFISNULL|
55+
56+
* Enrich :ref:`parametric instruction <syntax-instr-parametric>`: |SELECT| with optional type immediate
57+
58+
* New :ref:`declarative <syntax-elemmode>` form of :ref:`element segment <syntax-elem>`
59+
60+
61+
.. index:: reference, instruction, table, table type
62+
63+
Table instructions
64+
..................
65+
66+
Added instructions to directly access and modify tables [#proposal-reftype]_.
67+
68+
* :ref:`Table types <syntax-tabletype>` allow any :ref:`reference type <syntax-reftype>` as element type
69+
70+
* New :ref:`table instructions <syntax-instr-table>`: |TABLEGET|, |TABLESET|, |TABLESIZE|, |TABLEGROW|
71+
72+
73+
.. index:: table, instruction, table index, element segment
74+
75+
Multiple tables
76+
...............
77+
78+
Added the ability to use multiple tables per module [#proposal-reftype]_.
79+
80+
* :ref:`Modules <syntax-module>` may :ref:`define <syntax-table>`, :ref:`import <syntax-import>`, and :ref:`export <syntax-export>` multiple tables
81+
82+
* :ref:`Table instructions <syntax-instr-table>` take a :ref:`table index <syntax-tableidx>` immediate: |TABLEGET|, |TABLESET|, |TABLESIZE|, |TABLEGROW|, |CALLINDIRECT|
83+
84+
* :ref:`Element segments <syntax-elem>` take a :ref:`table index <syntax-tableidx>`
85+
86+
87+
.. index:: instruction, table, memory, data segment, element segment
88+
89+
Bulk memory and table instructions
90+
..................................
91+
92+
Added instructions that modify ranges of memory or table entries [#proposal-reftype]_ [#proposal-bulk]_
93+
94+
* New :ref:`memory instructions <syntax-instr-memory>`: |MEMORYFILL|, |MEMORYINIT|, |MEMORYCOPY|, |DATADROP|
95+
96+
* New :ref:`table instructions <syntax-instr-table>`: |TABLEFILL|, |TABLEINIT|, |TABLECOPY|, |ELEMDROP|
97+
98+
* New :ref:`passive <syntax-datamode>` form of :ref:`data segment <syntax-data>`
99+
100+
* New :ref:`passive <syntax-elemmode>` form of :ref:`element segment <syntax-elem>`
101+
102+
* New :ref:`data count section <binary-datacountsec>` in binary format
103+
104+
* Active data and element segments boundaries are no longer checked at compile time but may trap instead
105+
106+
107+
.. [#proposal-signext]
108+
https://github.com/WebAssembly/spec/tree/master/proposals/sign-extension-ops/
109+
110+
.. [#proposal-cvtsat]
111+
https://github.com/WebAssembly/spec/tree/master/proposals/nontrapping-float-to-int-conversion/
112+
113+
.. [#proposal-multivalue]
114+
https://github.com/WebAssembly/spec/tree/master/proposals/multi-value/
115+
116+
.. [#proposal-reftype]
117+
https://github.com/WebAssembly/spec/tree/master/proposals/reference-types/
118+
119+
.. [#proposal-bulk]
120+
https://github.com/WebAssembly/spec/tree/master/proposals/bulk-memory-operations/

document/core/appendix/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Appendix
1111
algorithm
1212
custom
1313
properties
14+
changes
1415

1516
.. only:: singlehtml
1617

document/core/conf.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
# documentation root, use os.path.abspath to make it absolute, like shown here.
1818
import os
1919
import sys
20+
from datetime import date
2021
pwd = os.path.abspath('.')
2122
sys.path.insert(0, pwd + '/util')
2223

@@ -70,7 +71,7 @@
7071
# The short X.Y version.
7172
version = u'1.1'
7273
# The full version, including alpha/beta/rc tags.
73-
release = version + ''
74+
release = version + ' (Draft ' + date.today().strftime("%Y-%m-%d") + ')'
7475

7576
# The language for content autogenerated by Sphinx. Refer to documentation
7677
# for a list of supported languages.

document/core/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ WebAssembly Specification
33

44
.. only:: html
55

6-
| Release |release| (Draft, |today|)
6+
| Release |release|
77
88
| Editor: Andreas Rossberg
99

document/core/util/macros.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,8 @@
282282

283283
.. |DINIT| mathdef:: \xref{syntax/modules}{syntax-data}{\K{init}}
284284
.. |DMODE| mathdef:: \xref{syntax/modules}{syntax-data}{\K{mode}}
285-
.. |DPASSIVE| mathdef:: \xref{syntax/modules}{syntax-data}{\K{passive}}
286-
.. |DACTIVE| mathdef:: \xref{syntax/modules}{syntax-data}{\K{active}}
285+
.. |DPASSIVE| mathdef:: \xref{syntax/modules}{syntax-datamode}{\K{passive}}
286+
.. |DACTIVE| mathdef:: \xref{syntax/modules}{syntax-datamode}{\K{active}}
287287
.. |DMEM| mathdef:: \xref{syntax/modules}{syntax-data}{\K{memory}}
288288
.. |DOFFSET| mathdef:: \xref{syntax/modules}{syntax-data}{\K{offset}}
289289

0 commit comments

Comments
 (0)