Right now, code that uses imports via WASI look like regular imports, with the package name being the first indicator:
import { someFn } from "ns:pkg/iface@0.1.0";
export const run = {
run() { ... }
}
This works, but I think going forward life for embedders and tooling/ecosystem projects will be much easier if we prefix these imports with wasi: (or something similar) to note them/control how the imports are done.
The idea is that the above code would turn into:
import { someFn } from "wasi:ns:pkg/iface@0.1.0";
export const run = {
run() { ... }
}
There are other ways to indicate the type of an import/control (i.e. import attributes, for example) , but prefixing with wasi: is incredibly simple and offers a point of leverage -- being able to easily tell which imports are "wasi"/underlying paltform imports. This mirrors the convention of node: as an import prefix which is used in more modern code bases (i.e. from "node:fs" rather than from "fs").
Changes may be required "below" and "above" componentize JS to make this work, but I figure that ComponentizeJS is a good place to discuss and eventually start this work.
[EDIT] I changed the title to wasm since wasi is clearly not the right prefix -- wasm:, wit:, component: or something else are clearly more correct, though it's not exactly clear which is best.
Right now, code that uses imports via WASI look like regular imports, with the package name being the first indicator:
This works, but I think going forward life for embedders and tooling/ecosystem projects will be much easier if we prefix these imports with
wasi:(or something similar) to note them/control how the imports are done.The idea is that the above code would turn into:
There are other ways to indicate the type of an import/control (i.e. import attributes, for example) , but prefixing with
wasi:is incredibly simple and offers a point of leverage -- being able to easily tell which imports are "wasi"/underlying paltform imports. This mirrors the convention ofnode:as an import prefix which is used in more modern code bases (i.e.from "node:fs"rather thanfrom "fs").Changes may be required "below" and "above" componentize JS to make this work, but I figure that ComponentizeJS is a good place to discuss and eventually start this work.
[EDIT] I changed the title to
wasmsincewasiis clearly not the right prefix --wasm:,wit:,component:or something else are clearly more correct, though it's not exactly clear which is best.