Skip to content

Commit 722db9f

Browse files
committed
Add 'optional' imports/exports
1 parent 45d9df0 commit 722db9f

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

design/mvp/Binary.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,9 @@ instancedecl ::= 0x00 t:<core:type> => t
232232
| 0x04 ed:<exportdecl> => ed
233233
importdecl ::= na:<nameattributes> et:<externtype> => (import na et)
234234
exportdecl ::= na:<nameattributes> et:<externtype> => (export na et)
235-
externtype ::= 0x00 0x11 i:<core:typeidx> => (core module (type i))
235+
externtype ::= 0x10 t:<someexterntype> => (optional t)
236+
| t:<someexterntype> => t
237+
someexterntype ::= 0x00 0x11 i:<core:typeidx> => (core module (type i))
236238
| 0x01 i:<typeidx> => (func (type i))
237239
| 0x02 b:<valuebound> => (value b) 🪙
238240
| 0x03 b:<typebound> => (type b)
@@ -541,6 +543,7 @@ named once.
541543
subset of `canonopt`s.
542544
* Add optional `shared` immediate to all canonical definitions (explicitly or
543545
via `<canonopt>`) when shared-everything-threads (🧵②) is added.
546+
* Improve `externtype` opcodes for `optional`
544547

545548

546549
[`core:byte`]: https://webassembly.github.io/spec/core/binary/values.html#binary-byte

design/mvp/Explainer.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,9 @@ instancedecl ::= core-prefix(<core:type>)
618618
| <exportdecl>
619619
importdecl ::= (import <externnamelit> <attribute>* bind-id(<externtype>))
620620
exportdecl ::= (export <externnamelit> <attribute>* bind-id(<externtype>))
621-
externtype ::= (<sort> (type <u32>) )
621+
externtype ::= (optional <someexterntype>)
622+
| <someexterntype>
623+
someexterntype ::= (<sort> (type <u32>) )
622624
| core-prefix(<core:moduletype>)
623625
| <functype>
624626
| <componenttype>

0 commit comments

Comments
 (0)