Skip to content

Commit 7b6bd7d

Browse files
committed
WIP: Truncated interface versions
1 parent e362068 commit 7b6bd7d

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

design/mvp/Explainer.md

Lines changed: 10 additions & 6 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
@@ -2283,10 +2284,13 @@ words ::= <word>
22832284
| <words> '-' <word>
22842285
projection ::= '/' <label>
22852286
version ::= '@' <valid semver>
2287+
| '@' [1-9] [0-9]*
2288+
| '@0.' [1-9] [0-9]*
22862289
depname ::= 'unlocked-dep=<' <pkgnamequery> '>'
22872290
| 'locked-dep=<' <pkgname> '>' ( ',' <hashname> )?
22882291
pkgnamequery ::= <pkgpath> <verrange>?
2289-
pkgname ::= <pkgpath> <version>?
2292+
pkgname ::= <pkgpath> <pkgversion>?
2293+
pkgversion ::= '@' <valid semver>
22902294
pkgpath ::= <namespace> <words>
22912295
| <namespace>+ <words> <projection>* 🪺
22922296
verrange ::= '@*'

0 commit comments

Comments
 (0)