@@ -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```
299299Because component-level function, type and instance definitions are different
300300than 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>)
579580externdesc ::= (<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
22422243preceding definition being exported (e.g., ` (export $x "x" (func $f)) ` binds a
22432244new 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```
22482249All import names are required to be [ strongly-unique] . Separately, all export
22492250names are also required to be [ strongly-unique] . The rest of the grammar for
@@ -2276,8 +2277,11 @@ fragment ::= <word>
22762277 | <acronym>
22772278word ::= [a-z] [0-9a-z]*
22782279acronym ::= [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]*
22812285namespace ::= <words> ':'
22822286words ::= <word>
22832287 | <words> '-' <word>
0 commit comments