Closed stevesloka closed 8 months ago
Hi @stevesloka; thanks for the report.
Regarding the first issue: hello.wit does not export wasi:cli/run
, so it's not a CLI command as defined by WASI Preview 2. The only way to run a component targeting a custom world like this is to write a Rust program that uses Wasmtime's component API to instantiate the component and invoke its hello
export. Or use something like https://github.com/rylev/wepl, although I don't think it's been updated to Wasmtime 15 yet. Anyway, if you want to make a CLI command, you'll need to target a world which exports wasi:cli/run
at minimum (and maybe import wasi:cli/stdio
if you want to print to the console).
When I have a few minutes, I'll add a CLI example to the repo for reference.
Regarding the second error: that wasm-tools command is for turning a core module into a component, not vice versa. And there's no way in general to convert a component into a core module, since a component is often made up of multiple core modules. Components generated by componentize-py
are always made up of at least 11 modules.
https://github.com/bytecodealliance/componentize-py/pull/46 adds a CLI example (and fixes a componentize-py
bug I found when testing it). Unfortunately, there's also a bug in wasmtime-wasi
that prevents wasmtime run
from running the example. That will be fixed when https://github.com/bytecodealliance/wasmtime/pull/7613 is merged.
Thanks for the explanation and examples @dicej! I have a better understanding of how this all fits together, thanks for bearing with me through all of it and explaining.
I'm still trying to get the example you have in your PR to work, ran into a different error which I commented on. Once I get an example running locally, I think it will help out my mental model of everything.
I'm looking to get the example in the readme working. I have the component wasm compiled via this command:
Now I want to run this via
wasmtime
but that gives me this error:I thought I could convert this to a core module with
wasm-tools
but that gives me a different error:Ideally I'd like to take Python and covert it into wasm much like how it's done in Javy (https://github.com/bytecodealliance/javy) where the output of
javy compile
is code that I can execute withwasmtime <output>.wasm
.Thanks for any help or ideas! =)