|
| 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/ |
0 commit comments