Skip to content

Commit 79c15f7

Browse files
committed
WIP: Truncated interface versions
1 parent e362068 commit 79c15f7

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

design/mvp/Explainer.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ sort ::= core <core:sort>
294294
| type
295295
| component
296296
| instance
297-
inlineexport ::= (export <exportname> <sortidx>)
297+
inlineexport ::= (export <exportname> <fullversion>? <sortidx>)
298298
```
299299
Because component-level function, type and instance definitions are different
300300
than core-level function, type and instance definitions, they are put into
@@ -574,8 +574,9 @@ instancedecl ::= core-prefix(<core:type>)
574574
| <alias>
575575
| <exportdecl>
576576
| <value> 🪙
577-
importdecl ::= (import <importname> bind-id(<externdesc>))
578-
exportdecl ::= (export <exportname> bind-id(<externdesc>))
577+
importdecl ::= (import <importname> <fullversion>? bind-id(<externdesc>))
578+
exportdecl ::= (export <exportname> <fullversion>? bind-id(<externdesc>))
579+
fullversion ::= (fullversion <valid semver>)
579580
externdesc ::= (<sort> (type <u32>) )
580581
| core-prefix(<core:moduletype>)
581582
| <functype>
@@ -2242,8 +2243,8 @@ the identifier `$x`). In the case of exports, the `<id>?` right after the
22422243
preceding definition being exported (e.g., `(export $x "x" (func $f))` binds a
22432244
new identifier `$x`).
22442245
```ebnf
2245-
import ::= (import "<importname>" bind-id(<externdesc>))
2246-
export ::= (export <id>? "<exportname>" <sortidx> <externdesc>?)
2246+
import ::= (import "<importname>" <fullversion>? bind-id(<externdesc>))
2247+
export ::= (export <id>? "<exportname>" <fullversion>? <sortidx> <externdesc>?)
22472248
```
22482249
All import names are required to be [strongly-unique]. Separately, all export
22492250
names are also required to be [strongly-unique]. The rest of the grammar for
@@ -2276,8 +2277,11 @@ fragment ::= <word>
22762277
| <acronym>
22772278
word ::= [a-z] [0-9a-z]*
22782279
acronym ::= [A-Z] [0-9A-Z]*
2279-
interfacename ::= <namespace> <label> <projection> <version>?
2280-
| <namespace>+ <label> <projection>+ <version>? 🪺
2280+
interfacename ::= <namespace> <label> <projection> <interfacever>?
2281+
| <namespace>+ <label> <projection>+ <interfacever>? 🪺
2282+
interfacever ::= '@' <valid semver>
2283+
| '@' [1-9] [0-9]*
2284+
| '@0.' [1-9] [0-9]*
22812285
namespace ::= <words> ':'
22822286
words ::= <word>
22832287
| <words> '-' <word>

0 commit comments

Comments
 (0)